diff --git a/dist/plugins/jquery.min.js b/dist/plugins/jquery.min.js index f4c744c86..945921cc8 100644 --- a/dist/plugins/jquery.min.js +++ b/dist/plugins/jquery.min.js @@ -1 +1 @@ -!function(){"use strict";!function(r,n,t){var e=n.Rollbar;if(e){e.configure({payload:{notifier:{plugins:{jquery:{version:"0.0.8"}}}}});var a=function(r){if(e.error(r),n.console){var t="[reported to Rollbar]";e.options&&!e.options.enabled&&(t="[Rollbar not enabled]"),n.console.log(r.message+" "+t)}};r(t).ajaxError((function(r,n,t,a){var o=n.status,i=t.url,u=t.type;if(o){var s={status:o,url:i,type:u,isAjax:!0,data:t.data,jqXHR_responseText:n.responseText,jqXHR_statusText:n.statusText},d=a||"jQuery ajax error for "+u;e.warning(d,s)}}));var o=r.fn.ready;r.fn.ready=function(r){return o.call(this,(function(n){try{r(n)}catch(r){a(r)}}))};var i=r.event.add;r.event.add=function(n,t,e,o,u){var s,d=function(r){return function(){try{return r.apply(this,arguments)}catch(r){a(r)}}};return e.handler?(s=e.handler,e.handler=d(e.handler)):(s=e,e=d(e)),s.guid?e.guid=s.guid:e.guid=s.guid=r.guid++,i.call(this,n,t,e,o,u)}}}(jQuery,window,document)}(); \ No newline at end of file +!function(){"use strict";!function(r,n,t){var e=n.Rollbar;if(e){e.configure({payload:{notifier:{plugins:{jquery:{version:"0.0.8"}}}}});var a=function(r){if(e.error(r),n.console){var t="[reported to Rollbar]";e.options&&!e.options.enabled&&(t="[Rollbar not enabled]"),n.console.log(r.message+" "+t)}};r(t).ajaxError(function(r,n,t,a){var o=n.status,i=t.url,u=t.type;if(o){var s={status:o,url:i,type:u,isAjax:!0,data:t.data,jqXHR_responseText:n.responseText,jqXHR_statusText:n.statusText},d=a||"jQuery ajax error for "+u;e.warning(d,s)}});var o=r.fn.ready;r.fn.ready=function(r){return o.call(this,function(n){try{r(n)}catch(r){a(r)}})};var i=r.event.add;r.event.add=function(n,t,e,o,u){var s,d=function(r){return function(){try{return r.apply(this,arguments)}catch(r){a(r)}}};return e.handler?(s=e.handler,e.handler=d(e.handler)):(s=e,e=d(e)),s.guid?e.guid=s.guid:e.guid=s.guid=r.guid++,i.call(this,n,t,e,o,u)}}}(jQuery,window,document)}(); \ No newline at end of file diff --git a/dist/rollbar.cjs b/dist/rollbar.cjs index a83ee2d4b..968393d74 100644 --- a/dist/rollbar.cjs +++ b/dist/rollbar.cjs @@ -29,70 +29,19 @@ __webpack_require__.d(__webpack_exports__, { "default": () => (/* binding */ server_rollbar) }); -;// external "util" -const external_util_namespaceObject = require("util"); ;// external "os" const external_os_namespaceObject = require("os"); -;// ./src/merge.js -var hasOwn = Object.prototype.hasOwnProperty; -var toStr = Object.prototype.toString; -var isPlainObject = function isPlainObject(obj) { - if (!obj || toStr.call(obj) !== '[object Object]') { - return false; - } - var hasOwnConstructor = hasOwn.call(obj, 'constructor'); - var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); - // Not own constructor property must be Object - if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - var key; - for (key in obj) { - /**/ - } - return typeof key === 'undefined' || hasOwn.call(obj, key); -}; -function merge() { - var i, - src, - copy, - clone, - name, - result = Object.create(null), - // no prototype pollution on Object - current = null, - length = arguments.length; - for (i = 0; i < length; i++) { - current = arguments[i]; - if (current == null) { - continue; - } - for (name in current) { - src = result[name]; - copy = current[name]; - if (result !== copy) { - if (copy && isPlainObject(copy)) { - clone = src && isPlainObject(src) ? src : {}; - result[name] = merge(clone, copy); - } else if (typeof copy !== 'undefined') { - result[name] = copy; - } - } - } - } - return result; -} -/* harmony default export */ const src_merge = (merge); +;// external "url" +const external_url_namespaceObject = require("url"); +;// external "util" +const external_util_namespaceObject = require("util"); +;// external "json-stringify-safe" +const external_json_stringify_safe_namespaceObject = require("json-stringify-safe"); ;// ./src/utility.js function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } - - /* * isType - Given a Javascript value and a string, returns true if the type of the value matches the * given string. @@ -159,8 +108,18 @@ function isNativeFunction(f) { * @returns true is value is an object function is an object) */ function isObject(value) { - var type = _typeof(value); - return value != null && (type == 'object' || type == 'function'); + return value != null && (_typeof(value) == 'object' || typeof value == 'function'); +} + +/* hasOwn - safe helper around Object.hasOwnProperty */ +function hasOwn(obj, prop) { + if (obj == null) { + return false; + } + if (Object.hasOwn) { + return Object.hasOwn(obj, prop); + } + return Object.prototype.hasOwnProperty.call(obj, prop); } /* isString - Checks if the argument is a string @@ -182,16 +141,6 @@ function isFiniteNumber(n) { return Number.isFinite(n); } -/* - * isDefined - a convenience function for checking if a value is not equal to undefined - * - * @param u - any value - * @returns true if u is anything other than undefined - */ -function isDefined(u) { - return !isType(u, 'undefined'); -} - /* * isIterable - convenience function for checking if a value can be iterated, essentially * whether it is an object or an array. @@ -238,7 +187,7 @@ function redact() { // from http://stackoverflow.com/a/8809472/1138191 function uuid4() { - var d = utility_now(); + var d = now(); var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = (d + Math.random() * 16) % 16 | 0; d = Math.floor(d / 16); @@ -288,8 +237,8 @@ var parseUriOptions = { parser: /(?:^|&)([^&=]*)=?([^&]*)/g }, parser: { - strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, - loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ + strict: /^(?:([^:/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\d*))?))?((((?:[^?#/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, + loose: /^(?:(?![^:@]+:[^:@/]*@)([^:/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#/]*\.[^?#/.]+(?:[?#]|$)))*\/?)?([^?#/]*))(?:\?([^#]*))?(?:#(.*))?)/ } }; function parseUri(str) { @@ -489,7 +438,11 @@ function createItem(args, logger, notifier, requestKeys, lambdaContext) { case 'undefined': break; case 'string': - message ? extraArgs.push(arg) : message = arg; + if (message) { + extraArgs.push(arg); + } else { + message = arg; + } break; case 'function': callback = wrapCallback(logger, arg); @@ -501,12 +454,20 @@ function createItem(args, logger, notifier, requestKeys, lambdaContext) { case 'domexception': case 'exception': // Firefox Exception type - err ? extraArgs.push(arg) : err = arg; + if (err) { + extraArgs.push(arg); + } else { + err = arg; + } break; case 'object': case 'array': if (arg instanceof Error || typeof DOMException !== 'undefined' && arg instanceof DOMException) { - err ? extraArgs.push(arg) : err = arg; + if (err) { + extraArgs.push(arg); + } else { + err = arg; + } break; } if (requestKeys && typ === 'object' && !request) { @@ -520,11 +481,19 @@ function createItem(args, logger, notifier, requestKeys, lambdaContext) { break; } } - custom ? extraArgs.push(arg) : custom = arg; + if (custom) { + extraArgs.push(arg); + } else { + custom = arg; + } break; default: if (arg instanceof Error || typeof DOMException !== 'undefined' && arg instanceof DOMException) { - err ? extraArgs.push(arg) : err = arg; + if (err) { + extraArgs.push(arg); + } else { + err = arg; + } break; } extraArgs.push(arg); @@ -541,7 +510,7 @@ function createItem(args, logger, notifier, requestKeys, lambdaContext) { message: message, err: err, custom: custom, - timestamp: utility_now(), + timestamp: now(), callback: callback, notifier: notifier, diagnostic: diagnostic, @@ -573,14 +542,23 @@ function addErrorContext(item, errors) { var custom = item.data.custom || {}; var contextAdded = false; try { - for (var i = 0; i < errors.length; ++i) { - if (errors[i].hasOwnProperty('rollbarContext')) { - custom = src_merge(custom, nonCircularClone(errors[i].rollbarContext)); - contextAdded = true; + var _iterator = _createForOfIteratorHelper(errors), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var error = _step.value; + if (hasOwn(error, 'rollbarContext')) { + custom = merge(custom, nonCircularClone(error.rollbarContext)); + contextAdded = true; + } } - } - // Avoid adding an empty object to the data. + // Avoid adding an empty object to the data. + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } if (contextAdded) { item.data.custom = custom; } @@ -591,10 +569,19 @@ function addErrorContext(item, errors) { var TELEMETRY_TYPES = ['log', 'network', 'dom', 'navigation', 'error', 'manual']; var TELEMETRY_LEVELS = ['critical', 'error', 'warning', 'info', 'debug']; function arrayIncludes(arr, val) { - for (var k = 0; k < arr.length; ++k) { - if (arr[k] === val) { - return true; + var _iterator2 = _createForOfIteratorHelper(arr), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var entry = _step2.value; + if (entry === val) { + return true; + } } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); } return false; } @@ -628,20 +615,20 @@ function createTelemetryEvent(args) { } function addItemAttributes(itemData, attributes) { itemData.attributes = itemData.attributes || []; - var _iterator = _createForOfIteratorHelper(attributes), - _step; + var _iterator3 = _createForOfIteratorHelper(attributes), + _step3; try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var a = _step.value; + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var a = _step3.value; if (a.value === undefined) { continue; } itemData.attributes.push(a); } } catch (err) { - _iterator.e(err); + _iterator3.e(err); } finally { - _iterator.f(); + _iterator3.f(); } } @@ -663,7 +650,7 @@ function get(obj, path) { for (var i = 0, len = keys.length; i < len; ++i) { result = result[keys[i]]; } - } catch (e) { + } catch (_e) { result = undefined; } return result; @@ -693,7 +680,7 @@ function set(obj, path, value) { } temp[keys[len - 1]] = value; obj[keys[0]] = replacement; - } catch (e) { + } catch (_e) { return; } } @@ -724,11 +711,11 @@ function formatArgsAsString(args) { } return result.join(' '); } -function utility_now() { +function now() { if (Date.now) { - return +Date.now(); + return Date.now(); } - return +new Date(); + return Number(new Date()); } function filterIp(requestData, captureIp) { if (!requestData || !requestData['user_ip'] || captureIp === true) { @@ -759,14 +746,14 @@ function filterIp(requestData, captureIp) { } else { newIp = null; } - } catch (e) { + } catch (_e) { newIp = null; } } requestData['user_ip'] = newIp; } function handleOptions(current, input, payload, logger) { - var result = src_merge(current, input, payload); + var result = merge(current, input, payload); result = updateDeprecatedOptions(result, logger); if (!input || input.overwriteScrubFields) { return result; @@ -789,1566 +776,1511 @@ function updateDeprecatedOptions(options, logger) { } return options; } +function merge() { + function isPlainObject(obj) { + if (!obj || Object.prototype.toString.call(obj) !== '[object Object]') { + return false; + } + var hasOwnConstructor = hasOwn(obj, 'constructor'); + var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn(obj.constructor.prototype, 'isPrototypeOf'); + // Not own constructor property must be Object + if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { + return false; + } -;// ./src/rateLimiter.js - - -/* - * RateLimiter - an object that encapsulates the logic for counting items sent to Rollbar - * - * @param options - the same options that are accepted by configureGlobal offered as a convenience - */ -function RateLimiter(options) { - this.startTime = utility_now(); - this.counter = 0; - this.perMinCounter = 0; - this.platform = null; - this.platformOptions = {}; - this.configureGlobal(options); -} -RateLimiter.globalSettings = { - startTime: utility_now(), - maxItems: undefined, - itemsPerMinute: undefined -}; - -/* - * configureGlobal - set the global rate limiter options - * - * @param options - Only the following values are recognized: - * startTime: a timestamp of the form returned by (new Date()).getTime() - * maxItems: the maximum items - * itemsPerMinute: the max number of items to send in a given minute - */ -RateLimiter.prototype.configureGlobal = function (options) { - if (options.startTime !== undefined) { - RateLimiter.globalSettings.startTime = options.startTime; - } - if (options.maxItems !== undefined) { - RateLimiter.globalSettings.maxItems = options.maxItems; - } - if (options.itemsPerMinute !== undefined) { - RateLimiter.globalSettings.itemsPerMinute = options.itemsPerMinute; + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + var key; + for (key in obj) { + /**/ + } + return typeof key === 'undefined' || hasOwn(obj, key); } -}; - -/* - * shouldSend - determine if we should send a given item based on rate limit settings - * - * @param item - the item we are about to send - * @returns An object with the following structure: - * error: (Error|null) - * shouldSend: bool - * payload: (Object|null) - * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and - * exactly one of error or payload will be non-null. If error is non-null, the returned Error will - * describe the situation, but it means that we were already over a rate limit (either globally or - * per minute) when this item was checked. If error is null, and therefore payload is non-null, it - * means this item put us over the global rate limit and the payload should be sent to Rollbar in - * place of the passed in item. - */ -RateLimiter.prototype.shouldSend = function (item, now) { - now = now || utility_now(); - var elapsedTime = now - this.startTime; - if (elapsedTime < 0 || elapsedTime >= 60000) { - this.startTime = now; - this.perMinCounter = 0; + var i, + src, + copy, + clone, + name, + result = Object.create(null), + // no prototype pollution on Object + current = null, + length = arguments.length; + for (i = 0; i < length; i++) { + current = arguments[i]; + if (current === null || current === undefined) { + continue; + } + for (name in current) { + src = result[name]; + copy = current[name]; + if (result !== copy) { + if (copy && isPlainObject(copy)) { + clone = src && isPlainObject(src) ? src : {}; + result[name] = merge(clone, copy); + } else if (typeof copy !== 'undefined') { + result[name] = copy; + } + } + } } - var globalRateLimit = RateLimiter.globalSettings.maxItems; - var globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute; - if (checkRate(item, globalRateLimit, this.counter)) { - return shouldSendValue(this.platform, this.platformOptions, globalRateLimit + ' max items reached', false); - } else if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) { - return shouldSendValue(this.platform, this.platformOptions, globalRateLimitPerMin + ' items per minute reached', false); - } - this.counter++; - this.perMinCounter++; - var shouldSend = !checkRate(item, globalRateLimit, this.counter); - var perMinute = shouldSend; - shouldSend = shouldSend && !checkRate(item, globalRateLimitPerMin, this.perMinCounter); - return shouldSendValue(this.platform, this.platformOptions, null, shouldSend, globalRateLimit, globalRateLimitPerMin, perMinute); -}; -RateLimiter.prototype.setPlatformOptions = function (platform, options) { - this.platform = platform; - this.platformOptions = options; -}; + return result; +} -/* Helpers */ +;// ./src/apiUtility.js -function checkRate(item, limit, counter) { - return !item.ignoreRateLimit && limit >= 1 && counter > limit; -} -function shouldSendValue(platform, options, error, shouldSend, globalRateLimit, limitPerMin, perMinute) { - var payload = null; - if (error) { - error = new Error(error); - } - if (!error && !shouldSend) { - payload = rateLimitPayload(platform, options, globalRateLimit, limitPerMin, perMinute); +function buildPayload(data) { + if (!isType(data.context, 'string')) { + var contextResult = stringify(data.context); + if (contextResult.error) { + data.context = "Error: could not serialize 'context'"; + } else { + data.context = contextResult.value || ''; + } + if (data.context.length > 255) { + data.context = data.context.substr(0, 255); + } } return { - error: error, - shouldSend: shouldSend, - payload: payload + data: data }; } -function rateLimitPayload(platform, options, globalRateLimit, limitPerMin, perMinute) { - var environment = options.environment || options.payload && options.payload.environment; - var msg; - if (perMinute) { - msg = 'item per minute limit reached, ignoring errors until timeout'; - } else { - msg = 'maxItems has been hit, ignoring errors until reset.'; +function getTransportFromOptions(options, defaults, url) { + var hostname = defaults.hostname; + var protocol = defaults.protocol; + var port = defaults.port; + var path = defaults.path; + var search = defaults.search; + var timeout = options.timeout; + var transport = detectTransport(options); + var proxy = options.proxy; + if (options.endpoint) { + var opts = url.parse(options.endpoint); + hostname = opts.hostname; + protocol = opts.protocol; + port = opts.port; + path = opts.pathname; + search = opts.search; } - var item = { - body: { - message: { - body: msg, - extra: { - maxItems: globalRateLimit, - itemsPerMinute: limitPerMin - } - } - }, - language: 'javascript', - environment: environment, - notifier: { - version: options.notifier && options.notifier.version || options.version - } + return { + timeout: timeout, + hostname: hostname, + protocol: protocol, + port: port, + path: path, + search: search, + proxy: proxy, + transport: transport }; - if (platform === 'browser') { - item.platform = 'browser'; - item.framework = 'browser-js'; - item.notifier.name = 'rollbar-browser-js'; - } else if (platform === 'server') { - item.framework = options.framework || 'node-js'; - item.notifier.name = options.notifier.name; - } else if (platform === 'react-native') { - item.framework = options.framework || 'react-native'; - item.notifier.name = options.notifier.name; +} +function detectTransport(options) { + var gWindow = typeof window !== 'undefined' && window || typeof self !== 'undefined' && self; + var transport = options.defaultTransport || 'xhr'; + if (typeof gWindow.fetch === 'undefined') transport = 'xhr'; + if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch'; + return transport; +} +function apiUtility_transportOptions(transport, method) { + var protocol = transport.protocol || 'https:'; + var port = transport.port || (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined); + var hostname = transport.hostname; + var path = transport.path; + var timeout = transport.timeout; + var transportAPI = transport.transport; + if (transport.search) { + path = path + transport.search; } - return item; + if (transport.proxy) { + path = protocol + '//' + hostname + path; + hostname = transport.proxy.host || transport.proxy.hostname; + port = transport.proxy.port; + protocol = transport.proxy.protocol || protocol; + } + return { + timeout: timeout, + protocol: protocol, + hostname: hostname, + path: path, + port: port, + method: method, + transport: transportAPI + }; } -/* harmony default export */ const rateLimiter = (RateLimiter); -;// ./src/queue.js -function queue_typeof(o) { "@babel/helpers - typeof"; return queue_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, queue_typeof(o); } -function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } -function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == queue_typeof(i) ? i : i + ""; } -function _toPrimitive(t, r) { if ("object" != queue_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != queue_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function appendPathToPath(base, path) { + var baseTrailingSlash = /\/$/.test(base); + var pathBeginningSlash = /^\//.test(path); + if (baseTrailingSlash && pathBeginningSlash) { + path = path.substring(1); + } else if (!baseTrailingSlash && !pathBeginningSlash) { + path = '/' + path; + } + return base + path; +} + +;// ./src/api.js +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function api_typeof(o) { "@babel/helpers - typeof"; return api_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, api_typeof(o); } +function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); } +function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); } +function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } +function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == api_typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != api_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != api_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +var defaultOptions = { + hostname: 'api.rollbar.com', + path: '/api/1/item/', + search: null, + version: '1', + protocol: 'https:', + port: 443 +}; +var OTLPDefaultOptions = { + hostname: 'api.rollbar.com', + path: '/api/1/session/', + search: null, + version: '1', + protocol: 'https:', + port: 443 +}; + /** - * Queue - an object which handles which handles a queue of items to be sent to Rollbar. - * This object handles rate limiting via a passed in rate limiter, retries based on connection - * errors, and filtering of items based on a set of configurable predicates. The communication to - * the backend is performed via a given API object. + * Api encapsulates methods of communicating with the Rollbar API. It is a + * standard interface with some parts implemented differently for server or + * browser contexts. It is an object that should be instantiated when used so + * it can contain non-global options that may be different for another instance + * of RollbarApi. */ -var Queue = /*#__PURE__*/function () { +var Api = /*#__PURE__*/function () { /** - * @param rateLimiter - An object which conforms to the interface - * `rateLimiter.shouldSend(item) -> bool` - * @param api - An object which conforms to the interface - * `api.postItem(payload, function(err, response))` - * @param logger - An object used to log verbose messages if desired - * @param options - see `Queue.prototype.configure` - * @param replay - Optional `Replay` for coordinating session replay with error occurrences + * @param {Object} options - Configuration supplied from the parent Rollbar instance. + * @param {string} options.accessToken - Token used to authenticate API calls. + * @param {string} [options.endpoint] - Optional fully qualified URL overriding + * the default `https://api.rollbar.com/api/1/item`. + * @param {Object} [options.proxy] - Optional proxy descriptor containing: + * `host`/`hostname` (required), `port`, and `protocol`. + * @param {Object} transport - Adapter implementing `post` and `postJsonPayload`. + * @param {Object} urllib - Minimal URL helper used for option normalization. + * @param {Object} truncation - Optional truncation helper for payload size enforcement. */ - function Queue(rateLimiter, api, logger, options, replay) { - _classCallCheck(this, Queue); - this.rateLimiter = rateLimiter; - this.api = api; - this.logger = logger; + function Api(options, transport, urllib, truncation) { + _classCallCheck(this, Api); this.options = options; - this.replay = replay; - this.predicates = []; - this.pendingItems = []; - this.pendingRequests = []; - this.retryQueue = []; - this.retryHandle = null; - this.waitCallback = null; - this.waitIntervalID = null; + this.transport = transport; + this.url = urllib; + this.truncation = truncation; + this.accessToken = options.accessToken; + this.transportOptions = _getTransport(options, urllib); + this.OTLPTransportOptions = _getOTLPTransport(options, urllib); } /** - * configure - updates the options this queue uses + * Wraps transport.post in a Promise to support async/await * - * @param options + * @param {Object} options - Options for the API request + * @param {string} options.accessToken - The access token for authentication + * @param {Object} options.transportOptions - Options for the transport + * @param {Object} options.payload - The data payload to send + * @returns {Promise} A promise that resolves with the response or rejects with an error + * @private */ - return _createClass(Queue, [{ - key: "configure", - value: function configure(options) { - var _this$api; - (_this$api = this.api) === null || _this$api === void 0 || _this$api.configure(options); - var oldOptions = this.options; - this.options = src_merge(oldOptions, options); - return this; + return _createClass(Api, [{ + key: "_postPromise", + value: function _postPromise(_ref) { + var _this = this; + var accessToken = _ref.accessToken, + options = _ref.options, + payload = _ref.payload, + headers = _ref.headers; + return new Promise(function (resolve, reject) { + _this.transport.post({ + accessToken: accessToken, + options: options, + payload: payload, + headers: headers, + callback: function callback(err, resp) { + return err ? reject(err) : resolve(resp); + } + }); + }); } /** - * addPredicate - adds a predicate to the end of the list of predicates for this queue * - * @param predicate - function(item, options) -> (bool|{err: Error}) - * Returning true means that this predicate passes and the item is okay to go on the queue - * Returning false means do not add the item to the queue, but it is not an error - * Returning {err: Error} means do not add the item to the queue, and the given error explains why - * Returning {err: undefined} is equivalent to returning true but don't do that + * @param data + * @param callback */ }, { - key: "addPredicate", - value: function addPredicate(predicate) { - if (isFunction(predicate)) { - this.predicates.push(predicate); - } - return this; - } - }, { - key: "addPendingItem", - value: function addPendingItem(item) { - this.pendingItems.push(item); - } - }, { - key: "removePendingItem", - value: function removePendingItem(item) { - var idx = this.pendingItems.indexOf(item); - if (idx !== -1) { - this.pendingItems.splice(idx, 1); - } + key: "postItem", + value: function postItem(data, callback) { + var _this2 = this; + var options = apiUtility_transportOptions(this.transportOptions, 'POST'); + var payload = buildPayload(data); + + // ensure the network request is scheduled after the current tick. + setTimeout(function () { + _this2.transport.post({ + accessToken: _this2.accessToken, + options: options, + payload: payload, + callback: callback + }); + }, 0); } /** - * addItem - Send an item to the Rollbar API if all of the predicates are satisfied + * Posts spans to the Rollbar API using the session endpoint * - * @param item - Item instance with the payload to send to the backend - * @param callback - function(error, repsonse) which will be called with the response from the API - * in the case of a success, otherwise response will be null and error will have a value. If both - * error and response are null then the item was stopped by a predicate which did not consider this - * to be an error condition, but nonetheless did not send the item to the API. - * @param originalError - The original error before any transformations that is to be logged if any - * @param originalItem - The original item before transforms, used in pendingItems queue + * @param {Array} payload - The spans to send + * @returns {Promise} A promise that resolves with the API response */ }, { - key: "addItem", - value: function addItem(item, callback, originalError, originalItem) { - var _this = this; - if (!callback || !isFunction(callback)) { - callback = function callback() { - return; - }; - } - var data = item.data; - var predicateResult = this._applyPredicates(data); - if (predicateResult.stop) { - this.removePendingItem(originalItem); - callback(predicateResult.err); - return; - } - this._maybeLog(data, originalError); - this.removePendingItem(originalItem); - if (!this.options.transmit) { - callback(new Error('Transmit disabled')); - return; - } - if (this.replay && data.body) { - item.replayId = this.replay.capture(null, data.uuid, { - type: 'occurrence', - level: item.level - }); - if (item.replayId) { - addItemAttributes(item.data, [{ - key: 'replay_id', - value: item.replayId - }]); - } - } - this.pendingRequests.push(data); - try { - this._makeApiRequest(data, function (err, resp, headers) { - _this._dequeuePendingRequest(data); - if (item.replayId) { - _this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers); + key: "postSpans", + value: (function () { + var _postSpans = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(payload) { + var headers, + options, + _args = arguments; + return _regenerator().w(function (_context) { + while (1) switch (_context.n) { + case 0: + headers = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; + options = apiUtility_transportOptions(this.OTLPTransportOptions, 'POST'); + return _context.a(2, this._postPromise({ + accessToken: this.accessToken, + options: options, + payload: payload, + headers: headers + })); } - callback(err, resp); - }); - } catch (err) { - this._dequeuePendingRequest(data); - if (item.replayId) { - var _this$replay; - (_this$replay = this.replay) === null || _this$replay === void 0 || _this$replay.discard(item.replayId); - } - callback(err); + }, _callee, this); + })); + function postSpans(_x) { + return _postSpans.apply(this, arguments); } - } - + return postSpans; + }() /** - * wait - Stop any further errors from being added to the queue, and get called back when all items - * currently processing have finished sending to the backend. * - * @param callback - function() called when all pending items have been sent + * @param data + * @param callback */ + ) }, { - key: "wait", - value: function wait(callback) { - var _this2 = this; - if (!isFunction(callback)) { - return; - } - this.waitCallback = callback; - if (this._maybeCallWait()) { - return; + key: "buildJsonPayload", + value: function buildJsonPayload(data, callback) { + var payload = buildPayload(data); + var stringifyResult; + if (this.truncation) { + stringifyResult = this.truncation.truncate(payload); + } else { + stringifyResult = stringify(payload); } - if (this.waitIntervalID) { - this.waitIntervalID = clearInterval(this.waitIntervalID); + if (stringifyResult.error) { + if (callback) { + callback(stringifyResult.error); + } + return null; } - this.waitIntervalID = setInterval(function () { - _this2._maybeCallWait(); - }, 500); + return stringifyResult.value; } /** - * Sequentially applies the predicates that have been added to the queue to the - * given item with the currently configured options. * - * @param item - An item in the queue - * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue, - * the error value should be passed up to a callbak if we are stopping. + * @param jsonPayload + * @param callback */ }, { - key: "_applyPredicates", - value: function _applyPredicates(item) { - var p = null; - for (var i = 0, len = this.predicates.length; i < len; i++) { - p = this.predicates[i](item, this.options); - if (!p || p.err !== undefined) { - return { - stop: true, - err: p.err - }; - } - } - return { - stop: false, - err: null - }; + key: "postJsonPayload", + value: function postJsonPayload(jsonPayload, callback) { + var transportOptions = apiUtility_transportOptions(this.transportOptions, 'POST'); + this.transport.postJsonPayload(this.accessToken, transportOptions, jsonPayload, callback); } - - /** - * Send an item to Rollbar, callback when done, if there is an error make an - * effort to retry if we are configured to do so. - * - * @param item - an item ready to send to the backend - * @param callback - function(err, response) - */ }, { - key: "_makeApiRequest", - value: function _makeApiRequest(item, callback) { - var _this3 = this; - var rateLimitResponse = this.rateLimiter.shouldSend(item); - if (rateLimitResponse.shouldSend) { - this.api.postItem(item, function (err, resp, headers) { - if (err) { - _this3._maybeRetry(err, item, callback); - } else { - callback(err, resp, headers); - } - }); - } else if (rateLimitResponse.error) { - callback(rateLimitResponse.error); - } else { - this.api.postItem(rateLimitResponse.payload, callback); + key: "configure", + value: function configure(options) { + var oldOptions = this.options; + this.options = merge(oldOptions, options); + this.transportOptions = _getTransport(this.options, this.url); + this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url); + if (this.options.accessToken !== undefined) { + this.accessToken = this.options.accessToken; } + return this; } + }]); +}(); +function _getTransport(options, url) { + return getTransportFromOptions(options, defaultOptions, url); +} +function _getOTLPTransport(options, url) { + var _options$tracing; + options = _objectSpread(_objectSpread({}, options), {}, { + endpoint: (_options$tracing = options.tracing) === null || _options$tracing === void 0 ? void 0 : _options$tracing.endpoint + }); + return getTransportFromOptions(options, OTLPDefaultOptions, url); +} +/* harmony default export */ const src_api = (Api); +;// ./src/defaults.js +/** + * Default options shared across platforms + */ +var version = '3.0.0'; +var endpoint = 'api.rollbar.com/api/1/item/'; +var logLevel = 'debug'; +var reportLevel = 'debug'; +var uncaughtErrorLevel = 'error'; +var maxItems = 0; +var itemsPerMin = 60; +var commonScrubFields = ['pw', 'pass', 'passwd', 'password', 'secret', 'confirm_password', 'confirmPassword', 'password_confirmation', 'passwordConfirmation', 'access_token', 'accessToken', 'X-Rollbar-Access-Token', 'secret_key', 'secretKey', 'secretToken']; +var apiScrubFields = ['api_key', 'authenticity_token', 'oauth_token', 'token', 'user_session_secret']; +var requestScrubFields = ['request.session.csrf', 'request.session._csrf', 'request.params._csrf', 'request.cookie', 'request.cookies']; +var commonScrubHeaders = ['authorization', 'www-authorization', 'http_authorization', 'omniauth.auth', 'cookie', 'oauth-access-token', 'x-access-token', 'x_csrf_token', 'http_x_csrf_token', 'x-csrf-token']; - // These are errors basically mean there is no internet connection - }, { - key: "_maybeRetry", - value: - /** - * Given the error returned by the API, decide if we should retry or just callback - * with the error. - * - * @param err - an error returned by the API transport - * @param item - the item that was trying to be sent when this error occured - * @param callback - function(err, response) - */ - function _maybeRetry(err, item, callback) { - var shouldRetry = false; - if (this.options.retryInterval) { - for (var i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) { - if (err.code === Queue.RETRIABLE_ERRORS[i]) { - shouldRetry = true; - break; - } - } - if (shouldRetry && isFiniteNumber(this.options.maxRetries)) { - item.retries = item.retries ? item.retries + 1 : 1; - if (item.retries > this.options.maxRetries) { - shouldRetry = false; - } - } - } - if (shouldRetry) { - this._retryApiRequest(item, callback); - } else { - callback(err); - } +// For backward compatibility with default export +/* harmony default export */ const defaults = ({ + version: version, + endpoint: endpoint, + logLevel: logLevel, + reportLevel: reportLevel, + uncaughtErrorLevel: uncaughtErrorLevel, + maxItems: maxItems, + itemsPerMin: itemsPerMin +}); +;// ./src/logger.js +var _log = function log() {}; +var levels = { + debug: 0, + info: 1, + warn: 2, + error: 3, + disable: 4 +}; +var logger = { + error: function error() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; } - - /** - * Add an item and a callback to a queue and possibly start a timer to process - * that queue based on the retryInterval in the options for this queue. - * - * @param item - an item that failed to send due to an error we deem retriable - * @param callback - function(err, response) - */ - }, { - key: "_retryApiRequest", - value: function _retryApiRequest(item, callback) { - var _this4 = this; - this.retryQueue.push({ - item: item, - callback: callback - }); - if (!this.retryHandle) { - this.retryHandle = setInterval(function () { - while (_this4.retryQueue.length) { - var retryObject = _this4.retryQueue.shift(); - _this4._makeApiRequest(retryObject.item, retryObject.callback); - } - }, this.options.retryInterval); - } + return _log('error', args); + }, + warn: function warn() { + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; } - - /** - * Removes the item from the pending request queue, this queue is used to - * enable to functionality of providing a callback that clients can pass to `wait` to be notified - * when the pending request queue has been emptied. This must be called when the API finishes - * processing this item. If a `wait` callback is configured, it is called by this function. - * - * @param item - the item previously added to the pending request queue - */ - }, { - key: "_dequeuePendingRequest", - value: function _dequeuePendingRequest(item) { - var idx = this.pendingRequests.indexOf(item); - if (idx !== -1) { - this.pendingRequests.splice(idx, 1); - this._maybeCallWait(); - } + return _log('warn', args); + }, + info: function info() { + for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; } - }, { - key: "_maybeLog", - value: function _maybeLog(data, originalError) { - if (this.logger && this.options.verbose) { - var message = originalError || get(data, 'body.trace.exception.message') || get(data, 'body.trace_chain.0.exception.message'); - if (message) { - this.logger.error(message); - return; - } - message = get(data, 'body.message.body'); - if (message) { - this.logger.log(message); - } - } + return _log('info', args); + }, + debug: function debug() { + for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { + args[_key4] = arguments[_key4]; } - }, { - key: "_maybeCallWait", - value: function _maybeCallWait() { - if (isFunction(this.waitCallback) && this.pendingItems.length === 0 && this.pendingRequests.length === 0) { - if (this.waitIntervalID) { - this.waitIntervalID = clearInterval(this.waitIntervalID); - } - this.waitCallback(); - return true; - } - return false; + return _log('debug', args); + }, + log: function log() { + for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { + args[_key5] = arguments[_key5]; } - }]); -}(); -_defineProperty(Queue, "RETRIABLE_ERRORS", ['ECONNRESET', 'ENOTFOUND', 'ESOCKETTIMEDOUT', 'ETIMEDOUT', 'ECONNREFUSED', 'EHOSTUNREACH', 'EPIPE', 'EAI_AGAIN']); -/* harmony default export */ const queue = (Queue); -;// ./src/notifier.js - - -/* - * Notifier - the internal object responsible for delegating between the client exposed API, the - * chain of transforms necessary to turn an item into something that can be sent to Rollbar, and the - * queue which handles the communcation with the Rollbar API servers. - * - * @param queue - an object that conforms to the interface: addItem(item, callback) - * @param options - an object representing the options to be set for this notifier, this should have - * any defaults already set by the caller - */ -function Notifier(queue, options) { - this.queue = queue; - this.options = options; - this.transforms = []; - this.diagnostic = {}; -} - -/* - * configure - updates the options for this notifier with the passed in object - * - * @param options - an object which gets merged with the current options set on this notifier - * @returns this - */ -Notifier.prototype.configure = function (options) { - this.queue && this.queue.configure(options); - var oldOptions = this.options; - this.options = src_merge(oldOptions, options); - return this; -}; + return _log('info', args); + }, + init: function init(_ref) { + var logLevel = _ref.logLevel; + _log = function _log(level, args) { + if (levels[level] < levels[logLevel]) return; + args.unshift('Rollbar:'); -/* - * addTransform - adds a transform onto the end of the queue of transforms for this notifier - * - * @param transform - a function which takes three arguments: - * * item: An Object representing the data to eventually be sent to Rollbar - * * options: The current value of the options for this notifier - * * callback: function(err: (Null|Error), item: (Null|Object)) the transform must call this - * callback with a null value for error if it wants the processing chain to continue, otherwise - * with an error to terminate the processing. The item should be the updated item after this - * transform is finished modifying it. - */ -Notifier.prototype.addTransform = function (transform) { - if (isFunction(transform)) { - this.transforms.push(transform); + // eslint-disable-next-line no-console + console[level].apply(console, args); + }; } - return this; }; +/* harmony default export */ const src_logger = (logger); +;// ./src/predicates.js +function predicates_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = predicates_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function predicates_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return predicates_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? predicates_arrayLikeToArray(r, a) : void 0; } } +function predicates_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -/* - * log - the internal log function which applies the configured transforms and then pushes onto the - * queue to be sent to the backend. - * - * @param item - An object with the following structure: - * message [String] - An optional string to be sent to rollbar - * error [Error] - An optional error - * - * @param callback - A function of type function(err, resp) which will be called with exactly one - * null argument and one non-null argument. The callback will be called once, either during the - * transform stage if an error occurs inside a transform, or in response to the communication with - * the backend. The second argument will be the response from the backend in case of success. - */ -Notifier.prototype.log = function (item, callback) { - if (!callback || !isFunction(callback)) { - callback = function callback() {}; - } - if (!this.options.enabled) { - return callback(new Error('Rollbar is not enabled')); +function checkLevel(item, settings) { + var level = item.level; + var levelVal = LEVELS[level] || 0; + var reportLevel = settings.reportLevel; + var reportLevelVal = LEVELS[reportLevel] || 0; + if (levelVal < reportLevelVal) { + return false; } - this.queue.addPendingItem(item); - var originalError = item.err; - this._applyTransforms(item, function (err, i) { - if (err) { - this.queue.removePendingItem(item); - return callback(err, null); - } - this.queue.addItem(i, callback, originalError, item); - }.bind(this)); -}; - -/* Internal */ - -/* - * _applyTransforms - Applies the transforms that have been added to this notifier sequentially. See - * `addTransform` for more information. - * - * @param item - An item to be transformed - * @param callback - A function of type function(err, item) which will be called with a non-null - * error and a null item in the case of a transform failure, or a null error and non-null item after - * all transforms have been applied. - */ -Notifier.prototype._applyTransforms = function (item, callback) { - var transformIndex = -1; - var transformsLength = this.transforms.length; - var transforms = this.transforms; - var options = this.options; - var _cb = function cb(err, i) { - if (err) { - callback(err, null); - return; + return true; +} +function userCheckIgnore(logger) { + return function (item, settings) { + var isUncaught = Boolean(item._isUncaught); + delete item._isUncaught; + var args = item._originalArgs; + delete item._originalArgs; + try { + if (isFunction(settings.onSendCallback)) { + settings.onSendCallback(isUncaught, args, item); + } + } catch (e) { + settings.onSendCallback = null; + logger.error('Error while calling onSendCallback, removing', e); } - transformIndex++; - if (transformIndex === transformsLength) { - callback(null, i); - return; + try { + if (isFunction(settings.checkIgnore) && settings.checkIgnore(isUncaught, args, item)) { + return false; + } + } catch (e) { + settings.checkIgnore = null; + logger.error('Error while calling custom checkIgnore(), removing', e); } - transforms[transformIndex](i, options, _cb); + return true; }; - _cb(null, item); -}; -/* harmony default export */ const notifier = (Notifier); -;// ./src/rollbar.js - - - - - -/* - * Rollbar - the interface to Rollbar - * - * @param options - * @param api - * @param logger - */ -function Rollbar(options, api, logger, telemeter, tracing, replay, platform) { - this.options = src_merge(options); - this.logger = logger; - Rollbar.rateLimiter.configureGlobal(this.options); - Rollbar.rateLimiter.setPlatformOptions(platform, this.options); - this.api = api; - this.queue = new queue(Rollbar.rateLimiter, api, logger, this.options, replay); - this.tracing = tracing; - - // Legacy OpenTracing support - // This must happen before the Notifier is created - var tracer = this.options.tracer || null; - if (validateTracer(tracer)) { - this.tracer = tracer; - // set to a string for api response serialization - this.options.tracer = 'opentracing-tracer-enabled'; - this.options._configuredOptions.tracer = 'opentracing-tracer-enabled'; - } else { - this.tracer = null; - } - this.notifier = new notifier(this.queue, this.options); - this.telemeter = telemeter; - setStackTraceLimit(options); - this.lastError = null; - this.lastErrorHash = 'none'; } -var defaultOptions = { - maxItems: 0, - itemsPerMinute: 60 -}; -Rollbar.rateLimiter = new rateLimiter(defaultOptions); -Rollbar.prototype.global = function (options) { - Rollbar.rateLimiter.configureGlobal(options); - return this; -}; -Rollbar.prototype.configure = function (options, payloadData) { - var oldOptions = this.options; - var payload = {}; - if (payloadData) { - payload = { - payload: payloadData - }; - } - this.options = src_merge(oldOptions, options, payload); - - // Legacy OpenTracing support - // This must happen before the Notifier is configured - var tracer = this.options.tracer || null; - if (validateTracer(tracer)) { - this.tracer = tracer; - // set to a string for api response serialization - this.options.tracer = 'opentracing-tracer-enabled'; - this.options._configuredOptions.tracer = 'opentracing-tracer-enabled'; - } else { - this.tracer = null; - } - this.notifier && this.notifier.configure(this.options); - this.telemeter && this.telemeter.configure(this.options); - setStackTraceLimit(options); - this.global(this.options); - if (validateTracer(options.tracer)) { - this.tracer = options.tracer; +function urlIsNotBlockListed(logger) { + return function (item, settings) { + return !urlIsOnAList(item, settings, 'blocklist', logger); + }; +} +function urlIsSafeListed(logger) { + return function (item, settings) { + return urlIsOnAList(item, settings, 'safelist', logger); + }; +} +function matchFrames(trace, list, block) { + if (!trace) { + return !block; } - return this; -}; -Rollbar.prototype.log = function (item) { - var level = this._defaultLogLevel(); - return this._log(level, item); -}; -Rollbar.prototype.debug = function (item) { - this._log('debug', item); -}; -Rollbar.prototype.info = function (item) { - this._log('info', item); -}; -Rollbar.prototype.warn = function (item) { - this._log('warning', item); -}; -Rollbar.prototype.warning = function (item) { - this._log('warning', item); -}; -Rollbar.prototype.error = function (item) { - this._log('error', item); -}; -Rollbar.prototype.critical = function (item) { - this._log('critical', item); -}; -Rollbar.prototype.wait = function (callback) { - this.queue.wait(callback); -}; -Rollbar.prototype.captureEvent = function (type, metadata, level) { - return this.telemeter && this.telemeter.captureEvent(type, metadata, level); -}; -Rollbar.prototype.captureDomContentLoaded = function (ts) { - return this.telemeter && this.telemeter.captureDomContentLoaded(ts); -}; -Rollbar.prototype.captureLoad = function (ts) { - return this.telemeter && this.telemeter.captureLoad(ts); -}; -Rollbar.prototype.buildJsonPayload = function (item) { - return this.api.buildJsonPayload(item); -}; -Rollbar.prototype.sendJsonPayload = function (jsonPayload) { - this.api.postJsonPayload(jsonPayload); -}; - -/* Internal */ - -Rollbar.prototype._log = function (defaultLevel, item) { - var callback; - if (item.callback) { - callback = item.callback; - delete item.callback; + var frames = trace.frames; + if (!frames || frames.length === 0) { + return !block; } - if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) { - if (callback) { - var error = new Error('ignored identical item'); - error.item = item; - callback(error); + var frame, filename, url, urlRegex; + var listLength = list.length; + var frameLength = frames.length; + for (var i = 0; i < frameLength; i++) { + frame = frames[i]; + filename = frame.filename; + if (!isType(filename, 'string')) { + return !block; } - return; + for (var j = 0; j < listLength; j++) { + url = list[j]; + urlRegex = new RegExp(url); + if (urlRegex.test(filename)) { + return true; + } + } + } + return false; +} +function urlIsOnAList(item, settings, safeOrBlock, logger) { + // safelist is the default + var block = false; + if (safeOrBlock === 'blocklist') { + block = true; } + var list, traces; try { - item.level = item.level || defaultLevel; - this._addTracingAttributes(item); + list = block ? settings.hostBlockList : settings.hostSafeList; + traces = get(item, 'body.trace_chain') || [get(item, 'body.trace')]; - // Legacy OpenTracing support - this._addTracingInfo(item); - var telemeter = this.telemeter; - if (telemeter) { - telemeter._captureRollbarItem(item); - item.telemetryEvents = telemeter.copyEvents() || []; + // These two checks are important to come first as they are defaults + // in case the list is missing or the trace is missing or not well-formed + if (!list || list.length === 0) { + return !block; } - this.notifier.log(item, callback); - } catch (e) { - if (callback) { - callback(e); + if (traces.length === 0 || !traces[0]) { + return !block; } - this.logger.error(e); - } -}; -Rollbar.prototype._addTracingAttributes = function (item) { - var _this$tracing, _this$tracing2; - var span = (_this$tracing = this.tracing) === null || _this$tracing === void 0 ? void 0 : _this$tracing.getSpan(); - var attributes = [{ - key: 'session_id', - value: (_this$tracing2 = this.tracing) === null || _this$tracing2 === void 0 ? void 0 : _this$tracing2.sessionId - }, { - key: 'span_id', - value: span === null || span === void 0 ? void 0 : span.spanId - }, { - key: 'trace_id', - value: span === null || span === void 0 ? void 0 : span.traceId - }]; - addItemAttributes(item.data, attributes); - span === null || span === void 0 || span.addEvent('rollbar.occurrence', [{ - key: 'rollbar.occurrence.uuid', - value: item.uuid - }]); -}; -Rollbar.prototype._defaultLogLevel = function () { - return this.options.logLevel || 'debug'; -}; -Rollbar.prototype._sameAsLastError = function (item) { - if (!item._isUncaught) { - return false; - } - var itemHash = generateItemHash(item); - if (this.lastErrorHash === itemHash) { - return true; - } - this.lastError = item.err; - this.lastErrorHash = itemHash; - return false; -}; -Rollbar.prototype._addTracingInfo = function (item) { - // Tracer validation occurs in the constructor - // or in the Rollbar.prototype.configure methods - if (this.tracer) { - // add rollbar occurrence uuid to span - var span = this.tracer.scope().active(); - if (validateSpan(span)) { - span.setTag('rollbar.error_uuid', item.uuid); - span.setTag('rollbar.has_error', true); - span.setTag('error', true); - span.setTag('rollbar.item_url', "https://rollbar.com/item/uuid/?uuid=".concat(item.uuid)); - span.setTag('rollbar.occurrence_url', "https://rollbar.com/occurrence/uuid/?uuid=".concat(item.uuid)); - - // add span ID & trace ID to occurrence - var opentracingSpanId = span.context().toSpanId(); - var opentracingTraceId = span.context().toTraceId(); - if (item.custom) { - item.custom.opentracing_span_id = opentracingSpanId; - item.custom.opentracing_trace_id = opentracingTraceId; - } else { - item.custom = { - opentracing_span_id: opentracingSpanId, - opentracing_trace_id: opentracingTraceId - }; + var tracesLength = traces.length; + for (var i = 0; i < tracesLength; i++) { + if (matchFrames(traces[i], list, block)) { + return true; } } + } catch (e + /* istanbul ignore next */) { + if (block) { + settings.hostBlockList = null; + } else { + settings.hostSafeList = null; + } + var listName = block ? 'hostBlockList' : 'hostSafeList'; + logger.error("Error while reading your configuration's " + listName + ' option. Removing custom ' + listName + '.', e); + return !block; } -}; -function generateItemHash(item) { - var message = item.message || ''; - var stack = (item.err || {}).stack || String(item.err); - return message + '::' + stack; -} - -// Node.js, Chrome, Safari, and some other browsers support this property -// which globally sets the number of stack frames returned in an Error object. -// If a browser can't use it, no harm done. -function setStackTraceLimit(options) { - if (options.stackTraceLimit) { - Error.stackTraceLimit = options.stackTraceLimit; - } + return false; } - -/** - * Validate the Tracer object provided to the Client - * is valid for our Opentracing use case. - * @param {opentracer.Tracer} tracer - */ -function validateTracer(tracer) { - if (!tracer) { - return false; - } - if (!tracer.scope || typeof tracer.scope !== 'function') { - return false; - } - var scope = tracer.scope(); - if (!scope || !scope.active || typeof scope.active !== 'function') { - return false; - } - return true; -} - -/** - * Validate the Span object provided - * @param {opentracer.Span} span - */ -function validateSpan(span) { - if (!span || !span.context || typeof span.context !== 'function') { - return false; - } - var spanContext = span.context(); - if (!spanContext || !spanContext.toSpanId || !spanContext.toTraceId || typeof spanContext.toSpanId !== 'function' || typeof spanContext.toTraceId !== 'function') { - return false; - } - return true; -} -/* harmony default export */ const rollbar = (Rollbar); -;// ./src/apiUtility.js - -function buildPayload(data) { - if (!isType(data.context, 'string')) { - var contextResult = stringify(data.context); - if (contextResult.error) { - data.context = "Error: could not serialize 'context'"; - } else { - data.context = contextResult.value || ''; - } - if (data.context.length > 255) { - data.context = data.context.substr(0, 255); +function messageIsIgnored(logger) { + return function (item, settings) { + var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages; + try { + messageIsIgnored = false; + ignoredMessages = settings.ignoredMessages; + if (!ignoredMessages || ignoredMessages.length === 0) { + return true; + } + messages = messagesFromItem(item); + if (messages.length === 0) { + return true; + } + len = ignoredMessages.length; + for (i = 0; i < len; i++) { + rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi'); + for (j = 0; j < messages.length; j++) { + messageIsIgnored = rIgnoredMessage.test(messages[j]); + if (messageIsIgnored) { + return false; + } + } + } + } catch (_e + /* istanbul ignore next */) { + settings.ignoredMessages = null; + logger.error("Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages."); } - } - return { - data: data - }; -} -function getTransportFromOptions(options, defaults, url) { - var hostname = defaults.hostname; - var protocol = defaults.protocol; - var port = defaults.port; - var path = defaults.path; - var search = defaults.search; - var timeout = options.timeout; - var transport = detectTransport(options); - var proxy = options.proxy; - if (options.endpoint) { - var opts = url.parse(options.endpoint); - hostname = opts.hostname; - protocol = opts.protocol; - port = opts.port; - path = opts.pathname; - search = opts.search; - } - return { - timeout: timeout, - hostname: hostname, - protocol: protocol, - port: port, - path: path, - search: search, - proxy: proxy, - transport: transport + return true; }; } -function detectTransport(options) { - var gWindow = typeof window != 'undefined' && window || typeof self != 'undefined' && self; - var transport = options.defaultTransport || 'xhr'; - if (typeof gWindow.fetch === 'undefined') transport = 'xhr'; - if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch'; - return transport; -} -function apiUtility_transportOptions(transport, method) { - var protocol = transport.protocol || 'https:'; - var port = transport.port || (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined); - var hostname = transport.hostname; - var path = transport.path; - var timeout = transport.timeout; - var transportAPI = transport.transport; - if (transport.search) { - path = path + transport.search; +function messagesFromItem(item) { + var body = item.body; + var messages = []; + + // The payload schema only allows one of trace_chain, message, or trace. + // However, existing test cases are based on having both trace and message present. + // So here we preserve the ability to collect strings from any combination of these keys. + if (body.trace_chain) { + var traceChain = body.trace_chain; + var _iterator = predicates_createForOfIteratorHelper(traceChain), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var trace = _step.value; + messages.push(get(trace, 'exception.message')); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } } - if (transport.proxy) { - path = protocol + '//' + hostname + path; - hostname = transport.proxy.host || transport.proxy.hostname; - port = transport.proxy.port; - protocol = transport.proxy.protocol || protocol; + if (body.trace) { + messages.push(get(body, 'trace.exception.message')); } - return { - timeout: timeout, - protocol: protocol, - hostname: hostname, - path: path, - port: port, - method: method, - transport: transportAPI - }; -} -function appendPathToPath(base, path) { - var baseTrailingSlash = /\/$/.test(base); - var pathBeginningSlash = /^\//.test(path); - if (baseTrailingSlash && pathBeginningSlash) { - path = path.substring(1); - } else if (!baseTrailingSlash && !pathBeginningSlash) { - path = '/' + path; + if (body.message) { + messages.push(get(body, 'message.body')); } - return base + path; + return messages; } -;// ./src/api.js -function api_typeof(o) { "@babel/helpers - typeof"; return api_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, api_typeof(o); } -function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { api_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function api_defineProperty(e, r, t) { return (r = api_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function api_toPropertyKey(t) { var i = api_toPrimitive(t, "string"); return "symbol" == api_typeof(i) ? i : i + ""; } -function api_toPrimitive(t, r) { if ("object" != api_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != api_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == api_typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(api_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } -function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } -function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } - +;// ./src/notifier.js +function notifier_typeof(o) { "@babel/helpers - typeof"; return notifier_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, notifier_typeof(o); } +function notifier_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function notifier_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, notifier_toPropertyKey(o.key), o); } } +function notifier_createClass(e, r, t) { return r && notifier_defineProperties(e.prototype, r), t && notifier_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function notifier_toPropertyKey(t) { var i = notifier_toPrimitive(t, "string"); return "symbol" == notifier_typeof(i) ? i : i + ""; } +function notifier_toPrimitive(t, r) { if ("object" != notifier_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != notifier_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -var api_defaultOptions = { - hostname: 'api.rollbar.com', - path: '/api/1/item/', - search: null, - version: '1', - protocol: 'https:', - port: 443 -}; -var OTLPDefaultOptions = { - hostname: 'api.rollbar.com', - path: '/api/1/session/', - search: null, - version: '1', - protocol: 'https:', - port: 443 -}; -/** - * Api is an object that encapsulates methods of communicating with - * the Rollbar API. It is a standard interface with some parts implemented - * differently for server or browser contexts. It is an object that should - * be instantiated when used so it can contain non-global options that may - * be different for another instance of RollbarApi. - * - * @param options { - * accessToken: the accessToken to use for posting items to rollbar - * endpoint: an alternative endpoint to send errors to - * must be a valid, fully qualified URL. - * The default is: https://api.rollbar.com/api/1/item - * proxy: if you wish to proxy requests provide an object - * with the following keys: - * host or hostname (required): foo.example.com - * port (optional): 123 - * protocol (optional): https - * } +/* + * Notifier - delegates between the client exposed API, the chain of transforms + * necessary to turn an item into something that can be sent to Rollbar, and the + * queue which handles the communcation with the Rollbar API servers. */ -function Api(options, transport, urllib, truncation) { - this.options = options; - this.transport = transport; - this.url = urllib; - this.truncation = truncation; - this.accessToken = options.accessToken; - this.transportOptions = _getTransport(options, urllib); - this.OTLPTransportOptions = _getOTLPTransport(options, urllib); -} +var Notifier = /*#__PURE__*/function () { + /** + * + * @param {Object} queue - an object that conforms to the interface: + * `addItem(item, callback)` + * @param {Object} options - an object representing the options to be set for + * this notifier, this should have any defaults already set by the caller + */ + function Notifier(queue, options) { + notifier_classCallCheck(this, Notifier); + this.queue = queue; + this.options = options; + this.transforms = []; + this.diagnostic = {}; + } -/** - * Wraps transport.post in a Promise to support async/await - * - * @param {Object} options - Options for the API request - * @param {string} options.accessToken - The access token for authentication - * @param {Object} options.transportOptions - Options for the transport - * @param {Object} options.payload - The data payload to send - * @returns {Promise} A promise that resolves with the response or rejects with an error - * @private - */ -Api.prototype._postPromise = function (_ref) { - var accessToken = _ref.accessToken, - options = _ref.options, - payload = _ref.payload, - headers = _ref.headers; - var self = this; - return new Promise(function (resolve, reject) { - self.transport.post({ - accessToken: accessToken, - options: options, - payload: payload, - headers: headers, - callback: function callback(err, resp) { - return err ? reject(err) : resolve(resp); - } - }); - }); -}; + /** + * configure - updates the options for this notifier with the passed in object + * + * @param {Object} options - an object which gets merged with the current + * options set on this notifier + * @returns this + */ + return notifier_createClass(Notifier, [{ + key: "configure", + value: function configure(options) { + var _this$queue; + (_this$queue = this.queue) === null || _this$queue === void 0 || _this$queue.configure(options); + var oldOptions = this.options; + this.options = merge(oldOptions, options); + return this; + } -/** - * - * @param data - * @param callback - */ -Api.prototype.postItem = function (data, callback) { - var options = apiUtility_transportOptions(this.transportOptions, 'POST'); - var payload = buildPayload(data); - var self = this; - - // ensure the network request is scheduled after the current tick. - setTimeout(function () { - self.transport.post({ - accessToken: self.accessToken, - options: options, - payload: payload, - callback: callback - }); - }, 0); -}; + /** + * Adds a transform onto the end of the queue of transforms for this notifier + * + * @param {Function} transform - a function which takes three arguments: + * - item: An Object representing the data to eventually be sent to Rollbar + * - options: The current value of the options for this notifier + * - callback: `function(err: (Null|Error), item: (Null|Object))` the + * transform must call this callback with a null value for error if it + * wants the processing chain to continue, otherwise with an error to + * terminate the processing. The item should be the updated item after + * this transform is finished modifying it. + */ + }, { + key: "addTransform", + value: function addTransform(transform) { + if (isFunction(transform)) { + this.transforms.push(transform); + } + return this; + } -/** - * Posts spans to the Rollbar API using the session endpoint - * - * @param {Array} payload - The spans to send - * @returns {Promise} A promise that resolves with the API response - */ -Api.prototype.postSpans = /*#__PURE__*/function () { - var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(payload) { - var headers, - options, - _args = arguments; - return _regeneratorRuntime().wrap(function _callee$(_context) { - while (1) switch (_context.prev = _context.next) { - case 0: - headers = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; - options = apiUtility_transportOptions(this.OTLPTransportOptions, 'POST'); - _context.next = 4; - return this._postPromise({ - accessToken: this.accessToken, - options: options, - payload: payload, - headers: headers - }); - case 4: - return _context.abrupt("return", _context.sent); - case 5: - case "end": - return _context.stop(); + /** + * The internal log function which applies the configured transforms and then + * pushes onto the queue to be sent to the backend. + * + * @param {Object} item - An object with the following structure: + * - message [String] - An optional string to be sent to rollbar + * - error [Error] - An optional error + * @param {Function} callback - A function of type `function(err, resp)` which + * will be called with exactly one null argument and one non-null argument. + * The callback will be called once, either during the transform stage if + * an error occurs inside a transform, or in response to the communication + * with the backend. The second argument will be the response from the + * backend in case of success. + */ + }, { + key: "log", + value: function log(item, callback) { + var _this = this; + callback = isFunction(callback) ? callback : function () {}; + if (!this.options.enabled) { + return callback(new Error('Rollbar is not enabled'), null); } - }, _callee, this); - })); - return function (_x) { - return _ref2.apply(this, arguments); - }; -}(); + this.queue.addPendingItem(item); + var originalError = item.err; + this._applyTransforms(item, function (err, i) { + if (err) { + _this.queue.removePendingItem(item); + return callback(err, null); + } + _this.queue.addItem(i, callback, originalError, item); + }); + } -/** - * - * @param data - * @param callback - */ -Api.prototype.buildJsonPayload = function (data, callback) { - var payload = buildPayload(data); - var stringifyResult; - if (this.truncation) { - stringifyResult = this.truncation.truncate(payload); - } else { - stringifyResult = stringify(payload); - } - if (stringifyResult.error) { - if (callback) { - callback(stringifyResult.error); + /* Internal */ + + /** + * Applies the transforms that have been added to this notifier sequentially. + * See `addTransform` for more information. + * + * @param {Object} item - An item to be transformed + * @param {Function} callback - A function of type `function(err, item)` which + * will be called with a non-null error and a null item in the case of a + * transform failure, or a null error and non-null item after all + * transforms have been applied. + */ + }, { + key: "_applyTransforms", + value: function _applyTransforms(item, callback) { + var transformIndex = -1; + var transformsLength = this.transforms.length; + var transforms = this.transforms; + var options = this.options; + var _next = function next(err, i) { + if (err) { + callback(err, null); + return; + } + transformIndex++; + if (transformIndex === transformsLength) { + callback(null, i); + return; + } + transforms[transformIndex](i, options, _next); + }; + _next(null, item); } - return null; - } - return stringifyResult.value; -}; + }]); +}(); + +;// ./src/queue.js +function queue_typeof(o) { "@babel/helpers - typeof"; return queue_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, queue_typeof(o); } +function queue_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function queue_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, queue_toPropertyKey(o.key), o); } } +function queue_createClass(e, r, t) { return r && queue_defineProperties(e.prototype, r), t && queue_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function queue_defineProperty(e, r, t) { return (r = queue_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function queue_toPropertyKey(t) { var i = queue_toPrimitive(t, "string"); return "symbol" == queue_typeof(i) ? i : i + ""; } +function queue_toPrimitive(t, r) { if ("object" != queue_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != queue_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + /** - * - * @param jsonPayload - * @param callback + * Queue - an object which handles which handles a queue of items to be sent to Rollbar. + * This object handles rate limiting via a passed in rate limiter, retries based on connection + * errors, and filtering of items based on a set of configurable predicates. The communication to + * the backend is performed via a given API object. */ -Api.prototype.postJsonPayload = function (jsonPayload, callback) { - var transportOptions = apiUtility_transportOptions(this.transportOptions, 'POST'); - this.transport.postJsonPayload(this.accessToken, transportOptions, jsonPayload, callback); -}; -Api.prototype.configure = function (options) { - var oldOptions = this.oldOptions; - this.options = src_merge(oldOptions, options); - this.transportOptions = _getTransport(this.options, this.url); - this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url); - if (this.options.accessToken !== undefined) { - this.accessToken = this.options.accessToken; +var Queue = /*#__PURE__*/function () { + /** + * @param rateLimiter - An object which conforms to the interface + * `rateLimiter.shouldSend(item) -> bool` + * @param api - An object which conforms to the interface + * `api.postItem(payload, function(err, response))` + * @param logger - An object used to log verbose messages if desired + * @param options - see `Queue.prototype.configure` + * @param replay - Optional `Replay` for coordinating session replay with error occurrences + */ + function Queue(rateLimiter, api, logger, options, replay) { + queue_classCallCheck(this, Queue); + this.rateLimiter = rateLimiter; + this.api = api; + this.logger = logger; + this.options = options; + this.replay = replay; + this.predicates = []; + this.pendingItems = []; + this.pendingRequests = []; + this.retryQueue = []; + this.retryHandle = null; + this.waitCallback = null; + this.waitIntervalID = null; } - return this; -}; -function _getTransport(options, url) { - return getTransportFromOptions(options, api_defaultOptions, url); -} -function _getOTLPTransport(options, url) { - var _options$tracing; - options = _objectSpread(_objectSpread({}, options), {}, { - endpoint: (_options$tracing = options.tracing) === null || _options$tracing === void 0 ? void 0 : _options$tracing.endpoint - }); - return getTransportFromOptions(options, OTLPDefaultOptions, url); -} -/* harmony default export */ const src_api = (Api); -;// ./src/logger.js -var _log = function log() {}; -var levels = { - debug: 0, - info: 1, - warn: 2, - error: 3, - disable: 4 -}; -var logger = { - error: function error() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; + + /** + * configure - updates the options this queue uses + * + * @param options + */ + return queue_createClass(Queue, [{ + key: "configure", + value: function configure(options) { + var _this$api; + (_this$api = this.api) === null || _this$api === void 0 || _this$api.configure(options); + var oldOptions = this.options; + this.options = merge(oldOptions, options); + return this; } - return _log('error', args); - }, - warn: function warn() { - for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; + + /** + * addPredicate - adds a predicate to the end of the list of predicates for this queue + * + * @param predicate - function(item, options) -> (bool|{err: Error}) + * Returning true means that this predicate passes and the item is okay to go on the queue + * Returning false means do not add the item to the queue, but it is not an error + * Returning {err: Error} means do not add the item to the queue, and the given error explains why + * Returning {err: undefined} is equivalent to returning true but don't do that + */ + }, { + key: "addPredicate", + value: function addPredicate(predicate) { + if (isFunction(predicate)) { + this.predicates.push(predicate); + } + return this; } - return _log('warn', args); - }, - info: function info() { - for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; + }, { + key: "addPendingItem", + value: function addPendingItem(item) { + this.pendingItems.push(item); } - return _log('info', args); - }, - debug: function debug() { - for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; + }, { + key: "removePendingItem", + value: function removePendingItem(item) { + var idx = this.pendingItems.indexOf(item); + if (idx !== -1) { + this.pendingItems.splice(idx, 1); + } } - return _log('debug', args); - }, - log: function log() { - for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { - args[_key5] = arguments[_key5]; + + /** + * addItem - Send an item to the Rollbar API if all of the predicates are satisfied + * + * @param item - Item instance with the payload to send to the backend + * @param callback - function(error, repsonse) which will be called with the response from the API + * in the case of a success, otherwise response will be null and error will have a value. If both + * error and response are null then the item was stopped by a predicate which did not consider this + * to be an error condition, but nonetheless did not send the item to the API. + * @param originalError - The original error before any transformations that is to be logged if any + * @param originalItem - The original item before transforms, used in pendingItems queue + */ + }, { + key: "addItem", + value: function addItem(item, callback, originalError, originalItem) { + var _this = this; + if (!callback || !isFunction(callback)) { + callback = function callback() { + return; + }; + } + var data = item.data; + var predicateResult = this._applyPredicates(data); + if (predicateResult.stop) { + this.removePendingItem(originalItem); + callback(predicateResult.err); + return; + } + this._maybeLog(data, originalError); + this.removePendingItem(originalItem); + if (!this.options.transmit) { + callback(new Error('Transmit disabled')); + return; + } + if (this.replay && data.body) { + item.replayId = this.replay.capture(null, data.uuid, { + type: 'occurrence', + level: item.level + }); + if (item.replayId) { + addItemAttributes(item.data, [{ + key: 'replay_id', + value: item.replayId + }]); + } + } + this.pendingRequests.push(data); + try { + this._makeApiRequest(data, function (err, resp, headers) { + _this._dequeuePendingRequest(data); + if (item.replayId) { + _this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers); + } + callback(err, resp); + }); + } catch (err) { + this._dequeuePendingRequest(data); + if (item.replayId) { + var _this$replay; + (_this$replay = this.replay) === null || _this$replay === void 0 || _this$replay.discard(item.replayId); + } + callback(err); + } } - return _log('info', args); - }, - init: function init(_ref) { - var logLevel = _ref.logLevel; - _log = function _log(level, args) { - if (levels[level] < levels[logLevel]) return; - args.unshift('Rollbar:'); - console[level].apply(console, args); - }; - } -}; -/* harmony default export */ const src_logger = (logger); -;// ./src/defaults.js -/** - * Default options shared across platforms - */ -var version = '3.0.0-rc.1'; -var endpoint = 'api.rollbar.com/api/1/item/'; -var logLevel = 'debug'; -var reportLevel = 'debug'; -var uncaughtErrorLevel = 'error'; -var maxItems = 0; -var itemsPerMin = 60; -var commonScrubFields = ['pw', 'pass', 'passwd', 'password', 'secret', 'confirm_password', 'confirmPassword', 'password_confirmation', 'passwordConfirmation', 'access_token', 'accessToken', 'X-Rollbar-Access-Token', 'secret_key', 'secretKey', 'secretToken']; -var apiScrubFields = ['api_key', 'authenticity_token', 'oauth_token', 'token', 'user_session_secret']; -var requestScrubFields = ['request.session.csrf', 'request.session._csrf', 'request.params._csrf', 'request.cookie', 'request.cookies']; -var commonScrubHeaders = ['authorization', 'www-authorization', 'http_authorization', 'omniauth.auth', 'cookie', 'oauth-access-token', 'x-access-token', 'x_csrf_token', 'http_x_csrf_token', 'x-csrf-token']; -// For backward compatibility with default export -/* harmony default export */ const defaults = ({ - version: version, - endpoint: endpoint, - logLevel: logLevel, - reportLevel: reportLevel, - uncaughtErrorLevel: uncaughtErrorLevel, - maxItems: maxItems, - itemsPerMin: itemsPerMin -}); -;// ./src/server/defaults.js -function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || defaults_unsupportedIterableToArray(r) || _nonIterableSpread(); } -function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function defaults_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return defaults_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? defaults_arrayLikeToArray(r, a) : void 0; } } -function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } -function _arrayWithoutHoles(r) { if (Array.isArray(r)) return defaults_arrayLikeToArray(r); } -function defaults_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -/** - * Default server-side application options - */ + /** + * wait - Stop any further errors from being added to the queue, and get called back when all items + * currently processing have finished sending to the backend. + * + * @param callback - function() called when all pending items have been sent + */ + }, { + key: "wait", + value: function wait(callback) { + var _this2 = this; + if (!isFunction(callback)) { + return; + } + this.waitCallback = callback; + if (this._maybeCallWait()) { + return; + } + if (this.waitIntervalID) { + this.waitIntervalID = clearInterval(this.waitIntervalID); + } + this.waitIntervalID = setInterval(function () { + _this2._maybeCallWait(); + }, 500); + } -var notifierName = 'node_rollbar'; -var scrubHeaders = commonScrubHeaders; -var scrubFields = [].concat(_toConsumableArray(commonScrubFields), _toConsumableArray(apiScrubFields), _toConsumableArray(requestScrubFields)); -;// ./src/utility/traverse.js + /** + * Sequentially applies the predicates that have been added to the queue to the + * given item with the currently configured options. + * + * @param item - An item in the queue + * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue, + * the error value should be passed up to a callbak if we are stopping. + */ + }, { + key: "_applyPredicates", + value: function _applyPredicates(item) { + var p = null; + for (var i = 0, len = this.predicates.length; i < len; i++) { + p = this.predicates[i](item, this.options); + if (!p || p.err !== undefined) { + return { + stop: true, + err: p.err + }; + } + } + return { + stop: false, + err: null + }; + } -function traverse(obj, func, seen) { - var k, v, i; - var isObj = isType(obj, 'object'); - var isArray = isType(obj, 'array'); - var keys = []; - var seenIndex; + /** + * Send an item to Rollbar, callback when done, if there is an error make an + * effort to retry if we are configured to do so. + * + * @param item - an item ready to send to the backend + * @param callback - function(err, response) + */ + }, { + key: "_makeApiRequest", + value: function _makeApiRequest(item, callback) { + var _this3 = this; + var rateLimitResponse = this.rateLimiter.shouldSend(item); + if (rateLimitResponse.shouldSend) { + this.api.postItem(item, function (err, resp, headers) { + if (err) { + _this3._maybeRetry(err, item, callback); + } else { + callback(err, resp, headers); + } + }); + } else if (rateLimitResponse.error) { + callback(rateLimitResponse.error); + } else { + this.api.postItem(rateLimitResponse.payload, callback); + } + } - // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11. - seen = seen || { - obj: [], - mapped: [] - }; - if (isObj) { - seenIndex = seen.obj.indexOf(obj); - if (isObj && seenIndex !== -1) { - // Prefer the mapped object if there is one. - return seen.mapped[seenIndex] || seen.obj[seenIndex]; + // These are errors basically mean there is no internet connection + }, { + key: "_maybeRetry", + value: + /** + * Given the error returned by the API, decide if we should retry or just callback + * with the error. + * + * @param err - an error returned by the API transport + * @param item - the item that was trying to be sent when this error occured + * @param callback - function(err, response) + */ + function _maybeRetry(err, item, callback) { + var shouldRetry = false; + if (this.options.retryInterval) { + for (var i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) { + if (err.code === Queue.RETRIABLE_ERRORS[i]) { + shouldRetry = true; + break; + } + } + if (shouldRetry && isFiniteNumber(this.options.maxRetries)) { + item.retries = item.retries ? item.retries + 1 : 1; + if (item.retries > this.options.maxRetries) { + shouldRetry = false; + } + } + } + if (shouldRetry) { + this._retryApiRequest(item, callback); + } else { + callback(err); + } } - seen.obj.push(obj); - seenIndex = seen.obj.length - 1; - } - if (isObj) { - for (k in obj) { - if (Object.prototype.hasOwnProperty.call(obj, k)) { - keys.push(k); + + /** + * Add an item and a callback to a queue and possibly start a timer to process + * that queue based on the retryInterval in the options for this queue. + * + * @param item - an item that failed to send due to an error we deem retriable + * @param callback - function(err, response) + */ + }, { + key: "_retryApiRequest", + value: function _retryApiRequest(item, callback) { + var _this4 = this; + this.retryQueue.push({ + item: item, + callback: callback + }); + if (!this.retryHandle) { + this.retryHandle = setInterval(function () { + while (_this4.retryQueue.length) { + var retryObject = _this4.retryQueue.shift(); + _this4._makeApiRequest(retryObject.item, retryObject.callback); + } + }, this.options.retryInterval); } } - } else if (isArray) { - for (i = 0; i < obj.length; ++i) { - keys.push(i); + + /** + * Removes the item from the pending request queue, this queue is used to + * enable to functionality of providing a callback that clients can pass to `wait` to be notified + * when the pending request queue has been emptied. This must be called when the API finishes + * processing this item. If a `wait` callback is configured, it is called by this function. + * + * @param item - the item previously added to the pending request queue + */ + }, { + key: "_dequeuePendingRequest", + value: function _dequeuePendingRequest(item) { + var idx = this.pendingRequests.indexOf(item); + if (idx !== -1) { + this.pendingRequests.splice(idx, 1); + this._maybeCallWait(); + } } - } - var result = isObj ? {} : []; - var same = true; - for (i = 0; i < keys.length; ++i) { - k = keys[i]; - v = obj[k]; - result[k] = func(k, v, seen); - same = same && result[k] === obj[k]; - } - if (isObj && !same) { - seen.mapped[seenIndex] = result; - } - return !same ? result : obj; -} -/* harmony default export */ const utility_traverse = (traverse); -;// ./src/truncation.js + }, { + key: "_maybeLog", + value: function _maybeLog(data, originalError) { + if (this.logger && this.options.verbose) { + var message = originalError || get(data, 'body.trace.exception.message') || get(data, 'body.trace_chain.0.exception.message'); + if (message) { + this.logger.error(message); + return; + } + message = get(data, 'body.message.body'); + if (message) { + this.logger.log(message); + } + } + } + }, { + key: "_maybeCallWait", + value: function _maybeCallWait() { + if (isFunction(this.waitCallback) && this.pendingItems.length === 0 && this.pendingRequests.length === 0) { + if (this.waitIntervalID) { + this.waitIntervalID = clearInterval(this.waitIntervalID); + } + this.waitCallback(); + return true; + } + return false; + } + }]); +}(); +queue_defineProperty(Queue, "RETRIABLE_ERRORS", ['ECONNRESET', 'ENOTFOUND', 'ESOCKETTIMEDOUT', 'ETIMEDOUT', 'ECONNREFUSED', 'EHOSTUNREACH', 'EPIPE', 'EAI_AGAIN']); +/* harmony default export */ const queue = (Queue); +;// ./src/rateLimiter.js +function rateLimiter_typeof(o) { "@babel/helpers - typeof"; return rateLimiter_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, rateLimiter_typeof(o); } +function _readOnlyError(r) { throw new TypeError('"' + r + '" is read-only'); } +function rateLimiter_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function rateLimiter_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, rateLimiter_toPropertyKey(o.key), o); } } +function rateLimiter_createClass(e, r, t) { return r && rateLimiter_defineProperties(e.prototype, r), t && rateLimiter_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function rateLimiter_defineProperty(e, r, t) { return (r = rateLimiter_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function rateLimiter_toPropertyKey(t) { var i = rateLimiter_toPrimitive(t, "string"); return "symbol" == rateLimiter_typeof(i) ? i : i + ""; } +function rateLimiter_toPrimitive(t, r) { if ("object" != rateLimiter_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != rateLimiter_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +/* + * RateLimiter - encapsulates the logic for counting items sent to Rollbar. + * + * @param options - the same options that are accepted by configureGlobal offered as a convenience + */ +var RateLimiter = /*#__PURE__*/function () { + function RateLimiter() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + rateLimiter_classCallCheck(this, RateLimiter); + this.startTime = Date.now(); + this.counter = 0; + this.perMinCounter = 0; + this.platform = null; + this.platformOptions = {}; + this.configureGlobal(options); + } + /* + * configureGlobal - set the global rate limiter options + * + * @param options - Only the following values are recognized: + * startTime: a timestamp of the form returned by (new Date()).getTime() + * maxItems: the maximum items + * itemsPerMinute: the max number of items to send in a given minute + */ + return rateLimiter_createClass(RateLimiter, [{ + key: "configureGlobal", + value: function configureGlobal() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var startTime = options.startTime, + maxItems = options.maxItems, + itemsPerMinute = options.itemsPerMinute; + if (startTime !== undefined) { + RateLimiter.globalSettings.startTime = startTime; + } + if (maxItems !== undefined) { + RateLimiter.globalSettings.maxItems = maxItems; + } + if (itemsPerMinute !== undefined) { + RateLimiter.globalSettings.itemsPerMinute = itemsPerMinute; + } + } -function raw(payload, jsonBackup) { - return [payload, stringify(payload, jsonBackup)]; -} -function selectFrames(frames, range) { - var len = frames.length; - if (len > range * 2) { - return frames.slice(0, range).concat(frames.slice(len - range)); - } - return frames; -} -function truncateFrames(payload, jsonBackup, range) { - range = typeof range === 'undefined' ? 30 : range; - var body = payload.data.body; - var frames; - if (body.trace_chain) { - var chain = body.trace_chain; - for (var i = 0; i < chain.length; i++) { - frames = chain[i].frames; - frames = selectFrames(frames, range); - chain[i].frames = frames; + /* + * shouldSend - determine if we should send a given item based on rate limit settings + * + * @param item - the item we are about to send + * @returns An object with the following structure: + * error: (Error|null) + * shouldSend: bool + * payload: (Object|null) + * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and + * exactly one of error or payload will be non-null. If error is non-null, the returned Error will + * describe the situation, but it means that we were already over a rate limit (either globally or + * per minute) when this item was checked. If error is null, and therefore payload is non-null, it + * means this item put us over the global rate limit and the payload should be sent to Rollbar in + * place of the passed in item. + */ + }, { + key: "shouldSend", + value: function shouldSend(item) { + var now = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Date.now(); + var elapsedTime = now - this.startTime; + if (elapsedTime < 0 || elapsedTime >= 60000) { + this.startTime = now; + this.perMinCounter = 0; + } + var globalRateLimit = RateLimiter.globalSettings.maxItems; + var globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute; + if (checkRate(item, globalRateLimit, this.counter)) { + return shouldSendValue(this.platform, this.platformOptions, "".concat(globalRateLimit, " max items reached"), false); + } + if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) { + return shouldSendValue(this.platform, this.platformOptions, "".concat(globalRateLimitPerMin, " items per minute reached"), false); + } + this.counter += 1; + this.perMinCounter += 1; + var underGlobalLimit = !checkRate(item, globalRateLimit, this.counter); + var perMinute = underGlobalLimit; + var shouldSend = underGlobalLimit && !checkRate(item, globalRateLimitPerMin, this.perMinCounter); + return shouldSendValue(this.platform, this.platformOptions, null, shouldSend, globalRateLimit, globalRateLimitPerMin, perMinute); } - } else if (body.trace) { - frames = body.trace.frames; - frames = selectFrames(frames, range); - body.trace.frames = frames; - } - return [payload, stringify(payload, jsonBackup)]; -} -function maybeTruncateValue(len, val) { - if (!val) { - return val; - } - if (val.length > len) { - return val.slice(0, len - 3).concat('...'); - } - return val; -} -function truncateStrings(len, payload, jsonBackup) { - function truncator(k, v, seen) { - switch (typeName(v)) { - case 'string': - return maybeTruncateValue(len, v); - case 'object': - case 'array': - return utility_traverse(v, truncator, seen); - default: - return v; + }, { + key: "setPlatformOptions", + value: function setPlatformOptions(platform, options) { + this.platform = platform; + this.platformOptions = options; } - } - payload = utility_traverse(payload, truncator); - return [payload, stringify(payload, jsonBackup)]; -} -function truncateTraceData(traceData) { - if (traceData.exception) { - delete traceData.exception.description; - traceData.exception.message = maybeTruncateValue(255, traceData.exception.message); - } - traceData.frames = selectFrames(traceData.frames, 1); - return traceData; + }]); +}(); +/* Helpers */ +rateLimiter_defineProperty(RateLimiter, "globalSettings", { + startTime: Date.now(), + maxItems: undefined, + itemsPerMinute: undefined +}); +function checkRate(item, limit, counter) { + return !item.ignoreRateLimit && limit >= 1 && counter > limit; } -function minBody(payload, jsonBackup) { - var body = payload.data.body; - if (body.trace_chain) { - var chain = body.trace_chain; - for (var i = 0; i < chain.length; i++) { - chain[i] = truncateTraceData(chain[i]); - } - } else if (body.trace) { - body.trace = truncateTraceData(body.trace); +function shouldSendValue(platform, options, error, shouldSend, globalRateLimit, limitPerMin, perMinute) { + var payload = null; + var errorResult = error ? new Error(error) : null; + if (!errorResult && !shouldSend) { + payload = rateLimitPayload(platform, options, globalRateLimit, limitPerMin, perMinute); } - return [payload, stringify(payload, jsonBackup)]; -} -function needsTruncation(payload, maxSize) { - return maxByteSize(payload) > maxSize; + return { + error: errorResult, + shouldSend: shouldSend, + payload: payload + }; } -function truncate(payload, jsonBackup, maxSize) { - maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize; - var strategies = [raw, truncateFrames, truncateStrings.bind(null, 1024), truncateStrings.bind(null, 512), truncateStrings.bind(null, 256), minBody]; - var strategy, results, result; - while (strategy = strategies.shift()) { - results = strategy(payload, jsonBackup); - payload = results[0]; - result = results[1]; - if (result.error || !needsTruncation(result.value, maxSize)) { - return result; +function rateLimitPayload(platform, options, globalRateLimit, limitPerMin, perMinute) { + var environment = options.environment || options.payload && options.payload.environment; + var msg = perMinute ? 'item per minute limit reached, ignoring errors until timeout' : 'maxItems has been hit, ignoring errors until reset.'; + var item = { + body: { + message: { + body: msg, + extra: { + maxItems: globalRateLimit, + itemsPerMinute: limitPerMin + } + } + }, + language: 'javascript', + environment: environment, + notifier: { + version: options.notifier && options.notifier.version || options.version } + }; + if (platform === 'browser') { + item.platform = 'browser'; + item.framework = 'browser-js'; + item.notifier.name = 'rollbar-browser-js'; + } else if (platform === 'server') { + item.framework = options.framework || 'node-js'; + item.notifier.name = options.notifier.name; + } else if (platform === 'react-native') { + item.framework = options.framework || 'react-native'; + item.notifier.name = options.notifier.name; } - return result; + return item; } -/* harmony default export */ const truncation = ({ - truncate: truncate, - /* for testing */ - raw: raw, - truncateFrames: truncateFrames, - truncateStrings: truncateStrings, - maybeTruncateValue: maybeTruncateValue -}); -;// external "http" -const external_http_namespaceObject = require("http"); -;// external "https" -const external_https_namespaceObject = require("https"); -;// external "json-stringify-safe" -const external_json_stringify_safe_namespaceObject = require("json-stringify-safe"); -;// ./src/server/transport.js +/* harmony default export */ const rateLimiter = (RateLimiter); +;// ./src/rollbar.js + +/* + * Rollbar - the interface to Rollbar + * + * @param options + * @param api + * @param logger + */ +function Rollbar(options, api, logger, telemeter, tracing, replay, platform) { + this.options = merge(options); + this.logger = logger; + Rollbar.rateLimiter.configureGlobal(this.options); + Rollbar.rateLimiter.setPlatformOptions(platform, this.options); + this.api = api; + this.queue = new queue(Rollbar.rateLimiter, api, logger, this.options, replay); + this.tracing = tracing; + + // Legacy OpenTracing support + // This must happen before the Notifier is created + var tracer = this.options.tracer || null; + if (validateTracer(tracer)) { + this.tracer = tracer; + // set to a string for api response serialization + this.options.tracer = 'opentracing-tracer-enabled'; + this.options._configuredOptions.tracer = 'opentracing-tracer-enabled'; + } else { + this.tracer = null; + } + this.notifier = new Notifier(this.queue, this.options); + this.telemeter = telemeter; + setStackTraceLimit(options); + this.lastError = null; + this.lastErrorHash = 'none'; +} +var rollbar_defaultOptions = { + maxItems: 0, + itemsPerMinute: 60 +}; +Rollbar.rateLimiter = new rateLimiter(rollbar_defaultOptions); +Rollbar.prototype.global = function (options) { + Rollbar.rateLimiter.configureGlobal(options); + return this; +}; +Rollbar.prototype.configure = function (options, payloadData) { + var oldOptions = this.options; + var payload = {}; + if (payloadData) { + payload = { + payload: payloadData + }; + } + this.options = merge(oldOptions, options, payload); + // Legacy OpenTracing support + // This must happen before the Notifier is configured + var tracer = this.options.tracer || null; + if (validateTracer(tracer)) { + this.tracer = tracer; + // set to a string for api response serialization + this.options.tracer = 'opentracing-tracer-enabled'; + this.options._configuredOptions.tracer = 'opentracing-tracer-enabled'; + } else { + this.tracer = null; + } + this.notifier && this.notifier.configure(this.options); + this.telemeter && this.telemeter.configure(this.options); + setStackTraceLimit(options); + this.global(this.options); + if (validateTracer(options.tracer)) { + this.tracer = options.tracer; + } + return this; +}; +Rollbar.prototype.log = function (item) { + var level = this._defaultLogLevel(); + return this._log(level, item); +}; +Rollbar.prototype.debug = function (item) { + this._log('debug', item); +}; +Rollbar.prototype.info = function (item) { + this._log('info', item); +}; +Rollbar.prototype.warn = function (item) { + this._log('warning', item); +}; +Rollbar.prototype.warning = function (item) { + this._log('warning', item); +}; +Rollbar.prototype.error = function (item) { + this._log('error', item); +}; +Rollbar.prototype.critical = function (item) { + this._log('critical', item); +}; +Rollbar.prototype.wait = function (callback) { + this.queue.wait(callback); +}; +Rollbar.prototype.captureEvent = function (type, metadata, level) { + return this.telemeter && this.telemeter.captureEvent(type, metadata, level); +}; +Rollbar.prototype.captureDomContentLoaded = function (ts) { + return this.telemeter && this.telemeter.captureDomContentLoaded(ts); +}; +Rollbar.prototype.captureLoad = function (ts) { + return this.telemeter && this.telemeter.captureLoad(ts); +}; +Rollbar.prototype.buildJsonPayload = function (item) { + return this.api.buildJsonPayload(item); +}; +Rollbar.prototype.sendJsonPayload = function (jsonPayload) { + this.api.postJsonPayload(jsonPayload); +}; -var MAX_RATE_LIMIT_INTERVAL = 60; +/* Internal */ -/* - * accessToken may be embedded in payload but that should not be assumed - * - * options: { - * hostname - * protocol - * path - * port - * method - * } - * - * params is an object containing key/value pairs to be - * appended to the path as 'key=value&key=value' - * - * payload is an unserialized object - */ -function Transport() { - this.rateLimitExpires = 0; -} -Transport.prototype.get = function (accessToken, options, params, callback, transportFactory) { - var t; - if (!callback || !isFunction(callback)) { - callback = function callback() {}; +Rollbar.prototype._log = function (defaultLevel, item) { + var callback; + if (item.callback) { + callback = item.callback; + delete item.callback; } - options = options || {}; - addParamsAndAccessTokenToPath(accessToken, options, params); - options.headers = _headers(accessToken, options); - if (transportFactory) { - t = transportFactory(options); - } else { - t = _transport(options); + if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) { + if (callback) { + var error = new Error('ignored identical item'); + error.item = item; + callback(error); + } + return; } - if (!t) { - src_logger.error('Unknown transport based on given protocol: ' + options.protocol); - return callback(new Error('Unknown transport')); + try { + item.level = item.level || defaultLevel; + this._addItemAttributes(item); + + // Legacy OpenTracing support + this._addTracingInfo(item); + var telemeter = this.telemeter; + if (telemeter) { + telemeter._captureRollbarItem(item); + item.telemetryEvents = telemeter.copyEvents() || []; + } + this.notifier.log(item, callback); + } catch (e) { + if (callback) { + callback(e); + } + this.logger.error(e); } - var req = t.request(options, function (resp) { - this.handleResponse(resp, callback); - }.bind(this)); - req.on('error', function (err) { - callback(err); - }); - req.end(); }; -Transport.prototype.post = function (_ref) { - var accessToken = _ref.accessToken, - options = _ref.options, - payload = _ref.payload, - callback = _ref.callback, - transportFactory = _ref.transportFactory; - var t; - if (!callback || !isFunction(callback)) { - callback = function callback() {}; - } - if (_currentTime() < this.rateLimitExpires) { - return callback(new Error('Exceeded rate limit')); - } - options = options || {}; - if (!payload) { - return callback(new Error('Cannot send empty request')); - } - var stringifyResult = truncation.truncate(payload, external_json_stringify_safe_namespaceObject); - if (stringifyResult.error) { - src_logger.error('Problem stringifying payload. Giving up'); - return callback(stringifyResult.error); - } - var writeData = stringifyResult.value; - options.headers = _headers(accessToken, options, writeData); - if (transportFactory) { - t = transportFactory(options); - } else { - t = _transport(options); - } - if (!t) { - src_logger.error('Unknown transport based on given protocol: ' + options.protocol); - return callback(new Error('Unknown transport')); - } - var req = t.request(options, function (resp) { - this.handleResponse(resp, _wrapPostCallback(callback)); - }.bind(this)); - req.on('error', function (err) { - callback(err); - }); - if (writeData) { - req.write(writeData); +Rollbar.prototype._addItemAttributes = function (item) { + var _this$tracing, _this$tracing2; + var span = (_this$tracing = this.tracing) === null || _this$tracing === void 0 ? void 0 : _this$tracing.getSpan(); + var attributes = [{ + key: 'session_id', + value: (_this$tracing2 = this.tracing) === null || _this$tracing2 === void 0 ? void 0 : _this$tracing2.sessionId + }, { + key: 'span_id', + value: span === null || span === void 0 ? void 0 : span.spanId + }, { + key: 'trace_id', + value: span === null || span === void 0 ? void 0 : span.traceId + }]; + if (item._isUncaught) { + attributes.push({ + key: 'is_uncaught', + value: 'true' + }); } - req.end(); + addItemAttributes(item.data, attributes); + span === null || span === void 0 || span.addEvent('rollbar.occurrence', [{ + key: 'rollbar.occurrence.uuid', + value: item.uuid + }]); }; -Transport.prototype.updateRateLimit = function (resp) { - var remaining = parseInt(resp.headers['x-rate-limit-remaining'] || 0); - var remainingSeconds = Math.min(MAX_RATE_LIMIT_INTERVAL, resp.headers['x-rate-limit-remaining-seconds'] || 0); - var currentTime = _currentTime(); - if (resp.statusCode === 429 && remaining === 0) { - this.rateLimitExpires = currentTime + remainingSeconds; - } else { - this.rateLimitExpires = currentTime; - } +Rollbar.prototype._defaultLogLevel = function () { + return this.options.logLevel || 'debug'; }; -Transport.prototype.handleResponse = function (resp, callback) { - this.updateRateLimit(resp); - var respData = []; - resp.setEncoding('utf8'); - resp.on('data', function (chunk) { - respData.push(chunk); - }); - resp.on('end', function () { - respData = respData.join(''); - _parseApiResponse(respData, callback); - }); +Rollbar.prototype._sameAsLastError = function (item) { + if (!item._isUncaught) { + return false; + } + var itemHash = generateItemHash(item); + if (this.lastErrorHash === itemHash) { + return true; + } + this.lastError = item.err; + this.lastErrorHash = itemHash; + return false; }; +Rollbar.prototype._addTracingInfo = function (item) { + // Tracer validation occurs in the constructor + // or in the Rollbar.prototype.configure methods + if (this.tracer) { + // add rollbar occurrence uuid to span + var span = this.tracer.scope().active(); + if (validateSpan(span)) { + span.setTag('rollbar.error_uuid', item.uuid); + span.setTag('rollbar.has_error', true); + span.setTag('error', true); + span.setTag('rollbar.item_url', "https://rollbar.com/item/uuid/?uuid=".concat(item.uuid)); + span.setTag('rollbar.occurrence_url', "https://rollbar.com/occurrence/uuid/?uuid=".concat(item.uuid)); -/** Helpers **/ - -function _headers(accessToken, options, data) { - var headers = options && options.headers || {}; - headers['Content-Type'] = 'application/json'; - if (data) { - try { - headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); - } catch (e) { - src_logger.error('Could not get the content length of the data'); + // add span ID & trace ID to occurrence + var opentracingSpanId = span.context().toSpanId(); + var opentracingTraceId = span.context().toTraceId(); + if (item.custom) { + item.custom.opentracing_span_id = opentracingSpanId; + item.custom.opentracing_trace_id = opentracingTraceId; + } else { + item.custom = { + opentracing_span_id: opentracingSpanId, + opentracing_trace_id: opentracingTraceId + }; + } } } - headers['X-Rollbar-Access-Token'] = accessToken; - return headers; +}; +function generateItemHash(item) { + var message = item.message || ''; + var stack = (item.err || {}).stack || String(item.err); + return message + '::' + stack; } -function _transport(options) { - return { - 'http:': external_http_namespaceObject, - 'https:': external_https_namespaceObject - }[options.protocol]; + +// Node.js, Chrome, Safari, and some other browsers support this property +// which globally sets the number of stack frames returned in an Error object. +// If a browser can't use it, no harm done. +function setStackTraceLimit(options) { + if (options.stackTraceLimit) { + Error.stackTraceLimit = options.stackTraceLimit; + } } -function _parseApiResponse(data, callback) { - var parsedData = jsonParse(data); - if (parsedData.error) { - src_logger.error('Could not parse api response, err: ' + parsedData.error); - return callback(parsedData.error); + +/** + * Validate the Tracer object provided to the Client + * is valid for our Opentracing use case. + * @param {opentracer.Tracer} tracer + */ +function validateTracer(tracer) { + if (!tracer) { + return false; } - data = parsedData.value; - if (data.err) { - src_logger.error('Received error: ' + data.message); - return callback(new Error('Api error: ' + (data.message || 'Unknown error'))); + if (!tracer.scope || typeof tracer.scope !== 'function') { + return false; } - callback(null, data); -} -function _wrapPostCallback(callback) { - return function (err, data) { - if (err) { - return callback(err); - } - if (data.result && data.result.uuid) { - src_logger.log(['Successful api response.', ' Link: https://rollbar.com/occurrence/uuid/?uuid=' + data.result.uuid].join('')); - } else { - src_logger.log('Successful api response'); - } - callback(null, data.result); - }; + var scope = tracer.scope(); + if (!scope || !scope.active || typeof scope.active !== 'function') { + return false; + } + return true; } -function _currentTime() { - return Math.floor(Date.now() / 1000); + +/** + * Validate the Span object provided + * @param {opentracer.Span} span + */ +function validateSpan(span) { + if (!span || !span.context || typeof span.context !== 'function') { + return false; + } + var spanContext = span.context(); + if (!spanContext || !spanContext.toSpanId || !spanContext.toTraceId || typeof spanContext.toSpanId !== 'function' || typeof spanContext.toTraceId !== 'function') { + return false; + } + return true; } -/* harmony default export */ const server_transport = (Transport); -;// external "url" -const external_url_namespaceObject = require("url"); +/* harmony default export */ const rollbar = (Rollbar); ;// ./src/telemetry.js var _excluded = ["otelAttributes"]; function telemetry_typeof(o) { "@babel/helpers - typeof"; return telemetry_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, telemetry_typeof(o); } @@ -2374,7 +2306,7 @@ var Telemeter = /*#__PURE__*/function () { var _this$tracing; telemetry_classCallCheck(this, Telemeter); this.queue = []; - this.options = src_merge(options); + this.options = merge(options); var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS; this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS)); this.tracing = tracing; @@ -2384,7 +2316,7 @@ var Telemeter = /*#__PURE__*/function () { key: "configure", value: function configure(options) { var oldOptions = this.options; - this.options = src_merge(oldOptions, options); + this.options = merge(oldOptions, options); var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS; var newMaxEvents = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS)); var deleteCount = 0; @@ -2406,7 +2338,7 @@ var Telemeter = /*#__PURE__*/function () { events.splice(i, 1); } } - } catch (e) { + } catch (_e) { this.options.filterTelemetry = null; } } @@ -2418,7 +2350,7 @@ var Telemeter = /*#__PURE__*/function () { // Remove internal keys from output events = events.map(function (_ref) { - var otelAttributes = _ref.otelAttributes, + var _otelAttributes = _ref.otelAttributes, event = _objectWithoutProperties(_ref, _excluded); return event; }); @@ -2441,7 +2373,7 @@ var Telemeter = /*#__PURE__*/function () { var e = { level: getLevel(type, level), type: type, - timestamp_ms: timestamp || utility_now(), + timestamp_ms: timestamp || now(), body: metadata, source: 'client' }; @@ -2455,7 +2387,7 @@ var Telemeter = /*#__PURE__*/function () { if (isFunction(this.options.filterTelemetry) && this.options.filterTelemetry(e)) { return false; } - } catch (exc) { + } catch (_exc) { this.options.filterTelemetry = null; } this.push(e); @@ -2489,25 +2421,16 @@ var Telemeter = /*#__PURE__*/function () { }, { key: "captureLog", value: function captureLog(message, level, rollbarUUID, timestamp) { - var otelAttributes = null; - - // If the uuid is present, this is a message occurrence. - if (rollbarUUID) { - var _this$telemetrySpan2; - otelAttributes = { - message: message, - level: level, - type: 'message', - uuid: rollbarUUID - }, (_this$telemetrySpan2 = this.telemetrySpan) === null || _this$telemetrySpan2 === void 0 ? void 0 : _this$telemetrySpan2.addEvent('rollbar-occurrence-event', otelAttributes, fromMillis(timestamp)); - } else { - var _this$telemetrySpan3; - otelAttributes = { - message: message, - level: level - }; - (_this$telemetrySpan3 = this.telemetrySpan) === null || _this$telemetrySpan3 === void 0 || _this$telemetrySpan3.addEvent('rollbar-log-event', otelAttributes, fromMillis(timestamp)); - } + var _this$telemetrySpan2; + var event = rollbarUUID ? 'rollbar-occurrence-event' : 'rollbar-log-event'; + var otelAttributes = telemetry_objectSpread({ + message: message, + level: level + }, rollbarUUID ? { + type: 'message', + uuid: rollbarUUID + } : {}); + (_this$telemetrySpan2 = this.telemetrySpan) === null || _this$telemetrySpan2 === void 0 || _this$telemetrySpan2.addEvent(event, otelAttributes, fromMillis(timestamp)); return this.capture('log', { message: message }, level, rollbarUUID, timestamp, otelAttributes); @@ -2515,7 +2438,7 @@ var Telemeter = /*#__PURE__*/function () { }, { key: "captureNetwork", value: function captureNetwork(metadata, subtype, rollbarUUID, requestData) { - var _metadata$response, _this$telemetrySpan4; + var _metadata$response, _metadata$response2, _this$telemetrySpan3; subtype = subtype || 'xhr'; metadata.subtype = metadata.subtype || subtype; if (requestData) { @@ -2532,7 +2455,15 @@ var Telemeter = /*#__PURE__*/function () { 'response.headers': JSON.stringify(((_metadata$response = metadata.response) === null || _metadata$response === void 0 ? void 0 : _metadata$response.headers) || {}), 'response.timeUnixNano': endTimeNano.toString() }; - (_this$telemetrySpan4 = this.telemetrySpan) === null || _this$telemetrySpan4 === void 0 || _this$telemetrySpan4.addEvent('rollbar-network-event', otelAttributes, fromMillis(metadata.start_time_ms)); + var requestBody = metadata.request; + var responseBody = (_metadata$response2 = metadata.response) === null || _metadata$response2 === void 0 ? void 0 : _metadata$response2.body; + if (requestBody) { + otelAttributes['request.body'] = JSON.stringify(requestBody); + } + if (responseBody) { + otelAttributes['response.body'] = JSON.stringify(responseBody); + } + (_this$telemetrySpan3 = this.telemetrySpan) === null || _this$telemetrySpan3 === void 0 || _this$telemetrySpan3.addEvent('rollbar-network-event', otelAttributes, fromMillis(metadata.start_time_ms)); return this.capture('network', metadata, level, rollbarUUID, metadata.start_time_ms, otelAttributes); } }, { @@ -2564,7 +2495,7 @@ var Telemeter = /*#__PURE__*/function () { }, { key: "captureInput", value: function captureInput(_ref2) { - var _this$telemetrySpan5; + var _this$telemetrySpan4; var type = _ref2.type, isSynthetic = _ref2.isSynthetic, element = _ref2.element, @@ -2588,13 +2519,13 @@ var Telemeter = /*#__PURE__*/function () { if (event) { return this._updateRepeatedEvent(event, otelAttributes, timestamp); } - (_this$telemetrySpan5 = this.telemetrySpan) === null || _this$telemetrySpan5 === void 0 || _this$telemetrySpan5.addEvent(name, otelAttributes, fromMillis(timestamp)); + (_this$telemetrySpan4 = this.telemetrySpan) === null || _this$telemetrySpan4 === void 0 || _this$telemetrySpan4.addEvent(name, otelAttributes, fromMillis(timestamp)); return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); } }, { key: "captureClick", value: function captureClick(_ref3) { - var _this$telemetrySpan6; + var _this$telemetrySpan5; var type = _ref3.type, isSynthetic = _ref3.isSynthetic, element = _ref3.element, @@ -2615,7 +2546,7 @@ var Telemeter = /*#__PURE__*/function () { if (event) { return this._updateRepeatedEvent(event, otelAttributes, timestamp); } - (_this$telemetrySpan6 = this.telemetrySpan) === null || _this$telemetrySpan6 === void 0 || _this$telemetrySpan6.addEvent(name, otelAttributes, fromMillis(timestamp)); + (_this$telemetrySpan5 = this.telemetrySpan) === null || _this$telemetrySpan5 === void 0 || _this$telemetrySpan5.addEvent(name, otelAttributes, fromMillis(timestamp)); return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); } }, { @@ -2648,7 +2579,7 @@ var Telemeter = /*#__PURE__*/function () { }, { key: "captureFocus", value: function captureFocus(_ref4) { - var _this$telemetrySpan7; + var _this$telemetrySpan6; var type = _ref4.type, isSynthetic = _ref4.isSynthetic, element = _ref4.element, @@ -2664,13 +2595,13 @@ var Telemeter = /*#__PURE__*/function () { isSynthetic: isSynthetic, element: element }; - (_this$telemetrySpan7 = this.telemetrySpan) === null || _this$telemetrySpan7 === void 0 || _this$telemetrySpan7.addEvent(name, otelAttributes, fromMillis(timestamp)); + (_this$telemetrySpan6 = this.telemetrySpan) === null || _this$telemetrySpan6 === void 0 || _this$telemetrySpan6.addEvent(name, otelAttributes, fromMillis(timestamp)); return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); } }, { key: "captureResize", value: function captureResize(_ref5) { - var _this$telemetrySpan8; + var _this$telemetrySpan7; var type = _ref5.type, isSynthetic = _ref5.isSynthetic, width = _ref5.width, @@ -2696,13 +2627,13 @@ var Telemeter = /*#__PURE__*/function () { if (event) { return this._updateRepeatedEvent(event, otelAttributes, timestamp); } - (_this$telemetrySpan8 = this.telemetrySpan) === null || _this$telemetrySpan8 === void 0 || _this$telemetrySpan8.addEvent(name, otelAttributes, fromMillis(timestamp)); + (_this$telemetrySpan7 = this.telemetrySpan) === null || _this$telemetrySpan7 === void 0 || _this$telemetrySpan7.addEvent(name, otelAttributes, fromMillis(timestamp)); return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); } }, { key: "captureDragDrop", value: function captureDragDrop(_ref6) { - var _this$telemetrySpan9; + var _this$telemetrySpan8; var type = _ref6.type, isSynthetic = _ref6.isSynthetic, element = _ref6.element, @@ -2749,14 +2680,14 @@ var Telemeter = /*#__PURE__*/function () { mediaTypes: mediaTypes }); } - (_this$telemetrySpan9 = this.telemetrySpan) === null || _this$telemetrySpan9 === void 0 || _this$telemetrySpan9.addEvent(name, otelAttributes, fromMillis(timestamp)); + (_this$telemetrySpan8 = this.telemetrySpan) === null || _this$telemetrySpan8 === void 0 || _this$telemetrySpan8.addEvent(name, otelAttributes, fromMillis(timestamp)); return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); } }, { key: "captureNavigation", value: function captureNavigation(from, to, rollbarUUID, timestamp) { - var _this$telemetrySpan10; - (_this$telemetrySpan10 = this.telemetrySpan) === null || _this$telemetrySpan10 === void 0 || _this$telemetrySpan10.addEvent('rollbar-navigation-event', { + var _this$telemetrySpan9; + (_this$telemetrySpan9 = this.telemetrySpan) === null || _this$telemetrySpan9 === void 0 || _this$telemetrySpan9.addEvent('rollbar-navigation-event', { 'previous.url.full': from, 'url.full': to }, fromMillis(timestamp)); @@ -2790,7 +2721,7 @@ var Telemeter = /*#__PURE__*/function () { }, { key: "captureConnectivityChange", value: function captureConnectivityChange(_ref7) { - var _this$telemetrySpan11; + var _this$telemetrySpan0; var type = _ref7.type, isSynthetic = _ref7.isSynthetic, timestamp = _ref7.timestamp; @@ -2803,48 +2734,374 @@ var Telemeter = /*#__PURE__*/function () { type: type, isSynthetic: isSynthetic }; - (_this$telemetrySpan11 = this.telemetrySpan) === null || _this$telemetrySpan11 === void 0 || _this$telemetrySpan11.addEvent(name, otelAttributes, fromMillis(timestamp)); + (_this$telemetrySpan0 = this.telemetrySpan) === null || _this$telemetrySpan0 === void 0 || _this$telemetrySpan0.addEvent(name, otelAttributes, fromMillis(timestamp)); return this.capture('connectivity', metadata, 'info', null, timestamp, otelAttributes); } - // Only intended to be used internally by the notifier - }, { - key: "_captureRollbarItem", - value: function _captureRollbarItem(item) { - if (!this.options.includeItemsInTelemetry) { - return; - } - if (item.err) { - return this.captureError(item.err, item.level, item.uuid, item.timestamp); - } - if (item.message) { - return this.captureLog(item.message, item.level, item.uuid, item.timestamp); - } - if (item.custom) { - return this.capture('log', item.custom, item.level, item.uuid, item.timestamp); + // Only intended to be used internally by the notifier + }, { + key: "_captureRollbarItem", + value: function _captureRollbarItem(item) { + if (!this.options.includeItemsInTelemetry) { + return; + } + if (item.err) { + return this.captureError(item.err, item.level, item.uuid, item.timestamp); + } + if (item.message) { + return this.captureLog(item.message, item.level, item.uuid, item.timestamp); + } + if (item.custom) { + return this.capture('log', item.custom, item.level, item.uuid, item.timestamp); + } + } + }, { + key: "push", + value: function push(e) { + this.queue.push(e); + if (this.queue.length > this.maxQueueSize) { + this.queue.shift(); + } + } + }]); +}(); +function getLevel(type, level) { + if (level) { + return level; + } + var defaultLevel = { + error: 'error', + manual: 'info' + }; + return defaultLevel[type] || 'info'; +} +/* harmony default export */ const telemetry = (Telemeter); +;// ./src/transforms.js + +function itemToPayload(item, options, callback) { + if (item._isUncaught) { + item.data._isUncaught = true; + } + if (item._originalArgs) { + item.data._originalArgs = item._originalArgs; + } + callback(null, item); +} +function addPayloadOptions(item, options, callback) { + var payloadOptions = options.payload || {}; + if (payloadOptions.body) { + delete payloadOptions.body; + } + item.data = merge(item.data, payloadOptions); + callback(null, item); +} +function addTelemetryData(item, options, callback) { + if (item.telemetryEvents) { + set(item, 'data.body.telemetry', item.telemetryEvents); + } + callback(null, item); +} +function addMessageWithError(item, options, callback) { + if (!item.message) { + callback(null, item); + return; + } + var tracePath = 'data.body.trace_chain.0'; + var trace = get(item, tracePath); + if (!trace) { + tracePath = 'data.body.trace'; + trace = get(item, tracePath); + } + if (trace) { + if (!(trace.exception && trace.exception.description)) { + set(item, tracePath + '.exception.description', item.message); + callback(null, item); + return; + } + var extra = get(item, tracePath + '.extra') || {}; + var newExtra = merge(extra, { + message: item.message + }); + set(item, tracePath + '.extra', newExtra); + } + callback(null, item); +} +function userTransform(logger) { + return function (item, options, callback) { + var newItem = merge(item); + var response = null; + try { + if (isFunction(options.transform)) { + response = options.transform(newItem.data, item); + } + } catch (e) { + options.transform = null; + logger.error('Error while calling custom transform() function. Removing custom transform().', e); + callback(null, item); + return; + } + if (isPromise(response)) { + response.then(function (promisedItem) { + if (promisedItem) { + newItem.data = promisedItem; + } + callback(null, newItem); + }, function (error) { + callback(error, item); + }); + } else { + callback(null, newItem); + } + }; +} +function addConfigToPayload(item, options, callback) { + if (!options.sendConfig) { + return callback(null, item); + } + var configKey = '_rollbarConfig'; + var custom = get(item, 'data.custom') || {}; + custom[configKey] = options; + item.data.custom = custom; + callback(null, item); +} +function addFunctionOption(options, name) { + if (isFunction(options[name])) { + options[name] = options[name].toString(); + } +} +function addConfiguredOptions(item, options, callback) { + var configuredOptions = options._configuredOptions; + + // These must be stringified or they'll get dropped during serialization. + addFunctionOption(configuredOptions, 'transform'); + addFunctionOption(configuredOptions, 'checkIgnore'); + addFunctionOption(configuredOptions, 'onSendCallback'); + delete configuredOptions.accessToken; + item.data.notifier.configured_options = configuredOptions; + callback(null, item); +} +function addDiagnosticKeys(item, options, callback) { + var diagnostic = merge(item.notifier.client.notifier.diagnostic, item.diagnostic); + if (get(item, 'err._isAnonymous')) { + diagnostic.is_anonymous = true; + } + if (item._isUncaught) { + diagnostic.is_uncaught = item._isUncaught; + } + if (item.err) { + try { + diagnostic.raw_error = { + message: item.err.message, + name: item.err.name, + constructor_name: item.err.constructor && item.err.constructor.name, + filename: item.err.fileName, + line: item.err.lineNumber, + column: item.err.columnNumber, + stack: item.err.stack + }; + } catch (e) { + diagnostic.raw_error = { + failed: String(e) + }; + } + } + item.data.notifier.diagnostic = merge(item.data.notifier.diagnostic, diagnostic); + callback(null, item); +} + +;// ./src/utility/traverse.js + +function traverse(obj, func, seen) { + var k, v, i; + var isObj = isType(obj, 'object'); + var isArray = isType(obj, 'array'); + var keys = []; + var seenIndex; + + // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11. + seen = seen || { + obj: [], + mapped: [] + }; + if (isObj) { + seenIndex = seen.obj.indexOf(obj); + if (isObj && seenIndex !== -1) { + // Prefer the mapped object if there is one. + return seen.mapped[seenIndex] || seen.obj[seenIndex]; + } + seen.obj.push(obj); + seenIndex = seen.obj.length - 1; + } + if (isObj) { + for (k in obj) { + if (hasOwn(obj, k)) { + keys.push(k); + } + } + } else if (isArray) { + for (i = 0; i < obj.length; ++i) { + keys.push(i); + } + } + var result = isObj ? {} : []; + var same = true; + for (i = 0; i < keys.length; ++i) { + k = keys[i]; + v = obj[k]; + result[k] = func(k, v, seen); + same = same && result[k] === obj[k]; + } + if (isObj && !same) { + seen.mapped[seenIndex] = result; + } + return !same ? result : obj; +} +/* harmony default export */ const utility_traverse = (traverse); +;// ./src/truncation.js +function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || truncation_unsupportedIterableToArray(r, e) || _nonIterableRest(); } +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } +function truncation_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = truncation_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function truncation_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return truncation_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? truncation_arrayLikeToArray(r, a) : void 0; } } +function truncation_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } + + +function raw(payload, jsonBackup) { + return [payload, stringify(payload, jsonBackup)]; +} +function selectFrames(frames, range) { + var len = frames.length; + if (len > range * 2) { + return frames.slice(0, range).concat(frames.slice(len - range)); + } + return frames; +} +function truncateFrames(payload, jsonBackup, range) { + range = typeof range === 'undefined' ? 30 : range; + var body = payload.data.body; + var frames; + if (body.trace_chain) { + var chain = body.trace_chain; + var _iterator = truncation_createForOfIteratorHelper(chain), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var trace = _step.value; + frames = trace.frames; + frames = selectFrames(frames, range); + trace.frames = frames; } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); } - }, { - key: "push", - value: function push(e) { - this.queue.push(e); - if (this.queue.length > this.maxQueueSize) { - this.queue.shift(); + } else if (body.trace) { + frames = body.trace.frames; + frames = selectFrames(frames, range); + body.trace.frames = frames; + } + return [payload, stringify(payload, jsonBackup)]; +} +function maybeTruncateValue(len, val) { + if (!val) { + return val; + } + if (val.length > len) { + return val.slice(0, len - 3).concat('...'); + } + return val; +} +function truncateStrings(len, payload, jsonBackup) { + function truncator(k, v, seen) { + switch (typeName(v)) { + case 'string': + return maybeTruncateValue(len, v); + case 'object': + case 'array': + return utility_traverse(v, truncator, seen); + default: + return v; + } + } + payload = utility_traverse(payload, truncator); + return [payload, stringify(payload, jsonBackup)]; +} +function truncateTraceData(traceData) { + if (traceData.exception) { + delete traceData.exception.description; + traceData.exception.message = maybeTruncateValue(255, traceData.exception.message); + } + traceData.frames = selectFrames(traceData.frames, 1); + return traceData; +} +function minBody(payload, jsonBackup) { + var body = payload.data.body; + if (body.trace_chain) { + var chain = body.trace_chain; + var _iterator2 = truncation_createForOfIteratorHelper(chain.entries()), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var _step2$value = _slicedToArray(_step2.value, 2), + index = _step2$value[0], + trace = _step2$value[1]; + chain[index] = truncateTraceData(trace); } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); } - }]); -}(); -function getLevel(type, level) { - if (level) { - return level; + } else if (body.trace) { + body.trace = truncateTraceData(body.trace); } - var defaultLevel = { - error: 'error', - manual: 'info' - }; - return defaultLevel[type] || 'info'; + return [payload, stringify(payload, jsonBackup)]; } -/* harmony default export */ const telemetry = (Telemeter); +function needsTruncation(payload, maxSize) { + return maxByteSize(payload) > maxSize; +} +function truncate(payload, jsonBackup, maxSize) { + maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize; + var strategies = [raw, truncateFrames, truncateStrings.bind(null, 1024), truncateStrings.bind(null, 512), truncateStrings.bind(null, 256), minBody]; + var strategy, results, result; + while (strategy = strategies.shift()) { + results = strategy(payload, jsonBackup); + payload = results[0]; + result = results[1]; + if (result.error || !needsTruncation(result.value, maxSize)) { + return result; + } + } + return result; +} +/* harmony default export */ const truncation = ({ + truncate: truncate, + /* for testing */ + raw: raw, + truncateFrames: truncateFrames, + truncateStrings: truncateStrings, + maybeTruncateValue: maybeTruncateValue +}); +;// ./src/server/defaults.js +function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || defaults_unsupportedIterableToArray(r) || _nonIterableSpread(); } +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function defaults_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return defaults_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? defaults_arrayLikeToArray(r, a) : void 0; } } +function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } +function _arrayWithoutHoles(r) { if (Array.isArray(r)) return defaults_arrayLikeToArray(r); } +function defaults_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +/** + * Default server-side application options + */ + +var notifierName = 'node_rollbar'; +var scrubHeaders = commonScrubHeaders; +var scrubFields = [].concat(_toConsumableArray(commonScrubFields), _toConsumableArray(apiScrubFields), _toConsumableArray(requestScrubFields)); +;// external "http" +const external_http_namespaceObject = require("http"); +;// external "https" +const external_https_namespaceObject = require("https"); ;// ./src/utility/replace.js function replace(obj, name, replacement, replacements, type) { var orig = obj[name]; @@ -2880,7 +3137,7 @@ function mergeOptions(input, options, cb) { cb = options; options = input || {}; } else { - options = src_merge(input || {}, options); + options = merge(input || {}, options); } return { options: options, @@ -2947,7 +3204,7 @@ function Instrumenter(options, telemeter, rollbar) { if (!isType(autoInstrument, 'object')) { autoInstrument = telemetry_defaults; } - this.autoInstrument = src_merge(telemetry_defaults, autoInstrument); + this.autoInstrument = merge(telemetry_defaults, autoInstrument); } this.telemeter = telemeter; this.rollbar = rollbar; @@ -2958,16 +3215,16 @@ function Instrumenter(options, telemeter, rollbar) { }; } Instrumenter.prototype.configure = function (options) { - this.options = src_merge(this.options, options); + this.options = merge(this.options, options); var autoInstrument = options.autoInstrument; - var oldSettings = src_merge(this.autoInstrument); + var oldSettings = merge(this.autoInstrument); if (options.enabled === false || autoInstrument === false) { this.autoInstrument = {}; } else { if (!isType(autoInstrument, 'object')) { autoInstrument = telemetry_defaults; } - this.autoInstrument = src_merge(telemetry_defaults, autoInstrument); + this.autoInstrument = merge(telemetry_defaults, autoInstrument); } this.instrument(oldSettings); }; @@ -2991,30 +3248,33 @@ Instrumenter.prototype.instrumentNetwork = function () { utility_replace(external_https_namespaceObject, 'request', networkRequestWrapper.bind(this), this.replacements, 'network'); }; function networkRequestWrapper(orig) { + var _this = this; var telemeter = this.telemeter; - var self = this; - return function (url, options, cb) { + return function () { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + var url = args[0], + options = args[1], + cb = args[2]; var mergedOptions = mergeOptions(url, options, cb); var metadata = { method: mergedOptions.options.method || 'GET', url: constructUrl(mergedOptions.options), status_code: null, - start_time_ms: utility_now(), + start_time_ms: now(), end_time_ms: null }; - if (self.autoInstrument.networkRequestHeaders) { + if (_this.autoInstrument.networkRequestHeaders) { metadata.request_headers = mergedOptions.options.headers; } telemeter.captureNetwork(metadata, 'http'); - - // Call the original method with the original arguments and wrapped callback. - var wrappedArgs = Array.from(arguments); - var wrappedCallback = responseCallbackWrapper(self.autoInstrument, metadata, mergedOptions.cb); + var wrappedCallback = responseCallbackWrapper(_this.autoInstrument, metadata, mergedOptions.cb); if (mergedOptions.cb) { - wrappedArgs.pop(); + args.pop(); } - wrappedArgs.push(wrappedCallback); - var req = orig.apply(external_https_namespaceObject, wrappedArgs); + args.push(wrappedCallback); + var req = orig.apply(external_https_namespaceObject, args); req.on('error', function (err) { metadata.status_code = 0; metadata.error = [err.name, err.message].join(': '); @@ -3024,7 +3284,7 @@ function networkRequestWrapper(orig) { } function responseCallbackWrapper(options, metadata, callback) { return function (res) { - metadata.end_time_ms = utility_now(); + metadata.end_time_ms = now(); metadata.status_code = res.statusCode; metadata.response = {}; if (options.networkResponseHeaders) { @@ -3035,47 +3295,189 @@ function responseCallbackWrapper(options, metadata, callback) { } }; } -Instrumenter.prototype.captureNetwork = function (metadata, subtype, rollbarUUID) { - return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID); -}; -Instrumenter.prototype.deinstrumentConsole = function () { - restore(this.replacements, 'log'); -}; -Instrumenter.prototype.instrumentConsole = function () { - var telemeter = this.telemeter; - var stdout = process.stdout; - utility_replace(stdout, 'write', function (orig) { - return function (string) { - telemeter.captureLog(string, 'info'); - return orig.apply(stdout, arguments); - }; - }, this.replacements, 'log'); - var stderr = process.stderr; - utility_replace(stderr, 'write', function (orig) { - return function (string) { - telemeter.captureLog(string, 'error'); - return orig.apply(stderr, arguments); - }; - }, this.replacements, 'log'); -}; -function restore(replacements, type) { - var b; - while (replacements[type].length) { - b = replacements[type].shift(); - b[0][b[1]] = b[2]; +Instrumenter.prototype.captureNetwork = function (metadata, subtype, rollbarUUID) { + return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID); +}; +Instrumenter.prototype.deinstrumentConsole = function () { + restore(this.replacements, 'log'); +}; +Instrumenter.prototype.instrumentConsole = function () { + var telemeter = this.telemeter; + var stdout = process.stdout; + utility_replace(stdout, 'write', function (orig) { + return function (string) { + telemeter.captureLog(string, 'info'); + return orig.apply(stdout, arguments); + }; + }, this.replacements, 'log'); + var stderr = process.stderr; + utility_replace(stderr, 'write', function (orig) { + return function (string) { + telemeter.captureLog(string, 'error'); + return orig.apply(stderr, arguments); + }; + }, this.replacements, 'log'); +}; +function restore(replacements, type) { + var b; + while (replacements[type].length) { + b = replacements[type].shift(); + b[0][b[1]] = b[2]; + } +} +/* harmony default export */ const server_telemetry = (Instrumenter); +;// external "async" +const external_async_namespaceObject = require("async"); +;// external "request-ip" +const external_request_ip_namespaceObject = require("request-ip"); +;// ./src/scrub.js +function scrub_slicedToArray(r, e) { return scrub_arrayWithHoles(r) || scrub_iterableToArrayLimit(r, e) || scrub_unsupportedIterableToArray(r, e) || scrub_nonIterableRest(); } +function scrub_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function scrub_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function scrub_arrayWithHoles(r) { if (Array.isArray(r)) return r; } +function scrub_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = scrub_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function scrub_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return scrub_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? scrub_arrayLikeToArray(r, a) : void 0; } } +function scrub_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } + + +function scrub(data, scrubFields, scrubPaths) { + scrubFields = scrubFields || []; + if (scrubPaths) { + var _iterator = scrub_createForOfIteratorHelper(scrubPaths), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var path = _step.value; + scrubPath(data, path); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + } + var paramRes = _getScrubFieldRegexs(scrubFields); + var queryRes = _getScrubQueryParamRegexs(scrubFields); + function redactQueryParam(dummy0, paramPart) { + return paramPart + redact(); + } + function paramScrubber(v) { + if (isType(v, 'string')) { + var _iterator2 = scrub_createForOfIteratorHelper(queryRes), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var regex = _step2.value; + v = v.replace(regex, redactQueryParam); + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + } + return v; + } + function valScrubber(k, v) { + var _iterator3 = scrub_createForOfIteratorHelper(paramRes), + _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var regex = _step3.value; + if (regex.test(k)) { + v = redact(); + break; + } + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + return v; + } + function scrubber(k, v, seen) { + var tmpV = valScrubber(k, v); + if (tmpV === v) { + if (isType(v, 'object') || isType(v, 'array')) { + return utility_traverse(v, scrubber, seen); + } + return paramScrubber(tmpV); + } else { + return tmpV; + } + } + return utility_traverse(data, scrubber); +} +function scrubPath(obj, path) { + var keys = path.split('.'); + var last = keys.length - 1; + try { + var _iterator4 = scrub_createForOfIteratorHelper(keys.entries()), + _step4; + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + var _step4$value = scrub_slicedToArray(_step4.value, 2), + index = _step4$value[0], + key = _step4$value[1]; + if (index < last) { + obj = obj[key]; + } else { + obj[key] = redact(); + } + } + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); + } + } catch (_e) { + // Missing key is OK; + } +} +function _getScrubFieldRegexs(scrubFields) { + var ret = []; + var _iterator5 = scrub_createForOfIteratorHelper(scrubFields), + _step5; + try { + for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { + var field = _step5.value; + var pat = '^\\[?(%5[bB])?' + field + '\\[?(%5[bB])?\\]?(%5[dD])?$'; + ret.push(new RegExp(pat, 'i')); + } + } catch (err) { + _iterator5.e(err); + } finally { + _iterator5.f(); + } + return ret; +} +function _getScrubQueryParamRegexs(scrubFields) { + var ret = []; + var _iterator6 = scrub_createForOfIteratorHelper(scrubFields), + _step6; + try { + for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { + var field = _step6.value; + var pat = '\\[?(%5[bB])?' + field + '\\[?(%5[bB])?\\]?(%5[dD])?'; + ret.push(new RegExp('(' + pat + '=)([^&\\n]+)', 'igm')); + } + } catch (err) { + _iterator6.e(err); + } finally { + _iterator6.f(); } + return ret; } -/* harmony default export */ const server_telemetry = (Instrumenter); -;// external "async" -const external_async_namespaceObject = require("async"); +/* harmony default export */ const src_scrub = (scrub); ;// external "fs" const external_fs_namespaceObject = require("fs"); ;// external "lru-cache" const external_lru_cache_namespaceObject = require("lru-cache"); -;// external "source-map" -const external_source_map_namespaceObject = require("source-map"); ;// external "path" const external_path_namespaceObject = require("path"); +;// external "source-map" +const external_source_map_namespaceObject = require("source-map"); ;// ./src/server/sourceMap/stackTrace.js @@ -3122,7 +3524,7 @@ function retrieveFile(path) { if (external_fs_namespaceObject.existsSync(path)) { contents = external_fs_namespaceObject.readFileSync(path, 'utf8'); } - } catch (er) { + } catch (_er) { /* ignore any errors */ } return fileContentsCache[path] = contents; @@ -3133,10 +3535,10 @@ function retrieveFile(path) { function supportRelativeURL(file, url) { if (!file) return url; var dir = external_path_namespaceObject.dirname(file); - var match = /^\w+:\/\/[^\/]*/.exec(dir); + var match = /^\w+:\/\/[^/]*/.exec(dir); var protocol = match ? match[0] : ''; var startPath = dir.slice(protocol.length); - if (protocol && /^\/\w\:/.test(startPath)) { + if (protocol && /^\/\w:/.test(startPath)) { // handle file:///C:/ paths protocol += '/'; return protocol + external_path_namespaceObject.resolve(dir.slice(protocol.length), url).replace(/\\/g, '/'); @@ -3148,7 +3550,7 @@ function retrieveSourceMapURL(source) { // Get the URL of the source map fileData = retrieveFile(source); - var re = /(?:\/\/[@#][ \t]+sourceMappingURL=([^\s'"]+?)[ \t]*$)|(?:\/\*[@#][ \t]+sourceMappingURL=([^\*]+?)[ \t]*(?:\*\/)[ \t]*$)/gm; + var re = /(?:\/\/[@#][ \t]+sourceMappingURL=([^\s'"]+?)[ \t]*$)|(?:\/\*[@#][ \t]+sourceMappingURL=([^*]+?)[ \t]*(?:\*\/)[ \t]*$)/gm; // Keep executing the search to find the *last* sourceMappingURL to avoid // picking up sourceMappingURLs from comments, strings, etc. var lastMatch, match; @@ -3394,8 +3796,8 @@ function parseFrameLine(line, callback) { function shouldReadFrameFile(frameFilename, callback) { var isValidFilename, isCached, isPending; isValidFilename = frameFilename[0] === '/' || frameFilename[0] === '.'; - isCached = !!cache.get(frameFilename); - isPending = !!pendingReads[frameFilename]; + isCached = Boolean(cache.get(frameFilename)); + isPending = Boolean(pendingReads[frameFilename]); callback(null, isValidFilename && !isCached && !isPending); } function readFileLines(filename, callback) { @@ -3555,96 +3957,13 @@ function parseStack(stack, options, item, callback) { } frames.reverse(); external_async_namespaceObject.filter(frames, function (frame, callback) { - callback(null, !!frame); + callback(null, Boolean(frame)); }, function (err, results) { if (err) return callback(err); gatherContexts(results, callback); }); }); } -;// external "request-ip" -const external_request_ip_namespaceObject = require("request-ip"); -;// ./src/scrub.js - - -function scrub(data, scrubFields, scrubPaths) { - scrubFields = scrubFields || []; - if (scrubPaths) { - for (var i = 0; i < scrubPaths.length; ++i) { - scrubPath(data, scrubPaths[i]); - } - } - var paramRes = _getScrubFieldRegexs(scrubFields); - var queryRes = _getScrubQueryParamRegexs(scrubFields); - function redactQueryParam(dummy0, paramPart) { - return paramPart + redact(); - } - function paramScrubber(v) { - var i; - if (isType(v, 'string')) { - for (i = 0; i < queryRes.length; ++i) { - v = v.replace(queryRes[i], redactQueryParam); - } - } - return v; - } - function valScrubber(k, v) { - var i; - for (i = 0; i < paramRes.length; ++i) { - if (paramRes[i].test(k)) { - v = redact(); - break; - } - } - return v; - } - function scrubber(k, v, seen) { - var tmpV = valScrubber(k, v); - if (tmpV === v) { - if (isType(v, 'object') || isType(v, 'array')) { - return utility_traverse(v, scrubber, seen); - } - return paramScrubber(tmpV); - } else { - return tmpV; - } - } - return utility_traverse(data, scrubber); -} -function scrubPath(obj, path) { - var keys = path.split('.'); - var last = keys.length - 1; - try { - for (var i = 0; i <= last; ++i) { - if (i < last) { - obj = obj[keys[i]]; - } else { - obj[keys[i]] = redact(); - } - } - } catch (e) { - // Missing key is OK; - } -} -function _getScrubFieldRegexs(scrubFields) { - var ret = []; - var pat; - for (var i = 0; i < scrubFields.length; ++i) { - pat = '^\\[?(%5[bB])?' + scrubFields[i] + '\\[?(%5[bB])?\\]?(%5[dD])?$'; - ret.push(new RegExp(pat, 'i')); - } - return ret; -} -function _getScrubQueryParamRegexs(scrubFields) { - var ret = []; - var pat; - for (var i = 0; i < scrubFields.length; ++i) { - pat = '\\[?(%5[bB])?' + scrubFields[i] + '\\[?(%5[bB])?\\]?(%5[dD])?'; - ret.push(new RegExp('(' + pat + '=)([^&\\n]+)', 'igm')); - } - return ret; -} -/* harmony default export */ const src_scrub = (scrub); ;// ./src/server/transforms.js @@ -3653,6 +3972,7 @@ function _getScrubQueryParamRegexs(scrubFields) { function baseData(item, options, callback) { + var _item$data; var environment = options.payload && options.payload.environment || options.environment; var data = { timestamp: Math.round(item.timestamp / 1000), @@ -3662,7 +3982,8 @@ function baseData(item, options, callback) { framework: item.framework || options.framework, uuid: item.uuid, notifier: JSON.parse(JSON.stringify(options.notifier)), - custom: item.custom + custom: item.custom, + attributes: (_item$data = item.data) === null || _item$data === void 0 ? void 0 : _item$data.attributes }; if (options.codeVersion) { data.code_version = options.codeVersion; @@ -3671,7 +3992,7 @@ function baseData(item, options, callback) { } var props = Object.getOwnPropertyNames(item.custom || {}); props.forEach(function (name) { - if (!data.hasOwnProperty(name)) { + if (!hasOwn(data, name)) { data[name] = item.custom[name]; } }); @@ -3762,7 +4083,7 @@ function addRequestData(item, options, callback) { try { routePath = req.app._router.matchRequest(req).path; item.data.context = baseUrl && baseUrl.length ? baseUrl + routePath : routePath; - } catch (ignore) { + } catch (_ignore) { // Ignored } } @@ -3912,7 +4233,7 @@ function _buildRequestData(req) { var bodyParams = {}; if (isIterable(body)) { for (var k in body) { - if (Object.prototype.hasOwnProperty.call(body, k)) { + if (hasOwn(body, k)) { bodyParams[k] = body[k]; } } @@ -3924,305 +4245,177 @@ function _buildRequestData(req) { return data; } -;// ./src/transforms.js +;// ./src/server/transport.js -function itemToPayload(item, options, callback) { - if (item._isUncaught) { - item.data._isUncaught = true; - } - if (item._originalArgs) { - item.data._originalArgs = item._originalArgs; - } - callback(null, item); + + + + + +var MAX_RATE_LIMIT_INTERVAL = 60; + +/* + * accessToken may be embedded in payload but that should not be assumed + * + * options: { + * hostname + * protocol + * path + * port + * method + * } + * + * params is an object containing key/value pairs to be + * appended to the path as 'key=value&key=value' + * + * payload is an unserialized object + */ +function Transport() { + this.rateLimitExpires = 0; } -function addPayloadOptions(item, options, callback) { - var payloadOptions = options.payload || {}; - if (payloadOptions.body) { - delete payloadOptions.body; +Transport.prototype.get = function (accessToken, options, params, callback, transportFactory) { + var t; + if (!callback || !isFunction(callback)) { + callback = function callback() {}; } - item.data = src_merge(item.data, payloadOptions); - callback(null, item); -} -function addTelemetryData(item, options, callback) { - if (item.telemetryEvents) { - set(item, 'data.body.telemetry', item.telemetryEvents); + options = options || {}; + addParamsAndAccessTokenToPath(accessToken, options, params); + options.headers = _headers(accessToken, options); + if (transportFactory) { + t = transportFactory(options); + } else { + t = _transport(options); } - callback(null, item); -} -function addMessageWithError(item, options, callback) { - if (!item.message) { - callback(null, item); - return; + if (!t) { + src_logger.error('Unknown transport based on given protocol: ' + options.protocol); + return callback(new Error('Unknown transport')); } - var tracePath = 'data.body.trace_chain.0'; - var trace = get(item, tracePath); - if (!trace) { - tracePath = 'data.body.trace'; - trace = get(item, tracePath); + var req = t.request(options, function (resp) { + this.handleResponse(resp, callback); + }.bind(this)); + req.on('error', function (err) { + callback(err); + }); + req.end(); +}; +Transport.prototype.post = function (_ref) { + var accessToken = _ref.accessToken, + options = _ref.options, + payload = _ref.payload, + callback = _ref.callback, + transportFactory = _ref.transportFactory; + var t; + if (!callback || !isFunction(callback)) { + callback = function callback() {}; } - if (trace) { - if (!(trace.exception && trace.exception.description)) { - set(item, tracePath + '.exception.description', item.message); - callback(null, item); - return; - } - var extra = get(item, tracePath + '.extra') || {}; - var newExtra = src_merge(extra, { - message: item.message - }); - set(item, tracePath + '.extra', newExtra); + if (_currentTime() < this.rateLimitExpires) { + return callback(new Error('Exceeded rate limit')); } - callback(null, item); -} -function userTransform(logger) { - return function (item, options, callback) { - var newItem = src_merge(item); - var response = null; - try { - if (isFunction(options.transform)) { - response = options.transform(newItem.data, item); - } - } catch (e) { - options.transform = null; - logger.error('Error while calling custom transform() function. Removing custom transform().', e); - callback(null, item); - return; - } - if (isPromise(response)) { - response.then(function (promisedItem) { - if (promisedItem) { - newItem.data = promisedItem; - } - callback(null, newItem); - }, function (error) { - callback(error, item); - }); - } else { - callback(null, newItem); - } - }; -} -function addConfigToPayload(item, options, callback) { - if (!options.sendConfig) { - return callback(null, item); + options = options || {}; + if (!payload) { + return callback(new Error('Cannot send empty request')); } - var configKey = '_rollbarConfig'; - var custom = get(item, 'data.custom') || {}; - custom[configKey] = options; - item.data.custom = custom; - callback(null, item); -} -function addFunctionOption(options, name) { - if (isFunction(options[name])) { - options[name] = options[name].toString(); + var stringifyResult = truncation.truncate(payload, external_json_stringify_safe_namespaceObject); + if (stringifyResult.error) { + src_logger.error('Problem stringifying payload. Giving up'); + return callback(stringifyResult.error); + } + var writeData = stringifyResult.value; + options.headers = _headers(accessToken, options, writeData); + if (transportFactory) { + t = transportFactory(options); + } else { + t = _transport(options); } -} -function addConfiguredOptions(item, options, callback) { - var configuredOptions = options._configuredOptions; - - // These must be stringified or they'll get dropped during serialization. - addFunctionOption(configuredOptions, 'transform'); - addFunctionOption(configuredOptions, 'checkIgnore'); - addFunctionOption(configuredOptions, 'onSendCallback'); - delete configuredOptions.accessToken; - item.data.notifier.configured_options = configuredOptions; - callback(null, item); -} -function addDiagnosticKeys(item, options, callback) { - var diagnostic = src_merge(item.notifier.client.notifier.diagnostic, item.diagnostic); - if (get(item, 'err._isAnonymous')) { - diagnostic.is_anonymous = true; + if (!t) { + src_logger.error('Unknown transport based on given protocol: ' + options.protocol); + return callback(new Error('Unknown transport')); } - if (item._isUncaught) { - diagnostic.is_uncaught = item._isUncaught; + var req = t.request(options, function (resp) { + this.handleResponse(resp, _wrapPostCallback(callback)); + }.bind(this)); + req.on('error', function (err) { + callback(err); + }); + if (writeData) { + req.write(writeData); } - if (item.err) { - try { - diagnostic.raw_error = { - message: item.err.message, - name: item.err.name, - constructor_name: item.err.constructor && item.err.constructor.name, - filename: item.err.fileName, - line: item.err.lineNumber, - column: item.err.columnNumber, - stack: item.err.stack - }; - } catch (e) { - diagnostic.raw_error = { - failed: String(e) - }; - } + req.end(); +}; +Transport.prototype.updateRateLimit = function (resp) { + var remaining = parseInt(resp.headers['x-rate-limit-remaining'] || 0); + var remainingSeconds = Math.min(MAX_RATE_LIMIT_INTERVAL, resp.headers['x-rate-limit-remaining-seconds'] || 0); + var currentTime = _currentTime(); + if (resp.statusCode === 429 && remaining === 0) { + this.rateLimitExpires = currentTime + remainingSeconds; + } else { + this.rateLimitExpires = currentTime; } - item.data.notifier.diagnostic = src_merge(item.data.notifier.diagnostic, diagnostic); - callback(null, item); -} +}; +Transport.prototype.handleResponse = function (resp, callback) { + this.updateRateLimit(resp); + var respData = []; + resp.setEncoding('utf8'); + resp.on('data', function (chunk) { + respData.push(chunk); + }); + resp.on('end', function () { + respData = respData.join(''); + _parseApiResponse(respData, callback); + }); +}; -;// ./src/predicates.js +/** Helpers **/ -function checkLevel(item, settings) { - var level = item.level; - var levelVal = LEVELS[level] || 0; - var reportLevel = settings.reportLevel; - var reportLevelVal = LEVELS[reportLevel] || 0; - if (levelVal < reportLevelVal) { - return false; - } - return true; -} -function userCheckIgnore(logger) { - return function (item, settings) { - var isUncaught = !!item._isUncaught; - delete item._isUncaught; - var args = item._originalArgs; - delete item._originalArgs; - try { - if (isFunction(settings.onSendCallback)) { - settings.onSendCallback(isUncaught, args, item); - } - } catch (e) { - settings.onSendCallback = null; - logger.error('Error while calling onSendCallback, removing', e); - } +function _headers(accessToken, options, data) { + var headers = options && options.headers || {}; + headers['Content-Type'] = 'application/json'; + if (data) { try { - if (isFunction(settings.checkIgnore) && settings.checkIgnore(isUncaught, args, item)) { - return false; - } - } catch (e) { - settings.checkIgnore = null; - logger.error('Error while calling custom checkIgnore(), removing', e); + headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); + } catch (_e) { + src_logger.error('Could not get the content length of the data'); } - return true; - }; -} -function urlIsNotBlockListed(logger) { - return function (item, settings) { - return !urlIsOnAList(item, settings, 'blocklist', logger); - }; + } + headers['X-Rollbar-Access-Token'] = accessToken; + return headers; } -function urlIsSafeListed(logger) { - return function (item, settings) { - return urlIsOnAList(item, settings, 'safelist', logger); - }; +function _transport(options) { + return { + 'http:': external_http_namespaceObject, + 'https:': external_https_namespaceObject + }[options.protocol]; } -function matchFrames(trace, list, block) { - if (!trace) { - return !block; - } - var frames = trace.frames; - if (!frames || frames.length === 0) { - return !block; +function _parseApiResponse(data, callback) { + var parsedData = jsonParse(data); + if (parsedData.error) { + src_logger.error('Could not parse api response, err: ' + parsedData.error); + return callback(parsedData.error); } - var frame, filename, url, urlRegex; - var listLength = list.length; - var frameLength = frames.length; - for (var i = 0; i < frameLength; i++) { - frame = frames[i]; - filename = frame.filename; - if (!isType(filename, 'string')) { - return !block; - } - for (var j = 0; j < listLength; j++) { - url = list[j]; - urlRegex = new RegExp(url); - if (urlRegex.test(filename)) { - return true; - } - } + data = parsedData.value; + if (data.err) { + src_logger.error('Received error: ' + data.message); + return callback(new Error('Api error: ' + (data.message || 'Unknown error'))); } - return false; + callback(null, data); } -function urlIsOnAList(item, settings, safeOrBlock, logger) { - // safelist is the default - var block = false; - if (safeOrBlock === 'blocklist') { - block = true; - } - var list, traces; - try { - list = block ? settings.hostBlockList : settings.hostSafeList; - traces = get(item, 'body.trace_chain') || [get(item, 'body.trace')]; - - // These two checks are important to come first as they are defaults - // in case the list is missing or the trace is missing or not well-formed - if (!list || list.length === 0) { - return !block; - } - if (traces.length === 0 || !traces[0]) { - return !block; - } - var tracesLength = traces.length; - for (var i = 0; i < tracesLength; i++) { - if (matchFrames(traces[i], list, block)) { - return true; - } +function _wrapPostCallback(callback) { + return function (err, data) { + if (err) { + return callback(err); } - } catch (e - /* istanbul ignore next */) { - if (block) { - settings.hostBlockList = null; + if (data.result && data.result.uuid) { + src_logger.log(['Successful api response.', ' Link: https://rollbar.com/occurrence/uuid/?uuid=' + data.result.uuid].join('')); } else { - settings.hostSafeList = null; - } - var listName = block ? 'hostBlockList' : 'hostSafeList'; - logger.error("Error while reading your configuration's " + listName + ' option. Removing custom ' + listName + '.', e); - return !block; - } - return false; -} -function messageIsIgnored(logger) { - return function (item, settings) { - var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages; - try { - messageIsIgnored = false; - ignoredMessages = settings.ignoredMessages; - if (!ignoredMessages || ignoredMessages.length === 0) { - return true; - } - messages = messagesFromItem(item); - if (messages.length === 0) { - return true; - } - len = ignoredMessages.length; - for (i = 0; i < len; i++) { - rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi'); - for (j = 0; j < messages.length; j++) { - messageIsIgnored = rIgnoredMessage.test(messages[j]); - if (messageIsIgnored) { - return false; - } - } - } - } catch (e - /* istanbul ignore next */) { - settings.ignoredMessages = null; - logger.error("Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages."); + src_logger.log('Successful api response'); } - return true; + callback(null, data.result); }; } -function messagesFromItem(item) { - var body = item.body; - var messages = []; - - // The payload schema only allows one of trace_chain, message, or trace. - // However, existing test cases are based on having both trace and message present. - // So here we preserve the ability to collect strings from any combination of these keys. - if (body.trace_chain) { - var traceChain = body.trace_chain; - for (var i = 0; i < traceChain.length; i++) { - var trace = traceChain[i]; - messages.push(get(trace, 'exception.message')); - } - } - if (body.trace) { - messages.push(get(body, 'trace.exception.message')); - } - if (body.message) { - messages.push(get(body, 'message.body')); - } - return messages; +function _currentTime() { + return Math.floor(Date.now() / 1000); } - +/* harmony default export */ const server_transport = (Transport); ;// ./src/server/rollbar.js @@ -4551,69 +4744,70 @@ rollbar_Rollbar.prototype.lambdaHandler = function (handler, timeoutHandler) { return this.syncLambdaHandler(handler, timeoutHandler); }; rollbar_Rollbar.prototype.asyncLambdaHandler = function (handler, timeoutHandler) { - var self = this; + var _this = this; var _timeoutHandler = function _timeoutHandler(event, context) { var message = 'Function timed out'; var custom = { originalEvent: event, originalRequestId: context.awsRequestId }; - self.error(message, custom); + _this.error(message, custom); }; - var shouldReportTimeouts = self.options.captureLambdaTimeouts; - return function rollbarAsyncLambdaHandler(event, context) { + var shouldReportTimeouts = this.options.captureLambdaTimeouts; + var rollbarAsyncLambdaHandler = function rollbarAsyncLambdaHandler(event, context) { return new Promise(function (resolve, reject) { - self.lambdaContext = context; + _this.lambdaContext = context; if (shouldReportTimeouts) { var timeoutCb = (timeoutHandler || _timeoutHandler).bind(null, event, context); - self.lambdaTimeoutHandle = setTimeout(timeoutCb, context.getRemainingTimeInMillis() - 1000); + _this.lambdaTimeoutHandle = setTimeout(timeoutCb, context.getRemainingTimeInMillis() - 1000); } handler(event, context).then(function (resp) { - self.wait(function () { - clearTimeout(self.lambdaTimeoutHandle); + _this.wait(function () { + clearTimeout(_this.lambdaTimeoutHandle); resolve(resp); }); }).catch(function (err) { - self.error(err); - self.wait(function () { - clearTimeout(self.lambdaTimeoutHandle); + _this.error(err); + _this.wait(function () { + clearTimeout(_this.lambdaTimeoutHandle); reject(err); }); }); }); }; + return rollbarAsyncLambdaHandler; }; rollbar_Rollbar.prototype.syncLambdaHandler = function (handler, timeoutHandler) { - var self = this; + var _this2 = this; var _timeoutHandler = function _timeoutHandler(event, context, _cb) { var message = 'Function timed out'; var custom = { originalEvent: event, originalRequestId: context.awsRequestId }; - self.error(message, custom); + _this2.error(message, custom); }; - var shouldReportTimeouts = self.options.captureLambdaTimeouts; + var shouldReportTimeouts = this.options.captureLambdaTimeouts; return function (event, context, callback) { - self.lambdaContext = context; + _this2.lambdaContext = context; if (shouldReportTimeouts) { var timeoutCb = (timeoutHandler || _timeoutHandler).bind(null, event, context, callback); - self.lambdaTimeoutHandle = setTimeout(timeoutCb, context.getRemainingTimeInMillis() - 1000); + _this2.lambdaTimeoutHandle = setTimeout(timeoutCb, context.getRemainingTimeInMillis() - 1000); } try { handler(event, context, function (err, resp) { if (err) { - self.error(err); + _this2.error(err); } - self.wait(function () { - clearTimeout(self.lambdaTimeoutHandle); + _this2.wait(function () { + clearTimeout(_this2.lambdaTimeoutHandle); callback(err, resp); }); }); } catch (err) { - self.error(err); - self.wait(function () { - clearTimeout(self.lambdaTimeoutHandle); + _this2.error(err); + _this2.wait(function () { + clearTimeout(_this2.lambdaTimeoutHandle); throw err; }); } @@ -4768,7 +4962,7 @@ rollbar_Rollbar.prototype.setupUnhandledCapture = function () { } }; rollbar_Rollbar.prototype.handleUncaughtExceptions = function () { - var exitOnUncaught = !!this.options.exitOnUncaughtException; + var exitOnUncaught = Boolean(this.options.exitOnUncaughtException); delete this.options.exitOnUncaughtException; addOrReplaceRollbarHandler('uncaughtException', function (err) { if (!this.options.captureUncaught && !this.options.handleUncaughtExceptions) { diff --git a/dist/rollbar.js b/dist/rollbar.js index 6a2c042ff..72fe464d3 100644 --- a/dist/rollbar.js +++ b/dist/rollbar.js @@ -40,69 +40,14 @@ var url_namespaceObject = {}; __webpack_require__.r(url_namespaceObject); __webpack_require__.d(url_namespaceObject, { - parse: function() { return parse; } + parse: function() { return url_parse; } }); -;// ./src/merge.js -var hasOwn = Object.prototype.hasOwnProperty; -var toStr = Object.prototype.toString; -var isPlainObject = function isPlainObject(obj) { - if (!obj || toStr.call(obj) !== '[object Object]') { - return false; - } - var hasOwnConstructor = hasOwn.call(obj, 'constructor'); - var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); - // Not own constructor property must be Object - if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - var key; - for (key in obj) { - /**/ - } - return typeof key === 'undefined' || hasOwn.call(obj, key); -}; -function merge() { - var i, - src, - copy, - clone, - name, - result = Object.create(null), - // no prototype pollution on Object - current = null, - length = arguments.length; - for (i = 0; i < length; i++) { - current = arguments[i]; - if (current == null) { - continue; - } - for (name in current) { - src = result[name]; - copy = current[name]; - if (result !== copy) { - if (copy && isPlainObject(copy)) { - clone = src && isPlainObject(src) ? src : {}; - result[name] = merge(clone, copy); - } else if (typeof copy !== 'undefined') { - result[name] = copy; - } - } - } - } - return result; -} -/* harmony default export */ var src_merge = (merge); ;// ./src/utility.js function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } - - /* * isType - Given a Javascript value and a string, returns true if the type of the value matches the * given string. @@ -169,8 +114,18 @@ function isNativeFunction(f) { * @returns true is value is an object function is an object) */ function isObject(value) { - var type = _typeof(value); - return value != null && (type == 'object' || type == 'function'); + return value != null && (_typeof(value) == 'object' || typeof value == 'function'); +} + +/* hasOwn - safe helper around Object.hasOwnProperty */ +function hasOwn(obj, prop) { + if (obj == null) { + return false; + } + if (Object.hasOwn) { + return Object.hasOwn(obj, prop); + } + return Object.prototype.hasOwnProperty.call(obj, prop); } /* isString - Checks if the argument is a string @@ -192,16 +147,6 @@ function isFiniteNumber(n) { return Number.isFinite(n); } -/* - * isDefined - a convenience function for checking if a value is not equal to undefined - * - * @param u - any value - * @returns true if u is anything other than undefined - */ -function isDefined(u) { - return !isType(u, 'undefined'); -} - /* * isIterable - convenience function for checking if a value can be iterated, essentially * whether it is an object or an array. @@ -248,7 +193,7 @@ function redact() { // from http://stackoverflow.com/a/8809472/1138191 function uuid4() { - var d = utility_now(); + var d = now(); var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = (d + Math.random() * 16) % 16 | 0; d = Math.floor(d / 16); @@ -298,8 +243,8 @@ var parseUriOptions = { parser: /(?:^|&)([^&=]*)=?([^&]*)/g }, parser: { - strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, - loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ + strict: /^(?:([^:/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\d*))?))?((((?:[^?#/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, + loose: /^(?:(?![^:@]+:[^:@/]*@)([^:/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#/]*\.[^?#/.]+(?:[?#]|$)))*\/?)?([^?#/]*))(?:\?([^#]*))?(?:#(.*))?)/ } }; function parseUri(str) { @@ -499,7 +444,11 @@ function createItem(args, logger, notifier, requestKeys, lambdaContext) { case 'undefined': break; case 'string': - message ? extraArgs.push(arg) : message = arg; + if (message) { + extraArgs.push(arg); + } else { + message = arg; + } break; case 'function': callback = wrapCallback(logger, arg); @@ -511,12 +460,20 @@ function createItem(args, logger, notifier, requestKeys, lambdaContext) { case 'domexception': case 'exception': // Firefox Exception type - err ? extraArgs.push(arg) : err = arg; + if (err) { + extraArgs.push(arg); + } else { + err = arg; + } break; case 'object': case 'array': if (arg instanceof Error || typeof DOMException !== 'undefined' && arg instanceof DOMException) { - err ? extraArgs.push(arg) : err = arg; + if (err) { + extraArgs.push(arg); + } else { + err = arg; + } break; } if (requestKeys && typ === 'object' && !request) { @@ -530,11 +487,19 @@ function createItem(args, logger, notifier, requestKeys, lambdaContext) { break; } } - custom ? extraArgs.push(arg) : custom = arg; + if (custom) { + extraArgs.push(arg); + } else { + custom = arg; + } break; default: if (arg instanceof Error || typeof DOMException !== 'undefined' && arg instanceof DOMException) { - err ? extraArgs.push(arg) : err = arg; + if (err) { + extraArgs.push(arg); + } else { + err = arg; + } break; } extraArgs.push(arg); @@ -551,7 +516,7 @@ function createItem(args, logger, notifier, requestKeys, lambdaContext) { message: message, err: err, custom: custom, - timestamp: utility_now(), + timestamp: now(), callback: callback, notifier: notifier, diagnostic: diagnostic, @@ -583,14 +548,23 @@ function addErrorContext(item, errors) { var custom = item.data.custom || {}; var contextAdded = false; try { - for (var i = 0; i < errors.length; ++i) { - if (errors[i].hasOwnProperty('rollbarContext')) { - custom = src_merge(custom, nonCircularClone(errors[i].rollbarContext)); - contextAdded = true; + var _iterator = _createForOfIteratorHelper(errors), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var error = _step.value; + if (hasOwn(error, 'rollbarContext')) { + custom = merge(custom, nonCircularClone(error.rollbarContext)); + contextAdded = true; + } } - } - // Avoid adding an empty object to the data. + // Avoid adding an empty object to the data. + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } if (contextAdded) { item.data.custom = custom; } @@ -601,10 +575,19 @@ function addErrorContext(item, errors) { var TELEMETRY_TYPES = ['log', 'network', 'dom', 'navigation', 'error', 'manual']; var TELEMETRY_LEVELS = ['critical', 'error', 'warning', 'info', 'debug']; function arrayIncludes(arr, val) { - for (var k = 0; k < arr.length; ++k) { - if (arr[k] === val) { - return true; + var _iterator2 = _createForOfIteratorHelper(arr), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var entry = _step2.value; + if (entry === val) { + return true; + } } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); } return false; } @@ -638,20 +621,20 @@ function createTelemetryEvent(args) { } function addItemAttributes(itemData, attributes) { itemData.attributes = itemData.attributes || []; - var _iterator = _createForOfIteratorHelper(attributes), - _step; + var _iterator3 = _createForOfIteratorHelper(attributes), + _step3; try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var a = _step.value; + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var a = _step3.value; if (a.value === undefined) { continue; } itemData.attributes.push(a); } } catch (err) { - _iterator.e(err); + _iterator3.e(err); } finally { - _iterator.f(); + _iterator3.f(); } } @@ -673,7 +656,7 @@ function get(obj, path) { for (var i = 0, len = keys.length; i < len; ++i) { result = result[keys[i]]; } - } catch (e) { + } catch (_e) { result = undefined; } return result; @@ -703,7 +686,7 @@ function set(obj, path, value) { } temp[keys[len - 1]] = value; obj[keys[0]] = replacement; - } catch (e) { + } catch (_e) { return; } } @@ -734,11 +717,11 @@ function formatArgsAsString(args) { } return result.join(' '); } -function utility_now() { +function now() { if (Date.now) { - return +Date.now(); + return Date.now(); } - return +new Date(); + return Number(new Date()); } function filterIp(requestData, captureIp) { if (!requestData || !requestData['user_ip'] || captureIp === true) { @@ -769,14 +752,14 @@ function filterIp(requestData, captureIp) { } else { newIp = null; } - } catch (e) { + } catch (_e) { newIp = null; } } requestData['user_ip'] = newIp; } function handleOptions(current, input, payload, logger) { - var result = src_merge(current, input, payload); + var result = merge(current, input, payload); result = updateDeprecatedOptions(result, logger); if (!input || input.overwriteScrubFields) { return result; @@ -799,2710 +782,2205 @@ function updateDeprecatedOptions(options, logger) { } return options; } +function merge() { + function isPlainObject(obj) { + if (!obj || Object.prototype.toString.call(obj) !== '[object Object]') { + return false; + } + var hasOwnConstructor = hasOwn(obj, 'constructor'); + var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn(obj.constructor.prototype, 'isPrototypeOf'); + // Not own constructor property must be Object + if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { + return false; + } -;// ./src/rateLimiter.js + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + var key; + for (key in obj) { + /**/ + } + return typeof key === 'undefined' || hasOwn(obj, key); + } + var i, + src, + copy, + clone, + name, + result = Object.create(null), + // no prototype pollution on Object + current = null, + length = arguments.length; + for (i = 0; i < length; i++) { + current = arguments[i]; + if (current === null || current === undefined) { + continue; + } + for (name in current) { + src = result[name]; + copy = current[name]; + if (result !== copy) { + if (copy && isPlainObject(copy)) { + clone = src && isPlainObject(src) ? src : {}; + result[name] = merge(clone, copy); + } else if (typeof copy !== 'undefined') { + result[name] = copy; + } + } + } + } + return result; +} +;// ./src/utility/traverse.js -/* - * RateLimiter - an object that encapsulates the logic for counting items sent to Rollbar - * - * @param options - the same options that are accepted by configureGlobal offered as a convenience - */ -function RateLimiter(options) { - this.startTime = utility_now(); - this.counter = 0; - this.perMinCounter = 0; - this.platform = null; - this.platformOptions = {}; - this.configureGlobal(options); -} -RateLimiter.globalSettings = { - startTime: utility_now(), - maxItems: undefined, - itemsPerMinute: undefined -}; +function traverse(obj, func, seen) { + var k, v, i; + var isObj = isType(obj, 'object'); + var isArray = isType(obj, 'array'); + var keys = []; + var seenIndex; -/* - * configureGlobal - set the global rate limiter options - * - * @param options - Only the following values are recognized: - * startTime: a timestamp of the form returned by (new Date()).getTime() - * maxItems: the maximum items - * itemsPerMinute: the max number of items to send in a given minute - */ -RateLimiter.prototype.configureGlobal = function (options) { - if (options.startTime !== undefined) { - RateLimiter.globalSettings.startTime = options.startTime; + // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11. + seen = seen || { + obj: [], + mapped: [] + }; + if (isObj) { + seenIndex = seen.obj.indexOf(obj); + if (isObj && seenIndex !== -1) { + // Prefer the mapped object if there is one. + return seen.mapped[seenIndex] || seen.obj[seenIndex]; + } + seen.obj.push(obj); + seenIndex = seen.obj.length - 1; } - if (options.maxItems !== undefined) { - RateLimiter.globalSettings.maxItems = options.maxItems; + if (isObj) { + for (k in obj) { + if (hasOwn(obj, k)) { + keys.push(k); + } + } + } else if (isArray) { + for (i = 0; i < obj.length; ++i) { + keys.push(i); + } } - if (options.itemsPerMinute !== undefined) { - RateLimiter.globalSettings.itemsPerMinute = options.itemsPerMinute; + var result = isObj ? {} : []; + var same = true; + for (i = 0; i < keys.length; ++i) { + k = keys[i]; + v = obj[k]; + result[k] = func(k, v, seen); + same = same && result[k] === obj[k]; } -}; - -/* - * shouldSend - determine if we should send a given item based on rate limit settings - * - * @param item - the item we are about to send - * @returns An object with the following structure: - * error: (Error|null) - * shouldSend: bool - * payload: (Object|null) - * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and - * exactly one of error or payload will be non-null. If error is non-null, the returned Error will - * describe the situation, but it means that we were already over a rate limit (either globally or - * per minute) when this item was checked. If error is null, and therefore payload is non-null, it - * means this item put us over the global rate limit and the payload should be sent to Rollbar in - * place of the passed in item. - */ -RateLimiter.prototype.shouldSend = function (item, now) { - now = now || utility_now(); - var elapsedTime = now - this.startTime; - if (elapsedTime < 0 || elapsedTime >= 60000) { - this.startTime = now; - this.perMinCounter = 0; + if (isObj && !same) { + seen.mapped[seenIndex] = result; } - var globalRateLimit = RateLimiter.globalSettings.maxItems; - var globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute; - if (checkRate(item, globalRateLimit, this.counter)) { - return shouldSendValue(this.platform, this.platformOptions, globalRateLimit + ' max items reached', false); - } else if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) { - return shouldSendValue(this.platform, this.platformOptions, globalRateLimitPerMin + ' items per minute reached', false); - } - this.counter++; - this.perMinCounter++; - var shouldSend = !checkRate(item, globalRateLimit, this.counter); - var perMinute = shouldSend; - shouldSend = shouldSend && !checkRate(item, globalRateLimitPerMin, this.perMinCounter); - return shouldSendValue(this.platform, this.platformOptions, null, shouldSend, globalRateLimit, globalRateLimitPerMin, perMinute); -}; -RateLimiter.prototype.setPlatformOptions = function (platform, options) { - this.platform = platform; - this.platformOptions = options; -}; + return !same ? result : obj; +} +/* harmony default export */ var utility_traverse = (traverse); +;// ./src/scrub.js +function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || scrub_unsupportedIterableToArray(r, e) || _nonIterableRest(); } +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } +function scrub_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = scrub_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function scrub_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return scrub_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? scrub_arrayLikeToArray(r, a) : void 0; } } +function scrub_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -/* Helpers */ -function checkRate(item, limit, counter) { - return !item.ignoreRateLimit && limit >= 1 && counter > limit; -} -function shouldSendValue(platform, options, error, shouldSend, globalRateLimit, limitPerMin, perMinute) { - var payload = null; - if (error) { - error = new Error(error); - } - if (!error && !shouldSend) { - payload = rateLimitPayload(platform, options, globalRateLimit, limitPerMin, perMinute); +function scrub(data, scrubFields, scrubPaths) { + scrubFields = scrubFields || []; + if (scrubPaths) { + var _iterator = scrub_createForOfIteratorHelper(scrubPaths), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var path = _step.value; + scrubPath(data, path); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } } - return { - error: error, - shouldSend: shouldSend, - payload: payload - }; -} -function rateLimitPayload(platform, options, globalRateLimit, limitPerMin, perMinute) { - var environment = options.environment || options.payload && options.payload.environment; - var msg; - if (perMinute) { - msg = 'item per minute limit reached, ignoring errors until timeout'; - } else { - msg = 'maxItems has been hit, ignoring errors until reset.'; + var paramRes = _getScrubFieldRegexs(scrubFields); + var queryRes = _getScrubQueryParamRegexs(scrubFields); + function redactQueryParam(dummy0, paramPart) { + return paramPart + redact(); } - var item = { - body: { - message: { - body: msg, - extra: { - maxItems: globalRateLimit, - itemsPerMinute: limitPerMin + function paramScrubber(v) { + if (isType(v, 'string')) { + var _iterator2 = scrub_createForOfIteratorHelper(queryRes), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var regex = _step2.value; + v = v.replace(regex, redactQueryParam); } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); } - }, - language: 'javascript', - environment: environment, - notifier: { - version: options.notifier && options.notifier.version || options.version } - }; - if (platform === 'browser') { - item.platform = 'browser'; - item.framework = 'browser-js'; - item.notifier.name = 'rollbar-browser-js'; - } else if (platform === 'server') { - item.framework = options.framework || 'node-js'; - item.notifier.name = options.notifier.name; - } else if (platform === 'react-native') { - item.framework = options.framework || 'react-native'; - item.notifier.name = options.notifier.name; + return v; } - return item; -} -/* harmony default export */ var rateLimiter = (RateLimiter); -;// ./src/queue.js -function queue_typeof(o) { "@babel/helpers - typeof"; return queue_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, queue_typeof(o); } -function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } + function valScrubber(k, v) { + var _iterator3 = scrub_createForOfIteratorHelper(paramRes), + _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var regex = _step3.value; + if (regex.test(k)) { + v = redact(); + break; + } + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + return v; + } + function scrubber(k, v, seen) { + var tmpV = valScrubber(k, v); + if (tmpV === v) { + if (isType(v, 'object') || isType(v, 'array')) { + return utility_traverse(v, scrubber, seen); + } + return paramScrubber(tmpV); + } else { + return tmpV; + } + } + return utility_traverse(data, scrubber); +} +function scrubPath(obj, path) { + var keys = path.split('.'); + var last = keys.length - 1; + try { + var _iterator4 = scrub_createForOfIteratorHelper(keys.entries()), + _step4; + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + var _step4$value = _slicedToArray(_step4.value, 2), + index = _step4$value[0], + key = _step4$value[1]; + if (index < last) { + obj = obj[key]; + } else { + obj[key] = redact(); + } + } + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); + } + } catch (_e) { + // Missing key is OK; + } +} +function _getScrubFieldRegexs(scrubFields) { + var ret = []; + var _iterator5 = scrub_createForOfIteratorHelper(scrubFields), + _step5; + try { + for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { + var field = _step5.value; + var pat = '^\\[?(%5[bB])?' + field + '\\[?(%5[bB])?\\]?(%5[dD])?$'; + ret.push(new RegExp(pat, 'i')); + } + } catch (err) { + _iterator5.e(err); + } finally { + _iterator5.f(); + } + return ret; +} +function _getScrubQueryParamRegexs(scrubFields) { + var ret = []; + var _iterator6 = scrub_createForOfIteratorHelper(scrubFields), + _step6; + try { + for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { + var field = _step6.value; + var pat = '\\[?(%5[bB])?' + field + '\\[?(%5[bB])?\\]?(%5[dD])?'; + ret.push(new RegExp('(' + pat + '=)([^&\\n]+)', 'igm')); + } + } catch (err) { + _iterator6.e(err); + } finally { + _iterator6.f(); + } + return ret; +} +/* harmony default export */ var src_scrub = (scrub); +;// ./src/telemetry.js +var _excluded = ["otelAttributes"]; +function telemetry_typeof(o) { "@babel/helpers - typeof"; return telemetry_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, telemetry_typeof(o); } +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } +function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == queue_typeof(i) ? i : i + ""; } -function _toPrimitive(t, r) { if ("object" != queue_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != queue_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == telemetry_typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != telemetry_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != telemetry_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +var MAX_EVENTS = 100; -/** - * Queue - an object which handles which handles a queue of items to be sent to Rollbar. - * This object handles rate limiting via a passed in rate limiter, retries based on connection - * errors, and filtering of items based on a set of configurable predicates. The communication to - * the backend is performed via a given API object. - */ -var Queue = /*#__PURE__*/function () { - /** - * @param rateLimiter - An object which conforms to the interface - * `rateLimiter.shouldSend(item) -> bool` - * @param api - An object which conforms to the interface - * `api.postItem(payload, function(err, response))` - * @param logger - An object used to log verbose messages if desired - * @param options - see `Queue.prototype.configure` - * @param replay - Optional `Replay` for coordinating session replay with error occurrences - */ - function Queue(rateLimiter, api, logger, options, replay) { - _classCallCheck(this, Queue); - this.rateLimiter = rateLimiter; - this.api = api; - this.logger = logger; - this.options = options; - this.replay = replay; - this.predicates = []; - this.pendingItems = []; - this.pendingRequests = []; - this.retryQueue = []; - this.retryHandle = null; - this.waitCallback = null; - this.waitIntervalID = null; +// Temporary workaround while solving commonjs -> esm issues in Node 18 - 20. +function fromMillis(millis) { + return [Math.trunc(millis / 1000), Math.round(millis % 1000 * 1e6)]; +} +var Telemeter = /*#__PURE__*/function () { + function Telemeter(options, tracing) { + var _this$tracing; + _classCallCheck(this, Telemeter); + this.queue = []; + this.options = merge(options); + var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS; + this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS)); + this.tracing = tracing; + this.telemetrySpan = (_this$tracing = this.tracing) === null || _this$tracing === void 0 ? void 0 : _this$tracing.startSpan('rollbar-telemetry', {}); } - - /** - * configure - updates the options this queue uses - * - * @param options - */ - return _createClass(Queue, [{ + return _createClass(Telemeter, [{ key: "configure", value: function configure(options) { - var _this$api; - (_this$api = this.api) === null || _this$api === void 0 || _this$api.configure(options); var oldOptions = this.options; - this.options = src_merge(oldOptions, options); - return this; - } - - /** - * addPredicate - adds a predicate to the end of the list of predicates for this queue - * - * @param predicate - function(item, options) -> (bool|{err: Error}) - * Returning true means that this predicate passes and the item is okay to go on the queue - * Returning false means do not add the item to the queue, but it is not an error - * Returning {err: Error} means do not add the item to the queue, and the given error explains why - * Returning {err: undefined} is equivalent to returning true but don't do that - */ - }, { - key: "addPredicate", - value: function addPredicate(predicate) { - if (isFunction(predicate)) { - this.predicates.push(predicate); + this.options = merge(oldOptions, options); + var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS; + var newMaxEvents = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS)); + var deleteCount = 0; + if (this.queue.length > newMaxEvents) { + deleteCount = this.queue.length - newMaxEvents; } - return this; + this.maxQueueSize = newMaxEvents; + this.queue.splice(0, deleteCount); } }, { - key: "addPendingItem", - value: function addPendingItem(item) { - this.pendingItems.push(item); + key: "copyEvents", + value: function copyEvents() { + var events = Array.prototype.slice.call(this.queue, 0); + if (isFunction(this.options.filterTelemetry)) { + try { + var i = events.length; + while (i--) { + if (this.options.filterTelemetry(events[i])) { + events.splice(i, 1); + } + } + } catch (_e) { + this.options.filterTelemetry = null; + } + } + + // Filter until supported in legacy telemetry + events = events.filter(function (e) { + return e.type !== 'connectivity'; + }); + + // Remove internal keys from output + events = events.map(function (_ref) { + var _otelAttributes = _ref.otelAttributes, + event = _objectWithoutProperties(_ref, _excluded); + return event; + }); + return events; } }, { - key: "removePendingItem", - value: function removePendingItem(item) { - var idx = this.pendingItems.indexOf(item); - if (idx !== -1) { - this.pendingItems.splice(idx, 1); + key: "exportTelemetrySpan", + value: function exportTelemetrySpan() { + var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + if (this.telemetrySpan) { + this.telemetrySpan.end(attributes); + this.telemetrySpan = this.tracing.startSpan('rollbar-telemetry', {}); } } - - /** - * addItem - Send an item to the Rollbar API if all of the predicates are satisfied - * - * @param item - Item instance with the payload to send to the backend - * @param callback - function(error, repsonse) which will be called with the response from the API - * in the case of a success, otherwise response will be null and error will have a value. If both - * error and response are null then the item was stopped by a predicate which did not consider this - * to be an error condition, but nonetheless did not send the item to the API. - * @param originalError - The original error before any transformations that is to be logged if any - * @param originalItem - The original item before transforms, used in pendingItems queue - */ }, { - key: "addItem", - value: function addItem(item, callback, originalError, originalItem) { - var _this = this; - if (!callback || !isFunction(callback)) { - callback = function callback() { - return; - }; - } - var data = item.data; - var predicateResult = this._applyPredicates(data); - if (predicateResult.stop) { - this.removePendingItem(originalItem); - callback(predicateResult.err); - return; - } - this._maybeLog(data, originalError); - this.removePendingItem(originalItem); - if (!this.options.transmit) { - callback(new Error('Transmit disabled')); - return; + key: "capture", + value: function capture(type, metadata, level, rollbarUUID) { + var timestamp = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null; + var otelAttributes = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null; + var e = { + level: getLevel(type, level), + type: type, + timestamp_ms: timestamp || now(), + body: metadata, + source: 'client' + }; + if (rollbarUUID) { + e.uuid = rollbarUUID; } - if (this.replay && data.body) { - item.replayId = this.replay.capture(null, data.uuid, { - type: 'occurrence', - level: item.level - }); - if (item.replayId) { - addItemAttributes(item.data, [{ - key: 'replay_id', - value: item.replayId - }]); - } + if (otelAttributes) { + e.otelAttributes = otelAttributes; } - this.pendingRequests.push(data); try { - this._makeApiRequest(data, function (err, resp, headers) { - _this._dequeuePendingRequest(data); - if (item.replayId) { - _this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers); - } - callback(err, resp); - }); - } catch (err) { - this._dequeuePendingRequest(data); - if (item.replayId) { - var _this$replay; - (_this$replay = this.replay) === null || _this$replay === void 0 || _this$replay.discard(item.replayId); + if (isFunction(this.options.filterTelemetry) && this.options.filterTelemetry(e)) { + return false; } - callback(err); + } catch (_exc) { + this.options.filterTelemetry = null; } + this.push(e); + return e; } - - /** - * wait - Stop any further errors from being added to the queue, and get called back when all items - * currently processing have finished sending to the backend. - * - * @param callback - function() called when all pending items have been sent - */ }, { - key: "wait", - value: function wait(callback) { - var _this2 = this; - if (!isFunction(callback)) { - return; - } - this.waitCallback = callback; - if (this._maybeCallWait()) { - return; - } - if (this.waitIntervalID) { - this.waitIntervalID = clearInterval(this.waitIntervalID); - } - this.waitIntervalID = setInterval(function () { - _this2._maybeCallWait(); - }, 500); + key: "captureEvent", + value: function captureEvent(type, metadata, level, rollbarUUID) { + return this.capture(type, metadata, level, rollbarUUID); } - - /** - * Sequentially applies the predicates that have been added to the queue to the - * given item with the currently configured options. - * - * @param item - An item in the queue - * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue, - * the error value should be passed up to a callbak if we are stopping. - */ }, { - key: "_applyPredicates", - value: function _applyPredicates(item) { - var p = null; - for (var i = 0, len = this.predicates.length; i < len; i++) { - p = this.predicates[i](item, this.options); - if (!p || p.err !== undefined) { - return { - stop: true, - err: p.err - }; - } + key: "captureError", + value: function captureError(err, level, rollbarUUID, timestamp) { + var _this$telemetrySpan; + var message = err.message || String(err); + var metadata = { + message: message + }; + if (err.stack) { + metadata.stack = err.stack; } - return { - stop: false, - err: null + var otelAttributes = { + message: message, + level: level, + type: 'error', + uuid: rollbarUUID }; + (_this$telemetrySpan = this.telemetrySpan) === null || _this$telemetrySpan === void 0 || _this$telemetrySpan.addEvent('rollbar-occurrence-event', otelAttributes, fromMillis(timestamp)); + return this.capture('error', metadata, level, rollbarUUID, timestamp, otelAttributes); } - - /** - * Send an item to Rollbar, callback when done, if there is an error make an - * effort to retry if we are configured to do so. - * - * @param item - an item ready to send to the backend - * @param callback - function(err, response) - */ }, { - key: "_makeApiRequest", - value: function _makeApiRequest(item, callback) { - var _this3 = this; - var rateLimitResponse = this.rateLimiter.shouldSend(item); - if (rateLimitResponse.shouldSend) { - this.api.postItem(item, function (err, resp, headers) { - if (err) { - _this3._maybeRetry(err, item, callback); - } else { - callback(err, resp, headers); - } - }); - } else if (rateLimitResponse.error) { - callback(rateLimitResponse.error); - } else { - this.api.postItem(rateLimitResponse.payload, callback); - } + key: "captureLog", + value: function captureLog(message, level, rollbarUUID, timestamp) { + var _this$telemetrySpan2; + var event = rollbarUUID ? 'rollbar-occurrence-event' : 'rollbar-log-event'; + var otelAttributes = _objectSpread({ + message: message, + level: level + }, rollbarUUID ? { + type: 'message', + uuid: rollbarUUID + } : {}); + (_this$telemetrySpan2 = this.telemetrySpan) === null || _this$telemetrySpan2 === void 0 || _this$telemetrySpan2.addEvent(event, otelAttributes, fromMillis(timestamp)); + return this.capture('log', { + message: message + }, level, rollbarUUID, timestamp, otelAttributes); } - - // These are errors basically mean there is no internet connection }, { - key: "_maybeRetry", - value: - /** - * Given the error returned by the API, decide if we should retry or just callback - * with the error. - * - * @param err - an error returned by the API transport - * @param item - the item that was trying to be sent when this error occured - * @param callback - function(err, response) - */ - function _maybeRetry(err, item, callback) { - var shouldRetry = false; - if (this.options.retryInterval) { - for (var i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) { - if (err.code === Queue.RETRIABLE_ERRORS[i]) { - shouldRetry = true; - break; - } - } - if (shouldRetry && isFiniteNumber(this.options.maxRetries)) { - item.retries = item.retries ? item.retries + 1 : 1; - if (item.retries > this.options.maxRetries) { - shouldRetry = false; - } - } + key: "captureNetwork", + value: function captureNetwork(metadata, subtype, rollbarUUID, requestData) { + var _metadata$response, _metadata$response2, _this$telemetrySpan3; + subtype = subtype || 'xhr'; + metadata.subtype = metadata.subtype || subtype; + if (requestData) { + metadata.request = requestData; } - if (shouldRetry) { - this._retryApiRequest(item, callback); - } else { - callback(err); + var level = this.levelFromStatus(metadata.status_code); + var endTimeNano = (metadata.end_time_ms || 0) * 1e6; + var otelAttributes = { + type: metadata.subtype, + method: metadata.method, + url: metadata.url, + statusCode: metadata.status_code, + 'request.headers': JSON.stringify(metadata.request_headers || {}), + 'response.headers': JSON.stringify(((_metadata$response = metadata.response) === null || _metadata$response === void 0 ? void 0 : _metadata$response.headers) || {}), + 'response.timeUnixNano': endTimeNano.toString() + }; + var requestBody = metadata.request; + var responseBody = (_metadata$response2 = metadata.response) === null || _metadata$response2 === void 0 ? void 0 : _metadata$response2.body; + if (requestBody) { + otelAttributes['request.body'] = JSON.stringify(requestBody); } - } - - /** - * Add an item and a callback to a queue and possibly start a timer to process - * that queue based on the retryInterval in the options for this queue. - * - * @param item - an item that failed to send due to an error we deem retriable - * @param callback - function(err, response) - */ - }, { - key: "_retryApiRequest", - value: function _retryApiRequest(item, callback) { - var _this4 = this; - this.retryQueue.push({ - item: item, - callback: callback - }); - if (!this.retryHandle) { - this.retryHandle = setInterval(function () { - while (_this4.retryQueue.length) { - var retryObject = _this4.retryQueue.shift(); - _this4._makeApiRequest(retryObject.item, retryObject.callback); - } - }, this.options.retryInterval); + if (responseBody) { + otelAttributes['response.body'] = JSON.stringify(responseBody); } + (_this$telemetrySpan3 = this.telemetrySpan) === null || _this$telemetrySpan3 === void 0 || _this$telemetrySpan3.addEvent('rollbar-network-event', otelAttributes, fromMillis(metadata.start_time_ms)); + return this.capture('network', metadata, level, rollbarUUID, metadata.start_time_ms, otelAttributes); } - - /** - * Removes the item from the pending request queue, this queue is used to - * enable to functionality of providing a callback that clients can pass to `wait` to be notified - * when the pending request queue has been emptied. This must be called when the API finishes - * processing this item. If a `wait` callback is configured, it is called by this function. - * - * @param item - the item previously added to the pending request queue - */ }, { - key: "_dequeuePendingRequest", - value: function _dequeuePendingRequest(item) { - var idx = this.pendingRequests.indexOf(item); - if (idx !== -1) { - this.pendingRequests.splice(idx, 1); - this._maybeCallWait(); + key: "levelFromStatus", + value: function levelFromStatus(statusCode) { + if (statusCode >= 200 && statusCode < 400) { + return 'info'; + } + if (statusCode === 0 || statusCode >= 400) { + return 'error'; } + return 'info'; } }, { - key: "_maybeLog", - value: function _maybeLog(data, originalError) { - if (this.logger && this.options.verbose) { - var message = originalError || get(data, 'body.trace.exception.message') || get(data, 'body.trace_chain.0.exception.message'); - if (message) { - this.logger.error(message); - return; - } - message = get(data, 'body.message.body'); - if (message) { - this.logger.log(message); - } + key: "captureDom", + value: function captureDom(subtype, element, value, checked, rollbarUUID) { + var metadata = { + subtype: subtype, + element: element + }; + if (value !== undefined) { + metadata.value = value; + } + if (checked !== undefined) { + metadata.checked = checked; } + return this.capture('dom', metadata, 'info', rollbarUUID); } }, { - key: "_maybeCallWait", - value: function _maybeCallWait() { - if (isFunction(this.waitCallback) && this.pendingItems.length === 0 && this.pendingRequests.length === 0) { - if (this.waitIntervalID) { - this.waitIntervalID = clearInterval(this.waitIntervalID); - } - this.waitCallback(); - return true; + key: "captureInput", + value: function captureInput(_ref2) { + var _this$telemetrySpan4; + var type = _ref2.type, + isSynthetic = _ref2.isSynthetic, + element = _ref2.element, + value = _ref2.value, + timestamp = _ref2.timestamp; + var name = 'rollbar-input-event'; + var metadata = { + type: name, + subtype: type, + element: element, + value: value + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic, + element: element, + value: value, + endTimeUnixNano: fromMillis(timestamp) + }; + var event = this._getRepeatedEvent(name, otelAttributes); + if (event) { + return this._updateRepeatedEvent(event, otelAttributes, timestamp); } - return false; + (_this$telemetrySpan4 = this.telemetrySpan) === null || _this$telemetrySpan4 === void 0 || _this$telemetrySpan4.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); } - }]); -}(); -_defineProperty(Queue, "RETRIABLE_ERRORS", ['ECONNRESET', 'ENOTFOUND', 'ESOCKETTIMEDOUT', 'ETIMEDOUT', 'ECONNREFUSED', 'EHOSTUNREACH', 'EPIPE', 'EAI_AGAIN']); -/* harmony default export */ var queue = (Queue); -;// ./src/notifier.js - - -/* - * Notifier - the internal object responsible for delegating between the client exposed API, the - * chain of transforms necessary to turn an item into something that can be sent to Rollbar, and the - * queue which handles the communcation with the Rollbar API servers. - * - * @param queue - an object that conforms to the interface: addItem(item, callback) - * @param options - an object representing the options to be set for this notifier, this should have - * any defaults already set by the caller - */ -function Notifier(queue, options) { - this.queue = queue; - this.options = options; - this.transforms = []; - this.diagnostic = {}; -} - -/* - * configure - updates the options for this notifier with the passed in object - * - * @param options - an object which gets merged with the current options set on this notifier - * @returns this - */ -Notifier.prototype.configure = function (options) { - this.queue && this.queue.configure(options); - var oldOptions = this.options; - this.options = src_merge(oldOptions, options); - return this; -}; - -/* - * addTransform - adds a transform onto the end of the queue of transforms for this notifier - * - * @param transform - a function which takes three arguments: - * * item: An Object representing the data to eventually be sent to Rollbar - * * options: The current value of the options for this notifier - * * callback: function(err: (Null|Error), item: (Null|Object)) the transform must call this - * callback with a null value for error if it wants the processing chain to continue, otherwise - * with an error to terminate the processing. The item should be the updated item after this - * transform is finished modifying it. - */ -Notifier.prototype.addTransform = function (transform) { - if (isFunction(transform)) { - this.transforms.push(transform); - } - return this; -}; - -/* - * log - the internal log function which applies the configured transforms and then pushes onto the - * queue to be sent to the backend. - * - * @param item - An object with the following structure: - * message [String] - An optional string to be sent to rollbar - * error [Error] - An optional error - * - * @param callback - A function of type function(err, resp) which will be called with exactly one - * null argument and one non-null argument. The callback will be called once, either during the - * transform stage if an error occurs inside a transform, or in response to the communication with - * the backend. The second argument will be the response from the backend in case of success. - */ -Notifier.prototype.log = function (item, callback) { - if (!callback || !isFunction(callback)) { - callback = function callback() {}; - } - if (!this.options.enabled) { - return callback(new Error('Rollbar is not enabled')); - } - this.queue.addPendingItem(item); - var originalError = item.err; - this._applyTransforms(item, function (err, i) { - if (err) { - this.queue.removePendingItem(item); - return callback(err, null); - } - this.queue.addItem(i, callback, originalError, item); - }.bind(this)); -}; - -/* Internal */ - -/* - * _applyTransforms - Applies the transforms that have been added to this notifier sequentially. See - * `addTransform` for more information. - * - * @param item - An item to be transformed - * @param callback - A function of type function(err, item) which will be called with a non-null - * error and a null item in the case of a transform failure, or a null error and non-null item after - * all transforms have been applied. - */ -Notifier.prototype._applyTransforms = function (item, callback) { - var transformIndex = -1; - var transformsLength = this.transforms.length; - var transforms = this.transforms; - var options = this.options; - var _cb = function cb(err, i) { - if (err) { - callback(err, null); - return; - } - transformIndex++; - if (transformIndex === transformsLength) { - callback(null, i); - return; - } - transforms[transformIndex](i, options, _cb); - }; - _cb(null, item); -}; -/* harmony default export */ var notifier = (Notifier); -;// ./src/rollbar.js - - - - - -/* - * Rollbar - the interface to Rollbar - * - * @param options - * @param api - * @param logger - */ -function Rollbar(options, api, logger, telemeter, tracing, replay, platform) { - this.options = src_merge(options); - this.logger = logger; - Rollbar.rateLimiter.configureGlobal(this.options); - Rollbar.rateLimiter.setPlatformOptions(platform, this.options); - this.api = api; - this.queue = new queue(Rollbar.rateLimiter, api, logger, this.options, replay); - this.tracing = tracing; - - // Legacy OpenTracing support - // This must happen before the Notifier is created - var tracer = this.options.tracer || null; - if (validateTracer(tracer)) { - this.tracer = tracer; - // set to a string for api response serialization - this.options.tracer = 'opentracing-tracer-enabled'; - this.options._configuredOptions.tracer = 'opentracing-tracer-enabled'; - } else { - this.tracer = null; - } - this.notifier = new notifier(this.queue, this.options); - this.telemeter = telemeter; - setStackTraceLimit(options); - this.lastError = null; - this.lastErrorHash = 'none'; -} -var defaultOptions = { - maxItems: 0, - itemsPerMinute: 60 -}; -Rollbar.rateLimiter = new rateLimiter(defaultOptions); -Rollbar.prototype.global = function (options) { - Rollbar.rateLimiter.configureGlobal(options); - return this; -}; -Rollbar.prototype.configure = function (options, payloadData) { - var oldOptions = this.options; - var payload = {}; - if (payloadData) { - payload = { - payload: payloadData - }; - } - this.options = src_merge(oldOptions, options, payload); - - // Legacy OpenTracing support - // This must happen before the Notifier is configured - var tracer = this.options.tracer || null; - if (validateTracer(tracer)) { - this.tracer = tracer; - // set to a string for api response serialization - this.options.tracer = 'opentracing-tracer-enabled'; - this.options._configuredOptions.tracer = 'opentracing-tracer-enabled'; - } else { - this.tracer = null; - } - this.notifier && this.notifier.configure(this.options); - this.telemeter && this.telemeter.configure(this.options); - setStackTraceLimit(options); - this.global(this.options); - if (validateTracer(options.tracer)) { - this.tracer = options.tracer; - } - return this; -}; -Rollbar.prototype.log = function (item) { - var level = this._defaultLogLevel(); - return this._log(level, item); -}; -Rollbar.prototype.debug = function (item) { - this._log('debug', item); -}; -Rollbar.prototype.info = function (item) { - this._log('info', item); -}; -Rollbar.prototype.warn = function (item) { - this._log('warning', item); -}; -Rollbar.prototype.warning = function (item) { - this._log('warning', item); -}; -Rollbar.prototype.error = function (item) { - this._log('error', item); -}; -Rollbar.prototype.critical = function (item) { - this._log('critical', item); -}; -Rollbar.prototype.wait = function (callback) { - this.queue.wait(callback); -}; -Rollbar.prototype.captureEvent = function (type, metadata, level) { - return this.telemeter && this.telemeter.captureEvent(type, metadata, level); -}; -Rollbar.prototype.captureDomContentLoaded = function (ts) { - return this.telemeter && this.telemeter.captureDomContentLoaded(ts); -}; -Rollbar.prototype.captureLoad = function (ts) { - return this.telemeter && this.telemeter.captureLoad(ts); -}; -Rollbar.prototype.buildJsonPayload = function (item) { - return this.api.buildJsonPayload(item); -}; -Rollbar.prototype.sendJsonPayload = function (jsonPayload) { - this.api.postJsonPayload(jsonPayload); -}; - -/* Internal */ - -Rollbar.prototype._log = function (defaultLevel, item) { - var callback; - if (item.callback) { - callback = item.callback; - delete item.callback; - } - if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) { - if (callback) { - var error = new Error('ignored identical item'); - error.item = item; - callback(error); + }, { + key: "captureClick", + value: function captureClick(_ref3) { + var _this$telemetrySpan5; + var type = _ref3.type, + isSynthetic = _ref3.isSynthetic, + element = _ref3.element, + timestamp = _ref3.timestamp; + var name = 'rollbar-click-event'; + var metadata = { + type: name, + subtype: type, + element: element + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic, + element: element, + endTimeUnixNano: fromMillis(timestamp) + }; + var event = this._getRepeatedEvent(name, otelAttributes); + if (event) { + return this._updateRepeatedEvent(event, otelAttributes, timestamp); + } + (_this$telemetrySpan5 = this.telemetrySpan) === null || _this$telemetrySpan5 === void 0 || _this$telemetrySpan5.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); } - return; - } - try { - item.level = item.level || defaultLevel; - this._addTracingAttributes(item); - - // Legacy OpenTracing support - this._addTracingInfo(item); - var telemeter = this.telemeter; - if (telemeter) { - telemeter._captureRollbarItem(item); - item.telemetryEvents = telemeter.copyEvents() || []; + }, { + key: "_getRepeatedEvent", + value: function _getRepeatedEvent(name, attributes) { + var lastEvent = this._lastEvent(this.queue); + if (lastEvent && lastEvent.body.type === name && lastEvent.otelAttributes.target === attributes.target) { + return lastEvent; + } } - this.notifier.log(item, callback); - } catch (e) { - if (callback) { - callback(e); + }, { + key: "_updateRepeatedEvent", + value: function _updateRepeatedEvent(event, attributes, timestamp) { + var duration = Math.max(timestamp - event.timestamp_ms, 1); + event.body.value = attributes.value; + event.otelAttributes.value = attributes.value; + event.otelAttributes.height = attributes.height; + event.otelAttributes.width = attributes.width; + event.otelAttributes.textZoomRatio = attributes.textZoomRatio; + event.otelAttributes['endTimeUnixNano'] = fromMillis(timestamp); + event.otelAttributes['durationUnixNano'] = fromMillis(duration); + event.otelAttributes.count = (event.otelAttributes.count || 1) + 1; + event.otelAttributes.rate = event.otelAttributes.count / (duration / 1000); } - this.logger.error(e); - } -}; -Rollbar.prototype._addTracingAttributes = function (item) { - var _this$tracing, _this$tracing2; - var span = (_this$tracing = this.tracing) === null || _this$tracing === void 0 ? void 0 : _this$tracing.getSpan(); - var attributes = [{ - key: 'session_id', - value: (_this$tracing2 = this.tracing) === null || _this$tracing2 === void 0 ? void 0 : _this$tracing2.sessionId }, { - key: 'span_id', - value: span === null || span === void 0 ? void 0 : span.spanId + key: "_lastEvent", + value: function _lastEvent(list) { + return list.length > 0 ? list[list.length - 1] : null; + } }, { - key: 'trace_id', - value: span === null || span === void 0 ? void 0 : span.traceId - }]; - addItemAttributes(item.data, attributes); - span === null || span === void 0 || span.addEvent('rollbar.occurrence', [{ - key: 'rollbar.occurrence.uuid', - value: item.uuid - }]); -}; -Rollbar.prototype._defaultLogLevel = function () { - return this.options.logLevel || 'debug'; -}; -Rollbar.prototype._sameAsLastError = function (item) { - if (!item._isUncaught) { - return false; - } - var itemHash = generateItemHash(item); - if (this.lastErrorHash === itemHash) { - return true; - } - this.lastError = item.err; - this.lastErrorHash = itemHash; - return false; -}; -Rollbar.prototype._addTracingInfo = function (item) { - // Tracer validation occurs in the constructor - // or in the Rollbar.prototype.configure methods - if (this.tracer) { - // add rollbar occurrence uuid to span - var span = this.tracer.scope().active(); - if (validateSpan(span)) { - span.setTag('rollbar.error_uuid', item.uuid); - span.setTag('rollbar.has_error', true); - span.setTag('error', true); - span.setTag('rollbar.item_url', "https://rollbar.com/item/uuid/?uuid=".concat(item.uuid)); - span.setTag('rollbar.occurrence_url', "https://rollbar.com/occurrence/uuid/?uuid=".concat(item.uuid)); + key: "captureFocus", + value: function captureFocus(_ref4) { + var _this$telemetrySpan6; + var type = _ref4.type, + isSynthetic = _ref4.isSynthetic, + element = _ref4.element, + timestamp = _ref4.timestamp; + var name = 'rollbar-focus-event'; + var metadata = { + type: name, + subtype: type, + element: element + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic, + element: element + }; + (_this$telemetrySpan6 = this.telemetrySpan) === null || _this$telemetrySpan6 === void 0 || _this$telemetrySpan6.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + } + }, { + key: "captureResize", + value: function captureResize(_ref5) { + var _this$telemetrySpan7; + var type = _ref5.type, + isSynthetic = _ref5.isSynthetic, + width = _ref5.width, + height = _ref5.height, + textZoomRatio = _ref5.textZoomRatio, + timestamp = _ref5.timestamp; + var name = 'rollbar-resize-event'; + var metadata = { + type: name, + subtype: type, + width: width, + height: height, + textZoomRatio: textZoomRatio + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic, + width: width, + height: height, + textZoomRatio: textZoomRatio + }; + var event = this._getRepeatedEvent(name, otelAttributes); + if (event) { + return this._updateRepeatedEvent(event, otelAttributes, timestamp); + } + (_this$telemetrySpan7 = this.telemetrySpan) === null || _this$telemetrySpan7 === void 0 || _this$telemetrySpan7.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + } + }, { + key: "captureDragDrop", + value: function captureDragDrop(_ref6) { + var _this$telemetrySpan8; + var type = _ref6.type, + isSynthetic = _ref6.isSynthetic, + element = _ref6.element, + dropEffect = _ref6.dropEffect, + effectAllowed = _ref6.effectAllowed, + kinds = _ref6.kinds, + mediaTypes = _ref6.mediaTypes, + timestamp = _ref6.timestamp; + var name = 'rollbar-dragdrop-event'; + var metadata = { + type: name, + subtype: type, + isSynthetic: isSynthetic + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic + }; + if (type === 'dragstart') { + metadata = _objectSpread(_objectSpread({}, metadata), {}, { + element: element, + dropEffect: dropEffect, + effectAllowed: effectAllowed + }); + otelAttributes = _objectSpread(_objectSpread({}, otelAttributes), {}, { + element: element, + dropEffect: dropEffect, + effectAllowed: effectAllowed + }); + } + if (type === 'drop') { + metadata = _objectSpread(_objectSpread({}, metadata), {}, { + element: element, + dropEffect: dropEffect, + effectAllowed: effectAllowed, + kinds: kinds, + mediaTypes: mediaTypes + }); + otelAttributes = _objectSpread(_objectSpread({}, otelAttributes), {}, { + element: element, + dropEffect: dropEffect, + effectAllowed: effectAllowed, + kinds: kinds, + mediaTypes: mediaTypes + }); + } + (_this$telemetrySpan8 = this.telemetrySpan) === null || _this$telemetrySpan8 === void 0 || _this$telemetrySpan8.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + } + }, { + key: "captureNavigation", + value: function captureNavigation(from, to, rollbarUUID, timestamp) { + var _this$telemetrySpan9; + (_this$telemetrySpan9 = this.telemetrySpan) === null || _this$telemetrySpan9 === void 0 || _this$telemetrySpan9.addEvent('rollbar-navigation-event', { + 'previous.url.full': from, + 'url.full': to + }, fromMillis(timestamp)); + return this.capture('navigation', { + from: from, + to: to + }, 'info', rollbarUUID, timestamp); + } + }, { + key: "captureDomContentLoaded", + value: function captureDomContentLoaded(ts) { + return this.capture('navigation', { + subtype: 'DOMContentLoaded' + }, 'info', undefined, ts && ts.getTime()); + /** + * If we decide to make this a dom event instead, then use the line below: + return this.capture('dom', {subtype: 'DOMContentLoaded'}, 'info', undefined, ts && ts.getTime()); + */ + } + }, { + key: "captureLoad", + value: function captureLoad(ts) { + return this.capture('navigation', { + subtype: 'load' + }, 'info', undefined, ts && ts.getTime()); + /** + * If we decide to make this a dom event instead, then use the line below: + return this.capture('dom', {subtype: 'load'}, 'info', undefined, ts && ts.getTime()); + */ + } + }, { + key: "captureConnectivityChange", + value: function captureConnectivityChange(_ref7) { + var _this$telemetrySpan0; + var type = _ref7.type, + isSynthetic = _ref7.isSynthetic, + timestamp = _ref7.timestamp; + var name = 'rollbar-connectivity-event'; + var metadata = { + type: name, + subtype: type + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic + }; + (_this$telemetrySpan0 = this.telemetrySpan) === null || _this$telemetrySpan0 === void 0 || _this$telemetrySpan0.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('connectivity', metadata, 'info', null, timestamp, otelAttributes); + } - // add span ID & trace ID to occurrence - var opentracingSpanId = span.context().toSpanId(); - var opentracingTraceId = span.context().toTraceId(); + // Only intended to be used internally by the notifier + }, { + key: "_captureRollbarItem", + value: function _captureRollbarItem(item) { + if (!this.options.includeItemsInTelemetry) { + return; + } + if (item.err) { + return this.captureError(item.err, item.level, item.uuid, item.timestamp); + } + if (item.message) { + return this.captureLog(item.message, item.level, item.uuid, item.timestamp); + } if (item.custom) { - item.custom.opentracing_span_id = opentracingSpanId; - item.custom.opentracing_trace_id = opentracingTraceId; - } else { - item.custom = { - opentracing_span_id: opentracingSpanId, - opentracing_trace_id: opentracingTraceId - }; + return this.capture('log', item.custom, item.level, item.uuid, item.timestamp); } } + }, { + key: "push", + value: function push(e) { + this.queue.push(e); + if (this.queue.length > this.maxQueueSize) { + this.queue.shift(); + } + } + }]); +}(); +function getLevel(type, level) { + if (level) { + return level; } -}; -function generateItemHash(item) { - var message = item.message || ''; - var stack = (item.err || {}).stack || String(item.err); - return message + '::' + stack; -} - -// Node.js, Chrome, Safari, and some other browsers support this property -// which globally sets the number of stack frames returned in an Error object. -// If a browser can't use it, no harm done. -function setStackTraceLimit(options) { - if (options.stackTraceLimit) { - Error.stackTraceLimit = options.stackTraceLimit; - } + var defaultLevel = { + error: 'error', + manual: 'info' + }; + return defaultLevel[type] || 'info'; } - -/** - * Validate the Tracer object provided to the Client - * is valid for our Opentracing use case. - * @param {opentracer.Tracer} tracer - */ -function validateTracer(tracer) { - if (!tracer) { - return false; +/* harmony default export */ var telemetry = (Telemeter); +;// ./src/tracing/context.js +function context_typeof(o) { "@babel/helpers - typeof"; return context_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, context_typeof(o); } +function context_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function context_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, context_toPropertyKey(o.key), o); } } +function context_createClass(e, r, t) { return r && context_defineProperties(e.prototype, r), t && context_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function context_toPropertyKey(t) { var i = context_toPrimitive(t, "string"); return "symbol" == context_typeof(i) ? i : i + ""; } +function context_toPrimitive(t, r) { if ("object" != context_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != context_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +var Context = /*#__PURE__*/function () { + function Context(parentContext) { + context_classCallCheck(this, Context); + this._currentContext = parentContext ? new Map(parentContext) : new Map(); } - if (!tracer.scope || typeof tracer.scope !== 'function') { - return false; - } - var scope = tracer.scope(); - if (!scope || !scope.active || typeof scope.active !== 'function') { - return false; - } - return true; -} + return context_createClass(Context, [{ + key: "getValue", + value: function getValue(key) { + return this._currentContext.get(key); + } + }, { + key: "setValue", + value: function setValue(key, value) { + var context = new Context(this._currentContext); + context._currentContext.set(key, value); + return context; + } + }, { + key: "deleteValue", + value: function deleteValue(key) { + var context = new Context(self._currentContext); + context._currentContext.delete(key); + return context; + } + }]); +}(); +var ROOT_CONTEXT = new Context(); +;// ./src/tracing/contextManager.js +function contextManager_typeof(o) { "@babel/helpers - typeof"; return contextManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, contextManager_typeof(o); } +function contextManager_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function contextManager_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, contextManager_toPropertyKey(o.key), o); } } +function contextManager_createClass(e, r, t) { return r && contextManager_defineProperties(e.prototype, r), t && contextManager_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function contextManager_toPropertyKey(t) { var i = contextManager_toPrimitive(t, "string"); return "symbol" == contextManager_typeof(i) ? i : i + ""; } +function contextManager_toPrimitive(t, r) { if ("object" != contextManager_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != contextManager_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -/** - * Validate the Span object provided - * @param {opentracer.Span} span - */ -function validateSpan(span) { - if (!span || !span.context || typeof span.context !== 'function') { - return false; - } - var spanContext = span.context(); - if (!spanContext || !spanContext.toSpanId || !spanContext.toTraceId || typeof spanContext.toSpanId !== 'function' || typeof spanContext.toTraceId !== 'function') { - return false; +var ContextManager = /*#__PURE__*/function () { + function ContextManager() { + contextManager_classCallCheck(this, ContextManager); + this.currentContext = ROOT_CONTEXT; } - return true; -} -/* harmony default export */ var src_rollbar = (Rollbar); -;// ./src/apiUtility.js - -function buildPayload(data) { - if (!isType(data.context, 'string')) { - var contextResult = stringify(data.context); - if (contextResult.error) { - data.context = "Error: could not serialize 'context'"; - } else { - data.context = contextResult.value || ''; + return contextManager_createClass(ContextManager, [{ + key: "active", + value: function active() { + return this.currentContext; } - if (data.context.length > 255) { - data.context = data.context.substr(0, 255); + }, { + key: "enterContext", + value: function enterContext(context) { + var previousContext = this.currentContext; + this.currentContext = context || ROOT_CONTEXT; + return previousContext; } - } - return { - data: data - }; -} -function getTransportFromOptions(options, defaults, url) { - var hostname = defaults.hostname; - var protocol = defaults.protocol; - var port = defaults.port; - var path = defaults.path; - var search = defaults.search; - var timeout = options.timeout; - var transport = detectTransport(options); - var proxy = options.proxy; - if (options.endpoint) { - var opts = url.parse(options.endpoint); - hostname = opts.hostname; - protocol = opts.protocol; - port = opts.port; - path = opts.pathname; - search = opts.search; - } - return { - timeout: timeout, - hostname: hostname, - protocol: protocol, - port: port, - path: path, - search: search, - proxy: proxy, - transport: transport - }; -} -function detectTransport(options) { - var gWindow = typeof window != 'undefined' && window || typeof self != 'undefined' && self; - var transport = options.defaultTransport || 'xhr'; - if (typeof gWindow.fetch === 'undefined') transport = 'xhr'; - if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch'; - return transport; -} -function apiUtility_transportOptions(transport, method) { - var protocol = transport.protocol || 'https:'; - var port = transport.port || (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined); - var hostname = transport.hostname; - var path = transport.path; - var timeout = transport.timeout; - var transportAPI = transport.transport; - if (transport.search) { - path = path + transport.search; - } - if (transport.proxy) { - path = protocol + '//' + hostname + path; - hostname = transport.proxy.host || transport.proxy.hostname; - port = transport.proxy.port; - protocol = transport.proxy.protocol || protocol; - } - return { - timeout: timeout, - protocol: protocol, - hostname: hostname, - path: path, - port: port, - method: method, - transport: transportAPI - }; -} -function appendPathToPath(base, path) { - var baseTrailingSlash = /\/$/.test(base); - var pathBeginningSlash = /^\//.test(path); - if (baseTrailingSlash && pathBeginningSlash) { - path = path.substring(1); - } else if (!baseTrailingSlash && !pathBeginningSlash) { - path = '/' + path; - } - return base + path; + }, { + key: "exitContext", + value: function exitContext(context) { + this.currentContext = context; + return this.currentContext; + } + }, { + key: "with", + value: function _with(context, fn, thisArg) { + var previousContext = this.enterContext(context); + try { + for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { + args[_key - 3] = arguments[_key]; + } + return fn.call.apply(fn, [thisArg].concat(args)); + } finally { + this.exitContext(previousContext); + } + } + }]); +}(); +function createContextKey(key) { + // Use Symbol for OpenTelemetry compatibility. + return Symbol.for(key); } - -;// ./src/api.js -function api_typeof(o) { "@babel/helpers - typeof"; return api_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, api_typeof(o); } -function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { api_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function api_defineProperty(e, r, t) { return (r = api_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function api_toPropertyKey(t) { var i = api_toPrimitive(t, "string"); return "symbol" == api_typeof(i) ? i : i + ""; } -function api_toPrimitive(t, r) { if ("object" != api_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != api_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == api_typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(api_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } -function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } -function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } - - -var api_defaultOptions = { - hostname: 'api.rollbar.com', - path: '/api/1/item/', - search: null, - version: '1', - protocol: 'https:', - port: 443 -}; -var OTLPDefaultOptions = { - hostname: 'api.rollbar.com', - path: '/api/1/session/', - search: null, - version: '1', - protocol: 'https:', - port: 443 -}; +;// ./src/tracing/hrtime.js +/** + * @module hrtime + * + * @description Methods for handling OpenTelemetry hrtime. + */ /** - * Api is an object that encapsulates methods of communicating with - * the Rollbar API. It is a standard interface with some parts implemented - * differently for server or browser contexts. It is an object that should - * be instantiated when used so it can contain non-global options that may - * be different for another instance of RollbarApi. + * Convert a duration in milliseconds to an OpenTelemetry hrtime tuple. * - * @param options { - * accessToken: the accessToken to use for posting items to rollbar - * endpoint: an alternative endpoint to send errors to - * must be a valid, fully qualified URL. - * The default is: https://api.rollbar.com/api/1/item - * proxy: if you wish to proxy requests provide an object - * with the following keys: - * host or hostname (required): foo.example.com - * port (optional): 123 - * protocol (optional): https - * } + * @param {number} millis - The duration in milliseconds. + * @returns {[number, number]} An array where the first element is seconds + * and the second is nanoseconds. */ -function Api(options, transport, urllib, truncation) { - this.options = options; - this.transport = transport; - this.url = urllib; - this.truncation = truncation; - this.accessToken = options.accessToken; - this.transportOptions = _getTransport(options, urllib); - this.OTLPTransportOptions = _getOTLPTransport(options, urllib); +function hrtime_fromMillis(millis) { + return [Math.trunc(millis / 1000), Math.round(millis % 1000 * 1e6)]; } /** - * Wraps transport.post in a Promise to support async/await + * Convert an OpenTelemetry hrtime tuple back to a duration in milliseconds. * - * @param {Object} options - Options for the API request - * @param {string} options.accessToken - The access token for authentication - * @param {Object} options.transportOptions - Options for the transport - * @param {Object} options.payload - The data payload to send - * @returns {Promise} A promise that resolves with the response or rejects with an error - * @private + * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds]. + * @returns {number} The total duration in milliseconds. */ -Api.prototype._postPromise = function (_ref) { - var accessToken = _ref.accessToken, - options = _ref.options, - payload = _ref.payload, - headers = _ref.headers; - var self = this; - return new Promise(function (resolve, reject) { - self.transport.post({ - accessToken: accessToken, - options: options, - payload: payload, - headers: headers, - callback: function callback(err, resp) { - return err ? reject(err) : resolve(resp); - } - }); - }); -}; +function toMillis(hrtime) { + return hrtime[0] * 1e3 + Math.round(hrtime[1] / 1e6); +} /** + * Convert an OpenTelemetry hrtime tuple back to a duration in nanoseconds. * - * @param data - * @param callback + * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds]. + * @returns {number} The total duration in nanoseconds. */ -Api.prototype.postItem = function (data, callback) { - var options = apiUtility_transportOptions(this.transportOptions, 'POST'); - var payload = buildPayload(data); - var self = this; - - // ensure the network request is scheduled after the current tick. - setTimeout(function () { - self.transport.post({ - accessToken: self.accessToken, - options: options, - payload: payload, - callback: callback - }); - }, 0); -}; +function toNanos(hrtime) { + return hrtime[0] * 1e9 + hrtime[1]; +} /** - * Posts spans to the Rollbar API using the session endpoint + * Adds two OpenTelemetry hrtime tuples. + * + * @param {[number, number]} a - The first hrtime tuple [s, ns]. + * @param {[number, number]} b - The second hrtime tuple [s, ns]. + * @returns {[number, number]} Summed hrtime tuple, normalized. * - * @param {Array} payload - The spans to send - * @returns {Promise} A promise that resolves with the API response */ -Api.prototype.postSpans = /*#__PURE__*/function () { - var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(payload) { - var headers, - options, - _args = arguments; - return _regeneratorRuntime().wrap(function _callee$(_context) { - while (1) switch (_context.prev = _context.next) { - case 0: - headers = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; - options = apiUtility_transportOptions(this.OTLPTransportOptions, 'POST'); - _context.next = 4; - return this._postPromise({ - accessToken: this.accessToken, - options: options, - payload: payload, - headers: headers - }); - case 4: - return _context.abrupt("return", _context.sent); - case 5: - case "end": - return _context.stop(); - } - }, _callee, this); - })); - return function (_x) { - return _ref2.apply(this, arguments); - }; -}(); +function add(a, b) { + return [a[0] + b[0] + Math.trunc((a[1] + b[1]) / 1e9), (a[1] + b[1]) % 1e9]; +} /** + * Get the current high-resolution time as an OpenTelemetry hrtime tuple. + * + * @param {boolean} usePerformance=false - If true, uses the Performance API (timeOrigin + now()). * - * @param data - * @param callback + * @returns {[number, number]} The current hrtime tuple [s, ns]. */ -Api.prototype.buildJsonPayload = function (data, callback) { - var payload = buildPayload(data); - var stringifyResult; - if (this.truncation) { - stringifyResult = this.truncation.truncate(payload); - } else { - stringifyResult = stringify(payload); - } - if (stringifyResult.error) { - if (callback) { - callback(stringifyResult.error); - } - return null; +function hrtime_now() { + var usePerformance = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + if (usePerformance) { + return add(hrtime_fromMillis(performance.timeOrigin), hrtime_fromMillis(performance.now())); } - return stringifyResult.value; -}; + return hrtime_fromMillis(Date.now()); +} /** + * Check if a value is a valid OpenTelemetry hrtime tuple. + * + * An hrtime tuple is an Array of exactly two numbers: + * [seconds, nanoseconds] + * + * @param {*} value – anything to test + * @returns {boolean} true if `value` is a [number, number] array of length 2 * - * @param jsonPayload - * @param callback + * @example + * isHrTime([ 1, 500 ]); // true + * isHrTime([ 0, 1e9 ]); // true + * isHrTime([ '1', 500 ]); // false + * isHrTime({ 0: 1, 1: 500 }); // false */ -Api.prototype.postJsonPayload = function (jsonPayload, callback) { - var transportOptions = apiUtility_transportOptions(this.transportOptions, 'POST'); - this.transport.postJsonPayload(this.accessToken, transportOptions, jsonPayload, callback); -}; -Api.prototype.configure = function (options) { - var oldOptions = this.oldOptions; - this.options = src_merge(oldOptions, options); - this.transportOptions = _getTransport(this.options, this.url); - this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url); - if (this.options.accessToken !== undefined) { - this.accessToken = this.options.accessToken; - } - return this; -}; -function _getTransport(options, url) { - return getTransportFromOptions(options, api_defaultOptions, url); -} -function _getOTLPTransport(options, url) { - var _options$tracing; - options = _objectSpread(_objectSpread({}, options), {}, { - endpoint: (_options$tracing = options.tracing) === null || _options$tracing === void 0 ? void 0 : _options$tracing.endpoint - }); - return getTransportFromOptions(options, OTLPDefaultOptions, url); +function isHrTime(value) { + return Array.isArray(value) && value.length === 2 && typeof value[0] === 'number' && typeof value[1] === 'number'; } -/* harmony default export */ var src_api = (Api); -;// ./src/logger.js -var _log = function log() {}; -var levels = { - debug: 0, - info: 1, - warn: 2, - error: 3, - disable: 4 -}; -var logger = { - error: function error() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - return _log('error', args); - }, - warn: function warn() { - for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - return _log('warn', args); - }, - info: function info() { - for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } - return _log('info', args); - }, - debug: function debug() { - for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; - } - return _log('debug', args); - }, - log: function log() { - for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { - args[_key5] = arguments[_key5]; - } - return _log('info', args); - }, - init: function init(_ref) { - var logLevel = _ref.logLevel; - _log = function _log(level, args) { - if (levels[level] < levels[logLevel]) return; - args.unshift('Rollbar:'); - console[level].apply(console, args); - }; - } -}; -/* harmony default export */ var src_logger = (logger); -;// ./src/browser/globalSetup.js -function captureUncaughtExceptions(window, handler, shim) { - if (!window) { - return; + +/** + * Methods for handling hrtime. OpenTelemetry uses the [seconds, nanoseconds] + * format for hrtime in the `ReadableSpan` interface. + * + * @example + * import hrtime from '@tracing/hrtime.js'; + * + * hrtime.fromMillis(1000); + * hrtime.toMillis([0, 1000]); + * hrtime.add([0, 0], [0, 1000]); + * hrtime.now(); + * hrtime.isHrTime([0, 1000]); + */ +/* harmony default export */ var hrtime = ({ + fromMillis: hrtime_fromMillis, + toMillis: toMillis, + toNanos: toNanos, + add: add, + now: hrtime_now, + isHrTime: isHrTime +}); +;// ./src/tracing/exporter.js +function exporter_typeof(o) { "@babel/helpers - typeof"; return exporter_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, exporter_typeof(o); } +function exporter_slicedToArray(r, e) { return exporter_arrayWithHoles(r) || exporter_iterableToArrayLimit(r, e) || exporter_unsupportedIterableToArray(r, e) || exporter_nonIterableRest(); } +function exporter_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function exporter_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function exporter_arrayWithHoles(r) { if (Array.isArray(r)) return r; } +function exporter_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = exporter_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || exporter_unsupportedIterableToArray(r) || _nonIterableSpread(); } +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function exporter_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return exporter_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? exporter_arrayLikeToArray(r, a) : void 0; } } +function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } +function _arrayWithoutHoles(r) { if (Array.isArray(r)) return exporter_arrayLikeToArray(r); } +function exporter_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function exporter_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function exporter_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, exporter_toPropertyKey(o.key), o); } } +function exporter_createClass(e, r, t) { return r && exporter_defineProperties(e.prototype, r), t && exporter_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function exporter_toPropertyKey(t) { var i = exporter_toPrimitive(t, "string"); return "symbol" == exporter_typeof(i) ? i : i + ""; } +function exporter_toPrimitive(t, r) { if ("object" != exporter_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != exporter_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + + +/** + * SpanExporter is responsible for exporting ReadableSpan objects + * and transforming them into the OTLP-compatible format. + */ +var SpanExporter = /*#__PURE__*/function () { + function SpanExporter(api) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + exporter_classCallCheck(this, SpanExporter); + this.api = api; + this.options = options; } - var oldOnError; - if (typeof handler._rollbarOldOnError === 'function') { - oldOnError = handler._rollbarOldOnError; - } else if (window.onerror) { - oldOnError = window.onerror; - while (oldOnError._rollbarOldOnError) { - oldOnError = oldOnError._rollbarOldOnError; + + /** + * Export spans to the span export queue + * + * @param {Array} spans - Array of ReadableSpan objects to export + * @param {Function} _resultCallback - Optional callback (not used) + */ + return exporter_createClass(SpanExporter, [{ + key: "export", + value: function _export(spans, _resultCallback) { + spanExportQueue.push.apply(spanExportQueue, _toConsumableArray(spans)); } - handler._rollbarOldOnError = oldOnError; - } - handler.handleAnonymousErrors(); - var fn = function fn() { - var args = Array.prototype.slice.call(arguments, 0); - _rollbarWindowOnError(window, handler, oldOnError, args); - }; - if (shim) { - fn._rollbarOldOnError = oldOnError; - } - window.onerror = fn; -} -function _rollbarWindowOnError(window, r, old, args) { - if (window._rollbarWrappedError) { - if (!args[4]) { - args[4] = window._rollbarWrappedError; + + /** + * Transforms an array of ReadableSpan objects into the OTLP format payload + * compatible with the Rollbar API. This follows the OpenTelemetry protocol + * specification for traces. + * + * @returns {Object} OTLP format payload for API transmission + */ + }, { + key: "toPayload", + value: function toPayload() { + var _this = this; + var spans = spanExportQueue.slice(); + spanExportQueue.length = 0; + if (!spans || !spans.length) { + return { + resourceSpans: [] + }; + } + var resource = spans[0] && spans[0].resource || {}; + var scopeMap = new Map(); + var _iterator = exporter_createForOfIteratorHelper(spans), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var span = _step.value; + var scopeKey = span.instrumentationScope ? "".concat(span.instrumentationScope.name, ":").concat(span.instrumentationScope.version) : 'default:1.0.0'; + if (!scopeMap.has(scopeKey)) { + scopeMap.set(scopeKey, { + scope: span.instrumentationScope || { + name: 'default', + version: '1.0.0', + attributes: [] + }, + spans: [] + }); + } + scopeMap.get(scopeKey).spans.push(this._transformSpan(span)); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return { + resourceSpans: [{ + resource: this._transformResource(resource), + scopeSpans: Array.from(scopeMap.values()).map(function (scopeData) { + return { + scope: _this._transformInstrumentationScope(scopeData.scope), + spans: scopeData.spans + }; + }) + }] + }; } - if (!args[5]) { - args[5] = window._rollbarWrappedError._rollbarContext; + + /** + * Sends the given payload to the Rollbar API. + * + * @param {String} payload - Serialized OTLP format payload + * @param {Object} headers - Optional request headers + * @returns {Promise} Promise that resolves when the request completes + */ + }, { + key: "post", + value: function post(payload) { + var headers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return this.api.postSpans(payload, headers); } - window._rollbarWrappedError = null; - } - var ret = r.handleUncaughtException.apply(r, args); - if (old) { - old.apply(window, args); - } - // Let other chained onerror handlers above run before setting this. - // If an error is thrown and caught within a chained onerror handler, - // Error.prepareStackTrace() will see that one before the one we want. - if (ret === 'anonymous') { - r.anonymousErrorsPending += 1; // See Rollbar.prototype.handleAnonymousErrors() - } -} -function captureUnhandledRejections(window, handler, shim) { - if (!window) { - return; - } - if (typeof window._rollbarURH === 'function' && window._rollbarURH.belongsToShim) { - window.removeEventListener('unhandledrejection', window._rollbarURH); - } - var rejectionHandler = function rejectionHandler(evt) { - var reason, promise, detail; - try { - reason = evt.reason; - } catch (e) { - reason = undefined; - } - try { - promise = evt.promise; - } catch (e) { - promise = '[unhandledrejection] error getting `promise` from event'; + /** + * Transforms a ReadableSpan into the OTLP Span format + * + * @private + * @param {Object} span - ReadableSpan object to transform + * @returns {Object} OTLP Span format + */ + }, { + key: "_transformSpan", + value: function _transformSpan(span) { + var _this2 = this; + var transformAttributes = function transformAttributes(attributes) { + return Object.entries(attributes || {}).map(function (_ref) { + var _ref2 = exporter_slicedToArray(_ref, 2), + key = _ref2[0], + value = _ref2[1]; + return { + key: key, + value: _this2._transformAnyValue(value) + }; + }); + }; + var transformEvents = function transformEvents(events) { + return (events || []).map(function (event) { + return { + timeUnixNano: hrtime.toNanos(event.time), + name: event.name, + attributes: transformAttributes(event.attributes) + }; + }); + }; + return { + traceId: span.spanContext.traceId, + spanId: span.spanContext.spanId, + parentSpanId: span.parentSpanId || '', + name: span.name, + kind: span.kind || 1, + // INTERNAL by default + startTimeUnixNano: hrtime.toNanos(span.startTime), + endTimeUnixNano: hrtime.toNanos(span.endTime), + attributes: transformAttributes(span.attributes), + events: transformEvents(span.events) + }; } - try { - detail = evt.detail; - if (!reason && detail) { - reason = detail.reason; - promise = detail.promise; - } - } catch (e) { - // Ignore + + /** + * Transforms a resource object into OTLP Resource format + * + * @private + * @param {Object} resource - Resource information + * @returns {Object} OTLP Resource format + */ + }, { + key: "_transformResource", + value: function _transformResource(resource) { + var _this3 = this; + var attributes = resource.attributes || {}; + var keyValues = Object.entries(attributes).map(function (_ref3) { + var _ref4 = exporter_slicedToArray(_ref3, 2), + key = _ref4[0], + value = _ref4[1]; + return { + key: key, + value: _this3._transformAnyValue(value) + }; + }); + return { + attributes: keyValues + }; } - if (!reason) { - reason = '[unhandledrejection] error getting `reason` from event'; + + /** + * Transforms an instrumentation scope into OTLP InstrumentationScope format + * + * @private + * @param {Object} scope - Instrumentation scope information + * @returns {Object} OTLP InstrumentationScope format + */ + }, { + key: "_transformInstrumentationScope", + value: function _transformInstrumentationScope(scope) { + var _this4 = this; + return { + name: scope.name || '', + version: scope.version || '', + attributes: (scope.attributes || []).map(function (attr) { + return { + key: attr.key, + value: _this4._transformAnyValue(attr.value) + }; + }) + }; } - if (handler && handler.handleUnhandledRejection) { - handler.handleUnhandledRejection(reason, promise); + + /** + * Transforms a JavaScript value into an OTLP AnyValue + * + * @private + * @param {any} value - Value to transform + * @returns {Object} OTLP AnyValue format + */ + }, { + key: "_transformAnyValue", + value: function _transformAnyValue(value) { + var _this5 = this; + if (value === null || value === undefined) { + return { + stringValue: '' + }; + } + var type = exporter_typeof(value); + if (type === 'string') { + return { + stringValue: value + }; + } else if (type === 'number') { + if (Number.isInteger(value)) { + return { + intValue: value.toString() + }; + } else { + return { + doubleValue: value + }; + } + } else if (type === 'boolean') { + return { + boolValue: value + }; + } else if (Array.isArray(value)) { + return { + arrayValue: { + values: value.map(function (v) { + return _this5._transformAnyValue(v); + }) + } + }; + } else if (type === 'object') { + return { + kvlistValue: { + values: Object.entries(value).map(function (_ref5) { + var _ref6 = exporter_slicedToArray(_ref5, 2), + k = _ref6[0], + v = _ref6[1]; + return { + key: k, + value: _this5._transformAnyValue(v) + }; + }) + } + }; + } + return { + stringValue: String(value) + }; } - }; - rejectionHandler.belongsToShim = shim; - window._rollbarURH = rejectionHandler; - window.addEventListener('unhandledrejection', rejectionHandler); + }]); +}(); +var spanExportQueue = []; +;// ./src/tracing/id.js +/** + * Generate a random hexadecimal ID of specified byte length + * + * @param {number} bytes - Number of bytes for the ID (default: 16) + * @returns {string} - Hexadecimal string representation + */ +function gen() { + var bytes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16; + var randomBytes = new Uint8Array(bytes); + crypto.getRandomValues(randomBytes); + var randHex = Array.from(randomBytes, function (byte) { + return byte.toString(16).padStart(2, '0'); + }).join(''); + return randHex; } -;// ./src/browser/transport/fetch.js -function fetch_typeof(o) { "@babel/helpers - typeof"; return fetch_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, fetch_typeof(o); } -function fetch_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function fetch_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? fetch_ownKeys(Object(t), !0).forEach(function (r) { fetch_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : fetch_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function fetch_defineProperty(e, r, t) { return (r = fetch_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function fetch_toPropertyKey(t) { var i = fetch_toPrimitive(t, "string"); return "symbol" == fetch_typeof(i) ? i : i + ""; } -function fetch_toPrimitive(t, r) { if ("object" != fetch_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != fetch_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - +/** + * Tracing id generation utils + * + * @example + * import id from './id.js'; + * + * const spanId = id.gen(8); // => "a1b2c3d4e5f6..." + */ +/* harmony default export */ var id = ({ + gen: gen +}); +;// ./src/tracing/session.js +function session_typeof(o) { "@babel/helpers - typeof"; return session_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, session_typeof(o); } +function session_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function session_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? session_ownKeys(Object(t), !0).forEach(function (r) { session_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : session_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function session_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function session_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, session_toPropertyKey(o.key), o); } } +function session_createClass(e, r, t) { return r && session_defineProperties(e.prototype, r), t && session_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function session_defineProperty(e, r, t) { return (r = session_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function session_toPropertyKey(t) { var i = session_toPrimitive(t, "string"); return "symbol" == session_typeof(i) ? i : i + ""; } +function session_toPrimitive(t, r) { if ("object" != session_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != session_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -function makeFetchRequest(_ref) { - var accessToken = _ref.accessToken, - url = _ref.url, - method = _ref.method, - payload = _ref.payload, - headers = _ref.headers, - callback = _ref.callback, - timeout = _ref.timeout; - var controller; - var timeoutId; - if (isFiniteNumber(timeout)) { - controller = new AbortController(); - timeoutId = setTimeout(function () { - controller.abort(); - }, timeout); +var SESSION_KEY = 'RollbarSession'; +var Session = /*#__PURE__*/function () { + function Session(tracing, options) { + session_classCallCheck(this, Session); + session_defineProperty(this, "_attributes", void 0); + this.options = options; + this.tracing = tracing; + this.window = tracing.window; + this.session = null; + this._attributes = {}; } - headers = fetch_objectSpread({ - 'Content-Type': 'application/json', - 'X-Rollbar-Access-Token': accessToken, - signal: controller && controller.signal - }, headers); - fetch(url, { - method: method, - headers: headers, - body: payload - }).then(function (response) { - if (timeoutId) clearTimeout(timeoutId); - var respHeaders = response.headers; - var isItemRoute = url.endsWith('/api/1/item/'); - var headers = isItemRoute ? { - 'Rollbar-Replay-Enabled': respHeaders.get('Rollbar-Replay-Enabled'), - 'Rollbar-Replay-RateLimit-Remaining': respHeaders.get('Rollbar-Replay-RateLimit-Remaining'), - 'Rollbar-Replay-RateLimit-Reset': respHeaders.get('Rollbar-Replay-RateLimit-Reset') - } : {}; - var json = response.json(); - callback(null, json, headers); - }).catch(function (error) { - src_logger.error(error.message); - callback(error); - }); -} -/* harmony default export */ var transport_fetch = (makeFetchRequest); -;// ./src/browser/transport/xhr.js -function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || xhr_unsupportedIterableToArray(r, e) || _nonIterableRest(); } -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function xhr_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return xhr_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? xhr_arrayLikeToArray(r, a) : void 0; } } -function xhr_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } -/*global XDomainRequest*/ - - - -function makeXhrRequest(_ref) { - var accessToken = _ref.accessToken, - url = _ref.url, - method = _ref.method, - payload = _ref.payload, - headers = _ref.headers, - callback = _ref.callback, - requestFactory = _ref.requestFactory, - timeout = _ref.timeout; - var request; - if (requestFactory) { - request = requestFactory(); - } else { - request = _createXMLHTTPObject(); - } - if (!request) { - // Give up, no way to send requests - return callback(new Error('No way to send a request')); - } - try { - try { - var _onreadystatechange = function onreadystatechange() { - try { - if (_onreadystatechange && request.readyState === 4) { - _onreadystatechange = undefined; - var parseResponse = jsonParse(request.responseText); - if (_isSuccess(request)) { - var isItemRoute = url.endsWith('/api/1/item/'); - var _headers = isItemRoute ? { - 'Rollbar-Replay-Enabled': request.getResponseHeader('Rollbar-Replay-Enabled'), - 'Rollbar-Replay-RateLimit-Remaining': request.getResponseHeader('Rollbar-Replay-RateLimit-Remaining'), - 'Rollbar-Replay-RateLimit-Reset': request.getResponseHeader('Rollbar-Replay-RateLimit-Reset') - } : {}; - callback(parseResponse.error, parseResponse.value, _headers); - return; - } else if (_isNormalFailure(request)) { - if (request.status === 403) { - // likely caused by using a server access token - var message = parseResponse.value && parseResponse.value.message; - src_logger.error(message); - } - // return valid http status codes - callback(new Error(String(request.status))); - } else { - // IE will return a status 12000+ on some sort of connection failure, - // so we return a blank error - // http://msdn.microsoft.com/en-us/library/aa383770%28VS.85%29.aspx - var msg = 'XHR response had no status code (likely connection failure)'; - callback(_newRetriableError(msg)); - } - } - } catch (ex) { - //jquery source mentions firefox may error out while accessing the - //request members if there is a network error - //https://github.com/jquery/jquery/blob/a938d7b1282fc0e5c52502c225ae8f0cef219f0a/src/ajax/xhr.js#L111 - var exc; - if (ex && ex.stack) { - exc = ex; - } else { - exc = new Error(ex); - } - callback(exc); - } - }; - request.open(method, url, true); - if (request.setRequestHeader) { - request.setRequestHeader('Content-Type', 'application/json'); - request.setRequestHeader('X-Rollbar-Access-Token', accessToken); - for (var _i = 0, _Object$entries = Object.entries(headers !== null && headers !== void 0 ? headers : {}); _i < _Object$entries.length; _i++) { - var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2), - h = _Object$entries$_i[0], - v = _Object$entries$_i[1]; - request.setRequestHeader(h, v); - } - } - if (isFiniteNumber(timeout)) { - request.timeout = timeout; + return session_createClass(Session, [{ + key: "init", + value: function init() { + var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + if (this.session) { + return this; } - request.onreadystatechange = _onreadystatechange; - request.send(payload); - } catch (e1) { - // Sending using the normal xmlhttprequest object didn't work, try XDomainRequest - if (typeof XDomainRequest !== 'undefined') { - // Assume we are in a really old browser which has a bunch of limitations: - // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx - - // Extreme paranoia: if we have XDomainRequest then we have a window, but just in case - if (!window || !window.location) { - return callback(new Error('No window available during request, unknown environment')); - } - - // If the current page is http, try and send over http - if (window.location.href.substring(0, 5) === 'http:' && url.substring(0, 5) === 'https') { - url = 'http' + url.substring(5); + this.getSession() || this.createSession(); + this.initSessionAttributes(attrs); + return this; + } + }, { + key: "getSession", + value: function getSession() { + try { + var serializedSession = this.window.sessionStorage.getItem(SESSION_KEY); + if (!serializedSession) { + return null; } - var xdomainrequest = new XDomainRequest(); - xdomainrequest.onprogress = function () {}; - xdomainrequest.ontimeout = function () { - var msg = 'Request timed out'; - var code = 'ETIMEDOUT'; - callback(_newRetriableError(msg, code)); - }; - xdomainrequest.onerror = function () { - callback(new Error('Error during request')); - }; - xdomainrequest.onload = function () { - var parseResponse = jsonParse(xdomainrequest.responseText); - callback(parseResponse.error, parseResponse.value); - }; - xdomainrequest.open(method, url, true); - xdomainrequest.send(payload); - } else { - callback(new Error('Cannot find a method to transport a request')); + this.session = JSON.parse(serializedSession); + } catch (_unused) { + return null; } + return this; } - } catch (e2) { - callback(e2); - } -} -function _createXMLHTTPObject() { - /* global ActiveXObject:false */ - - var factories = [function () { - return new XMLHttpRequest(); - }, function () { - return new ActiveXObject('Msxml2.XMLHTTP'); - }, function () { - return new ActiveXObject('Msxml3.XMLHTTP'); - }, function () { - return new ActiveXObject('Microsoft.XMLHTTP'); - }]; - var xmlhttp; - var i; - var numFactories = factories.length; - for (i = 0; i < numFactories; i++) { - try { - xmlhttp = factories[i](); - break; - } catch (e) { - // pass + }, { + key: "createSession", + value: function createSession() { + this.session = { + id: id.gen(), + createdAt: Date.now() + }; + return this.setSession(this.session); } - } - return xmlhttp; -} -function _isSuccess(r) { - return r && r.status && r.status === 200; -} -function _isNormalFailure(r) { - return r && isType(r.status, 'number') && r.status >= 400 && r.status < 600; -} -function _newRetriableError(message, code) { - var err = new Error(message); - err.code = code || 'ENOTFOUND'; - return err; -} -/* harmony default export */ var xhr = (makeXhrRequest); -;// ./src/browser/transport.js - - - - -/* - * accessToken may be embedded in payload but that should not - * be assumed - * - * options: { - * hostname - * protocol - * path - * port - * method - * transport ('xhr' | 'fetch') - * } - * - * params is an object containing key/value pairs. These - * will be appended to the path as 'key=value&key=value' - * - * payload is an unserialized object - */ -function Transport(truncation) { - this.truncation = truncation; -} -Transport.prototype.get = function (accessToken, options, params, callback, requestFactory) { - if (!callback || !isFunction(callback)) { - callback = function callback() {}; - } - addParamsAndAccessTokenToPath(accessToken, options, params); - var method = 'GET'; - var url = formatUrl(options); - this._makeZoneRequest({ - accessToken: accessToken, - url: url, - method: method, - callback: callback, - requestFactory: requestFactory, - timeout: options.timeout, - transport: options.transport - }); -}; -Transport.prototype.post = function (_ref) { - var _this = this; - var accessToken = _ref.accessToken, - options = _ref.options, - payload = _ref.payload, - headers = _ref.headers, - callback = _ref.callback, - requestFactory = _ref.requestFactory; - return function (payload) { - if (!callback || !isFunction(callback)) { - callback = function callback() {}; + }, { + key: "setSession", + value: function setSession(session) { + var sessionString = JSON.stringify(session); + try { + this.window.sessionStorage.setItem(SESSION_KEY, sessionString); + } catch (_unused2) { + return null; + } + return this; } - if (!payload) { - return callback(new Error('Cannot send empty request')); + }, { + key: "attributes", + get: function get() { + return this._attributes; } - var stringifyResult; - // Check payload.body to ensure only items are truncated. - if (_this.truncation && payload.body) { - stringifyResult = _this.truncation.truncate(payload); - } else { - stringifyResult = stringify(payload); - } - if (stringifyResult.error) { - return callback(stringifyResult.error); - } - var payload = stringifyResult.value; - var method = 'POST'; - var url = formatUrl(options); - _this._makeZoneRequest({ - accessToken: accessToken, - url: url, - method: method, - payload: payload, - headers: headers, - callback: callback, - requestFactory: requestFactory, - timeout: options.timeout, - transport: options.transport - }); - }(payload); -}; -Transport.prototype.postJsonPayload = function (accessToken, options, payload, callback, requestFactory) { - if (!callback || !isFunction(callback)) { - callback = function callback() {}; - } - var method = 'POST'; - var url = formatUrl(options); - this._makeZoneRequest({ - accessToken: accessToken, - url: url, - method: method, - payload: payload, - callback: callback, - requestFactory: requestFactory, - timeout: options.timeout, - transport: options.transport - }); + }, { + key: "setAttributes", + value: function setAttributes(attributes) { + this._attributes = session_objectSpread(session_objectSpread({}, this._attributes), attributes); + return this; + } + }, { + key: "setUser", + value: function setUser(user) { + this.setAttributes({ + 'user.id': user === null || user === void 0 ? void 0 : user.id, + 'user.email': user === null || user === void 0 ? void 0 : user.email, + 'user.name': (user === null || user === void 0 ? void 0 : user.name) || (user === null || user === void 0 ? void 0 : user.username) + }); + return this; + } + }, { + key: "initSessionAttributes", + value: function initSessionAttributes(attrs) { + var _navigator$userAgentD, _navigator$userAgentD2, _navigator$userAgentD3; + this.setAttributes(session_objectSpread({ + 'session.id': this.session.id, + 'browser.brands': (_navigator$userAgentD = navigator.userAgentData) === null || _navigator$userAgentD === void 0 ? void 0 : _navigator$userAgentD.brands, + 'browser.language': navigator.language, + 'browser.mobile': (_navigator$userAgentD2 = navigator.userAgentData) === null || _navigator$userAgentD2 === void 0 ? void 0 : _navigator$userAgentD2.mobile, + 'browser.platform': (_navigator$userAgentD3 = navigator.userAgentData) === null || _navigator$userAgentD3 === void 0 ? void 0 : _navigator$userAgentD3.platform, + 'client.address': '$remote_ip', + // updated at the API + 'rollbar.notifier.framework': 'browser-js', + 'user_agent.original': navigator.userAgent + }, attrs)); + return this; + } + }]); +}(); +;// ./src/logger.js +var _log = function log() {}; +var levels = { + debug: 0, + info: 1, + warn: 2, + error: 3, + disable: 4 }; +var logger = { + error: function error() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + return _log('error', args); + }, + warn: function warn() { + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + return _log('warn', args); + }, + info: function info() { + for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; + } + return _log('info', args); + }, + debug: function debug() { + for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { + args[_key4] = arguments[_key4]; + } + return _log('debug', args); + }, + log: function log() { + for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { + args[_key5] = arguments[_key5]; + } + return _log('info', args); + }, + init: function init(_ref) { + var logLevel = _ref.logLevel; + _log = function _log(level, args) { + if (levels[level] < levels[logLevel]) return; + args.unshift('Rollbar:'); -// Wraps `_makeRequest` if zone.js is being used, ensuring that Rollbar -// API calls are not intercepted by any child forked zones. -// This is equivalent to `NgZone.runOutsideAngular` in Angular. -Transport.prototype._makeZoneRequest = function () { - var gWindow = typeof window != 'undefined' && window || typeof self != 'undefined' && self; - // Whenever zone.js is loaded and `Zone` is exposed globally, access - // the root zone to ensure that requests are always made within it. - // This approach is framework-agnostic, regardless of which - // framework zone.js is used with. - var rootZone = gWindow && gWindow.Zone && gWindow.Zone.root; - var args = Array.prototype.slice.call(arguments); - if (rootZone) { - var self = this; - rootZone.run(function () { - self._makeRequest.apply(undefined, args); - }); - } else { - this._makeRequest.apply(undefined, args); - } -}; -Transport.prototype._makeRequest = function (params) { - var payload = params.payload, - callback = params.callback, - transport = params.transport; - if (typeof RollbarProxy !== 'undefined') { - return _proxyRequest(payload, callback); - } - if (transport === 'fetch') { - transport_fetch(params); - } else { - xhr(params); + // eslint-disable-next-line no-console + console[level].apply(console, args); + }; } }; +/* harmony default export */ var src_logger = (logger); +;// ./src/tracing/spanProcessor.js +function spanProcessor_typeof(o) { "@babel/helpers - typeof"; return spanProcessor_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, spanProcessor_typeof(o); } +function spanProcessor_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = spanProcessor_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function spanProcessor_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return spanProcessor_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? spanProcessor_arrayLikeToArray(r, a) : void 0; } } +function spanProcessor_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function spanProcessor_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function spanProcessor_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, spanProcessor_toPropertyKey(o.key), o); } } +function spanProcessor_createClass(e, r, t) { return r && spanProcessor_defineProperties(e.prototype, r), t && spanProcessor_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function spanProcessor_toPropertyKey(t) { var i = spanProcessor_toPrimitive(t, "string"); return "symbol" == spanProcessor_typeof(i) ? i : i + ""; } +function spanProcessor_toPrimitive(t, r) { if ("object" != spanProcessor_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != spanProcessor_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -/* global RollbarProxy */ -function _proxyRequest(json, callback) { - var rollbarProxy = new RollbarProxy(); - rollbarProxy.sendJsonPayload(json, function (_msg) { - /* do nothing */ - }, function (err) { - callback(new Error(err)); - }); -} -/* harmony default export */ var browser_transport = (Transport); -;// ./src/browser/url.js -// See https://nodejs.org/docs/latest/api/url.html -function parse(url) { - var result = { - protocol: null, - auth: null, - host: null, - path: null, - hash: null, - href: url, - hostname: null, - port: null, - pathname: null, - search: null, - query: null - }; - var i, last; - i = url.indexOf('//'); - if (i !== -1) { - result.protocol = url.substring(0, i); - last = i + 2; - } else { - last = 0; - } - i = url.indexOf('@', last); - if (i !== -1) { - result.auth = url.substring(last, i); - last = i + 1; +var SpanProcessor = /*#__PURE__*/function () { + function SpanProcessor(exporter) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + spanProcessor_classCallCheck(this, SpanProcessor); + this.exporter = exporter; + this.options = options; + this.pendingSpans = new Map(); + this.transforms = [this.userTransform.bind(this)]; } - i = url.indexOf('/', last); - if (i === -1) { - i = url.indexOf('?', last); - if (i === -1) { - i = url.indexOf('#', last); - if (i === -1) { - result.host = url.substring(last); - } else { - result.host = url.substring(last, i); - result.hash = url.substring(i); - } - result.hostname = result.host.split(':')[0]; - result.port = result.host.split(':')[1]; - if (result.port) { - result.port = parseInt(result.port, 10); - } - return result; - } else { - result.host = url.substring(last, i); - result.hostname = result.host.split(':')[0]; - result.port = result.host.split(':')[1]; - if (result.port) { - result.port = parseInt(result.port, 10); - } - last = i; + return spanProcessor_createClass(SpanProcessor, [{ + key: "addTransform", + value: function addTransform(transformFn) { + this.transforms.unshift(transformFn); } - } else { - result.host = url.substring(last, i); - result.hostname = result.host.split(':')[0]; - result.port = result.host.split(':')[1]; - if (result.port) { - result.port = parseInt(result.port, 10); + }, { + key: "userTransform", + value: function userTransform(span) { + if (this.options.transformSpan) { + this.options.transformSpan({ + span: span + }); + } } - last = i; - } - i = url.indexOf('#', last); - if (i === -1) { - result.path = url.substring(last); - } else { - result.path = url.substring(last, i); - result.hash = url.substring(i); - } - if (result.path) { - var pathParts = result.path.split('?'); - result.pathname = pathParts[0]; - result.query = pathParts[1]; - result.search = result.query ? '?' + result.query : null; - } - return result; -} + }, { + key: "applyTransforms", + value: function applyTransforms(span) { + var _iterator = spanProcessor_createForOfIteratorHelper(this.transforms), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var transform = _step.value; + try { + transform(span); + } catch (e) { + src_logger.error('Error running span transform callback', e); + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + } + }, { + key: "onStart", + value: function onStart(span, _parentContext) { + this.pendingSpans.set(span.span.spanContext.spanId, span); + } + }, { + key: "onEnd", + value: function onEnd(span) { + this.applyTransforms(span.span); + this.exporter.export([span.export()]); + this.pendingSpans.delete(span.span.spanContext.spanId); + } + }]); +}(); +;// ./src/tracing/span.js +function span_typeof(o) { "@babel/helpers - typeof"; return span_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, span_typeof(o); } +function span_slicedToArray(r, e) { return span_arrayWithHoles(r) || span_iterableToArrayLimit(r, e) || span_unsupportedIterableToArray(r, e) || span_nonIterableRest(); } +function span_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function span_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return span_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? span_arrayLikeToArray(r, a) : void 0; } } +function span_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function span_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function span_arrayWithHoles(r) { if (Array.isArray(r)) return r; } +function span_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function span_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, span_toPropertyKey(o.key), o); } } +function span_createClass(e, r, t) { return r && span_defineProperties(e.prototype, r), t && span_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function span_toPropertyKey(t) { var i = span_toPrimitive(t, "string"); return "symbol" == span_typeof(i) ? i : i + ""; } +function span_toPrimitive(t, r) { if ("object" != span_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != span_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -;// ./node_modules/error-stack-parser-es/dist/lite.mjs -var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\S+:\d+/; -var CHROME_IE_STACK_REGEXP = /^\s*at .*(\S+:\d+|\(native\))/m; -var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\[native code\])?$/; -function lite_parse(error, options) { - if (typeof error.stacktrace !== "undefined" || typeof error["opera#sourceloc"] !== "undefined") return parseOpera(error, options);else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) return parseV8OrIE(error, options);else if (error.stack) return parseFFOrSafari(error, options);else if (options !== null && options !== void 0 && options.allowEmpty) return [];else throw new Error("Cannot parse given Error object"); -} -function parseStack(stackString, options) { - if (stackString.match(CHROME_IE_STACK_REGEXP)) return parseV8OrIeString(stackString, options);else return parseFFOrSafariString(stackString, options); -} -function extractLocation(urlLike) { - if (!urlLike.includes(":")) return [urlLike, undefined, undefined]; - var regExp = /(.+?)(?::(\d+))?(?::(\d+))?$/; - var parts = regExp.exec(urlLike.replace(/[()]/g, "")); - return [parts[1], parts[2] || undefined, parts[3] || undefined]; -} -function applySlice(lines, options) { - if (options && options.slice != null) { - if (Array.isArray(options.slice)) return lines.slice(options.slice[0], options.slice[1]); - return lines.slice(0, options.slice); - } - return lines; -} -function parseV8OrIE(error, options) { - return parseV8OrIeString(error.stack, options); -} -function parseV8OrIeString(stack, options) { - var filtered = applySlice(stack.split("\n").filter(function (line) { - return !!line.match(CHROME_IE_STACK_REGEXP); - }), options); - return filtered.map(function (line) { - if (line.includes("(eval ")) { - line = line.replace(/eval code/g, "eval").replace(/(\(eval at [^()]*)|(,.*$)/g, ""); +var Span = /*#__PURE__*/function () { + function Span(options) { + span_classCallCheck(this, Span); + this.usePerformance = options.usePerformance; + this.initReadableSpan(options); + this.spanProcessor = options.spanProcessor; + this.spanProcessor.onStart(this, options.context); + if (options.attributes) { + this.setAttributes(options.attributes); } - var sanitizedLine = line.replace(/^\s+/, "").replace(/\(eval code/g, "(").replace(/^.*?\s+/, ""); - var location = sanitizedLine.match(/ (\(.+\)$)/); - sanitizedLine = location ? sanitizedLine.replace(location[0], "") : sanitizedLine; - var locationParts = extractLocation(location ? location[1] : sanitizedLine); - var functionName = location && sanitizedLine || undefined; - var fileName = ["eval", ""].includes(locationParts[0]) ? undefined : locationParts[0]; - return { - function: functionName, - file: fileName, - line: locationParts[1] ? +locationParts[1] : undefined, - col: locationParts[2] ? +locationParts[2] : undefined, - raw: line - }; - }); -} -function parseFFOrSafari(error, options) { - return parseFFOrSafariString(error.stack, options); -} -function parseFFOrSafariString(stack, options) { - var filtered = applySlice(stack.split("\n").filter(function (line) { - return !line.match(SAFARI_NATIVE_CODE_REGEXP); - }), options); - return filtered.map(function (line) { - if (line.includes(" > eval")) line = line.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g, ":$1"); - if (!line.includes("@") && !line.includes(":")) { - return { - function: line - }; - } else { - var functionNameRegex = /(([^\n\r"\u2028\u2029]*".[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*(?:@[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*)*(?:[\n\r\u2028\u2029][^@]*)?)?[^@]*)@/; - var matches = line.match(functionNameRegex); - var functionName = matches && matches[1] ? matches[1] : undefined; - var locationParts = extractLocation(line.replace(functionNameRegex, "")); - return { - function: functionName, - file: locationParts[0], - line: locationParts[1] ? +locationParts[1] : undefined, - col: locationParts[2] ? +locationParts[2] : undefined, - raw: line + return this; + } + return span_createClass(Span, [{ + key: "initReadableSpan", + value: function initReadableSpan(options) { + var _options$session; + this.span = { + name: options.name, + kind: options.kind, + spanContext: options.spanContext, + parentSpanId: options.parentSpanId, + startTime: options.startTime || hrtime.now(options.usePerformance), + endTime: [0, 0], + status: { + code: 0, + message: '' + }, + attributes: { + 'session.id': (_options$session = options.session) === null || _options$session === void 0 ? void 0 : _options$session.id + }, + links: [], + events: [], + duration: 0, + ended: false, + resource: options.resource, + instrumentationScope: options.scope, + droppedAttributesCount: 0, + droppedEventsCount: 0, + droppedLinksCount: 0 }; } - }); -} -function parseOpera(e, options) { - if (!e.stacktrace || e.message.includes("\n") && e.message.split("\n").length > e.stacktrace.split("\n").length) return parseOpera9(e);else if (!e.stack) return parseOpera10(e);else return parseOpera11(e, options); -} -function parseOpera9(e, options) { - var lineRE = /Line (\d+).*script (?:in )?(\S+)/i; - var lines = e.message.split("\n"); - var result = []; - for (var i = 2, len = lines.length; i < len; i += 2) { - var match = lineRE.exec(lines[i]); - if (match) { - result.push({ - file: match[2], - line: +match[1], - raw: lines[i] - }); + }, { + key: "spanContext", + value: function spanContext() { + return this.span.spanContext; } - } - return applySlice(result, options); -} -function parseOpera10(e, options) { - var lineRE = /Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i; - var lines = e.stacktrace.split("\n"); - var result = []; - for (var i = 0, len = lines.length; i < len; i += 2) { - var match = lineRE.exec(lines[i]); - if (match) { - result.push({ - function: match[3] || undefined, - file: match[2], - line: match[1] ? +match[1] : undefined, - raw: lines[i] + }, { + key: "spanId", + get: function get() { + return this.span.spanContext.spanId; + } + }, { + key: "traceId", + get: function get() { + return this.span.spanContext.traceId; + } + }, { + key: "setAttribute", + value: function setAttribute(key, value) { + if (value == null || this.span.ended) return this; + if (key.length === 0) return this; + this.span.attributes[key] = value; + return this; + } + }, { + key: "setAttributes", + value: function setAttributes(attributes) { + for (var _i = 0, _Object$entries = Object.entries(attributes); _i < _Object$entries.length; _i++) { + var _Object$entries$_i = span_slicedToArray(_Object$entries[_i], 2), + k = _Object$entries$_i[0], + v = _Object$entries$_i[1]; + this.setAttribute(k, v); + } + return this; + } + }, { + key: "addEvent", + value: function addEvent(name) { + var attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var time = arguments.length > 2 ? arguments[2] : undefined; + if (this.span.ended) return this; + this.span.events.push({ + name: name, + attributes: attributes, + time: time || hrtime.now(), + droppedAttributesCount: 0 }); + return this; } - } - return applySlice(result, options); -} -function parseOpera11(error, options) { - var filtered = applySlice( - // @ts-expect-error missing stack property - error.stack.split("\n").filter(function (line) { - return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/); - }), options); - return filtered.map(function (line) { - var tokens = line.split("@"); - var locationParts = extractLocation(tokens.pop()); - var functionCall = tokens.shift() || ""; - var functionName = functionCall.replace(//, "$2").replace(/\([^)]*\)/g, "") || undefined; - var argsRaw; - if (functionCall.match(/\(([^)]*)\)/)) argsRaw = functionCall.replace(/^[^(]+\(([^)]*)\)$/, "$1"); - var args = argsRaw === undefined || argsRaw === "[arguments not available]" ? undefined : argsRaw.split(","); - return { - function: functionName, - args: args, - file: locationParts[0], - line: locationParts[1] ? +locationParts[1] : undefined, - col: locationParts[2] ? +locationParts[2] : undefined, - raw: line - }; - }); -} - -;// ./node_modules/error-stack-parser-es/dist/index.mjs - - -function stackframesLiteToStackframes(liteStackframes) { - return liteStackframes.map(function (liteStackframe) { - return { - functionName: liteStackframe.function, - args: liteStackframe.args, - fileName: liteStackframe.file, - lineNumber: liteStackframe.line, - columnNumber: liteStackframe.col, - source: liteStackframe.raw - }; - }); -} -function dist_parse(error, options) { - return stackframesLiteToStackframes(lite_parse(error, options)); -} -function dist_parseV8OrIE(error) { - return stackframesLiteToStackframes(parseV8OrIE$1(error)); -} -function dist_parseFFOrSafari(error) { - return stackframesLiteToStackframes(parseFFOrSafari$1(error)); -} -function dist_parseOpera(e) { - return stackframesLiteToStackframes(parseOpera$1(e)); -} -function dist_parseOpera9(e) { - return stackframesLiteToStackframes(parseOpera9$1(e)); -} -function dist_parseOpera10(e) { - return stackframesLiteToStackframes(parseOpera10$1(e)); -} -function dist_parseOpera11(error) { - return stackframesLiteToStackframes(parseOpera11$1(error)); -} - -;// ./src/errorParser.js - -var UNKNOWN_FUNCTION = '?'; -var ERR_CLASS_REGEXP = new RegExp('^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): '); -function guessFunctionName() { - return UNKNOWN_FUNCTION; -} -function gatherContext() { - return null; -} -function Frame(stackFrame) { - var data = {}; - data._stackFrame = stackFrame; - data.url = stackFrame.fileName; - data.line = stackFrame.lineNumber; - data.func = stackFrame.functionName; - data.column = stackFrame.columnNumber; - data.args = stackFrame.args; - data.context = gatherContext(); - return data; -} -function Stack(exception, skip) { - function getStack() { - var parserStack = []; - skip = skip || 0; - try { - parserStack = dist_parse(exception); - } catch (e) { - parserStack = []; + }, { + key: "isRecording", + value: function isRecording() { + return this.span.ended === false; } - var stack = []; - for (var i = skip; i < parserStack.length; i++) { - stack.push(new Frame(parserStack[i])); + }, { + key: "end", + value: function end(attributes, time) { + if (attributes) this.setAttributes(attributes); + this.span.endTime = time || hrtime.now(this.usePerformance); + this.span.ended = true; + this.spanProcessor.onEnd(this); } - return stack; - } - return { - stack: getStack(), - message: exception.message, - name: _mostSpecificErrorName(exception), - rawStack: exception.stack, - rawException: exception - }; -} -function errorParser_parse(e, skip) { - var err = e; - if (err.nested || err.cause) { - var traceChain = []; - while (err) { - traceChain.push(new Stack(err, skip)); - err = err.nested || err.cause; - skip = 0; // Only apply skip value to primary error + }, { + key: "export", + value: function _export() { + return this.span; } + }]); +}(); +;// ./src/tracing/tracer.js +function tracer_typeof(o) { "@babel/helpers - typeof"; return tracer_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, tracer_typeof(o); } +function tracer_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function tracer_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? tracer_ownKeys(Object(t), !0).forEach(function (r) { tracer_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : tracer_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function tracer_defineProperty(e, r, t) { return (r = tracer_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function tracer_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function tracer_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, tracer_toPropertyKey(o.key), o); } } +function tracer_createClass(e, r, t) { return r && tracer_defineProperties(e.prototype, r), t && tracer_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function tracer_toPropertyKey(t) { var i = tracer_toPrimitive(t, "string"); return "symbol" == tracer_typeof(i) ? i : i + ""; } +function tracer_toPrimitive(t, r) { if ("object" != tracer_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != tracer_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - // Return primary error with full trace chain attached. - traceChain[0].traceChain = traceChain; - return traceChain[0]; - } else { - return new Stack(err, skip); - } -} -function guessErrorClass(errMsg) { - if (!errMsg || !errMsg.match) { - return ['Unknown error. There was no error message to display.', '']; - } - var errClassMatch = errMsg.match(ERR_CLASS_REGEXP); - var errClass = '(unknown)'; - if (errClassMatch) { - errClass = errClassMatch[errClassMatch.length - 1]; - errMsg = errMsg.replace((errClassMatch[errClassMatch.length - 2] || '') + errClass + ':', ''); - errMsg = errMsg.replace(/(^[\s]+|[\s]+$)/g, ''); - } - return [errClass, errMsg]; -} -// * Prefers any value over an empty string -// * Prefers any value over 'Error' where possible -// * Prefers name over constructor.name when both are more specific than 'Error' -function _mostSpecificErrorName(error) { - var name = error.name && error.name.length && error.name; - var constructorName = error.constructor.name && error.constructor.name.length && error.constructor.name; - if (!name || !constructorName) { - return name || constructorName; - } - if (name === 'Error') { - return constructorName; +var Tracer = /*#__PURE__*/function () { + function Tracer(tracing, spanProcessor) { + tracer_classCallCheck(this, Tracer); + this.spanProcessor = spanProcessor; + this.tracing = tracing; } - return name; -} -/* harmony default export */ var errorParser = ({ - guessFunctionName: guessFunctionName, - guessErrorClass: guessErrorClass, - gatherContext: gatherContext, - parse: errorParser_parse, - Stack: Stack, - Frame: Frame -}); -;// ./src/browser/transforms.js + return tracer_createClass(Tracer, [{ + key: "startSpan", + value: function startSpan(name) { + var _this$tracing$resourc, _options$resource, _this$tracing$session; + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.tracing.contextManager.active(); + var parentSpan = this.tracing.getSpan(context); + var parentSpanContext = parentSpan === null || parentSpan === void 0 ? void 0 : parentSpan.spanContext(); + var spanId = id.gen(8); + var traceId; + var traceFlags = 0; + var traceState = null; + var parentSpanId; + if (parentSpanContext) { + traceId = parentSpanContext.traceId; + traceState = parentSpanContext.traceState; + parentSpanId = parentSpanContext.spanId; + } else { + traceId = id.gen(16); + } + var kind = 0; + var spanContext = { + traceId: traceId, + spanId: spanId, + traceFlags: traceFlags, + traceState: traceState + }; + var resource = { + attributes: tracer_objectSpread(tracer_objectSpread({}, ((_this$tracing$resourc = this.tracing.resource) === null || _this$tracing$resourc === void 0 ? void 0 : _this$tracing$resourc.attributes) || {}), ((_options$resource = options.resource) === null || _options$resource === void 0 ? void 0 : _options$resource.attributes) || {}) + }; + var span = new Span({ + resource: resource, + scope: this.tracing.scope, + session: (_this$tracing$session = this.tracing.session) === null || _this$tracing$session === void 0 ? void 0 : _this$tracing$session.session, + context: context, + spanContext: spanContext, + name: name, + kind: kind, + parentSpanId: parentSpanId, + spanProcessor: this.spanProcessor, + startTime: options.startTime, + usePerformance: options.usePerformance + }); + return span; + } + }]); +}(); +;// ./src/tracing/tracing.js +function tracing_typeof(o) { "@babel/helpers - typeof"; return tracing_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, tracing_typeof(o); } +function tracing_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function tracing_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? tracing_ownKeys(Object(t), !0).forEach(function (r) { tracing_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : tracing_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function tracing_defineProperty(e, r, t) { return (r = tracing_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function tracing_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function tracing_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, tracing_toPropertyKey(o.key), o); } } +function tracing_createClass(e, r, t) { return r && tracing_defineProperties(e.prototype, r), t && tracing_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function tracing_toPropertyKey(t) { var i = tracing_toPrimitive(t, "string"); return "symbol" == tracing_typeof(i) ? i : i + ""; } +function tracing_toPrimitive(t, r) { if ("object" != tracing_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != tracing_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -function handleDomException(item, options, callback) { - if (item.err && errorParser.Stack(item.err).name === 'DOMException') { - var originalError = new Error(); - originalError.name = item.err.name; - originalError.message = item.err.message; - originalError.stack = item.err.stack; - originalError.nested = item.err; - item.err = originalError; + + + +var SPAN_KEY = createContextKey('Rollbar Context Key SPAN'); +var Tracing = /*#__PURE__*/function () { + function Tracing(gWindow, api, options) { + tracing_classCallCheck(this, Tracing); + this.api = api; + this.options = options; + this.window = gWindow; + if (this.window.sessionStorage) { + this.session = new Session(this, options); + } + this.createTracer(); } - callback(null, item); -} -function handleItemWithError(item, options, callback) { - item.data = item.data || {}; - if (item.err) { - try { - item.stackInfo = item.err._savedStackTrace || errorParser.parse(item.err, item.skipFrames); - if (options.addErrorContext) { - transforms_addErrorContext(item); + return tracing_createClass(Tracing, [{ + key: "configure", + value: function configure(options) { + // Options merge happens before configure is called, so we can just replace. + this.options = options; + } + }, { + key: "initSession", + value: function initSession() { + if (this.session) { + this.session.init(); } - } catch (e) { - src_logger.error('Error while parsing the error object.', e); - try { - item.message = item.err.message || item.err.description || item.message || String(item.err); - } catch (e2) { - item.message = String(item.err) || String(e2); + } + }, { + key: "sessionId", + get: function get() { + if (this.session) { + return this.session.session.id; } - delete item.err; + return null; } - } - callback(null, item); -} -function transforms_addErrorContext(item) { - var chain = []; - var err = item.err; - chain.push(err); - while (err.nested || err.cause) { - err = err.nested || err.cause; - chain.push(err); - } - addErrorContext(item, chain); -} -function ensureItemHasSomethingToSay(item, options, callback) { - if (!item.message && !item.stackInfo && !item.custom) { - callback(new Error('No message, stack info, or custom data'), null); - } - callback(null, item); -} -function addBaseInfo(item, options, callback) { - var environment = options.payload && options.payload.environment || options.environment; - item.data = src_merge(item.data, { - environment: environment, - level: item.level, - endpoint: options.endpoint, - platform: 'browser', - framework: 'browser-js', - language: 'javascript', - server: {}, - uuid: item.uuid, - notifier: { - name: 'rollbar-browser-js', - version: options.version - }, - custom: item.custom - }); - callback(null, item); -} -function addRequestInfo(window) { - return function (item, options, callback) { - var requestInfo = {}; - if (window && window.location) { - requestInfo.url = window.location.href; - requestInfo.query_string = window.location.search; + }, { + key: "resource", + get: function get() { + var _this$options$payload, _this$options$payload2; + return { + attributes: tracing_objectSpread(tracing_objectSpread({}, this.options.resource || {}), {}, { + 'rollbar.environment': (_this$options$payload = (_this$options$payload2 = this.options.payload) === null || _this$options$payload2 === void 0 ? void 0 : _this$options$payload2.environment) !== null && _this$options$payload !== void 0 ? _this$options$payload : this.options.environment + }) + }; } - var remoteString = '$remote_ip'; - if (!options.captureIp) { - remoteString = null; - } else if (options.captureIp !== true) { - remoteString += '_anonymize'; + }, { + key: "scope", + get: function get() { + return { + name: 'rollbar-browser-js', + version: this.options.version + }; } - if (remoteString) requestInfo.user_ip = remoteString; - if (Object.keys(requestInfo).length > 0) { - set(item, 'data.request', requestInfo); + }, { + key: "idGen", + value: function idGen() { + var bytes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16; + return id.gen(bytes); } - callback(null, item); - }; -} -function addClientInfo(window) { - return function (item, options, callback) { - if (!window) { - return callback(null, item); + }, { + key: "createTracer", + value: function createTracer() { + this.contextManager = new ContextManager(); + this.exporter = new SpanExporter(this.api, this.options); + this.spanProcessor = new SpanProcessor(this.exporter, this.options.tracing); + this.tracer = new Tracer(this, this.spanProcessor); } - var nav = window.navigator || {}; - var scr = window.screen || {}; - set(item, 'data.client', { - runtime_ms: item.timestamp - window._rollbarStartTime, - timestamp: Math.round(item.timestamp / 1000), - javascript: { - browser: nav.userAgent, - language: nav.language, - cookie_enabled: nav.cookieEnabled, - screen: { - width: scr.width, - height: scr.height - } + }, { + key: "getTracer", + value: function getTracer() { + return this.tracer; + } + }, { + key: "addSpanTransform", + value: function addSpanTransform(transformFn) { + this.spanProcessor.addTransform(transformFn); + } + }, { + key: "getSpan", + value: function getSpan() { + var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.contextManager.active(); + return context.getValue(SPAN_KEY); + } + }, { + key: "setSpan", + value: function setSpan() { + var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.contextManager.active(); + var span = arguments.length > 1 ? arguments[1] : undefined; + return context.setValue(SPAN_KEY, span); + } + }, { + key: "startSpan", + value: function startSpan(name) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.contextManager.active(); + return this.tracer.startSpan(name, options, context); + } + }, { + key: "with", + value: function _with(context, fn, thisArg) { + var _this$contextManager; + for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { + args[_key - 3] = arguments[_key]; } - }); - callback(null, item); - }; -} -function addPluginInfo(window) { - return function (item, options, callback) { - if (!window || !window.navigator) { - return callback(null, item); + return (_this$contextManager = this.contextManager).with.apply(_this$contextManager, [context, fn, thisArg].concat(args)); } - var plugins = []; - var navPlugins = window.navigator.plugins || []; - var cur; - for (var i = 0, l = navPlugins.length; i < l; ++i) { - cur = navPlugins[i]; - plugins.push({ - name: cur.name, - description: cur.description - }); + }, { + key: "withSpan", + value: function withSpan(name, options, fn, thisArg) { + var span = this.startSpan(name, options); + return this.with(this.setSpan(this.contextManager.active(), span), fn, thisArg, span); } - set(item, 'data.client.javascript.plugins', plugins); - callback(null, item); - }; + }]); +}(); + +;// ./src/truncation.js +function truncation_slicedToArray(r, e) { return truncation_arrayWithHoles(r) || truncation_iterableToArrayLimit(r, e) || truncation_unsupportedIterableToArray(r, e) || truncation_nonIterableRest(); } +function truncation_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function truncation_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function truncation_arrayWithHoles(r) { if (Array.isArray(r)) return r; } +function truncation_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = truncation_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function truncation_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return truncation_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? truncation_arrayLikeToArray(r, a) : void 0; } } +function truncation_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } + + +function raw(payload, jsonBackup) { + return [payload, stringify(payload, jsonBackup)]; } -function addBody(item, options, callback) { - if (item.stackInfo) { - if (item.stackInfo.traceChain) { - addBodyTraceChain(item, options, callback); - } else { - addBodyTrace(item, options, callback); +function selectFrames(frames, range) { + var len = frames.length; + if (len > range * 2) { + return frames.slice(0, range).concat(frames.slice(len - range)); + } + return frames; +} +function truncateFrames(payload, jsonBackup, range) { + range = typeof range === 'undefined' ? 30 : range; + var body = payload.data.body; + var frames; + if (body.trace_chain) { + var chain = body.trace_chain; + var _iterator = truncation_createForOfIteratorHelper(chain), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var trace = _step.value; + frames = trace.frames; + frames = selectFrames(frames, range); + trace.frames = frames; + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); } - } else { - addBodyMessage(item, options, callback); + } else if (body.trace) { + frames = body.trace.frames; + frames = selectFrames(frames, range); + body.trace.frames = frames; } + return [payload, stringify(payload, jsonBackup)]; } -function addBodyMessage(item, options, callback) { - var message = item.message; - var custom = item.custom; - if (!message) { - message = 'Item sent with null or missing arguments.'; +function maybeTruncateValue(len, val) { + if (!val) { + return val; } - var result = { - body: message - }; - if (custom) { - result.extra = src_merge(custom); + if (val.length > len) { + return val.slice(0, len - 3).concat('...'); } - set(item, 'data.body', { - message: result - }); - callback(null, item); + return val; } -function stackFromItem(item) { - // Transform a TraceKit stackInfo object into a Rollbar trace - var stack = item.stackInfo.stack; - if (stack && stack.length === 0 && item._unhandledStackInfo && item._unhandledStackInfo.stack) { - stack = item._unhandledStackInfo.stack; - } - return stack; -} -function addBodyTraceChain(item, options, callback) { - var traceChain = item.stackInfo.traceChain; - var traces = []; - var traceChainLength = traceChain.length; - for (var i = 0; i < traceChainLength; i++) { - var trace = buildTrace(item, traceChain[i], options); - traces.push(trace); +function truncateStrings(len, payload, jsonBackup) { + function truncator(k, v, seen) { + switch (typeName(v)) { + case 'string': + return maybeTruncateValue(len, v); + case 'object': + case 'array': + return utility_traverse(v, truncator, seen); + default: + return v; + } } - set(item, 'data.body', { - trace_chain: traces - }); - callback(null, item); + payload = utility_traverse(payload, truncator); + return [payload, stringify(payload, jsonBackup)]; } -function addBodyTrace(item, options, callback) { - var stack = stackFromItem(item); - if (stack) { - var trace = buildTrace(item, item.stackInfo, options); - set(item, 'data.body', { - trace: trace - }); - callback(null, item); - } else { - var stackInfo = item.stackInfo; - var guess = errorParser.guessErrorClass(stackInfo.message); - var className = errorClass(stackInfo, guess[0], options); - var message = guess[1]; - item.message = className + ': ' + message; - addBodyMessage(item, options, callback); +function truncateTraceData(traceData) { + if (traceData.exception) { + delete traceData.exception.description; + traceData.exception.message = maybeTruncateValue(255, traceData.exception.message); } + traceData.frames = selectFrames(traceData.frames, 1); + return traceData; } -function buildTrace(item, stackInfo, options) { - var description = item && item.data.description; - var custom = item && item.custom; - var stack = stackFromItem(item); - var guess = errorParser.guessErrorClass(stackInfo.message); - var className = errorClass(stackInfo, guess[0], options); - var message = guess[1]; - var trace = { - exception: { - class: className, - message: message - } - }; - if (description) { - trace.exception.description = description; - } - if (stack) { - if (stack.length === 0) { - trace.exception.stack = stackInfo.rawStack; - trace.exception.raw = String(stackInfo.rawException); - } - var stackFrame; - var frame; - var code; - var pre; - var post; - var contextLength; - var i, mid; - trace.frames = []; - for (i = 0; i < stack.length; ++i) { - stackFrame = stack[i]; - frame = { - filename: stackFrame.url ? sanitizeUrl(stackFrame.url) : '(unknown)', - lineno: stackFrame.line || null, - method: !stackFrame.func || stackFrame.func === '?' ? '[anonymous]' : stackFrame.func, - colno: stackFrame.column - }; - if (options.sendFrameUrl) { - frame.url = stackFrame.url; - } - if (frame.method && frame.method.endsWith && frame.method.endsWith('_rollbar_wrapped')) { - continue; - } - code = pre = post = null; - contextLength = stackFrame.context ? stackFrame.context.length : 0; - if (contextLength) { - mid = Math.floor(contextLength / 2); - pre = stackFrame.context.slice(0, mid); - code = stackFrame.context[mid]; - post = stackFrame.context.slice(mid); - } - if (code) { - frame.code = code; - } - if (pre || post) { - frame.context = {}; - if (pre && pre.length) { - frame.context.pre = pre; - } - if (post && post.length) { - frame.context.post = post; - } - } - if (stackFrame.args) { - frame.args = stackFrame.args; +function minBody(payload, jsonBackup) { + var body = payload.data.body; + if (body.trace_chain) { + var chain = body.trace_chain; + var _iterator2 = truncation_createForOfIteratorHelper(chain.entries()), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var _step2$value = truncation_slicedToArray(_step2.value, 2), + index = _step2$value[0], + trace = _step2$value[1]; + chain[index] = truncateTraceData(trace); } - trace.frames.push(frame); - } - - // NOTE(cory): reverse the frames since rollbar.com expects the most recent call last - trace.frames.reverse(); - if (custom) { - trace.extra = src_merge(custom); + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); } + } else if (body.trace) { + body.trace = truncateTraceData(body.trace); } - return trace; + return [payload, stringify(payload, jsonBackup)]; } -function errorClass(stackInfo, guess, options) { - if (stackInfo.name) { - return stackInfo.name; - } else if (options.guessErrorClass) { - return guess; - } else { - return '(unknown)'; - } +function needsTruncation(payload, maxSize) { + return maxByteSize(payload) > maxSize; } -function addScrubber(scrubFn) { - return function (item, options, callback) { - if (scrubFn) { - var scrubFields = options.scrubFields || []; - var scrubPaths = options.scrubPaths || []; - item.data = scrubFn(item.data, scrubFields, scrubPaths); +function truncate(payload, jsonBackup, maxSize) { + maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize; + var strategies = [raw, truncateFrames, truncateStrings.bind(null, 1024), truncateStrings.bind(null, 512), truncateStrings.bind(null, 256), minBody]; + var strategy, results, result; + while (strategy = strategies.shift()) { + results = strategy(payload, jsonBackup); + payload = results[0]; + result = results[1]; + if (result.error || !needsTruncation(result.value, maxSize)) { + return result; } - callback(null, item); - }; + } + return result; } +/* harmony default export */ var truncation = ({ + truncate: truncate, + /* for testing */ + raw: raw, + truncateFrames: truncateFrames, + truncateStrings: truncateStrings, + maybeTruncateValue: maybeTruncateValue +}); +;// ./src/apiUtility.js -;// ./src/transforms.js - -function itemToPayload(item, options, callback) { - if (item._isUncaught) { - item.data._isUncaught = true; - } - if (item._originalArgs) { - item.data._originalArgs = item._originalArgs; +function buildPayload(data) { + if (!isType(data.context, 'string')) { + var contextResult = stringify(data.context); + if (contextResult.error) { + data.context = "Error: could not serialize 'context'"; + } else { + data.context = contextResult.value || ''; + } + if (data.context.length > 255) { + data.context = data.context.substr(0, 255); + } } - callback(null, item); + return { + data: data + }; } -function addPayloadOptions(item, options, callback) { - var payloadOptions = options.payload || {}; - if (payloadOptions.body) { - delete payloadOptions.body; +function getTransportFromOptions(options, defaults, url) { + var hostname = defaults.hostname; + var protocol = defaults.protocol; + var port = defaults.port; + var path = defaults.path; + var search = defaults.search; + var timeout = options.timeout; + var transport = detectTransport(options); + var proxy = options.proxy; + if (options.endpoint) { + var opts = url.parse(options.endpoint); + hostname = opts.hostname; + protocol = opts.protocol; + port = opts.port; + path = opts.pathname; + search = opts.search; } - item.data = src_merge(item.data, payloadOptions); - callback(null, item); + return { + timeout: timeout, + hostname: hostname, + protocol: protocol, + port: port, + path: path, + search: search, + proxy: proxy, + transport: transport + }; } -function addTelemetryData(item, options, callback) { - if (item.telemetryEvents) { - set(item, 'data.body.telemetry', item.telemetryEvents); - } - callback(null, item); +function detectTransport(options) { + var gWindow = typeof window !== 'undefined' && window || typeof self !== 'undefined' && self; + var transport = options.defaultTransport || 'xhr'; + if (typeof gWindow.fetch === 'undefined') transport = 'xhr'; + if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch'; + return transport; } -function addMessageWithError(item, options, callback) { - if (!item.message) { - callback(null, item); - return; +function apiUtility_transportOptions(transport, method) { + var protocol = transport.protocol || 'https:'; + var port = transport.port || (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined); + var hostname = transport.hostname; + var path = transport.path; + var timeout = transport.timeout; + var transportAPI = transport.transport; + if (transport.search) { + path = path + transport.search; } - var tracePath = 'data.body.trace_chain.0'; - var trace = get(item, tracePath); - if (!trace) { - tracePath = 'data.body.trace'; - trace = get(item, tracePath); - } - if (trace) { - if (!(trace.exception && trace.exception.description)) { - set(item, tracePath + '.exception.description', item.message); - callback(null, item); - return; - } - var extra = get(item, tracePath + '.extra') || {}; - var newExtra = src_merge(extra, { - message: item.message - }); - set(item, tracePath + '.extra', newExtra); + if (transport.proxy) { + path = protocol + '//' + hostname + path; + hostname = transport.proxy.host || transport.proxy.hostname; + port = transport.proxy.port; + protocol = transport.proxy.protocol || protocol; } - callback(null, item); -} -function userTransform(logger) { - return function (item, options, callback) { - var newItem = src_merge(item); - var response = null; - try { - if (isFunction(options.transform)) { - response = options.transform(newItem.data, item); - } - } catch (e) { - options.transform = null; - logger.error('Error while calling custom transform() function. Removing custom transform().', e); - callback(null, item); - return; - } - if (isPromise(response)) { - response.then(function (promisedItem) { - if (promisedItem) { - newItem.data = promisedItem; - } - callback(null, newItem); - }, function (error) { - callback(error, item); - }); - } else { - callback(null, newItem); - } + return { + timeout: timeout, + protocol: protocol, + hostname: hostname, + path: path, + port: port, + method: method, + transport: transportAPI }; } -function addConfigToPayload(item, options, callback) { - if (!options.sendConfig) { - return callback(null, item); - } - var configKey = '_rollbarConfig'; - var custom = get(item, 'data.custom') || {}; - custom[configKey] = options; - item.data.custom = custom; - callback(null, item); -} -function addFunctionOption(options, name) { - if (isFunction(options[name])) { - options[name] = options[name].toString(); +function appendPathToPath(base, path) { + var baseTrailingSlash = /\/$/.test(base); + var pathBeginningSlash = /^\//.test(path); + if (baseTrailingSlash && pathBeginningSlash) { + path = path.substring(1); + } else if (!baseTrailingSlash && !pathBeginningSlash) { + path = '/' + path; } + return base + path; } -function addConfiguredOptions(item, options, callback) { - var configuredOptions = options._configuredOptions; - // These must be stringified or they'll get dropped during serialization. - addFunctionOption(configuredOptions, 'transform'); - addFunctionOption(configuredOptions, 'checkIgnore'); - addFunctionOption(configuredOptions, 'onSendCallback'); - delete configuredOptions.accessToken; - item.data.notifier.configured_options = configuredOptions; - callback(null, item); -} -function addDiagnosticKeys(item, options, callback) { - var diagnostic = src_merge(item.notifier.client.notifier.diagnostic, item.diagnostic); - if (get(item, 'err._isAnonymous')) { - diagnostic.is_anonymous = true; - } - if (item._isUncaught) { - diagnostic.is_uncaught = item._isUncaught; - } - if (item.err) { - try { - diagnostic.raw_error = { - message: item.err.message, - name: item.err.name, - constructor_name: item.err.constructor && item.err.constructor.name, - filename: item.err.fileName, - line: item.err.lineNumber, - column: item.err.columnNumber, - stack: item.err.stack - }; - } catch (e) { - diagnostic.raw_error = { - failed: String(e) - }; - } - } - item.data.notifier.diagnostic = src_merge(item.data.notifier.diagnostic, diagnostic); - callback(null, item); -} +;// ./src/api.js +function api_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function api_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? api_ownKeys(Object(t), !0).forEach(function (r) { api_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : api_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function api_defineProperty(e, r, t) { return (r = api_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function api_typeof(o) { "@babel/helpers - typeof"; return api_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, api_typeof(o); } +function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); } +function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); } +function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } +function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } +function api_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function api_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, api_toPropertyKey(o.key), o); } } +function api_createClass(e, r, t) { return r && api_defineProperties(e.prototype, r), t && api_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function api_toPropertyKey(t) { var i = api_toPrimitive(t, "string"); return "symbol" == api_typeof(i) ? i : i + ""; } +function api_toPrimitive(t, r) { if ("object" != api_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != api_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -;// ./src/browser/predicates.js -function checkIgnore(item, settings) { - if (get(settings, 'plugins.jquery.ignoreAjaxErrors')) { - return !get(item, 'body.message.extra.isAjax'); +var defaultOptions = { + hostname: 'api.rollbar.com', + path: '/api/1/item/', + search: null, + version: '1', + protocol: 'https:', + port: 443 +}; +var OTLPDefaultOptions = { + hostname: 'api.rollbar.com', + path: '/api/1/session/', + search: null, + version: '1', + protocol: 'https:', + port: 443 +}; + +/** + * Api encapsulates methods of communicating with the Rollbar API. It is a + * standard interface with some parts implemented differently for server or + * browser contexts. It is an object that should be instantiated when used so + * it can contain non-global options that may be different for another instance + * of RollbarApi. + */ +var Api = /*#__PURE__*/function () { + /** + * @param {Object} options - Configuration supplied from the parent Rollbar instance. + * @param {string} options.accessToken - Token used to authenticate API calls. + * @param {string} [options.endpoint] - Optional fully qualified URL overriding + * the default `https://api.rollbar.com/api/1/item`. + * @param {Object} [options.proxy] - Optional proxy descriptor containing: + * `host`/`hostname` (required), `port`, and `protocol`. + * @param {Object} transport - Adapter implementing `post` and `postJsonPayload`. + * @param {Object} urllib - Minimal URL helper used for option normalization. + * @param {Object} truncation - Optional truncation helper for payload size enforcement. + */ + function Api(options, transport, urllib, truncation) { + api_classCallCheck(this, Api); + this.options = options; + this.transport = transport; + this.url = urllib; + this.truncation = truncation; + this.accessToken = options.accessToken; + this.transportOptions = _getTransport(options, urllib); + this.OTLPTransportOptions = _getOTLPTransport(options, urllib); } - return true; -} -;// ./src/predicates.js + /** + * Wraps transport.post in a Promise to support async/await + * + * @param {Object} options - Options for the API request + * @param {string} options.accessToken - The access token for authentication + * @param {Object} options.transportOptions - Options for the transport + * @param {Object} options.payload - The data payload to send + * @returns {Promise} A promise that resolves with the response or rejects with an error + * @private + */ + return api_createClass(Api, [{ + key: "_postPromise", + value: function _postPromise(_ref) { + var _this = this; + var accessToken = _ref.accessToken, + options = _ref.options, + payload = _ref.payload, + headers = _ref.headers; + return new Promise(function (resolve, reject) { + _this.transport.post({ + accessToken: accessToken, + options: options, + payload: payload, + headers: headers, + callback: function callback(err, resp) { + return err ? reject(err) : resolve(resp); + } + }); + }); + } -function checkLevel(item, settings) { - var level = item.level; - var levelVal = LEVELS[level] || 0; - var reportLevel = settings.reportLevel; - var reportLevelVal = LEVELS[reportLevel] || 0; - if (levelVal < reportLevelVal) { - return false; - } - return true; -} -function userCheckIgnore(logger) { - return function (item, settings) { - var isUncaught = !!item._isUncaught; - delete item._isUncaught; - var args = item._originalArgs; - delete item._originalArgs; - try { - if (isFunction(settings.onSendCallback)) { - settings.onSendCallback(isUncaught, args, item); - } - } catch (e) { - settings.onSendCallback = null; - logger.error('Error while calling onSendCallback, removing', e); + /** + * + * @param data + * @param callback + */ + }, { + key: "postItem", + value: function postItem(data, callback) { + var _this2 = this; + var options = apiUtility_transportOptions(this.transportOptions, 'POST'); + var payload = buildPayload(data); + + // ensure the network request is scheduled after the current tick. + setTimeout(function () { + _this2.transport.post({ + accessToken: _this2.accessToken, + options: options, + payload: payload, + callback: callback + }); + }, 0); } - try { - if (isFunction(settings.checkIgnore) && settings.checkIgnore(isUncaught, args, item)) { - return false; + + /** + * Posts spans to the Rollbar API using the session endpoint + * + * @param {Array} payload - The spans to send + * @returns {Promise} A promise that resolves with the API response + */ + }, { + key: "postSpans", + value: (function () { + var _postSpans = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(payload) { + var headers, + options, + _args = arguments; + return _regenerator().w(function (_context) { + while (1) switch (_context.n) { + case 0: + headers = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; + options = apiUtility_transportOptions(this.OTLPTransportOptions, 'POST'); + return _context.a(2, this._postPromise({ + accessToken: this.accessToken, + options: options, + payload: payload, + headers: headers + })); + } + }, _callee, this); + })); + function postSpans(_x) { + return _postSpans.apply(this, arguments); } - } catch (e) { - settings.checkIgnore = null; - logger.error('Error while calling custom checkIgnore(), removing', e); + return postSpans; + }() + /** + * + * @param data + * @param callback + */ + ) + }, { + key: "buildJsonPayload", + value: function buildJsonPayload(data, callback) { + var payload = buildPayload(data); + var stringifyResult; + if (this.truncation) { + stringifyResult = this.truncation.truncate(payload); + } else { + stringifyResult = stringify(payload); + } + if (stringifyResult.error) { + if (callback) { + callback(stringifyResult.error); + } + return null; + } + return stringifyResult.value; } - return true; - }; -} -function urlIsNotBlockListed(logger) { - return function (item, settings) { - return !urlIsOnAList(item, settings, 'blocklist', logger); - }; -} -function urlIsSafeListed(logger) { - return function (item, settings) { - return urlIsOnAList(item, settings, 'safelist', logger); - }; -} -function matchFrames(trace, list, block) { - if (!trace) { - return !block; - } - var frames = trace.frames; - if (!frames || frames.length === 0) { - return !block; - } - var frame, filename, url, urlRegex; - var listLength = list.length; - var frameLength = frames.length; - for (var i = 0; i < frameLength; i++) { - frame = frames[i]; - filename = frame.filename; - if (!isType(filename, 'string')) { - return !block; + + /** + * + * @param jsonPayload + * @param callback + */ + }, { + key: "postJsonPayload", + value: function postJsonPayload(jsonPayload, callback) { + var transportOptions = apiUtility_transportOptions(this.transportOptions, 'POST'); + this.transport.postJsonPayload(this.accessToken, transportOptions, jsonPayload, callback); } - for (var j = 0; j < listLength; j++) { - url = list[j]; - urlRegex = new RegExp(url); - if (urlRegex.test(filename)) { - return true; + }, { + key: "configure", + value: function configure(options) { + var oldOptions = this.options; + this.options = merge(oldOptions, options); + this.transportOptions = _getTransport(this.options, this.url); + this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url); + if (this.options.accessToken !== undefined) { + this.accessToken = this.options.accessToken; } + return this; } - } - return false; + }]); +}(); +function _getTransport(options, url) { + return getTransportFromOptions(options, defaultOptions, url); } -function urlIsOnAList(item, settings, safeOrBlock, logger) { - // safelist is the default - var block = false; - if (safeOrBlock === 'blocklist') { - block = true; - } - var list, traces; - try { - list = block ? settings.hostBlockList : settings.hostSafeList; - traces = get(item, 'body.trace_chain') || [get(item, 'body.trace')]; - - // These two checks are important to come first as they are defaults - // in case the list is missing or the trace is missing or not well-formed - if (!list || list.length === 0) { - return !block; - } - if (traces.length === 0 || !traces[0]) { - return !block; - } - var tracesLength = traces.length; - for (var i = 0; i < tracesLength; i++) { - if (matchFrames(traces[i], list, block)) { - return true; - } - } - } catch (e - /* istanbul ignore next */) { - if (block) { - settings.hostBlockList = null; - } else { - settings.hostSafeList = null; - } - var listName = block ? 'hostBlockList' : 'hostSafeList'; - logger.error("Error while reading your configuration's " + listName + ' option. Removing custom ' + listName + '.', e); - return !block; - } - return false; -} -function messageIsIgnored(logger) { - return function (item, settings) { - var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages; - try { - messageIsIgnored = false; - ignoredMessages = settings.ignoredMessages; - if (!ignoredMessages || ignoredMessages.length === 0) { - return true; - } - messages = messagesFromItem(item); - if (messages.length === 0) { - return true; - } - len = ignoredMessages.length; - for (i = 0; i < len; i++) { - rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi'); - for (j = 0; j < messages.length; j++) { - messageIsIgnored = rIgnoredMessage.test(messages[j]); - if (messageIsIgnored) { - return false; - } - } - } - } catch (e - /* istanbul ignore next */) { - settings.ignoredMessages = null; - logger.error("Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages."); - } - return true; - }; -} -function messagesFromItem(item) { - var body = item.body; - var messages = []; - - // The payload schema only allows one of trace_chain, message, or trace. - // However, existing test cases are based on having both trace and message present. - // So here we preserve the ability to collect strings from any combination of these keys. - if (body.trace_chain) { - var traceChain = body.trace_chain; - for (var i = 0; i < traceChain.length; i++) { - var trace = traceChain[i]; - messages.push(get(trace, 'exception.message')); - } - } - if (body.trace) { - messages.push(get(body, 'trace.exception.message')); - } - if (body.message) { - messages.push(get(body, 'message.body')); - } - return messages; +function _getOTLPTransport(options, url) { + var _options$tracing; + options = api_objectSpread(api_objectSpread({}, options), {}, { + endpoint: (_options$tracing = options.tracing) === null || _options$tracing === void 0 ? void 0 : _options$tracing.endpoint + }); + return getTransportFromOptions(options, OTLPDefaultOptions, url); } - -;// ./src/browser/replay/defaults.js -/** - * Default session replay recording options - * See https://github.com/rrweb-io/rrweb/blob/master/guide.md#options for details - */ -/* harmony default export */ var defaults = ({ - enabled: false, - // Whether recording is enabled - autoStart: true, - // Start recording automatically when Rollbar initializes - - // defaults used by triggers that don't specify them - triggerDefaults: { - samplingRatio: 1.0, - preDuration: 300, - postDuration: 5 - }, - triggers: [{ - type: 'occurrence', - level: ['error', 'critical'] - }], - debug: { - logErrors: true, - // Whether to log errors emitted by rrweb. - logEmits: false // Whether to log emitted events - }, - // Recording options - inlineStylesheet: true, - // Whether to inline stylesheets to improve replay accuracy - inlineImages: false, - // Whether to record the image content - collectFonts: true, - // Whether to collect fonts in the website - - // Privacy options - // Fine-grained control over which input types to mask - // By default only password inputs are masked if maskInputs is true - maskInputOptions: { - password: true, - email: false, - tel: false, - text: false, - color: false, - date: false, - 'datetime-local': false, - month: false, - number: false, - range: false, - search: false, - time: false, - url: false, - week: false - }, - // Mask all input values - maskAllInputs: false, - // Class names to block, mask, or ignore the content of elements. - blockClass: 'rb-block', - maskTextClass: 'rb-mask', - ignoreClass: 'rb-ignore', - // Remove unnecessary parts of the DOM - // By default all removable elements are removed - slimDOMOptions: { - script: true, - // Remove script elements - comment: true, - // Remove comments - headFavicon: true, - // Remove favicons in the head - headWhitespace: true, - // Remove whitespace in head - headMetaDescKeywords: true, - // Remove meta description and keywords - headMetaSocial: true, - // Remove social media meta tags - headMetaRobots: true, - // Remove robots meta directives - headMetaHttpEquiv: true, - // Remove http-equiv meta directives - headMetaAuthorship: true, - // Remove authorship meta directives - headMetaVerification: true // Remove verification meta directives - } - - // Custom callbacks for advanced use cases - // These are undefined by default and can be set programmatically - // maskInputFn: undefined, // Custom function to mask input values - // maskTextFn: undefined, // Custom function to mask text content - // errorHandler: undefined, // Custom error handler for recording errors - - // Plugin system - // plugins: [] // List of plugins to use (must be set programmatically) -}); -;// ./src/tracing/defaults.js -/** - * Default tracing options - */ -/* harmony default export */ var tracing_defaults = ({ - enabled: false, - endpoint: 'api.rollbar.com/api/1/session/' -}); +/* harmony default export */ var src_api = (Api); ;// ./src/defaults.js /** * Default options shared across platforms */ -var version = '3.0.0-rc.1'; +var version = '3.0.0'; var endpoint = 'api.rollbar.com/api/1/item/'; var logLevel = 'debug'; var reportLevel = 'debug'; @@ -3515,7 +2993,7 @@ var requestScrubFields = (/* unused pure expression or super */ null && (['reque var commonScrubHeaders = (/* unused pure expression or super */ null && (['authorization', 'www-authorization', 'http_authorization', 'omniauth.auth', 'cookie', 'oauth-access-token', 'x-access-token', 'x_csrf_token', 'http_x_csrf_token', 'x-csrf-token'])); // For backward compatibility with default export -/* harmony default export */ var src_defaults = ({ +/* harmony default export */ var defaults = ({ version: version, endpoint: endpoint, logLevel: logLevel, @@ -3524,3663 +3002,4397 @@ var commonScrubHeaders = (/* unused pure expression or super */ null && (['autho maxItems: maxItems, itemsPerMin: itemsPerMin }); -;// ./src/browser/defaults.js -function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || defaults_unsupportedIterableToArray(r) || _nonIterableSpread(); } -function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function defaults_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return defaults_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? defaults_arrayLikeToArray(r, a) : void 0; } } -function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } -function _arrayWithoutHoles(r) { if (Array.isArray(r)) return defaults_arrayLikeToArray(r); } -function defaults_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -/** - * Default browser options - */ - -var scrubFields = [].concat(_toConsumableArray(commonScrubFields), ['cc-number', 'card number', 'cardnumber', 'cardnum', 'ccnum', 'ccnumber', 'cc num', 'creditcardnumber', 'credit card number', 'newcreditcardnumber', 'new credit card', 'creditcardno', 'credit card no', 'card#', 'card #', 'cc-csc', 'cvc', 'cvc2', 'cvv2', 'ccv2', 'security code', 'card verification', 'name on credit card', 'name on card', 'nameoncard', 'cardholder', 'card holder', 'name des karteninhabers', 'ccname', 'card type', 'cardtype', 'cc type', 'cctype', 'payment type', 'expiration date', 'expirationdate', 'expdate', 'cc-exp', 'ccmonth', 'ccyear']); - -// For compatibility with existing code that expects default export with scrubFields property -/* harmony default export */ var browser_defaults = ({ - scrubFields: scrubFields -}); -;// ./src/browser/core.js -var _Rollbar; -function core_typeof(o) { "@babel/helpers - typeof"; return core_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, core_typeof(o); } -function core_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function core_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? core_ownKeys(Object(t), !0).forEach(function (r) { core_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : core_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function core_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function core_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, core_toPropertyKey(o.key), o); } } -function core_createClass(e, r, t) { return r && core_defineProperties(e.prototype, r), t && core_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function core_defineProperty(e, r, t) { return (r = core_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function core_toPropertyKey(t) { var i = core_toPrimitive(t, "string"); return "symbol" == core_typeof(i) ? i : i + ""; } -function core_toPrimitive(t, r) { if ("object" != core_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != core_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - - - - - - - - - - - - - - - -// Used to support global `Rollbar` instance. -var _instance = null; -var core_Rollbar = /*#__PURE__*/function () { - function Rollbar(options, client) { - core_classCallCheck(this, Rollbar); - src_logger.init({ - logLevel: options.logLevel || 'error' - }); - this.options = handleOptions(core_defaultOptions, options, null, src_logger); - this.options._configuredOptions = options; - this.components = this.components || {}; - var Telemeter = this.components.telemeter; - var Instrumenter = this.components.instrumenter; - this.wrapGlobals = this.components.wrapGlobals; - this.scrub = this.components.scrub; - var truncation = this.components.truncation; - var Tracing = this.components.tracing; - var Replay = this.components.replay; - var transport = new browser_transport(truncation); - var api = new src_api(this.options, transport, url_namespaceObject, truncation); - if (Tracing) { - this.tracing = new Tracing(_gWindow(), api, this.options); - this.tracing.initSession(); - } - if (Telemeter) { - this.telemeter = new Telemeter(this.options, this.tracing); - } - if (Replay && isBrowser()) { - var replayOptions = this.options.replay; - this.replay = new Replay({ - tracing: this.tracing, - telemeter: this.telemeter, - options: replayOptions - }); - if (replayOptions.enabled && replayOptions.autoStart) { - this.replay.recorder.start(); - } - } - this.client = client || new src_rollbar(this.options, api, src_logger, this.telemeter, this.tracing, this.replay, 'browser'); - var gWindow = _gWindow(); - var gDocument = typeof document != 'undefined' && document; - this.isChrome = gWindow.chrome && gWindow.chrome.runtime; // check .runtime to avoid Edge browsers - this.anonymousErrorsPending = 0; - addTransformsToNotifier(this.client.notifier, this, gWindow); - addPredicatesToQueue(this.client.queue); - this.setupUnhandledCapture(); - if (Instrumenter) { - this.instrumenter = new Instrumenter(this.options, this.client.telemeter, this, gWindow, gDocument); - this.instrumenter.instrument(); - } - this.setSessionAttributesFromOptions(options); - - // Used with rollbar-react for rollbar-react-native compatibility. - this.rollbar = this; +;// ./node_modules/error-stack-parser-es/dist/lite.mjs +var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\S+:\d+/; +var CHROME_IE_STACK_REGEXP = /^\s*at .*(\S+:\d+|\(native\))/m; +var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\[native code\])?$/; +function parse(error, options) { + if (typeof error.stacktrace !== "undefined" || typeof error["opera#sourceloc"] !== "undefined") return parseOpera(error, options);else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) return parseV8OrIE(error, options);else if (error.stack) return parseFFOrSafari(error, options);else if (options !== null && options !== void 0 && options.allowEmpty) return [];else throw new Error("Cannot parse given Error object"); +} +function parseStack(stackString, options) { + if (stackString.match(CHROME_IE_STACK_REGEXP)) return parseV8OrIeString(stackString, options);else return parseFFOrSafariString(stackString, options); +} +function extractLocation(urlLike) { + if (!urlLike.includes(":")) return [urlLike, undefined, undefined]; + var regExp = /(.+?)(?::(\d+))?(?::(\d+))?$/; + var parts = regExp.exec(urlLike.replace(/[()]/g, "")); + return [parts[1], parts[2] || undefined, parts[3] || undefined]; +} +function applySlice(lines, options) { + if (options && options.slice != null) { + if (Array.isArray(options.slice)) return lines.slice(options.slice[0], options.slice[1]); + return lines.slice(0, options.slice); } - return core_createClass(Rollbar, [{ - key: "global", - value: function global(options) { - this.client.global(options); - return this; - } - }, { - key: "configure", - value: function configure(options, payloadData) { - var _this$tracing, _this$replay, _this$instrumenter; - if (options.logLevel) { - src_logger.init({ - logLevel: options.logLevel - }); - } - this.setSessionAttributesFromOptions(options); - var oldOptions = this.options; - var payload = {}; - if (payloadData) { - payload = { - payload: payloadData - }; - } - this.options = handleOptions(oldOptions, options, payload, src_logger); - this.options._configuredOptions = handleOptions(oldOptions._configuredOptions, options, payload); - (_this$tracing = this.tracing) === null || _this$tracing === void 0 || _this$tracing.configure(this.options); - (_this$replay = this.replay) === null || _this$replay === void 0 || _this$replay.configure(this.options.replay); - this.client.configure(this.options, payloadData); - (_this$instrumenter = this.instrumenter) === null || _this$instrumenter === void 0 || _this$instrumenter.configure(this.options); - this.setupUnhandledCapture(); - return this; - } - }, { - key: "lastError", - value: function lastError() { - return this.client.lastError; - } - }, { - key: "log", - value: function log() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.log(item); - return { - uuid: uuid - }; - } - }, { - key: "debug", - value: function debug() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.debug(item); - return { - uuid: uuid - }; - } - }, { - key: "info", - value: function info() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.info(item); - return { - uuid: uuid - }; - } - }, { - key: "warn", - value: function warn() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.warn(item); - return { - uuid: uuid - }; - } - }, { - key: "warning", - value: function warning() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.warning(item); - return { - uuid: uuid - }; + return lines; +} +function parseV8OrIE(error, options) { + return parseV8OrIeString(error.stack, options); +} +function parseV8OrIeString(stack, options) { + var filtered = applySlice(stack.split("\n").filter(function (line) { + return !!line.match(CHROME_IE_STACK_REGEXP); + }), options); + return filtered.map(function (line) { + if (line.includes("(eval ")) { + line = line.replace(/eval code/g, "eval").replace(/(\(eval at [^()]*)|(,.*$)/g, ""); } - }, { - key: "error", - value: function error() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.error(item); + var sanitizedLine = line.replace(/^\s+/, "").replace(/\(eval code/g, "(").replace(/^.*?\s+/, ""); + var location = sanitizedLine.match(/ (\(.+\)$)/); + sanitizedLine = location ? sanitizedLine.replace(location[0], "") : sanitizedLine; + var locationParts = extractLocation(location ? location[1] : sanitizedLine); + var functionName = location && sanitizedLine || undefined; + var fileName = ["eval", ""].includes(locationParts[0]) ? undefined : locationParts[0]; + return { + function: functionName, + file: fileName, + line: locationParts[1] ? +locationParts[1] : undefined, + col: locationParts[2] ? +locationParts[2] : undefined, + raw: line + }; + }); +} +function parseFFOrSafari(error, options) { + return parseFFOrSafariString(error.stack, options); +} +function parseFFOrSafariString(stack, options) { + var filtered = applySlice(stack.split("\n").filter(function (line) { + return !line.match(SAFARI_NATIVE_CODE_REGEXP); + }), options); + return filtered.map(function (line) { + if (line.includes(" > eval")) line = line.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g, ":$1"); + if (!line.includes("@") && !line.includes(":")) { return { - uuid: uuid + function: line }; - } - }, { - key: "critical", - value: function critical() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.critical(item); + } else { + var functionNameRegex = /(([^\n\r"\u2028\u2029]*".[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*(?:@[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*)*(?:[\n\r\u2028\u2029][^@]*)?)?[^@]*)@/; + var matches = line.match(functionNameRegex); + var functionName = matches && matches[1] ? matches[1] : undefined; + var locationParts = extractLocation(line.replace(functionNameRegex, "")); return { - uuid: uuid + function: functionName, + file: locationParts[0], + line: locationParts[1] ? +locationParts[1] : undefined, + col: locationParts[2] ? +locationParts[2] : undefined, + raw: line }; } - }, { - key: "buildJsonPayload", - value: function buildJsonPayload(item) { - return this.client.buildJsonPayload(item); - } - }, { - key: "sendJsonPayload", - value: function sendJsonPayload(jsonPayload) { - return this.client.sendJsonPayload(jsonPayload); - } - }, { - key: "triggerDirectReplay", - value: function triggerDirectReplay(context) { - return this.triggerReplay(core_objectSpread({ - type: 'direct' - }, context)); + }); +} +function parseOpera(e, options) { + if (!e.stacktrace || e.message.includes("\n") && e.message.split("\n").length > e.stacktrace.split("\n").length) return parseOpera9(e);else if (!e.stack) return parseOpera10(e);else return parseOpera11(e, options); +} +function parseOpera9(e, options) { + var lineRE = /Line (\d+).*script (?:in )?(\S+)/i; + var lines = e.message.split("\n"); + var result = []; + for (var i = 2, len = lines.length; i < len; i += 2) { + var match = lineRE.exec(lines[i]); + if (match) { + result.push({ + file: match[2], + line: +match[1], + raw: lines[i] + }); } - }, { - key: "triggerReplay", - value: function triggerReplay(context) { - if (!this.replay) return null; - return this.replay.triggerReplay(context); - } - }, { - key: "setupUnhandledCapture", - value: function setupUnhandledCapture() { - var gWindow = _gWindow(); - if (!this.unhandledExceptionsInitialized) { - if (this.options.captureUncaught || this.options.handleUncaughtExceptions) { - captureUncaughtExceptions(gWindow, this); - if (this.wrapGlobals && this.options.wrapGlobalEventHandlers) { - this.wrapGlobals(gWindow, this); - } - this.unhandledExceptionsInitialized = true; - } - } - if (!this.unhandledRejectionsInitialized) { - if (this.options.captureUnhandledRejections || this.options.handleUnhandledRejections) { - captureUnhandledRejections(gWindow, this); - this.unhandledRejectionsInitialized = true; - } - } - } - }, { - key: "handleUncaughtException", - value: function handleUncaughtException(message, url, lineno, colno, error, context) { - if (!this.options.captureUncaught && !this.options.handleUncaughtExceptions) { - return; - } - - // Chrome will always send 5+ arguments and error will be valid or null, not undefined. - // If error is undefined, we have a different caller. - // Chrome also sends errors from web workers with null error, but does not invoke - // prepareStackTrace() for these. Test for empty url to skip them. - if (this.options.inspectAnonymousErrors && this.isChrome && error === null && url === '') { - return 'anonymous'; - } - var item; - var stackInfo = makeUnhandledStackInfo(message, url, lineno, colno, error, 'onerror', 'uncaught exception', errorParser); - if (isError(error)) { - item = this._createItem([message, error, context]); - item._unhandledStackInfo = stackInfo; - } else if (isError(url)) { - item = this._createItem([message, url, context]); - item._unhandledStackInfo = stackInfo; - } else { - item = this._createItem([message, context]); - item.stackInfo = stackInfo; - } - item.level = this.options.uncaughtErrorLevel; - item._isUncaught = true; - this.client.log(item); + } + return applySlice(result, options); +} +function parseOpera10(e, options) { + var lineRE = /Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i; + var lines = e.stacktrace.split("\n"); + var result = []; + for (var i = 0, len = lines.length; i < len; i += 2) { + var match = lineRE.exec(lines[i]); + if (match) { + result.push({ + function: match[3] || undefined, + file: match[2], + line: match[1] ? +match[1] : undefined, + raw: lines[i] + }); } + } + return applySlice(result, options); +} +function parseOpera11(error, options) { + var filtered = applySlice( + // @ts-expect-error missing stack property + error.stack.split("\n").filter(function (line) { + return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/); + }), options); + return filtered.map(function (line) { + var tokens = line.split("@"); + var locationParts = extractLocation(tokens.pop()); + var functionCall = tokens.shift() || ""; + var functionName = functionCall.replace(//, "$2").replace(/\([^)]*\)/g, "") || undefined; + var argsRaw; + if (functionCall.match(/\(([^)]*)\)/)) argsRaw = functionCall.replace(/^[^(]+\(([^)]*)\)$/, "$1"); + var args = argsRaw === undefined || argsRaw === "[arguments not available]" ? undefined : argsRaw.split(","); + return { + function: functionName, + args: args, + file: locationParts[0], + line: locationParts[1] ? +locationParts[1] : undefined, + col: locationParts[2] ? +locationParts[2] : undefined, + raw: line + }; + }); +} - /** - * Chrome only. Other browsers will ignore. - * - * Use Error.prepareStackTrace to extract information about errors that - * do not have a valid error object in onerror(). - * - * In tested version of Chrome, onerror is called first but has no way - * to communicate with prepareStackTrace. Use a counter to let this - * handler know which errors to send to Rollbar. - * - * In config options, set inspectAnonymousErrors to enable. - */ - }, { - key: "handleAnonymousErrors", - value: function handleAnonymousErrors() { - if (!this.options.inspectAnonymousErrors || !this.isChrome) { - return; - } - var r = this; - function prepareStackTrace(error, _stack) { - if (r.options.inspectAnonymousErrors) { - if (r.anonymousErrorsPending) { - // This is the only known way to detect that onerror saw an anonymous error. - // It depends on onerror reliably being called before Error.prepareStackTrace, - // which so far holds true on tested versions of Chrome. If versions of Chrome - // are tested that behave differently, this logic will need to be updated - // accordingly. - r.anonymousErrorsPending -= 1; - if (!error) { - // Not likely to get here, but calling handleUncaughtException from here - // without an error object would throw off the anonymousErrorsPending counter, - // so return now. - return; - } +;// ./node_modules/error-stack-parser-es/dist/index.mjs +/* unused harmony import specifier */ var parseV8OrIE$1; +/* unused harmony import specifier */ var parseFFOrSafari$1; +/* unused harmony import specifier */ var parseOpera$1; +/* unused harmony import specifier */ var parseOpera9$1; +/* unused harmony import specifier */ var parseOpera10$1; +/* unused harmony import specifier */ var parseOpera11$1; - // Allow this to be tracked later. - error._isAnonymous = true; - // url, lineno, colno shouldn't be needed for these errors. - // If that changes, update this accordingly, using the unused - // _stack param as needed (rather than parse error.toString()). - r.handleUncaughtException(error.message, null, null, null, error); - } - } +function stackframesLiteToStackframes(liteStackframes) { + return liteStackframes.map(function (liteStackframe) { + return { + functionName: liteStackframe.function, + args: liteStackframe.args, + fileName: liteStackframe.file, + lineNumber: liteStackframe.line, + columnNumber: liteStackframe.col, + source: liteStackframe.raw + }; + }); +} +function dist_parse(error, options) { + return stackframesLiteToStackframes(parse(error, options)); +} +function dist_parseV8OrIE(error) { + return stackframesLiteToStackframes(parseV8OrIE$1(error)); +} +function dist_parseFFOrSafari(error) { + return stackframesLiteToStackframes(parseFFOrSafari$1(error)); +} +function dist_parseOpera(e) { + return stackframesLiteToStackframes(parseOpera$1(e)); +} +function dist_parseOpera9(e) { + return stackframesLiteToStackframes(parseOpera9$1(e)); +} +function dist_parseOpera10(e) { + return stackframesLiteToStackframes(parseOpera10$1(e)); +} +function dist_parseOpera11(error) { + return stackframesLiteToStackframes(parseOpera11$1(error)); +} - // Workaround to ensure stack is preserved for normal errors. - return error.stack; - } +;// ./src/errorParser.js - // https://v8.dev/docs/stack-trace-api - try { - Error.prepareStackTrace = prepareStackTrace; - } catch (e) { - this.options.inspectAnonymousErrors = false; - this.error('anonymous error handler failed', e); - } +var UNKNOWN_FUNCTION = '?'; +var ERR_CLASS_REGEXP = new RegExp('^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): '); +function guessFunctionName() { + return UNKNOWN_FUNCTION; +} +function gatherContext() { + return null; +} +function Frame(stackFrame) { + var data = {}; + data._stackFrame = stackFrame; + data.url = stackFrame.fileName; + data.line = stackFrame.lineNumber; + data.func = stackFrame.functionName; + data.column = stackFrame.columnNumber; + data.args = stackFrame.args; + data.context = gatherContext(); + return data; +} +function Stack(exception, skip) { + function getStack() { + var parserStack = []; + skip = skip || 0; + try { + parserStack = dist_parse(exception); + } catch (_e) { + parserStack = []; } - }, { - key: "handleUnhandledRejection", - value: function handleUnhandledRejection(reason, promise) { - if (!this.options.captureUnhandledRejections && !this.options.handleUnhandledRejections) { - return; - } - var message = 'unhandled rejection was null or undefined!'; - if (reason) { - if (reason.message) { - message = reason.message; - } else { - var reasonResult = stringify(reason); - if (reasonResult.value) { - message = reasonResult.value; - } - } - } - var context = reason && reason._rollbarContext || promise && promise._rollbarContext; - var item; - if (isError(reason)) { - item = this._createItem([message, reason, context]); - } else { - item = this._createItem([message, reason, context]); - item.stackInfo = makeUnhandledStackInfo(message, '', 0, 0, null, 'unhandledrejection', '', errorParser); - } - item.level = this.options.uncaughtErrorLevel; - item._isUncaught = true; - item._originalArgs = item._originalArgs || []; - item._originalArgs.push(promise); - this.client.log(item); + var stack = []; + for (var i = skip; i < parserStack.length; i++) { + stack.push(new Frame(parserStack[i])); } - }, { - key: "wrap", - value: function wrap(f, context, _before) { - try { - var ctxFn; - if (isFunction(context)) { - ctxFn = context; - } else { - ctxFn = function ctxFn() { - return context || {}; - }; - } - if (!isFunction(f)) { - return f; - } - if (f._isWrap) { - return f; - } - if (!f._rollbar_wrapped) { - f._rollbar_wrapped = function () { - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } - try { - return f.apply(this, arguments); - } catch (exc) { - var e = exc; - if (e && window._rollbarWrappedError !== e) { - if (isType(e, 'string')) { - e = new String(e); - } - e._rollbarContext = ctxFn() || {}; - e._rollbarContext._wrappedSource = f.toString(); - window._rollbarWrappedError = e; - } - throw e; - } - }; - f._rollbar_wrapped._isWrap = true; - if (f.hasOwnProperty) { - for (var prop in f) { - if (f.hasOwnProperty(prop) && prop !== '_rollbar_wrapped') { - f._rollbar_wrapped[prop] = f[prop]; - } - } - } - } - return f._rollbar_wrapped; - } catch (e) { - // Return the original function if the wrap fails. - return f; - } - } - }, { - key: "captureEvent", - value: function captureEvent() { - var event = createTelemetryEvent(arguments); - return this.client.captureEvent(event.type, event.metadata, event.level); - } - }, { - key: "setSessionUser", - value: function setSessionUser(user) { - var _this$tracing2; - if (!((_this$tracing2 = this.tracing) !== null && _this$tracing2 !== void 0 && _this$tracing2.session)) return; - this.tracing.session.setUser(user); - } - }, { - key: "setSessionAttributes", - value: function setSessionAttributes(attrs) { - var _this$tracing3; - if (!((_this$tracing3 = this.tracing) !== null && _this$tracing3 !== void 0 && _this$tracing3.session)) return; - attrs = core_objectSpread({}, attrs); - this.tracing.session.setAttributes(attrs); - } - }, { - key: "setSessionAttributesFromOptions", - value: function setSessionAttributesFromOptions(options) { - var _options$payload, _options$client, _options$payload2, _options$payload3, _options$payload4; - var person = options.person || ((_options$payload = options.payload) === null || _options$payload === void 0 ? void 0 : _options$payload.person); - if (person) { - this.setSessionUser(person); - } - var code_version = ((_options$client = options.client) === null || _options$client === void 0 || (_options$client = _options$client.javascript) === null || _options$client === void 0 ? void 0 : _options$client.code_version) || options.codeVersion || options.code_version || ((_options$payload2 = options.payload) === null || _options$payload2 === void 0 || (_options$payload2 = _options$payload2.client) === null || _options$payload2 === void 0 || (_options$payload2 = _options$payload2.javascript) === null || _options$payload2 === void 0 ? void 0 : _options$payload2.code_version) || ((_options$payload3 = options.payload) === null || _options$payload3 === void 0 ? void 0 : _options$payload3.code_version) || ((_options$payload4 = options.payload) === null || _options$payload4 === void 0 ? void 0 : _options$payload4.codeVersion); - this.setSessionAttributes({ - 'rollbar.codeVersion': code_version, - 'rollbar.notifier.name': 'rollbar-browser-js', - 'rollbar.notifier.version': options.version - }); + return stack; + } + return { + stack: getStack(), + message: exception.message, + name: _mostSpecificErrorName(exception), + rawStack: exception.stack, + rawException: exception + }; +} +function errorParser_parse(e, skip) { + var err = e; + if (err.nested || err.cause) { + var traceChain = []; + while (err) { + traceChain.push(new Stack(err, skip)); + err = err.nested || err.cause; + skip = 0; // Only apply skip value to primary error } - // The following two methods are used internally and are not meant for public use - }, { - key: "captureDomContentLoaded", - value: function captureDomContentLoaded(e, ts) { - if (!ts) { - ts = new Date(); + // Return primary error with full trace chain attached. + traceChain[0].traceChain = traceChain; + return traceChain[0]; + } else { + return new Stack(err, skip); + } +} +function guessErrorClass(errMsg) { + if (!errMsg || !errMsg.match) { + return ['Unknown error. There was no error message to display.', '']; + } + var errClassMatch = errMsg.match(ERR_CLASS_REGEXP); + var errClass = '(unknown)'; + if (errClassMatch) { + errClass = errClassMatch[errClassMatch.length - 1]; + errMsg = errMsg.replace((errClassMatch[errClassMatch.length - 2] || '') + errClass + ':', ''); + errMsg = errMsg.replace(/(^[\s]+|[\s]+$)/g, ''); + } + return [errClass, errMsg]; +} + +// * Prefers any value over an empty string +// * Prefers any value over 'Error' where possible +// * Prefers name over constructor.name when both are more specific than 'Error' +function _mostSpecificErrorName(error) { + var name = error.name && error.name.length && error.name; + var constructorName = error.constructor.name && error.constructor.name.length && error.constructor.name; + if (!name || !constructorName) { + return name || constructorName; + } + if (name === 'Error') { + return constructorName; + } + return name; +} +/* harmony default export */ var errorParser = ({ + guessFunctionName: guessFunctionName, + guessErrorClass: guessErrorClass, + gatherContext: gatherContext, + parse: errorParser_parse, + Stack: Stack, + Frame: Frame +}); +;// ./src/predicates.js +function predicates_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = predicates_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function predicates_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return predicates_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? predicates_arrayLikeToArray(r, a) : void 0; } } +function predicates_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } + +function checkLevel(item, settings) { + var level = item.level; + var levelVal = LEVELS[level] || 0; + var reportLevel = settings.reportLevel; + var reportLevelVal = LEVELS[reportLevel] || 0; + if (levelVal < reportLevelVal) { + return false; + } + return true; +} +function userCheckIgnore(logger) { + return function (item, settings) { + var isUncaught = Boolean(item._isUncaught); + delete item._isUncaught; + var args = item._originalArgs; + delete item._originalArgs; + try { + if (isFunction(settings.onSendCallback)) { + settings.onSendCallback(isUncaught, args, item); } - return this.client.captureDomContentLoaded(ts); + } catch (e) { + settings.onSendCallback = null; + logger.error('Error while calling onSendCallback, removing', e); } - }, { - key: "captureLoad", - value: function captureLoad(e, ts) { - if (!ts) { - ts = new Date(); + try { + if (isFunction(settings.checkIgnore) && settings.checkIgnore(isUncaught, args, item)) { + return false; } - return this.client.captureLoad(ts); + } catch (e) { + settings.checkIgnore = null; + logger.error('Error while calling custom checkIgnore(), removing', e); } - }, { - key: "loadFull", - value: function loadFull() { - src_logger.info('Unexpected Rollbar.loadFull() called on a Notifier instance. This can happen when Rollbar is loaded multiple times.'); + return true; + }; +} +function urlIsNotBlockListed(logger) { + return function (item, settings) { + return !urlIsOnAList(item, settings, 'blocklist', logger); + }; +} +function urlIsSafeListed(logger) { + return function (item, settings) { + return urlIsOnAList(item, settings, 'safelist', logger); + }; +} +function matchFrames(trace, list, block) { + if (!trace) { + return !block; + } + var frames = trace.frames; + if (!frames || frames.length === 0) { + return !block; + } + var frame, filename, url, urlRegex; + var listLength = list.length; + var frameLength = frames.length; + for (var i = 0; i < frameLength; i++) { + frame = frames[i]; + filename = frame.filename; + if (!isType(filename, 'string')) { + return !block; } - }, { - key: "_createItem", - value: function _createItem(args) { - return createItem(args, src_logger, this); + for (var j = 0; j < listLength; j++) { + url = list[j]; + urlRegex = new RegExp(url); + if (urlRegex.test(filename)) { + return true; + } } + } + return false; +} +function urlIsOnAList(item, settings, safeOrBlock, logger) { + // safelist is the default + var block = false; + if (safeOrBlock === 'blocklist') { + block = true; + } + var list, traces; + try { + list = block ? settings.hostBlockList : settings.hostSafeList; + traces = get(item, 'body.trace_chain') || [get(item, 'body.trace')]; - // Static version of instance methods support the legacy pattern of a - // global `Rollbar` instance, where after calling `Rollbar.init()`, - // `Rollbar` can be used as if it were an instance. - // If support for this pattern is dropped, these static methods can be removed. - }], [{ - key: "init", - value: function init(options, client) { - if (_instance) { - return _instance.global(options).configure(options); - } - _instance = new Rollbar(options, client); - return _instance; + // These two checks are important to come first as they are defaults + // in case the list is missing or the trace is missing or not well-formed + if (!list || list.length === 0) { + return !block; } - }, { - key: "setComponents", - value: function setComponents(components) { - Rollbar.prototype.components = components; + if (traces.length === 0 || !traces[0]) { + return !block; } - }, { - key: "callInstance", - value: function callInstance(method, args) { - if (!_instance) { - var message = 'Rollbar is not initialized'; - src_logger.error(message); - var maybeCallback = _getFirstFunction(args); - if (maybeCallback) { - maybeCallback(new Error(message)); - } - return; + var tracesLength = traces.length; + for (var i = 0; i < tracesLength; i++) { + if (matchFrames(traces[i], list, block)) { + return true; } - return _instance[method].apply(_instance, args); } - }]); -}(); -/* Internal */ -_Rollbar = core_Rollbar; -core_defineProperty(core_Rollbar, "global", function () { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; + } catch (e + /* istanbul ignore next */) { + if (block) { + settings.hostBlockList = null; + } else { + settings.hostSafeList = null; + } + var listName = block ? 'hostBlockList' : 'hostSafeList'; + logger.error("Error while reading your configuration's " + listName + ' option. Removing custom ' + listName + '.', e); + return !block; } - return _Rollbar.callInstance('global', args); -}); -core_defineProperty(core_Rollbar, "configure", function () { - for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - return _Rollbar.callInstance('configure', args); -}); -core_defineProperty(core_Rollbar, "lastError", function () { - for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } - return _Rollbar.callInstance('lastError', args); -}); -core_defineProperty(core_Rollbar, "log", function () { - for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; - } - return _Rollbar.callInstance('log', args); -}); -core_defineProperty(core_Rollbar, "debug", function () { - for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { - args[_key5] = arguments[_key5]; - } - return _Rollbar.callInstance('debug', args); -}); -core_defineProperty(core_Rollbar, "info", function () { - for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { - args[_key6] = arguments[_key6]; - } - return _Rollbar.callInstance('info', args); -}); -core_defineProperty(core_Rollbar, "warn", function () { - for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { - args[_key7] = arguments[_key7]; - } - return _Rollbar.callInstance('warn', args); -}); -core_defineProperty(core_Rollbar, "warning", function () { - for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { - args[_key8] = arguments[_key8]; - } - return _Rollbar.callInstance('warning', args); -}); -core_defineProperty(core_Rollbar, "error", function () { - for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) { - args[_key9] = arguments[_key9]; - } - return _Rollbar.callInstance('error', args); -}); -core_defineProperty(core_Rollbar, "critical", function () { - for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) { - args[_key10] = arguments[_key10]; - } - return _Rollbar.callInstance('critical', args); -}); -core_defineProperty(core_Rollbar, "buildJsonPayload", function () { - for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) { - args[_key11] = arguments[_key11]; - } - return _Rollbar.callInstance('buildJsonPayload', args); -}); -core_defineProperty(core_Rollbar, "sendJsonPayload", function () { - for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) { - args[_key12] = arguments[_key12]; - } - return _Rollbar.callInstance('sendJsonPayload', args); -}); -core_defineProperty(core_Rollbar, "wrap", function () { - for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) { - args[_key13] = arguments[_key13]; - } - return _Rollbar.callInstance('wrap', args); -}); -core_defineProperty(core_Rollbar, "captureEvent", function () { - for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) { - args[_key14] = arguments[_key14]; - } - return _Rollbar.callInstance('captureEvent', args); -}); -function addTransformsToNotifier(notifier, rollbar, gWindow) { - notifier.addTransform(handleDomException).addTransform(handleItemWithError).addTransform(ensureItemHasSomethingToSay).addTransform(addBaseInfo).addTransform(addRequestInfo(gWindow)).addTransform(addClientInfo(gWindow)).addTransform(addPluginInfo(gWindow)).addTransform(addBody).addTransform(addMessageWithError).addTransform(addTelemetryData).addTransform(addConfigToPayload).addTransform(addScrubber(rollbar.scrub)).addTransform(addPayloadOptions).addTransform(userTransform(src_logger)).addTransform(addConfiguredOptions).addTransform(addDiagnosticKeys).addTransform(itemToPayload); + return false; } -function addPredicatesToQueue(queue) { - queue.addPredicate(checkLevel).addPredicate(checkIgnore).addPredicate(userCheckIgnore(src_logger)).addPredicate(urlIsNotBlockListed(src_logger)).addPredicate(urlIsSafeListed(src_logger)).addPredicate(messageIsIgnored(src_logger)); +function messageIsIgnored(logger) { + return function (item, settings) { + var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages; + try { + messageIsIgnored = false; + ignoredMessages = settings.ignoredMessages; + if (!ignoredMessages || ignoredMessages.length === 0) { + return true; + } + messages = messagesFromItem(item); + if (messages.length === 0) { + return true; + } + len = ignoredMessages.length; + for (i = 0; i < len; i++) { + rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi'); + for (j = 0; j < messages.length; j++) { + messageIsIgnored = rIgnoredMessage.test(messages[j]); + if (messageIsIgnored) { + return false; + } + } + } + } catch (_e + /* istanbul ignore next */) { + settings.ignoredMessages = null; + logger.error("Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages."); + } + return true; + }; } -function _getFirstFunction(args) { - for (var i = 0, len = args.length; i < len; ++i) { - if (isFunction(args[i])) { - return args[i]; +function messagesFromItem(item) { + var body = item.body; + var messages = []; + + // The payload schema only allows one of trace_chain, message, or trace. + // However, existing test cases are based on having both trace and message present. + // So here we preserve the ability to collect strings from any combination of these keys. + if (body.trace_chain) { + var traceChain = body.trace_chain; + var _iterator = predicates_createForOfIteratorHelper(traceChain), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var trace = _step.value; + messages.push(get(trace, 'exception.message')); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); } } - return undefined; -} -function _gWindow() { - return typeof window != 'undefined' && window || typeof self != 'undefined' && self; + if (body.trace) { + messages.push(get(body, 'trace.exception.message')); + } + if (body.message) { + messages.push(get(body, 'message.body')); + } + return messages; } +;// ./src/notifier.js +function notifier_typeof(o) { "@babel/helpers - typeof"; return notifier_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, notifier_typeof(o); } +function notifier_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function notifier_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, notifier_toPropertyKey(o.key), o); } } +function notifier_createClass(e, r, t) { return r && notifier_defineProperties(e.prototype, r), t && notifier_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function notifier_toPropertyKey(t) { var i = notifier_toPrimitive(t, "string"); return "symbol" == notifier_typeof(i) ? i : i + ""; } +function notifier_toPrimitive(t, r) { if ("object" != notifier_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != notifier_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -var core_defaultOptions = { - environment: 'unknown', - version: version, - scrubFields: browser_defaults.scrubFields, - logLevel: logLevel, - reportLevel: reportLevel, - uncaughtErrorLevel: uncaughtErrorLevel, - endpoint: endpoint, - verbose: false, - enabled: true, - transmit: true, - sendConfig: false, - includeItemsInTelemetry: true, - captureIp: true, - inspectAnonymousErrors: true, - ignoreDuplicateErrors: true, - wrapGlobalEventHandlers: false, - replay: defaults, - tracing: tracing_defaults -}; -/* harmony default export */ var core = (core_Rollbar); -;// ./src/telemetry.js -var _excluded = ["otelAttributes"]; -function telemetry_typeof(o) { "@babel/helpers - typeof"; return telemetry_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, telemetry_typeof(o); } -function telemetry_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function telemetry_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? telemetry_ownKeys(Object(t), !0).forEach(function (r) { telemetry_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : telemetry_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function telemetry_defineProperty(e, r, t) { return (r = telemetry_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } -function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } -function telemetry_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function telemetry_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, telemetry_toPropertyKey(o.key), o); } } -function telemetry_createClass(e, r, t) { return r && telemetry_defineProperties(e.prototype, r), t && telemetry_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function telemetry_toPropertyKey(t) { var i = telemetry_toPrimitive(t, "string"); return "symbol" == telemetry_typeof(i) ? i : i + ""; } -function telemetry_toPrimitive(t, r) { if ("object" != telemetry_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != telemetry_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - -var MAX_EVENTS = 100; -// Temporary workaround while solving commonjs -> esm issues in Node 18 - 20. -function fromMillis(millis) { - return [Math.trunc(millis / 1000), Math.round(millis % 1000 * 1e6)]; -} -var Telemeter = /*#__PURE__*/function () { - function Telemeter(options, tracing) { - var _this$tracing; - telemetry_classCallCheck(this, Telemeter); - this.queue = []; - this.options = src_merge(options); - var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS; - this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS)); - this.tracing = tracing; - this.telemetrySpan = (_this$tracing = this.tracing) === null || _this$tracing === void 0 ? void 0 : _this$tracing.startSpan('rollbar-telemetry', {}); +/* + * Notifier - delegates between the client exposed API, the chain of transforms + * necessary to turn an item into something that can be sent to Rollbar, and the + * queue which handles the communcation with the Rollbar API servers. + */ +var Notifier = /*#__PURE__*/function () { + /** + * + * @param {Object} queue - an object that conforms to the interface: + * `addItem(item, callback)` + * @param {Object} options - an object representing the options to be set for + * this notifier, this should have any defaults already set by the caller + */ + function Notifier(queue, options) { + notifier_classCallCheck(this, Notifier); + this.queue = queue; + this.options = options; + this.transforms = []; + this.diagnostic = {}; } - return telemetry_createClass(Telemeter, [{ + + /** + * configure - updates the options for this notifier with the passed in object + * + * @param {Object} options - an object which gets merged with the current + * options set on this notifier + * @returns this + */ + return notifier_createClass(Notifier, [{ key: "configure", value: function configure(options) { + var _this$queue; + (_this$queue = this.queue) === null || _this$queue === void 0 || _this$queue.configure(options); var oldOptions = this.options; - this.options = src_merge(oldOptions, options); - var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS; - var newMaxEvents = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS)); - var deleteCount = 0; - if (this.queue.length > newMaxEvents) { - deleteCount = this.queue.length - newMaxEvents; - } - this.maxQueueSize = newMaxEvents; - this.queue.splice(0, deleteCount); + this.options = merge(oldOptions, options); + return this; } + + /** + * Adds a transform onto the end of the queue of transforms for this notifier + * + * @param {Function} transform - a function which takes three arguments: + * - item: An Object representing the data to eventually be sent to Rollbar + * - options: The current value of the options for this notifier + * - callback: `function(err: (Null|Error), item: (Null|Object))` the + * transform must call this callback with a null value for error if it + * wants the processing chain to continue, otherwise with an error to + * terminate the processing. The item should be the updated item after + * this transform is finished modifying it. + */ }, { - key: "copyEvents", - value: function copyEvents() { - var events = Array.prototype.slice.call(this.queue, 0); - if (isFunction(this.options.filterTelemetry)) { - try { - var i = events.length; - while (i--) { - if (this.options.filterTelemetry(events[i])) { - events.splice(i, 1); - } - } - } catch (e) { - this.options.filterTelemetry = null; - } + key: "addTransform", + value: function addTransform(transform) { + if (isFunction(transform)) { + this.transforms.push(transform); } + return this; + } - // Filter until supported in legacy telemetry - events = events.filter(function (e) { - return e.type !== 'connectivity'; - }); - - // Remove internal keys from output - events = events.map(function (_ref) { - var otelAttributes = _ref.otelAttributes, - event = _objectWithoutProperties(_ref, _excluded); - return event; + /** + * The internal log function which applies the configured transforms and then + * pushes onto the queue to be sent to the backend. + * + * @param {Object} item - An object with the following structure: + * - message [String] - An optional string to be sent to rollbar + * - error [Error] - An optional error + * @param {Function} callback - A function of type `function(err, resp)` which + * will be called with exactly one null argument and one non-null argument. + * The callback will be called once, either during the transform stage if + * an error occurs inside a transform, or in response to the communication + * with the backend. The second argument will be the response from the + * backend in case of success. + */ + }, { + key: "log", + value: function log(item, callback) { + var _this = this; + callback = isFunction(callback) ? callback : function () {}; + if (!this.options.enabled) { + return callback(new Error('Rollbar is not enabled'), null); + } + this.queue.addPendingItem(item); + var originalError = item.err; + this._applyTransforms(item, function (err, i) { + if (err) { + _this.queue.removePendingItem(item); + return callback(err, null); + } + _this.queue.addItem(i, callback, originalError, item); }); - return events; } + + /* Internal */ + + /** + * Applies the transforms that have been added to this notifier sequentially. + * See `addTransform` for more information. + * + * @param {Object} item - An item to be transformed + * @param {Function} callback - A function of type `function(err, item)` which + * will be called with a non-null error and a null item in the case of a + * transform failure, or a null error and non-null item after all + * transforms have been applied. + */ }, { - key: "exportTelemetrySpan", - value: function exportTelemetrySpan() { - var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - if (this.telemetrySpan) { - this.telemetrySpan.end(attributes); - this.telemetrySpan = this.tracing.startSpan('rollbar-telemetry', {}); - } + key: "_applyTransforms", + value: function _applyTransforms(item, callback) { + var transformIndex = -1; + var transformsLength = this.transforms.length; + var transforms = this.transforms; + var options = this.options; + var _next = function next(err, i) { + if (err) { + callback(err, null); + return; + } + transformIndex++; + if (transformIndex === transformsLength) { + callback(null, i); + return; + } + transforms[transformIndex](i, options, _next); + }; + _next(null, item); } - }, { - key: "capture", - value: function capture(type, metadata, level, rollbarUUID) { - var timestamp = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null; - var otelAttributes = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null; - var e = { - level: getLevel(type, level), - type: type, - timestamp_ms: timestamp || utility_now(), - body: metadata, - source: 'client' - }; - if (rollbarUUID) { - e.uuid = rollbarUUID; - } - if (otelAttributes) { - e.otelAttributes = otelAttributes; - } - try { - if (isFunction(this.options.filterTelemetry) && this.options.filterTelemetry(e)) { - return false; - } - } catch (exc) { - this.options.filterTelemetry = null; + }]); +}(); + +;// ./src/queue.js +function queue_typeof(o) { "@babel/helpers - typeof"; return queue_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, queue_typeof(o); } +function queue_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function queue_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, queue_toPropertyKey(o.key), o); } } +function queue_createClass(e, r, t) { return r && queue_defineProperties(e.prototype, r), t && queue_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function queue_defineProperty(e, r, t) { return (r = queue_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function queue_toPropertyKey(t) { var i = queue_toPrimitive(t, "string"); return "symbol" == queue_typeof(i) ? i : i + ""; } +function queue_toPrimitive(t, r) { if ("object" != queue_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != queue_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + + +/** + * Queue - an object which handles which handles a queue of items to be sent to Rollbar. + * This object handles rate limiting via a passed in rate limiter, retries based on connection + * errors, and filtering of items based on a set of configurable predicates. The communication to + * the backend is performed via a given API object. + */ +var Queue = /*#__PURE__*/function () { + /** + * @param rateLimiter - An object which conforms to the interface + * `rateLimiter.shouldSend(item) -> bool` + * @param api - An object which conforms to the interface + * `api.postItem(payload, function(err, response))` + * @param logger - An object used to log verbose messages if desired + * @param options - see `Queue.prototype.configure` + * @param replay - Optional `Replay` for coordinating session replay with error occurrences + */ + function Queue(rateLimiter, api, logger, options, replay) { + queue_classCallCheck(this, Queue); + this.rateLimiter = rateLimiter; + this.api = api; + this.logger = logger; + this.options = options; + this.replay = replay; + this.predicates = []; + this.pendingItems = []; + this.pendingRequests = []; + this.retryQueue = []; + this.retryHandle = null; + this.waitCallback = null; + this.waitIntervalID = null; + } + + /** + * configure - updates the options this queue uses + * + * @param options + */ + return queue_createClass(Queue, [{ + key: "configure", + value: function configure(options) { + var _this$api; + (_this$api = this.api) === null || _this$api === void 0 || _this$api.configure(options); + var oldOptions = this.options; + this.options = merge(oldOptions, options); + return this; + } + + /** + * addPredicate - adds a predicate to the end of the list of predicates for this queue + * + * @param predicate - function(item, options) -> (bool|{err: Error}) + * Returning true means that this predicate passes and the item is okay to go on the queue + * Returning false means do not add the item to the queue, but it is not an error + * Returning {err: Error} means do not add the item to the queue, and the given error explains why + * Returning {err: undefined} is equivalent to returning true but don't do that + */ + }, { + key: "addPredicate", + value: function addPredicate(predicate) { + if (isFunction(predicate)) { + this.predicates.push(predicate); } - this.push(e); - return e; + return this; } }, { - key: "captureEvent", - value: function captureEvent(type, metadata, level, rollbarUUID) { - return this.capture(type, metadata, level, rollbarUUID); + key: "addPendingItem", + value: function addPendingItem(item) { + this.pendingItems.push(item); } }, { - key: "captureError", - value: function captureError(err, level, rollbarUUID, timestamp) { - var _this$telemetrySpan; - var message = err.message || String(err); - var metadata = { - message: message - }; - if (err.stack) { - metadata.stack = err.stack; + key: "removePendingItem", + value: function removePendingItem(item) { + var idx = this.pendingItems.indexOf(item); + if (idx !== -1) { + this.pendingItems.splice(idx, 1); } - var otelAttributes = { - message: message, - level: level, - type: 'error', - uuid: rollbarUUID - }; - (_this$telemetrySpan = this.telemetrySpan) === null || _this$telemetrySpan === void 0 || _this$telemetrySpan.addEvent('rollbar-occurrence-event', otelAttributes, fromMillis(timestamp)); - return this.capture('error', metadata, level, rollbarUUID, timestamp, otelAttributes); } - }, { - key: "captureLog", - value: function captureLog(message, level, rollbarUUID, timestamp) { - var otelAttributes = null; - // If the uuid is present, this is a message occurrence. - if (rollbarUUID) { - var _this$telemetrySpan2; - otelAttributes = { - message: message, - level: level, - type: 'message', - uuid: rollbarUUID - }, (_this$telemetrySpan2 = this.telemetrySpan) === null || _this$telemetrySpan2 === void 0 ? void 0 : _this$telemetrySpan2.addEvent('rollbar-occurrence-event', otelAttributes, fromMillis(timestamp)); - } else { - var _this$telemetrySpan3; - otelAttributes = { - message: message, - level: level + /** + * addItem - Send an item to the Rollbar API if all of the predicates are satisfied + * + * @param item - Item instance with the payload to send to the backend + * @param callback - function(error, repsonse) which will be called with the response from the API + * in the case of a success, otherwise response will be null and error will have a value. If both + * error and response are null then the item was stopped by a predicate which did not consider this + * to be an error condition, but nonetheless did not send the item to the API. + * @param originalError - The original error before any transformations that is to be logged if any + * @param originalItem - The original item before transforms, used in pendingItems queue + */ + }, { + key: "addItem", + value: function addItem(item, callback, originalError, originalItem) { + var _this = this; + if (!callback || !isFunction(callback)) { + callback = function callback() { + return; }; - (_this$telemetrySpan3 = this.telemetrySpan) === null || _this$telemetrySpan3 === void 0 || _this$telemetrySpan3.addEvent('rollbar-log-event', otelAttributes, fromMillis(timestamp)); } - return this.capture('log', { - message: message - }, level, rollbarUUID, timestamp, otelAttributes); - } - }, { - key: "captureNetwork", - value: function captureNetwork(metadata, subtype, rollbarUUID, requestData) { - var _metadata$response, _this$telemetrySpan4; - subtype = subtype || 'xhr'; - metadata.subtype = metadata.subtype || subtype; - if (requestData) { - metadata.request = requestData; + var data = item.data; + var predicateResult = this._applyPredicates(data); + if (predicateResult.stop) { + this.removePendingItem(originalItem); + callback(predicateResult.err); + return; } - var level = this.levelFromStatus(metadata.status_code); - var endTimeNano = (metadata.end_time_ms || 0) * 1e6; - var otelAttributes = { - type: metadata.subtype, - method: metadata.method, - url: metadata.url, - statusCode: metadata.status_code, - 'request.headers': JSON.stringify(metadata.request_headers || {}), - 'response.headers': JSON.stringify(((_metadata$response = metadata.response) === null || _metadata$response === void 0 ? void 0 : _metadata$response.headers) || {}), - 'response.timeUnixNano': endTimeNano.toString() - }; - (_this$telemetrySpan4 = this.telemetrySpan) === null || _this$telemetrySpan4 === void 0 || _this$telemetrySpan4.addEvent('rollbar-network-event', otelAttributes, fromMillis(metadata.start_time_ms)); - return this.capture('network', metadata, level, rollbarUUID, metadata.start_time_ms, otelAttributes); - } - }, { - key: "levelFromStatus", - value: function levelFromStatus(statusCode) { - if (statusCode >= 200 && statusCode < 400) { - return 'info'; + this._maybeLog(data, originalError); + this.removePendingItem(originalItem); + if (!this.options.transmit) { + callback(new Error('Transmit disabled')); + return; } - if (statusCode === 0 || statusCode >= 400) { - return 'error'; + if (this.replay && data.body) { + item.replayId = this.replay.capture(null, data.uuid, { + type: 'occurrence', + level: item.level + }); + if (item.replayId) { + addItemAttributes(item.data, [{ + key: 'replay_id', + value: item.replayId + }]); + } + } + this.pendingRequests.push(data); + try { + this._makeApiRequest(data, function (err, resp, headers) { + _this._dequeuePendingRequest(data); + if (item.replayId) { + _this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers); + } + callback(err, resp); + }); + } catch (err) { + this._dequeuePendingRequest(data); + if (item.replayId) { + var _this$replay; + (_this$replay = this.replay) === null || _this$replay === void 0 || _this$replay.discard(item.replayId); + } + callback(err); } - return 'info'; } + + /** + * wait - Stop any further errors from being added to the queue, and get called back when all items + * currently processing have finished sending to the backend. + * + * @param callback - function() called when all pending items have been sent + */ }, { - key: "captureDom", - value: function captureDom(subtype, element, value, checked, rollbarUUID) { - var metadata = { - subtype: subtype, - element: element - }; - if (value !== undefined) { - metadata.value = value; + key: "wait", + value: function wait(callback) { + var _this2 = this; + if (!isFunction(callback)) { + return; } - if (checked !== undefined) { - metadata.checked = checked; + this.waitCallback = callback; + if (this._maybeCallWait()) { + return; } - return this.capture('dom', metadata, 'info', rollbarUUID); + if (this.waitIntervalID) { + this.waitIntervalID = clearInterval(this.waitIntervalID); + } + this.waitIntervalID = setInterval(function () { + _this2._maybeCallWait(); + }, 500); } + + /** + * Sequentially applies the predicates that have been added to the queue to the + * given item with the currently configured options. + * + * @param item - An item in the queue + * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue, + * the error value should be passed up to a callbak if we are stopping. + */ }, { - key: "captureInput", - value: function captureInput(_ref2) { - var _this$telemetrySpan5; - var type = _ref2.type, - isSynthetic = _ref2.isSynthetic, - element = _ref2.element, - value = _ref2.value, - timestamp = _ref2.timestamp; - var name = 'rollbar-input-event'; - var metadata = { - type: name, - subtype: type, - element: element, - value: value - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic, - element: element, - value: value, - endTimeUnixNano: fromMillis(timestamp) - }; - var event = this._getRepeatedEvent(name, otelAttributes); - if (event) { - return this._updateRepeatedEvent(event, otelAttributes, timestamp); + key: "_applyPredicates", + value: function _applyPredicates(item) { + var p = null; + for (var i = 0, len = this.predicates.length; i < len; i++) { + p = this.predicates[i](item, this.options); + if (!p || p.err !== undefined) { + return { + stop: true, + err: p.err + }; + } } - (_this$telemetrySpan5 = this.telemetrySpan) === null || _this$telemetrySpan5 === void 0 || _this$telemetrySpan5.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + return { + stop: false, + err: null + }; } + + /** + * Send an item to Rollbar, callback when done, if there is an error make an + * effort to retry if we are configured to do so. + * + * @param item - an item ready to send to the backend + * @param callback - function(err, response) + */ }, { - key: "captureClick", - value: function captureClick(_ref3) { - var _this$telemetrySpan6; - var type = _ref3.type, - isSynthetic = _ref3.isSynthetic, - element = _ref3.element, - timestamp = _ref3.timestamp; - var name = 'rollbar-click-event'; - var metadata = { - type: name, - subtype: type, - element: element - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic, - element: element, - endTimeUnixNano: fromMillis(timestamp) - }; - var event = this._getRepeatedEvent(name, otelAttributes); - if (event) { - return this._updateRepeatedEvent(event, otelAttributes, timestamp); + key: "_makeApiRequest", + value: function _makeApiRequest(item, callback) { + var _this3 = this; + var rateLimitResponse = this.rateLimiter.shouldSend(item); + if (rateLimitResponse.shouldSend) { + this.api.postItem(item, function (err, resp, headers) { + if (err) { + _this3._maybeRetry(err, item, callback); + } else { + callback(err, resp, headers); + } + }); + } else if (rateLimitResponse.error) { + callback(rateLimitResponse.error); + } else { + this.api.postItem(rateLimitResponse.payload, callback); } - (_this$telemetrySpan6 = this.telemetrySpan) === null || _this$telemetrySpan6 === void 0 || _this$telemetrySpan6.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); } + + // These are errors basically mean there is no internet connection }, { - key: "_getRepeatedEvent", - value: function _getRepeatedEvent(name, attributes) { - var lastEvent = this._lastEvent(this.queue); - if (lastEvent && lastEvent.body.type === name && lastEvent.otelAttributes.target === attributes.target) { - return lastEvent; + key: "_maybeRetry", + value: + /** + * Given the error returned by the API, decide if we should retry or just callback + * with the error. + * + * @param err - an error returned by the API transport + * @param item - the item that was trying to be sent when this error occured + * @param callback - function(err, response) + */ + function _maybeRetry(err, item, callback) { + var shouldRetry = false; + if (this.options.retryInterval) { + for (var i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) { + if (err.code === Queue.RETRIABLE_ERRORS[i]) { + shouldRetry = true; + break; + } + } + if (shouldRetry && isFiniteNumber(this.options.maxRetries)) { + item.retries = item.retries ? item.retries + 1 : 1; + if (item.retries > this.options.maxRetries) { + shouldRetry = false; + } + } + } + if (shouldRetry) { + this._retryApiRequest(item, callback); + } else { + callback(err); } } + + /** + * Add an item and a callback to a queue and possibly start a timer to process + * that queue based on the retryInterval in the options for this queue. + * + * @param item - an item that failed to send due to an error we deem retriable + * @param callback - function(err, response) + */ }, { - key: "_updateRepeatedEvent", - value: function _updateRepeatedEvent(event, attributes, timestamp) { - var duration = Math.max(timestamp - event.timestamp_ms, 1); - event.body.value = attributes.value; - event.otelAttributes.value = attributes.value; - event.otelAttributes.height = attributes.height; - event.otelAttributes.width = attributes.width; - event.otelAttributes.textZoomRatio = attributes.textZoomRatio; - event.otelAttributes['endTimeUnixNano'] = fromMillis(timestamp); - event.otelAttributes['durationUnixNano'] = fromMillis(duration); - event.otelAttributes.count = (event.otelAttributes.count || 1) + 1; - event.otelAttributes.rate = event.otelAttributes.count / (duration / 1000); + key: "_retryApiRequest", + value: function _retryApiRequest(item, callback) { + var _this4 = this; + this.retryQueue.push({ + item: item, + callback: callback + }); + if (!this.retryHandle) { + this.retryHandle = setInterval(function () { + while (_this4.retryQueue.length) { + var retryObject = _this4.retryQueue.shift(); + _this4._makeApiRequest(retryObject.item, retryObject.callback); + } + }, this.options.retryInterval); + } } + + /** + * Removes the item from the pending request queue, this queue is used to + * enable to functionality of providing a callback that clients can pass to `wait` to be notified + * when the pending request queue has been emptied. This must be called when the API finishes + * processing this item. If a `wait` callback is configured, it is called by this function. + * + * @param item - the item previously added to the pending request queue + */ }, { - key: "_lastEvent", - value: function _lastEvent(list) { - return list.length > 0 ? list[list.length - 1] : null; + key: "_dequeuePendingRequest", + value: function _dequeuePendingRequest(item) { + var idx = this.pendingRequests.indexOf(item); + if (idx !== -1) { + this.pendingRequests.splice(idx, 1); + this._maybeCallWait(); + } } }, { - key: "captureFocus", - value: function captureFocus(_ref4) { - var _this$telemetrySpan7; - var type = _ref4.type, - isSynthetic = _ref4.isSynthetic, - element = _ref4.element, - timestamp = _ref4.timestamp; - var name = 'rollbar-focus-event'; - var metadata = { - type: name, - subtype: type, - element: element - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic, - element: element - }; - (_this$telemetrySpan7 = this.telemetrySpan) === null || _this$telemetrySpan7 === void 0 || _this$telemetrySpan7.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + key: "_maybeLog", + value: function _maybeLog(data, originalError) { + if (this.logger && this.options.verbose) { + var message = originalError || get(data, 'body.trace.exception.message') || get(data, 'body.trace_chain.0.exception.message'); + if (message) { + this.logger.error(message); + return; + } + message = get(data, 'body.message.body'); + if (message) { + this.logger.log(message); + } + } } }, { - key: "captureResize", - value: function captureResize(_ref5) { - var _this$telemetrySpan8; - var type = _ref5.type, - isSynthetic = _ref5.isSynthetic, - width = _ref5.width, - height = _ref5.height, - textZoomRatio = _ref5.textZoomRatio, - timestamp = _ref5.timestamp; - var name = 'rollbar-resize-event'; - var metadata = { - type: name, - subtype: type, - width: width, - height: height, - textZoomRatio: textZoomRatio - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic, - width: width, - height: height, - textZoomRatio: textZoomRatio - }; - var event = this._getRepeatedEvent(name, otelAttributes); - if (event) { - return this._updateRepeatedEvent(event, otelAttributes, timestamp); + key: "_maybeCallWait", + value: function _maybeCallWait() { + if (isFunction(this.waitCallback) && this.pendingItems.length === 0 && this.pendingRequests.length === 0) { + if (this.waitIntervalID) { + this.waitIntervalID = clearInterval(this.waitIntervalID); + } + this.waitCallback(); + return true; } - (_this$telemetrySpan8 = this.telemetrySpan) === null || _this$telemetrySpan8 === void 0 || _this$telemetrySpan8.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + return false; } - }, { - key: "captureDragDrop", - value: function captureDragDrop(_ref6) { - var _this$telemetrySpan9; - var type = _ref6.type, - isSynthetic = _ref6.isSynthetic, - element = _ref6.element, - dropEffect = _ref6.dropEffect, - effectAllowed = _ref6.effectAllowed, - kinds = _ref6.kinds, - mediaTypes = _ref6.mediaTypes, - timestamp = _ref6.timestamp; - var name = 'rollbar-dragdrop-event'; - var metadata = { - type: name, - subtype: type, - isSynthetic: isSynthetic - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic - }; - if (type === 'dragstart') { - metadata = telemetry_objectSpread(telemetry_objectSpread({}, metadata), {}, { - element: element, - dropEffect: dropEffect, - effectAllowed: effectAllowed - }); - otelAttributes = telemetry_objectSpread(telemetry_objectSpread({}, otelAttributes), {}, { - element: element, - dropEffect: dropEffect, - effectAllowed: effectAllowed - }); + }]); +}(); +queue_defineProperty(Queue, "RETRIABLE_ERRORS", ['ECONNRESET', 'ENOTFOUND', 'ESOCKETTIMEDOUT', 'ETIMEDOUT', 'ECONNREFUSED', 'EHOSTUNREACH', 'EPIPE', 'EAI_AGAIN']); +/* harmony default export */ var queue = (Queue); +;// ./src/rateLimiter.js +function rateLimiter_typeof(o) { "@babel/helpers - typeof"; return rateLimiter_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, rateLimiter_typeof(o); } +function _readOnlyError(r) { throw new TypeError('"' + r + '" is read-only'); } +function rateLimiter_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function rateLimiter_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, rateLimiter_toPropertyKey(o.key), o); } } +function rateLimiter_createClass(e, r, t) { return r && rateLimiter_defineProperties(e.prototype, r), t && rateLimiter_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function rateLimiter_defineProperty(e, r, t) { return (r = rateLimiter_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function rateLimiter_toPropertyKey(t) { var i = rateLimiter_toPrimitive(t, "string"); return "symbol" == rateLimiter_typeof(i) ? i : i + ""; } +function rateLimiter_toPrimitive(t, r) { if ("object" != rateLimiter_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != rateLimiter_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +/* + * RateLimiter - encapsulates the logic for counting items sent to Rollbar. + * + * @param options - the same options that are accepted by configureGlobal offered as a convenience + */ +var RateLimiter = /*#__PURE__*/function () { + function RateLimiter() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + rateLimiter_classCallCheck(this, RateLimiter); + this.startTime = Date.now(); + this.counter = 0; + this.perMinCounter = 0; + this.platform = null; + this.platformOptions = {}; + this.configureGlobal(options); + } + + /* + * configureGlobal - set the global rate limiter options + * + * @param options - Only the following values are recognized: + * startTime: a timestamp of the form returned by (new Date()).getTime() + * maxItems: the maximum items + * itemsPerMinute: the max number of items to send in a given minute + */ + return rateLimiter_createClass(RateLimiter, [{ + key: "configureGlobal", + value: function configureGlobal() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var startTime = options.startTime, + maxItems = options.maxItems, + itemsPerMinute = options.itemsPerMinute; + if (startTime !== undefined) { + RateLimiter.globalSettings.startTime = startTime; } - if (type === 'drop') { - metadata = telemetry_objectSpread(telemetry_objectSpread({}, metadata), {}, { - element: element, - dropEffect: dropEffect, - effectAllowed: effectAllowed, - kinds: kinds, - mediaTypes: mediaTypes - }); - otelAttributes = telemetry_objectSpread(telemetry_objectSpread({}, otelAttributes), {}, { - element: element, - dropEffect: dropEffect, - effectAllowed: effectAllowed, - kinds: kinds, - mediaTypes: mediaTypes - }); + if (maxItems !== undefined) { + RateLimiter.globalSettings.maxItems = maxItems; + } + if (itemsPerMinute !== undefined) { + RateLimiter.globalSettings.itemsPerMinute = itemsPerMinute; } - (_this$telemetrySpan9 = this.telemetrySpan) === null || _this$telemetrySpan9 === void 0 || _this$telemetrySpan9.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); - } - }, { - key: "captureNavigation", - value: function captureNavigation(from, to, rollbarUUID, timestamp) { - var _this$telemetrySpan10; - (_this$telemetrySpan10 = this.telemetrySpan) === null || _this$telemetrySpan10 === void 0 || _this$telemetrySpan10.addEvent('rollbar-navigation-event', { - 'previous.url.full': from, - 'url.full': to - }, fromMillis(timestamp)); - return this.capture('navigation', { - from: from, - to: to - }, 'info', rollbarUUID, timestamp); - } - }, { - key: "captureDomContentLoaded", - value: function captureDomContentLoaded(ts) { - return this.capture('navigation', { - subtype: 'DOMContentLoaded' - }, 'info', undefined, ts && ts.getTime()); - /** - * If we decide to make this a dom event instead, then use the line below: - return this.capture('dom', {subtype: 'DOMContentLoaded'}, 'info', undefined, ts && ts.getTime()); - */ - } - }, { - key: "captureLoad", - value: function captureLoad(ts) { - return this.capture('navigation', { - subtype: 'load' - }, 'info', undefined, ts && ts.getTime()); - /** - * If we decide to make this a dom event instead, then use the line below: - return this.capture('dom', {subtype: 'load'}, 'info', undefined, ts && ts.getTime()); - */ - } - }, { - key: "captureConnectivityChange", - value: function captureConnectivityChange(_ref7) { - var _this$telemetrySpan11; - var type = _ref7.type, - isSynthetic = _ref7.isSynthetic, - timestamp = _ref7.timestamp; - var name = 'rollbar-connectivity-event'; - var metadata = { - type: name, - subtype: type - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic - }; - (_this$telemetrySpan11 = this.telemetrySpan) === null || _this$telemetrySpan11 === void 0 || _this$telemetrySpan11.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('connectivity', metadata, 'info', null, timestamp, otelAttributes); } - // Only intended to be used internally by the notifier + /* + * shouldSend - determine if we should send a given item based on rate limit settings + * + * @param item - the item we are about to send + * @returns An object with the following structure: + * error: (Error|null) + * shouldSend: bool + * payload: (Object|null) + * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and + * exactly one of error or payload will be non-null. If error is non-null, the returned Error will + * describe the situation, but it means that we were already over a rate limit (either globally or + * per minute) when this item was checked. If error is null, and therefore payload is non-null, it + * means this item put us over the global rate limit and the payload should be sent to Rollbar in + * place of the passed in item. + */ }, { - key: "_captureRollbarItem", - value: function _captureRollbarItem(item) { - if (!this.options.includeItemsInTelemetry) { - return; - } - if (item.err) { - return this.captureError(item.err, item.level, item.uuid, item.timestamp); + key: "shouldSend", + value: function shouldSend(item) { + var now = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Date.now(); + var elapsedTime = now - this.startTime; + if (elapsedTime < 0 || elapsedTime >= 60000) { + this.startTime = now; + this.perMinCounter = 0; } - if (item.message) { - return this.captureLog(item.message, item.level, item.uuid, item.timestamp); + var globalRateLimit = RateLimiter.globalSettings.maxItems; + var globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute; + if (checkRate(item, globalRateLimit, this.counter)) { + return shouldSendValue(this.platform, this.platformOptions, "".concat(globalRateLimit, " max items reached"), false); } - if (item.custom) { - return this.capture('log', item.custom, item.level, item.uuid, item.timestamp); + if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) { + return shouldSendValue(this.platform, this.platformOptions, "".concat(globalRateLimitPerMin, " items per minute reached"), false); } + this.counter += 1; + this.perMinCounter += 1; + var underGlobalLimit = !checkRate(item, globalRateLimit, this.counter); + var perMinute = underGlobalLimit; + var shouldSend = underGlobalLimit && !checkRate(item, globalRateLimitPerMin, this.perMinCounter); + return shouldSendValue(this.platform, this.platformOptions, null, shouldSend, globalRateLimit, globalRateLimitPerMin, perMinute); } }, { - key: "push", - value: function push(e) { - this.queue.push(e); - if (this.queue.length > this.maxQueueSize) { - this.queue.shift(); - } + key: "setPlatformOptions", + value: function setPlatformOptions(platform, options) { + this.platform = platform; + this.platformOptions = options; } }]); }(); -function getLevel(type, level) { - if (level) { - return level; +/* Helpers */ +rateLimiter_defineProperty(RateLimiter, "globalSettings", { + startTime: Date.now(), + maxItems: undefined, + itemsPerMinute: undefined +}); +function checkRate(item, limit, counter) { + return !item.ignoreRateLimit && limit >= 1 && counter > limit; +} +function shouldSendValue(platform, options, error, shouldSend, globalRateLimit, limitPerMin, perMinute) { + var payload = null; + var errorResult = error ? new Error(error) : null; + if (!errorResult && !shouldSend) { + payload = rateLimitPayload(platform, options, globalRateLimit, limitPerMin, perMinute); } - var defaultLevel = { - error: 'error', - manual: 'info' + return { + error: errorResult, + shouldSend: shouldSend, + payload: payload }; - return defaultLevel[type] || 'info'; } -/* harmony default export */ var telemetry = (Telemeter); -;// ./src/utility/headers.js +function rateLimitPayload(platform, options, globalRateLimit, limitPerMin, perMinute) { + var environment = options.environment || options.payload && options.payload.environment; + var msg = perMinute ? 'item per minute limit reached, ignoring errors until timeout' : 'maxItems has been hit, ignoring errors until reset.'; + var item = { + body: { + message: { + body: msg, + extra: { + maxItems: globalRateLimit, + itemsPerMinute: limitPerMin + } + } + }, + language: 'javascript', + environment: environment, + notifier: { + version: options.notifier && options.notifier.version || options.version + } + }; + if (platform === 'browser') { + item.platform = 'browser'; + item.framework = 'browser-js'; + item.notifier.name = 'rollbar-browser-js'; + } else if (platform === 'server') { + item.framework = options.framework || 'node-js'; + item.notifier.name = options.notifier.name; + } else if (platform === 'react-native') { + item.framework = options.framework || 'react-native'; + item.notifier.name = options.notifier.name; + } + return item; +} +/* harmony default export */ var rateLimiter = (RateLimiter); +;// ./src/rollbar.js + + + + + /* - * headers - Detect when fetch Headers are undefined and use a partial polyfill. - * - * A full polyfill is not used in order to keep package size as small as possible. - * Since this is only used internally and is not added to the window object, - * the full interface doesn't need to be supported. + * Rollbar - the interface to Rollbar * - * This implementation is modified from whatwg-fetch: - * https://github.com/github/fetch + * @param options + * @param api + * @param logger */ -function headers(headers) { - if (typeof Headers === 'undefined') { - return new FetchHeaders(headers); +function Rollbar(options, api, logger, telemeter, tracing, replay, platform) { + this.options = merge(options); + this.logger = logger; + Rollbar.rateLimiter.configureGlobal(this.options); + Rollbar.rateLimiter.setPlatformOptions(platform, this.options); + this.api = api; + this.queue = new queue(Rollbar.rateLimiter, api, logger, this.options, replay); + this.tracing = tracing; + + // Legacy OpenTracing support + // This must happen before the Notifier is created + var tracer = this.options.tracer || null; + if (validateTracer(tracer)) { + this.tracer = tracer; + // set to a string for api response serialization + this.options.tracer = 'opentracing-tracer-enabled'; + this.options._configuredOptions.tracer = 'opentracing-tracer-enabled'; + } else { + this.tracer = null; } - return new Headers(headers); + this.notifier = new Notifier(this.queue, this.options); + this.telemeter = telemeter; + setStackTraceLimit(options); + this.lastError = null; + this.lastErrorHash = 'none'; } -function normalizeName(name) { - if (typeof name !== 'string') { - name = String(name); +var rollbar_defaultOptions = { + maxItems: 0, + itemsPerMinute: 60 +}; +Rollbar.rateLimiter = new rateLimiter(rollbar_defaultOptions); +Rollbar.prototype.global = function (options) { + Rollbar.rateLimiter.configureGlobal(options); + return this; +}; +Rollbar.prototype.configure = function (options, payloadData) { + var oldOptions = this.options; + var payload = {}; + if (payloadData) { + payload = { + payload: payloadData + }; } - return name.toLowerCase(); -} -function normalizeValue(value) { - if (typeof value !== 'string') { - value = String(value); + this.options = merge(oldOptions, options, payload); + + // Legacy OpenTracing support + // This must happen before the Notifier is configured + var tracer = this.options.tracer || null; + if (validateTracer(tracer)) { + this.tracer = tracer; + // set to a string for api response serialization + this.options.tracer = 'opentracing-tracer-enabled'; + this.options._configuredOptions.tracer = 'opentracing-tracer-enabled'; + } else { + this.tracer = null; } - return value; -} -function iteratorFor(items) { - var iterator = { - next: function next() { - var value = items.shift(); - return { - done: value === undefined, - value: value - }; - } - }; - return iterator; -} -function FetchHeaders(headers) { - this.map = {}; - if (headers instanceof FetchHeaders) { - headers.forEach(function (value, name) { - this.append(name, value); - }, this); - } else if (Array.isArray(headers)) { - headers.forEach(function (header) { - this.append(header[0], header[1]); - }, this); - } else if (headers) { - Object.getOwnPropertyNames(headers).forEach(function (name) { - this.append(name, headers[name]); - }, this); + this.notifier && this.notifier.configure(this.options); + this.telemeter && this.telemeter.configure(this.options); + setStackTraceLimit(options); + this.global(this.options); + if (validateTracer(options.tracer)) { + this.tracer = options.tracer; } -} -FetchHeaders.prototype.append = function (name, value) { - name = normalizeName(name); - value = normalizeValue(value); - var oldValue = this.map[name]; - this.map[name] = oldValue ? oldValue + ', ' + value : value; + return this; }; -FetchHeaders.prototype.get = function (name) { - name = normalizeName(name); - return this.has(name) ? this.map[name] : null; +Rollbar.prototype.log = function (item) { + var level = this._defaultLogLevel(); + return this._log(level, item); }; -FetchHeaders.prototype.has = function (name) { - return this.map.hasOwnProperty(normalizeName(name)); +Rollbar.prototype.debug = function (item) { + this._log('debug', item); }; -FetchHeaders.prototype.forEach = function (callback, thisArg) { - for (var name in this.map) { - if (this.map.hasOwnProperty(name)) { - callback.call(thisArg, this.map[name], name, this); - } - } +Rollbar.prototype.info = function (item) { + this._log('info', item); }; -FetchHeaders.prototype.entries = function () { - var items = []; - this.forEach(function (value, name) { - items.push([name, value]); - }); - return iteratorFor(items); +Rollbar.prototype.warn = function (item) { + this._log('warning', item); +}; +Rollbar.prototype.warning = function (item) { + this._log('warning', item); +}; +Rollbar.prototype.error = function (item) { + this._log('error', item); +}; +Rollbar.prototype.critical = function (item) { + this._log('critical', item); +}; +Rollbar.prototype.wait = function (callback) { + this.queue.wait(callback); +}; +Rollbar.prototype.captureEvent = function (type, metadata, level) { + return this.telemeter && this.telemeter.captureEvent(type, metadata, level); +}; +Rollbar.prototype.captureDomContentLoaded = function (ts) { + return this.telemeter && this.telemeter.captureDomContentLoaded(ts); +}; +Rollbar.prototype.captureLoad = function (ts) { + return this.telemeter && this.telemeter.captureLoad(ts); +}; +Rollbar.prototype.buildJsonPayload = function (item) { + return this.api.buildJsonPayload(item); +}; +Rollbar.prototype.sendJsonPayload = function (jsonPayload) { + this.api.postJsonPayload(jsonPayload); }; -/* harmony default export */ var utility_headers = (headers); -;// ./src/utility/replace.js -function replace(obj, name, replacement, replacements, type) { - var orig = obj[name]; - obj[name] = replacement(orig); - if (replacements) { - replacements[type].push([obj, name, orig]); - } -} -/* harmony default export */ var utility_replace = (replace); -;// ./src/utility/traverse.js -function traverse(obj, func, seen) { - var k, v, i; - var isObj = isType(obj, 'object'); - var isArray = isType(obj, 'array'); - var keys = []; - var seenIndex; +/* Internal */ - // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11. - seen = seen || { - obj: [], - mapped: [] - }; - if (isObj) { - seenIndex = seen.obj.indexOf(obj); - if (isObj && seenIndex !== -1) { - // Prefer the mapped object if there is one. - return seen.mapped[seenIndex] || seen.obj[seenIndex]; - } - seen.obj.push(obj); - seenIndex = seen.obj.length - 1; +Rollbar.prototype._log = function (defaultLevel, item) { + var callback; + if (item.callback) { + callback = item.callback; + delete item.callback; } - if (isObj) { - for (k in obj) { - if (Object.prototype.hasOwnProperty.call(obj, k)) { - keys.push(k); - } - } - } else if (isArray) { - for (i = 0; i < obj.length; ++i) { - keys.push(i); + if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) { + if (callback) { + var error = new Error('ignored identical item'); + error.item = item; + callback(error); } + return; } - var result = isObj ? {} : []; - var same = true; - for (i = 0; i < keys.length; ++i) { - k = keys[i]; - v = obj[k]; - result[k] = func(k, v, seen); - same = same && result[k] === obj[k]; - } - if (isObj && !same) { - seen.mapped[seenIndex] = result; - } - return !same ? result : obj; -} -/* harmony default export */ var utility_traverse = (traverse); -;// ./src/scrub.js - + try { + item.level = item.level || defaultLevel; + this._addItemAttributes(item); -function scrub(data, scrubFields, scrubPaths) { - scrubFields = scrubFields || []; - if (scrubPaths) { - for (var i = 0; i < scrubPaths.length; ++i) { - scrubPath(data, scrubPaths[i]); + // Legacy OpenTracing support + this._addTracingInfo(item); + var telemeter = this.telemeter; + if (telemeter) { + telemeter._captureRollbarItem(item); + item.telemetryEvents = telemeter.copyEvents() || []; + } + this.notifier.log(item, callback); + } catch (e) { + if (callback) { + callback(e); } + this.logger.error(e); } - var paramRes = _getScrubFieldRegexs(scrubFields); - var queryRes = _getScrubQueryParamRegexs(scrubFields); - function redactQueryParam(dummy0, paramPart) { - return paramPart + redact(); +}; +Rollbar.prototype._addItemAttributes = function (item) { + var _this$tracing, _this$tracing2; + var span = (_this$tracing = this.tracing) === null || _this$tracing === void 0 ? void 0 : _this$tracing.getSpan(); + var attributes = [{ + key: 'session_id', + value: (_this$tracing2 = this.tracing) === null || _this$tracing2 === void 0 ? void 0 : _this$tracing2.sessionId + }, { + key: 'span_id', + value: span === null || span === void 0 ? void 0 : span.spanId + }, { + key: 'trace_id', + value: span === null || span === void 0 ? void 0 : span.traceId + }]; + if (item._isUncaught) { + attributes.push({ + key: 'is_uncaught', + value: 'true' + }); } - function paramScrubber(v) { - var i; - if (isType(v, 'string')) { - for (i = 0; i < queryRes.length; ++i) { - v = v.replace(queryRes[i], redactQueryParam); - } - } - return v; + addItemAttributes(item.data, attributes); + span === null || span === void 0 || span.addEvent('rollbar.occurrence', [{ + key: 'rollbar.occurrence.uuid', + value: item.uuid + }]); +}; +Rollbar.prototype._defaultLogLevel = function () { + return this.options.logLevel || 'debug'; +}; +Rollbar.prototype._sameAsLastError = function (item) { + if (!item._isUncaught) { + return false; } - function valScrubber(k, v) { - var i; - for (i = 0; i < paramRes.length; ++i) { - if (paramRes[i].test(k)) { - v = redact(); - break; - } - } - return v; + var itemHash = generateItemHash(item); + if (this.lastErrorHash === itemHash) { + return true; } - function scrubber(k, v, seen) { - var tmpV = valScrubber(k, v); - if (tmpV === v) { - if (isType(v, 'object') || isType(v, 'array')) { - return utility_traverse(v, scrubber, seen); + this.lastError = item.err; + this.lastErrorHash = itemHash; + return false; +}; +Rollbar.prototype._addTracingInfo = function (item) { + // Tracer validation occurs in the constructor + // or in the Rollbar.prototype.configure methods + if (this.tracer) { + // add rollbar occurrence uuid to span + var span = this.tracer.scope().active(); + if (validateSpan(span)) { + span.setTag('rollbar.error_uuid', item.uuid); + span.setTag('rollbar.has_error', true); + span.setTag('error', true); + span.setTag('rollbar.item_url', "https://rollbar.com/item/uuid/?uuid=".concat(item.uuid)); + span.setTag('rollbar.occurrence_url', "https://rollbar.com/occurrence/uuid/?uuid=".concat(item.uuid)); + + // add span ID & trace ID to occurrence + var opentracingSpanId = span.context().toSpanId(); + var opentracingTraceId = span.context().toTraceId(); + if (item.custom) { + item.custom.opentracing_span_id = opentracingSpanId; + item.custom.opentracing_trace_id = opentracingTraceId; + } else { + item.custom = { + opentracing_span_id: opentracingSpanId, + opentracing_trace_id: opentracingTraceId + }; } - return paramScrubber(tmpV); - } else { - return tmpV; } } - return utility_traverse(data, scrubber); -} -function scrubPath(obj, path) { - var keys = path.split('.'); - var last = keys.length - 1; - try { - for (var i = 0; i <= last; ++i) { - if (i < last) { - obj = obj[keys[i]]; - } else { - obj[keys[i]] = redact(); - } - } - } catch (e) { - // Missing key is OK; - } +}; +function generateItemHash(item) { + var message = item.message || ''; + var stack = (item.err || {}).stack || String(item.err); + return message + '::' + stack; } -function _getScrubFieldRegexs(scrubFields) { - var ret = []; - var pat; - for (var i = 0; i < scrubFields.length; ++i) { - pat = '^\\[?(%5[bB])?' + scrubFields[i] + '\\[?(%5[bB])?\\]?(%5[dD])?$'; - ret.push(new RegExp(pat, 'i')); + +// Node.js, Chrome, Safari, and some other browsers support this property +// which globally sets the number of stack frames returned in an Error object. +// If a browser can't use it, no harm done. +function setStackTraceLimit(options) { + if (options.stackTraceLimit) { + Error.stackTraceLimit = options.stackTraceLimit; } - return ret; } -function _getScrubQueryParamRegexs(scrubFields) { - var ret = []; - var pat; - for (var i = 0; i < scrubFields.length; ++i) { - pat = '\\[?(%5[bB])?' + scrubFields[i] + '\\[?(%5[bB])?\\]?(%5[dD])?'; - ret.push(new RegExp('(' + pat + '=)([^&\\n]+)', 'igm')); + +/** + * Validate the Tracer object provided to the Client + * is valid for our Opentracing use case. + * @param {opentracer.Tracer} tracer + */ +function validateTracer(tracer) { + if (!tracer) { + return false; } - return ret; -} -/* harmony default export */ var src_scrub = (scrub); -;// ./src/browser/domUtility.js -function domUtility_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = domUtility_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } -function domUtility_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return domUtility_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? domUtility_arrayLikeToArray(r, a) : void 0; } } -function domUtility_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function getElementType(e) { - return (e.getAttribute('type') || '').toLowerCase(); + if (!tracer.scope || typeof tracer.scope !== 'function') { + return false; + } + var scope = tracer.scope(); + if (!scope || !scope.active || typeof scope.active !== 'function') { + return false; + } + return true; } -function isDescribedElement(element, type, subtypes) { - if (element.tagName.toLowerCase() !== type.toLowerCase()) { + +/** + * Validate the Span object provided + * @param {opentracer.Span} span + */ +function validateSpan(span) { + if (!span || !span.context || typeof span.context !== 'function') { return false; } - if (!subtypes) { - return true; + var spanContext = span.context(); + if (!spanContext || !spanContext.toSpanId || !spanContext.toTraceId || typeof spanContext.toSpanId !== 'function' || typeof spanContext.toTraceId !== 'function') { + return false; } - element = getElementType(element); - for (var i = 0; i < subtypes.length; i++) { - if (subtypes[i] === element) { - return true; - } + return true; +} +/* harmony default export */ var rollbar = (Rollbar); +;// ./src/tracing/defaults.js +/** + * Default tracing options + */ +/* harmony default export */ var tracing_defaults = ({ + enabled: false, + endpoint: 'api.rollbar.com/api/1/session/' +}); +;// ./src/transforms.js + +function itemToPayload(item, options, callback) { + if (item._isUncaught) { + item.data._isUncaught = true; } - return false; + if (item._originalArgs) { + item.data._originalArgs = item._originalArgs; + } + callback(null, item); } -function getElementFromEvent(evt, doc) { - if (evt.target) { - return evt.target; +function addPayloadOptions(item, options, callback) { + var payloadOptions = options.payload || {}; + if (payloadOptions.body) { + delete payloadOptions.body; } - if (doc && doc.elementFromPoint) { - return doc.elementFromPoint(evt.clientX, evt.clientY); + item.data = merge(item.data, payloadOptions); + callback(null, item); +} +function addTelemetryData(item, options, callback) { + if (item.telemetryEvents) { + set(item, 'data.body.telemetry', item.telemetryEvents); } - return undefined; + callback(null, item); } -function treeToArray(elem) { - var MAX_HEIGHT = 5; - var out = []; - var nextDescription; - for (var height = 0; elem && height < MAX_HEIGHT; height++) { - nextDescription = describeElement(elem); - if (nextDescription.tagName === 'html') { - break; +function addMessageWithError(item, options, callback) { + if (!item.message) { + callback(null, item); + return; + } + var tracePath = 'data.body.trace_chain.0'; + var trace = get(item, tracePath); + if (!trace) { + tracePath = 'data.body.trace'; + trace = get(item, tracePath); + } + if (trace) { + if (!(trace.exception && trace.exception.description)) { + set(item, tracePath + '.exception.description', item.message); + callback(null, item); + return; } - out.unshift(nextDescription); - elem = elem.parentNode; + var extra = get(item, tracePath + '.extra') || {}; + var newExtra = merge(extra, { + message: item.message + }); + set(item, tracePath + '.extra', newExtra); } - return out; + callback(null, item); } -function elementArrayToString(a) { - var MAX_LENGTH = 80; - var separator = ' > ', - separatorLength = separator.length; - var out = [], - len = 0, - nextStr, - totalLength; - for (var i = a.length - 1; i >= 0; i--) { - nextStr = descriptionToString(a[i]); - totalLength = len + out.length * separatorLength + nextStr.length; - if (i < a.length - 1 && totalLength >= MAX_LENGTH + 3) { - out.unshift('...'); - break; +function userTransform(logger) { + return function (item, options, callback) { + var newItem = merge(item); + var response = null; + try { + if (isFunction(options.transform)) { + response = options.transform(newItem.data, item); + } + } catch (e) { + options.transform = null; + logger.error('Error while calling custom transform() function. Removing custom transform().', e); + callback(null, item); + return; } - out.unshift(nextStr); - len += nextStr.length; - } - return out.join(separator); + if (isPromise(response)) { + response.then(function (promisedItem) { + if (promisedItem) { + newItem.data = promisedItem; + } + callback(null, newItem); + }, function (error) { + callback(error, item); + }); + } else { + callback(null, newItem); + } + }; } -function domUtility_elementString(elem) { - return elementArrayToString(treeToArray(elem)); +function addConfigToPayload(item, options, callback) { + if (!options.sendConfig) { + return callback(null, item); + } + var configKey = '_rollbarConfig'; + var custom = get(item, 'data.custom') || {}; + custom[configKey] = options; + item.data.custom = custom; + callback(null, item); } -function descriptionToString(desc) { - if (!desc || !desc.tagName) { - return ''; +function addFunctionOption(options, name) { + if (isFunction(options[name])) { + options[name] = options[name].toString(); } - var out = [desc.tagName]; - if (desc.id) { - out.push('#' + desc.id); +} +function addConfiguredOptions(item, options, callback) { + var configuredOptions = options._configuredOptions; + + // These must be stringified or they'll get dropped during serialization. + addFunctionOption(configuredOptions, 'transform'); + addFunctionOption(configuredOptions, 'checkIgnore'); + addFunctionOption(configuredOptions, 'onSendCallback'); + delete configuredOptions.accessToken; + item.data.notifier.configured_options = configuredOptions; + callback(null, item); +} +function addDiagnosticKeys(item, options, callback) { + var diagnostic = merge(item.notifier.client.notifier.diagnostic, item.diagnostic); + if (get(item, 'err._isAnonymous')) { + diagnostic.is_anonymous = true; } - if (desc.classes) { - out.push('.' + desc.classes.join('.')); + if (item._isUncaught) { + diagnostic.is_uncaught = item._isUncaught; } - for (var i = 0; i < desc.attributes.length; i++) { - out.push('[' + desc.attributes[i].key + '="' + desc.attributes[i].value + '"]'); + if (item.err) { + try { + diagnostic.raw_error = { + message: item.err.message, + name: item.err.name, + constructor_name: item.err.constructor && item.err.constructor.name, + filename: item.err.fileName, + line: item.err.lineNumber, + column: item.err.columnNumber, + stack: item.err.stack + }; + } catch (e) { + diagnostic.raw_error = { + failed: String(e) + }; + } } - return out.join(''); + item.data.notifier.diagnostic = merge(item.data.notifier.diagnostic, diagnostic); + callback(null, item); } +;// ./src/browser/defaults.js +function defaults_toConsumableArray(r) { return defaults_arrayWithoutHoles(r) || defaults_iterableToArray(r) || defaults_unsupportedIterableToArray(r) || defaults_nonIterableSpread(); } +function defaults_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function defaults_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return defaults_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? defaults_arrayLikeToArray(r, a) : void 0; } } +function defaults_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } +function defaults_arrayWithoutHoles(r) { if (Array.isArray(r)) return defaults_arrayLikeToArray(r); } +function defaults_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } /** - * Input: a dom element - * Output: null if tagName is falsey or input is falsey, else - * { - * tagName: String, - * id: String | undefined, - * classes: [String] | undefined, - * attributes: [ - * { - * key: OneOf(type, name, title, alt), - * value: String - * } - * ] - * } + * Default browser options */ -function describeElement(elem) { - if (!elem || !elem.tagName) { - return null; - } - var out = {}, - className, - key, - attr, - i; - out.tagName = elem.tagName.toLowerCase(); - if (elem.id) { - out.id = elem.id; - } - className = elem.className; - if (className && typeof className === 'string') { - out.classes = className.split(/\s+/); + +var scrubFields = [].concat(defaults_toConsumableArray(commonScrubFields), ['cc-number', 'card number', 'cardnumber', 'cardnum', 'ccnum', 'ccnumber', 'cc num', 'creditcardnumber', 'credit card number', 'newcreditcardnumber', 'new credit card', 'creditcardno', 'credit card no', 'card#', 'card #', 'cc-csc', 'cvc', 'cvc2', 'cvv2', 'ccv2', 'security code', 'card verification', 'name on credit card', 'name on card', 'nameoncard', 'cardholder', 'card holder', 'name des karteninhabers', 'ccname', 'card type', 'cardtype', 'cc type', 'cctype', 'payment type', 'expiration date', 'expirationdate', 'expdate', 'cc-exp', 'ccmonth', 'ccyear']); + +// For compatibility with existing code that expects default export with scrubFields property +/* harmony default export */ var browser_defaults = ({ + scrubFields: scrubFields +}); +;// ./src/browser/globalSetup.js +function captureUncaughtExceptions(window, handler, shim) { + if (!window) { + return; } - var attributes = ['type', 'name', 'title', 'alt']; - out.attributes = []; - for (i = 0; i < attributes.length; i++) { - key = attributes[i]; - attr = elem.getAttribute(key); - if (attr) { - out.attributes.push({ - key: key, - value: attr - }); + var oldOnError; + if (typeof handler._rollbarOldOnError === 'function') { + oldOnError = handler._rollbarOldOnError; + } else if (window.onerror) { + oldOnError = window.onerror; + while (oldOnError._rollbarOldOnError) { + oldOnError = oldOnError._rollbarOldOnError; } + handler._rollbarOldOnError = oldOnError; } - return out; + handler.handleAnonymousErrors(); + var fn = function fn() { + var args = Array.prototype.slice.call(arguments, 0); + _rollbarWindowOnError(window, handler, oldOnError, args); + }; + if (shim) { + fn._rollbarOldOnError = oldOnError; + } + window.onerror = fn; } - -/* - * Detects if the given element matches any of the given class names (string or regex), - * or CSS selectors. - * @param {HTMLElement} element - The DOM element to check. - * @param {Array} classes - An array of class names (string or regex) to match against. - * @param {Array} selectors - An array of CSS selectors to match against. - * @return {boolean} - True if the element matches any of the classes or selectors, false otherwise. - */ -function isMatchingElement(element, classes, selectors) { - try { - var _iterator = domUtility_createForOfIteratorHelper(classes), - _step; - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var cls = _step.value; - if (typeof cls === 'string') { - if (element.classList.contains(cls)) { - return true; - } - } else { - var _iterator3 = domUtility_createForOfIteratorHelper(element.classList), - _step3; - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var c = _step3.value; - if (cls.test(c)) { - return true; - } - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); +function _rollbarWindowOnError(window, r, old, args) { + if (window._rollbarWrappedError) { + if (!args[4]) { + args[4] = window._rollbarWrappedError; } - var _iterator2 = domUtility_createForOfIteratorHelper(selectors), - _step2; - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var sel = _step2.value; - if (element.matches(sel)) { - return true; - } - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); + if (!args[5]) { + args[5] = window._rollbarWrappedError._rollbarContext; } - } catch (e) { - // ignore errors from invalid arguments + window._rollbarWrappedError = null; + } + var ret = r.handleUncaughtException.apply(r, args); + if (old) { + old.apply(window, args); } - return false; -} - -;// ./src/browser/telemetry.js -function browser_telemetry_typeof(o) { "@babel/helpers - typeof"; return browser_telemetry_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, browser_telemetry_typeof(o); } -function telemetry_toConsumableArray(r) { return telemetry_arrayWithoutHoles(r) || telemetry_iterableToArray(r) || telemetry_unsupportedIterableToArray(r) || telemetry_nonIterableSpread(); } -function telemetry_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function telemetry_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } -function telemetry_arrayWithoutHoles(r) { if (Array.isArray(r)) return telemetry_arrayLikeToArray(r); } -function browser_telemetry_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function browser_telemetry_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, browser_telemetry_toPropertyKey(o.key), o); } } -function browser_telemetry_createClass(e, r, t) { return r && browser_telemetry_defineProperties(e.prototype, r), t && browser_telemetry_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function browser_telemetry_defineProperty(e, r, t) { return (r = browser_telemetry_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function browser_telemetry_toPropertyKey(t) { var i = browser_telemetry_toPrimitive(t, "string"); return "symbol" == browser_telemetry_typeof(i) ? i : i + ""; } -function browser_telemetry_toPrimitive(t, r) { if ("object" != browser_telemetry_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != browser_telemetry_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -function telemetry_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = telemetry_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } -function telemetry_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return telemetry_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? telemetry_arrayLikeToArray(r, a) : void 0; } } -function telemetry_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } - - - - - -var telemetry_defaults = { - network: true, - networkResponseHeaders: false, - networkResponseBody: false, - networkRequestHeaders: false, - networkRequestBody: false, - networkErrorOnHttp5xx: false, - networkErrorOnHttp4xx: false, - networkErrorOnHttp0: false, - log: true, - dom: true, - navigation: true, - connectivity: true, - contentSecurityPolicy: true, - errorOnContentSecurityPolicy: false -}; -function restore(replacements, type) { - var b; - while (replacements[type].length) { - b = replacements[type].shift(); - b[0][b[1]] = b[2]; + // Let other chained onerror handlers above run before setting this. + // If an error is thrown and caught within a chained onerror handler, + // Error.prepareStackTrace() will see that one before the one we want. + if (ret === 'anonymous') { + r.anonymousErrorsPending += 1; // See Rollbar.prototype.handleAnonymousErrors() } } -function nameFromDescription(description) { - if (!description || !description.attributes) { - return null; +function captureUnhandledRejections(window, handler, shim) { + if (!window) { + return; } - var attrs = description.attributes; - var _iterator = telemetry_createForOfIteratorHelper(attrs), - _step; - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var a = _step.value; - if (a.key === 'name') { - return a.value; - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); + if (typeof window._rollbarURH === 'function' && window._rollbarURH.belongsToShim) { + window.removeEventListener('unhandledrejection', window._rollbarURH); } - return null; -} -function defaultValueScrubber(scrubFields) { - var patterns = []; - var _iterator2 = telemetry_createForOfIteratorHelper(scrubFields), - _step2; - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var field = _step2.value; - patterns.push(new RegExp(field, 'i')); + var rejectionHandler = function rejectionHandler(evt) { + var reason, promise, detail; + try { + reason = evt.reason; + } catch (_e) { + reason = undefined; } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - return function (description) { - var name = nameFromDescription(description); - if (!name) { - return false; + try { + promise = evt.promise; + } catch (_e) { + promise = '[unhandledrejection] error getting `promise` from event'; } - for (var _i = 0, _patterns = patterns; _i < _patterns.length; _i++) { - var p = _patterns[_i]; - if (p.test(name)) { - return true; + try { + detail = evt.detail; + if (!reason && detail) { + reason = detail.reason; + promise = detail.promise; } + } catch (_e) { + // Ignore + } + if (!reason) { + reason = '[unhandledrejection] error getting `reason` from event'; + } + if (handler && handler.handleUnhandledRejection) { + handler.handleUnhandledRejection(reason, promise); } - return false; }; + rejectionHandler.belongsToShim = shim; + window._rollbarURH = rejectionHandler; + window.addEventListener('unhandledrejection', rejectionHandler); } -var Instrumenter = /*#__PURE__*/function () { - function Instrumenter(options, telemeter, rollbar, _window, _document) { - browser_telemetry_classCallCheck(this, Instrumenter); - browser_telemetry_defineProperty(this, "deinstrumentConnectivity", function () { - this.removeListeners('connectivity'); - }); - this.options = options; - var autoInstrument = options.autoInstrument; - if (options.enabled === false || autoInstrument === false) { - this.autoInstrument = {}; - } else { - if (!isType(autoInstrument, 'object')) { - autoInstrument = telemetry_defaults; - } - this.autoInstrument = src_merge(telemetry_defaults, autoInstrument); - } - this.configureScrubbing(); - this.telemeter = telemeter; - this.rollbar = rollbar; - this.diagnostic = rollbar.client.notifier.diagnostic; - this._window = _window || {}; - this._document = _document || {}; - this.replacements = { - network: [], - log: [], - navigation: [], - connectivity: [] - }; - this.eventRemovers = { - dom: [], - connectivity: [], - contentsecuritypolicy: [] - }; - this._location = this._window.location; - this._lastHref = this._location && this._location.href; + +;// ./src/browser/predicates.js + +function checkIgnore(item, settings) { + if (get(settings, 'plugins.jquery.ignoreAjaxErrors')) { + return !get(item, 'body.message.extra.isAjax'); } - return browser_telemetry_createClass(Instrumenter, [{ - key: "configureScrubbing", - value: function configureScrubbing() { - var _options$scrubTelemet, _options$replay, _options$replay2, _options$replay3, _options$replay4, _options$replay5, _options$replay6, _options$replay7, _options$replay8, _options$replay9; - var options = this.options; - this.scrubTelemetryInputs = !!((_options$scrubTelemet = options.scrubTelemetryInputs) !== null && _options$scrubTelemet !== void 0 ? _options$scrubTelemet : (_options$replay = options.replay) === null || _options$replay === void 0 ? void 0 : _options$replay.maskAllInputs); - this.telemetryScrubber = options.telemetryScrubber; - this.defaultValueScrubber = defaultValueScrubber(options.scrubFields); - this.maskInputFn = (_options$replay2 = options.replay) === null || _options$replay2 === void 0 ? void 0 : _options$replay2.maskInputFn; - this.maskInputOptions = ((_options$replay3 = options.replay) === null || _options$replay3 === void 0 ? void 0 : _options$replay3.maskInputOptions) || {}; - this.scrubClasses = [(_options$replay4 = options.replay) === null || _options$replay4 === void 0 ? void 0 : _options$replay4.blockClass, (_options$replay5 = options.replay) === null || _options$replay5 === void 0 ? void 0 : _options$replay5.ignoreClass, (_options$replay6 = options.replay) === null || _options$replay6 === void 0 ? void 0 : _options$replay6.maskTextClass].filter(Boolean); - this.scrubSelectors = [(_options$replay7 = options.replay) === null || _options$replay7 === void 0 ? void 0 : _options$replay7.blockSelector, (_options$replay8 = options.replay) === null || _options$replay8 === void 0 ? void 0 : _options$replay8.ignoreSelector, (_options$replay9 = options.replay) === null || _options$replay9 === void 0 ? void 0 : _options$replay9.maskTextSelector].filter(Boolean); - } - }, { - key: "configure", - value: function configure(options) { - this.options = src_merge(this.options, options); - var autoInstrument = options.autoInstrument; - var oldSettings = src_merge(this.autoInstrument); - if (options.enabled === false || autoInstrument === false) { - this.autoInstrument = {}; - } else { - if (!isType(autoInstrument, 'object')) { - autoInstrument = telemetry_defaults; - } - this.autoInstrument = src_merge(telemetry_defaults, autoInstrument); - } - this.configureScrubbing(); - this.instrument(oldSettings); - } + return true; +} - // eslint-disable-next-line complexity - }, { - key: "instrument", - value: function instrument(oldSettings) { - if (this.autoInstrument.network && !(oldSettings && oldSettings.network)) { - this.instrumentNetwork(); - } else if (!this.autoInstrument.network && oldSettings && oldSettings.network) { - this.deinstrumentNetwork(); - } - if (this.autoInstrument.log && !(oldSettings && oldSettings.log)) { - this.instrumentConsole(); - } else if (!this.autoInstrument.log && oldSettings && oldSettings.log) { - this.deinstrumentConsole(); - } - if (this.autoInstrument.dom && !(oldSettings && oldSettings.dom)) { - this.instrumentDom(); - } else if (!this.autoInstrument.dom && oldSettings && oldSettings.dom) { - this.deinstrumentDom(); - } - if (this.autoInstrument.navigation && !(oldSettings && oldSettings.navigation)) { - this.instrumentNavigation(); - } else if (!this.autoInstrument.navigation && oldSettings && oldSettings.navigation) { - this.deinstrumentNavigation(); - } - if (this.autoInstrument.connectivity && !(oldSettings && oldSettings.connectivity)) { - this.instrumentConnectivity(); - } else if (!this.autoInstrument.connectivity && oldSettings && oldSettings.connectivity) { - this.deinstrumentConnectivity(); +;// ./src/browser/replay/defaults.js +/** + * Default session replay recording options + * See https://github.com/rrweb-io/rrweb/blob/master/guide.md#options for details + */ +/* harmony default export */ var replay_defaults = ({ + enabled: false, + // Whether recording is enabled + autoStart: true, + // Start recording automatically when Rollbar initializes + + // defaults used by triggers that don't specify them + triggerDefaults: { + samplingRatio: 1.0, + preDuration: 300, + postDuration: 5 + }, + triggers: [{ + type: 'occurrence', + level: ['error', 'critical'] + }], + debug: { + logErrors: true, + // Whether to log errors emitted by rrweb. + logEmits: false // Whether to log emitted events + }, + // Recording options + inlineStylesheet: true, + // Whether to inline stylesheets to improve replay accuracy + inlineImages: false, + // Whether to record the image content + collectFonts: true, + // Whether to collect fonts in the website + + // Privacy options + // Fine-grained control over which input types to mask + // By default only password inputs are masked if maskInputs is true + maskInputOptions: { + password: true, + email: false, + tel: false, + text: false, + color: false, + date: false, + 'datetime-local': false, + month: false, + number: false, + range: false, + search: false, + time: false, + url: false, + week: false + }, + // Mask all input values + maskAllInputs: false, + // Class names to block, mask, or ignore the content of elements. + blockClass: 'rb-block', + maskTextClass: 'rb-mask', + ignoreClass: 'rb-ignore', + // Remove unnecessary parts of the DOM + // By default all removable elements are removed + slimDOMOptions: { + script: true, + // Remove script elements + comment: true, + // Remove comments + headFavicon: true, + // Remove favicons in the head + headWhitespace: true, + // Remove whitespace in head + headMetaDescKeywords: true, + // Remove meta description and keywords + headMetaSocial: true, + // Remove social media meta tags + headMetaRobots: true, + // Remove robots meta directives + headMetaHttpEquiv: true, + // Remove http-equiv meta directives + headMetaAuthorship: true, + // Remove authorship meta directives + headMetaVerification: true // Remove verification meta directives + } + + // Custom callbacks for advanced use cases + // These are undefined by default and can be set programmatically + // maskInputFn: undefined, // Custom function to mask input values + // maskTextFn: undefined, // Custom function to mask text content + // errorHandler: undefined, // Custom error handler for recording errors + + // Plugin system + // plugins: [] // List of plugins to use (must be set programmatically) +}); +;// ./src/browser/transforms.js + + + +function handleDomException(item, options, callback) { + if (item.err && errorParser.Stack(item.err).name === 'DOMException') { + var originalError = new Error(); + originalError.name = item.err.name; + originalError.message = item.err.message; + originalError.stack = item.err.stack; + originalError.nested = item.err; + item.err = originalError; + } + callback(null, item); +} +function handleItemWithError(item, options, callback) { + item.data = item.data || {}; + if (item.err) { + try { + item.stackInfo = item.err._savedStackTrace || errorParser.parse(item.err, item.skipFrames); + if (options.addErrorContext) { + transforms_addErrorContext(item); } - if (this.autoInstrument.contentSecurityPolicy && !(oldSettings && oldSettings.contentSecurityPolicy)) { - this.instrumentContentSecurityPolicy(); - } else if (!this.autoInstrument.contentSecurityPolicy && oldSettings && oldSettings.contentSecurityPolicy) { - this.deinstrumentContentSecurityPolicy(); + } catch (e) { + src_logger.error('Error while parsing the error object.', e); + try { + item.message = item.err.message || item.err.description || item.message || String(item.err); + } catch (e2) { + item.message = String(item.err) || String(e2); } + delete item.err; } - }, { - key: "deinstrumentNetwork", - value: function deinstrumentNetwork() { - restore(this.replacements, 'network'); + } + callback(null, item); +} +function transforms_addErrorContext(item) { + var chain = []; + var err = item.err; + chain.push(err); + while (err.nested || err.cause) { + err = err.nested || err.cause; + chain.push(err); + } + addErrorContext(item, chain); +} +function ensureItemHasSomethingToSay(item, options, callback) { + if (!item.message && !item.stackInfo && !item.custom) { + callback(new Error('No message, stack info, or custom data'), null); + } + callback(null, item); +} +function addBaseInfo(item, options, callback) { + var environment = options.payload && options.payload.environment || options.environment; + item.data = merge(item.data, { + environment: environment, + level: item.level, + endpoint: options.endpoint, + platform: 'browser', + framework: 'browser-js', + language: 'javascript', + server: {}, + uuid: item.uuid, + notifier: { + name: 'rollbar-browser-js', + version: options.version + }, + custom: item.custom + }); + callback(null, item); +} +function addRequestInfo(window) { + return function (item, options, callback) { + var requestInfo = {}; + if (window && window.location) { + requestInfo.url = window.location.href; + requestInfo.query_string = window.location.search; } - }, { - key: "instrumentNetwork", - value: function instrumentNetwork() { - var self = this; - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - utility_replace(xhr, prop, function (orig) { - return self.rollbar.wrap(orig); - }); + var remoteString = '$remote_ip'; + if (!options.captureIp) { + remoteString = null; + } else if (options.captureIp !== true) { + remoteString += '_anonymize'; + } + if (remoteString) requestInfo.user_ip = remoteString; + if (Object.keys(requestInfo).length > 0) { + set(item, 'data.request', requestInfo); + } + callback(null, item); + }; +} +function addClientInfo(window) { + return function (item, options, callback) { + if (!window) { + return callback(null, item); + } + var nav = window.navigator || {}; + var scr = window.screen || {}; + set(item, 'data.client', { + runtime_ms: item.timestamp - window._rollbarStartTime, + timestamp: Math.round(item.timestamp / 1000), + javascript: { + browser: nav.userAgent, + language: nav.language, + cookie_enabled: nav.cookieEnabled, + screen: { + width: scr.width, + height: scr.height } } - if ('XMLHttpRequest' in this._window) { - var xhrp = this._window.XMLHttpRequest.prototype; - utility_replace(xhrp, 'open', function (orig) { - return function (method, url) { - var isUrlObject = _isUrlObject(url); - if (isType(url, 'string') || isUrlObject) { - url = isUrlObject ? url.toString() : url; - if (this.__rollbar_xhr) { - this.__rollbar_xhr.method = method; - this.__rollbar_xhr.url = url; - this.__rollbar_xhr.status_code = null; - this.__rollbar_xhr.start_time_ms = utility_now(); - this.__rollbar_xhr.end_time_ms = null; - } else { - this.__rollbar_xhr = { - method: method, - url: url, - status_code: null, - start_time_ms: utility_now(), - end_time_ms: null - }; - } - } - return orig.apply(this, arguments); - }; - }, this.replacements, 'network'); - utility_replace(xhrp, 'setRequestHeader', function (orig) { - return function (header, value) { - // If xhr.open is async, __rollbar_xhr may not be initialized yet. - if (!this.__rollbar_xhr) { - this.__rollbar_xhr = {}; - } - if (isType(header, 'string') && isType(value, 'string')) { - if (self.autoInstrument.networkRequestHeaders) { - if (!this.__rollbar_xhr.request_headers) { - this.__rollbar_xhr.request_headers = {}; - } - this.__rollbar_xhr.request_headers[header] = value; - } - // We want the content type even if request header telemetry is off. - if (header.toLowerCase() === 'content-type') { - this.__rollbar_xhr.request_content_type = value; - } - } - return orig.apply(this, arguments); - }; - }, this.replacements, 'network'); - utility_replace(xhrp, 'send', function (orig) { - return function (data) { - var xhr = this; - function onreadystatechangeHandler() { - if (xhr.__rollbar_xhr) { - if (xhr.__rollbar_xhr.status_code === null) { - xhr.__rollbar_xhr.status_code = 0; - if (self.autoInstrument.networkRequestBody) { - xhr.__rollbar_xhr.request = data; - } - xhr.__rollbar_event = self.captureNetwork(xhr.__rollbar_xhr, 'xhr', undefined); - } - if (xhr.readyState < 2) { - xhr.__rollbar_xhr.start_time_ms = utility_now(); - } - if (xhr.readyState > 3) { - var end_time_ms = utility_now(); - xhr.__rollbar_xhr.end_time_ms = end_time_ms; - var _headers = null; - xhr.__rollbar_xhr.response_content_type = xhr.getResponseHeader('Content-Type'); - if (self.autoInstrument.networkResponseHeaders) { - var headersConfig = self.autoInstrument.networkResponseHeaders; - _headers = {}; - try { - var header; - if (headersConfig === true) { - var allHeaders = xhr.getAllResponseHeaders(); - if (allHeaders) { - var arr = allHeaders.trim().split(/[\r\n]+/); - var parts, value; - var _iterator3 = telemetry_createForOfIteratorHelper(arr), - _step3; - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var h = _step3.value; - parts = h.split(': '); - header = parts.shift(); - value = parts.join(': '); - _headers[header] = value; - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - } - } else { - var _iterator4 = telemetry_createForOfIteratorHelper(headersConfig), - _step4; - try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { - var _h = _step4.value; - _headers[_h] = xhr.getResponseHeader(_h); - } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); - } - } - } catch (e) { - /* we ignore the errors here that could come from different - * browser issues with the xhr methods */ - } - } - var body = null; - if (self.autoInstrument.networkResponseBody) { - try { - body = xhr.responseText; - } catch (e) { - /* ignore errors from reading responseText */ - } - } - var response = null; - if (body || _headers) { - response = {}; - if (body) { - if (self.isJsonContentType(xhr.__rollbar_xhr.response_content_type)) { - response.body = self.scrubJson(body); - } else { - response.body = body; - } - } - if (_headers) { - response.headers = _headers; - } - } - if (response) { - xhr.__rollbar_xhr.response = response; - } - try { - var code = xhr.status; - code = code === 1223 ? 204 : code; - xhr.__rollbar_xhr.status_code = code; - self.addOtelNetworkResponse(xhr.__rollbar_event, end_time_ms, code); - xhr.__rollbar_event.level = self.telemeter.levelFromStatus(code); - self.errorOnHttpStatus(xhr.__rollbar_xhr); - } catch (e) { - /* ignore possible exception from xhr.status */ - } - } + }); + callback(null, item); + }; +} +function addPluginInfo(window) { + return function (item, options, callback) { + if (!window || !window.navigator) { + return callback(null, item); + } + var plugins = []; + var navPlugins = window.navigator.plugins || []; + var cur; + for (var i = 0, l = navPlugins.length; i < l; ++i) { + cur = navPlugins[i]; + plugins.push({ + name: cur.name, + description: cur.description + }); + } + set(item, 'data.client.javascript.plugins', plugins); + callback(null, item); + }; +} +function addBody(item, options, callback) { + if (item.stackInfo) { + if (item.stackInfo.traceChain) { + addBodyTraceChain(item, options, callback); + } else { + addBodyTrace(item, options, callback); + } + } else { + addBodyMessage(item, options, callback); + } +} +function addBodyMessage(item, options, callback) { + var message = item.message; + var custom = item.custom; + if (!message) { + message = 'Item sent with null or missing arguments.'; + } + var result = { + body: message + }; + if (custom) { + result.extra = merge(custom); + } + set(item, 'data.body', { + message: result + }); + callback(null, item); +} +function stackFromItem(item) { + var stackInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + // Transform a TraceKit stackInfo object into a Rollbar trace + var stack = (stackInfo || item.stackInfo).stack; + if (stack && stack.length === 0 && item._unhandledStackInfo && item._unhandledStackInfo.stack) { + stack = item._unhandledStackInfo.stack; + } + return stack; +} +function addBodyTraceChain(item, options, callback) { + var traceChain = item.stackInfo.traceChain; + var traces = []; + var traceChainLength = traceChain.length; + for (var i = 0; i < traceChainLength; i++) { + var trace = buildTrace(item, traceChain[i], options); + traces.push(trace); + } + set(item, 'data.body', { + trace_chain: traces + }); + callback(null, item); +} +function addBodyTrace(item, options, callback) { + var stack = stackFromItem(item); + if (stack) { + var trace = buildTrace(item, item.stackInfo, options); + set(item, 'data.body', { + trace: trace + }); + callback(null, item); + } else { + var stackInfo = item.stackInfo; + var guess = errorParser.guessErrorClass(stackInfo.message); + var className = errorClass(stackInfo, guess[0], options); + var message = guess[1]; + item.message = className + ': ' + message; + addBodyMessage(item, options, callback); + } +} +function buildTrace(item, stackInfo, options) { + var description = item && item.data.description; + var custom = item && item.custom; + var stack = stackFromItem(item, stackInfo); + var guess = errorParser.guessErrorClass(stackInfo.message); + var className = errorClass(stackInfo, guess[0], options); + var message = guess[1]; + var trace = { + exception: { + class: className, + message: message + } + }; + if (description) { + trace.exception.description = description; + } + if (stack) { + if (stack.length === 0) { + trace.exception.stack = stackInfo.rawStack; + trace.exception.raw = String(stackInfo.rawException); + } + var stackFrame; + var frame; + var code; + var pre; + var post; + var contextLength; + var i, mid; + trace.frames = []; + for (i = 0; i < stack.length; ++i) { + stackFrame = stack[i]; + frame = { + filename: stackFrame.url ? sanitizeUrl(stackFrame.url) : '(unknown)', + lineno: stackFrame.line || null, + method: !stackFrame.func || stackFrame.func === '?' ? '[anonymous]' : stackFrame.func, + colno: stackFrame.column + }; + if (options.sendFrameUrl) { + frame.url = stackFrame.url; + } + if (frame.method && frame.method.endsWith && frame.method.endsWith('_rollbar_wrapped')) { + continue; + } + code = pre = post = null; + contextLength = stackFrame.context ? stackFrame.context.length : 0; + if (contextLength) { + mid = Math.floor(contextLength / 2); + pre = stackFrame.context.slice(0, mid); + code = stackFrame.context[mid]; + post = stackFrame.context.slice(mid); + } + if (code) { + frame.code = code; + } + if (pre || post) { + frame.context = {}; + if (pre && pre.length) { + frame.context.pre = pre; + } + if (post && post.length) { + frame.context.post = post; + } + } + if (stackFrame.args) { + frame.args = stackFrame.args; + } + trace.frames.push(frame); + } + + // NOTE(cory): reverse the frames since rollbar.com expects the most recent call last + trace.frames.reverse(); + if (custom) { + trace.extra = merge(custom); + } + } + return trace; +} +function errorClass(stackInfo, guess, options) { + if (stackInfo.name) { + return stackInfo.name; + } else if (options.guessErrorClass) { + return guess; + } else { + return '(unknown)'; + } +} +function addScrubber(scrubFn) { + return function (item, options, callback) { + if (scrubFn) { + var scrubFields = options.scrubFields || []; + var scrubPaths = options.scrubPaths || []; + item.data = scrubFn(item.data, scrubFields, scrubPaths); + } + callback(null, item); + }; +} + +;// ./src/browser/transport/fetch.js +function fetch_typeof(o) { "@babel/helpers - typeof"; return fetch_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, fetch_typeof(o); } +function fetch_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function fetch_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? fetch_ownKeys(Object(t), !0).forEach(function (r) { fetch_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : fetch_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function fetch_defineProperty(e, r, t) { return (r = fetch_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function fetch_toPropertyKey(t) { var i = fetch_toPrimitive(t, "string"); return "symbol" == fetch_typeof(i) ? i : i + ""; } +function fetch_toPrimitive(t, r) { if ("object" != fetch_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != fetch_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + + +function makeFetchRequest(_ref) { + var accessToken = _ref.accessToken, + url = _ref.url, + method = _ref.method, + payload = _ref.payload, + headers = _ref.headers, + callback = _ref.callback, + timeout = _ref.timeout; + var controller; + var timeoutId; + if (isFiniteNumber(timeout)) { + controller = new AbortController(); + timeoutId = setTimeout(function () { + controller.abort(); + }, timeout); + } + headers = fetch_objectSpread({ + 'Content-Type': 'application/json', + 'X-Rollbar-Access-Token': accessToken, + signal: controller && controller.signal + }, headers); + fetch(url, { + method: method, + headers: headers, + body: payload + }).then(function (response) { + if (timeoutId) clearTimeout(timeoutId); + var respHeaders = response.headers; + var isItemRoute = url.endsWith('/api/1/item/'); + var headers = isItemRoute ? { + 'Rollbar-Replay-Enabled': respHeaders.get('Rollbar-Replay-Enabled'), + 'Rollbar-Replay-RateLimit-Remaining': respHeaders.get('Rollbar-Replay-RateLimit-Remaining'), + 'Rollbar-Replay-RateLimit-Reset': respHeaders.get('Rollbar-Replay-RateLimit-Reset') + } : {}; + var json = response.json(); + callback(null, json, headers); + }).catch(function (error) { + src_logger.error(error.message); + callback(error); + }); +} +/* harmony default export */ var transport_fetch = (makeFetchRequest); +;// ./src/browser/transport/xhr.js +function xhr_slicedToArray(r, e) { return xhr_arrayWithHoles(r) || xhr_iterableToArrayLimit(r, e) || xhr_unsupportedIterableToArray(r, e) || xhr_nonIterableRest(); } +function xhr_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function xhr_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return xhr_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? xhr_arrayLikeToArray(r, a) : void 0; } } +function xhr_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function xhr_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function xhr_arrayWithHoles(r) { if (Array.isArray(r)) return r; } +/*global XDomainRequest*/ + + + +function makeXhrRequest(_ref) { + var accessToken = _ref.accessToken, + url = _ref.url, + method = _ref.method, + payload = _ref.payload, + headers = _ref.headers, + callback = _ref.callback, + requestFactory = _ref.requestFactory, + timeout = _ref.timeout; + var request; + if (requestFactory) { + request = requestFactory(); + } else { + request = _createXMLHTTPObject(); + } + if (!request) { + // Give up, no way to send requests + return callback(new Error('No way to send a request')); + } + try { + try { + var _onreadystatechange = function onreadystatechange() { + try { + if (_onreadystatechange && request.readyState === 4) { + _onreadystatechange = undefined; + var parseResponse = jsonParse(request.responseText); + if (_isSuccess(request)) { + var isItemRoute = url.endsWith('/api/1/item/'); + var _headers = isItemRoute ? { + 'Rollbar-Replay-Enabled': request.getResponseHeader('Rollbar-Replay-Enabled'), + 'Rollbar-Replay-RateLimit-Remaining': request.getResponseHeader('Rollbar-Replay-RateLimit-Remaining'), + 'Rollbar-Replay-RateLimit-Reset': request.getResponseHeader('Rollbar-Replay-RateLimit-Reset') + } : {}; + callback(parseResponse.error, parseResponse.value, _headers); + return; + } else if (_isNormalFailure(request)) { + if (request.status === 403) { + // likely caused by using a server access token + var message = parseResponse.value && parseResponse.value.message; + src_logger.error(message); } - } - wrapProp('onload', xhr); - wrapProp('onerror', xhr); - wrapProp('onprogress', xhr); - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - utility_replace(xhr, 'onreadystatechange', function (orig) { - return self.rollbar.wrap(orig, undefined, onreadystatechangeHandler); - }); + // return valid http status codes + callback(new Error(String(request.status))); } else { - xhr.onreadystatechange = onreadystatechangeHandler; - } - if (xhr.__rollbar_xhr && self.trackHttpErrors()) { - xhr.__rollbar_xhr.stack = new Error().stack; + // IE will return a status 12000+ on some sort of connection failure, + // so we return a blank error + // http://msdn.microsoft.com/en-us/library/aa383770%28VS.85%29.aspx + var msg = 'XHR response had no status code (likely connection failure)'; + callback(_newRetriableError(msg)); } - return orig.apply(this, arguments); - }; - }, this.replacements, 'network'); + } + } catch (ex) { + //jquery source mentions firefox may error out while accessing the + //request members if there is a network error + //https://github.com/jquery/jquery/blob/a938d7b1282fc0e5c52502c225ae8f0cef219f0a/src/ajax/xhr.js#L111 + var exc; + if (ex && ex.stack) { + exc = ex; + } else { + exc = new Error(ex); + } + callback(exc); + } + }; + request.open(method, url, true); + if (request.setRequestHeader) { + request.setRequestHeader('Content-Type', 'application/json'); + request.setRequestHeader('X-Rollbar-Access-Token', accessToken); + for (var _i = 0, _Object$entries = Object.entries(headers !== null && headers !== void 0 ? headers : {}); _i < _Object$entries.length; _i++) { + var _Object$entries$_i = xhr_slicedToArray(_Object$entries[_i], 2), + h = _Object$entries$_i[0], + v = _Object$entries$_i[1]; + request.setRequestHeader(h, v); + } } - if ('fetch' in this._window) { - utility_replace(this._window, 'fetch', function (orig) { - return function (fn, t) { - var args = Array.prototype.slice.call(arguments); - var input = args[0]; - var method = 'GET'; - var url; - var isUrlObject = _isUrlObject(input); - if (isType(input, 'string') || isUrlObject) { - url = isUrlObject ? input.toString() : input; - } else if (input) { - url = input.url; - if (input.method) { - method = input.method; - } - } - if (args[1] && args[1].method) { - method = args[1].method; - } - var metadata = { - method: method, - url: url, - status_code: null, - start_time_ms: utility_now(), - end_time_ms: null - }; - if (args[1] && args[1].headers) { - // Argument may be a Headers object, or plain object. Ensure here that - // we are working with a Headers object with case-insensitive keys. - var reqHeaders = utility_headers(args[1].headers); - metadata.request_content_type = reqHeaders.get('Content-Type'); - if (self.autoInstrument.networkRequestHeaders) { - metadata.request_headers = self.fetchHeaders(reqHeaders, self.autoInstrument.networkRequestHeaders); - } - } - if (self.autoInstrument.networkRequestBody) { - if (args[1] && args[1].body) { - metadata.request = args[1].body; - } else if (args[0] && !isType(args[0], 'string') && args[0].body) { - metadata.request = args[0].body; - } - } - var telemetryEvent = self.captureNetwork(metadata, 'fetch', undefined); - if (self.trackHttpErrors()) { - metadata.stack = new Error().stack; - } + if (isFiniteNumber(timeout)) { + request.timeout = timeout; + } + request.onreadystatechange = _onreadystatechange; + request.send(payload); + } catch (_e1) { + // Sending using the normal xmlhttprequest object didn't work, try XDomainRequest + if (typeof XDomainRequest !== 'undefined') { + // Assume we are in a really old browser which has a bunch of limitations: + // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx + + // Extreme paranoia: if we have XDomainRequest then we have a window, but just in case + if (!window || !window.location) { + return callback(new Error('No window available during request, unknown environment')); + } - // Start our handler before returning the promise. This allows resp.clone() - // to execute before other handlers touch the response. - return orig.apply(this, args).then(function (resp) { - var end_time_ms = utility_now(); - metadata.end_time_ms = end_time_ms; - metadata.status_code = resp.status; - self.addOtelNetworkResponse(telemetryEvent, end_time_ms, resp.status); - metadata.response_content_type = resp.headers.get('Content-Type'); - var headers = null; - if (self.autoInstrument.networkResponseHeaders) { - headers = self.fetchHeaders(resp.headers, self.autoInstrument.networkResponseHeaders); - } - var body = null; - if (self.autoInstrument.networkResponseBody) { - if (typeof resp.text === 'function') { - // Response.text() is not implemented on some platforms - // The response must be cloned to prevent reading (and locking) the original stream. - // This must be done before other handlers touch the response. - body = resp.clone().text(); //returns a Promise - } - } - if (headers || body) { - metadata.response = {}; - if (body) { - // Test to ensure body is a Promise, which it should always be. - if (typeof body.then === 'function') { - body.then(function (text) { - if (text && self.isJsonContentType(metadata.response_content_type)) { - metadata.response.body = self.scrubJson(text); - } else { - metadata.response.body = text; - } - }); - } else { - metadata.response.body = body; - } - } - if (headers) { - metadata.response.headers = headers; - } - } - self.errorOnHttpStatus(metadata); - return resp; - }); - }; - }, this.replacements, 'network'); + // If the current page is http, try and send over http + if (window.location.href.substring(0, 5) === 'http:' && url.substring(0, 5) === 'https') { + url = 'http' + url.substring(5); + } + var xdomainrequest = new XDomainRequest(); + xdomainrequest.onprogress = function () {}; + xdomainrequest.ontimeout = function () { + var msg = 'Request timed out'; + var code = 'ETIMEDOUT'; + callback(_newRetriableError(msg, code)); + }; + xdomainrequest.onerror = function () { + callback(new Error('Error during request')); + }; + xdomainrequest.onload = function () { + var parseResponse = jsonParse(xdomainrequest.responseText); + callback(parseResponse.error, parseResponse.value); + }; + xdomainrequest.open(method, url, true); + xdomainrequest.send(payload); + } else { + callback(new Error('Cannot find a method to transport a request')); + } + } + } catch (e2) { + callback(e2); + } +} +function _createXMLHTTPObject() { + /* global ActiveXObject:false */ + + var factories = [function () { + return new XMLHttpRequest(); + }, function () { + return new ActiveXObject('Msxml2.XMLHTTP'); + }, function () { + return new ActiveXObject('Msxml3.XMLHTTP'); + }, function () { + return new ActiveXObject('Microsoft.XMLHTTP'); + }]; + var xmlhttp; + var i; + var numFactories = factories.length; + for (i = 0; i < numFactories; i++) { + try { + xmlhttp = factories[i](); + break; + } catch (_e) { + // pass + } + } + return xmlhttp; +} +function _isSuccess(r) { + return r && r.status && r.status === 200; +} +function _isNormalFailure(r) { + return r && isType(r.status, 'number') && r.status >= 400 && r.status < 600; +} +function _newRetriableError(message, code) { + var err = new Error(message); + err.code = code || 'ENOTFOUND'; + return err; +} +/* harmony default export */ var xhr = (makeXhrRequest); +;// ./src/browser/transport.js + + + + +/* + * accessToken may be embedded in payload but that should not + * be assumed + * + * options: { + * hostname + * protocol + * path + * port + * method + * transport ('xhr' | 'fetch') + * } + * + * params is an object containing key/value pairs. These + * will be appended to the path as 'key=value&key=value' + * + * payload is an unserialized object + */ +function Transport(truncation) { + this.truncation = truncation; +} +Transport.prototype.get = function (accessToken, options, params, callback, requestFactory) { + if (!callback || !isFunction(callback)) { + callback = function callback() {}; + } + addParamsAndAccessTokenToPath(accessToken, options, params); + var method = 'GET'; + var url = formatUrl(options); + this._makeZoneRequest({ + accessToken: accessToken, + url: url, + method: method, + callback: callback, + requestFactory: requestFactory, + timeout: options.timeout, + transport: options.transport + }); +}; +Transport.prototype.post = function (_ref) { + var accessToken = _ref.accessToken, + options = _ref.options, + payload = _ref.payload, + headers = _ref.headers, + callback = _ref.callback, + requestFactory = _ref.requestFactory; + if (!callback || !isFunction(callback)) { + callback = function callback() {}; + } + if (!payload) { + return callback(new Error('Cannot send empty request')); + } + var stringifyResult; + // Check payload.body to ensure only items are truncated. + if (this.truncation && payload.body) { + stringifyResult = this.truncation.truncate(payload); + } else { + stringifyResult = stringify(payload); + } + if (stringifyResult.error) { + return callback(stringifyResult.error); + } + var method = 'POST'; + var url = formatUrl(options); + this._makeZoneRequest({ + accessToken: accessToken, + url: url, + method: method, + payload: stringifyResult.value, + headers: headers, + callback: callback, + requestFactory: requestFactory, + timeout: options.timeout, + transport: options.transport + }); +}; +Transport.prototype.postJsonPayload = function (accessToken, options, payload, callback, requestFactory) { + if (!callback || !isFunction(callback)) { + callback = function callback() {}; + } + var method = 'POST'; + var url = formatUrl(options); + this._makeZoneRequest({ + accessToken: accessToken, + url: url, + method: method, + payload: payload, + callback: callback, + requestFactory: requestFactory, + timeout: options.timeout, + transport: options.transport + }); +}; + +// Wraps `_makeRequest` if zone.js is being used, ensuring that Rollbar +// API calls are not intercepted by any child forked zones. +// This is equivalent to `NgZone.runOutsideAngular` in Angular. +Transport.prototype._makeZoneRequest = function () { + var _this = this; + var gWindow = typeof window !== 'undefined' && window || typeof self !== 'undefined' && self; + // Whenever zone.js is loaded and `Zone` is exposed globally, access + // the root zone to ensure that requests are always made within it. + // This approach is framework-agnostic, regardless of which + // framework zone.js is used with. + var rootZone = gWindow && gWindow.Zone && gWindow.Zone.root; + var args = Array.prototype.slice.call(arguments); + if (rootZone) { + rootZone.run(function () { + _this._makeRequest.apply(undefined, args); + }); + } else { + this._makeRequest.apply(undefined, args); + } +}; +Transport.prototype._makeRequest = function (params) { + var payload = params.payload, + callback = params.callback, + transport = params.transport; + if (typeof RollbarProxy !== 'undefined') { + return _proxyRequest(payload, callback); + } + if (transport === 'fetch') { + transport_fetch(params); + } else { + xhr(params); + } +}; + +/* global RollbarProxy */ +function _proxyRequest(json, callback) { + var rollbarProxy = new RollbarProxy(); + rollbarProxy.sendJsonPayload(json, function (_msg) { + /* do nothing */ + }, function (err) { + callback(new Error(err)); + }); +} +/* harmony default export */ var browser_transport = (Transport); +;// ./src/browser/url.js +// See https://nodejs.org/docs/latest/api/url.html +function url_parse(url) { + var result = { + protocol: null, + auth: null, + host: null, + path: null, + hash: null, + href: url, + hostname: null, + port: null, + pathname: null, + search: null, + query: null + }; + var i, last; + i = url.indexOf('//'); + if (i !== -1) { + result.protocol = url.substring(0, i); + last = i + 2; + } else { + last = 0; + } + i = url.indexOf('@', last); + if (i !== -1) { + result.auth = url.substring(last, i); + last = i + 1; + } + i = url.indexOf('/', last); + if (i === -1) { + i = url.indexOf('?', last); + if (i === -1) { + i = url.indexOf('#', last); + if (i === -1) { + result.host = url.substring(last); + } else { + result.host = url.substring(last, i); + result.hash = url.substring(i); } - } - }, { - key: "captureNetwork", - value: function captureNetwork(metadata, subtype, rollbarUUID) { - if (metadata.request && this.isJsonContentType(metadata.request_content_type)) { - metadata.request = this.scrubJson(metadata.request); + result.hostname = result.host.split(':')[0]; + result.port = result.host.split(':')[1]; + if (result.port) { + result.port = parseInt(result.port, 10); } - return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID); - } - }, { - key: "isJsonContentType", - value: function isJsonContentType(contentType) { - return contentType && isType(contentType, 'string') && contentType.toLowerCase().includes('json') ? true : false; - } - }, { - key: "addOtelNetworkResponse", - value: function addOtelNetworkResponse(event, endTimeMs, statusCode) { - if (event.otelAttributes) { - event.otelAttributes['response.timeUnixNano'] = (endTimeMs * 1e6).toString(); - event.otelAttributes.statusCode = statusCode; + return result; + } else { + result.host = url.substring(last, i); + result.hostname = result.host.split(':')[0]; + result.port = result.host.split(':')[1]; + if (result.port) { + result.port = parseInt(result.port, 10); } + last = i; } - }, { - key: "scrubJson", - value: function scrubJson(json) { - return JSON.stringify(src_scrub(JSON.parse(json), this.options.scrubFields)); + } else { + result.host = url.substring(last, i); + result.hostname = result.host.split(':')[0]; + result.port = result.host.split(':')[1]; + if (result.port) { + result.port = parseInt(result.port, 10); } - }, { - key: "fetchHeaders", - value: function fetchHeaders(inHeaders, headersConfig) { - var outHeaders = {}; - try { - if (headersConfig === true) { - if (typeof inHeaders.entries === 'function') { - // Headers.entries() is not implemented in IE - var allHeaders = inHeaders.entries(); - var currentHeader = allHeaders.next(); - while (!currentHeader.done) { - outHeaders[currentHeader.value[0]] = currentHeader.value[1]; - currentHeader = allHeaders.next(); - } - } - } else { - var _iterator5 = telemetry_createForOfIteratorHelper(headersConfig), - _step5; - try { - for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { - var h = _step5.value; - outHeaders[h] = inHeaders.get(h); - } - } catch (err) { - _iterator5.e(err); - } finally { - _iterator5.f(); - } - } - } catch (e) { - /* ignore probable IE errors */ - } - return outHeaders; + last = i; + } + i = url.indexOf('#', last); + if (i === -1) { + result.path = url.substring(last); + } else { + result.path = url.substring(last, i); + result.hash = url.substring(i); + } + if (result.path) { + var pathParts = result.path.split('?'); + result.pathname = pathParts[0]; + result.query = pathParts[1]; + result.search = result.query ? '?' + result.query : null; + } + return result; +} + +;// ./src/browser/core.js +var _Rollbar; +function core_typeof(o) { "@babel/helpers - typeof"; return core_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, core_typeof(o); } +function core_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function core_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? core_ownKeys(Object(t), !0).forEach(function (r) { core_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : core_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function core_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function core_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, core_toPropertyKey(o.key), o); } } +function core_createClass(e, r, t) { return r && core_defineProperties(e.prototype, r), t && core_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function core_defineProperty(e, r, t) { return (r = core_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function core_toPropertyKey(t) { var i = core_toPrimitive(t, "string"); return "symbol" == core_typeof(i) ? i : i + ""; } +function core_toPrimitive(t, r) { if ("object" != core_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != core_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + + + + + + + + + + + + + + + + + +// Used to support global `Rollbar` instance. +var _instance = null; +var core_Rollbar = /*#__PURE__*/function () { + function Rollbar(options, client) { + core_classCallCheck(this, Rollbar); + src_logger.init({ + logLevel: options.logLevel || 'error' + }); + this.options = handleOptions(core_defaultOptions, options, null, src_logger); + this.options._configuredOptions = options; + this.components = this.components || {}; + var Telemeter = this.components.telemeter; + var Instrumenter = this.components.instrumenter; + this.wrapGlobals = this.components.wrapGlobals; + this.scrub = this.components.scrub; + var truncation = this.components.truncation; + var Tracing = this.components.tracing; + var Replay = this.components.replay; + var transport = new browser_transport(truncation); + var api = new src_api(this.options, transport, url_namespaceObject, truncation); + if (Tracing) { + this.tracing = new Tracing(_gWindow(), api, this.options); + this.tracing.initSession(); } - }, { - key: "trackHttpErrors", - value: function trackHttpErrors() { - return this.autoInstrument.networkErrorOnHttp5xx || this.autoInstrument.networkErrorOnHttp4xx || this.autoInstrument.networkErrorOnHttp0; + if (Telemeter) { + this.telemeter = new Telemeter(this.options, this.tracing); } - }, { - key: "errorOnHttpStatus", - value: function errorOnHttpStatus(metadata) { - var status = metadata.status_code; - if (status >= 500 && this.autoInstrument.networkErrorOnHttp5xx || status >= 400 && this.autoInstrument.networkErrorOnHttp4xx || status === 0 && this.autoInstrument.networkErrorOnHttp0) { - var error = new Error('HTTP request failed with Status ' + status); - error.stack = metadata.stack; - this.rollbar.error(error, { - skipFrames: 1 - }); + if (Replay && isBrowser()) { + var replayOptions = this.options.replay; + this.replay = new Replay({ + tracing: this.tracing, + telemeter: this.telemeter, + options: replayOptions + }); + if (replayOptions.enabled && replayOptions.autoStart) { + this.replay.recorder.start(); } } - }, { - key: "deinstrumentConsole", - value: function deinstrumentConsole() { - var b; - while (this.replacements['log'].length) { - b = this.replacements['log'].shift(); - this._window.console[b[0]] = b[1]; - } + this.client = client || new rollbar(this.options, api, src_logger, this.telemeter, this.tracing, this.replay, 'browser'); + var gWindow = _gWindow(); + var gDocument = typeof document !== 'undefined' && document; + this.isChrome = gWindow.chrome && gWindow.chrome.runtime; // check .runtime to avoid Edge browsers + this.anonymousErrorsPending = 0; + addTransformsToNotifier(this.client.notifier, this, gWindow); + addPredicatesToQueue(this.client.queue); + this.setupUnhandledCapture(); + if (Instrumenter) { + this.instrumenter = new Instrumenter(this.options, this.client.telemeter, this, gWindow, gDocument); + this.instrumenter.instrument(); } - }, { - key: "instrumentConsole", - value: function instrumentConsole() { - var _this$_window; - if (!((_this$_window = this._window) !== null && _this$_window !== void 0 && (_this$_window = _this$_window.console) !== null && _this$_window !== void 0 && _this$_window.log)) { - return; - } - var self = this; - var c = this._window.console; - function wrapConsole(method) { - 'use strict'; + this.setSessionAttributesFromOptions(options); - // See https://github.com/rollbar/rollbar.js/pull/778 - var orig = c[method]; - var origConsole = c; - var level = method === 'warn' ? 'warning' : method; - c[method] = function () { - var args = Array.prototype.slice.call(arguments); - var message = formatArgsAsString(args); - self.telemeter.captureLog(message, level, null, utility_now()); - if (orig) { - Function.prototype.apply.call(orig, origConsole, args); - } - }; - self.replacements['log'].push([method, orig]); - } - var methods = ['debug', 'info', 'warn', 'error', 'log']; - try { - for (var _i2 = 0, _methods = methods; _i2 < _methods.length; _i2++) { - var m = _methods[_i2]; - wrapConsole(m); - } - } catch (e) { - this.diagnostic.instrumentConsole = { - error: e.message + // Used with rollbar-react for rollbar-react-native compatibility. + this.rollbar = this; + } + return core_createClass(Rollbar, [{ + key: "global", + value: function global(options) { + this.client.global(options); + return this; + } + }, { + key: "configure", + value: function configure(options, payloadData) { + var _this$tracing, _this$replay, _this$instrumenter; + if (options.logLevel) { + src_logger.init({ + logLevel: options.logLevel + }); + } + this.setSessionAttributesFromOptions(options); + var oldOptions = this.options; + var payload = {}; + if (payloadData) { + payload = { + payload: payloadData }; } + this.options = handleOptions(oldOptions, options, payload, src_logger); + this.options._configuredOptions = handleOptions(oldOptions._configuredOptions, options, payload); + (_this$tracing = this.tracing) === null || _this$tracing === void 0 || _this$tracing.configure(this.options); + (_this$replay = this.replay) === null || _this$replay === void 0 || _this$replay.configure(this.options.replay); + this.client.configure(this.options, payloadData); + (_this$instrumenter = this.instrumenter) === null || _this$instrumenter === void 0 || _this$instrumenter.configure(this.options); + this.setupUnhandledCapture(); + return this; } }, { - key: "deinstrumentDom", - value: function deinstrumentDom() { - this.removeListeners('dom'); + key: "lastError", + value: function lastError() { + return this.client.lastError; } }, { - key: "instrumentDom", - value: function instrumentDom() { - var _this = this; - var self = this; - this.addListener('dom', this._window, ['click', 'dblclick', 'contextmenu'], function (e) { - return _this.handleEvent('click', e); - }); - this.addListener('dom', this._window, ['dragstart', 'dragend', 'dragenter', 'dragleave', 'drop'], function (e) { - return _this.handleEvent('dragdrop', e); - }); - this.addListener('dom', this._window, ['blur', 'focus'], function (e) { - return _this.handleEvent('focus', e); - }); - this.addListener('dom', this._window, ['submit', 'invalid'], function (e) { - return _this.handleEvent('form', e); - }); - this.addListener('dom', this._window, ['input', 'change'], function (e) { - return _this.handleEvent('input', e); - }); - this.addListener('dom', this._window, ['resize'], function (e) { - return _this.handleEvent('resize', e); - }); - this.addListener('dom', this._document, ['DOMContentLoaded'], function (e) { - return _this.handleEvent('contentLoaded', e); - }); + key: "log", + value: function log() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.log(item); + return { + uuid: uuid + }; } }, { - key: "handleEvent", - value: function handleEvent(name, evt) { - try { - return { - click: this.handleClick, - dragdrop: this.handleDrag, - focus: this.handleFocus, - form: this.handleForm, - input: this.handleInput, - resize: this.handleResize, - contentLoaded: this.handleContentLoaded - }[name].call(this, evt); - } catch (exc) { - console.log("".concat(name, " handler error"), evt, exc, exc.stack); - } + key: "debug", + value: function debug() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.debug(item); + return { + uuid: uuid + }; } }, { - key: "handleContentLoaded", - value: function handleContentLoaded(evt) { - var replayId = this.rollbar.triggerReplay({ - type: 'navigation', - path: new URL(this._location.href).pathname - }); + key: "info", + value: function info() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.info(item); + return { + uuid: uuid + }; } }, { - key: "handleClick", - value: function handleClick(evt) { - var _evt$target; - var tagName = (_evt$target = evt.target) === null || _evt$target === void 0 ? void 0 : _evt$target.tagName.toLowerCase(); - if (['input', 'select', 'textarea'].includes(tagName)) return; - this.telemeter.captureClick({ - type: evt.type, - isSynthetic: !evt.isTrusted, - element: domUtility_elementString(evt.target), - timestamp: utility_now() - }); + key: "warn", + value: function warn() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.warn(item); + return { + uuid: uuid + }; } }, { - key: "handleFocus", - value: function handleFocus(evt) { - var _evt$target2; - var type = evt.type; - var element = (_evt$target2 = evt.target) !== null && _evt$target2 !== void 0 && _evt$target2.window ? 'window' : domUtility_elementString(evt.target); - this.telemeter.captureFocus({ - type: type, - isSynthetic: !evt.isTrusted, - element: element, - timestamp: utility_now() - }); + key: "warning", + value: function warning() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.warning(item); + return { + uuid: uuid + }; } }, { - key: "handleForm", - value: function handleForm(evt) { - var _evt$target3; - // TODO: implement form event handling - var type = evt.type; - var elementString = (_evt$target3 = evt.target) !== null && _evt$target3 !== void 0 && _evt$target3.window ? 'window' : domUtility_elementString(evt.target); + key: "error", + value: function error() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.error(item); + return { + uuid: uuid + }; } }, { - key: "handleResize", - value: function handleResize(evt) { - var textZoomRatio = window.screen.width / window.innerWidth; - this.telemeter.captureResize({ - type: evt.type, - isSynthetic: !evt.isTrusted, - width: window.innerWidth, - height: window.innerHeight, - textZoomRatio: textZoomRatio, - timestamp: utility_now() - }); + key: "critical", + value: function critical() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.critical(item); + return { + uuid: uuid + }; } }, { - key: "handleDrag", - value: function handleDrag(evt) { - var type = evt.type; - var kinds, mediaTypes, dropEffect, effectAllowed; - if (type === 'drop') { - kinds = []; - mediaTypes = []; - var objs = [].concat(telemetry_toConsumableArray(evt.dataTransfer.files), telemetry_toConsumableArray(evt.dataTransfer.items)); - var _iterator6 = telemetry_createForOfIteratorHelper(objs), - _step6; - try { - for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { - var o = _step6.value; - if (o.kind && o.type) { - kinds.push(o.kind); - mediaTypes.push(o.type); - } + key: "buildJsonPayload", + value: function buildJsonPayload(item) { + return this.client.buildJsonPayload(item); + } + }, { + key: "sendJsonPayload", + value: function sendJsonPayload(jsonPayload) { + return this.client.sendJsonPayload(jsonPayload); + } + }, { + key: "triggerDirectReplay", + value: function triggerDirectReplay(context) { + return this.triggerReplay(core_objectSpread({ + type: 'direct' + }, context)); + } + }, { + key: "triggerReplay", + value: function triggerReplay(context) { + if (!this.replay) return null; + return this.replay.triggerReplay(context); + } + }, { + key: "setupUnhandledCapture", + value: function setupUnhandledCapture() { + var gWindow = _gWindow(); + if (!this.unhandledExceptionsInitialized) { + if (this.options.captureUncaught || this.options.handleUncaughtExceptions) { + captureUncaughtExceptions(gWindow, this); + if (this.wrapGlobals && this.options.wrapGlobalEventHandlers) { + this.wrapGlobals(gWindow, this); } - } catch (err) { - _iterator6.e(err); - } finally { - _iterator6.f(); + this.unhandledExceptionsInitialized = true; } } - if (['drop', 'dragstart'].includes(type)) { - var _evt$dataTransfer, _evt$dataTransfer2; - dropEffect = (_evt$dataTransfer = evt.dataTransfer) === null || _evt$dataTransfer === void 0 ? void 0 : _evt$dataTransfer.dropEffect; - effectAllowed = (_evt$dataTransfer2 = evt.dataTransfer) === null || _evt$dataTransfer2 === void 0 ? void 0 : _evt$dataTransfer2.effectAllowed; + if (!this.unhandledRejectionsInitialized) { + if (this.options.captureUnhandledRejections || this.options.handleUnhandledRejections) { + captureUnhandledRejections(gWindow, this); + this.unhandledRejectionsInitialized = true; + } } - this.telemeter.captureDragDrop({ - type: type, - isSynthetic: !evt.isTrusted, - element: domUtility_elementString(evt.target), - dropEffect: dropEffect, - effectAllowed: effectAllowed, - kinds: JSON.stringify(kinds), - mediaTypes: JSON.stringify(mediaTypes), - timestamp: utility_now() - }); + } + }, { + key: "handleUncaughtException", + value: function handleUncaughtException(message, url, lineno, colno, error, context) { + if (!this.options.captureUncaught && !this.options.handleUncaughtExceptions) { + return; + } + + // Chrome will always send 5+ arguments and error will be valid or null, not undefined. + // If error is undefined, we have a different caller. + // Chrome also sends errors from web workers with null error, but does not invoke + // prepareStackTrace() for these. Test for empty url to skip them. + if (this.options.inspectAnonymousErrors && this.isChrome && error === null && url === '') { + return 'anonymous'; + } + var item; + var stackInfo = makeUnhandledStackInfo(message, url, lineno, colno, error, 'onerror', 'uncaught exception', errorParser); + if (isError(error)) { + item = this._createItem([message, error, context]); + item._unhandledStackInfo = stackInfo; + } else if (isError(url)) { + item = this._createItem([message, url, context]); + item._unhandledStackInfo = stackInfo; + } else { + item = this._createItem([message, context]); + item.stackInfo = stackInfo; + } + item.level = this.options.uncaughtErrorLevel; + item._isUncaught = true; + this.client.log(item); } - /* - * Applies Rollbar telemetry scrubbing options to the dom input value. - * When replay options are present, applies those as well. + /** + * Chrome only. Other browsers will ignore. + * + * Use Error.prepareStackTrace to extract information about errors that + * do not have a valid error object in onerror(). + * + * In tested version of Chrome, onerror is called first but has no way + * to communicate with prepareStackTrace. Use a counter to let this + * handler know which errors to send to Rollbar. + * + * In config options, set inspectAnonymousErrors to enable. */ }, { - key: "scrubInputValue", - value: function scrubInputValue(value, element, tagName, inputType) { - var mask = '******'; - if (inputType === 'password') { - return mask; + key: "handleAnonymousErrors", + value: function handleAnonymousErrors() { + var _this = this; + if (!this.options.inspectAnonymousErrors || !this.isChrome) { + return; } - if (this.scrubTelemetryInputs) { - return mask; - } else { - var description = describeElement(element); - if (this.telemetryScrubber) { - if (this.telemetryScrubber(description)) { - return mask; + var prepareStackTrace = function prepareStackTrace(error, _stack) { + if (_this.options.inspectAnonymousErrors) { + if (_this.anonymousErrorsPending) { + // This is the only known way to detect that onerror saw an anonymous error. + // It depends on onerror reliably being called before Error.prepareStackTrace, + // which so far holds true on tested versions of Chrome. If versions of Chrome + // are tested that behave differently, this logic will need to be updated + // accordingly. + _this.anonymousErrorsPending -= 1; + if (!error) { + // Not likely to get here, but calling handleUncaughtException from here + // without an error object would throw off the anonymousErrorsPending counter, + // so return now. + return; + } + + // Allow this to be tracked later. + error._isAnonymous = true; + + // url, lineno, colno shouldn't be needed for these errors. + // If that changes, update this accordingly, using the unused + // _stack param as needed (rather than parse error.toString()). + _this.handleUncaughtException(error.message, null, null, null, error); } - } else if (this.defaultValueScrubber(description)) { - return mask; } - } - // Apply replay options regardless of other scrubbing - if (isMatchingElement(element, this.scrubClasses, this.scrubSelectors)) { - return mask; - } + // Workaround to ensure stack is preserved for normal errors. + return error.stack; + }; - // This check is last since maskInputFn returns a modified value rather - // than a boolean, which would cause an early return even if the value - // was not scrubbed. - if (this.maskInputOptions[tagName.toLowerCase()] || this.maskInputOptions[inputType]) { - if (this.maskInputFn) { - return this.maskInputFn(value, element); - } else { - return mask; - } + // https://v8.dev/docs/stack-trace-api + try { + Error.prepareStackTrace = prepareStackTrace; + } catch (e) { + this.options.inspectAnonymousErrors = false; + this.error('anonymous error handler failed', e); } - return value; } - - /* - * Uses the `input` event for everything except radio and checkbox inputs. - * For those, it uses the `change` event. - */ }, { - key: "handleInput", - value: function handleInput(evt) { - var _evt$target4, _evt$target5, _evt$target6, _evt$target7; - var type = evt.type; - var tagName = (_evt$target4 = evt.target) === null || _evt$target4 === void 0 ? void 0 : _evt$target4.tagName.toLowerCase(); - var value = (_evt$target5 = evt.target) === null || _evt$target5 === void 0 ? void 0 : _evt$target5.value; - var inputType = ((_evt$target6 = evt.target) === null || _evt$target6 === void 0 || (_evt$target6 = _evt$target6.attributes) === null || _evt$target6 === void 0 || (_evt$target6 = _evt$target6.type) === null || _evt$target6 === void 0 ? void 0 : _evt$target6.value) || ((_evt$target7 = evt.target) === null || _evt$target7 === void 0 ? void 0 : _evt$target7.type); - if (value !== undefined) { - value = this.scrubInputValue(value, evt.target, tagName, inputType); + key: "handleUnhandledRejection", + value: function handleUnhandledRejection(reason, promise) { + if (!this.options.captureUnhandledRejections && !this.options.handleUnhandledRejections) { + return; } - switch (type) { - case 'input': - if (['radio', 'checkbox'].includes(inputType)) return; - if (['select', 'textarea'].includes(tagName)) { - inputType = tagName; - } - break; - case 'change': - if (!['radio', 'checkbox'].includes(inputType)) return; - if (inputType === 'checkbox') { - var _evt$target8; - value = (_evt$target8 = evt.target) === null || _evt$target8 === void 0 ? void 0 : _evt$target8.checked; + var message = 'unhandled rejection was null or undefined!'; + if (reason) { + if (reason.message) { + message = reason.message; + } else { + var reasonResult = stringify(reason); + if (reasonResult.value) { + message = reasonResult.value; } - break; + } } - this.telemeter.captureInput({ - type: inputType, - isSynthetic: !evt.isTrusted, - element: domUtility_elementString(evt.target), - value: value, - timestamp: utility_now() - }); + var context = reason && reason._rollbarContext || promise && promise._rollbarContext; + var item; + if (isError(reason)) { + item = this._createItem([message, reason, context]); + } else { + item = this._createItem([message, reason, context]); + item.stackInfo = makeUnhandledStackInfo(message, '', 0, 0, null, 'unhandledrejection', '', errorParser); + } + item.level = this.options.uncaughtErrorLevel; + item._isUncaught = true; + item._originalArgs = item._originalArgs || []; + item._originalArgs.push(promise); + this.client.log(item); } }, { - key: "deinstrumentNavigation", - value: function deinstrumentNavigation() { - var chrome = this._window.chrome; - var chromePackagedApp = chrome && chrome.app && chrome.app.runtime; - // See https://github.com/angular/angular.js/pull/13945/files - var hasPushState = !chromePackagedApp && this._window.history && this._window.history.pushState; - if (!hasPushState) { - return; + key: "wrap", + value: function wrap(f, context, _before) { + try { + var ctxFn; + if (isFunction(context)) { + ctxFn = context; + } else { + ctxFn = function ctxFn() { + return context || {}; + }; + } + if (!isFunction(f)) { + return f; + } + if (f._isWrap) { + return f; + } + if (!f._rollbar_wrapped) { + f._rollbar_wrapped = function () { + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } + try { + return f.apply(this, arguments); + } catch (exc) { + var e = exc; + if (e && window._rollbarWrappedError !== e) { + if (isType(e, 'string')) { + e = new String(e); + } + e._rollbarContext = ctxFn() || {}; + e._rollbarContext._wrappedSource = f.toString(); + window._rollbarWrappedError = e; + } + throw e; + } + }; + f._rollbar_wrapped._isWrap = true; + for (var prop in f) { + if (hasOwn(f, prop) && prop !== '_rollbar_wrapped') { + f._rollbar_wrapped[prop] = f[prop]; + } + } + } + return f._rollbar_wrapped; + } catch (_e) { + // Return the original function if the wrap fails. + return f; } - restore(this.replacements, 'navigation'); } }, { - key: "instrumentNavigation", - value: function instrumentNavigation() { - var chrome = this._window.chrome; - var chromePackagedApp = chrome && chrome.app && chrome.app.runtime; - // See https://github.com/angular/angular.js/pull/13945/files - var hasPushState = !chromePackagedApp && this._window.history && this._window.history.pushState; - if (!hasPushState) { - return; - } - var self = this; - utility_replace(this._window, 'onpopstate', function (orig) { - return function () { - var current = self._location.href; - self.handleUrlChange(self._lastHref, current); - if (orig) { - orig.apply(this, arguments); - } - }; - }, this.replacements, 'navigation'); - utility_replace(this._window.history, 'pushState', function (orig) { - return function () { - var url = arguments.length > 2 ? arguments[2] : undefined; - if (url) { - self.handleUrlChange(self._lastHref, url + ''); - } - return orig.apply(this, arguments); - }; - }, this.replacements, 'navigation'); + key: "captureEvent", + value: function captureEvent() { + var event = createTelemetryEvent(arguments); + return this.client.captureEvent(event.type, event.metadata, event.level); } }, { - key: "handleUrlChange", - value: function handleUrlChange(from, to) { - var parsedHref = parse(this._location.href); - var parsedTo = parse(to); - var parsedFrom = parse(from); - this._lastHref = to; - if (parsedHref.protocol === parsedTo.protocol && parsedHref.host === parsedTo.host) { - to = parsedTo.path + (parsedTo.hash || ''); - } - if (parsedHref.protocol === parsedFrom.protocol && parsedHref.host === parsedFrom.host) { - from = parsedFrom.path + (parsedFrom.hash || ''); - } - this.telemeter.captureNavigation(from, to, null, utility_now()); - var replayId = this.rollbar.triggerReplay({ - type: 'navigation', - path: to - }); + key: "setSessionUser", + value: function setSessionUser(user) { + var _this$tracing2; + if (!((_this$tracing2 = this.tracing) !== null && _this$tracing2 !== void 0 && _this$tracing2.session)) return; + this.tracing.session.setUser(user); } }, { - key: "instrumentConnectivity", - value: function instrumentConnectivity() { - var self = this; - this.addListener('connectivity', this._window, ['online', 'offline'], function (evt) { - return self.handleConnectivity(evt); - }); + key: "setSessionAttributes", + value: function setSessionAttributes(attrs) { + var _this$tracing3; + if (!((_this$tracing3 = this.tracing) !== null && _this$tracing3 !== void 0 && _this$tracing3.session)) return; + attrs = core_objectSpread({}, attrs); + this.tracing.session.setAttributes(attrs); } }, { - key: "handleConnectivity", - value: function handleConnectivity(evt) { - var type = evt.type; - this.telemeter.captureConnectivityChange({ - type: type, - isSynthetic: !evt.isTrusted, - timestamp: utility_now() + key: "setSessionAttributesFromOptions", + value: function setSessionAttributesFromOptions(options) { + var _options$payload, _options$client, _options$payload2, _options$payload3, _options$payload4; + var person = options.person || ((_options$payload = options.payload) === null || _options$payload === void 0 ? void 0 : _options$payload.person); + if (person) { + this.setSessionUser(person); + } + var code_version = ((_options$client = options.client) === null || _options$client === void 0 || (_options$client = _options$client.javascript) === null || _options$client === void 0 ? void 0 : _options$client.code_version) || options.codeVersion || options.code_version || ((_options$payload2 = options.payload) === null || _options$payload2 === void 0 || (_options$payload2 = _options$payload2.client) === null || _options$payload2 === void 0 || (_options$payload2 = _options$payload2.javascript) === null || _options$payload2 === void 0 ? void 0 : _options$payload2.code_version) || ((_options$payload3 = options.payload) === null || _options$payload3 === void 0 ? void 0 : _options$payload3.code_version) || ((_options$payload4 = options.payload) === null || _options$payload4 === void 0 ? void 0 : _options$payload4.codeVersion); + this.setSessionAttributes({ + 'rollbar.codeVersion': code_version, + 'rollbar.notifier.name': 'rollbar-browser-js', + 'rollbar.notifier.version': options.version }); } + + // The following two methods are used internally and are not meant for public use }, { - key: "handleCspEvent", - value: function handleCspEvent(cspEvent) { - var message = 'Security Policy Violation: ' + 'blockedURI: ' + cspEvent.blockedURI + ', ' + 'violatedDirective: ' + cspEvent.violatedDirective + ', ' + 'effectiveDirective: ' + cspEvent.effectiveDirective + ', '; - if (cspEvent.sourceFile) { - message += 'location: ' + cspEvent.sourceFile + ', ' + 'line: ' + cspEvent.lineNumber + ', ' + 'col: ' + cspEvent.columnNumber + ', '; + key: "captureDomContentLoaded", + value: function captureDomContentLoaded(e, ts) { + if (!ts) { + ts = new Date(); } - message += 'originalPolicy: ' + cspEvent.originalPolicy; - this.telemeter.captureLog(message, 'error', null, utility_now()); - this.handleCspError(message); + return this.client.captureDomContentLoaded(ts); } }, { - key: "handleCspError", - value: function handleCspError(message) { - if (this.autoInstrument.errorOnContentSecurityPolicy) { - this.rollbar.error(message); + key: "captureLoad", + value: function captureLoad(e, ts) { + if (!ts) { + ts = new Date(); } + return this.client.captureLoad(ts); } }, { - key: "deinstrumentContentSecurityPolicy", - value: function deinstrumentContentSecurityPolicy() { - this.removeListeners('contentsecuritypolicy'); + key: "loadFull", + value: function loadFull() { + src_logger.info('Unexpected Rollbar.loadFull() called on a Notifier instance. This can happen when Rollbar is loaded multiple times.'); } }, { - key: "instrumentContentSecurityPolicy", - value: function instrumentContentSecurityPolicy() { - if (!('addEventListener' in this._document)) { - return; + key: "_createItem", + value: function _createItem(args) { + return createItem(args, src_logger, this); + } + + // Static version of instance methods support the legacy pattern of a + // global `Rollbar` instance, where after calling `Rollbar.init()`, + // `Rollbar` can be used as if it were an instance. + // If support for this pattern is dropped, these static methods can be removed. + }], [{ + key: "init", + value: function init(options, client) { + if (_instance) { + return _instance.global(options).configure(options); } - var cspHandler = this.handleCspEvent.bind(this); - this.addListener('contentsecuritypolicy', this._document, ['securitypolicyviolation'], cspHandler); + _instance = new Rollbar(options, client); + return _instance; } }, { - key: "addListener", - value: function addListener(section, obj, types, handler) { - var _this2 = this; - if (obj.addEventListener) { - var _iterator7 = telemetry_createForOfIteratorHelper(types), - _step7; - try { - var _loop = function _loop() { - var t = _step7.value; - var options = { - capture: true, - passive: true - }; - obj.addEventListener(t, handler, options, true); - _this2.eventRemovers[section].push(function () { - obj.removeEventListener(t, handler, options); - }); - }; - for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { - _loop(); - } - } catch (err) { - _iterator7.e(err); - } finally { - _iterator7.f(); - } - } + key: "setComponents", + value: function setComponents(components) { + Rollbar.prototype.components = components; } }, { - key: "removeListeners", - value: function removeListeners(section) { - var r; - while (this.eventRemovers[section].length) { - r = this.eventRemovers[section].shift(); - r(); + key: "callInstance", + value: function callInstance(method, args) { + if (!_instance) { + var message = 'Rollbar is not initialized'; + src_logger.error(message); + var maybeCallback = _getFirstFunction(args); + if (maybeCallback) { + maybeCallback(new Error(message)); + } + return; } + return _instance[method].apply(_instance, args); } }]); }(); -function _isUrlObject(input) { - return typeof URL !== 'undefined' && input instanceof URL; -} -/* harmony default export */ var browser_telemetry = (Instrumenter); -;// ./src/browser/wrapGlobals.js -function wrapGlobals(window, handler, shim) { - if (!window) { - return; +/* Internal */ +_Rollbar = core_Rollbar; +core_defineProperty(core_Rollbar, "global", function () { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; } - // Adapted from https://github.com/bugsnag/bugsnag-js - var globals = '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'.split(','); - var i, global; - for (i = 0; i < globals.length; ++i) { - global = globals[i]; - if (window[global] && window[global].prototype) { - _extendListenerPrototype(handler, window[global].prototype, shim); - } + return _Rollbar.callInstance('global', args); +}); +core_defineProperty(core_Rollbar, "configure", function () { + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; } + return _Rollbar.callInstance('configure', args); +}); +core_defineProperty(core_Rollbar, "lastError", function () { + for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; + } + return _Rollbar.callInstance('lastError', args); +}); +core_defineProperty(core_Rollbar, "log", function () { + for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { + args[_key4] = arguments[_key4]; + } + return _Rollbar.callInstance('log', args); +}); +core_defineProperty(core_Rollbar, "debug", function () { + for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { + args[_key5] = arguments[_key5]; + } + return _Rollbar.callInstance('debug', args); +}); +core_defineProperty(core_Rollbar, "info", function () { + for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { + args[_key6] = arguments[_key6]; + } + return _Rollbar.callInstance('info', args); +}); +core_defineProperty(core_Rollbar, "warn", function () { + for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { + args[_key7] = arguments[_key7]; + } + return _Rollbar.callInstance('warn', args); +}); +core_defineProperty(core_Rollbar, "warning", function () { + for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { + args[_key8] = arguments[_key8]; + } + return _Rollbar.callInstance('warning', args); +}); +core_defineProperty(core_Rollbar, "error", function () { + for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) { + args[_key9] = arguments[_key9]; + } + return _Rollbar.callInstance('error', args); +}); +core_defineProperty(core_Rollbar, "critical", function () { + for (var _len0 = arguments.length, args = new Array(_len0), _key0 = 0; _key0 < _len0; _key0++) { + args[_key0] = arguments[_key0]; + } + return _Rollbar.callInstance('critical', args); +}); +core_defineProperty(core_Rollbar, "buildJsonPayload", function () { + for (var _len1 = arguments.length, args = new Array(_len1), _key1 = 0; _key1 < _len1; _key1++) { + args[_key1] = arguments[_key1]; + } + return _Rollbar.callInstance('buildJsonPayload', args); +}); +core_defineProperty(core_Rollbar, "sendJsonPayload", function () { + for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) { + args[_key10] = arguments[_key10]; + } + return _Rollbar.callInstance('sendJsonPayload', args); +}); +core_defineProperty(core_Rollbar, "wrap", function () { + for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) { + args[_key11] = arguments[_key11]; + } + return _Rollbar.callInstance('wrap', args); +}); +core_defineProperty(core_Rollbar, "captureEvent", function () { + for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) { + args[_key12] = arguments[_key12]; + } + return _Rollbar.callInstance('captureEvent', args); +}); +function addTransformsToNotifier(notifier, rollbar, gWindow) { + notifier.addTransform(handleDomException).addTransform(handleItemWithError).addTransform(ensureItemHasSomethingToSay).addTransform(addBaseInfo).addTransform(addRequestInfo(gWindow)).addTransform(addClientInfo(gWindow)).addTransform(addPluginInfo(gWindow)).addTransform(addBody).addTransform(addMessageWithError).addTransform(addTelemetryData).addTransform(addConfigToPayload).addTransform(addScrubber(rollbar.scrub)).addTransform(addPayloadOptions).addTransform(userTransform(src_logger)).addTransform(addConfiguredOptions).addTransform(addDiagnosticKeys).addTransform(itemToPayload); } -function _extendListenerPrototype(handler, prototype, shim) { - if (prototype.hasOwnProperty && prototype.hasOwnProperty('addEventListener')) { - var oldAddEventListener = prototype.addEventListener; - while (oldAddEventListener._rollbarOldAdd && oldAddEventListener.belongsToShim) { - oldAddEventListener = oldAddEventListener._rollbarOldAdd; - } - var addFn = function addFn(event, callback, bubble) { - oldAddEventListener.call(this, event, handler.wrap(callback), bubble); - }; - addFn._rollbarOldAdd = oldAddEventListener; - addFn.belongsToShim = shim; - prototype.addEventListener = addFn; - var oldRemoveEventListener = prototype.removeEventListener; - while (oldRemoveEventListener._rollbarOldRemove && oldRemoveEventListener.belongsToShim) { - oldRemoveEventListener = oldRemoveEventListener._rollbarOldRemove; +function addPredicatesToQueue(queue) { + queue.addPredicate(checkLevel).addPredicate(checkIgnore).addPredicate(userCheckIgnore(src_logger)).addPredicate(urlIsNotBlockListed(src_logger)).addPredicate(urlIsSafeListed(src_logger)).addPredicate(messageIsIgnored(src_logger)); +} +function _getFirstFunction(args) { + for (var i = 0, len = args.length; i < len; ++i) { + if (isFunction(args[i])) { + return args[i]; } - var removeFn = function removeFn(event, callback, bubble) { - oldRemoveEventListener.call(this, event, callback && callback._rollbar_wrapped || callback, bubble); - }; - removeFn._rollbarOldRemove = oldRemoveEventListener; - removeFn.belongsToShim = shim; - prototype.removeEventListener = removeFn; } + return undefined; } -/* harmony default export */ var browser_wrapGlobals = (wrapGlobals); -;// ./src/truncation.js +function _gWindow() { + return typeof window !== 'undefined' && window || typeof self !== 'undefined' && self; +} +var core_defaultOptions = { + environment: 'unknown', + version: defaults.version, + scrubFields: browser_defaults.scrubFields, + logLevel: defaults.logLevel, + reportLevel: defaults.reportLevel, + uncaughtErrorLevel: defaults.uncaughtErrorLevel, + endpoint: defaults.endpoint, + verbose: false, + enabled: true, + transmit: true, + sendConfig: false, + includeItemsInTelemetry: true, + captureIp: true, + inspectAnonymousErrors: true, + ignoreDuplicateErrors: true, + wrapGlobalEventHandlers: false, + replay: replay_defaults, + tracing: tracing_defaults +}; +/* harmony default export */ var core = (core_Rollbar); +;// ./src/utility/headers.js -function raw(payload, jsonBackup) { - return [payload, stringify(payload, jsonBackup)]; -} -function selectFrames(frames, range) { - var len = frames.length; - if (len > range * 2) { - return frames.slice(0, range).concat(frames.slice(len - range)); +/* + * headers - Detect when fetch Headers are undefined and use a partial polyfill. + * + * A full polyfill is not used in order to keep package size as small as possible. + * Since this is only used internally and is not added to the window object, + * the full interface doesn't need to be supported. + * + * This implementation is modified from whatwg-fetch: + * https://github.com/github/fetch + */ +function headers(headers) { + if (typeof Headers === 'undefined') { + return new FetchHeaders(headers); } - return frames; + return new Headers(headers); } -function truncateFrames(payload, jsonBackup, range) { - range = typeof range === 'undefined' ? 30 : range; - var body = payload.data.body; - var frames; - if (body.trace_chain) { - var chain = body.trace_chain; - for (var i = 0; i < chain.length; i++) { - frames = chain[i].frames; - frames = selectFrames(frames, range); - chain[i].frames = frames; - } - } else if (body.trace) { - frames = body.trace.frames; - frames = selectFrames(frames, range); - body.trace.frames = frames; +function normalizeName(name) { + if (typeof name !== 'string') { + name = String(name); } - return [payload, stringify(payload, jsonBackup)]; + return name.toLowerCase(); } -function maybeTruncateValue(len, val) { - if (!val) { - return val; - } - if (val.length > len) { - return val.slice(0, len - 3).concat('...'); +function normalizeValue(value) { + if (typeof value !== 'string') { + value = String(value); } - return val; + return value; } -function truncateStrings(len, payload, jsonBackup) { - function truncator(k, v, seen) { - switch (typeName(v)) { - case 'string': - return maybeTruncateValue(len, v); - case 'object': - case 'array': - return utility_traverse(v, truncator, seen); - default: - return v; +function iteratorFor(items) { + var iterator = { + next: function next() { + var value = items.shift(); + return { + done: value === undefined, + value: value + }; } - } - payload = utility_traverse(payload, truncator); - return [payload, stringify(payload, jsonBackup)]; + }; + return iterator; } -function truncateTraceData(traceData) { - if (traceData.exception) { - delete traceData.exception.description; - traceData.exception.message = maybeTruncateValue(255, traceData.exception.message); +function FetchHeaders(headers) { + this.map = {}; + if (headers instanceof FetchHeaders) { + headers.forEach(function (value, name) { + this.append(name, value); + }, this); + } else if (Array.isArray(headers)) { + headers.forEach(function (header) { + this.append(header[0], header[1]); + }, this); + } else if (headers) { + Object.getOwnPropertyNames(headers).forEach(function (name) { + this.append(name, headers[name]); + }, this); } - traceData.frames = selectFrames(traceData.frames, 1); - return traceData; } -function minBody(payload, jsonBackup) { - var body = payload.data.body; - if (body.trace_chain) { - var chain = body.trace_chain; - for (var i = 0; i < chain.length; i++) { - chain[i] = truncateTraceData(chain[i]); +FetchHeaders.prototype.append = function (name, value) { + name = normalizeName(name); + value = normalizeValue(value); + var oldValue = this.map[name]; + this.map[name] = oldValue ? oldValue + ', ' + value : value; +}; +FetchHeaders.prototype.get = function (name) { + name = normalizeName(name); + return this.has(name) ? this.map[name] : null; +}; +FetchHeaders.prototype.has = function (name) { + return hasOwn(this.map, normalizeName(name)); +}; +FetchHeaders.prototype.forEach = function (callback, thisArg) { + for (var name in this.map) { + if (hasOwn(this.map, name)) { + callback.call(thisArg, this.map[name], name, this); } - } else if (body.trace) { - body.trace = truncateTraceData(body.trace); } - return [payload, stringify(payload, jsonBackup)]; +}; +FetchHeaders.prototype.entries = function () { + var items = []; + this.forEach(function (value, name) { + items.push([name, value]); + }); + return iteratorFor(items); +}; +/* harmony default export */ var utility_headers = (headers); +;// ./src/utility/replace.js +function replace(obj, name, replacement, replacements, type) { + var orig = obj[name]; + obj[name] = replacement(orig); + if (replacements) { + replacements[type].push([obj, name, orig]); + } } -function needsTruncation(payload, maxSize) { - return maxByteSize(payload) > maxSize; +/* harmony default export */ var utility_replace = (replace); +;// ./src/browser/domUtility.js +function domUtility_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = domUtility_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function domUtility_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return domUtility_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? domUtility_arrayLikeToArray(r, a) : void 0; } } +function domUtility_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function getElementType(e) { + return (e.getAttribute('type') || '').toLowerCase(); } -function truncate(payload, jsonBackup, maxSize) { - maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize; - var strategies = [raw, truncateFrames, truncateStrings.bind(null, 1024), truncateStrings.bind(null, 512), truncateStrings.bind(null, 256), minBody]; - var strategy, results, result; - while (strategy = strategies.shift()) { - results = strategy(payload, jsonBackup); - payload = results[0]; - result = results[1]; - if (result.error || !needsTruncation(result.value, maxSize)) { - return result; +function isDescribedElement(element, type, subtypes) { + if (element.tagName.toLowerCase() !== type.toLowerCase()) { + return false; + } + if (!subtypes) { + return true; + } + var elementType = getElementType(element); + var _iterator = domUtility_createForOfIteratorHelper(subtypes), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var subtype = _step.value; + if (subtype === elementType) { + return true; + } } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); } - return result; + return false; } -/* harmony default export */ var truncation = ({ - truncate: truncate, - /* for testing */ - raw: raw, - truncateFrames: truncateFrames, - truncateStrings: truncateStrings, - maybeTruncateValue: maybeTruncateValue -}); -;// ./src/tracing/context.js -function context_typeof(o) { "@babel/helpers - typeof"; return context_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, context_typeof(o); } -function context_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function context_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, context_toPropertyKey(o.key), o); } } -function context_createClass(e, r, t) { return r && context_defineProperties(e.prototype, r), t && context_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function context_toPropertyKey(t) { var i = context_toPrimitive(t, "string"); return "symbol" == context_typeof(i) ? i : i + ""; } -function context_toPrimitive(t, r) { if ("object" != context_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != context_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -var Context = /*#__PURE__*/function () { - function Context(parentContext) { - context_classCallCheck(this, Context); - this._currentContext = parentContext ? new Map(parentContext) : new Map(); +function getElementFromEvent(evt, doc) { + if (evt.target) { + return evt.target; } - return context_createClass(Context, [{ - key: "getValue", - value: function getValue(key) { - return this._currentContext.get(key); - } - }, { - key: "setValue", - value: function setValue(key, value) { - var context = new Context(this._currentContext); - context._currentContext.set(key, value); - return context; - } - }, { - key: "deleteValue", - value: function deleteValue(key) { - var context = new Context(self._currentContext); - context._currentContext.delete(key); - return context; - } - }]); -}(); -var ROOT_CONTEXT = new Context(); -;// ./src/tracing/contextManager.js -function contextManager_typeof(o) { "@babel/helpers - typeof"; return contextManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, contextManager_typeof(o); } -function contextManager_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function contextManager_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, contextManager_toPropertyKey(o.key), o); } } -function contextManager_createClass(e, r, t) { return r && contextManager_defineProperties(e.prototype, r), t && contextManager_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function contextManager_toPropertyKey(t) { var i = contextManager_toPrimitive(t, "string"); return "symbol" == contextManager_typeof(i) ? i : i + ""; } -function contextManager_toPrimitive(t, r) { if ("object" != contextManager_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != contextManager_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - -var ContextManager = /*#__PURE__*/function () { - function ContextManager() { - contextManager_classCallCheck(this, ContextManager); - this.currentContext = ROOT_CONTEXT; + if (doc && doc.elementFromPoint) { + return doc.elementFromPoint(evt.clientX, evt.clientY); } - return contextManager_createClass(ContextManager, [{ - key: "active", - value: function active() { - return this.currentContext; - } - }, { - key: "enterContext", - value: function enterContext(context) { - var previousContext = this.currentContext; - this.currentContext = context || ROOT_CONTEXT; - return previousContext; - } - }, { - key: "exitContext", - value: function exitContext(context) { - this.currentContext = context; - return this.currentContext; + return undefined; +} +function treeToArray(elem) { + var MAX_HEIGHT = 5; + var out = []; + var nextDescription; + for (var height = 0; elem && height < MAX_HEIGHT; height++) { + nextDescription = describeElement(elem); + if (!nextDescription || nextDescription.tagName === 'html') { + break; } - }, { - key: "with", - value: function _with(context, fn, thisArg) { - var previousContext = this.enterContext(context); - try { - for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { - args[_key - 3] = arguments[_key]; - } - return fn.call.apply(fn, [thisArg].concat(args)); - } finally { - this.exitContext(previousContext); - } + out.unshift(nextDescription); + elem = elem.parentNode; + } + return out; +} +function elementArrayToString(a) { + var MAX_LENGTH = 80; + var separator = ' > ', + separatorLength = separator.length; + var out = [], + len = 0, + nextStr, + totalLength; + for (var i = a.length - 1; i >= 0; i--) { + nextStr = descriptionToString(a[i]); + totalLength = len + out.length * separatorLength + nextStr.length; + if (i < a.length - 1 && totalLength >= MAX_LENGTH + 3) { + out.unshift('...'); + break; } - }]); -}(); -function createContextKey(key) { - // Use Symbol for OpenTelemetry compatibility. - return Symbol.for(key); + out.unshift(nextStr); + len += nextStr.length; + } + return out.join(separator); } -;// ./src/tracing/id.js -/** - * Generate a random hexadecimal ID of specified byte length - * - * @param {number} bytes - Number of bytes for the ID (default: 16) - * @returns {string} - Hexadecimal string representation - */ -function gen() { - var bytes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16; - var randomBytes = new Uint8Array(bytes); - crypto.getRandomValues(randomBytes); - var randHex = Array.from(randomBytes, function (byte) { - return byte.toString(16).padStart(2, '0'); - }).join(''); - return randHex; +function elementString(elem) { + return elementArrayToString(treeToArray(elem)); +} +function descriptionToString(desc) { + if (!desc || !desc.tagName) { + return ''; + } + var out = [desc.tagName]; + if (desc.id) { + out.push('#' + desc.id); + } + if (desc.classes) { + out.push('.' + desc.classes.join('.')); + } + var _iterator2 = domUtility_createForOfIteratorHelper(desc.attributes), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var attribute = _step2.value; + out.push('[' + attribute.key + '="' + attribute.value + '"]'); + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + return out.join(''); } /** - * Tracing id generation utils - * - * @example - * import id from './id.js'; - * - * const spanId = id.gen(8); // => "a1b2c3d4e5f6..." + * Input: a dom element + * Output: null if tagName is falsey or input is falsey, else + * { + * tagName: String, + * id: String | undefined, + * classes: [String] | undefined, + * attributes: [ + * { + * key: OneOf(type, name, title, alt), + * value: String + * } + * ] + * } */ -/* harmony default export */ var id = ({ - gen: gen -}); -;// ./src/tracing/session.js -function session_typeof(o) { "@babel/helpers - typeof"; return session_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, session_typeof(o); } -function session_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function session_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? session_ownKeys(Object(t), !0).forEach(function (r) { session_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : session_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function session_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function session_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, session_toPropertyKey(o.key), o); } } -function session_createClass(e, r, t) { return r && session_defineProperties(e.prototype, r), t && session_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function session_defineProperty(e, r, t) { return (r = session_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function session_toPropertyKey(t) { var i = session_toPrimitive(t, "string"); return "symbol" == session_typeof(i) ? i : i + ""; } -function session_toPrimitive(t, r) { if ("object" != session_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != session_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - -var SESSION_KEY = 'RollbarSession'; -var Session = /*#__PURE__*/function () { - function Session(tracing, options) { - session_classCallCheck(this, Session); - session_defineProperty(this, "_attributes", void 0); - this.options = options; - this.tracing = tracing; - this.window = tracing.window; - this.session = null; - this._attributes = {}; +function describeElement(elem) { + if (!elem || !elem.tagName) { + return null; } - return session_createClass(Session, [{ - key: "init", - value: function init() { - var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - if (this.session) { - return this; - } - this.getSession() || this.createSession(); - this.initSessionAttributes(attrs); - return this; - } - }, { - key: "getSession", - value: function getSession() { - try { - var serializedSession = this.window.sessionStorage.getItem(SESSION_KEY); - if (!serializedSession) { - return null; - } - this.session = JSON.parse(serializedSession); - } catch (_unused) { - return null; - } - return this; - } - }, { - key: "createSession", - value: function createSession() { - this.session = { - id: id.gen(), - createdAt: Date.now() - }; - return this.setSession(this.session); - } - }, { - key: "setSession", - value: function setSession(session) { - var sessionString = JSON.stringify(session); - try { - this.window.sessionStorage.setItem(SESSION_KEY, sessionString); - } catch (_unused2) { - return null; - } - return this; - } - }, { - key: "attributes", - get: function get() { - return this._attributes; - } - }, { - key: "setAttributes", - value: function setAttributes(attributes) { - this._attributes = session_objectSpread(session_objectSpread({}, this._attributes), attributes); - return this; - } - }, { - key: "setUser", - value: function setUser(user) { - this.setAttributes({ - 'user.id': user === null || user === void 0 ? void 0 : user.id, - 'user.email': user === null || user === void 0 ? void 0 : user.email, - 'user.name': (user === null || user === void 0 ? void 0 : user.name) || (user === null || user === void 0 ? void 0 : user.username) + var out = {}, + className; + out.tagName = elem.tagName.toLowerCase(); + if (elem.id) { + out.id = elem.id; + } + className = elem.className; + if (className && typeof className === 'string') { + out.classes = className.split(/\s+/); + } + var attributes = ['type', 'name', 'title', 'alt']; + out.attributes = []; + for (var _i = 0, _attributes = attributes; _i < _attributes.length; _i++) { + var attribute = _attributes[_i]; + var attr = elem.getAttribute(attribute); + if (attr) { + out.attributes.push({ + key: attribute, + value: attr }); - return this; - } - }, { - key: "initSessionAttributes", - value: function initSessionAttributes(attrs) { - var _navigator$userAgentD, _navigator$userAgentD2, _navigator$userAgentD3; - this.setAttributes(session_objectSpread({ - 'session.id': this.session.id, - 'browser.brands': (_navigator$userAgentD = navigator.userAgentData) === null || _navigator$userAgentD === void 0 ? void 0 : _navigator$userAgentD.brands, - 'browser.language': navigator.language, - 'browser.mobile': (_navigator$userAgentD2 = navigator.userAgentData) === null || _navigator$userAgentD2 === void 0 ? void 0 : _navigator$userAgentD2.mobile, - 'browser.platform': (_navigator$userAgentD3 = navigator.userAgentData) === null || _navigator$userAgentD3 === void 0 ? void 0 : _navigator$userAgentD3.platform, - 'client.address': '$remote_ip', - // updated at the API - 'rollbar.notifier.framework': 'browser-js', - 'user_agent.original': navigator.userAgent - }, attrs)); - return this; } - }]); -}(); -;// ./src/tracing/hrtime.js -/** - * @module hrtime - * - * @description Methods for handling OpenTelemetry hrtime. - */ + } + return out; +} -/** - * Convert a duration in milliseconds to an OpenTelemetry hrtime tuple. - * - * @param {number} millis - The duration in milliseconds. - * @returns {[number, number]} An array where the first element is seconds - * and the second is nanoseconds. +/* + * Detects if the given element matches any of the given class names (string or regex), + * or CSS selectors. + * @param {HTMLElement} element - The DOM element to check. + * @param {Array} classes - An array of class names (string or regex) to match against. + * @param {Array} selectors - An array of CSS selectors to match against. + * @return {boolean} - True if the element matches any of the classes or selectors, false otherwise. */ -function hrtime_fromMillis(millis) { - return [Math.trunc(millis / 1000), Math.round(millis % 1000 * 1e6)]; +function isMatchingElement(element, classes, selectors) { + try { + var _iterator3 = domUtility_createForOfIteratorHelper(classes), + _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var cls = _step3.value; + if (typeof cls === 'string') { + if (element.classList.contains(cls)) { + return true; + } + } else { + var _iterator5 = domUtility_createForOfIteratorHelper(element.classList), + _step5; + try { + for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { + var c = _step5.value; + if (cls.test(c)) { + return true; + } + } + } catch (err) { + _iterator5.e(err); + } finally { + _iterator5.f(); + } + } + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + var _iterator4 = domUtility_createForOfIteratorHelper(selectors), + _step4; + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + var sel = _step4.value; + if (element.matches(sel)) { + return true; + } + } + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); + } + } catch (_e) { + // ignore errors from invalid arguments + } + return false; } -/** - * Convert an OpenTelemetry hrtime tuple back to a duration in milliseconds. - * - * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds]. - * @returns {number} The total duration in milliseconds. - */ -function toMillis(hrtime) { - return hrtime[0] * 1e3 + Math.round(hrtime[1] / 1e6); -} +;// ./src/browser/telemetry.js +function browser_telemetry_typeof(o) { "@babel/helpers - typeof"; return browser_telemetry_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, browser_telemetry_typeof(o); } +function telemetry_toConsumableArray(r) { return telemetry_arrayWithoutHoles(r) || telemetry_iterableToArray(r) || telemetry_unsupportedIterableToArray(r) || telemetry_nonIterableSpread(); } +function telemetry_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function telemetry_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } +function telemetry_arrayWithoutHoles(r) { if (Array.isArray(r)) return telemetry_arrayLikeToArray(r); } +function telemetry_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function telemetry_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, telemetry_toPropertyKey(o.key), o); } } +function telemetry_createClass(e, r, t) { return r && telemetry_defineProperties(e.prototype, r), t && telemetry_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function telemetry_defineProperty(e, r, t) { return (r = telemetry_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function telemetry_toPropertyKey(t) { var i = telemetry_toPrimitive(t, "string"); return "symbol" == browser_telemetry_typeof(i) ? i : i + ""; } +function telemetry_toPrimitive(t, r) { if ("object" != browser_telemetry_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != browser_telemetry_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function telemetry_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = telemetry_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function telemetry_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return telemetry_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? telemetry_arrayLikeToArray(r, a) : void 0; } } +function telemetry_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +/* eslint-disable @typescript-eslint/no-this-alias */ +// TODO(matux): refactor to remove no-this-alias disable -/** - * Convert an OpenTelemetry hrtime tuple back to a duration in nanoseconds. - * - * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds]. - * @returns {number} The total duration in nanoseconds. - */ -function toNanos(hrtime) { - return hrtime[0] * 1e9 + hrtime[1]; -} -/** - * Adds two OpenTelemetry hrtime tuples. - * - * @param {[number, number]} a - The first hrtime tuple [s, ns]. - * @param {[number, number]} b - The second hrtime tuple [s, ns]. - * @returns {[number, number]} Summed hrtime tuple, normalized. - * - */ -function add(a, b) { - return [a[0] + b[0] + Math.trunc((a[1] + b[1]) / 1e9), (a[1] + b[1]) % 1e9]; -} -/** - * Get the current high-resolution time as an OpenTelemetry hrtime tuple. - * - * @param {boolean} usePerformance=false - If true, uses the Performance API (timeOrigin + now()). - * - * @returns {[number, number]} The current hrtime tuple [s, ns]. - */ -function now() { - var usePerformance = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - if (usePerformance) { - return add(hrtime_fromMillis(performance.timeOrigin), hrtime_fromMillis(performance.now())); - } - return hrtime_fromMillis(Date.now()); -} -/** - * Check if a value is a valid OpenTelemetry hrtime tuple. - * - * An hrtime tuple is an Array of exactly two numbers: - * [seconds, nanoseconds] - * - * @param {*} value – anything to test - * @returns {boolean} true if `value` is a [number, number] array of length 2 - * - * @example - * isHrTime([ 1, 500 ]); // true - * isHrTime([ 0, 1e9 ]); // true - * isHrTime([ '1', 500 ]); // false - * isHrTime({ 0: 1, 1: 500 }); // false - */ -function isHrTime(value) { - return Array.isArray(value) && value.length === 2 && typeof value[0] === 'number' && typeof value[1] === 'number'; -} -/** - * Methods for handling hrtime. OpenTelemetry uses the [seconds, nanoseconds] - * format for hrtime in the `ReadableSpan` interface. - * - * @example - * import hrtime from '@tracing/hrtime.js'; - * - * hrtime.fromMillis(1000); - * hrtime.toMillis([0, 1000]); - * hrtime.add([0, 0], [0, 1000]); - * hrtime.now(); - * hrtime.isHrTime([0, 1000]); - */ -/* harmony default export */ var hrtime = ({ - fromMillis: hrtime_fromMillis, - toMillis: toMillis, - toNanos: toNanos, - add: add, - now: now, - isHrTime: isHrTime -}); -;// ./src/tracing/exporter.js -function exporter_typeof(o) { "@babel/helpers - typeof"; return exporter_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, exporter_typeof(o); } -function exporter_slicedToArray(r, e) { return exporter_arrayWithHoles(r) || exporter_iterableToArrayLimit(r, e) || exporter_unsupportedIterableToArray(r, e) || exporter_nonIterableRest(); } -function exporter_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function exporter_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function exporter_arrayWithHoles(r) { if (Array.isArray(r)) return r; } -function exporter_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = exporter_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } -function exporter_toConsumableArray(r) { return exporter_arrayWithoutHoles(r) || exporter_iterableToArray(r) || exporter_unsupportedIterableToArray(r) || exporter_nonIterableSpread(); } -function exporter_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function exporter_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return exporter_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? exporter_arrayLikeToArray(r, a) : void 0; } } -function exporter_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } -function exporter_arrayWithoutHoles(r) { if (Array.isArray(r)) return exporter_arrayLikeToArray(r); } -function exporter_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function exporter_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function exporter_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, exporter_toPropertyKey(o.key), o); } } -function exporter_createClass(e, r, t) { return r && exporter_defineProperties(e.prototype, r), t && exporter_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function exporter_toPropertyKey(t) { var i = exporter_toPrimitive(t, "string"); return "symbol" == exporter_typeof(i) ? i : i + ""; } -function exporter_toPrimitive(t, r) { if ("object" != exporter_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != exporter_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -/** - * SpanExporter is responsible for exporting ReadableSpan objects - * and transforming them into the OTLP-compatible format. - */ -var SpanExporter = /*#__PURE__*/function () { - function SpanExporter(api) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - exporter_classCallCheck(this, SpanExporter); - this.api = api; + +var telemetry_defaults = { + network: true, + networkResponseHeaders: false, + networkResponseBody: false, + networkRequestHeaders: false, + networkRequestBody: false, + networkErrorOnHttp5xx: false, + networkErrorOnHttp4xx: false, + networkErrorOnHttp0: false, + log: true, + dom: true, + navigation: true, + connectivity: true, + contentSecurityPolicy: true, + errorOnContentSecurityPolicy: false +}; +function restore(replacements, type) { + var b; + while (replacements[type].length) { + b = replacements[type].shift(); + b[0][b[1]] = b[2]; + } +} +function nameFromDescription(description) { + if (!description || !description.attributes) { + return null; + } + var attrs = description.attributes; + var _iterator = telemetry_createForOfIteratorHelper(attrs), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var a = _step.value; + if (a.key === 'name') { + return a.value; + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return null; +} +function defaultValueScrubber(scrubFields) { + var patterns = []; + var _iterator2 = telemetry_createForOfIteratorHelper(scrubFields), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var field = _step2.value; + patterns.push(new RegExp(field, 'i')); + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + return function (description) { + var name = nameFromDescription(description); + if (!name) { + return false; + } + for (var _i = 0, _patterns = patterns; _i < _patterns.length; _i++) { + var p = _patterns[_i]; + if (p.test(name)) { + return true; + } + } + return false; + }; +} +var Instrumenter = /*#__PURE__*/function () { + function Instrumenter(options, telemeter, rollbar, _window, _document) { + telemetry_classCallCheck(this, Instrumenter); + telemetry_defineProperty(this, "deinstrumentConnectivity", function () { + this.removeListeners('connectivity'); + }); this.options = options; + var autoInstrument = options.autoInstrument; + if (options.enabled === false || autoInstrument === false) { + this.autoInstrument = {}; + } else { + if (!isType(autoInstrument, 'object')) { + autoInstrument = telemetry_defaults; + } + this.autoInstrument = merge(telemetry_defaults, autoInstrument); + } + this.configureScrubbing(); + this.telemeter = telemeter; + this.rollbar = rollbar; + this.diagnostic = rollbar.client.notifier.diagnostic; + this._window = _window || {}; + this._document = _document || {}; + this.replacements = { + network: [], + log: [], + navigation: [], + connectivity: [] + }; + this.eventRemovers = { + dom: [], + connectivity: [], + contentsecuritypolicy: [] + }; + this._location = this._window.location; + this._lastHref = this._location && this._location.href; } - - /** - * Export spans to the span export queue - * - * @param {Array} spans - Array of ReadableSpan objects to export - * @param {Function} _resultCallback - Optional callback (not used) - */ - return exporter_createClass(SpanExporter, [{ - key: "export", - value: function _export(spans, _resultCallback) { - spanExportQueue.push.apply(spanExportQueue, exporter_toConsumableArray(spans)); + return telemetry_createClass(Instrumenter, [{ + key: "configureScrubbing", + value: function configureScrubbing() { + var _options$scrubTelemet, _options$replay, _options$replay2, _options$replay3, _options$replay4, _options$replay5, _options$replay6, _options$replay7, _options$replay8, _options$replay9; + var options = this.options; + this.scrubTelemetryInputs = Boolean((_options$scrubTelemet = options.scrubTelemetryInputs) !== null && _options$scrubTelemet !== void 0 ? _options$scrubTelemet : (_options$replay = options.replay) === null || _options$replay === void 0 ? void 0 : _options$replay.maskAllInputs); + this.telemetryScrubber = options.telemetryScrubber; + this.defaultValueScrubber = defaultValueScrubber(options.scrubFields); + this.maskInputFn = (_options$replay2 = options.replay) === null || _options$replay2 === void 0 ? void 0 : _options$replay2.maskInputFn; + this.maskInputOptions = ((_options$replay3 = options.replay) === null || _options$replay3 === void 0 ? void 0 : _options$replay3.maskInputOptions) || {}; + this.scrubClasses = [(_options$replay4 = options.replay) === null || _options$replay4 === void 0 ? void 0 : _options$replay4.blockClass, (_options$replay5 = options.replay) === null || _options$replay5 === void 0 ? void 0 : _options$replay5.ignoreClass, (_options$replay6 = options.replay) === null || _options$replay6 === void 0 ? void 0 : _options$replay6.maskTextClass].filter(Boolean); + this.scrubSelectors = [(_options$replay7 = options.replay) === null || _options$replay7 === void 0 ? void 0 : _options$replay7.blockSelector, (_options$replay8 = options.replay) === null || _options$replay8 === void 0 ? void 0 : _options$replay8.ignoreSelector, (_options$replay9 = options.replay) === null || _options$replay9 === void 0 ? void 0 : _options$replay9.maskTextSelector].filter(Boolean); + } + }, { + key: "configure", + value: function configure(options) { + this.options = merge(this.options, options); + var autoInstrument = options.autoInstrument; + var oldSettings = merge(this.autoInstrument); + if (options.enabled === false || autoInstrument === false) { + this.autoInstrument = {}; + } else { + if (!isType(autoInstrument, 'object')) { + autoInstrument = telemetry_defaults; + } + this.autoInstrument = merge(telemetry_defaults, autoInstrument); + } + this.configureScrubbing(); + this.instrument(oldSettings); } - /** - * Transforms an array of ReadableSpan objects into the OTLP format payload - * compatible with the Rollbar API. This follows the OpenTelemetry protocol - * specification for traces. - * - * @returns {Object} OTLP format payload for API transmission - */ + // eslint-disable-next-line complexity }, { - key: "toPayload", - value: function toPayload() { - var _this = this; - var spans = spanExportQueue.slice(); - spanExportQueue.length = 0; - if (!spans || !spans.length) { - return { - resourceSpans: [] - }; + key: "instrument", + value: function instrument(oldSettings) { + if (this.autoInstrument.network && !(oldSettings && oldSettings.network)) { + this.instrumentNetwork(); + } else if (!this.autoInstrument.network && oldSettings && oldSettings.network) { + this.deinstrumentNetwork(); } - var resource = spans[0] && spans[0].resource || {}; - var scopeMap = new Map(); - var _iterator = exporter_createForOfIteratorHelper(spans), - _step; - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var span = _step.value; - var scopeKey = span.instrumentationScope ? "".concat(span.instrumentationScope.name, ":").concat(span.instrumentationScope.version) : 'default:1.0.0'; - if (!scopeMap.has(scopeKey)) { - scopeMap.set(scopeKey, { - scope: span.instrumentationScope || { - name: 'default', - version: '1.0.0', - attributes: [] - }, - spans: [] - }); - } - scopeMap.get(scopeKey).spans.push(this._transformSpan(span)); + if (this.autoInstrument.log && !(oldSettings && oldSettings.log)) { + this.instrumentConsole(); + } else if (!this.autoInstrument.log && oldSettings && oldSettings.log) { + this.deinstrumentConsole(); + } + if (this.autoInstrument.dom && !(oldSettings && oldSettings.dom)) { + this.instrumentDom(); + } else if (!this.autoInstrument.dom && oldSettings && oldSettings.dom) { + this.deinstrumentDom(); + } + if (this.autoInstrument.navigation && !(oldSettings && oldSettings.navigation)) { + this.instrumentNavigation(); + } else if (!this.autoInstrument.navigation && oldSettings && oldSettings.navigation) { + this.deinstrumentNavigation(); + } + if (this.autoInstrument.connectivity && !(oldSettings && oldSettings.connectivity)) { + this.instrumentConnectivity(); + } else if (!this.autoInstrument.connectivity && oldSettings && oldSettings.connectivity) { + this.deinstrumentConnectivity(); + } + if (this.autoInstrument.contentSecurityPolicy && !(oldSettings && oldSettings.contentSecurityPolicy)) { + this.instrumentContentSecurityPolicy(); + } else if (!this.autoInstrument.contentSecurityPolicy && oldSettings && oldSettings.contentSecurityPolicy) { + this.deinstrumentContentSecurityPolicy(); + } + } + }, { + key: "deinstrumentNetwork", + value: function deinstrumentNetwork() { + restore(this.replacements, 'network'); + } + }, { + key: "instrumentNetwork", + value: function instrumentNetwork() { + var self = this; + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + utility_replace(xhr, prop, function (orig) { + return self.rollbar.wrap(orig); + }); } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); } - return { - resourceSpans: [{ - resource: this._transformResource(resource), - scopeSpans: Array.from(scopeMap.values()).map(function (scopeData) { - return { - scope: _this._transformInstrumentationScope(scopeData.scope), - spans: scopeData.spans + if ('XMLHttpRequest' in this._window) { + var xhrp = this._window.XMLHttpRequest.prototype; + utility_replace(xhrp, 'open', function (orig) { + return function (method, url) { + var isUrlObject = _isUrlObject(url); + if (isType(url, 'string') || isUrlObject) { + url = isUrlObject ? url.toString() : url; + if (this.__rollbar_xhr) { + this.__rollbar_xhr.method = method; + this.__rollbar_xhr.url = url; + this.__rollbar_xhr.status_code = null; + this.__rollbar_xhr.start_time_ms = now(); + this.__rollbar_xhr.end_time_ms = null; + } else { + this.__rollbar_xhr = { + method: method, + url: url, + status_code: null, + start_time_ms: now(), + end_time_ms: null + }; + } + } + return orig.apply(this, arguments); + }; + }, this.replacements, 'network'); + utility_replace(xhrp, 'setRequestHeader', function (orig) { + return function (header, value) { + // If xhr.open is async, __rollbar_xhr may not be initialized yet. + if (!this.__rollbar_xhr) { + this.__rollbar_xhr = {}; + } + if (isType(header, 'string') && isType(value, 'string')) { + if (self.autoInstrument.networkRequestHeaders) { + if (!this.__rollbar_xhr.request_headers) { + this.__rollbar_xhr.request_headers = {}; + } + this.__rollbar_xhr.request_headers[header] = value; + } + // We want the content type even if request header telemetry is off. + if (header.toLowerCase() === 'content-type') { + this.__rollbar_xhr.request_content_type = value; + } + } + return orig.apply(this, arguments); + }; + }, this.replacements, 'network'); + utility_replace(xhrp, 'send', function (orig) { + return function (data) { + var xhr = this; + function onreadystatechangeHandler() { + if (xhr.__rollbar_xhr) { + if (xhr.__rollbar_xhr.status_code === null) { + xhr.__rollbar_xhr.status_code = 0; + if (self.autoInstrument.networkRequestBody) { + xhr.__rollbar_xhr.request = data; + } + xhr.__rollbar_event = self.captureNetwork(xhr.__rollbar_xhr, 'xhr', undefined); + } + if (xhr.readyState < 2) { + xhr.__rollbar_xhr.start_time_ms = now(); + } + if (xhr.readyState > 3) { + var end_time_ms = now(); + xhr.__rollbar_xhr.end_time_ms = end_time_ms; + var _headers = null; + xhr.__rollbar_xhr.response_content_type = xhr.getResponseHeader('Content-Type'); + if (self.autoInstrument.networkResponseHeaders) { + var headersConfig = self.autoInstrument.networkResponseHeaders; + _headers = {}; + try { + var header; + if (headersConfig === true) { + var allHeaders = xhr.getAllResponseHeaders(); + if (allHeaders) { + var arr = allHeaders.trim().split(/[\r\n]+/); + var parts, value; + var _iterator3 = telemetry_createForOfIteratorHelper(arr), + _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var h = _step3.value; + parts = h.split(': '); + header = parts.shift(); + value = parts.join(': '); + _headers[header] = value; + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + } + } else { + var _iterator4 = telemetry_createForOfIteratorHelper(headersConfig), + _step4; + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + var _h = _step4.value; + _headers[_h] = xhr.getResponseHeader(_h); + } + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); + } + } + } catch (_e) { + /* we ignore the errors here that could come from different + * browser issues with the xhr methods */ + } + } + var body = null; + if (self.autoInstrument.networkResponseBody) { + try { + body = xhr.responseText; + } catch (_e) { + /* ignore errors from reading responseText */ + } + } + var response = null; + if (body || _headers) { + response = {}; + if (body) { + if (self.isJsonContentType(xhr.__rollbar_xhr.response_content_type)) { + response.body = self.scrubJson(body); + } else { + response.body = body; + } + } + if (_headers) { + response.headers = _headers; + } + } + if (response) { + xhr.__rollbar_xhr.response = response; + } + try { + var code = xhr.status; + code = code === 1223 ? 204 : code; + xhr.__rollbar_xhr.status_code = code; + self.addOtelNetworkResponse(xhr.__rollbar_event, end_time_ms, code); + xhr.__rollbar_event.level = self.telemeter.levelFromStatus(code); + self.errorOnHttpStatus(xhr.__rollbar_xhr); + } catch (_e) { + /* ignore possible exception from xhr.status */ + } + } + } + } + wrapProp('onload', xhr); + wrapProp('onerror', xhr); + wrapProp('onprogress', xhr); + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + utility_replace(xhr, 'onreadystatechange', function (orig) { + return self.rollbar.wrap(orig, undefined, onreadystatechangeHandler); + }); + } else { + xhr.onreadystatechange = onreadystatechangeHandler; + } + if (xhr.__rollbar_xhr && self.trackHttpErrors()) { + xhr.__rollbar_xhr.stack = new Error().stack; + } + return orig.apply(this, arguments); + }; + }, this.replacements, 'network'); + } + if ('fetch' in this._window) { + utility_replace(this._window, 'fetch', function (orig) { + return function (_fn, _t) { + var args = Array.prototype.slice.call(arguments); + var input = args[0]; + var method = 'GET'; + var url; + var isUrlObject = _isUrlObject(input); + if (isType(input, 'string') || isUrlObject) { + url = isUrlObject ? input.toString() : input; + } else if (input) { + url = input.url; + if (input.method) { + method = input.method; + } + } + if (args[1] && args[1].method) { + method = args[1].method; + } + var metadata = { + method: method, + url: url, + status_code: null, + start_time_ms: now(), + end_time_ms: null }; - }) - }] - }; - } - - /** - * Sends the given payload to the Rollbar API. - * - * @param {String} payload - Serialized OTLP format payload - * @param {Object} headers - Optional request headers - * @returns {Promise} Promise that resolves when the request completes - */ - }, { - key: "post", - value: function post(payload) { - var headers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - return this.api.postSpans(payload, headers); - } - - /** - * Transforms a ReadableSpan into the OTLP Span format - * - * @private - * @param {Object} span - ReadableSpan object to transform - * @returns {Object} OTLP Span format - */ - }, { - key: "_transformSpan", - value: function _transformSpan(span) { - var _this2 = this; - var transformAttributes = function transformAttributes(attributes) { - return Object.entries(attributes || {}).map(function (_ref) { - var _ref2 = exporter_slicedToArray(_ref, 2), - key = _ref2[0], - value = _ref2[1]; - return { - key: key, - value: _this2._transformAnyValue(value) - }; - }); - }; - var transformEvents = function transformEvents(events) { - return (events || []).map(function (event) { - return { - timeUnixNano: hrtime.toNanos(event.time), - name: event.name, - attributes: transformAttributes(event.attributes) - }; - }); - }; - return { - traceId: span.spanContext.traceId, - spanId: span.spanContext.spanId, - parentSpanId: span.parentSpanId || '', - name: span.name, - kind: span.kind || 1, - // INTERNAL by default - startTimeUnixNano: hrtime.toNanos(span.startTime), - endTimeUnixNano: hrtime.toNanos(span.endTime), - attributes: transformAttributes(span.attributes), - events: transformEvents(span.events) - }; - } - - /** - * Transforms a resource object into OTLP Resource format - * - * @private - * @param {Object} resource - Resource information - * @returns {Object} OTLP Resource format - */ - }, { - key: "_transformResource", - value: function _transformResource(resource) { - var _this3 = this; - var attributes = resource.attributes || {}; - var keyValues = Object.entries(attributes).map(function (_ref3) { - var _ref4 = exporter_slicedToArray(_ref3, 2), - key = _ref4[0], - value = _ref4[1]; - return { - key: key, - value: _this3._transformAnyValue(value) - }; - }); - return { - attributes: keyValues - }; - } - - /** - * Transforms an instrumentation scope into OTLP InstrumentationScope format - * - * @private - * @param {Object} scope - Instrumentation scope information - * @returns {Object} OTLP InstrumentationScope format - */ - }, { - key: "_transformInstrumentationScope", - value: function _transformInstrumentationScope(scope) { - var _this4 = this; - return { - name: scope.name || '', - version: scope.version || '', - attributes: (scope.attributes || []).map(function (attr) { - return { - key: attr.key, - value: _this4._transformAnyValue(attr.value) - }; - }) - }; - } + if (args[1] && args[1].headers) { + // Argument may be a Headers object, or plain object. Ensure here that + // we are working with a Headers object with case-insensitive keys. + var reqHeaders = utility_headers(args[1].headers); + metadata.request_content_type = reqHeaders.get('Content-Type'); + if (self.autoInstrument.networkRequestHeaders) { + metadata.request_headers = self.fetchHeaders(reqHeaders, self.autoInstrument.networkRequestHeaders); + } + } + if (self.autoInstrument.networkRequestBody) { + if (args[1] && args[1].body) { + metadata.request = args[1].body; + } else if (args[0] && !isType(args[0], 'string') && args[0].body) { + metadata.request = args[0].body; + } + } + var telemetryEvent = self.captureNetwork(metadata, 'fetch', undefined); + if (self.trackHttpErrors()) { + metadata.stack = new Error().stack; + } - /** - * Transforms a JavaScript value into an OTLP AnyValue - * - * @private - * @param {any} value - Value to transform - * @returns {Object} OTLP AnyValue format - */ - }, { - key: "_transformAnyValue", - value: function _transformAnyValue(value) { - var _this5 = this; - if (value === null || value === undefined) { - return { - stringValue: '' - }; - } - var type = exporter_typeof(value); - if (type === 'string') { - return { - stringValue: value - }; - } else if (type === 'number') { - if (Number.isInteger(value)) { - return { - intValue: value.toString() - }; - } else { - return { - doubleValue: value - }; - } - } else if (type === 'boolean') { - return { - boolValue: value - }; - } else if (Array.isArray(value)) { - return { - arrayValue: { - values: value.map(function (v) { - return _this5._transformAnyValue(v); - }) - } - }; - } else if (type === 'object') { - return { - kvlistValue: { - values: Object.entries(value).map(function (_ref5) { - var _ref6 = exporter_slicedToArray(_ref5, 2), - k = _ref6[0], - v = _ref6[1]; - return { - key: k, - value: _this5._transformAnyValue(v) - }; - }) - } - }; + // Start our handler before returning the promise. This allows resp.clone() + // to execute before other handlers touch the response. + return orig.apply(this, args).then(function (resp) { + var end_time_ms = now(); + metadata.end_time_ms = end_time_ms; + metadata.status_code = resp.status; + self.addOtelNetworkResponse(telemetryEvent, end_time_ms, resp.status); + metadata.response_content_type = resp.headers.get('Content-Type'); + var headers = null; + if (self.autoInstrument.networkResponseHeaders) { + headers = self.fetchHeaders(resp.headers, self.autoInstrument.networkResponseHeaders); + } + var body = null; + if (self.autoInstrument.networkResponseBody) { + if (typeof resp.text === 'function') { + // Response.text() is not implemented on some platforms + // The response must be cloned to prevent reading (and locking) the original stream. + // This must be done before other handlers touch the response. + body = resp.clone().text(); //returns a Promise + } + } + if (headers || body) { + metadata.response = {}; + if (body) { + // Test to ensure body is a Promise, which it should always be. + if (typeof body.then === 'function') { + body.then(function (text) { + if (text && self.isJsonContentType(metadata.response_content_type)) { + metadata.response.body = self.scrubJson(text); + } else { + metadata.response.body = text; + } + }); + } else { + metadata.response.body = body; + } + } + if (headers) { + metadata.response.headers = headers; + } + } + self.errorOnHttpStatus(metadata); + return resp; + }); + }; + }, this.replacements, 'network'); } - return { - stringValue: String(value) - }; } - }]); -}(); -var spanExportQueue = []; -;// ./src/tracing/spanProcessor.js -function spanProcessor_typeof(o) { "@babel/helpers - typeof"; return spanProcessor_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, spanProcessor_typeof(o); } -function spanProcessor_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = spanProcessor_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } -function spanProcessor_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return spanProcessor_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? spanProcessor_arrayLikeToArray(r, a) : void 0; } } -function spanProcessor_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function spanProcessor_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function spanProcessor_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, spanProcessor_toPropertyKey(o.key), o); } } -function spanProcessor_createClass(e, r, t) { return r && spanProcessor_defineProperties(e.prototype, r), t && spanProcessor_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function spanProcessor_toPropertyKey(t) { var i = spanProcessor_toPrimitive(t, "string"); return "symbol" == spanProcessor_typeof(i) ? i : i + ""; } -function spanProcessor_toPrimitive(t, r) { if ("object" != spanProcessor_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != spanProcessor_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - -var SpanProcessor = /*#__PURE__*/function () { - function SpanProcessor(exporter) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - spanProcessor_classCallCheck(this, SpanProcessor); - this.exporter = exporter; - this.options = options; - this.pendingSpans = new Map(); - this.transforms = [this.userTransform.bind(this)]; - } - return spanProcessor_createClass(SpanProcessor, [{ - key: "addTransform", - value: function addTransform(transformFn) { - this.transforms.unshift(transformFn); + }, { + key: "captureNetwork", + value: function captureNetwork(metadata, subtype, rollbarUUID) { + if (metadata.request && this.isJsonContentType(metadata.request_content_type)) { + metadata.request = this.scrubJson(metadata.request); + } + return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID); } }, { - key: "userTransform", - value: function userTransform(span) { - if (this.options.transformSpan) { - this.options.transformSpan({ - span: span - }); + key: "isJsonContentType", + value: function isJsonContentType(contentType) { + return contentType && isType(contentType, 'string') && contentType.toLowerCase().includes('json') ? true : false; + } + }, { + key: "addOtelNetworkResponse", + value: function addOtelNetworkResponse(event, endTimeMs, statusCode) { + if (event.otelAttributes) { + event.otelAttributes['response.timeUnixNano'] = (endTimeMs * 1e6).toString(); + event.otelAttributes.statusCode = statusCode; } } }, { - key: "applyTransforms", - value: function applyTransforms(span) { - var _iterator = spanProcessor_createForOfIteratorHelper(this.transforms), - _step; + key: "scrubJson", + value: function scrubJson(json) { + return JSON.stringify(src_scrub(JSON.parse(json), this.options.scrubFields)); + } + }, { + key: "fetchHeaders", + value: function fetchHeaders(inHeaders, headersConfig) { + var outHeaders = {}; try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var transform = _step.value; + if (headersConfig === true) { + if (typeof inHeaders.entries === 'function') { + // Headers.entries() is not implemented in IE + var allHeaders = inHeaders.entries(); + var currentHeader = allHeaders.next(); + while (!currentHeader.done) { + outHeaders[currentHeader.value[0]] = currentHeader.value[1]; + currentHeader = allHeaders.next(); + } + } + } else { + var _iterator5 = telemetry_createForOfIteratorHelper(headersConfig), + _step5; try { - transform(span); - } catch (e) { - src_logger.error('Error running span transform callback', e); + for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { + var h = _step5.value; + outHeaders[h] = inHeaders.get(h); + } + } catch (err) { + _iterator5.e(err); + } finally { + _iterator5.f(); } } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); + } catch (_e) { + /* ignore probable IE errors */ } + return outHeaders; } }, { - key: "onStart", - value: function onStart(span, _parentContext) { - this.pendingSpans.set(span.span.spanContext.spanId, span); + key: "trackHttpErrors", + value: function trackHttpErrors() { + return this.autoInstrument.networkErrorOnHttp5xx || this.autoInstrument.networkErrorOnHttp4xx || this.autoInstrument.networkErrorOnHttp0; } }, { - key: "onEnd", - value: function onEnd(span) { - this.applyTransforms(span.span); - this.exporter.export([span.export()]); - this.pendingSpans.delete(span.span.spanContext.spanId); + key: "errorOnHttpStatus", + value: function errorOnHttpStatus(metadata) { + var status = metadata.status_code; + if (status >= 500 && this.autoInstrument.networkErrorOnHttp5xx || status >= 400 && this.autoInstrument.networkErrorOnHttp4xx || status === 0 && this.autoInstrument.networkErrorOnHttp0) { + var error = new Error('HTTP request failed with Status ' + status); + error.stack = metadata.stack; + this.rollbar.error(error, { + skipFrames: 1 + }); + } } - }]); -}(); -;// ./src/tracing/span.js -function span_typeof(o) { "@babel/helpers - typeof"; return span_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, span_typeof(o); } -function span_slicedToArray(r, e) { return span_arrayWithHoles(r) || span_iterableToArrayLimit(r, e) || span_unsupportedIterableToArray(r, e) || span_nonIterableRest(); } -function span_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function span_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return span_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? span_arrayLikeToArray(r, a) : void 0; } } -function span_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function span_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function span_arrayWithHoles(r) { if (Array.isArray(r)) return r; } -function span_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function span_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, span_toPropertyKey(o.key), o); } } -function span_createClass(e, r, t) { return r && span_defineProperties(e.prototype, r), t && span_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function span_toPropertyKey(t) { var i = span_toPrimitive(t, "string"); return "symbol" == span_typeof(i) ? i : i + ""; } -function span_toPrimitive(t, r) { if ("object" != span_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != span_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - -var Span = /*#__PURE__*/function () { - function Span(options) { - span_classCallCheck(this, Span); - this.usePerformance = options.usePerformance; - this.initReadableSpan(options); - this.spanProcessor = options.spanProcessor; - this.spanProcessor.onStart(this, options.context); - if (options.attributes) { - this.setAttributes(options.attributes); + }, { + key: "deinstrumentConsole", + value: function deinstrumentConsole() { + var b; + while (this.replacements['log'].length) { + b = this.replacements['log'].shift(); + this._window.console[b[0]] = b[1]; + } } - return this; - } - return span_createClass(Span, [{ - key: "initReadableSpan", - value: function initReadableSpan(options) { - var _options$session; - this.span = { - name: options.name, - kind: options.kind, - spanContext: options.spanContext, - parentSpanId: options.parentSpanId, - startTime: options.startTime || hrtime.now(options.usePerformance), - endTime: [0, 0], - status: { - code: 0, - message: '' - }, - attributes: { - 'session.id': (_options$session = options.session) === null || _options$session === void 0 ? void 0 : _options$session.id - }, - links: [], - events: [], - duration: 0, - ended: false, - resource: options.resource, - instrumentationScope: options.scope, - droppedAttributesCount: 0, - droppedEventsCount: 0, - droppedLinksCount: 0 - }; + }, { + key: "instrumentConsole", + value: function instrumentConsole() { + var _this$_window; + if (!((_this$_window = this._window) !== null && _this$_window !== void 0 && (_this$_window = _this$_window.console) !== null && _this$_window !== void 0 && _this$_window.log)) { + return; + } + var self = this; + var c = this._window.console; + function wrapConsole(method) { + // eslint-disable-next-line strict + 'use strict'; + + // See https://github.com/rollbar/rollbar.js/pull/778 + var orig = c[method]; + var origConsole = c; + var level = method === 'warn' ? 'warning' : method; + c[method] = function () { + var args = Array.prototype.slice.call(arguments); + var message = formatArgsAsString(args); + self.telemeter.captureLog(message, level, null, now()); + if (orig) { + Function.prototype.apply.call(orig, origConsole, args); + } + }; + self.replacements['log'].push([method, orig]); + } + var methods = ['debug', 'info', 'warn', 'error', 'log']; + try { + for (var _i2 = 0, _methods = methods; _i2 < _methods.length; _i2++) { + var m = _methods[_i2]; + wrapConsole(m); + } + } catch (e) { + this.diagnostic.instrumentConsole = { + error: e.message + }; + } } }, { - key: "spanContext", - value: function spanContext() { - return this.span.spanContext; + key: "deinstrumentDom", + value: function deinstrumentDom() { + this.removeListeners('dom'); } }, { - key: "spanId", - get: function get() { - return this.span.spanContext.spanId; + key: "instrumentDom", + value: function instrumentDom() { + var _this = this; + this.addListener('dom', this._window, ['click', 'dblclick', 'contextmenu'], function (e) { + return _this.handleEvent('click', e); + }); + this.addListener('dom', this._window, ['dragstart', 'dragend', 'dragenter', 'dragleave', 'drop'], function (e) { + return _this.handleEvent('dragdrop', e); + }); + this.addListener('dom', this._window, ['blur', 'focus'], function (e) { + return _this.handleEvent('focus', e); + }); + this.addListener('dom', this._window, ['submit', 'invalid'], function (e) { + return _this.handleEvent('form', e); + }); + this.addListener('dom', this._window, ['input', 'change'], function (e) { + return _this.handleEvent('input', e); + }); + this.addListener('dom', this._window, ['resize'], function (e) { + return _this.handleEvent('resize', e); + }); + this.addListener('dom', this._document, ['DOMContentLoaded'], function (e) { + return _this.handleEvent('contentLoaded', e); + }); } }, { - key: "traceId", - get: function get() { - return this.span.spanContext.traceId; + key: "handleEvent", + value: function handleEvent(name, evt) { + try { + return { + click: this.handleClick, + dragdrop: this.handleDrag, + focus: this.handleFocus, + form: this.handleForm, + input: this.handleInput, + resize: this.handleResize, + contentLoaded: this.handleContentLoaded + }[name].call(this, evt); + } catch (exc) { + src_logger.log("".concat(name, " handler error"), evt, exc, exc.stack); + } } }, { - key: "setAttribute", - value: function setAttribute(key, value) { - if (value == null || this.span.ended) return this; - if (key.length === 0) return this; - this.span.attributes[key] = value; - return this; + key: "handleContentLoaded", + value: function handleContentLoaded(_evt) { + this.rollbar.triggerReplay({ + type: 'navigation', + path: new URL(this._location.href).pathname + }); } }, { - key: "setAttributes", - value: function setAttributes(attributes) { - for (var _i = 0, _Object$entries = Object.entries(attributes); _i < _Object$entries.length; _i++) { - var _Object$entries$_i = span_slicedToArray(_Object$entries[_i], 2), - k = _Object$entries$_i[0], - v = _Object$entries$_i[1]; - this.setAttribute(k, v); - } - return this; + key: "handleClick", + value: function handleClick(evt) { + var _evt$target; + var tagName = (_evt$target = evt.target) === null || _evt$target === void 0 ? void 0 : _evt$target.tagName.toLowerCase(); + if (['input', 'select', 'textarea'].includes(tagName)) return; + this.telemeter.captureClick({ + type: evt.type, + isSynthetic: !evt.isTrusted, + element: elementString(evt.target), + timestamp: now() + }); } }, { - key: "addEvent", - value: function addEvent(name) { - var attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var time = arguments.length > 2 ? arguments[2] : undefined; - if (this.span.ended) return this; - this.span.events.push({ - name: name, - attributes: attributes, - time: time || hrtime.now(), - droppedAttributesCount: 0 + key: "handleFocus", + value: function handleFocus(evt) { + var _evt$target2; + var type = evt.type; + var element = (_evt$target2 = evt.target) !== null && _evt$target2 !== void 0 && _evt$target2.window ? 'window' : elementString(evt.target); + this.telemeter.captureFocus({ + type: type, + isSynthetic: !evt.isTrusted, + element: element, + timestamp: now() }); - return this; } }, { - key: "isRecording", - value: function isRecording() { - return this.span.ended === false; + key: "handleForm", + value: function handleForm(_evt) { + // TODO: implement form event handling + //const type = evt.type; + //const elementString = evt.target?.window + // ? 'window' + // : domUtil.elementString(evt.target); } }, { - key: "end", - value: function end(attributes, time) { - if (attributes) this.setAttributes(attributes); - this.span.endTime = time || hrtime.now(this.usePerformance); - this.span.ended = true; - this.spanProcessor.onEnd(this); + key: "handleResize", + value: function handleResize(evt) { + var textZoomRatio = window.screen.width / window.innerWidth; + this.telemeter.captureResize({ + type: evt.type, + isSynthetic: !evt.isTrusted, + width: window.innerWidth, + height: window.innerHeight, + textZoomRatio: textZoomRatio, + timestamp: now() + }); } }, { - key: "export", - value: function _export() { - return this.span; - } - }]); -}(); -;// ./src/tracing/tracer.js -function tracer_typeof(o) { "@babel/helpers - typeof"; return tracer_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, tracer_typeof(o); } -function tracer_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function tracer_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? tracer_ownKeys(Object(t), !0).forEach(function (r) { tracer_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : tracer_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function tracer_defineProperty(e, r, t) { return (r = tracer_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function tracer_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function tracer_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, tracer_toPropertyKey(o.key), o); } } -function tracer_createClass(e, r, t) { return r && tracer_defineProperties(e.prototype, r), t && tracer_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function tracer_toPropertyKey(t) { var i = tracer_toPrimitive(t, "string"); return "symbol" == tracer_typeof(i) ? i : i + ""; } -function tracer_toPrimitive(t, r) { if ("object" != tracer_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != tracer_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - - -var Tracer = /*#__PURE__*/function () { - function Tracer(tracing, spanProcessor) { - tracer_classCallCheck(this, Tracer); - this.spanProcessor = spanProcessor; - this.tracing = tracing; - } - return tracer_createClass(Tracer, [{ - key: "startSpan", - value: function startSpan(name) { - var _this$tracing$resourc, _options$resource, _this$tracing$session; - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.tracing.contextManager.active(); - var parentSpan = this.tracing.getSpan(context); - var parentSpanContext = parentSpan === null || parentSpan === void 0 ? void 0 : parentSpan.spanContext(); - var spanId = id.gen(8); - var traceId; - var traceFlags = 0; - var traceState = null; - var parentSpanId; - if (parentSpanContext) { - traceId = parentSpanContext.traceId; - traceState = parentSpanContext.traceState; - parentSpanId = parentSpanContext.spanId; - } else { - traceId = id.gen(16); + key: "handleDrag", + value: function handleDrag(evt) { + var type = evt.type; + var kinds, mediaTypes, dropEffect, effectAllowed; + if (type === 'drop') { + kinds = []; + mediaTypes = []; + var objs = [].concat(telemetry_toConsumableArray(evt.dataTransfer.files), telemetry_toConsumableArray(evt.dataTransfer.items)); + var _iterator6 = telemetry_createForOfIteratorHelper(objs), + _step6; + try { + for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { + var o = _step6.value; + if (o.kind && o.type) { + kinds.push(o.kind); + mediaTypes.push(o.type); + } + } + } catch (err) { + _iterator6.e(err); + } finally { + _iterator6.f(); + } } - var kind = 0; - var spanContext = { - traceId: traceId, - spanId: spanId, - traceFlags: traceFlags, - traceState: traceState - }; - var resource = { - attributes: tracer_objectSpread(tracer_objectSpread({}, ((_this$tracing$resourc = this.tracing.resource) === null || _this$tracing$resourc === void 0 ? void 0 : _this$tracing$resourc.attributes) || {}), ((_options$resource = options.resource) === null || _options$resource === void 0 ? void 0 : _options$resource.attributes) || {}) - }; - var span = new Span({ - resource: resource, - scope: this.tracing.scope, - session: (_this$tracing$session = this.tracing.session) === null || _this$tracing$session === void 0 ? void 0 : _this$tracing$session.session, - context: context, - spanContext: spanContext, - name: name, - kind: kind, - parentSpanId: parentSpanId, - spanProcessor: this.spanProcessor, - startTime: options.startTime, - usePerformance: options.usePerformance + if (['drop', 'dragstart'].includes(type)) { + var _evt$dataTransfer, _evt$dataTransfer2; + dropEffect = (_evt$dataTransfer = evt.dataTransfer) === null || _evt$dataTransfer === void 0 ? void 0 : _evt$dataTransfer.dropEffect; + effectAllowed = (_evt$dataTransfer2 = evt.dataTransfer) === null || _evt$dataTransfer2 === void 0 ? void 0 : _evt$dataTransfer2.effectAllowed; + } + this.telemeter.captureDragDrop({ + type: type, + isSynthetic: !evt.isTrusted, + element: elementString(evt.target), + dropEffect: dropEffect, + effectAllowed: effectAllowed, + kinds: JSON.stringify(kinds), + mediaTypes: JSON.stringify(mediaTypes), + timestamp: now() }); - return span; } - }]); -}(); -;// ./src/tracing/tracing.js -function tracing_typeof(o) { "@babel/helpers - typeof"; return tracing_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, tracing_typeof(o); } -function tracing_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function tracing_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? tracing_ownKeys(Object(t), !0).forEach(function (r) { tracing_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : tracing_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function tracing_defineProperty(e, r, t) { return (r = tracing_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function tracing_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function tracing_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, tracing_toPropertyKey(o.key), o); } } -function tracing_createClass(e, r, t) { return r && tracing_defineProperties(e.prototype, r), t && tracing_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function tracing_toPropertyKey(t) { var i = tracing_toPrimitive(t, "string"); return "symbol" == tracing_typeof(i) ? i : i + ""; } -function tracing_toPrimitive(t, r) { if ("object" != tracing_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != tracing_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - - - + /* + * Applies Rollbar telemetry scrubbing options to the dom input value. + * When replay options are present, applies those as well. + */ + }, { + key: "scrubInputValue", + value: function scrubInputValue(value, element, tagName, inputType) { + var mask = '******'; + if (inputType === 'password') { + return mask; + } + if (this.scrubTelemetryInputs) { + return mask; + } else { + var description = describeElement(element); + if (this.telemetryScrubber) { + if (this.telemetryScrubber(description)) { + return mask; + } + } else if (this.defaultValueScrubber(description)) { + return mask; + } + } + // Apply replay options regardless of other scrubbing + if (isMatchingElement(element, this.scrubClasses, this.scrubSelectors)) { + return mask; + } -var SPAN_KEY = createContextKey('Rollbar Context Key SPAN'); -var Tracing = /*#__PURE__*/function () { - function Tracing(gWindow, api, options) { - tracing_classCallCheck(this, Tracing); - this.api = api; - this.options = options; - this.window = gWindow; - if (this.window.sessionStorage) { - this.session = new Session(this, options); - } - this.createTracer(); - } - return tracing_createClass(Tracing, [{ - key: "configure", - value: function configure(options) { - // Options merge happens before configure is called, so we can just replace. - this.options = options; - } - }, { - key: "initSession", - value: function initSession() { - if (this.session) { - this.session.init(); + // This check is last since maskInputFn returns a modified value rather + // than a boolean, which would cause an early return even if the value + // was not scrubbed. + if (this.maskInputOptions[tagName.toLowerCase()] || this.maskInputOptions[inputType]) { + if (this.maskInputFn) { + return this.maskInputFn(value, element); + } else { + return mask; + } } + return value; } + + /* + * Uses the `input` event for everything except radio and checkbox inputs. + * For those, it uses the `change` event. + */ }, { - key: "sessionId", - get: function get() { - if (this.session) { - return this.session.session.id; + key: "handleInput", + value: function handleInput(evt) { + var _evt$target3, _evt$target4, _evt$target5, _evt$target6; + var type = evt.type; + var tagName = (_evt$target3 = evt.target) === null || _evt$target3 === void 0 ? void 0 : _evt$target3.tagName.toLowerCase(); + var value = (_evt$target4 = evt.target) === null || _evt$target4 === void 0 ? void 0 : _evt$target4.value; + var inputType = ((_evt$target5 = evt.target) === null || _evt$target5 === void 0 || (_evt$target5 = _evt$target5.attributes) === null || _evt$target5 === void 0 || (_evt$target5 = _evt$target5.type) === null || _evt$target5 === void 0 ? void 0 : _evt$target5.value) || ((_evt$target6 = evt.target) === null || _evt$target6 === void 0 ? void 0 : _evt$target6.type); + if (value !== undefined) { + value = this.scrubInputValue(value, evt.target, tagName, inputType); } - return null; + switch (type) { + case 'input': + if (['radio', 'checkbox'].includes(inputType)) return; + if (['select', 'textarea'].includes(tagName)) { + inputType = tagName; + } + break; + case 'change': + if (!['radio', 'checkbox'].includes(inputType)) return; + if (inputType === 'checkbox') { + var _evt$target7; + value = (_evt$target7 = evt.target) === null || _evt$target7 === void 0 ? void 0 : _evt$target7.checked; + } + break; + } + this.telemeter.captureInput({ + type: inputType, + isSynthetic: !evt.isTrusted, + element: elementString(evt.target), + value: value, + timestamp: now() + }); } }, { - key: "resource", - get: function get() { - var _this$options$payload, _this$options$payload2; - return { - attributes: tracing_objectSpread(tracing_objectSpread({}, this.options.resource || {}), {}, { - 'rollbar.environment': (_this$options$payload = (_this$options$payload2 = this.options.payload) === null || _this$options$payload2 === void 0 ? void 0 : _this$options$payload2.environment) !== null && _this$options$payload !== void 0 ? _this$options$payload : this.options.environment - }) - }; + key: "deinstrumentNavigation", + value: function deinstrumentNavigation() { + var chrome = this._window.chrome; + var chromePackagedApp = chrome && chrome.app && chrome.app.runtime; + // See https://github.com/angular/angular.js/pull/13945/files + var hasPushState = !chromePackagedApp && this._window.history && this._window.history.pushState; + if (!hasPushState) { + return; + } + restore(this.replacements, 'navigation'); } }, { - key: "scope", - get: function get() { - return { - name: 'rollbar-browser-js', - version: this.options.version - }; + key: "instrumentNavigation", + value: function instrumentNavigation() { + var chrome = this._window.chrome; + var chromePackagedApp = chrome && chrome.app && chrome.app.runtime; + // See https://github.com/angular/angular.js/pull/13945/files + var hasPushState = !chromePackagedApp && this._window.history && this._window.history.pushState; + if (!hasPushState) { + return; + } + var self = this; + utility_replace(this._window, 'onpopstate', function (orig) { + return function () { + var current = self._location.href; + self.handleUrlChange(self._lastHref, current); + if (orig) { + orig.apply(this, arguments); + } + }; + }, this.replacements, 'navigation'); + utility_replace(this._window.history, 'pushState', function (orig) { + return function () { + var url = arguments.length > 2 ? arguments[2] : undefined; + if (url) { + self.handleUrlChange(self._lastHref, String(url)); + } + return orig.apply(this, arguments); + }; + }, this.replacements, 'navigation'); } }, { - key: "idGen", - value: function idGen() { - var bytes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16; - return id.gen(bytes); + key: "handleUrlChange", + value: function handleUrlChange(from, to) { + var parsedHref = url_parse(this._location.href); + var parsedTo = url_parse(to); + var parsedFrom = url_parse(from); + this._lastHref = to; + if (parsedHref.protocol === parsedTo.protocol && parsedHref.host === parsedTo.host) { + to = parsedTo.path + (parsedTo.hash || ''); + } + if (parsedHref.protocol === parsedFrom.protocol && parsedHref.host === parsedFrom.host) { + from = parsedFrom.path + (parsedFrom.hash || ''); + } + this.telemeter.captureNavigation(from, to, null, now()); + this.rollbar.triggerReplay({ + type: 'navigation', + path: to + }); } }, { - key: "createTracer", - value: function createTracer() { - this.contextManager = new ContextManager(); - this.exporter = new SpanExporter(this.api, this.options); - this.spanProcessor = new SpanProcessor(this.exporter, this.options.tracing); - this.tracer = new Tracer(this, this.spanProcessor); + key: "instrumentConnectivity", + value: function instrumentConnectivity() { + var self = this; + this.addListener('connectivity', this._window, ['online', 'offline'], function (evt) { + return self.handleConnectivity(evt); + }); } }, { - key: "getTracer", - value: function getTracer() { - return this.tracer; + key: "handleConnectivity", + value: function handleConnectivity(evt) { + var type = evt.type; + this.telemeter.captureConnectivityChange({ + type: type, + isSynthetic: !evt.isTrusted, + timestamp: now() + }); } }, { - key: "addSpanTransform", - value: function addSpanTransform(transformFn) { - this.spanProcessor.addTransform(transformFn); + key: "handleCspEvent", + value: function handleCspEvent(cspEvent) { + var message = 'Security Policy Violation: ' + 'blockedURI: ' + cspEvent.blockedURI + ', ' + 'violatedDirective: ' + cspEvent.violatedDirective + ', ' + 'effectiveDirective: ' + cspEvent.effectiveDirective + ', '; + if (cspEvent.sourceFile) { + message += 'location: ' + cspEvent.sourceFile + ', ' + 'line: ' + cspEvent.lineNumber + ', ' + 'col: ' + cspEvent.columnNumber + ', '; + } + message += 'originalPolicy: ' + cspEvent.originalPolicy; + this.telemeter.captureLog(message, 'error', null, now()); + this.handleCspError(message); } }, { - key: "getSpan", - value: function getSpan() { - var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.contextManager.active(); - return context.getValue(SPAN_KEY); + key: "handleCspError", + value: function handleCspError(message) { + if (this.autoInstrument.errorOnContentSecurityPolicy) { + this.rollbar.error(message); + } } }, { - key: "setSpan", - value: function setSpan() { - var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.contextManager.active(); - var span = arguments.length > 1 ? arguments[1] : undefined; - return context.setValue(SPAN_KEY, span); + key: "deinstrumentContentSecurityPolicy", + value: function deinstrumentContentSecurityPolicy() { + this.removeListeners('contentsecuritypolicy'); } }, { - key: "startSpan", - value: function startSpan(name) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.contextManager.active(); - return this.tracer.startSpan(name, options, context); + key: "instrumentContentSecurityPolicy", + value: function instrumentContentSecurityPolicy() { + if (!('addEventListener' in this._document)) { + return; + } + var cspHandler = this.handleCspEvent.bind(this); + this.addListener('contentsecuritypolicy', this._document, ['securitypolicyviolation'], cspHandler); } }, { - key: "with", - value: function _with(context, fn, thisArg) { - var _this$contextManager; - for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { - args[_key - 3] = arguments[_key]; + key: "addListener", + value: function addListener(section, obj, types, handler) { + var _this2 = this; + if (obj.addEventListener) { + var _iterator7 = telemetry_createForOfIteratorHelper(types), + _step7; + try { + var _loop = function _loop() { + var t = _step7.value; + var options = { + capture: true, + passive: true + }; + obj.addEventListener(t, handler, options, true); + _this2.eventRemovers[section].push(function () { + obj.removeEventListener(t, handler, options); + }); + }; + for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { + _loop(); + } + } catch (err) { + _iterator7.e(err); + } finally { + _iterator7.f(); + } } - return (_this$contextManager = this.contextManager).with.apply(_this$contextManager, [context, fn, thisArg].concat(args)); } }, { - key: "withSpan", - value: function withSpan(name, options, fn, thisArg) { - var span = this.startSpan(name, options); - return this.with(this.setSpan(this.contextManager.active(), span), fn, thisArg, span); + key: "removeListeners", + value: function removeListeners(section) { + var r; + while (this.eventRemovers[section].length) { + r = this.eventRemovers[section].shift(); + r(); + } } }]); }(); +function _isUrlObject(input) { + return typeof URL !== 'undefined' && input instanceof URL; +} +/* harmony default export */ var browser_telemetry = (Instrumenter); +;// ./src/browser/wrapGlobals.js +function wrapGlobals(window, handler, shim) { + if (!window) { + return; + } + // Adapted from https://github.com/bugsnag/bugsnag-js + var globals = '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'.split(','); + var i, global; + for (i = 0; i < globals.length; ++i) { + global = globals[i]; + if (window[global] && window[global].prototype) { + _extendListenerPrototype(handler, window[global].prototype, shim); + } + } +} +function _extendListenerPrototype(handler, prototype, shim) { + if (hasOwn(prototype, 'addEventListener')) { + var oldAddEventListener = prototype.addEventListener; + while (oldAddEventListener._rollbarOldAdd && oldAddEventListener.belongsToShim) { + oldAddEventListener = oldAddEventListener._rollbarOldAdd; + } + var addFn = function addFn(event, callback, bubble) { + oldAddEventListener.call(this, event, handler.wrap(callback), bubble); + }; + addFn._rollbarOldAdd = oldAddEventListener; + addFn.belongsToShim = shim; + prototype.addEventListener = addFn; + var oldRemoveEventListener = prototype.removeEventListener; + while (oldRemoveEventListener._rollbarOldRemove && oldRemoveEventListener.belongsToShim) { + oldRemoveEventListener = oldRemoveEventListener._rollbarOldRemove; + } + var removeFn = function removeFn(event, callback, bubble) { + oldRemoveEventListener.call(this, event, callback && callback._rollbar_wrapped || callback, bubble); + }; + removeFn._rollbarOldRemove = oldRemoveEventListener; + removeFn.belongsToShim = shim; + prototype.removeEventListener = removeFn; + } +} +/* harmony default export */ var browser_wrapGlobals = (wrapGlobals); ;// ./src/browser/rollbar.js @@ -7199,6 +7411,7 @@ core.setComponents({ }); /* harmony default export */ var browser_rollbar = (core); ;// ./src/browser/bundles/rollbar.js +/* unused harmony import specifier */ var rollbar_rollbar; var options = typeof window !== 'undefined' && window._rollbarConfig; var alias = options && options.globalAlias || 'Rollbar'; @@ -7216,6 +7429,6 @@ if (!shimRunning && options) { self.rollbar = browser_rollbar; self._rollbarDidLoad = true; } -/* harmony default export */ var bundles_rollbar = ((/* unused pure expression or super */ null && (rollbar))); +/* harmony default export */ var bundles_rollbar = ((/* unused pure expression or super */ null && (rollbar_rollbar))); /******/ })() ; \ No newline at end of file diff --git a/dist/rollbar.js.map b/dist/rollbar.js.map index 1cfdd6e6b..619e2f43d 100644 --- a/dist/rollbar.js.map +++ b/dist/rollbar.js.map @@ -1 +1 @@ -{"version":3,"file":"rollbar.js","mappings":"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","sources":["webpack://rollbar/webpack/bootstrap","webpack://rollbar/webpack/runtime/define property getters","webpack://rollbar/webpack/runtime/hasOwnProperty shorthand","webpack://rollbar/webpack/runtime/make namespace object","webpack://rollbar/./src/merge.js","webpack://rollbar/./src/utility.js","webpack://rollbar/./src/rateLimiter.js","webpack://rollbar/./src/queue.js","webpack://rollbar/./src/notifier.js","webpack://rollbar/./src/rollbar.js","webpack://rollbar/./src/apiUtility.js","webpack://rollbar/./src/api.js","webpack://rollbar/./src/logger.js","webpack://rollbar/./src/browser/globalSetup.js","webpack://rollbar/./src/browser/transport/fetch.js","webpack://rollbar/./src/browser/transport/xhr.js","webpack://rollbar/./src/browser/transport.js","webpack://rollbar/./src/browser/url.js","webpack://rollbar/./node_modules/error-stack-parser-es/dist/lite.mjs","webpack://rollbar/./node_modules/error-stack-parser-es/dist/index.mjs","webpack://rollbar/./src/errorParser.js","webpack://rollbar/./src/browser/transforms.js","webpack://rollbar/./src/transforms.js","webpack://rollbar/./src/browser/predicates.js","webpack://rollbar/./src/predicates.js","webpack://rollbar/./src/browser/replay/defaults.js","webpack://rollbar/./src/tracing/defaults.js","webpack://rollbar/./src/defaults.js","webpack://rollbar/./src/browser/defaults.js","webpack://rollbar/./src/browser/core.js","webpack://rollbar/./src/telemetry.js","webpack://rollbar/./src/utility/headers.js","webpack://rollbar/./src/utility/replace.js","webpack://rollbar/./src/utility/traverse.js","webpack://rollbar/./src/scrub.js","webpack://rollbar/./src/browser/domUtility.js","webpack://rollbar/./src/browser/telemetry.js","webpack://rollbar/./src/browser/wrapGlobals.js","webpack://rollbar/./src/truncation.js","webpack://rollbar/./src/tracing/context.js","webpack://rollbar/./src/tracing/contextManager.js","webpack://rollbar/./src/tracing/id.js","webpack://rollbar/./src/tracing/session.js","webpack://rollbar/./src/tracing/hrtime.js","webpack://rollbar/./src/tracing/exporter.js","webpack://rollbar/./src/tracing/spanProcessor.js","webpack://rollbar/./src/tracing/span.js","webpack://rollbar/./src/tracing/tracer.js","webpack://rollbar/./src/tracing/tracing.js","webpack://rollbar/./src/browser/rollbar.js","webpack://rollbar/./src/browser/bundles/rollbar.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(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__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\n\nvar isPlainObject = function isPlainObject(obj) {\n if (!obj || toStr.call(obj) !== '[object Object]') {\n return false;\n }\n\n var hasOwnConstructor = hasOwn.call(obj, 'constructor');\n var hasIsPrototypeOf =\n obj.constructor &&\n obj.constructor.prototype &&\n hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n // Not own constructor property must be Object\n if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n return false;\n }\n\n // Own properties are enumerated firstly, so to speed up,\n // if last one is own, then all properties are own.\n var key;\n for (key in obj) {\n /**/\n }\n\n return typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\nfunction merge() {\n var i,\n src,\n copy,\n clone,\n name,\n result = Object.create(null), // no prototype pollution on Object\n current = null,\n length = arguments.length;\n\n for (i = 0; i < length; i++) {\n current = arguments[i];\n if (current == null) {\n continue;\n }\n\n for (name in current) {\n src = result[name];\n copy = current[name];\n if (result !== copy) {\n if (copy && isPlainObject(copy)) {\n clone = src && isPlainObject(src) ? src : {};\n result[name] = merge(clone, copy);\n } else if (typeof copy !== 'undefined') {\n result[name] = copy;\n }\n }\n }\n }\n return result;\n}\n\nexport default merge;\n","import merge from './merge.js';\n\n/*\n * isType - Given a Javascript value and a string, returns true if the type of the value matches the\n * given string.\n *\n * @param x - any value\n * @param t - a lowercase string containing one of the following type names:\n * - undefined\n * - null\n * - error\n * - number\n * - boolean\n * - string\n * - symbol\n * - function\n * - object\n * - array\n * @returns true if x is of type t, otherwise false\n */\nfunction isType(x, t) {\n return t === typeName(x);\n}\n\n/*\n * typeName - Given a Javascript value, returns the type of the object as a string\n */\nfunction typeName(x) {\n var name = typeof x;\n if (name !== 'object') {\n return name;\n }\n if (!x) {\n return 'null';\n }\n if (x instanceof Error) {\n return 'error';\n }\n return {}.toString\n .call(x)\n .match(/\\s([a-zA-Z]+)/)[1]\n .toLowerCase();\n}\n\n/* isFunction - a convenience function for checking if a value is a function\n *\n * @param f - any value\n * @returns true if f is a function, otherwise false\n */\nfunction isFunction(f) {\n return isType(f, 'function');\n}\n\n/* isNativeFunction - a convenience function for checking if a value is a native JS function\n *\n * @param f - any value\n * @returns true if f is a native JS function, otherwise false\n */\nfunction isNativeFunction(f) {\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n var funcMatchString = Function.prototype.toString\n .call(Object.prototype.hasOwnProperty)\n .replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?');\n var reIsNative = RegExp('^' + funcMatchString + '$');\n return isObject(f) && reIsNative.test(f);\n}\n\n/* isObject - Checks if the argument is an object\n *\n * @param value - any value\n * @returns true is value is an object function is an object)\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/* isString - Checks if the argument is a string\n *\n * @param value - any value\n * @returns true if value is a string\n */\nfunction isString(value) {\n return typeof value === 'string' || value instanceof String;\n}\n\n/**\n * isFiniteNumber - determines whether the passed value is a finite number\n *\n * @param {*} n - any value\n * @returns true if value is a finite number\n */\nfunction isFiniteNumber(n) {\n return Number.isFinite(n);\n}\n\n/*\n * isDefined - a convenience function for checking if a value is not equal to undefined\n *\n * @param u - any value\n * @returns true if u is anything other than undefined\n */\nfunction isDefined(u) {\n return !isType(u, 'undefined');\n}\n\n/*\n * isIterable - convenience function for checking if a value can be iterated, essentially\n * whether it is an object or an array.\n *\n * @param i - any value\n * @returns true if i is an object or an array as determined by `typeName`\n */\nfunction isIterable(i) {\n var type = typeName(i);\n return type === 'object' || type === 'array';\n}\n\n/*\n * isError - convenience function for checking if a value is of an error type\n *\n * @param e - any value\n * @returns true if e is an error\n */\nfunction isError(e) {\n // Detect both Error and Firefox Exception type\n return isType(e, 'error') || isType(e, 'exception');\n}\n\n/* isPromise - a convenience function for checking if a value is a promise\n *\n * @param p - any value\n * @returns true if f is a function, otherwise false\n */\nfunction isPromise(p) {\n return isObject(p) && isType(p.then, 'function');\n}\n\n/**\n * isBrowser - a convenience function for checking if the code is running in a browser\n *\n * @returns true if the code is running in a browser environment\n */\nfunction isBrowser() {\n return typeof window !== 'undefined';\n}\n\nfunction redact() {\n return '********';\n}\n\n// from http://stackoverflow.com/a/8809472/1138191\nfunction uuid4() {\n var d = now();\n var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(\n /[xy]/g,\n function (c) {\n var r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : (r & 0x7) | 0x8).toString(16);\n },\n );\n return uuid;\n}\n\nvar LEVELS = {\n debug: 0,\n info: 1,\n warning: 2,\n error: 3,\n critical: 4,\n};\n\nfunction sanitizeHref(url) {\n try {\n const urlObject = new URL(url);\n if (urlObject.password) {\n urlObject.password = redact();\n }\n if (urlObject.search) {\n urlObject.search = redact();\n }\n return urlObject.toString();\n } catch (_) {\n return url; // Return original URL if parsing fails\n }\n}\n\nfunction sanitizeUrl(url) {\n var baseUrlParts = parseUri(url);\n if (!baseUrlParts) {\n return '(unknown)';\n }\n\n // remove a trailing # if there is no anchor\n if (baseUrlParts.anchor === '') {\n baseUrlParts.source = baseUrlParts.source.replace('#', '');\n }\n\n url = baseUrlParts.source.replace('?' + baseUrlParts.query, '');\n return url;\n}\n\nvar parseUriOptions = {\n strictMode: false,\n key: [\n 'source',\n 'protocol',\n 'authority',\n 'userInfo',\n 'user',\n 'password',\n 'host',\n 'port',\n 'relative',\n 'path',\n 'directory',\n 'file',\n 'query',\n 'anchor',\n ],\n q: {\n name: 'queryKey',\n parser: /(?:^|&)([^&=]*)=?([^&]*)/g,\n },\n parser: {\n strict:\n /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?))?((((?:[^?#\\/]*\\/)*)([^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n loose:\n /^(?:(?![^:@]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n },\n};\n\nfunction parseUri(str) {\n if (!isType(str, 'string')) {\n return undefined;\n }\n\n var o = parseUriOptions;\n var m = o.parser[o.strictMode ? 'strict' : 'loose'].exec(str);\n var uri = {};\n\n for (var i = 0, l = o.key.length; i < l; ++i) {\n uri[o.key[i]] = m[i] || '';\n }\n\n uri[o.q.name] = {};\n uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {\n if ($1) {\n uri[o.q.name][$1] = $2;\n }\n });\n\n return uri;\n}\n\nfunction addParamsAndAccessTokenToPath(accessToken, options, params) {\n params = params || {};\n params.access_token = accessToken;\n var paramsArray = [];\n var k;\n for (k in params) {\n if (Object.prototype.hasOwnProperty.call(params, k)) {\n paramsArray.push([k, params[k]].join('='));\n }\n }\n var query = '?' + paramsArray.sort().join('&');\n\n options = options || {};\n options.path = options.path || '';\n var qs = options.path.indexOf('?');\n var h = options.path.indexOf('#');\n var p;\n if (qs !== -1 && (h === -1 || h > qs)) {\n p = options.path;\n options.path = p.substring(0, qs) + query + '&' + p.substring(qs + 1);\n } else {\n if (h !== -1) {\n p = options.path;\n options.path = p.substring(0, h) + query + p.substring(h);\n } else {\n options.path = options.path + query;\n }\n }\n}\n\nfunction formatUrl(u, protocol) {\n protocol = protocol || u.protocol;\n if (!protocol && u.port) {\n if (u.port === 80) {\n protocol = 'http:';\n } else if (u.port === 443) {\n protocol = 'https:';\n }\n }\n protocol = protocol || 'https:';\n\n if (!u.hostname) {\n return null;\n }\n var result = protocol + '//' + u.hostname;\n if (u.port) {\n result = result + ':' + u.port;\n }\n if (u.path) {\n result = result + u.path;\n }\n return result;\n}\n\nfunction stringify(obj, backup) {\n var value, error;\n try {\n value = JSON.stringify(obj);\n } catch (jsonError) {\n if (backup && isFunction(backup)) {\n try {\n value = backup(obj);\n } catch (backupError) {\n error = backupError;\n }\n } else {\n error = jsonError;\n }\n }\n return { error: error, value: value };\n}\n\nfunction maxByteSize(string) {\n // The transport will use utf-8, so assume utf-8 encoding.\n //\n // This minimal implementation will accurately count bytes for all UCS-2 and\n // single code point UTF-16. If presented with multi code point UTF-16,\n // which should be rare, it will safely overcount, not undercount.\n //\n // While robust utf-8 encoders exist, this is far smaller and far more performant.\n // For quickly counting payload size for truncation, smaller is better.\n\n var count = 0;\n var length = string.length;\n\n for (var i = 0; i < length; i++) {\n var code = string.charCodeAt(i);\n if (code < 128) {\n // up to 7 bits\n count = count + 1;\n } else if (code < 2048) {\n // up to 11 bits\n count = count + 2;\n } else if (code < 65536) {\n // up to 16 bits\n count = count + 3;\n }\n }\n\n return count;\n}\n\nfunction jsonParse(s) {\n var value, error;\n try {\n value = JSON.parse(s);\n } catch (e) {\n error = e;\n }\n return { error: error, value: value };\n}\n\nfunction makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n mode,\n backupMessage,\n errorParser,\n) {\n var location = {\n url: url || '',\n line: lineno,\n column: colno,\n };\n location.func = errorParser.guessFunctionName(location.url, location.line);\n location.context = errorParser.gatherContext(location.url, location.line);\n var href =\n typeof document !== 'undefined' &&\n document &&\n document.location &&\n document.location.href;\n var useragent =\n typeof window !== 'undefined' &&\n window &&\n window.navigator &&\n window.navigator.userAgent;\n return {\n mode: mode,\n message: error ? String(error) : message || backupMessage,\n url: href,\n stack: [location],\n useragent: useragent,\n };\n}\n\nfunction wrapCallback(logger, f) {\n return function (err, resp) {\n try {\n f(err, resp);\n } catch (e) {\n logger.error(e);\n }\n };\n}\n\nfunction nonCircularClone(obj) {\n var seen = [obj];\n\n function clone(obj, seen) {\n var value,\n name,\n newSeen,\n result = {};\n\n try {\n for (name in obj) {\n value = obj[name];\n\n if (value && (isType(value, 'object') || isType(value, 'array'))) {\n if (seen.includes(value)) {\n result[name] = 'Removed circular reference: ' + typeName(value);\n } else {\n newSeen = seen.slice();\n newSeen.push(value);\n result[name] = clone(value, newSeen);\n }\n continue;\n }\n\n result[name] = value;\n }\n } catch (e) {\n result = 'Failed cloning custom data: ' + e.message;\n }\n return result;\n }\n return clone(obj, seen);\n}\n\nfunction createItem(args, logger, notifier, requestKeys, lambdaContext) {\n var message, err, custom, callback, request;\n var arg;\n var extraArgs = [];\n var diagnostic = {};\n var argTypes = [];\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n argTypes.push(typ);\n switch (typ) {\n case 'undefined':\n break;\n case 'string':\n message ? extraArgs.push(arg) : (message = arg);\n break;\n case 'function':\n callback = wrapCallback(logger, arg);\n break;\n case 'date':\n extraArgs.push(arg);\n break;\n case 'error':\n case 'domexception':\n case 'exception': // Firefox Exception type\n err ? extraArgs.push(arg) : (err = arg);\n break;\n case 'object':\n case 'array':\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n err ? extraArgs.push(arg) : (err = arg);\n break;\n }\n if (requestKeys && typ === 'object' && !request) {\n for (var j = 0, len = requestKeys.length; j < len; ++j) {\n if (arg[requestKeys[j]] !== undefined) {\n request = arg;\n break;\n }\n }\n if (request) {\n break;\n }\n }\n custom ? extraArgs.push(arg) : (custom = arg);\n break;\n default:\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n err ? extraArgs.push(arg) : (err = arg);\n break;\n }\n extraArgs.push(arg);\n }\n }\n\n // if custom is an array this turns it into an object with integer keys\n if (custom) custom = nonCircularClone(custom);\n\n if (extraArgs.length > 0) {\n if (!custom) custom = nonCircularClone({});\n custom.extraArgs = nonCircularClone(extraArgs);\n }\n\n var item = {\n message: message,\n err: err,\n custom: custom,\n timestamp: now(),\n callback: callback,\n notifier: notifier,\n diagnostic: diagnostic,\n uuid: uuid4(),\n };\n\n item.data = item.data || {};\n\n setCustomItemKeys(item, custom);\n\n if (requestKeys && request) {\n item.request = request;\n }\n if (lambdaContext) {\n item.lambdaContext = lambdaContext;\n }\n item._originalArgs = args;\n item.diagnostic.original_arg_types = argTypes;\n return item;\n}\n\nfunction setCustomItemKeys(item, custom) {\n if (custom && custom.level !== undefined) {\n item.level = custom.level;\n delete custom.level;\n }\n if (custom && custom.skipFrames !== undefined) {\n item.skipFrames = custom.skipFrames;\n delete custom.skipFrames;\n }\n}\n\nfunction addErrorContext(item, errors) {\n var custom = item.data.custom || {};\n var contextAdded = false;\n\n try {\n for (var i = 0; i < errors.length; ++i) {\n if (errors[i].hasOwnProperty('rollbarContext')) {\n custom = merge(custom, nonCircularClone(errors[i].rollbarContext));\n contextAdded = true;\n }\n }\n\n // Avoid adding an empty object to the data.\n if (contextAdded) {\n item.data.custom = custom;\n }\n } catch (e) {\n item.diagnostic.error_context = 'Failed: ' + e.message;\n }\n}\n\nvar TELEMETRY_TYPES = [\n 'log',\n 'network',\n 'dom',\n 'navigation',\n 'error',\n 'manual',\n];\nvar TELEMETRY_LEVELS = ['critical', 'error', 'warning', 'info', 'debug'];\n\nfunction arrayIncludes(arr, val) {\n for (var k = 0; k < arr.length; ++k) {\n if (arr[k] === val) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction createTelemetryEvent(args) {\n var type, metadata, level;\n var arg;\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n switch (typ) {\n case 'string':\n if (!type && arrayIncludes(TELEMETRY_TYPES, arg)) {\n type = arg;\n } else if (!level && arrayIncludes(TELEMETRY_LEVELS, arg)) {\n level = arg;\n }\n break;\n case 'object':\n metadata = arg;\n break;\n default:\n break;\n }\n }\n var event = {\n type: type || 'manual',\n metadata: metadata || {},\n level: level,\n };\n\n return event;\n}\n\nfunction addItemAttributes(itemData, attributes) {\n itemData.attributes = itemData.attributes || [];\n for (const a of attributes) {\n if (a.value === undefined) {\n continue;\n }\n itemData.attributes.push(a);\n }\n}\n\n/*\n * get - given an obj/array and a keypath, return the value at that keypath or\n * undefined if not possible.\n *\n * @param obj - an object or array\n * @param path - a string of keys separated by '.' such as 'plugin.jquery.0.message'\n * which would correspond to 42 in `{plugin: {jquery: [{message: 42}]}}`\n */\nfunction get(obj, path) {\n if (!obj) {\n return undefined;\n }\n var keys = path.split('.');\n var result = obj;\n try {\n for (var i = 0, len = keys.length; i < len; ++i) {\n result = result[keys[i]];\n }\n } catch (e) {\n result = undefined;\n }\n return result;\n}\n\nfunction set(obj, path, value) {\n if (!obj) {\n return;\n }\n\n // Prevent prototype pollution by setting the prototype to null.\n Object.setPrototypeOf(obj, null);\n\n var keys = path.split('.');\n var len = keys.length;\n if (len < 1) {\n return;\n }\n if (len === 1) {\n obj[keys[0]] = value;\n return;\n }\n try {\n var temp = obj[keys[0]] || {};\n var replacement = temp;\n for (var i = 1; i < len - 1; ++i) {\n temp[keys[i]] = temp[keys[i]] || {};\n temp = temp[keys[i]];\n }\n temp[keys[len - 1]] = value;\n obj[keys[0]] = replacement;\n } catch (e) {\n return;\n }\n}\n\nfunction formatArgsAsString(args) {\n var i, len, arg;\n var result = [];\n for (i = 0, len = args.length; i < len; ++i) {\n arg = args[i];\n switch (typeName(arg)) {\n case 'object':\n arg = stringify(arg);\n arg = arg.error || arg.value;\n if (arg.length > 500) {\n arg = arg.substr(0, 497) + '...';\n }\n break;\n case 'null':\n arg = 'null';\n break;\n case 'undefined':\n arg = 'undefined';\n break;\n case 'symbol':\n arg = arg.toString();\n break;\n }\n result.push(arg);\n }\n return result.join(' ');\n}\n\nfunction now() {\n if (Date.now) {\n return +Date.now();\n }\n return +new Date();\n}\n\nfunction filterIp(requestData, captureIp) {\n if (!requestData || !requestData['user_ip'] || captureIp === true) {\n return;\n }\n var newIp = requestData['user_ip'];\n if (!captureIp) {\n newIp = null;\n } else {\n try {\n var parts;\n if (newIp.indexOf('.') !== -1) {\n parts = newIp.split('.');\n parts.pop();\n parts.push('0');\n newIp = parts.join('.');\n } else if (newIp.indexOf(':') !== -1) {\n parts = newIp.split(':');\n if (parts.length > 2) {\n var beginning = parts.slice(0, 3);\n var slashIdx = beginning[2].indexOf('/');\n if (slashIdx !== -1) {\n beginning[2] = beginning[2].substring(0, slashIdx);\n }\n var terminal = '0000:0000:0000:0000:0000';\n newIp = beginning.concat(terminal).join(':');\n }\n } else {\n newIp = null;\n }\n } catch (e) {\n newIp = null;\n }\n }\n requestData['user_ip'] = newIp;\n}\n\nfunction handleOptions(current, input, payload, logger) {\n var result = merge(current, input, payload);\n result = updateDeprecatedOptions(result, logger);\n if (!input || input.overwriteScrubFields) {\n return result;\n }\n if (input.scrubFields) {\n result.scrubFields = (current.scrubFields || []).concat(input.scrubFields);\n }\n return result;\n}\n\nfunction updateDeprecatedOptions(options, logger) {\n if (options.hostWhiteList && !options.hostSafeList) {\n options.hostSafeList = options.hostWhiteList;\n options.hostWhiteList = undefined;\n logger && logger.log('hostWhiteList is deprecated. Use hostSafeList.');\n }\n if (options.hostBlackList && !options.hostBlockList) {\n options.hostBlockList = options.hostBlackList;\n options.hostBlackList = undefined;\n logger && logger.log('hostBlackList is deprecated. Use hostBlockList.');\n }\n return options;\n}\n\nexport {\n addParamsAndAccessTokenToPath,\n createItem,\n addErrorContext,\n createTelemetryEvent,\n addItemAttributes,\n filterIp,\n formatArgsAsString,\n formatUrl,\n get,\n handleOptions,\n isError,\n isFiniteNumber,\n isFunction,\n isIterable,\n isNativeFunction,\n isObject,\n isString,\n isType,\n isPromise,\n isBrowser,\n jsonParse,\n LEVELS,\n makeUnhandledStackInfo,\n merge,\n now,\n redact,\n sanitizeHref,\n sanitizeUrl,\n set,\n stringify,\n maxByteSize,\n typeName,\n uuid4,\n};\n","import * as _ from './utility.js';\n\n/*\n * RateLimiter - an object that encapsulates the logic for counting items sent to Rollbar\n *\n * @param options - the same options that are accepted by configureGlobal offered as a convenience\n */\nfunction RateLimiter(options) {\n this.startTime = _.now();\n this.counter = 0;\n this.perMinCounter = 0;\n this.platform = null;\n this.platformOptions = {};\n this.configureGlobal(options);\n}\n\nRateLimiter.globalSettings = {\n startTime: _.now(),\n maxItems: undefined,\n itemsPerMinute: undefined,\n};\n\n/*\n * configureGlobal - set the global rate limiter options\n *\n * @param options - Only the following values are recognized:\n * startTime: a timestamp of the form returned by (new Date()).getTime()\n * maxItems: the maximum items\n * itemsPerMinute: the max number of items to send in a given minute\n */\nRateLimiter.prototype.configureGlobal = function (options) {\n if (options.startTime !== undefined) {\n RateLimiter.globalSettings.startTime = options.startTime;\n }\n if (options.maxItems !== undefined) {\n RateLimiter.globalSettings.maxItems = options.maxItems;\n }\n if (options.itemsPerMinute !== undefined) {\n RateLimiter.globalSettings.itemsPerMinute = options.itemsPerMinute;\n }\n};\n\n/*\n * shouldSend - determine if we should send a given item based on rate limit settings\n *\n * @param item - the item we are about to send\n * @returns An object with the following structure:\n * error: (Error|null)\n * shouldSend: bool\n * payload: (Object|null)\n * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and\n * exactly one of error or payload will be non-null. If error is non-null, the returned Error will\n * describe the situation, but it means that we were already over a rate limit (either globally or\n * per minute) when this item was checked. If error is null, and therefore payload is non-null, it\n * means this item put us over the global rate limit and the payload should be sent to Rollbar in\n * place of the passed in item.\n */\nRateLimiter.prototype.shouldSend = function (item, now) {\n now = now || _.now();\n var elapsedTime = now - this.startTime;\n if (elapsedTime < 0 || elapsedTime >= 60000) {\n this.startTime = now;\n this.perMinCounter = 0;\n }\n\n var globalRateLimit = RateLimiter.globalSettings.maxItems;\n var globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute;\n\n if (checkRate(item, globalRateLimit, this.counter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n globalRateLimit + ' max items reached',\n false,\n );\n } else if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n globalRateLimitPerMin + ' items per minute reached',\n false,\n );\n }\n this.counter++;\n this.perMinCounter++;\n\n var shouldSend = !checkRate(item, globalRateLimit, this.counter);\n var perMinute = shouldSend;\n shouldSend =\n shouldSend && !checkRate(item, globalRateLimitPerMin, this.perMinCounter);\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n null,\n shouldSend,\n globalRateLimit,\n globalRateLimitPerMin,\n perMinute,\n );\n};\n\nRateLimiter.prototype.setPlatformOptions = function (platform, options) {\n this.platform = platform;\n this.platformOptions = options;\n};\n\n/* Helpers */\n\nfunction checkRate(item, limit, counter) {\n return !item.ignoreRateLimit && limit >= 1 && counter > limit;\n}\n\nfunction shouldSendValue(\n platform,\n options,\n error,\n shouldSend,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n var payload = null;\n if (error) {\n error = new Error(error);\n }\n if (!error && !shouldSend) {\n payload = rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n );\n }\n return { error: error, shouldSend: shouldSend, payload: payload };\n}\n\nfunction rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n var environment =\n options.environment || (options.payload && options.payload.environment);\n var msg;\n if (perMinute) {\n msg = 'item per minute limit reached, ignoring errors until timeout';\n } else {\n msg = 'maxItems has been hit, ignoring errors until reset.';\n }\n var item = {\n body: {\n message: {\n body: msg,\n extra: {\n maxItems: globalRateLimit,\n itemsPerMinute: limitPerMin,\n },\n },\n },\n language: 'javascript',\n environment: environment,\n notifier: {\n version:\n (options.notifier && options.notifier.version) || options.version,\n },\n };\n if (platform === 'browser') {\n item.platform = 'browser';\n item.framework = 'browser-js';\n item.notifier.name = 'rollbar-browser-js';\n } else if (platform === 'server') {\n item.framework = options.framework || 'node-js';\n item.notifier.name = options.notifier.name;\n } else if (platform === 'react-native') {\n item.framework = options.framework || 'react-native';\n item.notifier.name = options.notifier.name;\n }\n return item;\n}\n\nexport default RateLimiter;\n","import * as _ from './utility.js';\n\n/**\n * Queue - an object which handles which handles a queue of items to be sent to Rollbar.\n * This object handles rate limiting via a passed in rate limiter, retries based on connection\n * errors, and filtering of items based on a set of configurable predicates. The communication to\n * the backend is performed via a given API object.\n */\nclass Queue {\n /**\n * @param rateLimiter - An object which conforms to the interface\n * `rateLimiter.shouldSend(item) -> bool`\n * @param api - An object which conforms to the interface\n * `api.postItem(payload, function(err, response))`\n * @param logger - An object used to log verbose messages if desired\n * @param options - see `Queue.prototype.configure`\n * @param replay - Optional `Replay` for coordinating session replay with error occurrences\n */\n constructor(rateLimiter, api, logger, options, replay) {\n this.rateLimiter = rateLimiter;\n this.api = api;\n this.logger = logger;\n this.options = options;\n this.replay = replay;\n this.predicates = [];\n this.pendingItems = [];\n this.pendingRequests = [];\n this.retryQueue = [];\n this.retryHandle = null;\n this.waitCallback = null;\n this.waitIntervalID = null;\n }\n\n /**\n * configure - updates the options this queue uses\n *\n * @param options\n */\n configure(options) {\n this.api?.configure(options);\n const oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n return this;\n }\n\n /**\n * addPredicate - adds a predicate to the end of the list of predicates for this queue\n *\n * @param predicate - function(item, options) -> (bool|{err: Error})\n * Returning true means that this predicate passes and the item is okay to go on the queue\n * Returning false means do not add the item to the queue, but it is not an error\n * Returning {err: Error} means do not add the item to the queue, and the given error explains why\n * Returning {err: undefined} is equivalent to returning true but don't do that\n */\n addPredicate(predicate) {\n if (_.isFunction(predicate)) {\n this.predicates.push(predicate);\n }\n return this;\n }\n\n addPendingItem(item) {\n this.pendingItems.push(item);\n }\n\n removePendingItem(item) {\n const idx = this.pendingItems.indexOf(item);\n if (idx !== -1) {\n this.pendingItems.splice(idx, 1);\n }\n }\n\n /**\n * addItem - Send an item to the Rollbar API if all of the predicates are satisfied\n *\n * @param item - Item instance with the payload to send to the backend\n * @param callback - function(error, repsonse) which will be called with the response from the API\n * in the case of a success, otherwise response will be null and error will have a value. If both\n * error and response are null then the item was stopped by a predicate which did not consider this\n * to be an error condition, but nonetheless did not send the item to the API.\n * @param originalError - The original error before any transformations that is to be logged if any\n * @param originalItem - The original item before transforms, used in pendingItems queue\n */\n addItem(item, callback, originalError, originalItem) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {\n return;\n };\n }\n const data = item.data;\n const predicateResult = this._applyPredicates(data);\n if (predicateResult.stop) {\n this.removePendingItem(originalItem);\n callback(predicateResult.err);\n return;\n }\n this._maybeLog(data, originalError);\n this.removePendingItem(originalItem);\n if (!this.options.transmit) {\n callback(new Error('Transmit disabled'));\n return;\n }\n\n if (this.replay && data.body) {\n item.replayId = this.replay.capture(null, data.uuid, {\n type: 'occurrence',\n level: item.level,\n });\n\n if (item.replayId) {\n _.addItemAttributes(item.data, [\n { key: 'replay_id', value: item.replayId },\n ]);\n }\n }\n\n this.pendingRequests.push(data);\n try {\n this._makeApiRequest(data, (err, resp, headers) => {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers);\n }\n\n callback(err, resp);\n });\n } catch (err) {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay?.discard(item.replayId);\n }\n\n callback(err);\n }\n }\n\n /**\n * wait - Stop any further errors from being added to the queue, and get called back when all items\n * currently processing have finished sending to the backend.\n *\n * @param callback - function() called when all pending items have been sent\n */\n wait(callback) {\n if (!_.isFunction(callback)) {\n return;\n }\n this.waitCallback = callback;\n if (this._maybeCallWait()) {\n return;\n }\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitIntervalID = setInterval(() => {\n this._maybeCallWait();\n }, 500);\n }\n\n /**\n * Sequentially applies the predicates that have been added to the queue to the\n * given item with the currently configured options.\n *\n * @param item - An item in the queue\n * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue,\n * the error value should be passed up to a callbak if we are stopping.\n */\n _applyPredicates(item) {\n let p = null;\n for (let i = 0, len = this.predicates.length; i < len; i++) {\n p = this.predicates[i](item, this.options);\n if (!p || p.err !== undefined) {\n return { stop: true, err: p.err };\n }\n }\n return { stop: false, err: null };\n }\n\n /**\n * Send an item to Rollbar, callback when done, if there is an error make an\n * effort to retry if we are configured to do so.\n *\n * @param item - an item ready to send to the backend\n * @param callback - function(err, response)\n */\n _makeApiRequest(item, callback) {\n const rateLimitResponse = this.rateLimiter.shouldSend(item);\n if (rateLimitResponse.shouldSend) {\n this.api.postItem(item, (err, resp, headers) => {\n if (err) {\n this._maybeRetry(err, item, callback);\n } else {\n callback(err, resp, headers);\n }\n });\n } else if (rateLimitResponse.error) {\n callback(rateLimitResponse.error);\n } else {\n this.api.postItem(rateLimitResponse.payload, callback);\n }\n }\n\n // These are errors basically mean there is no internet connection\n static RETRIABLE_ERRORS = [\n 'ECONNRESET',\n 'ENOTFOUND',\n 'ESOCKETTIMEDOUT',\n 'ETIMEDOUT',\n 'ECONNREFUSED',\n 'EHOSTUNREACH',\n 'EPIPE',\n 'EAI_AGAIN',\n ];\n\n /**\n * Given the error returned by the API, decide if we should retry or just callback\n * with the error.\n *\n * @param err - an error returned by the API transport\n * @param item - the item that was trying to be sent when this error occured\n * @param callback - function(err, response)\n */\n _maybeRetry(err, item, callback) {\n let shouldRetry = false;\n if (this.options.retryInterval) {\n for (let i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) {\n if (err.code === Queue.RETRIABLE_ERRORS[i]) {\n shouldRetry = true;\n break;\n }\n }\n if (shouldRetry && _.isFiniteNumber(this.options.maxRetries)) {\n item.retries = item.retries ? item.retries + 1 : 1;\n if (item.retries > this.options.maxRetries) {\n shouldRetry = false;\n }\n }\n }\n if (shouldRetry) {\n this._retryApiRequest(item, callback);\n } else {\n callback(err);\n }\n }\n\n /**\n * Add an item and a callback to a queue and possibly start a timer to process\n * that queue based on the retryInterval in the options for this queue.\n *\n * @param item - an item that failed to send due to an error we deem retriable\n * @param callback - function(err, response)\n */\n _retryApiRequest(item, callback) {\n this.retryQueue.push({ item, callback });\n\n if (!this.retryHandle) {\n this.retryHandle = setInterval(() => {\n while (this.retryQueue.length) {\n const retryObject = this.retryQueue.shift();\n this._makeApiRequest(retryObject.item, retryObject.callback);\n }\n }, this.options.retryInterval);\n }\n }\n\n /**\n * Removes the item from the pending request queue, this queue is used to\n * enable to functionality of providing a callback that clients can pass to `wait` to be notified\n * when the pending request queue has been emptied. This must be called when the API finishes\n * processing this item. If a `wait` callback is configured, it is called by this function.\n *\n * @param item - the item previously added to the pending request queue\n */\n _dequeuePendingRequest(item) {\n const idx = this.pendingRequests.indexOf(item);\n if (idx !== -1) {\n this.pendingRequests.splice(idx, 1);\n this._maybeCallWait();\n }\n }\n\n _maybeLog(data, originalError) {\n if (this.logger && this.options.verbose) {\n let message =\n originalError ||\n _.get(data, 'body.trace.exception.message') ||\n _.get(data, 'body.trace_chain.0.exception.message');\n if (message) {\n this.logger.error(message);\n return;\n }\n message = _.get(data, 'body.message.body');\n if (message) {\n this.logger.log(message);\n }\n }\n }\n\n _maybeCallWait() {\n if (\n _.isFunction(this.waitCallback) &&\n this.pendingItems.length === 0 &&\n this.pendingRequests.length === 0\n ) {\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitCallback();\n return true;\n }\n return false;\n }\n}\n\nexport default Queue;\n","import * as _ from './utility.js';\n\n/*\n * Notifier - the internal object responsible for delegating between the client exposed API, the\n * chain of transforms necessary to turn an item into something that can be sent to Rollbar, and the\n * queue which handles the communcation with the Rollbar API servers.\n *\n * @param queue - an object that conforms to the interface: addItem(item, callback)\n * @param options - an object representing the options to be set for this notifier, this should have\n * any defaults already set by the caller\n */\nfunction Notifier(queue, options) {\n this.queue = queue;\n this.options = options;\n this.transforms = [];\n this.diagnostic = {};\n}\n\n/*\n * configure - updates the options for this notifier with the passed in object\n *\n * @param options - an object which gets merged with the current options set on this notifier\n * @returns this\n */\nNotifier.prototype.configure = function (options) {\n this.queue && this.queue.configure(options);\n var oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n return this;\n};\n\n/*\n * addTransform - adds a transform onto the end of the queue of transforms for this notifier\n *\n * @param transform - a function which takes three arguments:\n * * item: An Object representing the data to eventually be sent to Rollbar\n * * options: The current value of the options for this notifier\n * * callback: function(err: (Null|Error), item: (Null|Object)) the transform must call this\n * callback with a null value for error if it wants the processing chain to continue, otherwise\n * with an error to terminate the processing. The item should be the updated item after this\n * transform is finished modifying it.\n */\nNotifier.prototype.addTransform = function (transform) {\n if (_.isFunction(transform)) {\n this.transforms.push(transform);\n }\n return this;\n};\n\n/*\n * log - the internal log function which applies the configured transforms and then pushes onto the\n * queue to be sent to the backend.\n *\n * @param item - An object with the following structure:\n * message [String] - An optional string to be sent to rollbar\n * error [Error] - An optional error\n *\n * @param callback - A function of type function(err, resp) which will be called with exactly one\n * null argument and one non-null argument. The callback will be called once, either during the\n * transform stage if an error occurs inside a transform, or in response to the communication with\n * the backend. The second argument will be the response from the backend in case of success.\n */\nNotifier.prototype.log = function (item, callback) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n\n if (!this.options.enabled) {\n return callback(new Error('Rollbar is not enabled'));\n }\n\n this.queue.addPendingItem(item);\n var originalError = item.err;\n this._applyTransforms(\n item,\n function (err, i) {\n if (err) {\n this.queue.removePendingItem(item);\n return callback(err, null);\n }\n this.queue.addItem(i, callback, originalError, item);\n }.bind(this),\n );\n};\n\n/* Internal */\n\n/*\n * _applyTransforms - Applies the transforms that have been added to this notifier sequentially. See\n * `addTransform` for more information.\n *\n * @param item - An item to be transformed\n * @param callback - A function of type function(err, item) which will be called with a non-null\n * error and a null item in the case of a transform failure, or a null error and non-null item after\n * all transforms have been applied.\n */\nNotifier.prototype._applyTransforms = function (item, callback) {\n var transformIndex = -1;\n var transformsLength = this.transforms.length;\n var transforms = this.transforms;\n var options = this.options;\n\n var cb = function (err, i) {\n if (err) {\n callback(err, null);\n return;\n }\n\n transformIndex++;\n\n if (transformIndex === transformsLength) {\n callback(null, i);\n return;\n }\n\n transforms[transformIndex](i, options, cb);\n };\n\n cb(null, item);\n};\n\nexport default Notifier;\n","import RateLimiter from './rateLimiter.js';\nimport Queue from './queue.js';\nimport Notifier from './notifier.js';\nimport * as _ from './utility.js';\n\n/*\n * Rollbar - the interface to Rollbar\n *\n * @param options\n * @param api\n * @param logger\n */\nfunction Rollbar(options, api, logger, telemeter, tracing, replay, platform) {\n this.options = _.merge(options);\n this.logger = logger;\n Rollbar.rateLimiter.configureGlobal(this.options);\n Rollbar.rateLimiter.setPlatformOptions(platform, this.options);\n this.api = api;\n this.queue = new Queue(\n Rollbar.rateLimiter,\n api,\n logger,\n this.options,\n replay,\n );\n\n this.tracing = tracing;\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is created\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier = new Notifier(this.queue, this.options);\n this.telemeter = telemeter;\n setStackTraceLimit(options);\n this.lastError = null;\n this.lastErrorHash = 'none';\n}\n\nvar defaultOptions = {\n maxItems: 0,\n itemsPerMinute: 60,\n};\n\nRollbar.rateLimiter = new RateLimiter(defaultOptions);\n\nRollbar.prototype.global = function (options) {\n Rollbar.rateLimiter.configureGlobal(options);\n return this;\n};\n\nRollbar.prototype.configure = function (options, payloadData) {\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.merge(oldOptions, options, payload);\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is configured\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier && this.notifier.configure(this.options);\n this.telemeter && this.telemeter.configure(this.options);\n setStackTraceLimit(options);\n this.global(this.options);\n\n if (validateTracer(options.tracer)) {\n this.tracer = options.tracer;\n }\n\n return this;\n};\n\nRollbar.prototype.log = function (item) {\n var level = this._defaultLogLevel();\n return this._log(level, item);\n};\n\nRollbar.prototype.debug = function (item) {\n this._log('debug', item);\n};\n\nRollbar.prototype.info = function (item) {\n this._log('info', item);\n};\n\nRollbar.prototype.warn = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.warning = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.error = function (item) {\n this._log('error', item);\n};\n\nRollbar.prototype.critical = function (item) {\n this._log('critical', item);\n};\n\nRollbar.prototype.wait = function (callback) {\n this.queue.wait(callback);\n};\n\nRollbar.prototype.captureEvent = function (type, metadata, level) {\n return this.telemeter && this.telemeter.captureEvent(type, metadata, level);\n};\n\nRollbar.prototype.captureDomContentLoaded = function (ts) {\n return this.telemeter && this.telemeter.captureDomContentLoaded(ts);\n};\n\nRollbar.prototype.captureLoad = function (ts) {\n return this.telemeter && this.telemeter.captureLoad(ts);\n};\n\nRollbar.prototype.buildJsonPayload = function (item) {\n return this.api.buildJsonPayload(item);\n};\n\nRollbar.prototype.sendJsonPayload = function (jsonPayload) {\n this.api.postJsonPayload(jsonPayload);\n};\n\n/* Internal */\n\nRollbar.prototype._log = function (defaultLevel, item) {\n var callback;\n if (item.callback) {\n callback = item.callback;\n delete item.callback;\n }\n if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) {\n if (callback) {\n var error = new Error('ignored identical item');\n error.item = item;\n callback(error);\n }\n return;\n }\n try {\n item.level = item.level || defaultLevel;\n\n this._addTracingAttributes(item);\n\n // Legacy OpenTracing support\n this._addTracingInfo(item);\n\n const telemeter = this.telemeter;\n if (telemeter) {\n telemeter._captureRollbarItem(item);\n item.telemetryEvents = telemeter.copyEvents() || [];\n }\n\n this.notifier.log(item, callback);\n } catch (e) {\n if (callback) {\n callback(e);\n }\n this.logger.error(e);\n }\n};\n\nRollbar.prototype._addTracingAttributes = function (item) {\n const span = this.tracing?.getSpan();\n\n const attributes = [\n { key: 'session_id', value: this.tracing?.sessionId },\n { key: 'span_id', value: span?.spanId },\n { key: 'trace_id', value: span?.traceId },\n ];\n _.addItemAttributes(item.data, attributes);\n\n span?.addEvent('rollbar.occurrence', [\n { key: 'rollbar.occurrence.uuid', value: item.uuid },\n ]);\n};\n\nRollbar.prototype._defaultLogLevel = function () {\n return this.options.logLevel || 'debug';\n};\n\nRollbar.prototype._sameAsLastError = function (item) {\n if (!item._isUncaught) {\n return false;\n }\n var itemHash = generateItemHash(item);\n if (this.lastErrorHash === itemHash) {\n return true;\n }\n this.lastError = item.err;\n this.lastErrorHash = itemHash;\n return false;\n};\n\nRollbar.prototype._addTracingInfo = function (item) {\n // Tracer validation occurs in the constructor\n // or in the Rollbar.prototype.configure methods\n if (this.tracer) {\n // add rollbar occurrence uuid to span\n var span = this.tracer.scope().active();\n\n if (validateSpan(span)) {\n span.setTag('rollbar.error_uuid', item.uuid);\n span.setTag('rollbar.has_error', true);\n span.setTag('error', true);\n span.setTag(\n 'rollbar.item_url',\n `https://rollbar.com/item/uuid/?uuid=${item.uuid}`,\n );\n span.setTag(\n 'rollbar.occurrence_url',\n `https://rollbar.com/occurrence/uuid/?uuid=${item.uuid}`,\n );\n\n // add span ID & trace ID to occurrence\n var opentracingSpanId = span.context().toSpanId();\n var opentracingTraceId = span.context().toTraceId();\n\n if (item.custom) {\n item.custom.opentracing_span_id = opentracingSpanId;\n item.custom.opentracing_trace_id = opentracingTraceId;\n } else {\n item.custom = {\n opentracing_span_id: opentracingSpanId,\n opentracing_trace_id: opentracingTraceId,\n };\n }\n }\n }\n};\n\nfunction generateItemHash(item) {\n var message = item.message || '';\n var stack = (item.err || {}).stack || String(item.err);\n return message + '::' + stack;\n}\n\n// Node.js, Chrome, Safari, and some other browsers support this property\n// which globally sets the number of stack frames returned in an Error object.\n// If a browser can't use it, no harm done.\nfunction setStackTraceLimit(options) {\n if (options.stackTraceLimit) {\n Error.stackTraceLimit = options.stackTraceLimit;\n }\n}\n\n/**\n * Validate the Tracer object provided to the Client\n * is valid for our Opentracing use case.\n * @param {opentracer.Tracer} tracer\n */\nfunction validateTracer(tracer) {\n if (!tracer) {\n return false;\n }\n\n if (!tracer.scope || typeof tracer.scope !== 'function') {\n return false;\n }\n\n var scope = tracer.scope();\n\n if (!scope || !scope.active || typeof scope.active !== 'function') {\n return false;\n }\n\n return true;\n}\n\n/**\n * Validate the Span object provided\n * @param {opentracer.Span} span\n */\nfunction validateSpan(span) {\n if (!span || !span.context || typeof span.context !== 'function') {\n return false;\n }\n\n var spanContext = span.context();\n\n if (\n !spanContext ||\n !spanContext.toSpanId ||\n !spanContext.toTraceId ||\n typeof spanContext.toSpanId !== 'function' ||\n typeof spanContext.toTraceId !== 'function'\n ) {\n return false;\n }\n\n return true;\n}\n\nexport default Rollbar;\n","import * as _ from './utility.js';\n\nfunction buildPayload(data) {\n if (!_.isType(data.context, 'string')) {\n var contextResult = _.stringify(data.context);\n if (contextResult.error) {\n data.context = \"Error: could not serialize 'context'\";\n } else {\n data.context = contextResult.value || '';\n }\n if (data.context.length > 255) {\n data.context = data.context.substr(0, 255);\n }\n }\n return {\n data: data,\n };\n}\n\nfunction getTransportFromOptions(options, defaults, url) {\n var hostname = defaults.hostname;\n var protocol = defaults.protocol;\n var port = defaults.port;\n var path = defaults.path;\n var search = defaults.search;\n var timeout = options.timeout;\n var transport = detectTransport(options);\n\n var proxy = options.proxy;\n if (options.endpoint) {\n var opts = url.parse(options.endpoint);\n hostname = opts.hostname;\n protocol = opts.protocol;\n port = opts.port;\n path = opts.pathname;\n search = opts.search;\n }\n return {\n timeout: timeout,\n hostname: hostname,\n protocol: protocol,\n port: port,\n path: path,\n search: search,\n proxy: proxy,\n transport: transport,\n };\n}\n\nfunction detectTransport(options) {\n var gWindow =\n (typeof window != 'undefined' && window) ||\n (typeof self != 'undefined' && self);\n var transport = options.defaultTransport || 'xhr';\n if (typeof gWindow.fetch === 'undefined') transport = 'xhr';\n if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch';\n return transport;\n}\n\nfunction transportOptions(transport, method) {\n var protocol = transport.protocol || 'https:';\n var port =\n transport.port ||\n (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined);\n var hostname = transport.hostname;\n var path = transport.path;\n var timeout = transport.timeout;\n var transportAPI = transport.transport;\n if (transport.search) {\n path = path + transport.search;\n }\n if (transport.proxy) {\n path = protocol + '//' + hostname + path;\n hostname = transport.proxy.host || transport.proxy.hostname;\n port = transport.proxy.port;\n protocol = transport.proxy.protocol || protocol;\n }\n return {\n timeout: timeout,\n protocol: protocol,\n hostname: hostname,\n path: path,\n port: port,\n method: method,\n transport: transportAPI,\n };\n}\n\nfunction appendPathToPath(base, path) {\n var baseTrailingSlash = /\\/$/.test(base);\n var pathBeginningSlash = /^\\//.test(path);\n\n if (baseTrailingSlash && pathBeginningSlash) {\n path = path.substring(1);\n } else if (!baseTrailingSlash && !pathBeginningSlash) {\n path = '/' + path;\n }\n\n return base + path;\n}\n\nexport {\n buildPayload,\n getTransportFromOptions,\n transportOptions,\n appendPathToPath,\n};\n","import * as _ from './utility.js';\nimport * as helpers from './apiUtility.js';\n\nvar defaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/item/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\nvar OTLPDefaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/session/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\n/**\n * Api is an object that encapsulates methods of communicating with\n * the Rollbar API. It is a standard interface with some parts implemented\n * differently for server or browser contexts. It is an object that should\n * be instantiated when used so it can contain non-global options that may\n * be different for another instance of RollbarApi.\n *\n * @param options {\n * accessToken: the accessToken to use for posting items to rollbar\n * endpoint: an alternative endpoint to send errors to\n * must be a valid, fully qualified URL.\n * The default is: https://api.rollbar.com/api/1/item\n * proxy: if you wish to proxy requests provide an object\n * with the following keys:\n * host or hostname (required): foo.example.com\n * port (optional): 123\n * protocol (optional): https\n * }\n */\nfunction Api(options, transport, urllib, truncation) {\n this.options = options;\n this.transport = transport;\n this.url = urllib;\n this.truncation = truncation;\n this.accessToken = options.accessToken;\n this.transportOptions = _getTransport(options, urllib);\n this.OTLPTransportOptions = _getOTLPTransport(options, urllib);\n}\n\n/**\n * Wraps transport.post in a Promise to support async/await\n *\n * @param {Object} options - Options for the API request\n * @param {string} options.accessToken - The access token for authentication\n * @param {Object} options.transportOptions - Options for the transport\n * @param {Object} options.payload - The data payload to send\n * @returns {Promise} A promise that resolves with the response or rejects with an error\n * @private\n */\nApi.prototype._postPromise = function ({\n accessToken,\n options,\n payload,\n headers,\n}) {\n const self = this;\n return new Promise((resolve, reject) => {\n self.transport.post({\n accessToken,\n options,\n payload,\n headers,\n callback: (err, resp) => (err ? reject(err) : resolve(resp)),\n });\n });\n};\n\n/**\n *\n * @param data\n * @param callback\n */\nApi.prototype.postItem = function (data, callback) {\n const options = helpers.transportOptions(this.transportOptions, 'POST');\n const payload = helpers.buildPayload(data);\n const self = this;\n\n // ensure the network request is scheduled after the current tick.\n setTimeout(function () {\n self.transport.post({\n accessToken: self.accessToken,\n options,\n payload,\n callback,\n });\n }, 0);\n};\n\n/**\n * Posts spans to the Rollbar API using the session endpoint\n *\n * @param {Array} payload - The spans to send\n * @returns {Promise} A promise that resolves with the API response\n */\nApi.prototype.postSpans = async function (payload, headers = {}) {\n const options = helpers.transportOptions(this.OTLPTransportOptions, 'POST');\n\n return await this._postPromise({\n accessToken: this.accessToken,\n options,\n payload,\n headers,\n });\n};\n\n/**\n *\n * @param data\n * @param callback\n */\nApi.prototype.buildJsonPayload = function (data, callback) {\n var payload = helpers.buildPayload(data);\n\n var stringifyResult;\n if (this.truncation) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = _.stringify(payload);\n }\n\n if (stringifyResult.error) {\n if (callback) {\n callback(stringifyResult.error);\n }\n return null;\n }\n\n return stringifyResult.value;\n};\n\n/**\n *\n * @param jsonPayload\n * @param callback\n */\nApi.prototype.postJsonPayload = function (jsonPayload, callback) {\n var transportOptions = helpers.transportOptions(\n this.transportOptions,\n 'POST',\n );\n this.transport.postJsonPayload(\n this.accessToken,\n transportOptions,\n jsonPayload,\n callback,\n );\n};\n\nApi.prototype.configure = function (options) {\n var oldOptions = this.oldOptions;\n this.options = _.merge(oldOptions, options);\n this.transportOptions = _getTransport(this.options, this.url);\n this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url);\n if (this.options.accessToken !== undefined) {\n this.accessToken = this.options.accessToken;\n }\n return this;\n};\n\nfunction _getTransport(options, url) {\n return helpers.getTransportFromOptions(options, defaultOptions, url);\n}\n\nfunction _getOTLPTransport(options, url) {\n options = { ...options, endpoint: options.tracing?.endpoint };\n return helpers.getTransportFromOptions(options, OTLPDefaultOptions, url);\n}\n\nexport default Api;\n","let log = () => {};\n\nconst levels = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n disable: 4,\n};\n\nconst logger = {\n error: (...args) => log('error', args),\n warn: (...args) => log('warn', args),\n info: (...args) => log('info', args),\n debug: (...args) => log('debug', args),\n log: (...args) => log('info', args),\n init: ({ logLevel }) => {\n log = function (level, args) {\n if (levels[level] < levels[logLevel]) return;\n\n args.unshift('Rollbar:');\n\n console[level].apply(console, args);\n };\n },\n};\n\nexport default logger;\n","function captureUncaughtExceptions(window, handler, shim) {\n if (!window) {\n return;\n }\n var oldOnError;\n\n if (typeof handler._rollbarOldOnError === 'function') {\n oldOnError = handler._rollbarOldOnError;\n } else if (window.onerror) {\n oldOnError = window.onerror;\n while (oldOnError._rollbarOldOnError) {\n oldOnError = oldOnError._rollbarOldOnError;\n }\n handler._rollbarOldOnError = oldOnError;\n }\n\n handler.handleAnonymousErrors();\n\n var fn = function () {\n var args = Array.prototype.slice.call(arguments, 0);\n _rollbarWindowOnError(window, handler, oldOnError, args);\n };\n if (shim) {\n fn._rollbarOldOnError = oldOnError;\n }\n window.onerror = fn;\n}\n\nfunction _rollbarWindowOnError(window, r, old, args) {\n if (window._rollbarWrappedError) {\n if (!args[4]) {\n args[4] = window._rollbarWrappedError;\n }\n if (!args[5]) {\n args[5] = window._rollbarWrappedError._rollbarContext;\n }\n window._rollbarWrappedError = null;\n }\n\n var ret = r.handleUncaughtException.apply(r, args);\n\n if (old) {\n old.apply(window, args);\n }\n\n // Let other chained onerror handlers above run before setting this.\n // If an error is thrown and caught within a chained onerror handler,\n // Error.prepareStackTrace() will see that one before the one we want.\n if (ret === 'anonymous') {\n r.anonymousErrorsPending += 1; // See Rollbar.prototype.handleAnonymousErrors()\n }\n}\n\nfunction captureUnhandledRejections(window, handler, shim) {\n if (!window) {\n return;\n }\n\n if (\n typeof window._rollbarURH === 'function' &&\n window._rollbarURH.belongsToShim\n ) {\n window.removeEventListener('unhandledrejection', window._rollbarURH);\n }\n\n var rejectionHandler = function (evt) {\n var reason, promise, detail;\n try {\n reason = evt.reason;\n } catch (e) {\n reason = undefined;\n }\n try {\n promise = evt.promise;\n } catch (e) {\n promise = '[unhandledrejection] error getting `promise` from event';\n }\n try {\n detail = evt.detail;\n if (!reason && detail) {\n reason = detail.reason;\n promise = detail.promise;\n }\n } catch (e) {\n // Ignore\n }\n if (!reason) {\n reason = '[unhandledrejection] error getting `reason` from event';\n }\n\n if (handler && handler.handleUnhandledRejection) {\n handler.handleUnhandledRejection(reason, promise);\n }\n };\n rejectionHandler.belongsToShim = shim;\n window._rollbarURH = rejectionHandler;\n window.addEventListener('unhandledrejection', rejectionHandler);\n}\n\nexport { captureUncaughtExceptions, captureUnhandledRejections };\n","import logger from '../../logger.js';\nimport * as _ from '../../utility.js';\n\nfunction makeFetchRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n timeout,\n}) {\n var controller;\n var timeoutId;\n\n if (_.isFiniteNumber(timeout)) {\n controller = new AbortController();\n timeoutId = setTimeout(function () {\n controller.abort();\n }, timeout);\n }\n\n headers = {\n 'Content-Type': 'application/json',\n 'X-Rollbar-Access-Token': accessToken,\n signal: controller && controller.signal,\n ...headers,\n };\n\n fetch(url, {\n method,\n headers,\n body: payload,\n })\n .then(function (response) {\n if (timeoutId) clearTimeout(timeoutId);\n const respHeaders = response.headers;\n\n const isItemRoute = url.endsWith('/api/1/item/');\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': respHeaders.get('Rollbar-Replay-Enabled'),\n 'Rollbar-Replay-RateLimit-Remaining': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n\n const json = response.json();\n callback(null, json, headers);\n })\n .catch(function (error) {\n logger.error(error.message);\n callback(error);\n });\n}\n\nexport default makeFetchRequest;\n","/*global XDomainRequest*/\n\nimport * as _ from '../../utility.js';\nimport logger from '../../logger.js';\n\nfunction makeXhrRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n requestFactory,\n timeout,\n}) {\n var request;\n if (requestFactory) {\n request = requestFactory();\n } else {\n request = _createXMLHTTPObject();\n }\n if (!request) {\n // Give up, no way to send requests\n return callback(new Error('No way to send a request'));\n }\n try {\n try {\n var onreadystatechange = function () {\n try {\n if (onreadystatechange && request.readyState === 4) {\n onreadystatechange = undefined;\n\n var parseResponse = _.jsonParse(request.responseText);\n if (_isSuccess(request)) {\n const isItemRoute = url.endsWith('/api/1/item/');\n\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': request.getResponseHeader(\n 'Rollbar-Replay-Enabled',\n ),\n 'Rollbar-Replay-RateLimit-Remaining':\n request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n callback(parseResponse.error, parseResponse.value, headers);\n return;\n } else if (_isNormalFailure(request)) {\n if (request.status === 403) {\n // likely caused by using a server access token\n var message =\n parseResponse.value && parseResponse.value.message;\n logger.error(message);\n }\n // return valid http status codes\n callback(new Error(String(request.status)));\n } else {\n // IE will return a status 12000+ on some sort of connection failure,\n // so we return a blank error\n // http://msdn.microsoft.com/en-us/library/aa383770%28VS.85%29.aspx\n var msg =\n 'XHR response had no status code (likely connection failure)';\n callback(_newRetriableError(msg));\n }\n }\n } catch (ex) {\n //jquery source mentions firefox may error out while accessing the\n //request members if there is a network error\n //https://github.com/jquery/jquery/blob/a938d7b1282fc0e5c52502c225ae8f0cef219f0a/src/ajax/xhr.js#L111\n var exc;\n if (ex && ex.stack) {\n exc = ex;\n } else {\n exc = new Error(ex);\n }\n callback(exc);\n }\n };\n\n request.open(method, url, true);\n if (request.setRequestHeader) {\n request.setRequestHeader('Content-Type', 'application/json');\n request.setRequestHeader('X-Rollbar-Access-Token', accessToken);\n for (const [h, v] of Object.entries(headers ?? {})) {\n request.setRequestHeader(h, v);\n }\n }\n\n if (_.isFiniteNumber(timeout)) {\n request.timeout = timeout;\n }\n\n request.onreadystatechange = onreadystatechange;\n request.send(payload);\n } catch (e1) {\n // Sending using the normal xmlhttprequest object didn't work, try XDomainRequest\n if (typeof XDomainRequest !== 'undefined') {\n // Assume we are in a really old browser which has a bunch of limitations:\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n\n // Extreme paranoia: if we have XDomainRequest then we have a window, but just in case\n if (!window || !window.location) {\n return callback(\n new Error(\n 'No window available during request, unknown environment',\n ),\n );\n }\n\n // If the current page is http, try and send over http\n if (\n window.location.href.substring(0, 5) === 'http:' &&\n url.substring(0, 5) === 'https'\n ) {\n url = 'http' + url.substring(5);\n }\n\n var xdomainrequest = new XDomainRequest();\n xdomainrequest.onprogress = function () {};\n xdomainrequest.ontimeout = function () {\n var msg = 'Request timed out';\n var code = 'ETIMEDOUT';\n callback(_newRetriableError(msg, code));\n };\n xdomainrequest.onerror = function () {\n callback(new Error('Error during request'));\n };\n xdomainrequest.onload = function () {\n var parseResponse = _.jsonParse(xdomainrequest.responseText);\n callback(parseResponse.error, parseResponse.value);\n };\n xdomainrequest.open(method, url, true);\n xdomainrequest.send(payload);\n } else {\n callback(new Error('Cannot find a method to transport a request'));\n }\n }\n } catch (e2) {\n callback(e2);\n }\n}\n\nfunction _createXMLHTTPObject() {\n /* global ActiveXObject:false */\n\n var factories = [\n function () {\n return new XMLHttpRequest();\n },\n function () {\n return new ActiveXObject('Msxml2.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Msxml3.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Microsoft.XMLHTTP');\n },\n ];\n var xmlhttp;\n var i;\n var numFactories = factories.length;\n for (i = 0; i < numFactories; i++) {\n try {\n xmlhttp = factories[i]();\n break;\n } catch (e) {\n // pass\n }\n }\n return xmlhttp;\n}\n\nfunction _isSuccess(r) {\n return r && r.status && r.status === 200;\n}\n\nfunction _isNormalFailure(r) {\n return r && _.isType(r.status, 'number') && r.status >= 400 && r.status < 600;\n}\n\nfunction _newRetriableError(message, code) {\n var err = new Error(message);\n err.code = code || 'ENOTFOUND';\n return err;\n}\n\nexport default makeXhrRequest;\n","import * as _ from '../utility.js';\nimport makeFetchRequest from './transport/fetch.js';\nimport makeXhrRequest from './transport/xhr.js';\n\n/*\n * accessToken may be embedded in payload but that should not\n * be assumed\n *\n * options: {\n * hostname\n * protocol\n * path\n * port\n * method\n * transport ('xhr' | 'fetch')\n * }\n *\n * params is an object containing key/value pairs. These\n * will be appended to the path as 'key=value&key=value'\n *\n * payload is an unserialized object\n */\nfunction Transport(truncation) {\n this.truncation = truncation;\n}\n\nTransport.prototype.get = function (\n accessToken,\n options,\n params,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n _.addParamsAndAccessTokenToPath(accessToken, options, params);\n\n var method = 'GET';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.post = function ({\n accessToken,\n options,\n payload,\n headers,\n callback,\n requestFactory,\n}) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n\n if (!payload) {\n return callback(new Error('Cannot send empty request'));\n }\n\n var stringifyResult;\n // Check payload.body to ensure only items are truncated.\n if (this.truncation && payload.body) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = _.stringify(payload);\n }\n if (stringifyResult.error) {\n return callback(stringifyResult.error);\n }\n\n var payload = stringifyResult.value;\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.postJsonPayload = function (\n accessToken,\n options,\n payload,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\n// Wraps `_makeRequest` if zone.js is being used, ensuring that Rollbar\n// API calls are not intercepted by any child forked zones.\n// This is equivalent to `NgZone.runOutsideAngular` in Angular.\nTransport.prototype._makeZoneRequest = function () {\n var gWindow =\n (typeof window != 'undefined' && window) ||\n (typeof self != 'undefined' && self);\n // Whenever zone.js is loaded and `Zone` is exposed globally, access\n // the root zone to ensure that requests are always made within it.\n // This approach is framework-agnostic, regardless of which\n // framework zone.js is used with.\n var rootZone = gWindow && gWindow.Zone && gWindow.Zone.root;\n var args = Array.prototype.slice.call(arguments);\n\n if (rootZone) {\n var self = this;\n rootZone.run(function () {\n self._makeRequest.apply(undefined, args);\n });\n } else {\n this._makeRequest.apply(undefined, args);\n }\n};\n\nTransport.prototype._makeRequest = function (params) {\n const { payload, callback, transport } = params;\n if (typeof RollbarProxy !== 'undefined') {\n return _proxyRequest(payload, callback);\n }\n\n if (transport === 'fetch') {\n makeFetchRequest(params);\n } else {\n makeXhrRequest(params);\n }\n};\n\n/* global RollbarProxy */\nfunction _proxyRequest(json, callback) {\n var rollbarProxy = new RollbarProxy();\n rollbarProxy.sendJsonPayload(\n json,\n function (_msg) {\n /* do nothing */\n },\n function (err) {\n callback(new Error(err));\n },\n );\n}\n\nexport default Transport;\n","// See https://nodejs.org/docs/latest/api/url.html\nfunction parse(url) {\n var result = {\n protocol: null,\n auth: null,\n host: null,\n path: null,\n hash: null,\n href: url,\n hostname: null,\n port: null,\n pathname: null,\n search: null,\n query: null,\n };\n\n var i, last;\n i = url.indexOf('//');\n if (i !== -1) {\n result.protocol = url.substring(0, i);\n last = i + 2;\n } else {\n last = 0;\n }\n\n i = url.indexOf('@', last);\n if (i !== -1) {\n result.auth = url.substring(last, i);\n last = i + 1;\n }\n\n i = url.indexOf('/', last);\n if (i === -1) {\n i = url.indexOf('?', last);\n if (i === -1) {\n i = url.indexOf('#', last);\n if (i === -1) {\n result.host = url.substring(last);\n } else {\n result.host = url.substring(last, i);\n result.hash = url.substring(i);\n }\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n return result;\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n\n i = url.indexOf('#', last);\n if (i === -1) {\n result.path = url.substring(last);\n } else {\n result.path = url.substring(last, i);\n result.hash = url.substring(i);\n }\n\n if (result.path) {\n var pathParts = result.path.split('?');\n result.pathname = pathParts[0];\n result.query = pathParts[1];\n result.search = result.query ? '?' + result.query : null;\n }\n return result;\n}\n\nexport { parse };\n","const FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\nfunction parse(error, options) {\n if (typeof error.stacktrace !== \"undefined\" || typeof error[\"opera#sourceloc\"] !== \"undefined\")\n return parseOpera(error, options);\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIE(error, options);\n else if (error.stack)\n return parseFFOrSafari(error, options);\n else if (options?.allowEmpty)\n return [];\n else\n throw new Error(\"Cannot parse given Error object\");\n}\nfunction parseStack(stackString, options) {\n if (stackString.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIeString(stackString, options);\n else\n return parseFFOrSafariString(stackString, options);\n}\nfunction extractLocation(urlLike) {\n if (!urlLike.includes(\":\"))\n return [urlLike, undefined, undefined];\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n const parts = regExp.exec(urlLike.replace(/[()]/g, \"\"));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n}\nfunction applySlice(lines, options) {\n if (options && options.slice != null) {\n if (Array.isArray(options.slice))\n return lines.slice(options.slice[0], options.slice[1]);\n return lines.slice(0, options.slice);\n }\n return lines;\n}\nfunction parseV8OrIE(error, options) {\n return parseV8OrIeString(error.stack, options);\n}\nfunction parseV8OrIeString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\"(eval \")) {\n line = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(,.*$)/g, \"\");\n }\n let sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\").replace(/^.*?\\s+/, \"\");\n const location = sanitizedLine.match(/ (\\(.+\\)$)/);\n sanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n const locationParts = extractLocation(location ? location[1] : sanitizedLine);\n const functionName = location && sanitizedLine || undefined;\n const fileName = [\"eval\", \"\"].includes(locationParts[0]) ? undefined : locationParts[0];\n return {\n function: functionName,\n file: fileName,\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\nfunction parseFFOrSafari(error, options) {\n return parseFFOrSafariString(error.stack, options);\n}\nfunction parseFFOrSafariString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\" > eval\"))\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, \":$1\");\n if (!line.includes(\"@\") && !line.includes(\":\")) {\n return {\n function: line\n };\n } else {\n const functionNameRegex = /(([^\\n\\r\"\\u2028\\u2029]*\".[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*(?:@[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*)*(?:[\\n\\r\\u2028\\u2029][^@]*)?)?[^@]*)@/;\n const matches = line.match(functionNameRegex);\n const functionName = matches && matches[1] ? matches[1] : undefined;\n const locationParts = extractLocation(line.replace(functionNameRegex, \"\"));\n return {\n function: functionName,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n }\n });\n}\nfunction parseOpera(e, options) {\n if (!e.stacktrace || e.message.includes(\"\\n\") && e.message.split(\"\\n\").length > e.stacktrace.split(\"\\n\").length)\n return parseOpera9(e);\n else if (!e.stack)\n return parseOpera10(e);\n else\n return parseOpera11(e, options);\n}\nfunction parseOpera9(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n const lines = e.message.split(\"\\n\");\n const result = [];\n for (let i = 2, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n file: match[2],\n line: +match[1],\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera10(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n const lines = e.stacktrace.split(\"\\n\");\n const result = [];\n for (let i = 0, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n function: match[3] || undefined,\n file: match[2],\n line: match[1] ? +match[1] : undefined,\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera11(error, options) {\n const filtered = applySlice(\n // @ts-expect-error missing stack property\n error.stack.split(\"\\n\").filter((line) => {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }),\n options\n );\n return filtered.map((line) => {\n const tokens = line.split(\"@\");\n const locationParts = extractLocation(tokens.pop());\n const functionCall = tokens.shift() || \"\";\n const functionName = functionCall.replace(//, \"$2\").replace(/\\([^)]*\\)/g, \"\") || undefined;\n let argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/))\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, \"$1\");\n const args = argsRaw === undefined || argsRaw === \"[arguments not available]\" ? undefined : argsRaw.split(\",\");\n return {\n function: functionName,\n args,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\n\nexport { extractLocation, parse, parseFFOrSafari, parseFFOrSafariString, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseStack, parseV8OrIE, parseV8OrIeString };\n","import { parse as parse$1, parseV8OrIE as parseV8OrIE$1, parseFFOrSafari as parseFFOrSafari$1, parseOpera as parseOpera$1, parseOpera9 as parseOpera9$1, parseOpera10 as parseOpera10$1, parseOpera11 as parseOpera11$1 } from './lite.mjs';\nexport { extractLocation } from './lite.mjs';\n\nfunction stackframesLiteToStackframes(liteStackframes) {\n return liteStackframes.map((liteStackframe) => {\n return {\n functionName: liteStackframe.function,\n args: liteStackframe.args,\n fileName: liteStackframe.file,\n lineNumber: liteStackframe.line,\n columnNumber: liteStackframe.col,\n source: liteStackframe.raw\n };\n });\n}\nfunction parse(error, options) {\n return stackframesLiteToStackframes(parse$1(error, options));\n}\nfunction parseV8OrIE(error) {\n return stackframesLiteToStackframes(parseV8OrIE$1(error));\n}\nfunction parseFFOrSafari(error) {\n return stackframesLiteToStackframes(parseFFOrSafari$1(error));\n}\nfunction parseOpera(e) {\n return stackframesLiteToStackframes(parseOpera$1(e));\n}\nfunction parseOpera9(e) {\n return stackframesLiteToStackframes(parseOpera9$1(e));\n}\nfunction parseOpera10(e) {\n return stackframesLiteToStackframes(parseOpera10$1(e));\n}\nfunction parseOpera11(error) {\n return stackframesLiteToStackframes(parseOpera11$1(error));\n}\n\nexport { parse, parseFFOrSafari, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseV8OrIE };\n","import { parse as parseErrorStack } from 'error-stack-parser-es';\n\nvar UNKNOWN_FUNCTION = '?';\nvar ERR_CLASS_REGEXP = new RegExp(\n '^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): ',\n);\n\nfunction guessFunctionName() {\n return UNKNOWN_FUNCTION;\n}\n\nfunction gatherContext() {\n return null;\n}\n\nfunction Frame(stackFrame) {\n var data = {};\n\n data._stackFrame = stackFrame;\n\n data.url = stackFrame.fileName;\n data.line = stackFrame.lineNumber;\n data.func = stackFrame.functionName;\n data.column = stackFrame.columnNumber;\n data.args = stackFrame.args;\n\n data.context = gatherContext();\n\n return data;\n}\n\nfunction Stack(exception, skip) {\n function getStack() {\n var parserStack = [];\n\n skip = skip || 0;\n\n try {\n parserStack = parseErrorStack(exception);\n } catch (e) {\n parserStack = [];\n }\n\n var stack = [];\n\n for (var i = skip; i < parserStack.length; i++) {\n stack.push(new Frame(parserStack[i]));\n }\n\n return stack;\n }\n\n return {\n stack: getStack(),\n message: exception.message,\n name: _mostSpecificErrorName(exception),\n rawStack: exception.stack,\n rawException: exception,\n };\n}\n\nfunction parse(e, skip) {\n var err = e;\n\n if (err.nested || err.cause) {\n var traceChain = [];\n while (err) {\n traceChain.push(new Stack(err, skip));\n err = err.nested || err.cause;\n\n skip = 0; // Only apply skip value to primary error\n }\n\n // Return primary error with full trace chain attached.\n traceChain[0].traceChain = traceChain;\n return traceChain[0];\n } else {\n return new Stack(err, skip);\n }\n}\n\nfunction guessErrorClass(errMsg) {\n if (!errMsg || !errMsg.match) {\n return ['Unknown error. There was no error message to display.', ''];\n }\n var errClassMatch = errMsg.match(ERR_CLASS_REGEXP);\n var errClass = '(unknown)';\n\n if (errClassMatch) {\n errClass = errClassMatch[errClassMatch.length - 1];\n errMsg = errMsg.replace(\n (errClassMatch[errClassMatch.length - 2] || '') + errClass + ':',\n '',\n );\n errMsg = errMsg.replace(/(^[\\s]+|[\\s]+$)/g, '');\n }\n return [errClass, errMsg];\n}\n\n// * Prefers any value over an empty string\n// * Prefers any value over 'Error' where possible\n// * Prefers name over constructor.name when both are more specific than 'Error'\nfunction _mostSpecificErrorName(error) {\n var name = error.name && error.name.length && error.name;\n var constructorName =\n error.constructor.name &&\n error.constructor.name.length &&\n error.constructor.name;\n\n if (!name || !constructorName) {\n return name || constructorName;\n }\n\n if (name === 'Error') {\n return constructorName;\n }\n return name;\n}\n\nexport default {\n guessFunctionName,\n guessErrorClass,\n gatherContext,\n parse,\n Stack,\n Frame,\n};\n","import * as _ from '../utility.js';\nimport errorParser from '../errorParser.js';\nimport logger from '../logger.js';\n\nfunction handleDomException(item, options, callback) {\n if (item.err && errorParser.Stack(item.err).name === 'DOMException') {\n var originalError = new Error();\n originalError.name = item.err.name;\n originalError.message = item.err.message;\n originalError.stack = item.err.stack;\n originalError.nested = item.err;\n item.err = originalError;\n }\n callback(null, item);\n}\n\nfunction handleItemWithError(item, options, callback) {\n item.data = item.data || {};\n if (item.err) {\n try {\n item.stackInfo =\n item.err._savedStackTrace ||\n errorParser.parse(item.err, item.skipFrames);\n\n if (options.addErrorContext) {\n addErrorContext(item);\n }\n } catch (e) {\n logger.error('Error while parsing the error object.', e);\n try {\n item.message =\n item.err.message ||\n item.err.description ||\n item.message ||\n String(item.err);\n } catch (e2) {\n item.message = String(item.err) || String(e2);\n }\n delete item.err;\n }\n }\n callback(null, item);\n}\n\nfunction addErrorContext(item) {\n var chain = [];\n var err = item.err;\n\n chain.push(err);\n\n while (err.nested || err.cause) {\n err = err.nested || err.cause;\n chain.push(err);\n }\n\n _.addErrorContext(item, chain);\n}\n\nfunction ensureItemHasSomethingToSay(item, options, callback) {\n if (!item.message && !item.stackInfo && !item.custom) {\n callback(new Error('No message, stack info, or custom data'), null);\n }\n callback(null, item);\n}\n\nfunction addBaseInfo(item, options, callback) {\n var environment =\n (options.payload && options.payload.environment) || options.environment;\n item.data = _.merge(item.data, {\n environment: environment,\n level: item.level,\n endpoint: options.endpoint,\n platform: 'browser',\n framework: 'browser-js',\n language: 'javascript',\n server: {},\n uuid: item.uuid,\n notifier: {\n name: 'rollbar-browser-js',\n version: options.version,\n },\n custom: item.custom,\n });\n callback(null, item);\n}\n\nfunction addRequestInfo(window) {\n return function (item, options, callback) {\n var requestInfo = {};\n\n if (window && window.location) {\n requestInfo.url = window.location.href;\n requestInfo.query_string = window.location.search;\n }\n\n var remoteString = '$remote_ip';\n if (!options.captureIp) {\n remoteString = null;\n } else if (options.captureIp !== true) {\n remoteString += '_anonymize';\n }\n if (remoteString) requestInfo.user_ip = remoteString;\n\n if (Object.keys(requestInfo).length > 0) {\n _.set(item, 'data.request', requestInfo);\n }\n\n callback(null, item);\n };\n}\n\nfunction addClientInfo(window) {\n return function (item, options, callback) {\n if (!window) {\n return callback(null, item);\n }\n var nav = window.navigator || {};\n var scr = window.screen || {};\n _.set(item, 'data.client', {\n runtime_ms: item.timestamp - window._rollbarStartTime,\n timestamp: Math.round(item.timestamp / 1000),\n javascript: {\n browser: nav.userAgent,\n language: nav.language,\n cookie_enabled: nav.cookieEnabled,\n screen: {\n width: scr.width,\n height: scr.height,\n },\n },\n });\n callback(null, item);\n };\n}\n\nfunction addPluginInfo(window) {\n return function (item, options, callback) {\n if (!window || !window.navigator) {\n return callback(null, item);\n }\n var plugins = [];\n var navPlugins = window.navigator.plugins || [];\n var cur;\n for (var i = 0, l = navPlugins.length; i < l; ++i) {\n cur = navPlugins[i];\n plugins.push({ name: cur.name, description: cur.description });\n }\n _.set(item, 'data.client.javascript.plugins', plugins);\n callback(null, item);\n };\n}\n\nfunction addBody(item, options, callback) {\n if (item.stackInfo) {\n if (item.stackInfo.traceChain) {\n addBodyTraceChain(item, options, callback);\n } else {\n addBodyTrace(item, options, callback);\n }\n } else {\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction addBodyMessage(item, options, callback) {\n var message = item.message;\n var custom = item.custom;\n\n if (!message) {\n message = 'Item sent with null or missing arguments.';\n }\n var result = {\n body: message,\n };\n\n if (custom) {\n result.extra = _.merge(custom);\n }\n\n _.set(item, 'data.body', { message: result });\n callback(null, item);\n}\n\nfunction stackFromItem(item) {\n // Transform a TraceKit stackInfo object into a Rollbar trace\n var stack = item.stackInfo.stack;\n if (\n stack &&\n stack.length === 0 &&\n item._unhandledStackInfo &&\n item._unhandledStackInfo.stack\n ) {\n stack = item._unhandledStackInfo.stack;\n }\n return stack;\n}\n\nfunction addBodyTraceChain(item, options, callback) {\n var traceChain = item.stackInfo.traceChain;\n var traces = [];\n\n var traceChainLength = traceChain.length;\n for (var i = 0; i < traceChainLength; i++) {\n var trace = buildTrace(item, traceChain[i], options);\n traces.push(trace);\n }\n\n _.set(item, 'data.body', { trace_chain: traces });\n callback(null, item);\n}\n\nfunction addBodyTrace(item, options, callback) {\n var stack = stackFromItem(item);\n\n if (stack) {\n var trace = buildTrace(item, item.stackInfo, options);\n _.set(item, 'data.body', { trace: trace });\n callback(null, item);\n } else {\n var stackInfo = item.stackInfo;\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n\n item.message = className + ': ' + message;\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction buildTrace(item, stackInfo, options) {\n var description = item && item.data.description;\n var custom = item && item.custom;\n var stack = stackFromItem(item);\n\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n var trace = {\n exception: {\n class: className,\n message: message,\n },\n };\n\n if (description) {\n trace.exception.description = description;\n }\n\n if (stack) {\n if (stack.length === 0) {\n trace.exception.stack = stackInfo.rawStack;\n trace.exception.raw = String(stackInfo.rawException);\n }\n var stackFrame;\n var frame;\n var code;\n var pre;\n var post;\n var contextLength;\n var i, mid;\n\n trace.frames = [];\n for (i = 0; i < stack.length; ++i) {\n stackFrame = stack[i];\n frame = {\n filename: stackFrame.url ? _.sanitizeUrl(stackFrame.url) : '(unknown)',\n lineno: stackFrame.line || null,\n method:\n !stackFrame.func || stackFrame.func === '?'\n ? '[anonymous]'\n : stackFrame.func,\n colno: stackFrame.column,\n };\n if (options.sendFrameUrl) {\n frame.url = stackFrame.url;\n }\n if (\n frame.method &&\n frame.method.endsWith &&\n frame.method.endsWith('_rollbar_wrapped')\n ) {\n continue;\n }\n\n code = pre = post = null;\n contextLength = stackFrame.context ? stackFrame.context.length : 0;\n if (contextLength) {\n mid = Math.floor(contextLength / 2);\n pre = stackFrame.context.slice(0, mid);\n code = stackFrame.context[mid];\n post = stackFrame.context.slice(mid);\n }\n\n if (code) {\n frame.code = code;\n }\n\n if (pre || post) {\n frame.context = {};\n if (pre && pre.length) {\n frame.context.pre = pre;\n }\n if (post && post.length) {\n frame.context.post = post;\n }\n }\n\n if (stackFrame.args) {\n frame.args = stackFrame.args;\n }\n\n trace.frames.push(frame);\n }\n\n // NOTE(cory): reverse the frames since rollbar.com expects the most recent call last\n trace.frames.reverse();\n\n if (custom) {\n trace.extra = _.merge(custom);\n }\n }\n\n return trace;\n}\n\nfunction errorClass(stackInfo, guess, options) {\n if (stackInfo.name) {\n return stackInfo.name;\n } else if (options.guessErrorClass) {\n return guess;\n } else {\n return '(unknown)';\n }\n}\n\nfunction addScrubber(scrubFn) {\n return function (item, options, callback) {\n if (scrubFn) {\n var scrubFields = options.scrubFields || [];\n var scrubPaths = options.scrubPaths || [];\n item.data = scrubFn(item.data, scrubFields, scrubPaths);\n }\n callback(null, item);\n };\n}\n\nexport {\n handleDomException,\n handleItemWithError,\n ensureItemHasSomethingToSay,\n addBaseInfo,\n addRequestInfo,\n addClientInfo,\n addPluginInfo,\n addBody,\n addScrubber,\n};\n","import * as _ from './utility.js';\n\nfunction itemToPayload(item, options, callback) {\n if (item._isUncaught) {\n item.data._isUncaught = true;\n }\n if (item._originalArgs) {\n item.data._originalArgs = item._originalArgs;\n }\n callback(null, item);\n}\n\nfunction addPayloadOptions(item, options, callback) {\n var payloadOptions = options.payload || {};\n if (payloadOptions.body) {\n delete payloadOptions.body;\n }\n\n item.data = _.merge(item.data, payloadOptions);\n callback(null, item);\n}\n\nfunction addTelemetryData(item, options, callback) {\n if (item.telemetryEvents) {\n _.set(item, 'data.body.telemetry', item.telemetryEvents);\n }\n callback(null, item);\n}\n\nfunction addMessageWithError(item, options, callback) {\n if (!item.message) {\n callback(null, item);\n return;\n }\n var tracePath = 'data.body.trace_chain.0';\n var trace = _.get(item, tracePath);\n if (!trace) {\n tracePath = 'data.body.trace';\n trace = _.get(item, tracePath);\n }\n if (trace) {\n if (!(trace.exception && trace.exception.description)) {\n _.set(item, tracePath + '.exception.description', item.message);\n callback(null, item);\n return;\n }\n var extra = _.get(item, tracePath + '.extra') || {};\n var newExtra = _.merge(extra, { message: item.message });\n _.set(item, tracePath + '.extra', newExtra);\n }\n callback(null, item);\n}\n\nfunction userTransform(logger) {\n return function (item, options, callback) {\n var newItem = _.merge(item);\n var response = null;\n try {\n if (_.isFunction(options.transform)) {\n response = options.transform(newItem.data, item);\n }\n } catch (e) {\n options.transform = null;\n logger.error(\n 'Error while calling custom transform() function. Removing custom transform().',\n e,\n );\n callback(null, item);\n return;\n }\n if (_.isPromise(response)) {\n response.then(\n function (promisedItem) {\n if (promisedItem) {\n newItem.data = promisedItem;\n }\n callback(null, newItem);\n },\n function (error) {\n callback(error, item);\n },\n );\n } else {\n callback(null, newItem);\n }\n };\n}\n\nfunction addConfigToPayload(item, options, callback) {\n if (!options.sendConfig) {\n return callback(null, item);\n }\n var configKey = '_rollbarConfig';\n var custom = _.get(item, 'data.custom') || {};\n custom[configKey] = options;\n item.data.custom = custom;\n callback(null, item);\n}\n\nfunction addFunctionOption(options, name) {\n if (_.isFunction(options[name])) {\n options[name] = options[name].toString();\n }\n}\n\nfunction addConfiguredOptions(item, options, callback) {\n var configuredOptions = options._configuredOptions;\n\n // These must be stringified or they'll get dropped during serialization.\n addFunctionOption(configuredOptions, 'transform');\n addFunctionOption(configuredOptions, 'checkIgnore');\n addFunctionOption(configuredOptions, 'onSendCallback');\n\n delete configuredOptions.accessToken;\n item.data.notifier.configured_options = configuredOptions;\n callback(null, item);\n}\n\nfunction addDiagnosticKeys(item, options, callback) {\n var diagnostic = _.merge(\n item.notifier.client.notifier.diagnostic,\n item.diagnostic,\n );\n\n if (_.get(item, 'err._isAnonymous')) {\n diagnostic.is_anonymous = true;\n }\n\n if (item._isUncaught) {\n diagnostic.is_uncaught = item._isUncaught;\n }\n\n if (item.err) {\n try {\n diagnostic.raw_error = {\n message: item.err.message,\n name: item.err.name,\n constructor_name: item.err.constructor && item.err.constructor.name,\n filename: item.err.fileName,\n line: item.err.lineNumber,\n column: item.err.columnNumber,\n stack: item.err.stack,\n };\n } catch (e) {\n diagnostic.raw_error = { failed: String(e) };\n }\n }\n\n item.data.notifier.diagnostic = _.merge(\n item.data.notifier.diagnostic,\n diagnostic,\n );\n callback(null, item);\n}\n\nexport {\n itemToPayload,\n addPayloadOptions,\n addTelemetryData,\n addMessageWithError,\n userTransform,\n addConfigToPayload,\n addConfiguredOptions,\n addDiagnosticKeys,\n};\n","import * as _ from '../utility.js';\n\nfunction checkIgnore(item, settings) {\n if (_.get(settings, 'plugins.jquery.ignoreAjaxErrors')) {\n return !_.get(item, 'body.message.extra.isAjax');\n }\n return true;\n}\n\nexport { checkIgnore };\n","import * as _ from './utility.js';\n\nfunction checkLevel(item, settings) {\n var level = item.level;\n var levelVal = _.LEVELS[level] || 0;\n var reportLevel = settings.reportLevel;\n var reportLevelVal = _.LEVELS[reportLevel] || 0;\n\n if (levelVal < reportLevelVal) {\n return false;\n }\n return true;\n}\n\nfunction userCheckIgnore(logger) {\n return function (item, settings) {\n var isUncaught = !!item._isUncaught;\n delete item._isUncaught;\n var args = item._originalArgs;\n delete item._originalArgs;\n try {\n if (_.isFunction(settings.onSendCallback)) {\n settings.onSendCallback(isUncaught, args, item);\n }\n } catch (e) {\n settings.onSendCallback = null;\n logger.error('Error while calling onSendCallback, removing', e);\n }\n try {\n if (\n _.isFunction(settings.checkIgnore) &&\n settings.checkIgnore(isUncaught, args, item)\n ) {\n return false;\n }\n } catch (e) {\n settings.checkIgnore = null;\n logger.error('Error while calling custom checkIgnore(), removing', e);\n }\n return true;\n };\n}\n\nfunction urlIsNotBlockListed(logger) {\n return function (item, settings) {\n return !urlIsOnAList(item, settings, 'blocklist', logger);\n };\n}\n\nfunction urlIsSafeListed(logger) {\n return function (item, settings) {\n return urlIsOnAList(item, settings, 'safelist', logger);\n };\n}\n\nfunction matchFrames(trace, list, block) {\n if (!trace) {\n return !block;\n }\n\n var frames = trace.frames;\n\n if (!frames || frames.length === 0) {\n return !block;\n }\n\n var frame, filename, url, urlRegex;\n var listLength = list.length;\n var frameLength = frames.length;\n for (var i = 0; i < frameLength; i++) {\n frame = frames[i];\n filename = frame.filename;\n\n if (!_.isType(filename, 'string')) {\n return !block;\n }\n\n for (var j = 0; j < listLength; j++) {\n url = list[j];\n urlRegex = new RegExp(url);\n\n if (urlRegex.test(filename)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction urlIsOnAList(item, settings, safeOrBlock, logger) {\n // safelist is the default\n var block = false;\n if (safeOrBlock === 'blocklist') {\n block = true;\n }\n\n var list, traces;\n try {\n list = block ? settings.hostBlockList : settings.hostSafeList;\n traces = _.get(item, 'body.trace_chain') || [_.get(item, 'body.trace')];\n\n // These two checks are important to come first as they are defaults\n // in case the list is missing or the trace is missing or not well-formed\n if (!list || list.length === 0) {\n return !block;\n }\n if (traces.length === 0 || !traces[0]) {\n return !block;\n }\n\n var tracesLength = traces.length;\n for (var i = 0; i < tracesLength; i++) {\n if (matchFrames(traces[i], list, block)) {\n return true;\n }\n }\n } catch (\n e\n /* istanbul ignore next */\n ) {\n if (block) {\n settings.hostBlockList = null;\n } else {\n settings.hostSafeList = null;\n }\n var listName = block ? 'hostBlockList' : 'hostSafeList';\n logger.error(\n \"Error while reading your configuration's \" +\n listName +\n ' option. Removing custom ' +\n listName +\n '.',\n e,\n );\n return !block;\n }\n return false;\n}\n\nfunction messageIsIgnored(logger) {\n return function (item, settings) {\n var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages;\n\n try {\n messageIsIgnored = false;\n ignoredMessages = settings.ignoredMessages;\n\n if (!ignoredMessages || ignoredMessages.length === 0) {\n return true;\n }\n\n messages = messagesFromItem(item);\n\n if (messages.length === 0) {\n return true;\n }\n\n len = ignoredMessages.length;\n for (i = 0; i < len; i++) {\n rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi');\n\n for (j = 0; j < messages.length; j++) {\n messageIsIgnored = rIgnoredMessage.test(messages[j]);\n\n if (messageIsIgnored) {\n return false;\n }\n }\n }\n } catch (\n e\n /* istanbul ignore next */\n ) {\n settings.ignoredMessages = null;\n logger.error(\n \"Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages.\",\n );\n }\n\n return true;\n };\n}\n\nfunction messagesFromItem(item) {\n var body = item.body;\n var messages = [];\n\n // The payload schema only allows one of trace_chain, message, or trace.\n // However, existing test cases are based on having both trace and message present.\n // So here we preserve the ability to collect strings from any combination of these keys.\n if (body.trace_chain) {\n var traceChain = body.trace_chain;\n for (var i = 0; i < traceChain.length; i++) {\n var trace = traceChain[i];\n messages.push(_.get(trace, 'exception.message'));\n }\n }\n if (body.trace) {\n messages.push(_.get(body, 'trace.exception.message'));\n }\n if (body.message) {\n messages.push(_.get(body, 'message.body'));\n }\n return messages;\n}\n\nexport {\n checkLevel,\n userCheckIgnore,\n urlIsNotBlockListed,\n urlIsSafeListed,\n messageIsIgnored,\n};\n","/**\n * Default session replay recording options\n * See https://github.com/rrweb-io/rrweb/blob/master/guide.md#options for details\n */\nexport default {\n enabled: false, // Whether recording is enabled\n autoStart: true, // Start recording automatically when Rollbar initializes\n\n // defaults used by triggers that don't specify them\n triggerDefaults: {\n samplingRatio: 1.0,\n preDuration: 300,\n postDuration: 5,\n },\n triggers: [\n {\n type: 'occurrence',\n level: ['error', 'critical'],\n },\n ],\n\n debug: {\n logErrors: true, // Whether to log errors emitted by rrweb.\n logEmits: false, // Whether to log emitted events\n },\n\n // Recording options\n inlineStylesheet: true, // Whether to inline stylesheets to improve replay accuracy\n inlineImages: false, // Whether to record the image content\n collectFonts: true, // Whether to collect fonts in the website\n\n // Privacy options\n // Fine-grained control over which input types to mask\n // By default only password inputs are masked if maskInputs is true\n maskInputOptions: {\n password: true,\n email: false,\n tel: false,\n text: false,\n color: false,\n date: false,\n 'datetime-local': false,\n month: false,\n number: false,\n range: false,\n search: false,\n time: false,\n url: false,\n week: false,\n },\n\n // Mask all input values\n maskAllInputs: false,\n\n // Class names to block, mask, or ignore the content of elements.\n blockClass: 'rb-block',\n maskTextClass: 'rb-mask',\n ignoreClass: 'rb-ignore',\n\n // Remove unnecessary parts of the DOM\n // By default all removable elements are removed\n slimDOMOptions: {\n script: true, // Remove script elements\n comment: true, // Remove comments\n headFavicon: true, // Remove favicons in the head\n headWhitespace: true, // Remove whitespace in head\n headMetaDescKeywords: true, // Remove meta description and keywords\n headMetaSocial: true, // Remove social media meta tags\n headMetaRobots: true, // Remove robots meta directives\n headMetaHttpEquiv: true, // Remove http-equiv meta directives\n headMetaAuthorship: true, // Remove authorship meta directives\n headMetaVerification: true, // Remove verification meta directives\n },\n\n // Custom callbacks for advanced use cases\n // These are undefined by default and can be set programmatically\n // maskInputFn: undefined, // Custom function to mask input values\n // maskTextFn: undefined, // Custom function to mask text content\n // errorHandler: undefined, // Custom error handler for recording errors\n\n // Plugin system\n // plugins: [] // List of plugins to use (must be set programmatically)\n};\n","/**\n * Default tracing options\n */\nexport default {\n enabled: false,\n endpoint: 'api.rollbar.com/api/1/session/',\n};\n","/**\n * Default options shared across platforms\n */\nexport const version = '3.0.0-rc.1';\nexport const endpoint = 'api.rollbar.com/api/1/item/';\nexport const logLevel = 'debug';\nexport const reportLevel = 'debug';\nexport const uncaughtErrorLevel = 'error';\nexport const maxItems = 0;\nexport const itemsPerMin = 60;\n\nexport const commonScrubFields = [\n 'pw',\n 'pass',\n 'passwd',\n 'password',\n 'secret',\n 'confirm_password',\n 'confirmPassword',\n 'password_confirmation',\n 'passwordConfirmation',\n 'access_token',\n 'accessToken',\n 'X-Rollbar-Access-Token',\n 'secret_key',\n 'secretKey',\n 'secretToken',\n];\n\nexport const apiScrubFields = [\n 'api_key',\n 'authenticity_token',\n 'oauth_token',\n 'token',\n 'user_session_secret',\n];\n\nexport const requestScrubFields = [\n 'request.session.csrf',\n 'request.session._csrf',\n 'request.params._csrf',\n 'request.cookie',\n 'request.cookies',\n];\n\nexport const commonScrubHeaders = [\n 'authorization',\n 'www-authorization',\n 'http_authorization',\n 'omniauth.auth',\n 'cookie',\n 'oauth-access-token',\n 'x-access-token',\n 'x_csrf_token',\n 'http_x_csrf_token',\n 'x-csrf-token',\n];\n\n// For backward compatibility with default export\nexport default {\n version,\n endpoint,\n logLevel,\n reportLevel,\n uncaughtErrorLevel,\n maxItems,\n itemsPerMin,\n};\n","/**\n * Default browser options\n */\nimport { commonScrubFields } from '../defaults.js';\n\nexport const scrubFields = [\n ...commonScrubFields,\n 'cc-number',\n 'card number',\n 'cardnumber',\n 'cardnum',\n 'ccnum',\n 'ccnumber',\n 'cc num',\n 'creditcardnumber',\n 'credit card number',\n 'newcreditcardnumber',\n 'new credit card',\n 'creditcardno',\n 'credit card no',\n 'card#',\n 'card #',\n 'cc-csc',\n 'cvc',\n 'cvc2',\n 'cvv2',\n 'ccv2',\n 'security code',\n 'card verification',\n 'name on credit card',\n 'name on card',\n 'nameoncard',\n 'cardholder',\n 'card holder',\n 'name des karteninhabers',\n 'ccname',\n 'card type',\n 'cardtype',\n 'cc type',\n 'cctype',\n 'payment type',\n 'expiration date',\n 'expirationdate',\n 'expdate',\n 'cc-exp',\n 'ccmonth',\n 'ccyear',\n];\n\n// For compatibility with existing code that expects default export with scrubFields property\nexport default { scrubFields };\n","import Client from '../rollbar.js';\nimport * as _ from '../utility.js';\nimport API from '../api.js';\nimport logger from '../logger.js';\nimport * as globals from './globalSetup.js';\n\nimport Transport from './transport.js';\nimport * as urllib from './url.js';\n\nimport * as transforms from './transforms.js';\nimport * as sharedTransforms from '../transforms.js';\nimport * as predicates from './predicates.js';\nimport * as sharedPredicates from '../predicates.js';\nimport errorParser from '../errorParser.js';\nimport replayDefaults from './replay/defaults.js';\nimport tracingDefaults from '../tracing/defaults.js';\n\n// Used to support global `Rollbar` instance.\nlet _instance = null;\n\nclass Rollbar {\n constructor(options, client) {\n logger.init({ logLevel: options.logLevel || 'error' });\n this.options = _.handleOptions(defaultOptions, options, null, logger);\n this.options._configuredOptions = options;\n this.components = this.components || {};\n const Telemeter = this.components.telemeter;\n const Instrumenter = this.components.instrumenter;\n this.wrapGlobals = this.components.wrapGlobals;\n this.scrub = this.components.scrub;\n const truncation = this.components.truncation;\n const Tracing = this.components.tracing;\n const Replay = this.components.replay;\n\n const transport = new Transport(truncation);\n const api = new API(this.options, transport, urllib, truncation);\n if (Tracing) {\n this.tracing = new Tracing(_gWindow(), api, this.options);\n this.tracing.initSession();\n }\n if (Telemeter) {\n this.telemeter = new Telemeter(this.options, this.tracing);\n }\n\n if (Replay && _.isBrowser()) {\n const replayOptions = this.options.replay;\n this.replay = new Replay({\n tracing: this.tracing,\n telemeter: this.telemeter,\n options: replayOptions,\n });\n\n if (replayOptions.enabled && replayOptions.autoStart) {\n this.replay.recorder.start();\n }\n }\n\n this.client =\n client ||\n new Client(\n this.options,\n api,\n logger,\n this.telemeter,\n this.tracing,\n this.replay,\n 'browser',\n );\n var gWindow = _gWindow();\n var gDocument = typeof document != 'undefined' && document;\n this.isChrome = gWindow.chrome && gWindow.chrome.runtime; // check .runtime to avoid Edge browsers\n this.anonymousErrorsPending = 0;\n addTransformsToNotifier(this.client.notifier, this, gWindow);\n addPredicatesToQueue(this.client.queue);\n this.setupUnhandledCapture();\n if (Instrumenter) {\n this.instrumenter = new Instrumenter(\n this.options,\n this.client.telemeter,\n this,\n gWindow,\n gDocument,\n );\n this.instrumenter.instrument();\n }\n\n this.setSessionAttributesFromOptions(options);\n\n // Used with rollbar-react for rollbar-react-native compatibility.\n this.rollbar = this;\n }\n\n static init(options, client) {\n if (_instance) {\n return _instance.global(options).configure(options);\n }\n _instance = new Rollbar(options, client);\n return _instance;\n }\n\n static setComponents(components) {\n Rollbar.prototype.components = components;\n }\n\n global(options) {\n this.client.global(options);\n return this;\n }\n\n configure(options, payloadData) {\n if (options.logLevel) {\n logger.init({ logLevel: options.logLevel });\n }\n this.setSessionAttributesFromOptions(options);\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.handleOptions(oldOptions, options, payload, logger);\n this.options._configuredOptions = _.handleOptions(\n oldOptions._configuredOptions,\n options,\n payload,\n );\n\n this.tracing?.configure(this.options);\n this.replay?.configure(this.options.replay);\n this.client.configure(this.options, payloadData);\n this.instrumenter?.configure(this.options);\n this.setupUnhandledCapture();\n return this;\n }\n\n lastError() {\n return this.client.lastError;\n }\n\n log() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.log(item);\n return { uuid: uuid };\n }\n\n debug() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.debug(item);\n return { uuid: uuid };\n }\n\n info() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.info(item);\n return { uuid: uuid };\n }\n\n warn() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warn(item);\n return { uuid: uuid };\n }\n\n warning() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warning(item);\n return { uuid: uuid };\n }\n\n error() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.error(item);\n return { uuid: uuid };\n }\n\n critical() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.critical(item);\n return { uuid: uuid };\n }\n\n buildJsonPayload(item) {\n return this.client.buildJsonPayload(item);\n }\n\n sendJsonPayload(jsonPayload) {\n return this.client.sendJsonPayload(jsonPayload);\n }\n\n triggerDirectReplay(context) {\n return this.triggerReplay({ type: 'direct', ...context });\n }\n\n triggerReplay(context) {\n if (!this.replay) return null;\n\n return this.replay.triggerReplay(context);\n }\n\n setupUnhandledCapture() {\n var gWindow = _gWindow();\n\n if (!this.unhandledExceptionsInitialized) {\n if (\n this.options.captureUncaught ||\n this.options.handleUncaughtExceptions\n ) {\n globals.captureUncaughtExceptions(gWindow, this);\n if (this.wrapGlobals && this.options.wrapGlobalEventHandlers) {\n this.wrapGlobals(gWindow, this);\n }\n this.unhandledExceptionsInitialized = true;\n }\n }\n if (!this.unhandledRejectionsInitialized) {\n if (\n this.options.captureUnhandledRejections ||\n this.options.handleUnhandledRejections\n ) {\n globals.captureUnhandledRejections(gWindow, this);\n this.unhandledRejectionsInitialized = true;\n }\n }\n }\n\n handleUncaughtException(message, url, lineno, colno, error, context) {\n if (\n !this.options.captureUncaught &&\n !this.options.handleUncaughtExceptions\n ) {\n return;\n }\n\n // Chrome will always send 5+ arguments and error will be valid or null, not undefined.\n // If error is undefined, we have a different caller.\n // Chrome also sends errors from web workers with null error, but does not invoke\n // prepareStackTrace() for these. Test for empty url to skip them.\n if (\n this.options.inspectAnonymousErrors &&\n this.isChrome &&\n error === null &&\n url === ''\n ) {\n return 'anonymous';\n }\n\n var item;\n var stackInfo = _.makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n 'onerror',\n 'uncaught exception',\n errorParser,\n );\n if (_.isError(error)) {\n item = this._createItem([message, error, context]);\n item._unhandledStackInfo = stackInfo;\n } else if (_.isError(url)) {\n item = this._createItem([message, url, context]);\n item._unhandledStackInfo = stackInfo;\n } else {\n item = this._createItem([message, context]);\n item.stackInfo = stackInfo;\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n this.client.log(item);\n }\n\n /**\n * Chrome only. Other browsers will ignore.\n *\n * Use Error.prepareStackTrace to extract information about errors that\n * do not have a valid error object in onerror().\n *\n * In tested version of Chrome, onerror is called first but has no way\n * to communicate with prepareStackTrace. Use a counter to let this\n * handler know which errors to send to Rollbar.\n *\n * In config options, set inspectAnonymousErrors to enable.\n */\n handleAnonymousErrors() {\n if (!this.options.inspectAnonymousErrors || !this.isChrome) {\n return;\n }\n\n var r = this;\n function prepareStackTrace(error, _stack) {\n if (r.options.inspectAnonymousErrors) {\n if (r.anonymousErrorsPending) {\n // This is the only known way to detect that onerror saw an anonymous error.\n // It depends on onerror reliably being called before Error.prepareStackTrace,\n // which so far holds true on tested versions of Chrome. If versions of Chrome\n // are tested that behave differently, this logic will need to be updated\n // accordingly.\n r.anonymousErrorsPending -= 1;\n\n if (!error) {\n // Not likely to get here, but calling handleUncaughtException from here\n // without an error object would throw off the anonymousErrorsPending counter,\n // so return now.\n return;\n }\n\n // Allow this to be tracked later.\n error._isAnonymous = true;\n\n // url, lineno, colno shouldn't be needed for these errors.\n // If that changes, update this accordingly, using the unused\n // _stack param as needed (rather than parse error.toString()).\n r.handleUncaughtException(error.message, null, null, null, error);\n }\n }\n\n // Workaround to ensure stack is preserved for normal errors.\n return error.stack;\n }\n\n // https://v8.dev/docs/stack-trace-api\n try {\n Error.prepareStackTrace = prepareStackTrace;\n } catch (e) {\n this.options.inspectAnonymousErrors = false;\n this.error('anonymous error handler failed', e);\n }\n }\n\n handleUnhandledRejection(reason, promise) {\n if (\n !this.options.captureUnhandledRejections &&\n !this.options.handleUnhandledRejections\n ) {\n return;\n }\n\n var message = 'unhandled rejection was null or undefined!';\n if (reason) {\n if (reason.message) {\n message = reason.message;\n } else {\n var reasonResult = _.stringify(reason);\n if (reasonResult.value) {\n message = reasonResult.value;\n }\n }\n }\n var context =\n (reason && reason._rollbarContext) ||\n (promise && promise._rollbarContext);\n\n var item;\n if (_.isError(reason)) {\n item = this._createItem([message, reason, context]);\n } else {\n item = this._createItem([message, reason, context]);\n item.stackInfo = _.makeUnhandledStackInfo(\n message,\n '',\n 0,\n 0,\n null,\n 'unhandledrejection',\n '',\n errorParser,\n );\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n item._originalArgs = item._originalArgs || [];\n item._originalArgs.push(promise);\n this.client.log(item);\n }\n\n wrap(f, context, _before) {\n try {\n var ctxFn;\n if (_.isFunction(context)) {\n ctxFn = context;\n } else {\n ctxFn = function () {\n return context || {};\n };\n }\n\n if (!_.isFunction(f)) {\n return f;\n }\n\n if (f._isWrap) {\n return f;\n }\n\n if (!f._rollbar_wrapped) {\n f._rollbar_wrapped = function () {\n if (_before && _.isFunction(_before)) {\n _before.apply(this, arguments);\n }\n try {\n return f.apply(this, arguments);\n } catch (exc) {\n var e = exc;\n if (e && window._rollbarWrappedError !== e) {\n if (_.isType(e, 'string')) {\n e = new String(e);\n }\n e._rollbarContext = ctxFn() || {};\n e._rollbarContext._wrappedSource = f.toString();\n\n window._rollbarWrappedError = e;\n }\n throw e;\n }\n };\n\n f._rollbar_wrapped._isWrap = true;\n\n if (f.hasOwnProperty) {\n for (var prop in f) {\n if (f.hasOwnProperty(prop) && prop !== '_rollbar_wrapped') {\n f._rollbar_wrapped[prop] = f[prop];\n }\n }\n }\n }\n\n return f._rollbar_wrapped;\n } catch (e) {\n // Return the original function if the wrap fails.\n return f;\n }\n }\n\n captureEvent() {\n var event = _.createTelemetryEvent(arguments);\n return this.client.captureEvent(event.type, event.metadata, event.level);\n }\n\n setSessionUser(user) {\n if (!this.tracing?.session) return;\n\n this.tracing.session.setUser(user);\n }\n\n setSessionAttributes(attrs) {\n if (!this.tracing?.session) return;\n\n attrs = { ...attrs };\n\n this.tracing.session.setAttributes(attrs);\n }\n\n setSessionAttributesFromOptions(options) {\n const person = options.person || options.payload?.person;\n if (person) {\n this.setSessionUser(person);\n }\n const code_version =\n options.client?.javascript?.code_version ||\n options.codeVersion ||\n options.code_version ||\n options.payload?.client?.javascript?.code_version ||\n options.payload?.code_version ||\n options.payload?.codeVersion;\n this.setSessionAttributes({\n 'rollbar.codeVersion': code_version,\n 'rollbar.notifier.name': 'rollbar-browser-js',\n 'rollbar.notifier.version': options.version,\n });\n }\n\n // The following two methods are used internally and are not meant for public use\n captureDomContentLoaded(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureDomContentLoaded(ts);\n }\n\n captureLoad(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureLoad(ts);\n }\n\n loadFull() {\n logger.info(\n 'Unexpected Rollbar.loadFull() called on a Notifier instance. This can happen when Rollbar is loaded multiple times.',\n );\n }\n\n _createItem(args) {\n return _.createItem(args, logger, this);\n }\n\n // Static version of instance methods support the legacy pattern of a\n // global `Rollbar` instance, where after calling `Rollbar.init()`,\n // `Rollbar` can be used as if it were an instance.\n // If support for this pattern is dropped, these static methods can be removed.\n static callInstance(method, args) {\n if (!_instance) {\n const message = 'Rollbar is not initialized';\n logger.error(message);\n const maybeCallback = _getFirstFunction(args);\n if (maybeCallback) {\n maybeCallback(new Error(message));\n }\n return;\n }\n return _instance[method].apply(_instance, args);\n }\n\n static global = (...args) => Rollbar.callInstance('global', args);\n static configure = (...args) => Rollbar.callInstance('configure', args);\n static lastError = (...args) => Rollbar.callInstance('lastError', args);\n static log = (...args) => Rollbar.callInstance('log', args);\n static debug = (...args) => Rollbar.callInstance('debug', args);\n static info = (...args) => Rollbar.callInstance('info', args);\n static warn = (...args) => Rollbar.callInstance('warn', args);\n static warning = (...args) => Rollbar.callInstance('warning', args);\n static error = (...args) => Rollbar.callInstance('error', args);\n static critical = (...args) => Rollbar.callInstance('critical', args);\n static buildJsonPayload = (...args) =>\n Rollbar.callInstance('buildJsonPayload', args);\n static sendJsonPayload = (...args) =>\n Rollbar.callInstance('sendJsonPayload', args);\n static wrap = (...args) => Rollbar.callInstance('wrap', args);\n static captureEvent = (...args) => Rollbar.callInstance('captureEvent', args);\n}\n\n/* Internal */\n\nfunction addTransformsToNotifier(notifier, rollbar, gWindow) {\n notifier\n .addTransform(transforms.handleDomException)\n .addTransform(transforms.handleItemWithError)\n .addTransform(transforms.ensureItemHasSomethingToSay)\n .addTransform(transforms.addBaseInfo)\n .addTransform(transforms.addRequestInfo(gWindow))\n .addTransform(transforms.addClientInfo(gWindow))\n .addTransform(transforms.addPluginInfo(gWindow))\n .addTransform(transforms.addBody)\n .addTransform(sharedTransforms.addMessageWithError)\n .addTransform(sharedTransforms.addTelemetryData)\n .addTransform(sharedTransforms.addConfigToPayload)\n .addTransform(transforms.addScrubber(rollbar.scrub))\n .addTransform(sharedTransforms.addPayloadOptions)\n .addTransform(sharedTransforms.userTransform(logger))\n .addTransform(sharedTransforms.addConfiguredOptions)\n .addTransform(sharedTransforms.addDiagnosticKeys)\n .addTransform(sharedTransforms.itemToPayload);\n}\n\nfunction addPredicatesToQueue(queue) {\n queue\n .addPredicate(sharedPredicates.checkLevel)\n .addPredicate(predicates.checkIgnore)\n .addPredicate(sharedPredicates.userCheckIgnore(logger))\n .addPredicate(sharedPredicates.urlIsNotBlockListed(logger))\n .addPredicate(sharedPredicates.urlIsSafeListed(logger))\n .addPredicate(sharedPredicates.messageIsIgnored(logger));\n}\n\nfunction _getFirstFunction(args) {\n for (var i = 0, len = args.length; i < len; ++i) {\n if (_.isFunction(args[i])) {\n return args[i];\n }\n }\n return undefined;\n}\n\nfunction _gWindow() {\n return (\n (typeof window != 'undefined' && window) ||\n (typeof self != 'undefined' && self)\n );\n}\n\nimport {\n version,\n logLevel,\n reportLevel,\n uncaughtErrorLevel,\n endpoint,\n} from '../defaults.js';\nimport browserDefaults from './defaults.js';\n\nconst defaultOptions = {\n environment: 'unknown',\n version: version,\n scrubFields: browserDefaults.scrubFields,\n logLevel: logLevel,\n reportLevel: reportLevel,\n uncaughtErrorLevel: uncaughtErrorLevel,\n endpoint: endpoint,\n verbose: false,\n enabled: true,\n transmit: true,\n sendConfig: false,\n includeItemsInTelemetry: true,\n captureIp: true,\n inspectAnonymousErrors: true,\n ignoreDuplicateErrors: true,\n wrapGlobalEventHandlers: false,\n replay: replayDefaults,\n tracing: tracingDefaults,\n};\n\nexport default Rollbar;\n","import * as _ from './utility.js';\n\nconst MAX_EVENTS = 100;\n\n// Temporary workaround while solving commonjs -> esm issues in Node 18 - 20.\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\nclass Telemeter {\n constructor(options, tracing) {\n this.queue = [];\n this.options = _.merge(options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n this.tracing = tracing;\n this.telemetrySpan = this.tracing?.startSpan('rollbar-telemetry', {});\n }\n\n configure(options) {\n var oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n var newMaxEvents = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n var deleteCount = 0;\n if (this.queue.length > newMaxEvents) {\n deleteCount = this.queue.length - newMaxEvents;\n }\n this.maxQueueSize = newMaxEvents;\n this.queue.splice(0, deleteCount);\n }\n\n copyEvents() {\n var events = Array.prototype.slice.call(this.queue, 0);\n if (_.isFunction(this.options.filterTelemetry)) {\n try {\n var i = events.length;\n while (i--) {\n if (this.options.filterTelemetry(events[i])) {\n events.splice(i, 1);\n }\n }\n } catch (e) {\n this.options.filterTelemetry = null;\n }\n }\n\n // Filter until supported in legacy telemetry\n events = events.filter((e) => e.type !== 'connectivity');\n\n // Remove internal keys from output\n events = events.map(({ otelAttributes, ...event }) => event);\n\n return events;\n }\n\n exportTelemetrySpan(attributes = {}) {\n if (this.telemetrySpan) {\n this.telemetrySpan.end(attributes);\n this.telemetrySpan = this.tracing.startSpan('rollbar-telemetry', {});\n }\n }\n\n capture(\n type,\n metadata,\n level,\n rollbarUUID,\n timestamp = null,\n otelAttributes = null,\n ) {\n var e = {\n level: getLevel(type, level),\n type: type,\n timestamp_ms: timestamp || _.now(),\n body: metadata,\n source: 'client',\n };\n if (rollbarUUID) {\n e.uuid = rollbarUUID;\n }\n if (otelAttributes) {\n e.otelAttributes = otelAttributes;\n }\n\n try {\n if (\n _.isFunction(this.options.filterTelemetry) &&\n this.options.filterTelemetry(e)\n ) {\n return false;\n }\n } catch (exc) {\n this.options.filterTelemetry = null;\n }\n\n this.push(e);\n return e;\n }\n\n captureEvent(type, metadata, level, rollbarUUID) {\n return this.capture(type, metadata, level, rollbarUUID);\n }\n\n captureError(err, level, rollbarUUID, timestamp) {\n const message = err.message || String(err);\n var metadata = { message };\n if (err.stack) {\n metadata.stack = err.stack;\n }\n const otelAttributes = {\n message,\n level,\n type: 'error',\n uuid: rollbarUUID,\n };\n\n this.telemetrySpan?.addEvent(\n 'rollbar-occurrence-event',\n otelAttributes,\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'error',\n metadata,\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureLog(message, level, rollbarUUID, timestamp) {\n let otelAttributes = null;\n\n // If the uuid is present, this is a message occurrence.\n if (rollbarUUID) {\n ((otelAttributes = {\n message,\n level,\n type: 'message',\n uuid: rollbarUUID,\n }),\n this.telemetrySpan?.addEvent(\n 'rollbar-occurrence-event',\n otelAttributes,\n fromMillis(timestamp),\n ));\n } else {\n otelAttributes = { message, level };\n this.telemetrySpan?.addEvent(\n 'rollbar-log-event',\n otelAttributes,\n fromMillis(timestamp),\n );\n }\n\n return this.capture(\n 'log',\n { message },\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNetwork(metadata, subtype, rollbarUUID, requestData) {\n subtype = subtype || 'xhr';\n metadata.subtype = metadata.subtype || subtype;\n if (requestData) {\n metadata.request = requestData;\n }\n const level = this.levelFromStatus(metadata.status_code);\n const endTimeNano = (metadata.end_time_ms || 0) * 1e6;\n const otelAttributes = {\n type: metadata.subtype,\n method: metadata.method,\n url: metadata.url,\n statusCode: metadata.status_code,\n 'request.headers': JSON.stringify(metadata.request_headers || {}),\n 'response.headers': JSON.stringify(metadata.response?.headers || {}),\n 'response.timeUnixNano': endTimeNano.toString(),\n };\n\n this.telemetrySpan?.addEvent(\n 'rollbar-network-event',\n otelAttributes,\n fromMillis(metadata.start_time_ms),\n );\n\n return this.capture(\n 'network',\n metadata,\n level,\n rollbarUUID,\n metadata.start_time_ms,\n otelAttributes,\n );\n }\n\n levelFromStatus(statusCode) {\n if (statusCode >= 200 && statusCode < 400) {\n return 'info';\n }\n if (statusCode === 0 || statusCode >= 400) {\n return 'error';\n }\n return 'info';\n }\n\n captureDom(subtype, element, value, checked, rollbarUUID) {\n var metadata = {\n subtype: subtype,\n element: element,\n };\n if (value !== undefined) {\n metadata.value = value;\n }\n if (checked !== undefined) {\n metadata.checked = checked;\n }\n return this.capture('dom', metadata, 'info', rollbarUUID);\n }\n\n captureInput({ type, isSynthetic, element, value, timestamp }) {\n const name = 'rollbar-input-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n value,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n value,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureClick({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-click-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n _getRepeatedEvent(name, attributes) {\n const lastEvent = this._lastEvent(this.queue);\n\n if (\n lastEvent &&\n lastEvent.body.type === name &&\n lastEvent.otelAttributes.target === attributes.target\n ) {\n return lastEvent;\n }\n }\n\n _updateRepeatedEvent(event, attributes, timestamp) {\n const duration = Math.max(timestamp - event.timestamp_ms, 1);\n event.body.value = attributes.value;\n event.otelAttributes.value = attributes.value;\n event.otelAttributes.height = attributes.height;\n event.otelAttributes.width = attributes.width;\n event.otelAttributes.textZoomRatio = attributes.textZoomRatio;\n event.otelAttributes['endTimeUnixNano'] = fromMillis(timestamp);\n event.otelAttributes['durationUnixNano'] = fromMillis(duration);\n event.otelAttributes.count = (event.otelAttributes.count || 1) + 1;\n event.otelAttributes.rate = event.otelAttributes.count / (duration / 1000);\n }\n\n _lastEvent(list) {\n return list.length > 0 ? list[list.length - 1] : null;\n }\n\n captureFocus({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-focus-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureResize({\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n timestamp,\n }) {\n const name = 'rollbar-resize-event';\n const metadata = {\n type: name,\n subtype: type,\n width,\n height,\n textZoomRatio,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n };\n\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureDragDrop({\n type,\n isSynthetic,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n timestamp,\n }) {\n const name = 'rollbar-dragdrop-event';\n let metadata = {\n type: name,\n subtype: type,\n isSynthetic,\n };\n\n let otelAttributes = {\n type,\n isSynthetic,\n };\n\n if (type === 'dragstart') {\n metadata = { ...metadata, element, dropEffect, effectAllowed };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n };\n }\n\n if (type === 'drop') {\n metadata = {\n ...metadata,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNavigation(from, to, rollbarUUID, timestamp) {\n this.telemetrySpan?.addEvent(\n 'rollbar-navigation-event',\n { 'previous.url.full': from, 'url.full': to },\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'navigation',\n { from, to },\n 'info',\n rollbarUUID,\n timestamp,\n );\n }\n\n captureDomContentLoaded(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'DOMContentLoaded' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'DOMContentLoaded'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureLoad(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'load' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'load'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureConnectivityChange({ type, isSynthetic, timestamp }) {\n const name = 'rollbar-connectivity-event';\n const metadata = {\n type: name,\n subtype: type,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'connectivity',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n // Only intended to be used internally by the notifier\n _captureRollbarItem(item) {\n if (!this.options.includeItemsInTelemetry) {\n return;\n }\n if (item.err) {\n return this.captureError(item.err, item.level, item.uuid, item.timestamp);\n }\n if (item.message) {\n return this.captureLog(\n item.message,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n if (item.custom) {\n return this.capture(\n 'log',\n item.custom,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n }\n\n push(e) {\n this.queue.push(e);\n if (this.queue.length > this.maxQueueSize) {\n this.queue.shift();\n }\n }\n}\n\nfunction getLevel(type, level) {\n if (level) {\n return level;\n }\n var defaultLevel = {\n error: 'error',\n manual: 'info',\n };\n return defaultLevel[type] || 'info';\n}\n\nexport default Telemeter;\n","/*\n * headers - Detect when fetch Headers are undefined and use a partial polyfill.\n *\n * A full polyfill is not used in order to keep package size as small as possible.\n * Since this is only used internally and is not added to the window object,\n * the full interface doesn't need to be supported.\n *\n * This implementation is modified from whatwg-fetch:\n * https://github.com/github/fetch\n */\nfunction headers(headers) {\n if (typeof Headers === 'undefined') {\n return new FetchHeaders(headers);\n }\n\n return new Headers(headers);\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n return name.toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value;\n}\n\nfunction iteratorFor(items) {\n var iterator = {\n next: function () {\n var value = items.shift();\n return { done: value === undefined, value: value };\n },\n };\n\n return iterator;\n}\n\nfunction FetchHeaders(headers) {\n this.map = {};\n\n if (headers instanceof FetchHeaders) {\n headers.forEach(function (value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function (header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function (name) {\n this.append(name, headers[name]);\n }, this);\n }\n}\n\nFetchHeaders.prototype.append = function (name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n};\n\nFetchHeaders.prototype.get = function (name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null;\n};\n\nFetchHeaders.prototype.has = function (name) {\n return this.map.hasOwnProperty(normalizeName(name));\n};\n\nFetchHeaders.prototype.forEach = function (callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n};\n\nFetchHeaders.prototype.entries = function () {\n var items = [];\n this.forEach(function (value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items);\n};\n\nexport default headers;\n","function replace(obj, name, replacement, replacements, type) {\n var orig = obj[name];\n obj[name] = replacement(orig);\n if (replacements) {\n replacements[type].push([obj, name, orig]);\n }\n}\n\nexport default replace;\n","import * as _ from '../utility.js';\n\nfunction traverse(obj, func, seen) {\n var k, v, i;\n var isObj = _.isType(obj, 'object');\n var isArray = _.isType(obj, 'array');\n var keys = [];\n var seenIndex;\n\n // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11.\n seen = seen || { obj: [], mapped: [] };\n\n if (isObj) {\n seenIndex = seen.obj.indexOf(obj);\n\n if (isObj && seenIndex !== -1) {\n // Prefer the mapped object if there is one.\n return seen.mapped[seenIndex] || seen.obj[seenIndex];\n }\n\n seen.obj.push(obj);\n seenIndex = seen.obj.length - 1;\n }\n\n if (isObj) {\n for (k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k)) {\n keys.push(k);\n }\n }\n } else if (isArray) {\n for (i = 0; i < obj.length; ++i) {\n keys.push(i);\n }\n }\n\n var result = isObj ? {} : [];\n var same = true;\n for (i = 0; i < keys.length; ++i) {\n k = keys[i];\n v = obj[k];\n result[k] = func(k, v, seen);\n same = same && result[k] === obj[k];\n }\n\n if (isObj && !same) {\n seen.mapped[seenIndex] = result;\n }\n\n return !same ? result : obj;\n}\n\nexport default traverse;\n","import * as _ from './utility.js';\nimport traverse from './utility/traverse.js';\n\nfunction scrub(data, scrubFields, scrubPaths) {\n scrubFields = scrubFields || [];\n\n if (scrubPaths) {\n for (var i = 0; i < scrubPaths.length; ++i) {\n scrubPath(data, scrubPaths[i]);\n }\n }\n\n var paramRes = _getScrubFieldRegexs(scrubFields);\n var queryRes = _getScrubQueryParamRegexs(scrubFields);\n\n function redactQueryParam(dummy0, paramPart) {\n return paramPart + _.redact();\n }\n\n function paramScrubber(v) {\n var i;\n if (_.isType(v, 'string')) {\n for (i = 0; i < queryRes.length; ++i) {\n v = v.replace(queryRes[i], redactQueryParam);\n }\n }\n return v;\n }\n\n function valScrubber(k, v) {\n var i;\n for (i = 0; i < paramRes.length; ++i) {\n if (paramRes[i].test(k)) {\n v = _.redact();\n break;\n }\n }\n return v;\n }\n\n function scrubber(k, v, seen) {\n var tmpV = valScrubber(k, v);\n if (tmpV === v) {\n if (_.isType(v, 'object') || _.isType(v, 'array')) {\n return traverse(v, scrubber, seen);\n }\n return paramScrubber(tmpV);\n } else {\n return tmpV;\n }\n }\n\n return traverse(data, scrubber);\n}\n\nfunction scrubPath(obj, path) {\n var keys = path.split('.');\n var last = keys.length - 1;\n try {\n for (var i = 0; i <= last; ++i) {\n if (i < last) {\n obj = obj[keys[i]];\n } else {\n obj[keys[i]] = _.redact();\n }\n }\n } catch (e) {\n // Missing key is OK;\n }\n}\n\nfunction _getScrubFieldRegexs(scrubFields) {\n var ret = [];\n var pat;\n for (var i = 0; i < scrubFields.length; ++i) {\n pat = '^\\\\[?(%5[bB])?' + scrubFields[i] + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?$';\n ret.push(new RegExp(pat, 'i'));\n }\n return ret;\n}\n\nfunction _getScrubQueryParamRegexs(scrubFields) {\n var ret = [];\n var pat;\n for (var i = 0; i < scrubFields.length; ++i) {\n pat = '\\\\[?(%5[bB])?' + scrubFields[i] + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?';\n ret.push(new RegExp('(' + pat + '=)([^&\\\\n]+)', 'igm'));\n }\n return ret;\n}\n\nexport default scrub;\n","function getElementType(e) {\n return (e.getAttribute('type') || '').toLowerCase();\n}\n\nfunction isDescribedElement(element, type, subtypes) {\n if (element.tagName.toLowerCase() !== type.toLowerCase()) {\n return false;\n }\n if (!subtypes) {\n return true;\n }\n element = getElementType(element);\n for (var i = 0; i < subtypes.length; i++) {\n if (subtypes[i] === element) {\n return true;\n }\n }\n return false;\n}\n\nfunction getElementFromEvent(evt, doc) {\n if (evt.target) {\n return evt.target;\n }\n if (doc && doc.elementFromPoint) {\n return doc.elementFromPoint(evt.clientX, evt.clientY);\n }\n return undefined;\n}\n\nfunction treeToArray(elem) {\n var MAX_HEIGHT = 5;\n var out = [];\n var nextDescription;\n for (var height = 0; elem && height < MAX_HEIGHT; height++) {\n nextDescription = describeElement(elem);\n if (nextDescription.tagName === 'html') {\n break;\n }\n out.unshift(nextDescription);\n elem = elem.parentNode;\n }\n return out;\n}\n\nfunction elementArrayToString(a) {\n var MAX_LENGTH = 80;\n var separator = ' > ',\n separatorLength = separator.length;\n var out = [],\n len = 0,\n nextStr,\n totalLength;\n\n for (var i = a.length - 1; i >= 0; i--) {\n nextStr = descriptionToString(a[i]);\n totalLength = len + out.length * separatorLength + nextStr.length;\n if (i < a.length - 1 && totalLength >= MAX_LENGTH + 3) {\n out.unshift('...');\n break;\n }\n out.unshift(nextStr);\n len += nextStr.length;\n }\n return out.join(separator);\n}\n\nfunction elementString(elem) {\n return elementArrayToString(treeToArray(elem));\n}\n\nfunction descriptionToString(desc) {\n if (!desc || !desc.tagName) {\n return '';\n }\n var out = [desc.tagName];\n if (desc.id) {\n out.push('#' + desc.id);\n }\n if (desc.classes) {\n out.push('.' + desc.classes.join('.'));\n }\n for (var i = 0; i < desc.attributes.length; i++) {\n out.push(\n '[' + desc.attributes[i].key + '=\"' + desc.attributes[i].value + '\"]',\n );\n }\n\n return out.join('');\n}\n\n/**\n * Input: a dom element\n * Output: null if tagName is falsey or input is falsey, else\n * {\n * tagName: String,\n * id: String | undefined,\n * classes: [String] | undefined,\n * attributes: [\n * {\n * key: OneOf(type, name, title, alt),\n * value: String\n * }\n * ]\n * }\n */\nfunction describeElement(elem) {\n if (!elem || !elem.tagName) {\n return null;\n }\n var out = {},\n className,\n key,\n attr,\n i;\n out.tagName = elem.tagName.toLowerCase();\n if (elem.id) {\n out.id = elem.id;\n }\n className = elem.className;\n if (className && typeof className === 'string') {\n out.classes = className.split(/\\s+/);\n }\n var attributes = ['type', 'name', 'title', 'alt'];\n out.attributes = [];\n for (i = 0; i < attributes.length; i++) {\n key = attributes[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.attributes.push({ key: key, value: attr });\n }\n }\n return out;\n}\n\n/*\n * Detects if the given element matches any of the given class names (string or regex),\n * or CSS selectors.\n * @param {HTMLElement} element - The DOM element to check.\n * @param {Array} classes - An array of class names (string or regex) to match against.\n * @param {Array} selectors - An array of CSS selectors to match against.\n * @return {boolean} - True if the element matches any of the classes or selectors, false otherwise.\n */\nfunction isMatchingElement(element, classes, selectors) {\n try {\n for (const cls of classes) {\n if (typeof cls === 'string') {\n if (element.classList.contains(cls)) {\n return true;\n }\n } else {\n for (const c of element.classList) {\n if (cls.test(c)) {\n return true;\n }\n }\n }\n }\n for (const sel of selectors) {\n if (element.matches(sel)) {\n return true;\n }\n }\n } catch (e) {\n // ignore errors from invalid arguments\n }\n return false;\n}\n\nexport {\n describeElement,\n descriptionToString,\n elementArrayToString,\n elementString,\n treeToArray,\n getElementFromEvent,\n isDescribedElement,\n getElementType,\n isMatchingElement,\n};\n","import * as _ from '../utility.js';\nimport headers from '../utility/headers.js';\nimport replace from '../utility/replace.js';\nimport scrub from '../scrub.js';\nimport * as urlparser from './url.js';\nimport * as domUtil from './domUtility.js';\n\nconst defaults = {\n network: true,\n networkResponseHeaders: false,\n networkResponseBody: false,\n networkRequestHeaders: false,\n networkRequestBody: false,\n networkErrorOnHttp5xx: false,\n networkErrorOnHttp4xx: false,\n networkErrorOnHttp0: false,\n log: true,\n dom: true,\n navigation: true,\n connectivity: true,\n contentSecurityPolicy: true,\n errorOnContentSecurityPolicy: false,\n};\n\nfunction restore(replacements, type) {\n let b;\n while (replacements[type].length) {\n b = replacements[type].shift();\n b[0][b[1]] = b[2];\n }\n}\n\nfunction nameFromDescription(description) {\n if (!description || !description.attributes) {\n return null;\n }\n const attrs = description.attributes;\n for (const a of attrs) {\n if (a.key === 'name') {\n return a.value;\n }\n }\n return null;\n}\n\nfunction defaultValueScrubber(scrubFields) {\n const patterns = [];\n for (const field of scrubFields) {\n patterns.push(new RegExp(field, 'i'));\n }\n return function (description) {\n const name = nameFromDescription(description);\n if (!name) {\n return false;\n }\n for (const p of patterns) {\n if (p.test(name)) {\n return true;\n }\n }\n return false;\n };\n}\n\nclass Instrumenter {\n constructor(options, telemeter, rollbar, _window, _document) {\n this.options = options;\n let autoInstrument = options.autoInstrument;\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.telemeter = telemeter;\n this.rollbar = rollbar;\n this.diagnostic = rollbar.client.notifier.diagnostic;\n this._window = _window || {};\n this._document = _document || {};\n this.replacements = {\n network: [],\n log: [],\n navigation: [],\n connectivity: [],\n };\n this.eventRemovers = {\n dom: [],\n connectivity: [],\n contentsecuritypolicy: [],\n };\n\n this._location = this._window.location;\n this._lastHref = this._location && this._location.href;\n }\n\n configureScrubbing() {\n const options = this.options;\n this.scrubTelemetryInputs = !!(\n options.scrubTelemetryInputs ?? options.replay?.maskAllInputs\n );\n this.telemetryScrubber = options.telemetryScrubber;\n this.defaultValueScrubber = defaultValueScrubber(options.scrubFields);\n this.maskInputFn = options.replay?.maskInputFn;\n this.maskInputOptions = options.replay?.maskInputOptions || {};\n this.scrubClasses = [\n options.replay?.blockClass,\n options.replay?.ignoreClass,\n options.replay?.maskTextClass,\n ].filter(Boolean);\n this.scrubSelectors = [\n options.replay?.blockSelector,\n options.replay?.ignoreSelector,\n options.replay?.maskTextSelector,\n ].filter(Boolean);\n }\n\n configure(options) {\n this.options = _.merge(this.options, options);\n let autoInstrument = options.autoInstrument;\n const oldSettings = _.merge(this.autoInstrument);\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.instrument(oldSettings);\n }\n\n // eslint-disable-next-line complexity\n instrument(oldSettings) {\n if (this.autoInstrument.network && !(oldSettings && oldSettings.network)) {\n this.instrumentNetwork();\n } else if (\n !this.autoInstrument.network &&\n oldSettings &&\n oldSettings.network\n ) {\n this.deinstrumentNetwork();\n }\n\n if (this.autoInstrument.log && !(oldSettings && oldSettings.log)) {\n this.instrumentConsole();\n } else if (!this.autoInstrument.log && oldSettings && oldSettings.log) {\n this.deinstrumentConsole();\n }\n\n if (this.autoInstrument.dom && !(oldSettings && oldSettings.dom)) {\n this.instrumentDom();\n } else if (!this.autoInstrument.dom && oldSettings && oldSettings.dom) {\n this.deinstrumentDom();\n }\n\n if (\n this.autoInstrument.navigation &&\n !(oldSettings && oldSettings.navigation)\n ) {\n this.instrumentNavigation();\n } else if (\n !this.autoInstrument.navigation &&\n oldSettings &&\n oldSettings.navigation\n ) {\n this.deinstrumentNavigation();\n }\n\n if (\n this.autoInstrument.connectivity &&\n !(oldSettings && oldSettings.connectivity)\n ) {\n this.instrumentConnectivity();\n } else if (\n !this.autoInstrument.connectivity &&\n oldSettings &&\n oldSettings.connectivity\n ) {\n this.deinstrumentConnectivity();\n }\n\n if (\n this.autoInstrument.contentSecurityPolicy &&\n !(oldSettings && oldSettings.contentSecurityPolicy)\n ) {\n this.instrumentContentSecurityPolicy();\n } else if (\n !this.autoInstrument.contentSecurityPolicy &&\n oldSettings &&\n oldSettings.contentSecurityPolicy\n ) {\n this.deinstrumentContentSecurityPolicy();\n }\n }\n\n deinstrumentNetwork() {\n restore(this.replacements, 'network');\n }\n\n instrumentNetwork() {\n const self = this;\n\n function wrapProp(prop, xhr) {\n if (prop in xhr && _.isFunction(xhr[prop])) {\n replace(xhr, prop, function (orig) {\n return self.rollbar.wrap(orig);\n });\n }\n }\n\n if ('XMLHttpRequest' in this._window) {\n const xhrp = this._window.XMLHttpRequest.prototype;\n replace(\n xhrp,\n 'open',\n function (orig) {\n return function (method, url) {\n const isUrlObject = _isUrlObject(url);\n if (_.isType(url, 'string') || isUrlObject) {\n url = isUrlObject ? url.toString() : url;\n if (this.__rollbar_xhr) {\n this.__rollbar_xhr.method = method;\n this.__rollbar_xhr.url = url;\n this.__rollbar_xhr.status_code = null;\n this.__rollbar_xhr.start_time_ms = _.now();\n this.__rollbar_xhr.end_time_ms = null;\n } else {\n this.__rollbar_xhr = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'setRequestHeader',\n function (orig) {\n return function (header, value) {\n // If xhr.open is async, __rollbar_xhr may not be initialized yet.\n if (!this.__rollbar_xhr) {\n this.__rollbar_xhr = {};\n }\n if (_.isType(header, 'string') && _.isType(value, 'string')) {\n if (self.autoInstrument.networkRequestHeaders) {\n if (!this.__rollbar_xhr.request_headers) {\n this.__rollbar_xhr.request_headers = {};\n }\n this.__rollbar_xhr.request_headers[header] = value;\n }\n // We want the content type even if request header telemetry is off.\n if (header.toLowerCase() === 'content-type') {\n this.__rollbar_xhr.request_content_type = value;\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'send',\n function (orig) {\n return function (data) {\n const xhr = this;\n\n function onreadystatechangeHandler() {\n if (xhr.__rollbar_xhr) {\n if (xhr.__rollbar_xhr.status_code === null) {\n xhr.__rollbar_xhr.status_code = 0;\n if (self.autoInstrument.networkRequestBody) {\n xhr.__rollbar_xhr.request = data;\n }\n xhr.__rollbar_event = self.captureNetwork(\n xhr.__rollbar_xhr,\n 'xhr',\n undefined,\n );\n }\n if (xhr.readyState < 2) {\n xhr.__rollbar_xhr.start_time_ms = _.now();\n }\n if (xhr.readyState > 3) {\n const end_time_ms = _.now();\n xhr.__rollbar_xhr.end_time_ms = end_time_ms;\n\n let headers = null;\n xhr.__rollbar_xhr.response_content_type =\n xhr.getResponseHeader('Content-Type');\n if (self.autoInstrument.networkResponseHeaders) {\n const headersConfig =\n self.autoInstrument.networkResponseHeaders;\n headers = {};\n try {\n let header;\n if (headersConfig === true) {\n const allHeaders = xhr.getAllResponseHeaders();\n if (allHeaders) {\n const arr = allHeaders.trim().split(/[\\r\\n]+/);\n let parts, value;\n for (const h of arr) {\n parts = h.split(': ');\n header = parts.shift();\n value = parts.join(': ');\n headers[header] = value;\n }\n }\n } else {\n for (const h of headersConfig) {\n headers[h] = xhr.getResponseHeader(h);\n }\n }\n } catch (e) {\n /* we ignore the errors here that could come from different\n * browser issues with the xhr methods */\n }\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n try {\n body = xhr.responseText;\n } catch (e) {\n /* ignore errors from reading responseText */\n }\n }\n let response = null;\n if (body || headers) {\n response = {};\n if (body) {\n if (\n self.isJsonContentType(\n xhr.__rollbar_xhr.response_content_type,\n )\n ) {\n response.body = self.scrubJson(body);\n } else {\n response.body = body;\n }\n }\n if (headers) {\n response.headers = headers;\n }\n }\n if (response) {\n xhr.__rollbar_xhr.response = response;\n }\n try {\n let code = xhr.status;\n code = code === 1223 ? 204 : code;\n xhr.__rollbar_xhr.status_code = code;\n self.addOtelNetworkResponse(\n xhr.__rollbar_event,\n end_time_ms,\n code,\n );\n xhr.__rollbar_event.level =\n self.telemeter.levelFromStatus(code);\n self.errorOnHttpStatus(xhr.__rollbar_xhr);\n } catch (e) {\n /* ignore possible exception from xhr.status */\n }\n }\n }\n }\n\n wrapProp('onload', xhr);\n wrapProp('onerror', xhr);\n wrapProp('onprogress', xhr);\n\n if (\n 'onreadystatechange' in xhr &&\n _.isFunction(xhr.onreadystatechange)\n ) {\n replace(xhr, 'onreadystatechange', function (orig) {\n return self.rollbar.wrap(\n orig,\n undefined,\n onreadystatechangeHandler,\n );\n });\n } else {\n xhr.onreadystatechange = onreadystatechangeHandler;\n }\n if (xhr.__rollbar_xhr && self.trackHttpErrors()) {\n xhr.__rollbar_xhr.stack = new Error().stack;\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n }\n\n if ('fetch' in this._window) {\n replace(\n this._window,\n 'fetch',\n function (orig) {\n return function (fn, t) {\n const args = [...arguments];\n const input = args[0];\n let method = 'GET';\n let url;\n const isUrlObject = _isUrlObject(input);\n if (_.isType(input, 'string') || isUrlObject) {\n url = isUrlObject ? input.toString() : input;\n } else if (input) {\n url = input.url;\n if (input.method) {\n method = input.method;\n }\n }\n if (args[1] && args[1].method) {\n method = args[1].method;\n }\n const metadata = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n if (args[1] && args[1].headers) {\n // Argument may be a Headers object, or plain object. Ensure here that\n // we are working with a Headers object with case-insensitive keys.\n const reqHeaders = headers(args[1].headers);\n\n metadata.request_content_type = reqHeaders.get('Content-Type');\n\n if (self.autoInstrument.networkRequestHeaders) {\n metadata.request_headers = self.fetchHeaders(\n reqHeaders,\n self.autoInstrument.networkRequestHeaders,\n );\n }\n }\n\n if (self.autoInstrument.networkRequestBody) {\n if (args[1] && args[1].body) {\n metadata.request = args[1].body;\n } else if (\n args[0] &&\n !_.isType(args[0], 'string') &&\n args[0].body\n ) {\n metadata.request = args[0].body;\n }\n }\n const telemetryEvent = self.captureNetwork(\n metadata,\n 'fetch',\n undefined,\n );\n if (self.trackHttpErrors()) {\n metadata.stack = new Error().stack;\n }\n\n // Start our handler before returning the promise. This allows resp.clone()\n // to execute before other handlers touch the response.\n return orig.apply(this, args).then(function (resp) {\n const end_time_ms = _.now();\n metadata.end_time_ms = end_time_ms;\n metadata.status_code = resp.status;\n self.addOtelNetworkResponse(\n telemetryEvent,\n end_time_ms,\n resp.status,\n );\n\n metadata.response_content_type = resp.headers.get('Content-Type');\n let headers = null;\n if (self.autoInstrument.networkResponseHeaders) {\n headers = self.fetchHeaders(\n resp.headers,\n self.autoInstrument.networkResponseHeaders,\n );\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n if (typeof resp.text === 'function') {\n // Response.text() is not implemented on some platforms\n // The response must be cloned to prevent reading (and locking) the original stream.\n // This must be done before other handlers touch the response.\n body = resp.clone().text(); //returns a Promise\n }\n }\n if (headers || body) {\n metadata.response = {};\n if (body) {\n // Test to ensure body is a Promise, which it should always be.\n if (typeof body.then === 'function') {\n body.then(function (text) {\n if (\n text &&\n self.isJsonContentType(metadata.response_content_type)\n ) {\n metadata.response.body = self.scrubJson(text);\n } else {\n metadata.response.body = text;\n }\n });\n } else {\n metadata.response.body = body;\n }\n }\n if (headers) {\n metadata.response.headers = headers;\n }\n }\n self.errorOnHttpStatus(metadata);\n return resp;\n });\n };\n },\n this.replacements,\n 'network',\n );\n }\n }\n\n captureNetwork(metadata, subtype, rollbarUUID) {\n if (\n metadata.request &&\n this.isJsonContentType(metadata.request_content_type)\n ) {\n metadata.request = this.scrubJson(metadata.request);\n }\n return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID);\n }\n\n isJsonContentType(contentType) {\n return contentType &&\n _.isType(contentType, 'string') &&\n contentType.toLowerCase().includes('json')\n ? true\n : false;\n }\n\n addOtelNetworkResponse(event, endTimeMs, statusCode) {\n if (event.otelAttributes) {\n event.otelAttributes['response.timeUnixNano'] = (\n endTimeMs * 1e6\n ).toString();\n event.otelAttributes.statusCode = statusCode;\n }\n }\n\n scrubJson(json) {\n return JSON.stringify(scrub(JSON.parse(json), this.options.scrubFields));\n }\n\n fetchHeaders(inHeaders, headersConfig) {\n const outHeaders = {};\n try {\n if (headersConfig === true) {\n if (typeof inHeaders.entries === 'function') {\n // Headers.entries() is not implemented in IE\n const allHeaders = inHeaders.entries();\n let currentHeader = allHeaders.next();\n while (!currentHeader.done) {\n outHeaders[currentHeader.value[0]] = currentHeader.value[1];\n currentHeader = allHeaders.next();\n }\n }\n } else {\n for (const h of headersConfig) {\n outHeaders[h] = inHeaders.get(h);\n }\n }\n } catch (e) {\n /* ignore probable IE errors */\n }\n return outHeaders;\n }\n\n trackHttpErrors() {\n return (\n this.autoInstrument.networkErrorOnHttp5xx ||\n this.autoInstrument.networkErrorOnHttp4xx ||\n this.autoInstrument.networkErrorOnHttp0\n );\n }\n\n errorOnHttpStatus(metadata) {\n const status = metadata.status_code;\n\n if (\n (status >= 500 && this.autoInstrument.networkErrorOnHttp5xx) ||\n (status >= 400 && this.autoInstrument.networkErrorOnHttp4xx) ||\n (status === 0 && this.autoInstrument.networkErrorOnHttp0)\n ) {\n const error = new Error('HTTP request failed with Status ' + status);\n error.stack = metadata.stack;\n this.rollbar.error(error, { skipFrames: 1 });\n }\n }\n\n deinstrumentConsole() {\n let b;\n while (this.replacements['log'].length) {\n b = this.replacements['log'].shift();\n this._window.console[b[0]] = b[1];\n }\n }\n\n instrumentConsole() {\n if (!this._window?.console?.log) {\n return;\n }\n\n const self = this;\n const c = this._window.console;\n\n function wrapConsole(method) {\n 'use strict'; // See https://github.com/rollbar/rollbar.js/pull/778\n\n const orig = c[method];\n const origConsole = c;\n const level = method === 'warn' ? 'warning' : method;\n c[method] = function () {\n const args = Array.prototype.slice.call(arguments);\n const message = _.formatArgsAsString(args);\n self.telemeter.captureLog(message, level, null, _.now());\n if (orig) {\n Function.prototype.apply.call(orig, origConsole, args);\n }\n };\n self.replacements['log'].push([method, orig]);\n }\n const methods = ['debug', 'info', 'warn', 'error', 'log'];\n try {\n for (const m of methods) {\n wrapConsole(m);\n }\n } catch (e) {\n this.diagnostic.instrumentConsole = { error: e.message };\n }\n }\n\n deinstrumentDom() {\n this.removeListeners('dom');\n }\n\n instrumentDom() {\n const self = this;\n this.addListener(\n 'dom',\n this._window,\n ['click', 'dblclick', 'contextmenu'],\n (e) => this.handleEvent('click', e),\n );\n this.addListener(\n 'dom',\n this._window,\n ['dragstart', 'dragend', 'dragenter', 'dragleave', 'drop'],\n (e) => this.handleEvent('dragdrop', e),\n );\n this.addListener('dom', this._window, ['blur', 'focus'], (e) =>\n this.handleEvent('focus', e),\n );\n this.addListener('dom', this._window, ['submit', 'invalid'], (e) =>\n this.handleEvent('form', e),\n );\n this.addListener('dom', this._window, ['input', 'change'], (e) =>\n this.handleEvent('input', e),\n );\n this.addListener('dom', this._window, ['resize'], (e) =>\n this.handleEvent('resize', e),\n );\n this.addListener('dom', this._document, ['DOMContentLoaded'], (e) =>\n this.handleEvent('contentLoaded', e),\n );\n }\n\n handleEvent(name, evt) {\n try {\n return {\n click: this.handleClick,\n dragdrop: this.handleDrag,\n focus: this.handleFocus,\n form: this.handleForm,\n input: this.handleInput,\n resize: this.handleResize,\n contentLoaded: this.handleContentLoaded,\n }[name].call(this, evt);\n } catch (exc) {\n console.log(`${name} handler error`, evt, exc, exc.stack);\n }\n }\n\n handleContentLoaded(evt) {\n const replayId = this.rollbar.triggerReplay({\n type: 'navigation',\n path: new URL(this._location.href).pathname,\n });\n }\n\n handleClick(evt) {\n const tagName = evt.target?.tagName.toLowerCase();\n if (['input', 'select', 'textarea'].includes(tagName)) return;\n\n this.telemeter.captureClick({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n timestamp: _.now(),\n });\n }\n\n handleFocus(evt) {\n const type = evt.type;\n const element = evt.target?.window\n ? 'window'\n : domUtil.elementString(evt.target);\n\n this.telemeter.captureFocus({\n type: type,\n isSynthetic: !evt.isTrusted,\n element,\n timestamp: _.now(),\n });\n }\n\n handleForm(evt) {\n // TODO: implement form event handling\n const type = evt.type;\n const elementString = evt.target?.window\n ? 'window'\n : domUtil.elementString(evt.target);\n }\n\n handleResize(evt) {\n const textZoomRatio = window.screen.width / window.innerWidth;\n\n this.telemeter.captureResize({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n width: window.innerWidth,\n height: window.innerHeight,\n textZoomRatio: textZoomRatio,\n timestamp: _.now(),\n });\n }\n\n handleDrag(evt) {\n const type = evt.type;\n let kinds, mediaTypes, dropEffect, effectAllowed;\n\n if (type === 'drop') {\n kinds = [];\n mediaTypes = [];\n const objs = [...evt.dataTransfer.files, ...evt.dataTransfer.items];\n for (const o of objs) {\n if (o.kind && o.type) {\n kinds.push(o.kind);\n mediaTypes.push(o.type);\n }\n }\n }\n if (['drop', 'dragstart'].includes(type)) {\n dropEffect = evt.dataTransfer?.dropEffect;\n effectAllowed = evt.dataTransfer?.effectAllowed;\n }\n\n this.telemeter.captureDragDrop({\n type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n dropEffect: dropEffect,\n effectAllowed: effectAllowed,\n kinds: JSON.stringify(kinds),\n mediaTypes: JSON.stringify(mediaTypes),\n timestamp: _.now(),\n });\n }\n\n /*\n * Applies Rollbar telemetry scrubbing options to the dom input value.\n * When replay options are present, applies those as well.\n */\n scrubInputValue(value, element, tagName, inputType) {\n const mask = '******';\n\n if (inputType === 'password') {\n return mask;\n }\n\n if (this.scrubTelemetryInputs) {\n return mask;\n } else {\n const description = domUtil.describeElement(element);\n if (this.telemetryScrubber) {\n if (this.telemetryScrubber(description)) {\n return mask;\n }\n } else if (this.defaultValueScrubber(description)) {\n return mask;\n }\n }\n\n // Apply replay options regardless of other scrubbing\n if (\n domUtil.isMatchingElement(element, this.scrubClasses, this.scrubSelectors)\n ) {\n return mask;\n }\n\n // This check is last since maskInputFn returns a modified value rather\n // than a boolean, which would cause an early return even if the value\n // was not scrubbed.\n if (\n this.maskInputOptions[tagName.toLowerCase()] ||\n this.maskInputOptions[inputType]\n ) {\n if (this.maskInputFn) {\n return this.maskInputFn(value, element);\n } else {\n return mask;\n }\n }\n\n return value;\n }\n\n /*\n * Uses the `input` event for everything except radio and checkbox inputs.\n * For those, it uses the `change` event.\n */\n handleInput(evt) {\n const type = evt.type;\n const tagName = evt.target?.tagName.toLowerCase();\n let value = evt.target?.value;\n let inputType = evt.target?.attributes?.type?.value || evt.target?.type;\n\n if (value !== undefined) {\n value = this.scrubInputValue(value, evt.target, tagName, inputType);\n }\n\n switch (type) {\n case 'input':\n if (['radio', 'checkbox'].includes(inputType)) return;\n if (['select', 'textarea'].includes(tagName)) {\n inputType = tagName;\n }\n break;\n\n case 'change':\n if (!['radio', 'checkbox'].includes(inputType)) return;\n if (inputType === 'checkbox') {\n value = evt.target?.checked;\n }\n break;\n }\n\n this.telemeter.captureInput({\n type: inputType,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n value,\n timestamp: _.now(),\n });\n }\n\n deinstrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n restore(this.replacements, 'navigation');\n }\n\n instrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n const self = this;\n replace(\n this._window,\n 'onpopstate',\n function (orig) {\n return function () {\n const current = self._location.href;\n self.handleUrlChange(self._lastHref, current);\n if (orig) {\n orig.apply(this, arguments);\n }\n };\n },\n this.replacements,\n 'navigation',\n );\n\n replace(\n this._window.history,\n 'pushState',\n function (orig) {\n return function () {\n const url = arguments.length > 2 ? arguments[2] : undefined;\n if (url) {\n self.handleUrlChange(self._lastHref, url + '');\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'navigation',\n );\n }\n\n handleUrlChange(from, to) {\n const parsedHref = urlparser.parse(this._location.href);\n const parsedTo = urlparser.parse(to);\n const parsedFrom = urlparser.parse(from);\n this._lastHref = to;\n if (\n parsedHref.protocol === parsedTo.protocol &&\n parsedHref.host === parsedTo.host\n ) {\n to = parsedTo.path + (parsedTo.hash || '');\n }\n if (\n parsedHref.protocol === parsedFrom.protocol &&\n parsedHref.host === parsedFrom.host\n ) {\n from = parsedFrom.path + (parsedFrom.hash || '');\n }\n this.telemeter.captureNavigation(from, to, null, _.now());\n const replayId = this.rollbar.triggerReplay({\n type: 'navigation',\n path: to,\n });\n }\n\n deinstrumentConnectivity = function () {\n this.removeListeners('connectivity');\n };\n\n instrumentConnectivity() {\n const self = this;\n this.addListener(\n 'connectivity',\n this._window,\n ['online', 'offline'],\n (evt) => self.handleConnectivity(evt),\n );\n }\n\n handleConnectivity(evt) {\n const type = evt.type;\n\n this.telemeter.captureConnectivityChange({\n type,\n isSynthetic: !evt.isTrusted,\n timestamp: _.now(),\n });\n }\n\n handleCspEvent(cspEvent) {\n let message =\n 'Security Policy Violation: ' +\n 'blockedURI: ' +\n cspEvent.blockedURI +\n ', ' +\n 'violatedDirective: ' +\n cspEvent.violatedDirective +\n ', ' +\n 'effectiveDirective: ' +\n cspEvent.effectiveDirective +\n ', ';\n\n if (cspEvent.sourceFile) {\n message +=\n 'location: ' +\n cspEvent.sourceFile +\n ', ' +\n 'line: ' +\n cspEvent.lineNumber +\n ', ' +\n 'col: ' +\n cspEvent.columnNumber +\n ', ';\n }\n\n message += 'originalPolicy: ' + cspEvent.originalPolicy;\n\n this.telemeter.captureLog(message, 'error', null, _.now());\n this.handleCspError(message);\n }\n\n handleCspError(message) {\n if (this.autoInstrument.errorOnContentSecurityPolicy) {\n this.rollbar.error(message);\n }\n }\n\n deinstrumentContentSecurityPolicy() {\n this.removeListeners('contentsecuritypolicy');\n }\n\n instrumentContentSecurityPolicy() {\n if (!('addEventListener' in this._document)) {\n return;\n }\n\n const cspHandler = this.handleCspEvent.bind(this);\n this.addListener(\n 'contentsecuritypolicy',\n this._document,\n ['securitypolicyviolation'],\n cspHandler,\n );\n }\n\n addListener(section, obj, types, handler) {\n if (obj.addEventListener) {\n for (const t of types) {\n const options = { capture: true, passive: true };\n obj.addEventListener(t, handler, options, true);\n this.eventRemovers[section].push(function () {\n obj.removeEventListener(t, handler, options);\n });\n }\n }\n }\n\n removeListeners(section) {\n let r;\n while (this.eventRemovers[section].length) {\n r = this.eventRemovers[section].shift();\n r();\n }\n }\n}\n\nfunction _isUrlObject(input) {\n return typeof URL !== 'undefined' && input instanceof URL;\n}\n\nexport default Instrumenter;\n","function wrapGlobals(window, handler, shim) {\n if (!window) {\n return;\n }\n // Adapted from https://github.com/bugsnag/bugsnag-js\n var globals =\n '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'.split(\n ',',\n );\n var i, global;\n for (i = 0; i < globals.length; ++i) {\n global = globals[i];\n\n if (window[global] && window[global].prototype) {\n _extendListenerPrototype(handler, window[global].prototype, shim);\n }\n }\n}\n\nfunction _extendListenerPrototype(handler, prototype, shim) {\n if (\n prototype.hasOwnProperty &&\n prototype.hasOwnProperty('addEventListener')\n ) {\n var oldAddEventListener = prototype.addEventListener;\n while (\n oldAddEventListener._rollbarOldAdd &&\n oldAddEventListener.belongsToShim\n ) {\n oldAddEventListener = oldAddEventListener._rollbarOldAdd;\n }\n var addFn = function (event, callback, bubble) {\n oldAddEventListener.call(this, event, handler.wrap(callback), bubble);\n };\n addFn._rollbarOldAdd = oldAddEventListener;\n addFn.belongsToShim = shim;\n prototype.addEventListener = addFn;\n\n var oldRemoveEventListener = prototype.removeEventListener;\n while (\n oldRemoveEventListener._rollbarOldRemove &&\n oldRemoveEventListener.belongsToShim\n ) {\n oldRemoveEventListener = oldRemoveEventListener._rollbarOldRemove;\n }\n var removeFn = function (event, callback, bubble) {\n oldRemoveEventListener.call(\n this,\n event,\n (callback && callback._rollbar_wrapped) || callback,\n bubble,\n );\n };\n removeFn._rollbarOldRemove = oldRemoveEventListener;\n removeFn.belongsToShim = shim;\n prototype.removeEventListener = removeFn;\n }\n}\n\nexport default wrapGlobals;\n","import * as _ from './utility.js';\nimport traverse from './utility/traverse.js';\n\nfunction raw(payload, jsonBackup) {\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction selectFrames(frames, range) {\n var len = frames.length;\n if (len > range * 2) {\n return frames.slice(0, range).concat(frames.slice(len - range));\n }\n return frames;\n}\n\nfunction truncateFrames(payload, jsonBackup, range) {\n range = typeof range === 'undefined' ? 30 : range;\n var body = payload.data.body;\n var frames;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (var i = 0; i < chain.length; i++) {\n frames = chain[i].frames;\n frames = selectFrames(frames, range);\n chain[i].frames = frames;\n }\n } else if (body.trace) {\n frames = body.trace.frames;\n frames = selectFrames(frames, range);\n body.trace.frames = frames;\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction maybeTruncateValue(len, val) {\n if (!val) {\n return val;\n }\n if (val.length > len) {\n return val.slice(0, len - 3).concat('...');\n }\n return val;\n}\n\nfunction truncateStrings(len, payload, jsonBackup) {\n function truncator(k, v, seen) {\n switch (_.typeName(v)) {\n case 'string':\n return maybeTruncateValue(len, v);\n case 'object':\n case 'array':\n return traverse(v, truncator, seen);\n default:\n return v;\n }\n }\n payload = traverse(payload, truncator);\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction truncateTraceData(traceData) {\n if (traceData.exception) {\n delete traceData.exception.description;\n traceData.exception.message = maybeTruncateValue(\n 255,\n traceData.exception.message,\n );\n }\n traceData.frames = selectFrames(traceData.frames, 1);\n return traceData;\n}\n\nfunction minBody(payload, jsonBackup) {\n var body = payload.data.body;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (var i = 0; i < chain.length; i++) {\n chain[i] = truncateTraceData(chain[i]);\n }\n } else if (body.trace) {\n body.trace = truncateTraceData(body.trace);\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction needsTruncation(payload, maxSize) {\n return _.maxByteSize(payload) > maxSize;\n}\n\nfunction truncate(payload, jsonBackup, maxSize) {\n maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize;\n var strategies = [\n raw,\n truncateFrames,\n truncateStrings.bind(null, 1024),\n truncateStrings.bind(null, 512),\n truncateStrings.bind(null, 256),\n minBody,\n ];\n var strategy, results, result;\n\n while ((strategy = strategies.shift())) {\n results = strategy(payload, jsonBackup);\n payload = results[0];\n result = results[1];\n if (result.error || !needsTruncation(result.value, maxSize)) {\n return result;\n }\n }\n return result;\n}\n\nexport default {\n truncate,\n\n /* for testing */\n raw,\n truncateFrames,\n truncateStrings,\n maybeTruncateValue,\n};\n","export class Context {\n constructor(parentContext) {\n this._currentContext = parentContext ? new Map(parentContext) : new Map();\n }\n\n getValue(key) {\n return this._currentContext.get(key);\n }\n\n setValue(key, value) {\n const context = new Context(this._currentContext);\n context._currentContext.set(key, value);\n return context;\n }\n\n deleteValue(key) {\n const context = new Context(self._currentContext);\n context._currentContext.delete(key);\n return context;\n }\n}\n\nexport const ROOT_CONTEXT = new Context();\n","import { ROOT_CONTEXT } from './context.js';\n\nexport class ContextManager {\n constructor() {\n this.currentContext = ROOT_CONTEXT;\n }\n\n active() {\n return this.currentContext;\n }\n\n enterContext(context) {\n const previousContext = this.currentContext;\n this.currentContext = context || ROOT_CONTEXT;\n return previousContext;\n }\n\n exitContext(context) {\n this.currentContext = context;\n return this.currentContext;\n }\n\n with(context, fn, thisArg, ...args) {\n const previousContext = this.enterContext(context);\n try {\n return fn.call(thisArg, ...args);\n } finally {\n this.exitContext(previousContext);\n }\n }\n}\n\nexport function createContextKey(key) {\n // Use Symbol for OpenTelemetry compatibility.\n return Symbol.for(key);\n}\n","/**\n * Generate a random hexadecimal ID of specified byte length\n *\n * @param {number} bytes - Number of bytes for the ID (default: 16)\n * @returns {string} - Hexadecimal string representation\n */\nfunction gen(bytes = 16) {\n let randomBytes = new Uint8Array(bytes);\n crypto.getRandomValues(randomBytes);\n let randHex = Array.from(randomBytes, (byte) =>\n byte.toString(16).padStart(2, '0'),\n ).join('');\n return randHex;\n}\n\n/**\n * Tracing id generation utils\n *\n * @example\n * import id from './id.js';\n *\n * const spanId = id.gen(8); // => \"a1b2c3d4e5f6...\"\n */\nexport default { gen };\n","import id from './id.js';\n\nconst SESSION_KEY = 'RollbarSession';\n\nexport class Session {\n _attributes;\n\n constructor(tracing, options) {\n this.options = options;\n this.tracing = tracing;\n this.window = tracing.window;\n this.session = null;\n this._attributes = {};\n }\n\n init(attrs = {}) {\n if (this.session) {\n return this;\n }\n this.getSession() || this.createSession();\n\n this.initSessionAttributes(attrs);\n\n return this;\n }\n\n getSession() {\n try {\n const serializedSession = this.window.sessionStorage.getItem(SESSION_KEY);\n\n if (!serializedSession) {\n return null;\n }\n\n this.session = JSON.parse(serializedSession);\n } catch {\n return null;\n }\n return this;\n }\n\n createSession() {\n this.session = {\n id: id.gen(),\n createdAt: Date.now(),\n };\n\n return this.setSession(this.session);\n }\n\n setSession(session) {\n const sessionString = JSON.stringify(session);\n\n try {\n this.window.sessionStorage.setItem(SESSION_KEY, sessionString);\n } catch {\n return null;\n }\n return this;\n }\n\n get attributes() {\n return this._attributes;\n }\n\n setAttributes(attributes) {\n this._attributes = { ...this._attributes, ...attributes };\n return this;\n }\n\n setUser(user) {\n this.setAttributes({\n 'user.id': user?.id,\n 'user.email': user?.email,\n 'user.name': user?.name || user?.username,\n });\n return this;\n }\n\n initSessionAttributes(attrs) {\n this.setAttributes({\n 'session.id': this.session.id,\n 'browser.brands': navigator.userAgentData?.brands,\n 'browser.language': navigator.language,\n 'browser.mobile': navigator.userAgentData?.mobile,\n 'browser.platform': navigator.userAgentData?.platform,\n 'client.address': '$remote_ip', // updated at the API\n 'rollbar.notifier.framework': 'browser-js',\n 'user_agent.original': navigator.userAgent,\n ...attrs,\n });\n return this;\n }\n}\n","/**\n * @module hrtime\n *\n * @description Methods for handling OpenTelemetry hrtime.\n */\n\n/**\n * Convert a duration in milliseconds to an OpenTelemetry hrtime tuple.\n *\n * @param {number} millis - The duration in milliseconds.\n * @returns {[number, number]} An array where the first element is seconds\n * and the second is nanoseconds.\n */\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in milliseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in milliseconds.\n */\nfunction toMillis(hrtime) {\n return hrtime[0] * 1e3 + Math.round(hrtime[1] / 1e6);\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in nanoseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in nanoseconds.\n */\nfunction toNanos(hrtime) {\n return hrtime[0] * 1e9 + hrtime[1];\n}\n\n/**\n * Adds two OpenTelemetry hrtime tuples.\n *\n * @param {[number, number]} a - The first hrtime tuple [s, ns].\n * @param {[number, number]} b - The second hrtime tuple [s, ns].\n * @returns {[number, number]} Summed hrtime tuple, normalized.\n *\n */\nfunction add(a, b) {\n return [a[0] + b[0] + Math.trunc((a[1] + b[1]) / 1e9), (a[1] + b[1]) % 1e9];\n}\n\n/**\n * Get the current high-resolution time as an OpenTelemetry hrtime tuple.\n *\n * @param {boolean} usePerformance=false - If true, uses the Performance API (timeOrigin + now()).\n *\n * @returns {[number, number]} The current hrtime tuple [s, ns].\n */\nfunction now(usePerformance = false) {\n if (usePerformance) {\n return add(\n fromMillis(performance.timeOrigin),\n fromMillis(performance.now()),\n );\n }\n return fromMillis(Date.now());\n}\n\n/**\n * Check if a value is a valid OpenTelemetry hrtime tuple.\n *\n * An hrtime tuple is an Array of exactly two numbers:\n * [seconds, nanoseconds]\n *\n * @param {*} value – anything to test\n * @returns {boolean} true if `value` is a [number, number] array of length 2\n *\n * @example\n * isHrTime([ 1, 500 ]); // true\n * isHrTime([ 0, 1e9 ]); // true\n * isHrTime([ '1', 500 ]); // false\n * isHrTime({ 0: 1, 1: 500 }); // false\n */\nfunction isHrTime(value) {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number'\n );\n}\n\n/**\n * Methods for handling hrtime. OpenTelemetry uses the [seconds, nanoseconds]\n * format for hrtime in the `ReadableSpan` interface.\n *\n * @example\n * import hrtime from '@tracing/hrtime.js';\n *\n * hrtime.fromMillis(1000);\n * hrtime.toMillis([0, 1000]);\n * hrtime.add([0, 0], [0, 1000]);\n * hrtime.now();\n * hrtime.isHrTime([0, 1000]);\n */\nexport default { fromMillis, toMillis, toNanos, add, now, isHrTime };\n","import hrtime from './hrtime.js';\n\n/**\n * SpanExporter is responsible for exporting ReadableSpan objects\n * and transforming them into the OTLP-compatible format.\n */\nexport class SpanExporter {\n constructor(api, options = {}) {\n this.api = api;\n this.options = options;\n }\n\n /**\n * Export spans to the span export queue\n *\n * @param {Array} spans - Array of ReadableSpan objects to export\n * @param {Function} _resultCallback - Optional callback (not used)\n */\n export(spans, _resultCallback) {\n spanExportQueue.push(...spans);\n }\n\n /**\n * Transforms an array of ReadableSpan objects into the OTLP format payload\n * compatible with the Rollbar API. This follows the OpenTelemetry protocol\n * specification for traces.\n *\n * @returns {Object} OTLP format payload for API transmission\n */\n toPayload() {\n const spans = spanExportQueue.slice();\n spanExportQueue.length = 0;\n\n if (!spans || !spans.length) {\n return { resourceSpans: [] };\n }\n\n const resource = (spans[0] && spans[0].resource) || {};\n\n const scopeMap = new Map();\n\n for (const span of spans) {\n const scopeKey = span.instrumentationScope\n ? `${span.instrumentationScope.name}:${span.instrumentationScope.version}`\n : 'default:1.0.0';\n\n if (!scopeMap.has(scopeKey)) {\n scopeMap.set(scopeKey, {\n scope: span.instrumentationScope || {\n name: 'default',\n version: '1.0.0',\n attributes: [],\n },\n spans: [],\n });\n }\n\n scopeMap.get(scopeKey).spans.push(this._transformSpan(span));\n }\n\n return {\n resourceSpans: [\n {\n resource: this._transformResource(resource),\n scopeSpans: Array.from(scopeMap.values()).map((scopeData) => ({\n scope: this._transformInstrumentationScope(scopeData.scope),\n spans: scopeData.spans,\n })),\n },\n ],\n };\n }\n\n /**\n * Sends the given payload to the Rollbar API.\n *\n * @param {String} payload - Serialized OTLP format payload\n * @param {Object} headers - Optional request headers\n * @returns {Promise} Promise that resolves when the request completes\n */\n post(payload, headers = {}) {\n return this.api.postSpans(payload, headers);\n }\n\n /**\n * Transforms a ReadableSpan into the OTLP Span format\n *\n * @private\n * @param {Object} span - ReadableSpan object to transform\n * @returns {Object} OTLP Span format\n */\n _transformSpan(span) {\n const transformAttributes = (attributes) => {\n return Object.entries(attributes || {}).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n };\n\n const transformEvents = (events) => {\n return (events || []).map((event) => ({\n timeUnixNano: hrtime.toNanos(event.time),\n name: event.name,\n attributes: transformAttributes(event.attributes),\n }));\n };\n\n return {\n traceId: span.spanContext.traceId,\n spanId: span.spanContext.spanId,\n parentSpanId: span.parentSpanId || '',\n name: span.name,\n kind: span.kind || 1, // INTERNAL by default\n startTimeUnixNano: hrtime.toNanos(span.startTime),\n endTimeUnixNano: hrtime.toNanos(span.endTime),\n attributes: transformAttributes(span.attributes),\n events: transformEvents(span.events),\n };\n }\n\n /**\n * Transforms a resource object into OTLP Resource format\n *\n * @private\n * @param {Object} resource - Resource information\n * @returns {Object} OTLP Resource format\n */\n _transformResource(resource) {\n const attributes = resource.attributes || {};\n const keyValues = Object.entries(attributes).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n\n return {\n attributes: keyValues,\n };\n }\n\n /**\n * Transforms an instrumentation scope into OTLP InstrumentationScope format\n *\n * @private\n * @param {Object} scope - Instrumentation scope information\n * @returns {Object} OTLP InstrumentationScope format\n */\n _transformInstrumentationScope(scope) {\n return {\n name: scope.name || '',\n version: scope.version || '',\n attributes: (scope.attributes || []).map((attr) => ({\n key: attr.key,\n value: this._transformAnyValue(attr.value),\n })),\n };\n }\n\n /**\n * Transforms a JavaScript value into an OTLP AnyValue\n *\n * @private\n * @param {any} value - Value to transform\n * @returns {Object} OTLP AnyValue format\n */\n _transformAnyValue(value) {\n if (value === null || value === undefined) {\n return { stringValue: '' };\n }\n\n const type = typeof value;\n\n if (type === 'string') {\n return { stringValue: value };\n } else if (type === 'number') {\n if (Number.isInteger(value)) {\n return { intValue: value.toString() };\n } else {\n return { doubleValue: value };\n }\n } else if (type === 'boolean') {\n return { boolValue: value };\n } else if (Array.isArray(value)) {\n return {\n arrayValue: {\n values: value.map((v) => this._transformAnyValue(v)),\n },\n };\n } else if (type === 'object') {\n return {\n kvlistValue: {\n values: Object.entries(value).map(([k, v]) => ({\n key: k,\n value: this._transformAnyValue(v),\n })),\n },\n };\n }\n\n return { stringValue: String(value) };\n }\n}\n\nexport const spanExportQueue = [];\n","import logger from '../logger.js';\n\nexport class SpanProcessor {\n constructor(exporter, options = {}) {\n this.exporter = exporter;\n this.options = options;\n this.pendingSpans = new Map();\n this.transforms = [this.userTransform.bind(this)];\n }\n\n addTransform(transformFn) {\n this.transforms.unshift(transformFn);\n }\n\n userTransform(span) {\n if (this.options.transformSpan) {\n this.options.transformSpan({ span: span });\n }\n }\n\n applyTransforms(span) {\n for (const transform of this.transforms) {\n try {\n transform(span);\n } catch (e) {\n logger.error('Error running span transform callback', e);\n }\n }\n }\n\n onStart(span, _parentContext) {\n this.pendingSpans.set(span.span.spanContext.spanId, span);\n }\n\n onEnd(span) {\n this.applyTransforms(span.span);\n this.exporter.export([span.export()]);\n this.pendingSpans.delete(span.span.spanContext.spanId);\n }\n}\n","import hrtime from './hrtime.js';\n\nexport class Span {\n constructor(options) {\n this.usePerformance = options.usePerformance;\n this.initReadableSpan(options);\n\n this.spanProcessor = options.spanProcessor;\n this.spanProcessor.onStart(this, options.context);\n\n if (options.attributes) {\n this.setAttributes(options.attributes);\n }\n return this;\n }\n\n initReadableSpan(options) {\n this.span = {\n name: options.name,\n kind: options.kind,\n spanContext: options.spanContext,\n parentSpanId: options.parentSpanId,\n startTime: options.startTime || hrtime.now(options.usePerformance),\n endTime: [0, 0],\n status: { code: 0, message: '' },\n attributes: { 'session.id': options.session?.id },\n links: [],\n events: [],\n duration: 0,\n ended: false,\n resource: options.resource,\n instrumentationScope: options.scope,\n droppedAttributesCount: 0,\n droppedEventsCount: 0,\n droppedLinksCount: 0,\n };\n }\n\n spanContext() {\n return this.span.spanContext;\n }\n\n get spanId() {\n return this.span.spanContext.spanId;\n }\n\n get traceId() {\n return this.span.spanContext.traceId;\n }\n\n setAttribute(key, value) {\n if (value == null || this.span.ended) return this;\n if (key.length === 0) return this;\n\n this.span.attributes[key] = value;\n return this;\n }\n\n setAttributes(attributes) {\n for (const [k, v] of Object.entries(attributes)) {\n this.setAttribute(k, v);\n }\n return this;\n }\n\n addEvent(name, attributes = {}, time) {\n if (this.span.ended) return this;\n\n this.span.events.push({\n name,\n attributes,\n time: time || hrtime.now(),\n droppedAttributesCount: 0,\n });\n\n return this;\n }\n\n isRecording() {\n return this.span.ended === false;\n }\n\n end(attributes, time) {\n if (attributes) this.setAttributes(attributes);\n this.span.endTime = time || hrtime.now(this.usePerformance);\n this.span.ended = true;\n this.spanProcessor.onEnd(this);\n }\n\n export() {\n return this.span;\n }\n}\n","import { Span } from './span.js';\nimport id from './id.js';\n\nexport class Tracer {\n constructor(tracing, spanProcessor) {\n this.spanProcessor = spanProcessor;\n this.tracing = tracing;\n }\n\n startSpan(\n name,\n options = {},\n context = this.tracing.contextManager.active(),\n ) {\n const parentSpan = this.tracing.getSpan(context);\n const parentSpanContext = parentSpan?.spanContext();\n const spanId = id.gen(8);\n let traceId;\n let traceFlags = 0;\n let traceState = null;\n let parentSpanId;\n if (parentSpanContext) {\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n parentSpanId = parentSpanContext.spanId;\n } else {\n traceId = id.gen(16);\n }\n\n const kind = 0;\n const spanContext = { traceId, spanId, traceFlags, traceState };\n const resource = {\n attributes: {\n ...(this.tracing.resource?.attributes || {}),\n ...(options.resource?.attributes || {}),\n },\n };\n\n const span = new Span({\n resource: resource,\n scope: this.tracing.scope,\n session: this.tracing.session?.session,\n context,\n spanContext,\n name,\n kind,\n parentSpanId,\n spanProcessor: this.spanProcessor,\n startTime: options.startTime,\n usePerformance: options.usePerformance,\n });\n return span;\n }\n}\n","import { ContextManager, createContextKey } from './contextManager.js';\nimport { Session } from './session.js';\nimport { SpanExporter } from './exporter.js';\nimport { SpanProcessor } from './spanProcessor.js';\nimport { Tracer } from './tracer.js';\nimport id from './id.js';\n\nconst SPAN_KEY = createContextKey('Rollbar Context Key SPAN');\n\nexport default class Tracing {\n constructor(gWindow, api, options) {\n this.api = api;\n this.options = options;\n this.window = gWindow;\n\n if (this.window.sessionStorage) {\n this.session = new Session(this, options);\n }\n this.createTracer();\n }\n\n configure(options) {\n // Options merge happens before configure is called, so we can just replace.\n this.options = options;\n }\n\n initSession() {\n if (this.session) {\n this.session.init();\n }\n }\n\n get sessionId() {\n if (this.session) {\n return this.session.session.id;\n }\n return null;\n }\n\n get resource() {\n return {\n attributes: {\n ...(this.options.resource || {}),\n 'rollbar.environment':\n this.options.payload?.environment ?? this.options.environment,\n },\n };\n }\n\n get scope() {\n return {\n name: 'rollbar-browser-js',\n version: this.options.version,\n };\n }\n\n idGen(bytes = 16) {\n return id.gen(bytes);\n }\n\n createTracer() {\n this.contextManager = new ContextManager();\n this.exporter = new SpanExporter(this.api, this.options);\n this.spanProcessor = new SpanProcessor(this.exporter, this.options.tracing);\n this.tracer = new Tracer(this, this.spanProcessor);\n }\n\n getTracer() {\n return this.tracer;\n }\n\n addSpanTransform(transformFn) {\n this.spanProcessor.addTransform(transformFn);\n }\n\n getSpan(context = this.contextManager.active()) {\n return context.getValue(SPAN_KEY);\n }\n\n setSpan(context = this.contextManager.active(), span) {\n return context.setValue(SPAN_KEY, span);\n }\n\n startSpan(name, options = {}, context = this.contextManager.active()) {\n return this.tracer.startSpan(name, options, context);\n }\n\n with(context, fn, thisArg, ...args) {\n return this.contextManager.with(context, fn, thisArg, ...args);\n }\n\n withSpan(name, options, fn, thisArg) {\n const span = this.startSpan(name, options);\n return this.with(\n this.setSpan(this.contextManager.active(), span),\n fn,\n thisArg,\n span,\n );\n }\n}\n","import Rollbar from './core.js';\nimport Telemeter from '../telemetry.js';\nimport Instrumenter from './telemetry.js';\nimport wrapGlobals from './wrapGlobals.js';\nimport scrub from '../scrub.js';\nimport truncation from '../truncation.js';\nimport Tracing from '../tracing/tracing.js';\n\nRollbar.setComponents({\n telemeter: Telemeter,\n instrumenter: Instrumenter,\n wrapGlobals: wrapGlobals,\n scrub: scrub,\n truncation: truncation,\n tracing: Tracing,\n});\n\nexport default Rollbar;\n","import rollbar from '../rollbar.js';\n\nvar options = (typeof window !== 'undefined') && window._rollbarConfig;\nvar alias = options && options.globalAlias || 'Rollbar';\nvar shimRunning = (typeof window !== 'undefined') && window[alias] && typeof window[alias].shimId === 'function' && window[alias].shimId() !== undefined;\n\nif ((typeof window !== 'undefined') && !window._rollbarStartTime) {\n window._rollbarStartTime = (new Date()).getTime();\n}\n\nif (!shimRunning && options) {\n var Rollbar = new rollbar(options);\n window[alias] = Rollbar;\n} else if (typeof window !== 'undefined') {\n window.rollbar = rollbar;\n window._rollbarDidLoad = true;\n} else if (typeof self !== 'undefined') {\n self.rollbar = rollbar;\n self._rollbarDidLoad = true;\n}\n\nexport default rollbar;\n"],"names":["hasOwn","Object","prototype","hasOwnProperty","toStr","toString","isPlainObject","obj","call","hasOwnConstructor","hasIsPrototypeOf","constructor","key","merge","i","src","copy","clone","name","result","create","current","length","arguments","isType","x","t","typeName","_typeof","Error","match","toLowerCase","isFunction","f","isNativeFunction","reRegExpChar","funcMatchString","Function","replace","reIsNative","RegExp","isObject","test","value","type","isString","String","isFiniteNumber","n","Number","isFinite","isDefined","u","isIterable","isError","e","isPromise","p","then","isBrowser","window","redact","uuid4","d","now","uuid","c","r","Math","random","floor","LEVELS","debug","info","warning","error","critical","sanitizeHref","url","urlObject","URL","password","search","_","sanitizeUrl","baseUrlParts","parseUri","anchor","source","query","parseUriOptions","strictMode","q","parser","strict","loose","str","undefined","o","m","exec","uri","l","$0","$1","$2","addParamsAndAccessTokenToPath","accessToken","options","params","access_token","paramsArray","k","push","join","sort","path","qs","indexOf","h","substring","formatUrl","protocol","port","hostname","stringify","backup","JSON","jsonError","backupError","maxByteSize","string","count","code","charCodeAt","jsonParse","s","parse","makeUnhandledStackInfo","message","lineno","colno","mode","backupMessage","errorParser","location","line","column","func","guessFunctionName","context","gatherContext","href","document","useragent","navigator","userAgent","stack","wrapCallback","logger","err","resp","nonCircularClone","seen","newSeen","includes","slice","createItem","args","notifier","requestKeys","lambdaContext","custom","callback","request","arg","extraArgs","diagnostic","argTypes","typ","DOMException","j","len","item","timestamp","data","setCustomItemKeys","_originalArgs","original_arg_types","level","skipFrames","addErrorContext","errors","contextAdded","rollbarContext","error_context","TELEMETRY_TYPES","TELEMETRY_LEVELS","arrayIncludes","arr","val","createTelemetryEvent","metadata","event","addItemAttributes","itemData","attributes","_iterator","_createForOfIteratorHelper","_step","done","a","get","keys","split","set","setPrototypeOf","temp","replacement","formatArgsAsString","substr","Date","filterIp","requestData","captureIp","newIp","parts","pop","beginning","slashIdx","terminal","concat","handleOptions","input","payload","updateDeprecatedOptions","overwriteScrubFields","scrubFields","hostWhiteList","hostSafeList","log","hostBlackList","hostBlockList","RateLimiter","startTime","counter","perMinCounter","platform","platformOptions","configureGlobal","globalSettings","maxItems","itemsPerMinute","shouldSend","elapsedTime","globalRateLimit","globalRateLimitPerMin","checkRate","shouldSendValue","perMinute","setPlatformOptions","limit","ignoreRateLimit","limitPerMin","rateLimitPayload","environment","msg","body","extra","language","version","framework","Queue","rateLimiter","api","replay","_classCallCheck","predicates","pendingItems","pendingRequests","retryQueue","retryHandle","waitCallback","waitIntervalID","_createClass","configure","_this$api","oldOptions","addPredicate","predicate","addPendingItem","removePendingItem","idx","splice","addItem","originalError","originalItem","_this","predicateResult","_applyPredicates","stop","_maybeLog","transmit","replayId","capture","_makeApiRequest","headers","_dequeuePendingRequest","sendOrDiscardReplay","_this$replay","discard","wait","_this2","_maybeCallWait","clearInterval","setInterval","_this3","rateLimitResponse","postItem","_maybeRetry","shouldRetry","retryInterval","RETRIABLE_ERRORS","maxRetries","retries","_retryApiRequest","_this4","retryObject","shift","verbose","_defineProperty","Notifier","queue","transforms","addTransform","transform","enabled","_applyTransforms","bind","transformIndex","transformsLength","cb","Rollbar","telemeter","tracing","tracer","validateTracer","_configuredOptions","setStackTraceLimit","lastError","lastErrorHash","defaultOptions","global","payloadData","_defaultLogLevel","_log","warn","captureEvent","captureDomContentLoaded","ts","captureLoad","buildJsonPayload","sendJsonPayload","jsonPayload","postJsonPayload","defaultLevel","ignoreDuplicateErrors","_sameAsLastError","_addTracingAttributes","_addTracingInfo","_captureRollbarItem","telemetryEvents","copyEvents","_this$tracing","_this$tracing2","span","getSpan","sessionId","spanId","traceId","addEvent","logLevel","_isUncaught","itemHash","generateItemHash","scope","active","validateSpan","setTag","opentracingSpanId","toSpanId","opentracingTraceId","toTraceId","opentracing_span_id","opentracing_trace_id","stackTraceLimit","spanContext","buildPayload","contextResult","getTransportFromOptions","defaults","timeout","transport","detectTransport","proxy","endpoint","opts","pathname","gWindow","self","defaultTransport","fetch","XMLHttpRequest","transportOptions","method","transportAPI","host","appendPathToPath","base","baseTrailingSlash","pathBeginningSlash","_regeneratorRuntime","defineProperty","Symbol","iterator","asyncIterator","toStringTag","define","enumerable","configurable","writable","wrap","Generator","Context","makeInvokeMethod","tryCatch","y","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","mark","__proto__","awrap","async","Promise","reverse","prev","charAt","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","apply","_next","_throw","helpers","OTLPDefaultOptions","Api","urllib","truncation","_getTransport","OTLPTransportOptions","_getOTLPTransport","_postPromise","_ref","reject","post","setTimeout","postSpans","_ref2","_callee","_args","_callee$","_context","_x","stringifyResult","truncate","_options$tracing","_objectSpread","levels","disable","_len","Array","_key","_len2","_key2","_len3","_key3","_len4","_key4","_len5","_key5","init","unshift","console","captureUncaughtExceptions","handler","shim","oldOnError","_rollbarOldOnError","onerror","handleAnonymousErrors","fn","_rollbarWindowOnError","old","_rollbarWrappedError","_rollbarContext","ret","handleUncaughtException","anonymousErrorsPending","captureUnhandledRejections","_rollbarURH","belongsToShim","removeEventListener","rejectionHandler","evt","reason","promise","detail","handleUnhandledRejection","addEventListener","makeFetchRequest","controller","timeoutId","AbortController","abort","signal","response","clearTimeout","respHeaders","isItemRoute","endsWith","json","makeXhrRequest","requestFactory","_createXMLHTTPObject","onreadystatechange","readyState","parseResponse","responseText","_isSuccess","getResponseHeader","_isNormalFailure","status","_newRetriableError","ex","exc","open","setRequestHeader","_i","_Object$entries","entries","_Object$entries$_i","_slicedToArray","send","e1","XDomainRequest","xdomainrequest","onprogress","ontimeout","onload","e2","factories","ActiveXObject","xmlhttp","numFactories","Transport","_makeZoneRequest","rootZone","Zone","root","run","_makeRequest","RollbarProxy","_proxyRequest","rollbarProxy","_msg","auth","hash","last","parseInt","pathParts","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","allowEmpty","parseStack","stackString","parseV8OrIeString","parseFFOrSafariString","extractLocation","urlLike","regExp","applySlice","lines","isArray","filtered","filter","map","sanitizedLine","locationParts","functionName","fileName","function","file","col","raw","functionNameRegex","matches","parseOpera9","parseOpera10","parseOpera11","lineRE","tokens","functionCall","argsRaw","parse$1","parseV8OrIE$1","parseFFOrSafari$1","parseOpera$1","parseOpera9$1","parseOpera10$1","parseOpera11$1","stackframesLiteToStackframes","liteStackframes","liteStackframe","lineNumber","columnNumber","parseErrorStack","UNKNOWN_FUNCTION","ERR_CLASS_REGEXP","Frame","stackFrame","_stackFrame","Stack","exception","skip","getStack","parserStack","_mostSpecificErrorName","rawStack","rawException","nested","cause","traceChain","guessErrorClass","errMsg","errClassMatch","errClass","constructorName","handleDomException","handleItemWithError","stackInfo","_savedStackTrace","description","chain","ensureItemHasSomethingToSay","addBaseInfo","server","addRequestInfo","requestInfo","query_string","remoteString","user_ip","addClientInfo","nav","scr","screen","runtime_ms","_rollbarStartTime","round","javascript","browser","cookie_enabled","cookieEnabled","width","height","addPluginInfo","plugins","navPlugins","cur","addBody","addBodyTraceChain","addBodyTrace","addBodyMessage","stackFromItem","_unhandledStackInfo","traces","traceChainLength","trace","buildTrace","trace_chain","guess","className","errorClass","class","frame","pre","contextLength","mid","frames","filename","sendFrameUrl","addScrubber","scrubFn","scrubPaths","itemToPayload","addPayloadOptions","payloadOptions","addTelemetryData","addMessageWithError","tracePath","newExtra","userTransform","newItem","promisedItem","addConfigToPayload","sendConfig","configKey","addFunctionOption","addConfiguredOptions","configuredOptions","configured_options","addDiagnosticKeys","client","is_anonymous","is_uncaught","raw_error","constructor_name","failed","checkIgnore","settings","checkLevel","levelVal","reportLevel","reportLevelVal","userCheckIgnore","isUncaught","onSendCallback","urlIsNotBlockListed","urlIsOnAList","urlIsSafeListed","matchFrames","list","block","urlRegex","listLength","frameLength","safeOrBlock","tracesLength","listName","messageIsIgnored","ignoredMessages","rIgnoredMessage","messages","messagesFromItem","autoStart","triggerDefaults","samplingRatio","preDuration","postDuration","triggers","logErrors","logEmits","inlineStylesheet","inlineImages","collectFonts","maskInputOptions","email","tel","text","color","date","month","number","range","time","week","maskAllInputs","blockClass","maskTextClass","ignoreClass","slimDOMOptions","script","comment","headFavicon","headWhitespace","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","uncaughtErrorLevel","itemsPerMin","commonScrubFields","apiScrubFields","requestScrubFields","commonScrubHeaders","_toConsumableArray","Client","API","globals","sharedTransforms","sharedPredicates","replayDefaults","tracingDefaults","_instance","components","Telemeter","Instrumenter","instrumenter","wrapGlobals","scrub","Tracing","Replay","_gWindow","initSession","replayOptions","recorder","start","gDocument","isChrome","chrome","runtime","addTransformsToNotifier","addPredicatesToQueue","setupUnhandledCapture","instrument","setSessionAttributesFromOptions","rollbar","_this$instrumenter","_createItem","triggerDirectReplay","triggerReplay","unhandledExceptionsInitialized","captureUncaught","handleUncaughtExceptions","wrapGlobalEventHandlers","unhandledRejectionsInitialized","handleUnhandledRejections","inspectAnonymousErrors","prepareStackTrace","_stack","_isAnonymous","reasonResult","_before","ctxFn","_isWrap","_rollbar_wrapped","_wrappedSource","prop","setSessionUser","user","session","setUser","setSessionAttributes","attrs","_this$tracing3","setAttributes","_options$payload","_options$client","_options$payload2","_options$payload3","_options$payload4","person","code_version","codeVersion","loadFull","setComponents","callInstance","maybeCallback","_getFirstFunction","_Rollbar","_len6","_key6","_len7","_key7","_len8","_key8","_len9","_key9","_len10","_key10","_len11","_key11","_len12","_key12","_len13","_key13","_len14","_key14","browserDefaults","includeItemsInTelemetry","MAX_EVENTS","fromMillis","millis","trunc","maxTelemetryEvents","maxQueueSize","max","min","telemetrySpan","startSpan","newMaxEvents","deleteCount","events","filterTelemetry","otelAttributes","_objectWithoutProperties","_excluded","exportTelemetrySpan","end","rollbarUUID","getLevel","timestamp_ms","captureError","_this$telemetrySpan","captureLog","_this$telemetrySpan2","_this$telemetrySpan3","captureNetwork","subtype","_metadata$response","_this$telemetrySpan4","levelFromStatus","status_code","endTimeNano","end_time_ms","statusCode","request_headers","start_time_ms","captureDom","element","checked","captureInput","_this$telemetrySpan5","isSynthetic","endTimeUnixNano","_getRepeatedEvent","_updateRepeatedEvent","captureClick","_ref3","_this$telemetrySpan6","lastEvent","_lastEvent","target","duration","textZoomRatio","rate","captureFocus","_ref4","_this$telemetrySpan7","captureResize","_ref5","_this$telemetrySpan8","captureDragDrop","_ref6","_this$telemetrySpan9","dropEffect","effectAllowed","kinds","mediaTypes","captureNavigation","from","to","_this$telemetrySpan10","getTime","captureConnectivityChange","_ref7","_this$telemetrySpan11","manual","Headers","FetchHeaders","normalizeName","normalizeValue","iteratorFor","items","append","header","getOwnPropertyNames","oldValue","has","thisArg","replacements","orig","traverse","isObj","seenIndex","mapped","same","scrubPath","paramRes","_getScrubFieldRegexs","queryRes","_getScrubQueryParamRegexs","redactQueryParam","dummy0","paramPart","paramScrubber","valScrubber","scrubber","tmpV","pat","getElementType","getAttribute","isDescribedElement","subtypes","tagName","getElementFromEvent","doc","elementFromPoint","clientX","clientY","treeToArray","elem","MAX_HEIGHT","out","nextDescription","describeElement","parentNode","elementArrayToString","MAX_LENGTH","separator","separatorLength","nextStr","totalLength","descriptionToString","elementString","desc","id","classes","attr","isMatchingElement","selectors","cls","classList","contains","_iterator3","_step3","_iterator2","_step2","sel","urlparser","domUtil","network","networkResponseHeaders","networkResponseBody","networkRequestHeaders","networkRequestBody","networkErrorOnHttp5xx","networkErrorOnHttp4xx","networkErrorOnHttp0","dom","navigation","connectivity","contentSecurityPolicy","errorOnContentSecurityPolicy","restore","b","nameFromDescription","defaultValueScrubber","patterns","field","_patterns","_window","_document","removeListeners","autoInstrument","configureScrubbing","eventRemovers","contentsecuritypolicy","_location","_lastHref","_options$scrubTelemet","_options$replay","_options$replay2","_options$replay3","_options$replay4","_options$replay5","_options$replay6","_options$replay7","_options$replay8","_options$replay9","scrubTelemetryInputs","telemetryScrubber","maskInputFn","scrubClasses","Boolean","scrubSelectors","blockSelector","ignoreSelector","maskTextSelector","oldSettings","instrumentNetwork","deinstrumentNetwork","instrumentConsole","deinstrumentConsole","instrumentDom","deinstrumentDom","instrumentNavigation","deinstrumentNavigation","instrumentConnectivity","deinstrumentConnectivity","instrumentContentSecurityPolicy","deinstrumentContentSecurityPolicy","wrapProp","xhr","xhrp","isUrlObject","_isUrlObject","__rollbar_xhr","request_content_type","onreadystatechangeHandler","__rollbar_event","response_content_type","headersConfig","allHeaders","getAllResponseHeaders","trim","_iterator4","_step4","isJsonContentType","scrubJson","addOtelNetworkResponse","errorOnHttpStatus","trackHttpErrors","reqHeaders","fetchHeaders","telemetryEvent","contentType","endTimeMs","inHeaders","outHeaders","currentHeader","_iterator5","_step5","_this$_window","wrapConsole","origConsole","methods","_i2","_methods","addListener","handleEvent","click","handleClick","dragdrop","handleDrag","focus","handleFocus","form","handleForm","handleInput","resize","handleResize","contentLoaded","handleContentLoaded","_evt$target","isTrusted","_evt$target2","_evt$target3","innerWidth","innerHeight","objs","dataTransfer","files","_iterator6","_step6","kind","_evt$dataTransfer","_evt$dataTransfer2","scrubInputValue","inputType","mask","_evt$target4","_evt$target5","_evt$target6","_evt$target7","_evt$target8","chromePackagedApp","app","hasPushState","history","pushState","handleUrlChange","parsedHref","parsedTo","parsedFrom","handleConnectivity","handleCspEvent","cspEvent","blockedURI","violatedDirective","effectiveDirective","sourceFile","originalPolicy","handleCspError","cspHandler","section","types","_iterator7","_step7","_loop","passive","_extendListenerPrototype","oldAddEventListener","_rollbarOldAdd","addFn","bubble","oldRemoveEventListener","_rollbarOldRemove","removeFn","jsonBackup","selectFrames","truncateFrames","maybeTruncateValue","truncateStrings","truncator","truncateTraceData","traceData","minBody","needsTruncation","maxSize","strategies","strategy","results","parentContext","_currentContext","Map","getValue","setValue","deleteValue","delete","ROOT_CONTEXT","ContextManager","currentContext","enterContext","previousContext","exitContext","with","createContextKey","for","gen","bytes","randomBytes","Uint8Array","crypto","getRandomValues","randHex","byte","padStart","SESSION_KEY","Session","_attributes","getSession","createSession","initSessionAttributes","serializedSession","sessionStorage","getItem","_unused","createdAt","setSession","sessionString","setItem","_unused2","username","_navigator$userAgentD","_navigator$userAgentD2","_navigator$userAgentD3","userAgentData","brands","mobile","toMillis","hrtime","toNanos","add","usePerformance","performance","timeOrigin","isHrTime","SpanExporter","export","spans","_resultCallback","spanExportQueue","toPayload","resourceSpans","resource","scopeMap","scopeKey","instrumentationScope","_transformSpan","_transformResource","scopeSpans","scopeData","_transformInstrumentationScope","transformAttributes","_transformAnyValue","transformEvents","timeUnixNano","parentSpanId","startTimeUnixNano","endTime","keyValues","_this5","stringValue","isInteger","intValue","doubleValue","boolValue","arrayValue","kvlistValue","SpanProcessor","exporter","pendingSpans","transformFn","transformSpan","applyTransforms","onStart","_parentContext","onEnd","Span","initReadableSpan","spanProcessor","_options$session","links","ended","droppedAttributesCount","droppedEventsCount","droppedLinksCount","setAttribute","isRecording","Tracer","_this$tracing$resourc","_options$resource","_this$tracing$session","contextManager","parentSpan","parentSpanContext","traceFlags","traceState","SPAN_KEY","createTracer","_this$options$payload","_this$options$payload2","idGen","getTracer","addSpanTransform","setSpan","_this$contextManager","withSpan","default","_rollbarConfig","alias","globalAlias","shimRunning","shimId","_rollbarDidLoad"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"rollbar.js","mappings":";;UAAA;UACA;;;;;WCDA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA,E;;;;;WCPA,8CAA8C,yD;;;;;WCA9C;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D,E;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,MAAMA,CAACC,CAAC,EAAEC,CAAC,EAAE;EACpB,OAAOA,CAAC,KAAKC,QAAQ,CAACF,CAAC,CAAC;AAC1B;;AAEA;AACA;AACA;AACA,SAASE,QAAQA,CAACF,CAAC,EAAE;EACnB,IAAIG,IAAI,GAAAC,OAAA,CAAUJ,CAAC;EACnB,IAAIG,IAAI,KAAK,QAAQ,EAAE;IACrB,OAAOA,IAAI;EACb;EACA,IAAI,CAACH,CAAC,EAAE;IACN,OAAO,MAAM;EACf;EACA,IAAIA,CAAC,YAAYK,KAAK,EAAE;IACtB,OAAO,OAAO;EAChB;EACA,OAAO,CAAC,CAAC,CAACC,QAAQ,CACfC,IAAI,CAACP,CAAC,CAAC,CACPQ,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CACzBC,WAAW,CAAC,CAAC;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,UAAUA,CAACC,CAAC,EAAE;EACrB,OAAOZ,MAAM,CAACY,CAAC,EAAE,UAAU,CAAC;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,gBAAgBA,CAACD,CAAC,EAAE;EAC3B,IAAIE,YAAY,GAAG,qBAAqB;EACxC,IAAIC,eAAe,GAAGC,QAAQ,CAACC,SAAS,CAACV,QAAQ,CAC9CC,IAAI,CAACU,MAAM,CAACD,SAAS,CAACE,cAAc,CAAC,CACrCC,OAAO,CAACN,YAAY,EAAE,MAAM,CAAC,CAC7BM,OAAO,CAAC,wDAAwD,EAAE,OAAO,CAAC;EAC7E,IAAIC,UAAU,GAAGC,MAAM,CAAC,GAAG,GAAGP,eAAe,GAAG,GAAG,CAAC;EACpD,OAAOQ,QAAQ,CAACX,CAAC,CAAC,IAAIS,UAAU,CAACG,IAAI,CAACZ,CAAC,CAAC;AAC1C;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASW,QAAQA,CAACE,KAAK,EAAE;EACvB,OACEA,KAAK,IAAI,IAAI,KAAKpB,OAAA,CAAOoB,KAAK,KAAI,QAAQ,IAAI,OAAOA,KAAK,IAAI,UAAU,CAAC;AAE7E;;AAEA;AACA,SAASC,MAAMA,CAACC,GAAG,EAAEC,IAAI,EAAE;EACzB,IAAID,GAAG,IAAI,IAAI,EAAE;IACf,OAAO,KAAK;EACd;EACA,IAAIT,MAAM,CAACQ,MAAM,EAAE;IACjB,OAAOR,MAAM,CAACQ,MAAM,CAACC,GAAG,EAAEC,IAAI,CAAC;EACjC;EACA,OAAOV,MAAM,CAACD,SAAS,CAACE,cAAc,CAACX,IAAI,CAACmB,GAAG,EAAEC,IAAI,CAAC;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,QAAQA,CAACJ,KAAK,EAAE;EACvB,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,YAAYK,MAAM;AAC7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,cAAcA,CAACC,CAAC,EAAE;EACzB,OAAOC,MAAM,CAACC,QAAQ,CAACF,CAAC,CAAC;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,UAAUA,CAACC,CAAC,EAAE;EACrB,IAAIC,IAAI,GAAGlC,QAAQ,CAACiC,CAAC,CAAC;EACtB,OAAOC,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,OAAO;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,OAAOA,CAACC,CAAC,EAAE;EAClB;EACA,OAAOvC,MAAM,CAACuC,CAAC,EAAE,OAAO,CAAC,IAAIvC,MAAM,CAACuC,CAAC,EAAE,WAAW,CAAC;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,SAASA,CAACC,CAAC,EAAE;EACpB,OAAOlB,QAAQ,CAACkB,CAAC,CAAC,IAAIzC,MAAM,CAACyC,CAAC,CAACC,IAAI,EAAE,UAAU,CAAC;AAClD;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,SAASA,CAAA,EAAG;EACnB,OAAO,OAAOC,MAAM,KAAK,WAAW;AACtC;AAEA,SAASC,MAAMA,CAAA,EAAG;EAChB,OAAO,UAAU;AACnB;;AAEA;AACA,SAASC,KAAKA,CAAA,EAAG;EACf,IAAIC,CAAC,GAAGC,GAAG,CAAC,CAAC;EACb,IAAIC,IAAI,GAAG,sCAAsC,CAAC7B,OAAO,CACvD,OAAO,EACP,UAAU8B,CAAC,EAAE;IACX,IAAIC,CAAC,GAAI,CAACJ,CAAC,GAAGK,IAAI,CAACC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAI,CAAC;IAC3CN,CAAC,GAAGK,IAAI,CAACE,KAAK,CAACP,CAAC,GAAG,EAAE,CAAC;IACtB,OAAO,CAACG,CAAC,KAAK,GAAG,GAAGC,CAAC,GAAIA,CAAC,GAAG,GAAG,GAAI,GAAG,EAAE5C,QAAQ,CAAC,EAAE,CAAC;EACvD,CACF,CAAC;EACD,OAAO0C,IAAI;AACb;AAEA,IAAIM,MAAM,GAAG;EACXC,KAAK,EAAE,CAAC;EACRC,IAAI,EAAE,CAAC;EACPC,OAAO,EAAE,CAAC;EACVC,KAAK,EAAE,CAAC;EACRC,QAAQ,EAAE;AACZ,CAAC;AAED,SAASC,YAAYA,CAACC,GAAG,EAAE;EACzB,IAAI;IACF,IAAMC,SAAS,GAAG,IAAIC,GAAG,CAACF,GAAG,CAAC;IAC9B,IAAIC,SAAS,CAACE,QAAQ,EAAE;MACtBF,SAAS,CAACE,QAAQ,GAAGpB,MAAM,CAAC,CAAC;IAC/B;IACA,IAAIkB,SAAS,CAACG,MAAM,EAAE;MACpBH,SAAS,CAACG,MAAM,GAAGrB,MAAM,CAAC,CAAC;IAC7B;IACA,OAAOkB,SAAS,CAACxD,QAAQ,CAAC,CAAC;EAC7B,CAAC,CAAC,OAAO4D,CAAC,EAAE;IACV,OAAOL,GAAG,CAAC,CAAC;EACd;AACF;AAEA,SAASM,WAAWA,CAACN,GAAG,EAAE;EACxB,IAAIO,YAAY,GAAGC,QAAQ,CAACR,GAAG,CAAC;EAChC,IAAI,CAACO,YAAY,EAAE;IACjB,OAAO,WAAW;EACpB;;EAEA;EACA,IAAIA,YAAY,CAACE,MAAM,KAAK,EAAE,EAAE;IAC9BF,YAAY,CAACG,MAAM,GAAGH,YAAY,CAACG,MAAM,CAACpD,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;EAC5D;EAEA0C,GAAG,GAAGO,YAAY,CAACG,MAAM,CAACpD,OAAO,CAAC,GAAG,GAAGiD,YAAY,CAACI,KAAK,EAAE,EAAE,CAAC;EAC/D,OAAOX,GAAG;AACZ;AAEA,IAAIY,eAAe,GAAG;EACpBC,UAAU,EAAE,KAAK;EACjBC,GAAG,EAAE,CACH,QAAQ,EACR,UAAU,EACV,WAAW,EACX,UAAU,EACV,MAAM,EACN,UAAU,EACV,MAAM,EACN,MAAM,EACN,UAAU,EACV,MAAM,EACN,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,CACT;EACDC,CAAC,EAAE;IACDzE,IAAI,EAAE,UAAU;IAChB0E,MAAM,EAAE;EACV,CAAC;EACDA,MAAM,EAAE;IACNC,MAAM,EACJ,sIAAsI;IACxIC,KAAK,EACH;EACJ;AACF,CAAC;AAED,SAASV,QAAQA,CAACW,GAAG,EAAE;EACrB,IAAI,CAACjF,MAAM,CAACiF,GAAG,EAAE,QAAQ,CAAC,EAAE;IAC1B,OAAOC,SAAS;EAClB;EAEA,IAAIC,CAAC,GAAGT,eAAe;EACvB,IAAIU,CAAC,GAAGD,CAAC,CAACL,MAAM,CAACK,CAAC,CAACR,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC,CAACU,IAAI,CAACJ,GAAG,CAAC;EAC7D,IAAIK,GAAG,GAAG,CAAC,CAAC;EAEZ,KAAK,IAAIlD,CAAC,GAAG,CAAC,EAAEmD,CAAC,GAAGJ,CAAC,CAACP,GAAG,CAACY,MAAM,EAAEpD,CAAC,GAAGmD,CAAC,EAAE,EAAEnD,CAAC,EAAE;IAC5CkD,GAAG,CAACH,CAAC,CAACP,GAAG,CAACxC,CAAC,CAAC,CAAC,GAAGgD,CAAC,CAAChD,CAAC,CAAC,IAAI,EAAE;EAC5B;EAEAkD,GAAG,CAACH,CAAC,CAACN,CAAC,CAACzE,IAAI,CAAC,GAAG,CAAC,CAAC;EAClBkF,GAAG,CAACH,CAAC,CAACP,GAAG,CAAC,EAAE,CAAC,CAAC,CAACxD,OAAO,CAAC+D,CAAC,CAACN,CAAC,CAACC,MAAM,EAAE,UAAUW,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE;IACvD,IAAID,EAAE,EAAE;MACNJ,GAAG,CAACH,CAAC,CAACN,CAAC,CAACzE,IAAI,CAAC,CAACsF,EAAE,CAAC,GAAGC,EAAE;IACxB;EACF,CAAC,CAAC;EAEF,OAAOL,GAAG;AACZ;AAEA,SAASM,6BAA6BA,CAACC,WAAW,EAAEC,OAAO,EAAEC,MAAM,EAAE;EACnEA,MAAM,GAAGA,MAAM,IAAI,CAAC,CAAC;EACrBA,MAAM,CAACC,YAAY,GAAGH,WAAW;EACjC,IAAII,WAAW,GAAG,EAAE;EACpB,IAAIC,CAAC;EACL,KAAKA,CAAC,IAAIH,MAAM,EAAE;IAChB,IAAI7E,MAAM,CAACD,SAAS,CAACE,cAAc,CAACX,IAAI,CAACuF,MAAM,EAAEG,CAAC,CAAC,EAAE;MACnDD,WAAW,CAACE,IAAI,CAAC,CAACD,CAAC,EAAEH,MAAM,CAACG,CAAC,CAAC,CAAC,CAACE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C;EACF;EACA,IAAI3B,KAAK,GAAG,GAAG,GAAGwB,WAAW,CAACI,IAAI,CAAC,CAAC,CAACD,IAAI,CAAC,GAAG,CAAC;EAE9CN,OAAO,GAAGA,OAAO,IAAI,CAAC,CAAC;EACvBA,OAAO,CAACQ,IAAI,GAAGR,OAAO,CAACQ,IAAI,IAAI,EAAE;EACjC,IAAIC,EAAE,GAAGT,OAAO,CAACQ,IAAI,CAACE,OAAO,CAAC,GAAG,CAAC;EAClC,IAAIC,CAAC,GAAGX,OAAO,CAACQ,IAAI,CAACE,OAAO,CAAC,GAAG,CAAC;EACjC,IAAI/D,CAAC;EACL,IAAI8D,EAAE,KAAK,CAAC,CAAC,KAAKE,CAAC,KAAK,CAAC,CAAC,IAAIA,CAAC,GAAGF,EAAE,CAAC,EAAE;IACrC9D,CAAC,GAAGqD,OAAO,CAACQ,IAAI;IAChBR,OAAO,CAACQ,IAAI,GAAG7D,CAAC,CAACiE,SAAS,CAAC,CAAC,EAAEH,EAAE,CAAC,GAAG9B,KAAK,GAAG,GAAG,GAAGhC,CAAC,CAACiE,SAAS,CAACH,EAAE,GAAG,CAAC,CAAC;EACvE,CAAC,MAAM;IACL,IAAIE,CAAC,KAAK,CAAC,CAAC,EAAE;MACZhE,CAAC,GAAGqD,OAAO,CAACQ,IAAI;MAChBR,OAAO,CAACQ,IAAI,GAAG7D,CAAC,CAACiE,SAAS,CAAC,CAAC,EAAED,CAAC,CAAC,GAAGhC,KAAK,GAAGhC,CAAC,CAACiE,SAAS,CAACD,CAAC,CAAC;IAC3D,CAAC,MAAM;MACLX,OAAO,CAACQ,IAAI,GAAGR,OAAO,CAACQ,IAAI,GAAG7B,KAAK;IACrC;EACF;AACF;AAEA,SAASkC,SAASA,CAACC,CAAC,EAAEC,QAAQ,EAAE;EAC9BA,QAAQ,GAAGA,QAAQ,IAAID,CAAC,CAACC,QAAQ;EACjC,IAAI,CAACA,QAAQ,IAAID,CAAC,CAACE,IAAI,EAAE;IACvB,IAAIF,CAAC,CAACE,IAAI,KAAK,EAAE,EAAE;MACjBD,QAAQ,GAAG,OAAO;IACpB,CAAC,MAAM,IAAID,CAAC,CAACE,IAAI,KAAK,GAAG,EAAE;MACzBD,QAAQ,GAAG,QAAQ;IACrB;EACF;EACAA,QAAQ,GAAGA,QAAQ,IAAI,QAAQ;EAE/B,IAAI,CAACD,CAAC,CAACG,QAAQ,EAAE;IACf,OAAO,IAAI;EACb;EACA,IAAIC,MAAM,GAAGH,QAAQ,GAAG,IAAI,GAAGD,CAAC,CAACG,QAAQ;EACzC,IAAIH,CAAC,CAACE,IAAI,EAAE;IACVE,MAAM,GAAGA,MAAM,GAAG,GAAG,GAAGJ,CAAC,CAACE,IAAI;EAChC;EACA,IAAIF,CAAC,CAACN,IAAI,EAAE;IACVU,MAAM,GAAGA,MAAM,GAAGJ,CAAC,CAACN,IAAI;EAC1B;EACA,OAAOU,MAAM;AACf;AAEA,SAASC,SAASA,CAACtF,GAAG,EAAEuF,MAAM,EAAE;EAC9B,IAAIzF,KAAK,EAAEkC,KAAK;EAChB,IAAI;IACFlC,KAAK,GAAG0F,IAAI,CAACF,SAAS,CAACtF,GAAG,CAAC;EAC7B,CAAC,CAAC,OAAOyF,SAAS,EAAE;IAClB,IAAIF,MAAM,IAAIvG,UAAU,CAACuG,MAAM,CAAC,EAAE;MAChC,IAAI;QACFzF,KAAK,GAAGyF,MAAM,CAACvF,GAAG,CAAC;MACrB,CAAC,CAAC,OAAO0F,WAAW,EAAE;QACpB1D,KAAK,GAAG0D,WAAW;MACrB;IACF,CAAC,MAAM;MACL1D,KAAK,GAAGyD,SAAS;IACnB;EACF;EACA,OAAO;IAAEzD,KAAK,EAAEA,KAAK;IAAElC,KAAK,EAAEA;EAAM,CAAC;AACvC;AAEA,SAAS6F,WAAWA,CAACC,MAAM,EAAE;EAC3B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA,IAAIC,KAAK,GAAG,CAAC;EACb,IAAIhC,MAAM,GAAG+B,MAAM,CAAC/B,MAAM;EAE1B,KAAK,IAAIpD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoD,MAAM,EAAEpD,CAAC,EAAE,EAAE;IAC/B,IAAIqF,IAAI,GAAGF,MAAM,CAACG,UAAU,CAACtF,CAAC,CAAC;IAC/B,IAAIqF,IAAI,GAAG,GAAG,EAAE;MACd;MACAD,KAAK,GAAGA,KAAK,GAAG,CAAC;IACnB,CAAC,MAAM,IAAIC,IAAI,GAAG,IAAI,EAAE;MACtB;MACAD,KAAK,GAAGA,KAAK,GAAG,CAAC;IACnB,CAAC,MAAM,IAAIC,IAAI,GAAG,KAAK,EAAE;MACvB;MACAD,KAAK,GAAGA,KAAK,GAAG,CAAC;IACnB;EACF;EAEA,OAAOA,KAAK;AACd;AAEA,SAASG,SAASA,CAACC,CAAC,EAAE;EACpB,IAAInG,KAAK,EAAEkC,KAAK;EAChB,IAAI;IACFlC,KAAK,GAAG0F,IAAI,CAACU,KAAK,CAACD,CAAC,CAAC;EACvB,CAAC,CAAC,OAAOrF,CAAC,EAAE;IACVoB,KAAK,GAAGpB,CAAC;EACX;EACA,OAAO;IAAEoB,KAAK,EAALA,KAAK;IAAElC,KAAK,EAALA;EAAM,CAAC;AACzB;AAEA,SAASqG,sBAAsBA,CAC7BC,OAAO,EACPjE,GAAG,EACHkE,MAAM,EACNC,KAAK,EACLtE,KAAK,EACLuE,IAAI,EACJC,aAAa,EACbC,WAAW,EACX;EACA,IAAIC,QAAQ,GAAG;IACbvE,GAAG,EAAEA,GAAG,IAAI,EAAE;IACdwE,IAAI,EAAEN,MAAM;IACZO,MAAM,EAAEN;EACV,CAAC;EACDI,QAAQ,CAACG,IAAI,GAAGJ,WAAW,CAACK,iBAAiB,CAACJ,QAAQ,CAACvE,GAAG,EAAEuE,QAAQ,CAACC,IAAI,CAAC;EAC1ED,QAAQ,CAACK,OAAO,GAAGN,WAAW,CAACO,aAAa,CAACN,QAAQ,CAACvE,GAAG,EAAEuE,QAAQ,CAACC,IAAI,CAAC;EACzE,IAAIM,IAAI,GACN,OAAOC,QAAQ,KAAK,WAAW,IAC/BA,QAAQ,IACRA,QAAQ,CAACR,QAAQ,IACjBQ,QAAQ,CAACR,QAAQ,CAACO,IAAI;EACxB,IAAIE,SAAS,GACX,OAAOlG,MAAM,KAAK,WAAW,IAC7BA,MAAM,IACNA,MAAM,CAACmG,SAAS,IAChBnG,MAAM,CAACmG,SAAS,CAACC,SAAS;EAC5B,OAAO;IACLd,IAAI,EAAEA,IAAI;IACVH,OAAO,EAAEpE,KAAK,GAAG7B,MAAM,CAAC6B,KAAK,CAAC,GAAGoE,OAAO,IAAII,aAAa;IACzDrE,GAAG,EAAE8E,IAAI;IACTK,KAAK,EAAE,CAACZ,QAAQ,CAAC;IACjBS,SAAS,EAAEA;EACb,CAAC;AACH;AAEA,SAASI,YAAYA,CAACC,MAAM,EAAEvI,CAAC,EAAE;EAC/B,OAAO,UAAUwI,GAAG,EAAEC,IAAI,EAAE;IAC1B,IAAI;MACFzI,CAAC,CAACwI,GAAG,EAAEC,IAAI,CAAC;IACd,CAAC,CAAC,OAAO9G,CAAC,EAAE;MACV4G,MAAM,CAACxF,KAAK,CAACpB,CAAC,CAAC;IACjB;EACF,CAAC;AACH;AAEA,SAAS+G,gBAAgBA,CAAC3H,GAAG,EAAE;EAC7B,IAAI4H,IAAI,GAAG,CAAC5H,GAAG,CAAC;EAEhB,SAAS6H,KAAKA,CAAC7H,GAAG,EAAE4H,IAAI,EAAE;IACxB,IAAI9H,KAAK;MACPrB,IAAI;MACJqJ,OAAO;MACPzC,MAAM,GAAG,CAAC,CAAC;IAEb,IAAI;MACF,KAAK5G,IAAI,IAAIuB,GAAG,EAAE;QAChBF,KAAK,GAAGE,GAAG,CAACvB,IAAI,CAAC;QAEjB,IAAIqB,KAAK,KAAKzB,MAAM,CAACyB,KAAK,EAAE,QAAQ,CAAC,IAAIzB,MAAM,CAACyB,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE;UAChE,IAAI8H,IAAI,CAACG,QAAQ,CAACjI,KAAK,CAAC,EAAE;YACxBuF,MAAM,CAAC5G,IAAI,CAAC,GAAG,8BAA8B,GAAGD,QAAQ,CAACsB,KAAK,CAAC;UACjE,CAAC,MAAM;YACLgI,OAAO,GAAGF,IAAI,CAACI,KAAK,CAAC,CAAC;YACtBF,OAAO,CAACtD,IAAI,CAAC1E,KAAK,CAAC;YACnBuF,MAAM,CAAC5G,IAAI,CAAC,GAAGoJ,KAAK,CAAC/H,KAAK,EAAEgI,OAAO,CAAC;UACtC;UACA;QACF;QAEAzC,MAAM,CAAC5G,IAAI,CAAC,GAAGqB,KAAK;MACtB;IACF,CAAC,CAAC,OAAOc,CAAC,EAAE;MACVyE,MAAM,GAAG,8BAA8B,GAAGzE,CAAC,CAACwF,OAAO;IACrD;IACA,OAAOf,MAAM;EACf;EACA,OAAOwC,KAAK,CAAC7H,GAAG,EAAE4H,IAAI,CAAC;AACzB;AAEA,SAASK,UAAUA,CAACC,IAAI,EAAEV,MAAM,EAAEW,QAAQ,EAAEC,WAAW,EAAEC,aAAa,EAAE;EACtE,IAAIjC,OAAO,EAAEqB,GAAG,EAAEa,MAAM,EAAEC,QAAQ,EAAEC,OAAO;EAC3C,IAAIC,GAAG;EACP,IAAIC,SAAS,GAAG,EAAE;EAClB,IAAIC,UAAU,GAAG,CAAC,CAAC;EACnB,IAAIC,QAAQ,GAAG,EAAE;EAEjB,KAAK,IAAInI,CAAC,GAAG,CAAC,EAAEmD,CAAC,GAAGsE,IAAI,CAACrE,MAAM,EAAEpD,CAAC,GAAGmD,CAAC,EAAE,EAAEnD,CAAC,EAAE;IAC3CgI,GAAG,GAAGP,IAAI,CAACzH,CAAC,CAAC;IAEb,IAAIoI,GAAG,GAAGrK,QAAQ,CAACiK,GAAG,CAAC;IACvBG,QAAQ,CAACpE,IAAI,CAACqE,GAAG,CAAC;IAClB,QAAQA,GAAG;MACT,KAAK,WAAW;QACd;MACF,KAAK,QAAQ;QACX,IAAIzC,OAAO,EAAE;UACXsC,SAAS,CAAClE,IAAI,CAACiE,GAAG,CAAC;QACrB,CAAC,MAAM;UACLrC,OAAO,GAAGqC,GAAG;QACf;QACA;MACF,KAAK,UAAU;QACbF,QAAQ,GAAGhB,YAAY,CAACC,MAAM,EAAEiB,GAAG,CAAC;QACpC;MACF,KAAK,MAAM;QACTC,SAAS,CAAClE,IAAI,CAACiE,GAAG,CAAC;QACnB;MACF,KAAK,OAAO;MACZ,KAAK,cAAc;MACnB,KAAK,WAAW;QAAE;QAChB,IAAIhB,GAAG,EAAE;UACPiB,SAAS,CAAClE,IAAI,CAACiE,GAAG,CAAC;QACrB,CAAC,MAAM;UACLhB,GAAG,GAAGgB,GAAG;QACX;QACA;MACF,KAAK,QAAQ;MACb,KAAK,OAAO;QACV,IACEA,GAAG,YAAY9J,KAAK,IACnB,OAAOmK,YAAY,KAAK,WAAW,IAAIL,GAAG,YAAYK,YAAa,EACpE;UACA,IAAIrB,GAAG,EAAE;YACPiB,SAAS,CAAClE,IAAI,CAACiE,GAAG,CAAC;UACrB,CAAC,MAAM;YACLhB,GAAG,GAAGgB,GAAG;UACX;UACA;QACF;QACA,IAAIL,WAAW,IAAIS,GAAG,KAAK,QAAQ,IAAI,CAACL,OAAO,EAAE;UAC/C,KAAK,IAAIO,CAAC,GAAG,CAAC,EAAEC,GAAG,GAAGZ,WAAW,CAACvE,MAAM,EAAEkF,CAAC,GAAGC,GAAG,EAAE,EAAED,CAAC,EAAE;YACtD,IAAIN,GAAG,CAACL,WAAW,CAACW,CAAC,CAAC,CAAC,KAAKxF,SAAS,EAAE;cACrCiF,OAAO,GAAGC,GAAG;cACb;YACF;UACF;UACA,IAAID,OAAO,EAAE;YACX;UACF;QACF;QACA,IAAIF,MAAM,EAAE;UACVI,SAAS,CAAClE,IAAI,CAACiE,GAAG,CAAC;QACrB,CAAC,MAAM;UACLH,MAAM,GAAGG,GAAG;QACd;QACA;MACF;QACE,IACEA,GAAG,YAAY9J,KAAK,IACnB,OAAOmK,YAAY,KAAK,WAAW,IAAIL,GAAG,YAAYK,YAAa,EACpE;UACA,IAAIrB,GAAG,EAAE;YACPiB,SAAS,CAAClE,IAAI,CAACiE,GAAG,CAAC;UACrB,CAAC,MAAM;YACLhB,GAAG,GAAGgB,GAAG;UACX;UACA;QACF;QACAC,SAAS,CAAClE,IAAI,CAACiE,GAAG,CAAC;IACvB;EACF;;EAEA;EACA,IAAIH,MAAM,EAAEA,MAAM,GAAGX,gBAAgB,CAACW,MAAM,CAAC;EAE7C,IAAII,SAAS,CAAC7E,MAAM,GAAG,CAAC,EAAE;IACxB,IAAI,CAACyE,MAAM,EAAEA,MAAM,GAAGX,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC1CW,MAAM,CAACI,SAAS,GAAGf,gBAAgB,CAACe,SAAS,CAAC;EAChD;EAEA,IAAIO,IAAI,GAAG;IACT7C,OAAO,EAAEA,OAAO;IAChBqB,GAAG,EAAEA,GAAG;IACRa,MAAM,EAAEA,MAAM;IACdY,SAAS,EAAE7H,GAAG,CAAC,CAAC;IAChBkH,QAAQ,EAAEA,QAAQ;IAClBJ,QAAQ,EAAEA,QAAQ;IAClBQ,UAAU,EAAEA,UAAU;IACtBrH,IAAI,EAAEH,KAAK,CAAC;EACd,CAAC;EAED8H,IAAI,CAACE,IAAI,GAAGF,IAAI,CAACE,IAAI,IAAI,CAAC,CAAC;EAE3BC,iBAAiB,CAACH,IAAI,EAAEX,MAAM,CAAC;EAE/B,IAAIF,WAAW,IAAII,OAAO,EAAE;IAC1BS,IAAI,CAACT,OAAO,GAAGA,OAAO;EACxB;EACA,IAAIH,aAAa,EAAE;IACjBY,IAAI,CAACZ,aAAa,GAAGA,aAAa;EACpC;EACAY,IAAI,CAACI,aAAa,GAAGnB,IAAI;EACzBe,IAAI,CAACN,UAAU,CAACW,kBAAkB,GAAGV,QAAQ;EAC7C,OAAOK,IAAI;AACb;AAEA,SAASG,iBAAiBA,CAACH,IAAI,EAAEX,MAAM,EAAE;EACvC,IAAIA,MAAM,IAAIA,MAAM,CAACiB,KAAK,KAAKhG,SAAS,EAAE;IACxC0F,IAAI,CAACM,KAAK,GAAGjB,MAAM,CAACiB,KAAK;IACzB,OAAOjB,MAAM,CAACiB,KAAK;EACrB;EACA,IAAIjB,MAAM,IAAIA,MAAM,CAACkB,UAAU,KAAKjG,SAAS,EAAE;IAC7C0F,IAAI,CAACO,UAAU,GAAGlB,MAAM,CAACkB,UAAU;IACnC,OAAOlB,MAAM,CAACkB,UAAU;EAC1B;AACF;AAEA,SAASC,eAAeA,CAACR,IAAI,EAAES,MAAM,EAAE;EACrC,IAAIpB,MAAM,GAAGW,IAAI,CAACE,IAAI,CAACb,MAAM,IAAI,CAAC,CAAC;EACnC,IAAIqB,YAAY,GAAG,KAAK;EAExB,IAAI;IAAA,IAAAC,SAAA,GAAAC,0BAAA,CACkBH,MAAM;MAAAI,KAAA;IAAA;MAA1B,KAAAF,SAAA,CAAA3D,CAAA,MAAA6D,KAAA,GAAAF,SAAA,CAAAvJ,CAAA,IAAA0J,IAAA,GAA4B;QAAA,IAAjB/H,KAAK,GAAA8H,KAAA,CAAAhK,KAAA;QACd,IAAIC,MAAM,CAACiC,KAAK,EAAE,gBAAgB,CAAC,EAAE;UACnCsG,MAAM,GAAG0B,KAAK,CAAC1B,MAAM,EAAEX,gBAAgB,CAAC3F,KAAK,CAACiI,cAAc,CAAC,CAAC;UAC9DN,YAAY,GAAG,IAAI;QACrB;MACF;;MAEA;IAAA,SAAAlC,GAAA;MAAAmC,SAAA,CAAAhJ,CAAA,CAAA6G,GAAA;IAAA;MAAAmC,SAAA,CAAA3K,CAAA;IAAA;IACA,IAAI0K,YAAY,EAAE;MAChBV,IAAI,CAACE,IAAI,CAACb,MAAM,GAAGA,MAAM;IAC3B;EACF,CAAC,CAAC,OAAO1H,CAAC,EAAE;IACVqI,IAAI,CAACN,UAAU,CAACuB,aAAa,GAAG,UAAU,GAAGtJ,CAAC,CAACwF,OAAO;EACxD;AACF;AAEA,IAAI+D,eAAe,GAAG,CACpB,KAAK,EACL,SAAS,EACT,KAAK,EACL,YAAY,EACZ,OAAO,EACP,QAAQ,CACT;AACD,IAAIC,gBAAgB,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;AAExE,SAASC,aAAaA,CAACC,GAAG,EAAEC,GAAG,EAAE;EAAA,IAAAC,UAAA,GAAAX,0BAAA,CACXS,GAAG;IAAAG,MAAA;EAAA;IAAvB,KAAAD,UAAA,CAAAvE,CAAA,MAAAwE,MAAA,GAAAD,UAAA,CAAAnK,CAAA,IAAA0J,IAAA,GAAyB;MAAA,IAAdW,KAAK,GAAAD,MAAA,CAAA3K,KAAA;MACd,IAAI4K,KAAK,KAAKH,GAAG,EAAE;QACjB,OAAO,IAAI;MACb;IACF;EAAC,SAAA9C,GAAA;IAAA+C,UAAA,CAAA5J,CAAA,CAAA6G,GAAA;EAAA;IAAA+C,UAAA,CAAAvL,CAAA;EAAA;EAED,OAAO,KAAK;AACd;AAEA,SAAS0L,oBAAoBA,CAACzC,IAAI,EAAE;EAClC,IAAIxH,IAAI,EAAEkK,QAAQ,EAAErB,KAAK;EACzB,IAAId,GAAG;EAEP,KAAK,IAAIhI,CAAC,GAAG,CAAC,EAAEmD,CAAC,GAAGsE,IAAI,CAACrE,MAAM,EAAEpD,CAAC,GAAGmD,CAAC,EAAE,EAAEnD,CAAC,EAAE;IAC3CgI,GAAG,GAAGP,IAAI,CAACzH,CAAC,CAAC;IAEb,IAAIoI,GAAG,GAAGrK,QAAQ,CAACiK,GAAG,CAAC;IACvB,QAAQI,GAAG;MACT,KAAK,QAAQ;QACX,IAAI,CAACnI,IAAI,IAAI2J,aAAa,CAACF,eAAe,EAAE1B,GAAG,CAAC,EAAE;UAChD/H,IAAI,GAAG+H,GAAG;QACZ,CAAC,MAAM,IAAI,CAACc,KAAK,IAAIc,aAAa,CAACD,gBAAgB,EAAE3B,GAAG,CAAC,EAAE;UACzDc,KAAK,GAAGd,GAAG;QACb;QACA;MACF,KAAK,QAAQ;QACXmC,QAAQ,GAAGnC,GAAG;QACd;MACF;QACE;IACJ;EACF;EACA,IAAIoC,KAAK,GAAG;IACVnK,IAAI,EAAEA,IAAI,IAAI,QAAQ;IACtBkK,QAAQ,EAAEA,QAAQ,IAAI,CAAC,CAAC;IACxBrB,KAAK,EAAEA;EACT,CAAC;EAED,OAAOsB,KAAK;AACd;AAEA,SAASC,iBAAiBA,CAACC,QAAQ,EAAEC,UAAU,EAAE;EAC/CD,QAAQ,CAACC,UAAU,GAAGD,QAAQ,CAACC,UAAU,IAAI,EAAE;EAAC,IAAAC,UAAA,GAAApB,0BAAA,CAChCmB,UAAU;IAAAE,MAAA;EAAA;IAA1B,KAAAD,UAAA,CAAAhF,CAAA,MAAAiF,MAAA,GAAAD,UAAA,CAAA5K,CAAA,IAAA0J,IAAA,GAA4B;MAAA,IAAjBoB,CAAC,GAAAD,MAAA,CAAApL,KAAA;MACV,IAAIqL,CAAC,CAACrL,KAAK,KAAKyD,SAAS,EAAE;QACzB;MACF;MACAwH,QAAQ,CAACC,UAAU,CAACxG,IAAI,CAAC2G,CAAC,CAAC;IAC7B;EAAC,SAAA1D,GAAA;IAAAwD,UAAA,CAAArK,CAAA,CAAA6G,GAAA;EAAA;IAAAwD,UAAA,CAAAhM,CAAA;EAAA;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASmM,GAAGA,CAACpL,GAAG,EAAE2E,IAAI,EAAE;EACtB,IAAI,CAAC3E,GAAG,EAAE;IACR,OAAOuD,SAAS;EAClB;EACA,IAAI8H,IAAI,GAAG1G,IAAI,CAAC2G,KAAK,CAAC,GAAG,CAAC;EAC1B,IAAIjG,MAAM,GAAGrF,GAAG;EAChB,IAAI;IACF,KAAK,IAAIS,CAAC,GAAG,CAAC,EAAEuI,GAAG,GAAGqC,IAAI,CAACxH,MAAM,EAAEpD,CAAC,GAAGuI,GAAG,EAAE,EAAEvI,CAAC,EAAE;MAC/C4E,MAAM,GAAGA,MAAM,CAACgG,IAAI,CAAC5K,CAAC,CAAC,CAAC;IAC1B;EACF,CAAC,CAAC,OAAO8K,EAAE,EAAE;IACXlG,MAAM,GAAG9B,SAAS;EACpB;EACA,OAAO8B,MAAM;AACf;AAEA,SAASmG,GAAGA,CAACxL,GAAG,EAAE2E,IAAI,EAAE7E,KAAK,EAAE;EAC7B,IAAI,CAACE,GAAG,EAAE;IACR;EACF;;EAEA;EACAT,MAAM,CAACkM,cAAc,CAACzL,GAAG,EAAE,IAAI,CAAC;EAEhC,IAAIqL,IAAI,GAAG1G,IAAI,CAAC2G,KAAK,CAAC,GAAG,CAAC;EAC1B,IAAItC,GAAG,GAAGqC,IAAI,CAACxH,MAAM;EACrB,IAAImF,GAAG,GAAG,CAAC,EAAE;IACX;EACF;EACA,IAAIA,GAAG,KAAK,CAAC,EAAE;IACbhJ,GAAG,CAACqL,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGvL,KAAK;IACpB;EACF;EACA,IAAI;IACF,IAAI4L,IAAI,GAAG1L,GAAG,CAACqL,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAIM,WAAW,GAAGD,IAAI;IACtB,KAAK,IAAIjL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGuI,GAAG,GAAG,CAAC,EAAE,EAAEvI,CAAC,EAAE;MAChCiL,IAAI,CAACL,IAAI,CAAC5K,CAAC,CAAC,CAAC,GAAGiL,IAAI,CAACL,IAAI,CAAC5K,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;MACnCiL,IAAI,GAAGA,IAAI,CAACL,IAAI,CAAC5K,CAAC,CAAC,CAAC;IACtB;IACAiL,IAAI,CAACL,IAAI,CAACrC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAGlJ,KAAK;IAC3BE,GAAG,CAACqL,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGM,WAAW;EAC5B,CAAC,CAAC,OAAOJ,EAAE,EAAE;IACX;EACF;AACF;AAEA,SAASK,kBAAkBA,CAAC1D,IAAI,EAAE;EAChC,IAAIzH,CAAC,EAAEuI,GAAG,EAAEP,GAAG;EACf,IAAIpD,MAAM,GAAG,EAAE;EACf,KAAK5E,CAAC,GAAG,CAAC,EAAEuI,GAAG,GAAGd,IAAI,CAACrE,MAAM,EAAEpD,CAAC,GAAGuI,GAAG,EAAE,EAAEvI,CAAC,EAAE;IAC3CgI,GAAG,GAAGP,IAAI,CAACzH,CAAC,CAAC;IACb,QAAQjC,QAAQ,CAACiK,GAAG,CAAC;MACnB,KAAK,QAAQ;QACXA,GAAG,GAAGnD,SAAS,CAACmD,GAAG,CAAC;QACpBA,GAAG,GAAGA,GAAG,CAACzG,KAAK,IAAIyG,GAAG,CAAC3I,KAAK;QAC5B,IAAI2I,GAAG,CAAC5E,MAAM,GAAG,GAAG,EAAE;UACpB4E,GAAG,GAAGA,GAAG,CAACoD,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK;QAClC;QACA;MACF,KAAK,MAAM;QACTpD,GAAG,GAAG,MAAM;QACZ;MACF,KAAK,WAAW;QACdA,GAAG,GAAG,WAAW;QACjB;MACF,KAAK,QAAQ;QACXA,GAAG,GAAGA,GAAG,CAAC7J,QAAQ,CAAC,CAAC;QACpB;IACJ;IACAyG,MAAM,CAACb,IAAI,CAACiE,GAAG,CAAC;EAClB;EACA,OAAOpD,MAAM,CAACZ,IAAI,CAAC,GAAG,CAAC;AACzB;AAEA,SAASpD,GAAGA,CAAA,EAAG;EACb,IAAIyK,IAAI,CAACzK,GAAG,EAAE;IACZ,OAAOyK,IAAI,CAACzK,GAAG,CAAC,CAAC;EACnB;EACA,OAAOf,MAAM,CAAC,IAAIwL,IAAI,CAAC,CAAC,CAAC;AAC3B;AAEA,SAASC,QAAQA,CAACC,WAAW,EAAEC,SAAS,EAAE;EACxC,IAAI,CAACD,WAAW,IAAI,CAACA,WAAW,CAAC,SAAS,CAAC,IAAIC,SAAS,KAAK,IAAI,EAAE;IACjE;EACF;EACA,IAAIC,KAAK,GAAGF,WAAW,CAAC,SAAS,CAAC;EAClC,IAAI,CAACC,SAAS,EAAE;IACdC,KAAK,GAAG,IAAI;EACd,CAAC,MAAM;IACL,IAAI;MACF,IAAIC,KAAK;MACT,IAAID,KAAK,CAACrH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;QAC7BsH,KAAK,GAAGD,KAAK,CAACZ,KAAK,CAAC,GAAG,CAAC;QACxBa,KAAK,CAACC,GAAG,CAAC,CAAC;QACXD,KAAK,CAAC3H,IAAI,CAAC,GAAG,CAAC;QACf0H,KAAK,GAAGC,KAAK,CAAC1H,IAAI,CAAC,GAAG,CAAC;MACzB,CAAC,MAAM,IAAIyH,KAAK,CAACrH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;QACpCsH,KAAK,GAAGD,KAAK,CAACZ,KAAK,CAAC,GAAG,CAAC;QACxB,IAAIa,KAAK,CAACtI,MAAM,GAAG,CAAC,EAAE;UACpB,IAAIwI,SAAS,GAAGF,KAAK,CAACnE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;UACjC,IAAIsE,QAAQ,GAAGD,SAAS,CAAC,CAAC,CAAC,CAACxH,OAAO,CAAC,GAAG,CAAC;UACxC,IAAIyH,QAAQ,KAAK,CAAC,CAAC,EAAE;YACnBD,SAAS,CAAC,CAAC,CAAC,GAAGA,SAAS,CAAC,CAAC,CAAC,CAACtH,SAAS,CAAC,CAAC,EAAEuH,QAAQ,CAAC;UACpD;UACA,IAAIC,QAAQ,GAAG,0BAA0B;UACzCL,KAAK,GAAGG,SAAS,CAACG,MAAM,CAACD,QAAQ,CAAC,CAAC9H,IAAI,CAAC,GAAG,CAAC;QAC9C;MACF,CAAC,MAAM;QACLyH,KAAK,GAAG,IAAI;MACd;IACF,CAAC,CAAC,OAAOX,EAAE,EAAE;MACXW,KAAK,GAAG,IAAI;IACd;EACF;EACAF,WAAW,CAAC,SAAS,CAAC,GAAGE,KAAK;AAChC;AAEA,SAASO,aAAaA,CAACC,OAAO,EAAEC,KAAK,EAAEC,OAAO,EAAEpF,MAAM,EAAE;EACtD,IAAInC,MAAM,GAAG2E,KAAK,CAAC0C,OAAO,EAAEC,KAAK,EAAEC,OAAO,CAAC;EAC3CvH,MAAM,GAAGwH,uBAAuB,CAACxH,MAAM,EAAEmC,MAAM,CAAC;EAChD,IAAI,CAACmF,KAAK,IAAIA,KAAK,CAACG,oBAAoB,EAAE;IACxC,OAAOzH,MAAM;EACf;EACA,IAAIsH,KAAK,CAACI,WAAW,EAAE;IACrB1H,MAAM,CAAC0H,WAAW,GAAG,CAACL,OAAO,CAACK,WAAW,IAAI,EAAE,EAAEP,MAAM,CAACG,KAAK,CAACI,WAAW,CAAC;EAC5E;EACA,OAAO1H,MAAM;AACf;AAEA,SAASwH,uBAAuBA,CAAC1I,OAAO,EAAEqD,MAAM,EAAE;EAChD,IAAIrD,OAAO,CAAC6I,aAAa,IAAI,CAAC7I,OAAO,CAAC8I,YAAY,EAAE;IAClD9I,OAAO,CAAC8I,YAAY,GAAG9I,OAAO,CAAC6I,aAAa;IAC5C7I,OAAO,CAAC6I,aAAa,GAAGzJ,SAAS;IACjCiE,MAAM,IAAIA,MAAM,CAAC0F,GAAG,CAAC,gDAAgD,CAAC;EACxE;EACA,IAAI/I,OAAO,CAACgJ,aAAa,IAAI,CAAChJ,OAAO,CAACiJ,aAAa,EAAE;IACnDjJ,OAAO,CAACiJ,aAAa,GAAGjJ,OAAO,CAACgJ,aAAa;IAC7ChJ,OAAO,CAACgJ,aAAa,GAAG5J,SAAS;IACjCiE,MAAM,IAAIA,MAAM,CAAC0F,GAAG,CAAC,iDAAiD,CAAC;EACzE;EACA,OAAO/I,OAAO;AAChB;AAEA,SAAS6F,KAAKA,CAAA,EAAG;EACf,SAASqD,aAAaA,CAACrN,GAAG,EAAE;IAC1B,IAAI,CAACA,GAAG,IAAIT,MAAM,CAACD,SAAS,CAACV,QAAQ,CAACC,IAAI,CAACmB,GAAG,CAAC,KAAK,iBAAiB,EAAE;MACrE,OAAO,KAAK;IACd;IAEA,IAAIsN,iBAAiB,GAAGvN,MAAM,CAACC,GAAG,EAAE,aAAa,CAAC;IAClD,IAAIuN,gBAAgB,GAClBvN,GAAG,CAACwN,WAAW,IACfxN,GAAG,CAACwN,WAAW,CAAClO,SAAS,IACzBS,MAAM,CAACC,GAAG,CAACwN,WAAW,CAAClO,SAAS,EAAE,eAAe,CAAC;IACpD;IACA,IAAIU,GAAG,CAACwN,WAAW,IAAI,CAACF,iBAAiB,IAAI,CAACC,gBAAgB,EAAE;MAC9D,OAAO,KAAK;IACd;;IAEA;IACA;IACA,IAAItK,GAAG;IACP,KAAKA,GAAG,IAAIjD,GAAG,EAAE;MACf;IAAA;IAGF,OAAO,OAAOiD,GAAG,KAAK,WAAW,IAAIlD,MAAM,CAACC,GAAG,EAAEiD,GAAG,CAAC;EACvD;EAEA,IAAIxC,CAAC;IACHgN,GAAG;IACHC,IAAI;IACJ7F,KAAK;IACLpJ,IAAI;IACJ4G,MAAM,GAAG9F,MAAM,CAACoO,MAAM,CAAC,IAAI,CAAC;IAAE;IAC9BjB,OAAO,GAAG,IAAI;IACd7I,MAAM,GAAG+J,SAAS,CAAC/J,MAAM;EAE3B,KAAKpD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoD,MAAM,EAAEpD,CAAC,EAAE,EAAE;IAC3BiM,OAAO,GAAGkB,SAAS,CAACnN,CAAC,CAAC;IACtB,IAAIiM,OAAO,KAAK,IAAI,IAAIA,OAAO,KAAKnJ,SAAS,EAAE;MAC7C;IACF;IAEA,KAAK9E,IAAI,IAAIiO,OAAO,EAAE;MACpBe,GAAG,GAAGpI,MAAM,CAAC5G,IAAI,CAAC;MAClBiP,IAAI,GAAGhB,OAAO,CAACjO,IAAI,CAAC;MACpB,IAAI4G,MAAM,KAAKqI,IAAI,EAAE;QACnB,IAAIA,IAAI,IAAIL,aAAa,CAACK,IAAI,CAAC,EAAE;UAC/B7F,KAAK,GAAG4F,GAAG,IAAIJ,aAAa,CAACI,GAAG,CAAC,GAAGA,GAAG,GAAG,CAAC,CAAC;UAC5CpI,MAAM,CAAC5G,IAAI,CAAC,GAAGuL,KAAK,CAACnC,KAAK,EAAE6F,IAAI,CAAC;QACnC,CAAC,MAAM,IAAI,OAAOA,IAAI,KAAK,WAAW,EAAE;UACtCrI,MAAM,CAAC5G,IAAI,CAAC,GAAGiP,IAAI;QACrB;MACF;IACF;EACF;EACA,OAAOrI,MAAM;AACf;;;ACn2BmC;AAEnC,SAASwI,QAAQA,CAAC7N,GAAG,EAAE6G,IAAI,EAAEe,IAAI,EAAE;EACjC,IAAIrD,CAAC,EAAEuJ,CAAC,EAAErN,CAAC;EACX,IAAIsN,KAAK,GAAGvL,MAAQ,CAACxC,GAAG,EAAE,QAAQ,CAAC;EACnC,IAAIgO,OAAO,GAAGxL,MAAQ,CAACxC,GAAG,EAAE,OAAO,CAAC;EACpC,IAAIqL,IAAI,GAAG,EAAE;EACb,IAAI4C,SAAS;;EAEb;EACArG,IAAI,GAAGA,IAAI,IAAI;IAAE5H,GAAG,EAAE,EAAE;IAAEkO,MAAM,EAAE;EAAG,CAAC;EAEtC,IAAIH,KAAK,EAAE;IACTE,SAAS,GAAGrG,IAAI,CAAC5H,GAAG,CAAC6E,OAAO,CAAC7E,GAAG,CAAC;IAEjC,IAAI+N,KAAK,IAAIE,SAAS,KAAK,CAAC,CAAC,EAAE;MAC7B;MACA,OAAOrG,IAAI,CAACsG,MAAM,CAACD,SAAS,CAAC,IAAIrG,IAAI,CAAC5H,GAAG,CAACiO,SAAS,CAAC;IACtD;IAEArG,IAAI,CAAC5H,GAAG,CAACwE,IAAI,CAACxE,GAAG,CAAC;IAClBiO,SAAS,GAAGrG,IAAI,CAAC5H,GAAG,CAAC6D,MAAM,GAAG,CAAC;EACjC;EAEA,IAAIkK,KAAK,EAAE;IACT,KAAKxJ,CAAC,IAAIvE,GAAG,EAAE;MACb,IAAIwC,MAAQ,CAACxC,GAAG,EAAEuE,CAAC,CAAC,EAAE;QACpB8G,IAAI,CAAC7G,IAAI,CAACD,CAAC,CAAC;MACd;IACF;EACF,CAAC,MAAM,IAAIyJ,OAAO,EAAE;IAClB,KAAKvN,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGT,GAAG,CAAC6D,MAAM,EAAE,EAAEpD,CAAC,EAAE;MAC/B4K,IAAI,CAAC7G,IAAI,CAAC/D,CAAC,CAAC;IACd;EACF;EAEA,IAAI4E,MAAM,GAAG0I,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE;EAC5B,IAAII,IAAI,GAAG,IAAI;EACf,KAAK1N,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4K,IAAI,CAACxH,MAAM,EAAE,EAAEpD,CAAC,EAAE;IAChC8D,CAAC,GAAG8G,IAAI,CAAC5K,CAAC,CAAC;IACXqN,CAAC,GAAG9N,GAAG,CAACuE,CAAC,CAAC;IACVc,MAAM,CAACd,CAAC,CAAC,GAAGsC,IAAI,CAACtC,CAAC,EAAEuJ,CAAC,EAAElG,IAAI,CAAC;IAC5BuG,IAAI,GAAGA,IAAI,IAAI9I,MAAM,CAACd,CAAC,CAAC,KAAKvE,GAAG,CAACuE,CAAC,CAAC;EACrC;EAEA,IAAIwJ,KAAK,IAAI,CAACI,IAAI,EAAE;IAClBvG,IAAI,CAACsG,MAAM,CAACD,SAAS,CAAC,GAAG5I,MAAM;EACjC;EAEA,OAAO,CAAC8I,IAAI,GAAG9I,MAAM,GAAGrF,GAAG;AAC7B;AAEA,qDAAe6N,QAAQ,E;;;;;;;;;ACpDsB;AACX;AAElC,SAASO,KAAKA,CAACjF,IAAI,EAAE4D,WAAW,EAAEsB,UAAU,EAAE;EAC5CtB,WAAW,GAAGA,WAAW,IAAI,EAAE;EAE/B,IAAIsB,UAAU,EAAE;IAAA,IAAAzE,SAAA,GAAAC,+BAAA,CACKwE,UAAU;MAAAvE,KAAA;IAAA;MAA7B,KAAAF,SAAA,CAAA3D,CAAA,MAAA6D,KAAA,GAAAF,SAAA,CAAAvJ,CAAA,IAAA0J,IAAA,GAA+B;QAAA,IAApBpF,IAAI,GAAAmF,KAAA,CAAAhK,KAAA;QACbwO,SAAS,CAACnF,IAAI,EAAExE,IAAI,CAAC;MACvB;IAAC,SAAA8C,GAAA;MAAAmC,SAAA,CAAAhJ,CAAA,CAAA6G,GAAA;IAAA;MAAAmC,SAAA,CAAA3K,CAAA;IAAA;EACH;EAEA,IAAIsP,QAAQ,GAAGC,oBAAoB,CAACzB,WAAW,CAAC;EAChD,IAAI0B,QAAQ,GAAGC,yBAAyB,CAAC3B,WAAW,CAAC;EAErD,SAAS4B,gBAAgBA,CAACC,MAAM,EAAEC,SAAS,EAAE;IAC3C,OAAOA,SAAS,GAAGrM,MAAQ,CAAC,CAAC;EAC/B;EAEA,SAASsM,aAAaA,CAAChB,CAAC,EAAE;IACxB,IAAItL,MAAQ,CAACsL,CAAC,EAAE,QAAQ,CAAC,EAAE;MAAA,IAAAtD,UAAA,GAAAX,+BAAA,CACL4E,QAAQ;QAAAhE,MAAA;MAAA;QAA5B,KAAAD,UAAA,CAAAvE,CAAA,MAAAwE,MAAA,GAAAD,UAAA,CAAAnK,CAAA,IAAA0J,IAAA,GAA8B;UAAA,IAAnBgF,KAAK,GAAAtE,MAAA,CAAA3K,KAAA;UACdgO,CAAC,GAAGA,CAAC,CAACrO,OAAO,CAACsP,KAAK,EAAEJ,gBAAgB,CAAC;QACxC;MAAC,SAAAlH,GAAA;QAAA+C,UAAA,CAAA5J,CAAA,CAAA6G,GAAA;MAAA;QAAA+C,UAAA,CAAAvL,CAAA;MAAA;IACH;IACA,OAAO6O,CAAC;EACV;EAEA,SAASkB,WAAWA,CAACzK,CAAC,EAAEuJ,CAAC,EAAE;IAAA,IAAA7C,UAAA,GAAApB,+BAAA,CACL0E,QAAQ;MAAArD,MAAA;IAAA;MAA5B,KAAAD,UAAA,CAAAhF,CAAA,MAAAiF,MAAA,GAAAD,UAAA,CAAA5K,CAAA,IAAA0J,IAAA,GAA8B;QAAA,IAAnBgF,KAAK,GAAA7D,MAAA,CAAApL,KAAA;QACd,IAAIiP,KAAK,CAAClP,IAAI,CAAC0E,CAAC,CAAC,EAAE;UACjBuJ,CAAC,GAAGtL,MAAQ,CAAC,CAAC;UACd;QACF;MACF;IAAC,SAAAiF,GAAA;MAAAwD,UAAA,CAAArK,CAAA,CAAA6G,GAAA;IAAA;MAAAwD,UAAA,CAAAhM,CAAA;IAAA;IACD,OAAO6O,CAAC;EACV;EAEA,SAASmB,QAAQA,CAAC1K,CAAC,EAAEuJ,CAAC,EAAElG,IAAI,EAAE;IAC5B,IAAIsH,IAAI,GAAGF,WAAW,CAACzK,CAAC,EAAEuJ,CAAC,CAAC;IAC5B,IAAIoB,IAAI,KAAKpB,CAAC,EAAE;MACd,IAAItL,MAAQ,CAACsL,CAAC,EAAE,QAAQ,CAAC,IAAItL,MAAQ,CAACsL,CAAC,EAAE,OAAO,CAAC,EAAE;QACjD,OAAOD,gBAAQ,CAACC,CAAC,EAAEmB,QAAQ,EAAErH,IAAI,CAAC;MACpC;MACA,OAAOkH,aAAa,CAACI,IAAI,CAAC;IAC5B,CAAC,MAAM;MACL,OAAOA,IAAI;IACb;EACF;EAEA,OAAOrB,gBAAQ,CAAC1E,IAAI,EAAE8F,QAAQ,CAAC;AACjC;AAEA,SAASX,SAASA,CAACtO,GAAG,EAAE2E,IAAI,EAAE;EAC5B,IAAI0G,IAAI,GAAG1G,IAAI,CAAC2G,KAAK,CAAC,GAAG,CAAC;EAC1B,IAAI6D,IAAI,GAAG9D,IAAI,CAACxH,MAAM,GAAG,CAAC;EAC1B,IAAI;IAAA,IAAAuL,UAAA,GAAAvF,+BAAA,CACyBwB,IAAI,CAACgE,OAAO,CAAC,CAAC;MAAAC,MAAA;IAAA;MAAzC,KAAAF,UAAA,CAAAnJ,CAAA,MAAAqJ,MAAA,GAAAF,UAAA,CAAA/O,CAAA,IAAA0J,IAAA,GAA2C;QAAA,IAAAwF,YAAA,GAAAC,cAAA,CAAAF,MAAA,CAAAxP,KAAA;UAA/B2P,KAAK,GAAAF,YAAA;UAAEtM,GAAG,GAAAsM,YAAA;QACpB,IAAIE,KAAK,GAAGN,IAAI,EAAE;UAChBnP,GAAG,GAAGA,GAAG,CAACiD,GAAG,CAAC;QAChB,CAAC,MAAM;UACLjD,GAAG,CAACiD,GAAG,CAAC,GAAGT,MAAQ,CAAC,CAAC;QACvB;MACF;IAAC,SAAAiF,GAAA;MAAA2H,UAAA,CAAAxO,CAAA,CAAA6G,GAAA;IAAA;MAAA2H,UAAA,CAAAnQ,CAAA;IAAA;EACH,CAAC,CAAC,OAAOsM,EAAE,EAAE;IACX;EAAA;AAEJ;AAEA,SAASiD,oBAAoBA,CAACzB,WAAW,EAAE;EACzC,IAAI2C,GAAG,GAAG,EAAE;EAAC,IAAAC,UAAA,GAAA9F,+BAAA,CACOkD,WAAW;IAAA6C,MAAA;EAAA;IAA/B,KAAAD,UAAA,CAAA1J,CAAA,MAAA2J,MAAA,GAAAD,UAAA,CAAAtP,CAAA,IAAA0J,IAAA,GAAiC;MAAA,IAAtB8F,KAAK,GAAAD,MAAA,CAAA9P,KAAA;MACd,IAAIgQ,GAAG,GAAG,gBAAgB,GAAGD,KAAK,GAAG,6BAA6B;MAClEH,GAAG,CAAClL,IAAI,CAAC,IAAI7E,MAAM,CAACmQ,GAAG,EAAE,GAAG,CAAC,CAAC;IAChC;EAAC,SAAArI,GAAA;IAAAkI,UAAA,CAAA/O,CAAA,CAAA6G,GAAA;EAAA;IAAAkI,UAAA,CAAA1Q,CAAA;EAAA;EACD,OAAOyQ,GAAG;AACZ;AAEA,SAAShB,yBAAyBA,CAAC3B,WAAW,EAAE;EAC9C,IAAI2C,GAAG,GAAG,EAAE;EAAC,IAAAK,UAAA,GAAAlG,+BAAA,CACOkD,WAAW;IAAAiD,MAAA;EAAA;IAA/B,KAAAD,UAAA,CAAA9J,CAAA,MAAA+J,MAAA,GAAAD,UAAA,CAAA1P,CAAA,IAAA0J,IAAA,GAAiC;MAAA,IAAtB8F,KAAK,GAAAG,MAAA,CAAAlQ,KAAA;MACd,IAAIgQ,GAAG,GAAG,eAAe,GAAGD,KAAK,GAAG,4BAA4B;MAChEH,GAAG,CAAClL,IAAI,CAAC,IAAI7E,MAAM,CAAC,GAAG,GAAGmQ,GAAG,GAAG,cAAc,EAAE,KAAK,CAAC,CAAC;IACzD;EAAC,SAAArI,GAAA;IAAAsI,UAAA,CAAAnP,CAAA,CAAA6G,GAAA;EAAA;IAAAsI,UAAA,CAAA9Q,CAAA;EAAA;EACD,OAAOyQ,GAAG;AACZ;AAEA,8CAAetB,KAAK,E;;;;;;;;;;;;;;ACvFc;AAElC,IAAM6B,UAAU,GAAG,GAAG;;AAEtB;AACA,SAASC,UAAUA,CAACC,MAAM,EAAE;EAC1B,OAAO,CAAC1O,IAAI,CAAC2O,KAAK,CAACD,MAAM,GAAG,IAAI,CAAC,EAAE1O,IAAI,CAAC4O,KAAK,CAAEF,MAAM,GAAG,IAAI,GAAI,GAAG,CAAC,CAAC;AACvE;AAAC,IAEKG,SAAS;EACb,SAAAA,UAAYnM,OAAO,EAAEoM,OAAO,EAAE;IAAA,IAAAC,aAAA;IAAAC,eAAA,OAAAH,SAAA;IAC5B,IAAI,CAACI,KAAK,GAAG,EAAE;IACf,IAAI,CAACvM,OAAO,GAAG3B,KAAO,CAAC2B,OAAO,CAAC;IAC/B,IAAIwM,kBAAkB,GAAG,IAAI,CAACxM,OAAO,CAACwM,kBAAkB,IAAIV,UAAU;IACtE,IAAI,CAACW,YAAY,GAAGnP,IAAI,CAACoP,GAAG,CAAC,CAAC,EAAEpP,IAAI,CAACqP,GAAG,CAACH,kBAAkB,EAAEV,UAAU,CAAC,CAAC;IACzE,IAAI,CAACM,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACQ,aAAa,IAAAP,aAAA,GAAG,IAAI,CAACD,OAAO,cAAAC,aAAA,uBAAZA,aAAA,CAAcQ,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;EACvE;EAAC,OAAAC,YAAA,CAAAX,SAAA;IAAArN,GAAA;IAAAnD,KAAA,EAED,SAAAoR,SAASA,CAAC/M,OAAO,EAAE;MACjB,IAAIgN,UAAU,GAAG,IAAI,CAAChN,OAAO;MAC7B,IAAI,CAACA,OAAO,GAAG3B,KAAO,CAAC2O,UAAU,EAAEhN,OAAO,CAAC;MAC3C,IAAIwM,kBAAkB,GAAG,IAAI,CAACxM,OAAO,CAACwM,kBAAkB,IAAIV,UAAU;MACtE,IAAImB,YAAY,GAAG3P,IAAI,CAACoP,GAAG,CAAC,CAAC,EAAEpP,IAAI,CAACqP,GAAG,CAACH,kBAAkB,EAAEV,UAAU,CAAC,CAAC;MACxE,IAAIoB,WAAW,GAAG,CAAC;MACnB,IAAI,IAAI,CAACX,KAAK,CAAC7M,MAAM,GAAGuN,YAAY,EAAE;QACpCC,WAAW,GAAG,IAAI,CAACX,KAAK,CAAC7M,MAAM,GAAGuN,YAAY;MAChD;MACA,IAAI,CAACR,YAAY,GAAGQ,YAAY;MAChC,IAAI,CAACV,KAAK,CAACY,MAAM,CAAC,CAAC,EAAED,WAAW,CAAC;IACnC;EAAC;IAAApO,GAAA;IAAAnD,KAAA,EAED,SAAAyR,UAAUA,CAAA,EAAG;MACX,IAAIC,MAAM,GAAGC,KAAK,CAACnS,SAAS,CAAC0I,KAAK,CAACnJ,IAAI,CAAC,IAAI,CAAC6R,KAAK,EAAE,CAAC,CAAC;MACtD,IAAIlO,UAAY,CAAC,IAAI,CAAC2B,OAAO,CAACuN,eAAe,CAAC,EAAE;QAC9C,IAAI;UACF,IAAIjR,CAAC,GAAG+Q,MAAM,CAAC3N,MAAM;UACrB,OAAOpD,CAAC,EAAE,EAAE;YACV,IAAI,IAAI,CAAC0D,OAAO,CAACuN,eAAe,CAACF,MAAM,CAAC/Q,CAAC,CAAC,CAAC,EAAE;cAC3C+Q,MAAM,CAACF,MAAM,CAAC7Q,CAAC,EAAE,CAAC,CAAC;YACrB;UACF;QACF,CAAC,CAAC,OAAO8K,EAAE,EAAE;UACX,IAAI,CAACpH,OAAO,CAACuN,eAAe,GAAG,IAAI;QACrC;MACF;;MAEA;MACAF,MAAM,GAAGA,MAAM,CAACG,MAAM,CAAC,UAAC/Q,CAAC;QAAA,OAAKA,CAAC,CAACF,IAAI,KAAK,cAAc;MAAA,EAAC;;MAExD;MACA8Q,MAAM,GAAGA,MAAM,CAACI,GAAG,CACjB,UAAAC,IAAA;QAAA,IAAmBC,eAAe,GAAAD,IAAA,CAA/BE,cAAc;UAAsBlH,KAAK,GAAAmH,wBAAA,CAAAH,IAAA,EAAAI,SAAA;QAAA,OAAOpH,KAAK;MAAA,CAC1D,CAAC;MAED,OAAO2G,MAAM;IACf;EAAC;IAAAvO,GAAA;IAAAnD,KAAA,EAED,SAAAoS,mBAAmBA,CAAA,EAAkB;MAAA,IAAjBlH,UAAU,GAAA4C,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,CAAC,CAAC;MACjC,IAAI,IAAI,CAACmD,aAAa,EAAE;QACtB,IAAI,CAACA,aAAa,CAACoB,GAAG,CAACnH,UAAU,CAAC;QAClC,IAAI,CAAC+F,aAAa,GAAG,IAAI,CAACR,OAAO,CAACS,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;MACtE;IACF;EAAC;IAAA/N,GAAA;IAAAnD,KAAA,EAED,SAAAsS,OAAOA,CACL1R,IAAI,EACJkK,QAAQ,EACRrB,KAAK,EACL8I,WAAW,EAGX;MAAA,IAFAnJ,SAAS,GAAA0E,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,IAAI;MAAA,IAChBmE,cAAc,GAAAnE,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,IAAI;MAErB,IAAIhN,CAAC,GAAG;QACN2I,KAAK,EAAE+I,QAAQ,CAAC5R,IAAI,EAAE6I,KAAK,CAAC;QAC5B7I,IAAI,EAAEA,IAAI;QACV6R,YAAY,EAAErJ,SAAS,IAAI1G,GAAK,CAAC,CAAC;QAClCgQ,IAAI,EAAE5H,QAAQ;QACd/H,MAAM,EAAE;MACV,CAAC;MACD,IAAIwP,WAAW,EAAE;QACfzR,CAAC,CAACU,IAAI,GAAG+Q,WAAW;MACtB;MACA,IAAIN,cAAc,EAAE;QAClBnR,CAAC,CAACmR,cAAc,GAAGA,cAAc;MACnC;MAEA,IAAI;QACF,IACEvP,UAAY,CAAC,IAAI,CAAC2B,OAAO,CAACuN,eAAe,CAAC,IAC1C,IAAI,CAACvN,OAAO,CAACuN,eAAe,CAAC9Q,CAAC,CAAC,EAC/B;UACA,OAAO,KAAK;QACd;MACF,CAAC,CAAC,OAAO6R,IAAI,EAAE;QACb,IAAI,CAACtO,OAAO,CAACuN,eAAe,GAAG,IAAI;MACrC;MAEA,IAAI,CAAClN,IAAI,CAAC5D,CAAC,CAAC;MACZ,OAAOA,CAAC;IACV;EAAC;IAAAqC,GAAA;IAAAnD,KAAA,EAED,SAAA4S,YAAYA,CAAChS,IAAI,EAAEkK,QAAQ,EAAErB,KAAK,EAAE8I,WAAW,EAAE;MAC/C,OAAO,IAAI,CAACD,OAAO,CAAC1R,IAAI,EAAEkK,QAAQ,EAAErB,KAAK,EAAE8I,WAAW,CAAC;IACzD;EAAC;IAAApP,GAAA;IAAAnD,KAAA,EAED,SAAA6S,YAAYA,CAAClL,GAAG,EAAE8B,KAAK,EAAE8I,WAAW,EAAEnJ,SAAS,EAAE;MAAA,IAAA0J,mBAAA;MAC/C,IAAMxM,OAAO,GAAGqB,GAAG,CAACrB,OAAO,IAAIjG,MAAM,CAACsH,GAAG,CAAC;MAC1C,IAAImD,QAAQ,GAAG;QAAExE,OAAO,EAAPA;MAAQ,CAAC;MAC1B,IAAIqB,GAAG,CAACH,KAAK,EAAE;QACbsD,QAAQ,CAACtD,KAAK,GAAGG,GAAG,CAACH,KAAK;MAC5B;MACA,IAAMyK,cAAc,GAAG;QACrB3L,OAAO,EAAPA,OAAO;QACPmD,KAAK,EAALA,KAAK;QACL7I,IAAI,EAAE,OAAO;QACbY,IAAI,EAAE+Q;MACR,CAAC;MAED,CAAAO,mBAAA,OAAI,CAAC7B,aAAa,cAAA6B,mBAAA,eAAlBA,mBAAA,CAAoBC,QAAQ,CAC1B,0BAA0B,EAC1Bd,cAAc,EACd7B,UAAU,CAAChH,SAAS,CACtB,CAAC;MAED,OAAO,IAAI,CAACkJ,OAAO,CACjB,OAAO,EACPxH,QAAQ,EACRrB,KAAK,EACL8I,WAAW,EACXnJ,SAAS,EACT6I,cACF,CAAC;IACH;EAAC;IAAA9O,GAAA;IAAAnD,KAAA,EAED,SAAAgT,UAAUA,CAAC1M,OAAO,EAAEmD,KAAK,EAAE8I,WAAW,EAAEnJ,SAAS,EAAE;MAAA,IAAA6J,oBAAA;MACjD,IAAMlI,KAAK,GAAGwH,WAAW,GACrB,0BAA0B,GAC1B,mBAAmB;MACvB,IAAMN,cAAc,GAAAiB,aAAA;QAClB5M,OAAO,EAAPA,OAAO;QACPmD,KAAK,EAALA;MAAK,GACD8I,WAAW,GAAG;QAAE3R,IAAI,EAAE,SAAS;QAAEY,IAAI,EAAE+Q;MAAY,CAAC,GAAG,CAAC,CAAC,CAC9D;MAED,CAAAU,oBAAA,OAAI,CAAChC,aAAa,cAAAgC,oBAAA,eAAlBA,oBAAA,CAAoBF,QAAQ,CAAChI,KAAK,EAAEkH,cAAc,EAAE7B,UAAU,CAAChH,SAAS,CAAC,CAAC;MAE1E,OAAO,IAAI,CAACkJ,OAAO,CACjB,KAAK,EACL;QAAEhM,OAAO,EAAPA;MAAQ,CAAC,EACXmD,KAAK,EACL8I,WAAW,EACXnJ,SAAS,EACT6I,cACF,CAAC;IACH;EAAC;IAAA9O,GAAA;IAAAnD,KAAA,EAED,SAAAmT,cAAcA,CAACrI,QAAQ,EAAEsI,OAAO,EAAEb,WAAW,EAAErG,WAAW,EAAE;MAAA,IAAAmH,kBAAA,EAAAC,mBAAA,EAAAC,oBAAA;MAC1DH,OAAO,GAAGA,OAAO,IAAI,KAAK;MAC1BtI,QAAQ,CAACsI,OAAO,GAAGtI,QAAQ,CAACsI,OAAO,IAAIA,OAAO;MAC9C,IAAIlH,WAAW,EAAE;QACfpB,QAAQ,CAACpC,OAAO,GAAGwD,WAAW;MAChC;MACA,IAAMzC,KAAK,GAAG,IAAI,CAAC+J,eAAe,CAAC1I,QAAQ,CAAC2I,WAAW,CAAC;MACxD,IAAMC,WAAW,GAAG,CAAC5I,QAAQ,CAAC6I,WAAW,IAAI,CAAC,IAAI,GAAG;MACrD,IAAM1B,cAAc,GAAG;QACrBrR,IAAI,EAAEkK,QAAQ,CAACsI,OAAO;QACtBQ,MAAM,EAAE9I,QAAQ,CAAC8I,MAAM;QACvBvR,GAAG,EAAEyI,QAAQ,CAACzI,GAAG;QACjBwR,UAAU,EAAE/I,QAAQ,CAAC2I,WAAW;QAChC,iBAAiB,EAAE/N,IAAI,CAACF,SAAS,CAACsF,QAAQ,CAACgJ,eAAe,IAAI,CAAC,CAAC,CAAC;QACjE,kBAAkB,EAAEpO,IAAI,CAACF,SAAS,CAAC,EAAA6N,kBAAA,GAAAvI,QAAQ,CAACiJ,QAAQ,cAAAV,kBAAA,uBAAjBA,kBAAA,CAAmBW,OAAO,KAAI,CAAC,CAAC,CAAC;QACpE,uBAAuB,EAAEN,WAAW,CAAC5U,QAAQ,CAAC;MAChD,CAAC;MACD,IAAMmV,WAAW,GAAGnJ,QAAQ,CAACpC,OAAO;MACpC,IAAMwL,YAAY,IAAAZ,mBAAA,GAAGxI,QAAQ,CAACiJ,QAAQ,cAAAT,mBAAA,uBAAjBA,mBAAA,CAAmBZ,IAAI;MAC5C,IAAIuB,WAAW,EAAE;QACfhC,cAAc,CAAC,cAAc,CAAC,GAAGvM,IAAI,CAACF,SAAS,CAACyO,WAAW,CAAC;MAC9D;MACA,IAAIC,YAAY,EAAE;QAChBjC,cAAc,CAAC,eAAe,CAAC,GAAGvM,IAAI,CAACF,SAAS,CAAC0O,YAAY,CAAC;MAChE;MAEA,CAAAX,oBAAA,OAAI,CAACtC,aAAa,cAAAsC,oBAAA,eAAlBA,oBAAA,CAAoBR,QAAQ,CAC1B,uBAAuB,EACvBd,cAAc,EACd7B,UAAU,CAACtF,QAAQ,CAACqJ,aAAa,CACnC,CAAC;MAED,OAAO,IAAI,CAAC7B,OAAO,CACjB,SAAS,EACTxH,QAAQ,EACRrB,KAAK,EACL8I,WAAW,EACXzH,QAAQ,CAACqJ,aAAa,EACtBlC,cACF,CAAC;IACH;EAAC;IAAA9O,GAAA;IAAAnD,KAAA,EAED,SAAAwT,eAAeA,CAACK,UAAU,EAAE;MAC1B,IAAIA,UAAU,IAAI,GAAG,IAAIA,UAAU,GAAG,GAAG,EAAE;QACzC,OAAO,MAAM;MACf;MACA,IAAIA,UAAU,KAAK,CAAC,IAAIA,UAAU,IAAI,GAAG,EAAE;QACzC,OAAO,OAAO;MAChB;MACA,OAAO,MAAM;IACf;EAAC;IAAA1Q,GAAA;IAAAnD,KAAA,EAED,SAAAoU,UAAUA,CAAChB,OAAO,EAAEiB,OAAO,EAAErU,KAAK,EAAEsU,OAAO,EAAE/B,WAAW,EAAE;MACxD,IAAIzH,QAAQ,GAAG;QACbsI,OAAO,EAAEA,OAAO;QAChBiB,OAAO,EAAEA;MACX,CAAC;MACD,IAAIrU,KAAK,KAAKyD,SAAS,EAAE;QACvBqH,QAAQ,CAAC9K,KAAK,GAAGA,KAAK;MACxB;MACA,IAAIsU,OAAO,KAAK7Q,SAAS,EAAE;QACzBqH,QAAQ,CAACwJ,OAAO,GAAGA,OAAO;MAC5B;MACA,OAAO,IAAI,CAAChC,OAAO,CAAC,KAAK,EAAExH,QAAQ,EAAE,MAAM,EAAEyH,WAAW,CAAC;IAC3D;EAAC;IAAApP,GAAA;IAAAnD,KAAA,EAED,SAAAuU,YAAYA,CAAAC,KAAA,EAAmD;MAAA,IAAAC,oBAAA;MAAA,IAAhD7T,IAAI,GAAA4T,KAAA,CAAJ5T,IAAI;QAAE8T,WAAW,GAAAF,KAAA,CAAXE,WAAW;QAAEL,OAAO,GAAAG,KAAA,CAAPH,OAAO;QAAErU,KAAK,GAAAwU,KAAA,CAALxU,KAAK;QAAEoJ,SAAS,GAAAoL,KAAA,CAATpL,SAAS;MACzD,IAAMzK,IAAI,GAAG,qBAAqB;MAClC,IAAMmM,QAAQ,GAAG;QACflK,IAAI,EAAEjC,IAAI;QACVyU,OAAO,EAAExS,IAAI;QACbyT,OAAO,EAAPA,OAAO;QACPrU,KAAK,EAALA;MACF,CAAC;MACD,IAAMiS,cAAc,GAAG;QACrBrR,IAAI,EAAJA,IAAI;QACJ8T,WAAW,EAAXA,WAAW;QACXL,OAAO,EAAPA,OAAO;QACPrU,KAAK,EAALA,KAAK;QACL2U,eAAe,EAAEvE,UAAU,CAAChH,SAAS;MACvC,CAAC;MACD,IAAM2B,KAAK,GAAG,IAAI,CAAC6J,iBAAiB,CAACjW,IAAI,EAAEsT,cAAc,CAAC;MAC1D,IAAIlH,KAAK,EAAE;QACT,OAAO,IAAI,CAAC8J,oBAAoB,CAAC9J,KAAK,EAAEkH,cAAc,EAAE7I,SAAS,CAAC;MACpE;MAEA,CAAAqL,oBAAA,OAAI,CAACxD,aAAa,cAAAwD,oBAAA,eAAlBA,oBAAA,CAAoB1B,QAAQ,CAACpU,IAAI,EAAEsT,cAAc,EAAE7B,UAAU,CAAChH,SAAS,CAAC,CAAC;MAEzE,OAAO,IAAI,CAACkJ,OAAO,CACjB,KAAK,EACLxH,QAAQ,EACR,MAAM,EACN,IAAI,EACJ1B,SAAS,EACT6I,cACF,CAAC;IACH;EAAC;IAAA9O,GAAA;IAAAnD,KAAA,EAED,SAAA8U,YAAYA,CAAAC,KAAA,EAA4C;MAAA,IAAAC,oBAAA;MAAA,IAAzCpU,IAAI,GAAAmU,KAAA,CAAJnU,IAAI;QAAE8T,WAAW,GAAAK,KAAA,CAAXL,WAAW;QAAEL,OAAO,GAAAU,KAAA,CAAPV,OAAO;QAAEjL,SAAS,GAAA2L,KAAA,CAAT3L,SAAS;MAClD,IAAMzK,IAAI,GAAG,qBAAqB;MAClC,IAAMmM,QAAQ,GAAG;QACflK,IAAI,EAAEjC,IAAI;QACVyU,OAAO,EAAExS,IAAI;QACbyT,OAAO,EAAPA;MACF,CAAC;MACD,IAAMpC,cAAc,GAAG;QACrBrR,IAAI,EAAJA,IAAI;QACJ8T,WAAW,EAAXA,WAAW;QACXL,OAAO,EAAPA,OAAO;QACPM,eAAe,EAAEvE,UAAU,CAAChH,SAAS;MACvC,CAAC;MACD,IAAM2B,KAAK,GAAG,IAAI,CAAC6J,iBAAiB,CAACjW,IAAI,EAAEsT,cAAc,CAAC;MAC1D,IAAIlH,KAAK,EAAE;QACT,OAAO,IAAI,CAAC8J,oBAAoB,CAAC9J,KAAK,EAAEkH,cAAc,EAAE7I,SAAS,CAAC;MACpE;MAEA,CAAA4L,oBAAA,OAAI,CAAC/D,aAAa,cAAA+D,oBAAA,eAAlBA,oBAAA,CAAoBjC,QAAQ,CAACpU,IAAI,EAAEsT,cAAc,EAAE7B,UAAU,CAAChH,SAAS,CAAC,CAAC;MAEzE,OAAO,IAAI,CAACkJ,OAAO,CACjB,KAAK,EACLxH,QAAQ,EACR,MAAM,EACN,IAAI,EACJ1B,SAAS,EACT6I,cACF,CAAC;IACH;EAAC;IAAA9O,GAAA;IAAAnD,KAAA,EAED,SAAA4U,iBAAiBA,CAACjW,IAAI,EAAEuM,UAAU,EAAE;MAClC,IAAM+J,SAAS,GAAG,IAAI,CAACC,UAAU,CAAC,IAAI,CAACtE,KAAK,CAAC;MAE7C,IACEqE,SAAS,IACTA,SAAS,CAACvC,IAAI,CAAC9R,IAAI,KAAKjC,IAAI,IAC5BsW,SAAS,CAAChD,cAAc,CAACkD,MAAM,KAAKjK,UAAU,CAACiK,MAAM,EACrD;QACA,OAAOF,SAAS;MAClB;IACF;EAAC;IAAA9R,GAAA;IAAAnD,KAAA,EAED,SAAA6U,oBAAoBA,CAAC9J,KAAK,EAAEG,UAAU,EAAE9B,SAAS,EAAE;MACjD,IAAMgM,QAAQ,GAAGzT,IAAI,CAACoP,GAAG,CAAC3H,SAAS,GAAG2B,KAAK,CAAC0H,YAAY,EAAE,CAAC,CAAC;MAC5D1H,KAAK,CAAC2H,IAAI,CAAC1S,KAAK,GAAGkL,UAAU,CAAClL,KAAK;MACnC+K,KAAK,CAACkH,cAAc,CAACjS,KAAK,GAAGkL,UAAU,CAAClL,KAAK;MAC7C+K,KAAK,CAACkH,cAAc,CAACoD,MAAM,GAAGnK,UAAU,CAACmK,MAAM;MAC/CtK,KAAK,CAACkH,cAAc,CAACqD,KAAK,GAAGpK,UAAU,CAACoK,KAAK;MAC7CvK,KAAK,CAACkH,cAAc,CAACsD,aAAa,GAAGrK,UAAU,CAACqK,aAAa;MAC7DxK,KAAK,CAACkH,cAAc,CAAC,iBAAiB,CAAC,GAAG7B,UAAU,CAAChH,SAAS,CAAC;MAC/D2B,KAAK,CAACkH,cAAc,CAAC,kBAAkB,CAAC,GAAG7B,UAAU,CAACgF,QAAQ,CAAC;MAC/DrK,KAAK,CAACkH,cAAc,CAAClM,KAAK,GAAG,CAACgF,KAAK,CAACkH,cAAc,CAAClM,KAAK,IAAI,CAAC,IAAI,CAAC;MAClEgF,KAAK,CAACkH,cAAc,CAACuD,IAAI,GAAGzK,KAAK,CAACkH,cAAc,CAAClM,KAAK,IAAIqP,QAAQ,GAAG,IAAI,CAAC;IAC5E;EAAC;IAAAjS,GAAA;IAAAnD,KAAA,EAED,SAAAkV,UAAUA,CAACO,IAAI,EAAE;MACf,OAAOA,IAAI,CAAC1R,MAAM,GAAG,CAAC,GAAG0R,IAAI,CAACA,IAAI,CAAC1R,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI;IACvD;EAAC;IAAAZ,GAAA;IAAAnD,KAAA,EAED,SAAA0V,YAAYA,CAAAC,KAAA,EAA4C;MAAA,IAAAC,oBAAA;MAAA,IAAzChV,IAAI,GAAA+U,KAAA,CAAJ/U,IAAI;QAAE8T,WAAW,GAAAiB,KAAA,CAAXjB,WAAW;QAAEL,OAAO,GAAAsB,KAAA,CAAPtB,OAAO;QAAEjL,SAAS,GAAAuM,KAAA,CAATvM,SAAS;MAClD,IAAMzK,IAAI,GAAG,qBAAqB;MAClC,IAAMmM,QAAQ,GAAG;QACflK,IAAI,EAAEjC,IAAI;QACVyU,OAAO,EAAExS,IAAI;QACbyT,OAAO,EAAPA;MACF,CAAC;MACD,IAAMpC,cAAc,GAAG;QACrBrR,IAAI,EAAJA,IAAI;QACJ8T,WAAW,EAAXA,WAAW;QACXL,OAAO,EAAPA;MACF,CAAC;MAED,CAAAuB,oBAAA,OAAI,CAAC3E,aAAa,cAAA2E,oBAAA,eAAlBA,oBAAA,CAAoB7C,QAAQ,CAACpU,IAAI,EAAEsT,cAAc,EAAE7B,UAAU,CAAChH,SAAS,CAAC,CAAC;MAEzE,OAAO,IAAI,CAACkJ,OAAO,CACjB,KAAK,EACLxH,QAAQ,EACR,MAAM,EACN,IAAI,EACJ1B,SAAS,EACT6I,cACF,CAAC;IACH;EAAC;IAAA9O,GAAA;IAAAnD,KAAA,EAED,SAAA6V,aAAaA,CAAAC,KAAA,EAOV;MAAA,IAAAC,oBAAA;MAAA,IANDnV,IAAI,GAAAkV,KAAA,CAAJlV,IAAI;QACJ8T,WAAW,GAAAoB,KAAA,CAAXpB,WAAW;QACXY,KAAK,GAAAQ,KAAA,CAALR,KAAK;QACLD,MAAM,GAAAS,KAAA,CAANT,MAAM;QACNE,aAAa,GAAAO,KAAA,CAAbP,aAAa;QACbnM,SAAS,GAAA0M,KAAA,CAAT1M,SAAS;MAET,IAAMzK,IAAI,GAAG,sBAAsB;MACnC,IAAMmM,QAAQ,GAAG;QACflK,IAAI,EAAEjC,IAAI;QACVyU,OAAO,EAAExS,IAAI;QACb0U,KAAK,EAALA,KAAK;QACLD,MAAM,EAANA,MAAM;QACNE,aAAa,EAAbA;MACF,CAAC;MACD,IAAMtD,cAAc,GAAG;QACrBrR,IAAI,EAAJA,IAAI;QACJ8T,WAAW,EAAXA,WAAW;QACXY,KAAK,EAALA,KAAK;QACLD,MAAM,EAANA,MAAM;QACNE,aAAa,EAAbA;MACF,CAAC;MAED,IAAMxK,KAAK,GAAG,IAAI,CAAC6J,iBAAiB,CAACjW,IAAI,EAAEsT,cAAc,CAAC;MAC1D,IAAIlH,KAAK,EAAE;QACT,OAAO,IAAI,CAAC8J,oBAAoB,CAAC9J,KAAK,EAAEkH,cAAc,EAAE7I,SAAS,CAAC;MACpE;MAEA,CAAA2M,oBAAA,OAAI,CAAC9E,aAAa,cAAA8E,oBAAA,eAAlBA,oBAAA,CAAoBhD,QAAQ,CAACpU,IAAI,EAAEsT,cAAc,EAAE7B,UAAU,CAAChH,SAAS,CAAC,CAAC;MAEzE,OAAO,IAAI,CAACkJ,OAAO,CACjB,KAAK,EACLxH,QAAQ,EACR,MAAM,EACN,IAAI,EACJ1B,SAAS,EACT6I,cACF,CAAC;IACH;EAAC;IAAA9O,GAAA;IAAAnD,KAAA,EAED,SAAAgW,eAAeA,CAAAC,KAAA,EASZ;MAAA,IAAAC,oBAAA;MAAA,IARDtV,IAAI,GAAAqV,KAAA,CAAJrV,IAAI;QACJ8T,WAAW,GAAAuB,KAAA,CAAXvB,WAAW;QACXL,OAAO,GAAA4B,KAAA,CAAP5B,OAAO;QACP8B,UAAU,GAAAF,KAAA,CAAVE,UAAU;QACVC,aAAa,GAAAH,KAAA,CAAbG,aAAa;QACbC,KAAK,GAAAJ,KAAA,CAALI,KAAK;QACLC,UAAU,GAAAL,KAAA,CAAVK,UAAU;QACVlN,SAAS,GAAA6M,KAAA,CAAT7M,SAAS;MAET,IAAMzK,IAAI,GAAG,wBAAwB;MACrC,IAAImM,QAAQ,GAAG;QACblK,IAAI,EAAEjC,IAAI;QACVyU,OAAO,EAAExS,IAAI;QACb8T,WAAW,EAAXA;MACF,CAAC;MAED,IAAIzC,cAAc,GAAG;QACnBrR,IAAI,EAAJA,IAAI;QACJ8T,WAAW,EAAXA;MACF,CAAC;MAED,IAAI9T,IAAI,KAAK,WAAW,EAAE;QACxBkK,QAAQ,GAAAoI,aAAA,CAAAA,aAAA,KAAQpI,QAAQ;UAAEuJ,OAAO,EAAPA,OAAO;UAAE8B,UAAU,EAAVA,UAAU;UAAEC,aAAa,EAAbA;QAAa,EAAE;QAC9DnE,cAAc,GAAAiB,aAAA,CAAAA,aAAA,KACTjB,cAAc;UACjBoC,OAAO,EAAPA,OAAO;UACP8B,UAAU,EAAVA,UAAU;UACVC,aAAa,EAAbA;QAAa,EACd;MACH;MAEA,IAAIxV,IAAI,KAAK,MAAM,EAAE;QACnBkK,QAAQ,GAAAoI,aAAA,CAAAA,aAAA,KACHpI,QAAQ;UACXuJ,OAAO,EAAPA,OAAO;UACP8B,UAAU,EAAVA,UAAU;UACVC,aAAa,EAAbA,aAAa;UACbC,KAAK,EAALA,KAAK;UACLC,UAAU,EAAVA;QAAU,EACX;QACDrE,cAAc,GAAAiB,aAAA,CAAAA,aAAA,KACTjB,cAAc;UACjBoC,OAAO,EAAPA,OAAO;UACP8B,UAAU,EAAVA,UAAU;UACVC,aAAa,EAAbA,aAAa;UACbC,KAAK,EAALA,KAAK;UACLC,UAAU,EAAVA;QAAU,EACX;MACH;MAEA,CAAAJ,oBAAA,OAAI,CAACjF,aAAa,cAAAiF,oBAAA,eAAlBA,oBAAA,CAAoBnD,QAAQ,CAACpU,IAAI,EAAEsT,cAAc,EAAE7B,UAAU,CAAChH,SAAS,CAAC,CAAC;MAEzE,OAAO,IAAI,CAACkJ,OAAO,CACjB,KAAK,EACLxH,QAAQ,EACR,MAAM,EACN,IAAI,EACJ1B,SAAS,EACT6I,cACF,CAAC;IACH;EAAC;IAAA9O,GAAA;IAAAnD,KAAA,EAED,SAAAuW,iBAAiBA,CAACC,IAAI,EAAEC,EAAE,EAAElE,WAAW,EAAEnJ,SAAS,EAAE;MAAA,IAAAsN,oBAAA;MAClD,CAAAA,oBAAA,OAAI,CAACzF,aAAa,cAAAyF,oBAAA,eAAlBA,oBAAA,CAAoB3D,QAAQ,CAC1B,0BAA0B,EAC1B;QAAE,mBAAmB,EAAEyD,IAAI;QAAE,UAAU,EAAEC;MAAG,CAAC,EAC7CrG,UAAU,CAAChH,SAAS,CACtB,CAAC;MAED,OAAO,IAAI,CAACkJ,OAAO,CACjB,YAAY,EACZ;QAAEkE,IAAI,EAAJA,IAAI;QAAEC,EAAE,EAAFA;MAAG,CAAC,EACZ,MAAM,EACNlE,WAAW,EACXnJ,SACF,CAAC;IACH;EAAC;IAAAjG,GAAA;IAAAnD,KAAA,EAED,SAAA2W,uBAAuBA,CAACC,EAAE,EAAE;MAC1B,OAAO,IAAI,CAACtE,OAAO,CACjB,YAAY,EACZ;QAAEc,OAAO,EAAE;MAAmB,CAAC,EAC/B,MAAM,EACN3P,SAAS,EACTmT,EAAE,IAAIA,EAAE,CAACC,OAAO,CAAC,CACnB,CAAC;MACD;AACJ;AACA;AACA;IACE;EAAC;IAAA1T,GAAA;IAAAnD,KAAA,EAED,SAAA8W,WAAWA,CAACF,EAAE,EAAE;MACd,OAAO,IAAI,CAACtE,OAAO,CACjB,YAAY,EACZ;QAAEc,OAAO,EAAE;MAAO,CAAC,EACnB,MAAM,EACN3P,SAAS,EACTmT,EAAE,IAAIA,EAAE,CAACC,OAAO,CAAC,CACnB,CAAC;MACD;AACJ;AACA;AACA;IACE;EAAC;IAAA1T,GAAA;IAAAnD,KAAA,EAED,SAAA+W,yBAAyBA,CAAAC,KAAA,EAAmC;MAAA,IAAAC,oBAAA;MAAA,IAAhCrW,IAAI,GAAAoW,KAAA,CAAJpW,IAAI;QAAE8T,WAAW,GAAAsC,KAAA,CAAXtC,WAAW;QAAEtL,SAAS,GAAA4N,KAAA,CAAT5N,SAAS;MACtD,IAAMzK,IAAI,GAAG,4BAA4B;MACzC,IAAMmM,QAAQ,GAAG;QACflK,IAAI,EAAEjC,IAAI;QACVyU,OAAO,EAAExS;MACX,CAAC;MACD,IAAMqR,cAAc,GAAG;QACrBrR,IAAI,EAAJA,IAAI;QACJ8T,WAAW,EAAXA;MACF,CAAC;MAED,CAAAuC,oBAAA,OAAI,CAAChG,aAAa,cAAAgG,oBAAA,eAAlBA,oBAAA,CAAoBlE,QAAQ,CAACpU,IAAI,EAAEsT,cAAc,EAAE7B,UAAU,CAAChH,SAAS,CAAC,CAAC;MAEzE,OAAO,IAAI,CAACkJ,OAAO,CACjB,cAAc,EACdxH,QAAQ,EACR,MAAM,EACN,IAAI,EACJ1B,SAAS,EACT6I,cACF,CAAC;IACH;;IAEA;EAAA;IAAA9O,GAAA;IAAAnD,KAAA,EACA,SAAAkX,mBAAmBA,CAAC/N,IAAI,EAAE;MACxB,IAAI,CAAC,IAAI,CAAC9E,OAAO,CAAC8S,uBAAuB,EAAE;QACzC;MACF;MACA,IAAIhO,IAAI,CAACxB,GAAG,EAAE;QACZ,OAAO,IAAI,CAACkL,YAAY,CAAC1J,IAAI,CAACxB,GAAG,EAAEwB,IAAI,CAACM,KAAK,EAAEN,IAAI,CAAC3H,IAAI,EAAE2H,IAAI,CAACC,SAAS,CAAC;MAC3E;MACA,IAAID,IAAI,CAAC7C,OAAO,EAAE;QAChB,OAAO,IAAI,CAAC0M,UAAU,CACpB7J,IAAI,CAAC7C,OAAO,EACZ6C,IAAI,CAACM,KAAK,EACVN,IAAI,CAAC3H,IAAI,EACT2H,IAAI,CAACC,SACP,CAAC;MACH;MACA,IAAID,IAAI,CAACX,MAAM,EAAE;QACf,OAAO,IAAI,CAAC8J,OAAO,CACjB,KAAK,EACLnJ,IAAI,CAACX,MAAM,EACXW,IAAI,CAACM,KAAK,EACVN,IAAI,CAAC3H,IAAI,EACT2H,IAAI,CAACC,SACP,CAAC;MACH;IACF;EAAC;IAAAjG,GAAA;IAAAnD,KAAA,EAED,SAAA0E,IAAIA,CAAC5D,CAAC,EAAE;MACN,IAAI,CAAC8P,KAAK,CAAClM,IAAI,CAAC5D,CAAC,CAAC;MAClB,IAAI,IAAI,CAAC8P,KAAK,CAAC7M,MAAM,GAAG,IAAI,CAAC+M,YAAY,EAAE;QACzC,IAAI,CAACF,KAAK,CAACwG,KAAK,CAAC,CAAC;MACpB;IACF;EAAC;AAAA;AAGH,SAAS5E,QAAQA,CAAC5R,IAAI,EAAE6I,KAAK,EAAE;EAC7B,IAAIA,KAAK,EAAE;IACT,OAAOA,KAAK;EACd;EACA,IAAI4N,YAAY,GAAG;IACjBnV,KAAK,EAAE,OAAO;IACdoV,MAAM,EAAE;EACV,CAAC;EACD,OAAOD,YAAY,CAACzW,IAAI,CAAC,IAAI,MAAM;AACrC;AAEA,8CAAe4P,SAAS,E;;;;;;;;AC5iBjB,IAAM+G,OAAO;EAClB,SAAAA,QAAYC,aAAa,EAAE;IAAA7G,sBAAA,OAAA4G,OAAA;IACzB,IAAI,CAACE,eAAe,GAAGD,aAAa,GAAG,IAAIE,GAAG,CAACF,aAAa,CAAC,GAAG,IAAIE,GAAG,CAAC,CAAC;EAC3E;EAAC,OAAAvG,mBAAA,CAAAoG,OAAA;IAAApU,GAAA;IAAAnD,KAAA,EAED,SAAA2X,QAAQA,CAACxU,GAAG,EAAE;MACZ,OAAO,IAAI,CAACsU,eAAe,CAACnM,GAAG,CAACnI,GAAG,CAAC;IACtC;EAAC;IAAAA,GAAA;IAAAnD,KAAA,EAED,SAAA4X,QAAQA,CAACzU,GAAG,EAAEnD,KAAK,EAAE;MACnB,IAAMiH,OAAO,GAAG,IAAIsQ,OAAO,CAAC,IAAI,CAACE,eAAe,CAAC;MACjDxQ,OAAO,CAACwQ,eAAe,CAAC/L,GAAG,CAACvI,GAAG,EAAEnD,KAAK,CAAC;MACvC,OAAOiH,OAAO;IAChB;EAAC;IAAA9D,GAAA;IAAAnD,KAAA,EAED,SAAA6X,WAAWA,CAAC1U,GAAG,EAAE;MACf,IAAM8D,OAAO,GAAG,IAAIsQ,OAAO,CAACO,IAAI,CAACL,eAAe,CAAC;MACjDxQ,OAAO,CAACwQ,eAAe,CAACM,MAAM,CAAC5U,GAAG,CAAC;MACnC,OAAO8D,OAAO;IAChB;EAAC;AAAA;AAGI,IAAM+Q,YAAY,GAAG,IAAIT,OAAO,CAAC,CAAC,C;;;;;;;;ACtBG;AAErC,IAAMU,cAAc;EACzB,SAAAA,eAAA,EAAc;IAAAtH,6BAAA,OAAAsH,cAAA;IACZ,IAAI,CAACC,cAAc,GAAGF,YAAY;EACpC;EAAC,OAAA7G,0BAAA,CAAA8G,cAAA;IAAA9U,GAAA;IAAAnD,KAAA,EAED,SAAAmY,MAAMA,CAAA,EAAG;MACP,OAAO,IAAI,CAACD,cAAc;IAC5B;EAAC;IAAA/U,GAAA;IAAAnD,KAAA,EAED,SAAAoY,YAAYA,CAACnR,OAAO,EAAE;MACpB,IAAMoR,eAAe,GAAG,IAAI,CAACH,cAAc;MAC3C,IAAI,CAACA,cAAc,GAAGjR,OAAO,IAAI+Q,YAAY;MAC7C,OAAOK,eAAe;IACxB;EAAC;IAAAlV,GAAA;IAAAnD,KAAA,EAED,SAAAsY,WAAWA,CAACrR,OAAO,EAAE;MACnB,IAAI,CAACiR,cAAc,GAAGjR,OAAO;MAC7B,OAAO,IAAI,CAACiR,cAAc;IAC5B;EAAC;IAAA/U,GAAA;IAAAnD,KAAA,EAED,SAAAuY,KAAIA,CAACtR,OAAO,EAAEuR,EAAE,EAAEC,OAAO,EAAW;MAClC,IAAMJ,eAAe,GAAG,IAAI,CAACD,YAAY,CAACnR,OAAO,CAAC;MAClD,IAAI;QAAA,SAAAyR,IAAA,GAAA5K,SAAA,CAAA/J,MAAA,EAFwBqE,IAAI,OAAAuJ,KAAA,CAAA+G,IAAA,OAAAA,IAAA,WAAAC,IAAA,MAAAA,IAAA,GAAAD,IAAA,EAAAC,IAAA;UAAJvQ,IAAI,CAAAuQ,IAAA,QAAA7K,SAAA,CAAA6K,IAAA;QAAA;QAG9B,OAAOH,EAAE,CAACzZ,IAAI,CAAA6Z,KAAA,CAAPJ,EAAE,GAAMC,OAAO,EAAA/L,MAAA,CAAKtE,IAAI,EAAC;MAClC,CAAC,SAAS;QACR,IAAI,CAACkQ,WAAW,CAACD,eAAe,CAAC;MACnC;IACF;EAAC;AAAA;AAGI,SAASQ,gBAAgBA,CAAC1V,GAAG,EAAE;EACpC;EACA,OAAO2V,MAAM,CAACC,GAAG,CAAC5V,GAAG,CAAC;AACxB,C;;ACnCA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASiN,iBAAUA,CAACC,MAAM,EAAE;EAC1B,OAAO,CAAC1O,IAAI,CAAC2O,KAAK,CAACD,MAAM,GAAG,IAAI,CAAC,EAAE1O,IAAI,CAAC4O,KAAK,CAAEF,MAAM,GAAG,IAAI,GAAI,GAAG,CAAC,CAAC;AACvE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS2I,QAAQA,CAACC,MAAM,EAAE;EACxB,OAAOA,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGtX,IAAI,CAAC4O,KAAK,CAAC0I,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACtD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,OAAOA,CAACD,MAAM,EAAE;EACvB,OAAOA,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGA,MAAM,CAAC,CAAC,CAAC;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASE,GAAGA,CAAC9N,CAAC,EAAE+N,CAAC,EAAE;EACjB,OAAO,CAAC/N,CAAC,CAAC,CAAC,CAAC,GAAG+N,CAAC,CAAC,CAAC,CAAC,GAAGzX,IAAI,CAAC2O,KAAK,CAAC,CAACjF,CAAC,CAAC,CAAC,CAAC,GAAG+N,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC/N,CAAC,CAAC,CAAC,CAAC,GAAG+N,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC7E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS7X,UAAGA,CAAA,EAAyB;EAAA,IAAxB8X,cAAc,GAAAvL,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,KAAK;EACjC,IAAIuL,cAAc,EAAE;IAClB,OAAOF,GAAG,CACR/I,iBAAU,CAACkJ,WAAW,CAACC,UAAU,CAAC,EAClCnJ,iBAAU,CAACkJ,WAAW,CAAC/X,GAAG,CAAC,CAAC,CAC9B,CAAC;EACH;EACA,OAAO6O,iBAAU,CAACpE,IAAI,CAACzK,GAAG,CAAC,CAAC,CAAC;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASiY,QAAQA,CAACxZ,KAAK,EAAE;EACvB,OACE2R,KAAK,CAACzD,OAAO,CAAClO,KAAK,CAAC,IACpBA,KAAK,CAAC+D,MAAM,KAAK,CAAC,IAClB,OAAO/D,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAC5B,OAAOA,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;AAEhC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAAe;EAAEoQ,UAAU,EAAVA,iBAAU;EAAE4I,QAAQ,EAARA,QAAQ;EAAEE,OAAO,EAAPA,OAAO;EAAEC,GAAG,EAAHA,GAAG;EAAE5X,GAAG,EAAHA,UAAG;EAAEiY,QAAQ,EAARA;AAAS,CAAC,E;;;;;;;;;;;;;;;;;;;ACvGnC;;AAEjC;AACA;AACA;AACA;AACO,IAAMC,YAAY;EACvB,SAAAA,aAAYC,GAAG,EAAgB;IAAA,IAAdrV,OAAO,GAAAyJ,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,CAAC,CAAC;IAAA6C,uBAAA,OAAA8I,YAAA;IAC3B,IAAI,CAACC,GAAG,GAAGA,GAAG;IACd,IAAI,CAACrV,OAAO,GAAGA,OAAO;EACxB;;EAEA;AACF;AACA;AACA;AACA;AACA;EALE,OAAA8M,oBAAA,CAAAsI,YAAA;IAAAtW,GAAA;IAAAnD,KAAA,EAMA,SAAA2Z,OAAMA,CAACC,KAAK,EAAEC,eAAe,EAAE;MAC7BC,eAAe,CAACpV,IAAI,CAAAkU,KAAA,CAApBkB,eAAe,EAAAC,kBAAA,CAASH,KAAK,EAAC;IAChC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAzW,GAAA;IAAAnD,KAAA,EAOA,SAAAga,SAASA,CAAA,EAAG;MAAA,IAAAC,KAAA;MACV,IAAML,KAAK,GAAGE,eAAe,CAAC5R,KAAK,CAAC,CAAC;MACrC4R,eAAe,CAAC/V,MAAM,GAAG,CAAC;MAE1B,IAAI,CAAC6V,KAAK,IAAI,CAACA,KAAK,CAAC7V,MAAM,EAAE;QAC3B,OAAO;UAAEmW,aAAa,EAAE;QAAG,CAAC;MAC9B;MAEA,IAAMC,QAAQ,GAAIP,KAAK,CAAC,CAAC,CAAC,IAAIA,KAAK,CAAC,CAAC,CAAC,CAACO,QAAQ,IAAK,CAAC,CAAC;MAEtD,IAAMC,QAAQ,GAAG,IAAI1C,GAAG,CAAC,CAAC;MAAC,IAAA5N,SAAA,GAAAC,kCAAA,CAER6P,KAAK;QAAA5P,KAAA;MAAA;QAAxB,KAAAF,SAAA,CAAA3D,CAAA,MAAA6D,KAAA,GAAAF,SAAA,CAAAvJ,CAAA,IAAA0J,IAAA,GAA0B;UAAA,IAAfoQ,IAAI,GAAArQ,KAAA,CAAAhK,KAAA;UACb,IAAMsa,QAAQ,GAAGD,IAAI,CAACE,oBAAoB,MAAA7N,MAAA,CACnC2N,IAAI,CAACE,oBAAoB,CAAC5b,IAAI,OAAA+N,MAAA,CAAI2N,IAAI,CAACE,oBAAoB,CAACC,OAAO,IACtE,eAAe;UAEnB,IAAI,CAACJ,QAAQ,CAACK,GAAG,CAACH,QAAQ,CAAC,EAAE;YAC3BF,QAAQ,CAAC1O,GAAG,CAAC4O,QAAQ,EAAE;cACrBI,KAAK,EAAEL,IAAI,CAACE,oBAAoB,IAAI;gBAClC5b,IAAI,EAAE,SAAS;gBACf6b,OAAO,EAAE,OAAO;gBAChBtP,UAAU,EAAE;cACd,CAAC;cACD0O,KAAK,EAAE;YACT,CAAC,CAAC;UACJ;UAEAQ,QAAQ,CAAC9O,GAAG,CAACgP,QAAQ,CAAC,CAACV,KAAK,CAAClV,IAAI,CAAC,IAAI,CAACiW,cAAc,CAACN,IAAI,CAAC,CAAC;QAC9D;MAAC,SAAA1S,GAAA;QAAAmC,SAAA,CAAAhJ,CAAA,CAAA6G,GAAA;MAAA;QAAAmC,SAAA,CAAA3K,CAAA;MAAA;MAED,OAAO;QACL+a,aAAa,EAAE,CACb;UACEC,QAAQ,EAAE,IAAI,CAACS,kBAAkB,CAACT,QAAQ,CAAC;UAC3CU,UAAU,EAAElJ,KAAK,CAAC6E,IAAI,CAAC4D,QAAQ,CAACU,MAAM,CAAC,CAAC,CAAC,CAAChJ,GAAG,CAAC,UAACiJ,SAAS;YAAA,OAAM;cAC5DL,KAAK,EAAET,KAAI,CAACe,8BAA8B,CAACD,SAAS,CAACL,KAAK,CAAC;cAC3Dd,KAAK,EAAEmB,SAAS,CAACnB;YACnB,CAAC;UAAA,CAAC;QACJ,CAAC;MAEL,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAzW,GAAA;IAAAnD,KAAA,EAOA,SAAAib,IAAIA,CAACnO,OAAO,EAAgB;MAAA,IAAdkH,OAAO,GAAAlG,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,CAAC,CAAC;MACxB,OAAO,IAAI,CAAC4L,GAAG,CAACwB,SAAS,CAACpO,OAAO,EAAEkH,OAAO,CAAC;IAC7C;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA7Q,GAAA;IAAAnD,KAAA,EAOA,SAAA2a,cAAcA,CAACN,IAAI,EAAE;MAAA,IAAAc,MAAA;MACnB,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAIlQ,UAAU,EAAK;QAC1C,OAAOzL,MAAM,CAAC8P,OAAO,CAACrE,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC4G,GAAG,CAAC,UAAAC,IAAA;UAAA,IAAAyC,KAAA,GAAA9E,sBAAA,CAAAqC,IAAA;YAAE5O,GAAG,GAAAqR,KAAA;YAAExU,KAAK,GAAAwU,KAAA;UAAA,OAAO;YAC7DrR,GAAG,EAAHA,GAAG;YACHnD,KAAK,EAAEmb,MAAI,CAACE,kBAAkB,CAACrb,KAAK;UACtC,CAAC;QAAA,CAAC,CAAC;MACL,CAAC;MAED,IAAMsb,eAAe,GAAG,SAAlBA,eAAeA,CAAI5J,MAAM,EAAK;QAClC,OAAO,CAACA,MAAM,IAAI,EAAE,EAAEI,GAAG,CAAC,UAAC/G,KAAK;UAAA,OAAM;YACpCwQ,YAAY,EAAEtC,MAAM,CAACC,OAAO,CAACnO,KAAK,CAACyQ,IAAI,CAAC;YACxC7c,IAAI,EAAEoM,KAAK,CAACpM,IAAI;YAChBuM,UAAU,EAAEkQ,mBAAmB,CAACrQ,KAAK,CAACG,UAAU;UAClD,CAAC;QAAA,CAAC,CAAC;MACL,CAAC;MAED,OAAO;QACLuQ,OAAO,EAAEpB,IAAI,CAACqB,WAAW,CAACD,OAAO;QACjCE,MAAM,EAAEtB,IAAI,CAACqB,WAAW,CAACC,MAAM;QAC/BC,YAAY,EAAEvB,IAAI,CAACuB,YAAY,IAAI,EAAE;QACrCjd,IAAI,EAAE0b,IAAI,CAAC1b,IAAI;QACfkd,IAAI,EAAExB,IAAI,CAACwB,IAAI,IAAI,CAAC;QAAE;QACtBC,iBAAiB,EAAE7C,MAAM,CAACC,OAAO,CAACmB,IAAI,CAAC0B,SAAS,CAAC;QACjDpH,eAAe,EAAEsE,MAAM,CAACC,OAAO,CAACmB,IAAI,CAAC2B,OAAO,CAAC;QAC7C9Q,UAAU,EAAEkQ,mBAAmB,CAACf,IAAI,CAACnP,UAAU,CAAC;QAChDwG,MAAM,EAAE4J,eAAe,CAACjB,IAAI,CAAC3I,MAAM;MACrC,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAvO,GAAA;IAAAnD,KAAA,EAOA,SAAA4a,kBAAkBA,CAACT,QAAQ,EAAE;MAAA,IAAA8B,MAAA;MAC3B,IAAM/Q,UAAU,GAAGiP,QAAQ,CAACjP,UAAU,IAAI,CAAC,CAAC;MAC5C,IAAMgR,SAAS,GAAGzc,MAAM,CAAC8P,OAAO,CAACrE,UAAU,CAAC,CAAC4G,GAAG,CAAC,UAAAiD,KAAA;QAAA,IAAAY,KAAA,GAAAjG,sBAAA,CAAAqF,KAAA;UAAE5R,GAAG,GAAAwS,KAAA;UAAE3V,KAAK,GAAA2V,KAAA;QAAA,OAAO;UAClExS,GAAG,EAAHA,GAAG;UACHnD,KAAK,EAAEic,MAAI,CAACZ,kBAAkB,CAACrb,KAAK;QACtC,CAAC;MAAA,CAAC,CAAC;MAEH,OAAO;QACLkL,UAAU,EAAEgR;MACd,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA/Y,GAAA;IAAAnD,KAAA,EAOA,SAAAgb,8BAA8BA,CAACN,KAAK,EAAE;MAAA,IAAAyB,MAAA;MACpC,OAAO;QACLxd,IAAI,EAAE+b,KAAK,CAAC/b,IAAI,IAAI,EAAE;QACtB6b,OAAO,EAAEE,KAAK,CAACF,OAAO,IAAI,EAAE;QAC5BtP,UAAU,EAAE,CAACwP,KAAK,CAACxP,UAAU,IAAI,EAAE,EAAE4G,GAAG,CAAC,UAACsK,IAAI;UAAA,OAAM;YAClDjZ,GAAG,EAAEiZ,IAAI,CAACjZ,GAAG;YACbnD,KAAK,EAAEmc,MAAI,CAACd,kBAAkB,CAACe,IAAI,CAACpc,KAAK;UAC3C,CAAC;QAAA,CAAC;MACJ,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAmD,GAAA;IAAAnD,KAAA,EAOA,SAAAqb,kBAAkBA,CAACrb,KAAK,EAAE;MAAA,IAAAqc,MAAA;MACxB,IAAIrc,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAKyD,SAAS,EAAE;QACzC,OAAO;UAAE6Y,WAAW,EAAE;QAAG,CAAC;MAC5B;MAEA,IAAM1b,IAAI,GAAAhC,eAAA,CAAUoB,KAAK;MAEzB,IAAIY,IAAI,KAAK,QAAQ,EAAE;QACrB,OAAO;UAAE0b,WAAW,EAAEtc;QAAM,CAAC;MAC/B,CAAC,MAAM,IAAIY,IAAI,KAAK,QAAQ,EAAE;QAC5B,IAAIJ,MAAM,CAAC+b,SAAS,CAACvc,KAAK,CAAC,EAAE;UAC3B,OAAO;YAAEwc,QAAQ,EAAExc,KAAK,CAAClB,QAAQ,CAAC;UAAE,CAAC;QACvC,CAAC,MAAM;UACL,OAAO;YAAE2d,WAAW,EAAEzc;UAAM,CAAC;QAC/B;MACF,CAAC,MAAM,IAAIY,IAAI,KAAK,SAAS,EAAE;QAC7B,OAAO;UAAE8b,SAAS,EAAE1c;QAAM,CAAC;MAC7B,CAAC,MAAM,IAAI2R,KAAK,CAACzD,OAAO,CAAClO,KAAK,CAAC,EAAE;QAC/B,OAAO;UACL2c,UAAU,EAAE;YACV7B,MAAM,EAAE9a,KAAK,CAAC8R,GAAG,CAAC,UAAC9D,CAAC;cAAA,OAAKqO,MAAI,CAAChB,kBAAkB,CAACrN,CAAC,CAAC;YAAA;UACrD;QACF,CAAC;MACH,CAAC,MAAM,IAAIpN,IAAI,KAAK,QAAQ,EAAE;QAC5B,OAAO;UACLgc,WAAW,EAAE;YACX9B,MAAM,EAAErb,MAAM,CAAC8P,OAAO,CAACvP,KAAK,CAAC,CAAC8R,GAAG,CAAC,UAAAgE,KAAA;cAAA,IAAAG,KAAA,GAAAvG,sBAAA,CAAAoG,KAAA;gBAAErR,CAAC,GAAAwR,KAAA;gBAAEjI,CAAC,GAAAiI,KAAA;cAAA,OAAO;gBAC7C9S,GAAG,EAAEsB,CAAC;gBACNzE,KAAK,EAAEqc,MAAI,CAAChB,kBAAkB,CAACrN,CAAC;cAClC,CAAC;YAAA,CAAC;UACJ;QACF,CAAC;MACH;MAEA,OAAO;QAAEsO,WAAW,EAAEjc,MAAM,CAACL,KAAK;MAAE,CAAC;IACvC;EAAC;AAAA;AAGI,IAAM8Z,eAAe,GAAG,EAAE,C;;AC1MjC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS+C,GAAGA,CAAA,EAAa;EAAA,IAAZC,KAAK,GAAAhP,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,EAAE;EACrB,IAAIiP,WAAW,GAAG,IAAIC,UAAU,CAACF,KAAK,CAAC;EACvCG,MAAM,CAACC,eAAe,CAACH,WAAW,CAAC;EACnC,IAAII,OAAO,GAAGxL,KAAK,CAAC6E,IAAI,CAACuG,WAAW,EAAE,UAACK,IAAI;IAAA,OACzCA,IAAI,CAACte,QAAQ,CAAC,EAAE,CAAC,CAACue,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAAA,CACpC,CAAC,CAAC1Y,IAAI,CAAC,EAAE,CAAC;EACV,OAAOwY,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAe;EAAEN,GAAG,EAAHA;AAAI,CAAC,E;;;;;;;;;;;ACvBG;AAEzB,IAAMU,WAAW,GAAG,gBAAgB;AAE7B,IAAMC,OAAO;EAGlB,SAAAA,QAAY/M,OAAO,EAAEpM,OAAO,EAAE;IAAAsM,sBAAA,OAAA6M,OAAA;IAAAC,sBAAA;IAC5B,IAAI,CAACpZ,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACoM,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACtP,MAAM,GAAGsP,OAAO,CAACtP,MAAM;IAC5B,IAAI,CAACuc,OAAO,GAAG,IAAI;IACnB,IAAI,CAACC,WAAW,GAAG,CAAC,CAAC;EACvB;EAAC,OAAAxM,mBAAA,CAAAqM,OAAA;IAAAra,GAAA;IAAAnD,KAAA,EAED,SAAA4d,IAAIA,CAAA,EAAa;MAAA,IAAZC,KAAK,GAAA/P,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,CAAC,CAAC;MACb,IAAI,IAAI,CAAC4P,OAAO,EAAE;QAChB,OAAO,IAAI;MACb;MACA,IAAI,CAACI,UAAU,CAAC,CAAC,IAAI,IAAI,CAACC,aAAa,CAAC,CAAC;MAEzC,IAAI,CAACC,qBAAqB,CAACH,KAAK,CAAC;MAEjC,OAAO,IAAI;IACb;EAAC;IAAA1a,GAAA;IAAAnD,KAAA,EAED,SAAA8d,UAAUA,CAAA,EAAG;MACX,IAAI;QACF,IAAMG,iBAAiB,GAAG,IAAI,CAAC9c,MAAM,CAAC+c,cAAc,CAACC,OAAO,CAACZ,WAAW,CAAC;QAEzE,IAAI,CAACU,iBAAiB,EAAE;UACtB,OAAO,IAAI;QACb;QAEA,IAAI,CAACP,OAAO,GAAGhY,IAAI,CAACU,KAAK,CAAC6X,iBAAiB,CAAC;MAC9C,CAAC,CAAC,OAAAG,OAAA,EAAM;QACN,OAAO,IAAI;MACb;MACA,OAAO,IAAI;IACb;EAAC;IAAAjb,GAAA;IAAAnD,KAAA,EAED,SAAA+d,aAAaA,CAAA,EAAG;MACd,IAAI,CAACL,OAAO,GAAG;QACbJ,EAAE,EAAEA,EAAE,CAACT,GAAG,CAAC,CAAC;QACZwB,SAAS,EAAErS,IAAI,CAACzK,GAAG,CAAC;MACtB,CAAC;MAED,OAAO,IAAI,CAAC+c,UAAU,CAAC,IAAI,CAACZ,OAAO,CAAC;IACtC;EAAC;IAAAva,GAAA;IAAAnD,KAAA,EAED,SAAAse,UAAUA,CAACZ,OAAO,EAAE;MAClB,IAAMa,aAAa,GAAG7Y,IAAI,CAACF,SAAS,CAACkY,OAAO,CAAC;MAE7C,IAAI;QACF,IAAI,CAACvc,MAAM,CAAC+c,cAAc,CAACM,OAAO,CAACjB,WAAW,EAAEgB,aAAa,CAAC;MAChE,CAAC,CAAC,OAAAE,QAAA,EAAM;QACN,OAAO,IAAI;MACb;MACA,OAAO,IAAI;IACb;EAAC;IAAAtb,GAAA;IAAAmI,GAAA,EAED,SAAAA,IAAA,EAAiB;MACf,OAAO,IAAI,CAACqS,WAAW;IACzB;EAAC;IAAAxa,GAAA;IAAAnD,KAAA,EAED,SAAA0e,aAAaA,CAACxT,UAAU,EAAE;MACxB,IAAI,CAACyS,WAAW,GAAAzK,oBAAA,CAAAA,oBAAA,KAAQ,IAAI,CAACyK,WAAW,GAAKzS,UAAU,CAAE;MACzD,OAAO,IAAI;IACb;EAAC;IAAA/H,GAAA;IAAAnD,KAAA,EAED,SAAA2e,OAAOA,CAACC,IAAI,EAAE;MACZ,IAAI,CAACF,aAAa,CAAC;QACjB,SAAS,EAAEE,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEtB,EAAE;QACnB,YAAY,EAAEsB,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEC,KAAK;QACzB,WAAW,EAAE,CAAAD,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEjgB,IAAI,MAAIigB,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEE,QAAQ;MAC3C,CAAC,CAAC;MACF,OAAO,IAAI;IACb;EAAC;IAAA3b,GAAA;IAAAnD,KAAA,EAED,SAAAge,qBAAqBA,CAACH,KAAK,EAAE;MAAA,IAAAkB,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA;MAC3B,IAAI,CAACP,aAAa,CAAAxL,oBAAA;QAChB,YAAY,EAAE,IAAI,CAACwK,OAAO,CAACJ,EAAE;QAC7B,gBAAgB,GAAAyB,qBAAA,GAAEzX,SAAS,CAAC4X,aAAa,cAAAH,qBAAA,uBAAvBA,qBAAA,CAAyBI,MAAM;QACjD,kBAAkB,EAAE7X,SAAS,CAAC8X,QAAQ;QACtC,gBAAgB,GAAAJ,sBAAA,GAAE1X,SAAS,CAAC4X,aAAa,cAAAF,sBAAA,uBAAvBA,sBAAA,CAAyBK,MAAM;QACjD,kBAAkB,GAAAJ,sBAAA,GAAE3X,SAAS,CAAC4X,aAAa,cAAAD,sBAAA,uBAAvBA,sBAAA,CAAyBK,QAAQ;QACrD,gBAAgB,EAAE,YAAY;QAAE;QAChC,4BAA4B,EAAE,YAAY;QAC1C,qBAAqB,EAAEhY,SAAS,CAACC;MAAS,GACvCsW,KAAK,CACT,CAAC;MACF,OAAO,IAAI;IACb;EAAC;AAAA,I;;AC5FH,IAAIzQ,IAAG,GAAG,SAANA,GAAGA,CAAA,EAAS,CAAC,CAAC;AAElB,IAAMmS,MAAM,GAAG;EACbxd,KAAK,EAAE,CAAC;EACRC,IAAI,EAAE,CAAC;EACPwd,IAAI,EAAE,CAAC;EACPtd,KAAK,EAAE,CAAC;EACRud,OAAO,EAAE;AACX,CAAC;AAED,IAAM/X,MAAM,GAAG;EACbxF,KAAK,EAAE,SAAPA,KAAKA,CAAA;IAAA,SAAAwW,IAAA,GAAA5K,SAAA,CAAA/J,MAAA,EAAMqE,IAAI,OAAAuJ,KAAA,CAAA+G,IAAA,GAAAC,IAAA,MAAAA,IAAA,GAAAD,IAAA,EAAAC,IAAA;MAAJvQ,IAAI,CAAAuQ,IAAA,IAAA7K,SAAA,CAAA6K,IAAA;IAAA;IAAA,OAAKvL,IAAG,CAAC,OAAO,EAAEhF,IAAI,CAAC;EAAA;EACtCoX,IAAI,EAAE,SAANA,IAAIA,CAAA;IAAA,SAAAE,KAAA,GAAA5R,SAAA,CAAA/J,MAAA,EAAMqE,IAAI,OAAAuJ,KAAA,CAAA+N,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJvX,IAAI,CAAAuX,KAAA,IAAA7R,SAAA,CAAA6R,KAAA;IAAA;IAAA,OAAKvS,IAAG,CAAC,MAAM,EAAEhF,IAAI,CAAC;EAAA;EACpCpG,IAAI,EAAE,SAANA,IAAIA,CAAA;IAAA,SAAA4d,KAAA,GAAA9R,SAAA,CAAA/J,MAAA,EAAMqE,IAAI,OAAAuJ,KAAA,CAAAiO,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJzX,IAAI,CAAAyX,KAAA,IAAA/R,SAAA,CAAA+R,KAAA;IAAA;IAAA,OAAKzS,IAAG,CAAC,MAAM,EAAEhF,IAAI,CAAC;EAAA;EACpCrG,KAAK,EAAE,SAAPA,KAAKA,CAAA;IAAA,SAAA+d,KAAA,GAAAhS,SAAA,CAAA/J,MAAA,EAAMqE,IAAI,OAAAuJ,KAAA,CAAAmO,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJ3X,IAAI,CAAA2X,KAAA,IAAAjS,SAAA,CAAAiS,KAAA;IAAA;IAAA,OAAK3S,IAAG,CAAC,OAAO,EAAEhF,IAAI,CAAC;EAAA;EACtCgF,GAAG,EAAE,SAALA,GAAGA,CAAA;IAAA,SAAA4S,KAAA,GAAAlS,SAAA,CAAA/J,MAAA,EAAMqE,IAAI,OAAAuJ,KAAA,CAAAqO,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJ7X,IAAI,CAAA6X,KAAA,IAAAnS,SAAA,CAAAmS,KAAA;IAAA;IAAA,OAAK7S,IAAG,CAAC,MAAM,EAAEhF,IAAI,CAAC;EAAA;EACnCwV,IAAI,EAAE,SAANA,IAAIA,CAAA7L,IAAA,EAAoB;IAAA,IAAfmO,QAAQ,GAAAnO,IAAA,CAARmO,QAAQ;IACf9S,IAAG,GAAG,SAANA,IAAGA,CAAa3D,KAAK,EAAErB,IAAI,EAAE;MAC3B,IAAImX,MAAM,CAAC9V,KAAK,CAAC,GAAG8V,MAAM,CAACW,QAAQ,CAAC,EAAE;MAEtC9X,IAAI,CAAC+X,OAAO,CAAC,UAAU,CAAC;;MAExB;MACAC,OAAO,CAAC3W,KAAK,CAAC,CAACmP,KAAK,CAACwH,OAAO,EAAEhY,IAAI,CAAC;IACrC,CAAC;EACH;AACF,CAAC;AAED,+CAAeV,MAAM,E;;;;;;;;;;;AC5Ba;AAE3B,IAAM2Y,aAAa;EACxB,SAAAA,cAAYC,QAAQ,EAAgB;IAAA,IAAdjc,OAAO,GAAAyJ,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,CAAC,CAAC;IAAA6C,4BAAA,OAAA0P,aAAA;IAChC,IAAI,CAACC,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACjc,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACkc,YAAY,GAAG,IAAI7I,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC8I,UAAU,GAAG,CAAC,IAAI,CAACC,aAAa,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC;EACnD;EAAC,OAAAvP,yBAAA,CAAAkP,aAAA;IAAAld,GAAA;IAAAnD,KAAA,EAED,SAAA2gB,YAAYA,CAACC,WAAW,EAAE;MACxB,IAAI,CAACJ,UAAU,CAACL,OAAO,CAACS,WAAW,CAAC;IACtC;EAAC;IAAAzd,GAAA;IAAAnD,KAAA,EAED,SAAAygB,aAAaA,CAACpG,IAAI,EAAE;MAClB,IAAI,IAAI,CAAChW,OAAO,CAACwc,aAAa,EAAE;QAC9B,IAAI,CAACxc,OAAO,CAACwc,aAAa,CAAC;UAAExG,IAAI,EAAEA;QAAK,CAAC,CAAC;MAC5C;IACF;EAAC;IAAAlX,GAAA;IAAAnD,KAAA,EAED,SAAA8gB,eAAeA,CAACzG,IAAI,EAAE;MAAA,IAAAvQ,SAAA,GAAAC,uCAAA,CACI,IAAI,CAACyW,UAAU;QAAAxW,KAAA;MAAA;QAAvC,KAAAF,SAAA,CAAA3D,CAAA,MAAA6D,KAAA,GAAAF,SAAA,CAAAvJ,CAAA,IAAA0J,IAAA,GAAyC;UAAA,IAA9B8W,SAAS,GAAA/W,KAAA,CAAAhK,KAAA;UAClB,IAAI;YACF+gB,SAAS,CAAC1G,IAAI,CAAC;UACjB,CAAC,CAAC,OAAOvZ,CAAC,EAAE;YACV4G,UAAM,CAACxF,KAAK,CAAC,uCAAuC,EAAEpB,CAAC,CAAC;UAC1D;QACF;MAAC,SAAA6G,GAAA;QAAAmC,SAAA,CAAAhJ,CAAA,CAAA6G,GAAA;MAAA;QAAAmC,SAAA,CAAA3K,CAAA;MAAA;IACH;EAAC;IAAAgE,GAAA;IAAAnD,KAAA,EAED,SAAAghB,OAAOA,CAAC3G,IAAI,EAAE4G,cAAc,EAAE;MAC5B,IAAI,CAACV,YAAY,CAAC7U,GAAG,CAAC2O,IAAI,CAACA,IAAI,CAACqB,WAAW,CAACC,MAAM,EAAEtB,IAAI,CAAC;IAC3D;EAAC;IAAAlX,GAAA;IAAAnD,KAAA,EAED,SAAAkhB,KAAKA,CAAC7G,IAAI,EAAE;MACV,IAAI,CAACyG,eAAe,CAACzG,IAAI,CAACA,IAAI,CAAC;MAC/B,IAAI,CAACiG,QAAQ,CAAC3G,MAAM,CAAC,CAACU,IAAI,CAACV,MAAM,CAAC,CAAC,CAAC,CAAC;MACrC,IAAI,CAAC4G,YAAY,CAACxI,MAAM,CAACsC,IAAI,CAACA,IAAI,CAACqB,WAAW,CAACC,MAAM,CAAC;IACxD;EAAC;AAAA,I;;;;;;;;;;;;;;ACtC8B;AAE1B,IAAMwF,IAAI;EACf,SAAAA,KAAY9c,OAAO,EAAE;IAAAsM,mBAAA,OAAAwQ,IAAA;IACnB,IAAI,CAAC9H,cAAc,GAAGhV,OAAO,CAACgV,cAAc;IAC5C,IAAI,CAAC+H,gBAAgB,CAAC/c,OAAO,CAAC;IAE9B,IAAI,CAACgd,aAAa,GAAGhd,OAAO,CAACgd,aAAa;IAC1C,IAAI,CAACA,aAAa,CAACL,OAAO,CAAC,IAAI,EAAE3c,OAAO,CAAC4C,OAAO,CAAC;IAEjD,IAAI5C,OAAO,CAAC6G,UAAU,EAAE;MACtB,IAAI,CAACwT,aAAa,CAACra,OAAO,CAAC6G,UAAU,CAAC;IACxC;IACA,OAAO,IAAI;EACb;EAAC,OAAAiG,gBAAA,CAAAgQ,IAAA;IAAAhe,GAAA;IAAAnD,KAAA,EAED,SAAAohB,gBAAgBA,CAAC/c,OAAO,EAAE;MAAA,IAAAid,gBAAA;MACxB,IAAI,CAACjH,IAAI,GAAG;QACV1b,IAAI,EAAE0F,OAAO,CAAC1F,IAAI;QAClBkd,IAAI,EAAExX,OAAO,CAACwX,IAAI;QAClBH,WAAW,EAAErX,OAAO,CAACqX,WAAW;QAChCE,YAAY,EAAEvX,OAAO,CAACuX,YAAY;QAClCG,SAAS,EAAE1X,OAAO,CAAC0X,SAAS,IAAI9C,MAAM,CAAC1X,GAAG,CAAC8C,OAAO,CAACgV,cAAc,CAAC;QAClE2C,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACfuF,MAAM,EAAE;UAAEvb,IAAI,EAAE,CAAC;UAAEM,OAAO,EAAE;QAAG,CAAC;QAChC4E,UAAU,EAAE;UAAE,YAAY,GAAAoW,gBAAA,GAAEjd,OAAO,CAACqZ,OAAO,cAAA4D,gBAAA,uBAAfA,gBAAA,CAAiBhE;QAAG,CAAC;QACjDkE,KAAK,EAAE,EAAE;QACT9P,MAAM,EAAE,EAAE;QACV0D,QAAQ,EAAE,CAAC;QACXqM,KAAK,EAAE,KAAK;QACZtH,QAAQ,EAAE9V,OAAO,CAAC8V,QAAQ;QAC1BI,oBAAoB,EAAElW,OAAO,CAACqW,KAAK;QACnCgH,sBAAsB,EAAE,CAAC;QACzBC,kBAAkB,EAAE,CAAC;QACrBC,iBAAiB,EAAE;MACrB,CAAC;IACH;EAAC;IAAAze,GAAA;IAAAnD,KAAA,EAED,SAAA0b,WAAWA,CAAA,EAAG;MACZ,OAAO,IAAI,CAACrB,IAAI,CAACqB,WAAW;IAC9B;EAAC;IAAAvY,GAAA;IAAAmI,GAAA,EAED,SAAAA,IAAA,EAAa;MACX,OAAO,IAAI,CAAC+O,IAAI,CAACqB,WAAW,CAACC,MAAM;IACrC;EAAC;IAAAxY,GAAA;IAAAmI,GAAA,EAED,SAAAA,IAAA,EAAc;MACZ,OAAO,IAAI,CAAC+O,IAAI,CAACqB,WAAW,CAACD,OAAO;IACtC;EAAC;IAAAtY,GAAA;IAAAnD,KAAA,EAED,SAAA6hB,YAAYA,CAAC1e,GAAG,EAAEnD,KAAK,EAAE;MACvB,IAAIA,KAAK,IAAI,IAAI,IAAI,IAAI,CAACqa,IAAI,CAACoH,KAAK,EAAE,OAAO,IAAI;MACjD,IAAIte,GAAG,CAACY,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;MAEjC,IAAI,CAACsW,IAAI,CAACnP,UAAU,CAAC/H,GAAG,CAAC,GAAGnD,KAAK;MACjC,OAAO,IAAI;IACb;EAAC;IAAAmD,GAAA;IAAAnD,KAAA,EAED,SAAA0e,aAAaA,CAACxT,UAAU,EAAE;MACxB,SAAA4W,EAAA,MAAAC,eAAA,GAAqBtiB,MAAM,CAAC8P,OAAO,CAACrE,UAAU,CAAC,EAAA4W,EAAA,GAAAC,eAAA,CAAAhe,MAAA,EAAA+d,EAAA,IAAE;QAA5C,IAAAE,kBAAA,GAAAtS,kBAAA,CAAAqS,eAAA,CAAAD,EAAA;UAAOrd,CAAC,GAAAud,kBAAA;UAAEhU,CAAC,GAAAgU,kBAAA;QACd,IAAI,CAACH,YAAY,CAACpd,CAAC,EAAEuJ,CAAC,CAAC;MACzB;MACA,OAAO,IAAI;IACb;EAAC;IAAA7K,GAAA;IAAAnD,KAAA,EAED,SAAA+S,QAAQA,CAACpU,IAAI,EAAyB;MAAA,IAAvBuM,UAAU,GAAA4C,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,CAAC,CAAC;MAAA,IAAE0N,IAAI,GAAA1N,SAAA,CAAA/J,MAAA,OAAA+J,SAAA,MAAArK,SAAA;MAClC,IAAI,IAAI,CAAC4W,IAAI,CAACoH,KAAK,EAAE,OAAO,IAAI;MAEhC,IAAI,CAACpH,IAAI,CAAC3I,MAAM,CAAChN,IAAI,CAAC;QACpB/F,IAAI,EAAJA,IAAI;QACJuM,UAAU,EAAVA,UAAU;QACVsQ,IAAI,EAAEA,IAAI,IAAIvC,MAAM,CAAC1X,GAAG,CAAC,CAAC;QAC1BmgB,sBAAsB,EAAE;MAC1B,CAAC,CAAC;MAEF,OAAO,IAAI;IACb;EAAC;IAAAve,GAAA;IAAAnD,KAAA,EAED,SAAAiiB,WAAWA,CAAA,EAAG;MACZ,OAAO,IAAI,CAAC5H,IAAI,CAACoH,KAAK,KAAK,KAAK;IAClC;EAAC;IAAAte,GAAA;IAAAnD,KAAA,EAED,SAAAqS,GAAGA,CAACnH,UAAU,EAAEsQ,IAAI,EAAE;MACpB,IAAItQ,UAAU,EAAE,IAAI,CAACwT,aAAa,CAACxT,UAAU,CAAC;MAC9C,IAAI,CAACmP,IAAI,CAAC2B,OAAO,GAAGR,IAAI,IAAIvC,MAAM,CAAC1X,GAAG,CAAC,IAAI,CAAC8X,cAAc,CAAC;MAC3D,IAAI,CAACgB,IAAI,CAACoH,KAAK,GAAG,IAAI;MACtB,IAAI,CAACJ,aAAa,CAACH,KAAK,CAAC,IAAI,CAAC;IAChC;EAAC;IAAA/d,GAAA;IAAAnD,KAAA,EAED,SAAA2Z,OAAMA,CAAA,EAAG;MACP,OAAO,IAAI,CAACU,IAAI;IAClB;EAAC;AAAA,I;;;;;;;;;;;AC3FsB;AACQ;AAE1B,IAAM6H,MAAM;EACjB,SAAAA,OAAYzR,OAAO,EAAE4Q,aAAa,EAAE;IAAA1Q,qBAAA,OAAAuR,MAAA;IAClC,IAAI,CAACb,aAAa,GAAGA,aAAa;IAClC,IAAI,CAAC5Q,OAAO,GAAGA,OAAO;EACxB;EAAC,OAAAU,kBAAA,CAAA+Q,MAAA;IAAA/e,GAAA;IAAAnD,KAAA,EAED,SAAAkR,SAASA,CACPvS,IAAI,EAGJ;MAAA,IAAAwjB,qBAAA,EAAAC,iBAAA,EAAAC,qBAAA;MAAA,IAFAhe,OAAO,GAAAyJ,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,CAAC,CAAC;MAAA,IACZ7G,OAAO,GAAA6G,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,IAAI,CAAC2C,OAAO,CAAC6R,cAAc,CAACnK,MAAM,CAAC,CAAC;MAE9C,IAAMoK,UAAU,GAAG,IAAI,CAAC9R,OAAO,CAAC+R,OAAO,CAACvb,OAAO,CAAC;MAChD,IAAMwb,iBAAiB,GAAGF,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAE7G,WAAW,CAAC,CAAC;MACnD,IAAMC,MAAM,GAAG2B,EAAE,CAACT,GAAG,CAAC,CAAC,CAAC;MACxB,IAAIpB,OAAO;MACX,IAAIiH,UAAU,GAAG,CAAC;MAClB,IAAIC,UAAU,GAAG,IAAI;MACrB,IAAI/G,YAAY;MAChB,IAAI6G,iBAAiB,EAAE;QACrBhH,OAAO,GAAGgH,iBAAiB,CAAChH,OAAO;QACnCkH,UAAU,GAAGF,iBAAiB,CAACE,UAAU;QACzC/G,YAAY,GAAG6G,iBAAiB,CAAC9G,MAAM;MACzC,CAAC,MAAM;QACLF,OAAO,GAAG6B,EAAE,CAACT,GAAG,CAAC,EAAE,CAAC;MACtB;MAEA,IAAMhB,IAAI,GAAG,CAAC;MACd,IAAMH,WAAW,GAAG;QAAED,OAAO,EAAPA,OAAO;QAAEE,MAAM,EAANA,MAAM;QAAE+G,UAAU,EAAVA,UAAU;QAAEC,UAAU,EAAVA;MAAW,CAAC;MAC/D,IAAMxI,QAAQ,GAAG;QACfjP,UAAU,EAAAgI,mBAAA,CAAAA,mBAAA,KACJ,EAAAiP,qBAAA,OAAI,CAAC1R,OAAO,CAAC0J,QAAQ,cAAAgI,qBAAA,uBAArBA,qBAAA,CAAuBjX,UAAU,KAAI,CAAC,CAAC,GACvC,EAAAkX,iBAAA,GAAA/d,OAAO,CAAC8V,QAAQ,cAAAiI,iBAAA,uBAAhBA,iBAAA,CAAkBlX,UAAU,KAAI,CAAC,CAAC;MAE1C,CAAC;MAED,IAAMmP,IAAI,GAAG,IAAI8G,IAAI,CAAC;QACpBhH,QAAQ,EAAEA,QAAQ;QAClBO,KAAK,EAAE,IAAI,CAACjK,OAAO,CAACiK,KAAK;QACzBgD,OAAO,GAAA2E,qBAAA,GAAE,IAAI,CAAC5R,OAAO,CAACiN,OAAO,cAAA2E,qBAAA,uBAApBA,qBAAA,CAAsB3E,OAAO;QACtCzW,OAAO,EAAPA,OAAO;QACPyU,WAAW,EAAXA,WAAW;QACX/c,IAAI,EAAJA,IAAI;QACJkd,IAAI,EAAJA,IAAI;QACJD,YAAY,EAAZA,YAAY;QACZyF,aAAa,EAAE,IAAI,CAACA,aAAa;QACjCtF,SAAS,EAAE1X,OAAO,CAAC0X,SAAS;QAC5B1C,cAAc,EAAEhV,OAAO,CAACgV;MAC1B,CAAC,CAAC;MACF,OAAOgB,IAAI;IACb;EAAC;AAAA,I;;;;;;;;;;;ACpDoE;AAC1B;AACpB;AACc;AACY;AACd;AAErC,IAAMuI,QAAQ,GAAG/J,gBAAgB,CAAC,0BAA0B,CAAC;AAAC,IAEzCgK,OAAO;EAC1B,SAAAA,QAAYC,OAAO,EAAEpJ,GAAG,EAAErV,OAAO,EAAE;IAAAsM,sBAAA,OAAAkS,OAAA;IACjC,IAAI,CAACnJ,GAAG,GAAGA,GAAG;IACd,IAAI,CAACrV,OAAO,GAAGA,OAAO;IACtB,IAAI,CAAClD,MAAM,GAAG2hB,OAAO;IAErB,IAAI,IAAI,CAAC3hB,MAAM,CAAC+c,cAAc,EAAE;MAC9B,IAAI,CAACR,OAAO,GAAG,IAAIF,OAAO,CAAC,IAAI,EAAEnZ,OAAO,CAAC;IAC3C;IACA,IAAI,CAAC0e,YAAY,CAAC,CAAC;EACrB;EAAC,OAAA5R,mBAAA,CAAA0R,OAAA;IAAA1f,GAAA;IAAAnD,KAAA,EAED,SAAAoR,SAASA,CAAC/M,OAAO,EAAE;MACjB;MACA,IAAI,CAACA,OAAO,GAAGA,OAAO;IACxB;EAAC;IAAAlB,GAAA;IAAAnD,KAAA,EAED,SAAAgjB,WAAWA,CAAA,EAAG;MACZ,IAAI,IAAI,CAACtF,OAAO,EAAE;QAChB,IAAI,CAACA,OAAO,CAACE,IAAI,CAAC,CAAC;MACrB;IACF;EAAC;IAAAza,GAAA;IAAAmI,GAAA,EAED,SAAAA,IAAA,EAAgB;MACd,IAAI,IAAI,CAACoS,OAAO,EAAE;QAChB,OAAO,IAAI,CAACA,OAAO,CAACA,OAAO,CAACJ,EAAE;MAChC;MACA,OAAO,IAAI;IACb;EAAC;IAAAna,GAAA;IAAAmI,GAAA,EAED,SAAAA,IAAA,EAAe;MAAA,IAAA2X,qBAAA,EAAAC,sBAAA;MACb,OAAO;QACLhY,UAAU,EAAAgI,oBAAA,CAAAA,oBAAA,KACJ,IAAI,CAAC7O,OAAO,CAAC8V,QAAQ,IAAI,CAAC,CAAC;UAC/B,qBAAqB,GAAA8I,qBAAA,IAAAC,sBAAA,GACnB,IAAI,CAAC7e,OAAO,CAACyI,OAAO,cAAAoW,sBAAA,uBAApBA,sBAAA,CAAsBC,WAAW,cAAAF,qBAAA,cAAAA,qBAAA,GAAI,IAAI,CAAC5e,OAAO,CAAC8e;QAAW;MAEnE,CAAC;IACH;EAAC;IAAAhgB,GAAA;IAAAmI,GAAA,EAED,SAAAA,IAAA,EAAY;MACV,OAAO;QACL3M,IAAI,EAAE,oBAAoB;QAC1B6b,OAAO,EAAE,IAAI,CAACnW,OAAO,CAACmW;MACxB,CAAC;IACH;EAAC;IAAArX,GAAA;IAAAnD,KAAA,EAED,SAAAojB,KAAKA,CAAA,EAAa;MAAA,IAAZtG,KAAK,GAAAhP,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,EAAE;MACd,OAAOwP,EAAE,CAACT,GAAG,CAACC,KAAK,CAAC;IACtB;EAAC;IAAA3Z,GAAA;IAAAnD,KAAA,EAED,SAAA+iB,YAAYA,CAAA,EAAG;MACb,IAAI,CAACT,cAAc,GAAG,IAAIrK,cAAc,CAAC,CAAC;MAC1C,IAAI,CAACqI,QAAQ,GAAG,IAAI7G,YAAY,CAAC,IAAI,CAACC,GAAG,EAAE,IAAI,CAACrV,OAAO,CAAC;MACxD,IAAI,CAACgd,aAAa,GAAG,IAAIhB,aAAa,CAAC,IAAI,CAACC,QAAQ,EAAE,IAAI,CAACjc,OAAO,CAACoM,OAAO,CAAC;MAC3E,IAAI,CAAC4S,MAAM,GAAG,IAAInB,MAAM,CAAC,IAAI,EAAE,IAAI,CAACb,aAAa,CAAC;IACpD;EAAC;IAAAle,GAAA;IAAAnD,KAAA,EAED,SAAAsjB,SAASA,CAAA,EAAG;MACV,OAAO,IAAI,CAACD,MAAM;IACpB;EAAC;IAAAlgB,GAAA;IAAAnD,KAAA,EAED,SAAAujB,gBAAgBA,CAAC3C,WAAW,EAAE;MAC5B,IAAI,CAACS,aAAa,CAACV,YAAY,CAACC,WAAW,CAAC;IAC9C;EAAC;IAAAzd,GAAA;IAAAnD,KAAA,EAED,SAAAwiB,OAAOA,CAAA,EAAyC;MAAA,IAAxCvb,OAAO,GAAA6G,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,IAAI,CAACwU,cAAc,CAACnK,MAAM,CAAC,CAAC;MAC5C,OAAOlR,OAAO,CAAC0Q,QAAQ,CAACiL,QAAQ,CAAC;IACnC;EAAC;IAAAzf,GAAA;IAAAnD,KAAA,EAED,SAAAwjB,OAAOA,CAAA,EAA+C;MAAA,IAA9Cvc,OAAO,GAAA6G,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,IAAI,CAACwU,cAAc,CAACnK,MAAM,CAAC,CAAC;MAAA,IAAEkC,IAAI,GAAAvM,SAAA,CAAA/J,MAAA,OAAA+J,SAAA,MAAArK,SAAA;MAClD,OAAOwD,OAAO,CAAC2Q,QAAQ,CAACgL,QAAQ,EAAEvI,IAAI,CAAC;IACzC;EAAC;IAAAlX,GAAA;IAAAnD,KAAA,EAED,SAAAkR,SAASA,CAACvS,IAAI,EAAwD;MAAA,IAAtD0F,OAAO,GAAAyJ,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,CAAC,CAAC;MAAA,IAAE7G,OAAO,GAAA6G,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,IAAI,CAACwU,cAAc,CAACnK,MAAM,CAAC,CAAC;MAClE,OAAO,IAAI,CAACkL,MAAM,CAACnS,SAAS,CAACvS,IAAI,EAAE0F,OAAO,EAAE4C,OAAO,CAAC;IACtD;EAAC;IAAA9D,GAAA;IAAAnD,KAAA,EAED,SAAAuY,KAAIA,CAACtR,OAAO,EAAEuR,EAAE,EAAEC,OAAO,EAAW;MAAA,IAAAgL,oBAAA;MAAA,SAAA/K,IAAA,GAAA5K,SAAA,CAAA/J,MAAA,EAANqE,IAAI,OAAAuJ,KAAA,CAAA+G,IAAA,OAAAA,IAAA,WAAAC,IAAA,MAAAA,IAAA,GAAAD,IAAA,EAAAC,IAAA;QAAJvQ,IAAI,CAAAuQ,IAAA,QAAA7K,SAAA,CAAA6K,IAAA;MAAA;MAChC,OAAO,CAAA8K,oBAAA,OAAI,CAACnB,cAAc,EAAC/J,IAAI,CAAAK,KAAA,CAAA6K,oBAAA,GAACxc,OAAO,EAAEuR,EAAE,EAAEC,OAAO,EAAA/L,MAAA,CAAKtE,IAAI,EAAC;IAChE;EAAC;IAAAjF,GAAA;IAAAnD,KAAA,EAED,SAAA0jB,QAAQA,CAAC/kB,IAAI,EAAE0F,OAAO,EAAEmU,EAAE,EAAEC,OAAO,EAAE;MACnC,IAAM4B,IAAI,GAAG,IAAI,CAACnJ,SAAS,CAACvS,IAAI,EAAE0F,OAAO,CAAC;MAC1C,OAAO,IAAI,CAACkU,IAAI,CACd,IAAI,CAACiL,OAAO,CAAC,IAAI,CAAClB,cAAc,CAACnK,MAAM,CAAC,CAAC,EAAEkC,IAAI,CAAC,EAChD7B,EAAE,EACFC,OAAO,EACP4B,IACF,CAAC;IACH;EAAC;AAAA;;;;;;;;;;ACnG0C;AACX;AAElC,SAASuJ,GAAGA,CAAC9W,OAAO,EAAE+W,UAAU,EAAE;EAChC,OAAO,CAAC/W,OAAO,EAAEpK,SAAW,CAACoK,OAAO,EAAE+W,UAAU,CAAC,CAAC;AACpD;AAEA,SAASC,YAAYA,CAACC,MAAM,EAAEC,KAAK,EAAE;EACnC,IAAI9a,GAAG,GAAG6a,MAAM,CAAChgB,MAAM;EACvB,IAAImF,GAAG,GAAG8a,KAAK,GAAG,CAAC,EAAE;IACnB,OAAOD,MAAM,CAAC7b,KAAK,CAAC,CAAC,EAAE8b,KAAK,CAAC,CAACtX,MAAM,CAACqX,MAAM,CAAC7b,KAAK,CAACgB,GAAG,GAAG8a,KAAK,CAAC,CAAC;EACjE;EACA,OAAOD,MAAM;AACf;AAEA,SAASE,cAAcA,CAACnX,OAAO,EAAE+W,UAAU,EAAEG,KAAK,EAAE;EAClDA,KAAK,GAAG,OAAOA,KAAK,KAAK,WAAW,GAAG,EAAE,GAAGA,KAAK;EACjD,IAAItR,IAAI,GAAG5F,OAAO,CAACzD,IAAI,CAACqJ,IAAI;EAC5B,IAAIqR,MAAM;EACV,IAAIrR,IAAI,CAACwR,WAAW,EAAE;IACpB,IAAIC,KAAK,GAAGzR,IAAI,CAACwR,WAAW;IAAC,IAAApa,SAAA,GAAAC,oCAAA,CACToa,KAAK;MAAAna,KAAA;IAAA;MAAzB,KAAAF,SAAA,CAAA3D,CAAA,MAAA6D,KAAA,GAAAF,SAAA,CAAAvJ,CAAA,IAAA0J,IAAA,GAA2B;QAAA,IAAhBma,KAAK,GAAApa,KAAA,CAAAhK,KAAA;QACd+jB,MAAM,GAAGK,KAAK,CAACL,MAAM;QACrBA,MAAM,GAAGD,YAAY,CAACC,MAAM,EAAEC,KAAK,CAAC;QACpCI,KAAK,CAACL,MAAM,GAAGA,MAAM;MACvB;IAAC,SAAApc,GAAA;MAAAmC,SAAA,CAAAhJ,CAAA,CAAA6G,GAAA;IAAA;MAAAmC,SAAA,CAAA3K,CAAA;IAAA;EACH,CAAC,MAAM,IAAIuT,IAAI,CAAC0R,KAAK,EAAE;IACrBL,MAAM,GAAGrR,IAAI,CAAC0R,KAAK,CAACL,MAAM;IAC1BA,MAAM,GAAGD,YAAY,CAACC,MAAM,EAAEC,KAAK,CAAC;IACpCtR,IAAI,CAAC0R,KAAK,CAACL,MAAM,GAAGA,MAAM;EAC5B;EACA,OAAO,CAACjX,OAAO,EAAEpK,SAAW,CAACoK,OAAO,EAAE+W,UAAU,CAAC,CAAC;AACpD;AAEA,SAASQ,kBAAkBA,CAACnb,GAAG,EAAEuB,GAAG,EAAE;EACpC,IAAI,CAACA,GAAG,EAAE;IACR,OAAOA,GAAG;EACZ;EACA,IAAIA,GAAG,CAAC1G,MAAM,GAAGmF,GAAG,EAAE;IACpB,OAAOuB,GAAG,CAACvC,KAAK,CAAC,CAAC,EAAEgB,GAAG,GAAG,CAAC,CAAC,CAACwD,MAAM,CAAC,KAAK,CAAC;EAC5C;EACA,OAAOjC,GAAG;AACZ;AAEA,SAAS6Z,eAAeA,CAACpb,GAAG,EAAE4D,OAAO,EAAE+W,UAAU,EAAE;EACjD,SAASU,SAASA,CAAC9f,CAAC,EAAEuJ,CAAC,EAAElG,IAAI,EAAE;IAC7B,QAAQpF,QAAU,CAACsL,CAAC,CAAC;MACnB,KAAK,QAAQ;QACX,OAAOqW,kBAAkB,CAACnb,GAAG,EAAE8E,CAAC,CAAC;MACnC,KAAK,QAAQ;MACb,KAAK,OAAO;QACV,OAAOD,gBAAQ,CAACC,CAAC,EAAEuW,SAAS,EAAEzc,IAAI,CAAC;MACrC;QACE,OAAOkG,CAAC;IACZ;EACF;EACAlB,OAAO,GAAGiB,gBAAQ,CAACjB,OAAO,EAAEyX,SAAS,CAAC;EACtC,OAAO,CAACzX,OAAO,EAAEpK,SAAW,CAACoK,OAAO,EAAE+W,UAAU,CAAC,CAAC;AACpD;AAEA,SAASW,iBAAiBA,CAACC,SAAS,EAAE;EACpC,IAAIA,SAAS,CAACC,SAAS,EAAE;IACvB,OAAOD,SAAS,CAACC,SAAS,CAACC,WAAW;IACtCF,SAAS,CAACC,SAAS,CAACpe,OAAO,GAAG+d,kBAAkB,CAC9C,GAAG,EACHI,SAAS,CAACC,SAAS,CAACpe,OACtB,CAAC;EACH;EACAme,SAAS,CAACV,MAAM,GAAGD,YAAY,CAACW,SAAS,CAACV,MAAM,EAAE,CAAC,CAAC;EACpD,OAAOU,SAAS;AAClB;AAEA,SAASG,OAAOA,CAAC9X,OAAO,EAAE+W,UAAU,EAAE;EACpC,IAAInR,IAAI,GAAG5F,OAAO,CAACzD,IAAI,CAACqJ,IAAI;EAC5B,IAAIA,IAAI,CAACwR,WAAW,EAAE;IACpB,IAAIC,KAAK,GAAGzR,IAAI,CAACwR,WAAW;IAAC,IAAAxZ,UAAA,GAAAX,oCAAA,CACAoa,KAAK,CAAC5U,OAAO,CAAC,CAAC;MAAA5E,MAAA;IAAA;MAA5C,KAAAD,UAAA,CAAAvE,CAAA,MAAAwE,MAAA,GAAAD,UAAA,CAAAnK,CAAA,IAAA0J,IAAA,GAA8C;QAAA,IAAA4a,YAAA,GAAAnV,wBAAA,CAAA/E,MAAA,CAAA3K,KAAA;UAAlC2P,KAAK,GAAAkV,YAAA;UAAET,KAAK,GAAAS,YAAA;QACtBV,KAAK,CAACxU,KAAK,CAAC,GAAG6U,iBAAiB,CAACJ,KAAK,CAAC;MACzC;IAAC,SAAAzc,GAAA;MAAA+C,UAAA,CAAA5J,CAAA,CAAA6G,GAAA;IAAA;MAAA+C,UAAA,CAAAvL,CAAA;IAAA;EACH,CAAC,MAAM,IAAIuT,IAAI,CAAC0R,KAAK,EAAE;IACrB1R,IAAI,CAAC0R,KAAK,GAAGI,iBAAiB,CAAC9R,IAAI,CAAC0R,KAAK,CAAC;EAC5C;EACA,OAAO,CAACtX,OAAO,EAAEpK,SAAW,CAACoK,OAAO,EAAE+W,UAAU,CAAC,CAAC;AACpD;AAEA,SAASiB,eAAeA,CAAChY,OAAO,EAAEiY,OAAO,EAAE;EACzC,OAAOriB,WAAa,CAACoK,OAAO,CAAC,GAAGiY,OAAO;AACzC;AAEA,SAASC,QAAQA,CAAClY,OAAO,EAAE+W,UAAU,EAAEkB,OAAO,EAAE;EAC9CA,OAAO,GAAG,OAAOA,OAAO,KAAK,WAAW,GAAG,GAAG,GAAG,IAAI,GAAGA,OAAO;EAC/D,IAAIE,UAAU,GAAG,CACfrB,GAAG,EACHK,cAAc,EACdK,eAAe,CAAC5D,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAChC4D,eAAe,CAAC5D,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAC/B4D,eAAe,CAAC5D,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAC/BkE,OAAO,CACR;EACD,IAAIM,QAAQ,EAAEC,OAAO,EAAE5f,MAAM;EAE7B,OAAQ2f,QAAQ,GAAGD,UAAU,CAAC7N,KAAK,CAAC,CAAC,EAAG;IACtC+N,OAAO,GAAGD,QAAQ,CAACpY,OAAO,EAAE+W,UAAU,CAAC;IACvC/W,OAAO,GAAGqY,OAAO,CAAC,CAAC,CAAC;IACpB5f,MAAM,GAAG4f,OAAO,CAAC,CAAC,CAAC;IACnB,IAAI5f,MAAM,CAACrD,KAAK,IAAI,CAAC4iB,eAAe,CAACvf,MAAM,CAACvF,KAAK,EAAE+kB,OAAO,CAAC,EAAE;MAC3D,OAAOxf,MAAM;IACf;EACF;EACA,OAAOA,MAAM;AACf;AAEA,+CAAe;EACbyf,QAAQ,EAARA,QAAQ;EAER;EACApB,GAAG,EAAHA,GAAG;EACHK,cAAc,EAAdA,cAAc;EACdK,eAAe,EAAfA,eAAe;EACfD,kBAAkB,EAAlBA;AACF,CAAC,E;;ACxHiC;AAElC,SAASe,YAAYA,CAAC/b,IAAI,EAAE;EAC1B,IAAI,CAAC3G,MAAQ,CAAC2G,IAAI,CAACpC,OAAO,EAAE,QAAQ,CAAC,EAAE;IACrC,IAAIoe,aAAa,GAAG3iB,SAAW,CAAC2G,IAAI,CAACpC,OAAO,CAAC;IAC7C,IAAIoe,aAAa,CAACnjB,KAAK,EAAE;MACvBmH,IAAI,CAACpC,OAAO,GAAG,sCAAsC;IACvD,CAAC,MAAM;MACLoC,IAAI,CAACpC,OAAO,GAAGoe,aAAa,CAACrlB,KAAK,IAAI,EAAE;IAC1C;IACA,IAAIqJ,IAAI,CAACpC,OAAO,CAAClD,MAAM,GAAG,GAAG,EAAE;MAC7BsF,IAAI,CAACpC,OAAO,GAAGoC,IAAI,CAACpC,OAAO,CAAC8E,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC;IAC5C;EACF;EACA,OAAO;IACL1C,IAAI,EAAEA;EACR,CAAC;AACH;AAEA,SAASic,uBAAuBA,CAACjhB,OAAO,EAAEkhB,QAAQ,EAAEljB,GAAG,EAAE;EACvD,IAAIiD,QAAQ,GAAGigB,QAAQ,CAACjgB,QAAQ;EAChC,IAAIF,QAAQ,GAAGmgB,QAAQ,CAACngB,QAAQ;EAChC,IAAIC,IAAI,GAAGkgB,QAAQ,CAAClgB,IAAI;EACxB,IAAIR,IAAI,GAAG0gB,QAAQ,CAAC1gB,IAAI;EACxB,IAAIpC,MAAM,GAAG8iB,QAAQ,CAAC9iB,MAAM;EAC5B,IAAI+iB,OAAO,GAAGnhB,OAAO,CAACmhB,OAAO;EAC7B,IAAIC,SAAS,GAAGC,eAAe,CAACrhB,OAAO,CAAC;EAExC,IAAIshB,KAAK,GAAGthB,OAAO,CAACshB,KAAK;EACzB,IAAIthB,OAAO,CAACuhB,QAAQ,EAAE;IACpB,IAAIC,IAAI,GAAGxjB,GAAG,CAAC+D,KAAK,CAAC/B,OAAO,CAACuhB,QAAQ,CAAC;IACtCtgB,QAAQ,GAAGugB,IAAI,CAACvgB,QAAQ;IACxBF,QAAQ,GAAGygB,IAAI,CAACzgB,QAAQ;IACxBC,IAAI,GAAGwgB,IAAI,CAACxgB,IAAI;IAChBR,IAAI,GAAGghB,IAAI,CAACC,QAAQ;IACpBrjB,MAAM,GAAGojB,IAAI,CAACpjB,MAAM;EACtB;EACA,OAAO;IACL+iB,OAAO,EAAEA,OAAO;IAChBlgB,QAAQ,EAAEA,QAAQ;IAClBF,QAAQ,EAAEA,QAAQ;IAClBC,IAAI,EAAEA,IAAI;IACVR,IAAI,EAAEA,IAAI;IACVpC,MAAM,EAAEA,MAAM;IACdkjB,KAAK,EAAEA,KAAK;IACZF,SAAS,EAAEA;EACb,CAAC;AACH;AAEA,SAASC,eAAeA,CAACrhB,OAAO,EAAE;EAChC,IAAIye,OAAO,GACR,OAAO3hB,MAAM,KAAK,WAAW,IAAIA,MAAM,IACvC,OAAO2W,IAAI,KAAK,WAAW,IAAIA,IAAK;EACvC,IAAI2N,SAAS,GAAGphB,OAAO,CAAC0hB,gBAAgB,IAAI,KAAK;EACjD,IAAI,OAAOjD,OAAO,CAACkD,KAAK,KAAK,WAAW,EAAEP,SAAS,GAAG,KAAK;EAC3D,IAAI,OAAO3C,OAAO,CAACmD,cAAc,KAAK,WAAW,EAAER,SAAS,GAAG,OAAO;EACtE,OAAOA,SAAS;AAClB;AAEA,SAASS,2BAAgBA,CAACT,SAAS,EAAE7R,MAAM,EAAE;EAC3C,IAAIxO,QAAQ,GAAGqgB,SAAS,CAACrgB,QAAQ,IAAI,QAAQ;EAC7C,IAAIC,IAAI,GACNogB,SAAS,CAACpgB,IAAI,KACbD,QAAQ,KAAK,OAAO,GAAG,EAAE,GAAGA,QAAQ,KAAK,QAAQ,GAAG,GAAG,GAAG3B,SAAS,CAAC;EACvE,IAAI6B,QAAQ,GAAGmgB,SAAS,CAACngB,QAAQ;EACjC,IAAIT,IAAI,GAAG4gB,SAAS,CAAC5gB,IAAI;EACzB,IAAI2gB,OAAO,GAAGC,SAAS,CAACD,OAAO;EAC/B,IAAIW,YAAY,GAAGV,SAAS,CAACA,SAAS;EACtC,IAAIA,SAAS,CAAChjB,MAAM,EAAE;IACpBoC,IAAI,GAAGA,IAAI,GAAG4gB,SAAS,CAAChjB,MAAM;EAChC;EACA,IAAIgjB,SAAS,CAACE,KAAK,EAAE;IACnB9gB,IAAI,GAAGO,QAAQ,GAAG,IAAI,GAAGE,QAAQ,GAAGT,IAAI;IACxCS,QAAQ,GAAGmgB,SAAS,CAACE,KAAK,CAACS,IAAI,IAAIX,SAAS,CAACE,KAAK,CAACrgB,QAAQ;IAC3DD,IAAI,GAAGogB,SAAS,CAACE,KAAK,CAACtgB,IAAI;IAC3BD,QAAQ,GAAGqgB,SAAS,CAACE,KAAK,CAACvgB,QAAQ,IAAIA,QAAQ;EACjD;EACA,OAAO;IACLogB,OAAO,EAAEA,OAAO;IAChBpgB,QAAQ,EAAEA,QAAQ;IAClBE,QAAQ,EAAEA,QAAQ;IAClBT,IAAI,EAAEA,IAAI;IACVQ,IAAI,EAAEA,IAAI;IACVuO,MAAM,EAAEA,MAAM;IACd6R,SAAS,EAAEU;EACb,CAAC;AACH;AAEA,SAASE,gBAAgBA,CAACC,IAAI,EAAEzhB,IAAI,EAAE;EACpC,IAAI0hB,iBAAiB,GAAG,KAAK,CAACxmB,IAAI,CAACumB,IAAI,CAAC;EACxC,IAAIE,kBAAkB,GAAG,KAAK,CAACzmB,IAAI,CAAC8E,IAAI,CAAC;EAEzC,IAAI0hB,iBAAiB,IAAIC,kBAAkB,EAAE;IAC3C3hB,IAAI,GAAGA,IAAI,CAACI,SAAS,CAAC,CAAC,CAAC;EAC1B,CAAC,MAAM,IAAI,CAACshB,iBAAiB,IAAI,CAACC,kBAAkB,EAAE;IACpD3hB,IAAI,GAAG,GAAG,GAAGA,IAAI;EACnB;EAEA,OAAOyhB,IAAI,GAAGzhB,IAAI;AACpB;;;;;;;0BClGA,uKAAA/D,CAAA,EAAArC,CAAA,EAAAiD,CAAA,wBAAAoX,MAAA,GAAAA,MAAA,OAAAvY,CAAA,GAAAmB,CAAA,CAAA+kB,QAAA,kBAAA/iB,CAAA,GAAAhC,CAAA,CAAAglB,WAAA,8BAAA/lB,EAAAe,CAAA,EAAAnB,CAAA,EAAAmD,CAAA,EAAA/C,CAAA,QAAAc,CAAA,GAAAlB,CAAA,IAAAA,CAAA,CAAAf,SAAA,YAAAmnB,SAAA,GAAApmB,CAAA,GAAAomB,SAAA,EAAAxhB,CAAA,GAAA1F,MAAA,CAAAoO,MAAA,CAAApM,CAAA,CAAAjC,SAAA,UAAAonB,mBAAA,CAAAzhB,CAAA,uBAAAzD,CAAA,EAAAnB,CAAA,EAAAmD,CAAA,QAAA/C,CAAA,EAAAc,CAAA,EAAA0D,CAAA,EAAAhG,CAAA,MAAA6B,CAAA,GAAA0C,CAAA,QAAAmjB,CAAA,OAAAC,CAAA,KAAA9lB,CAAA,KAAAT,CAAA,KAAAyN,CAAA,EAAAlN,CAAA,EAAAuK,CAAA,EAAA/J,CAAA,EAAAnC,CAAA,EAAAmC,CAAA,CAAAof,IAAA,CAAA5f,CAAA,MAAAQ,CAAA,WAAAA,EAAA7C,CAAA,EAAAiD,CAAA,WAAAf,CAAA,GAAAlC,CAAA,EAAAgD,CAAA,MAAA0D,CAAA,GAAArE,CAAA,EAAAgmB,CAAA,CAAAvmB,CAAA,GAAAmB,CAAA,EAAA2J,CAAA,gBAAA/J,EAAAI,CAAA,EAAAnB,CAAA,SAAAkB,CAAA,GAAAC,CAAA,EAAAyD,CAAA,GAAA5E,CAAA,EAAA9B,CAAA,OAAAooB,CAAA,IAAA1nB,CAAA,KAAAuE,CAAA,IAAAjF,CAAA,GAAAuC,CAAA,CAAA+C,MAAA,EAAAtF,CAAA,UAAAiF,CAAA,EAAA/C,CAAA,GAAAK,CAAA,CAAAvC,CAAA,GAAA6C,CAAA,GAAAwlB,CAAA,CAAA9lB,CAAA,EAAA8C,CAAA,GAAAnD,CAAA,KAAAe,CAAA,QAAAgC,CAAA,GAAAI,CAAA,KAAAvD,CAAA,MAAA4E,CAAA,GAAAxE,CAAA,EAAAc,CAAA,GAAAd,CAAA,YAAAc,CAAA,WAAAd,CAAA,MAAAA,CAAA,MAAAG,CAAA,IAAAH,CAAA,OAAAW,CAAA,MAAAoC,CAAA,GAAAhC,CAAA,QAAAJ,CAAA,GAAAX,CAAA,QAAAc,CAAA,MAAAqlB,CAAA,CAAA9Y,CAAA,GAAAzN,CAAA,EAAAumB,CAAA,CAAAvmB,CAAA,GAAAI,CAAA,OAAAW,CAAA,GAAAwC,CAAA,KAAAJ,CAAA,GAAAhC,CAAA,QAAAf,CAAA,MAAAJ,CAAA,IAAAA,CAAA,GAAAuD,CAAA,MAAAnD,CAAA,MAAAe,CAAA,EAAAf,CAAA,MAAAJ,CAAA,EAAAumB,CAAA,CAAAvmB,CAAA,GAAAuD,CAAA,EAAArC,CAAA,cAAAiC,CAAA,IAAAhC,CAAA,aAAA2J,CAAA,QAAAwb,CAAA,OAAAtmB,CAAA,qBAAAmD,CAAA,EAAA1C,CAAA,EAAA8C,CAAA,QAAA3E,CAAA,YAAA4nB,SAAA,uCAAAF,CAAA,UAAA7lB,CAAA,IAAAM,CAAA,CAAAN,CAAA,EAAA8C,CAAA,GAAArC,CAAA,GAAAT,CAAA,EAAAmE,CAAA,GAAArB,CAAA,GAAArF,CAAA,GAAAgD,CAAA,OAAAX,CAAA,GAAAqE,CAAA,MAAA0hB,CAAA,KAAAlmB,CAAA,KAAAc,CAAA,GAAAA,CAAA,QAAAA,CAAA,SAAAqlB,CAAA,CAAAvmB,CAAA,QAAAe,CAAA,CAAAG,CAAA,EAAA0D,CAAA,KAAA2hB,CAAA,CAAAvmB,CAAA,GAAA4E,CAAA,GAAA2hB,CAAA,CAAA9Y,CAAA,GAAA7I,CAAA,aAAAhG,CAAA,MAAAwB,CAAA,QAAAc,CAAA,KAAAiC,CAAA,YAAAjF,CAAA,GAAAkC,CAAA,CAAA+C,CAAA,WAAAjF,CAAA,GAAAA,CAAA,CAAAM,IAAA,CAAA4B,CAAA,EAAAwE,CAAA,UAAA4hB,SAAA,2CAAAtoB,CAAA,CAAAwL,IAAA,SAAAxL,CAAA,EAAA0G,CAAA,GAAA1G,CAAA,CAAAuB,KAAA,EAAAyB,CAAA,SAAAA,CAAA,oBAAAA,CAAA,KAAAhD,CAAA,GAAAkC,CAAA,CAAAqmB,MAAA,KAAAvoB,CAAA,CAAAM,IAAA,CAAA4B,CAAA,GAAAc,CAAA,SAAA0D,CAAA,GAAA4hB,SAAA,uCAAArjB,CAAA,gBAAAjC,CAAA,OAAAd,CAAA,GAAAG,CAAA,cAAArC,CAAA,IAAAooB,CAAA,GAAAC,CAAA,CAAAvmB,CAAA,QAAA4E,CAAA,GAAAzD,CAAA,CAAA3C,IAAA,CAAAwB,CAAA,EAAAumB,CAAA,OAAAzb,CAAA,kBAAA5M,CAAA,IAAAkC,CAAA,GAAAG,CAAA,EAAAW,CAAA,MAAA0D,CAAA,GAAA1G,CAAA,cAAAU,CAAA,mBAAAa,KAAA,EAAAvB,CAAA,EAAAwL,IAAA,EAAA4c,CAAA,SAAAnlB,CAAA,EAAAgC,CAAA,EAAA/C,CAAA,QAAAwE,CAAA,QAAAkG,CAAA,gBAAAsb,UAAA,cAAAM,kBAAA,cAAAC,2BAAA,KAAAzoB,CAAA,GAAAgB,MAAA,CAAA0nB,cAAA,MAAA1lB,CAAA,MAAAlB,CAAA,IAAA9B,CAAA,CAAAA,CAAA,IAAA8B,CAAA,SAAAqmB,mBAAA,CAAAnoB,CAAA,OAAA8B,CAAA,iCAAA9B,CAAA,GAAA0G,CAAA,GAAA+hB,0BAAA,CAAA1nB,SAAA,GAAAmnB,SAAA,CAAAnnB,SAAA,GAAAC,MAAA,CAAAoO,MAAA,CAAApM,CAAA,YAAAtC,EAAA2B,CAAA,WAAArB,MAAA,CAAAkM,cAAA,GAAAlM,MAAA,CAAAkM,cAAA,CAAA7K,CAAA,EAAAomB,0BAAA,KAAApmB,CAAA,CAAAsmB,SAAA,GAAAF,0BAAA,EAAAN,mBAAA,CAAA9lB,CAAA,EAAA4C,CAAA,yBAAA5C,CAAA,CAAAtB,SAAA,GAAAC,MAAA,CAAAoO,MAAA,CAAA1I,CAAA,GAAArE,CAAA,WAAAmmB,iBAAA,CAAAznB,SAAA,GAAA0nB,0BAAA,EAAAN,mBAAA,CAAAzhB,CAAA,iBAAA+hB,0BAAA,GAAAN,mBAAA,CAAAM,0BAAA,iBAAAD,iBAAA,GAAAA,iBAAA,CAAAI,WAAA,wBAAAT,mBAAA,CAAAM,0BAAA,EAAAxjB,CAAA,wBAAAkjB,mBAAA,CAAAzhB,CAAA,GAAAyhB,mBAAA,CAAAzhB,CAAA,EAAAzB,CAAA,gBAAAkjB,mBAAA,CAAAzhB,CAAA,EAAA5E,CAAA,iCAAAqmB,mBAAA,CAAAzhB,CAAA,8DAAAmiB,YAAA,YAAAA,aAAA,aAAAC,CAAA,EAAA5mB,CAAA,EAAAgD,CAAA,EAAAxE,CAAA;AAAA,SAAAynB,oBAAA9lB,CAAA,EAAAY,CAAA,EAAAnB,CAAA,EAAA9B,CAAA,QAAAkC,CAAA,GAAAlB,MAAA,CAAA+nB,cAAA,QAAA7mB,CAAA,uBAAAG,CAAA,IAAAH,CAAA,QAAAimB,mBAAA,YAAAa,mBAAA3mB,CAAA,EAAAY,CAAA,EAAAnB,CAAA,EAAA9B,CAAA,aAAAiF,EAAAhC,CAAA,EAAAnB,CAAA,IAAAqmB,mBAAA,CAAA9lB,CAAA,EAAAY,CAAA,YAAAZ,CAAA,gBAAA4mB,OAAA,CAAAhmB,CAAA,EAAAnB,CAAA,EAAAO,CAAA,SAAAY,CAAA,GAAAf,CAAA,GAAAA,CAAA,CAAAG,CAAA,EAAAY,CAAA,IAAA1B,KAAA,EAAAO,CAAA,EAAAonB,UAAA,GAAAlpB,CAAA,EAAAmpB,YAAA,GAAAnpB,CAAA,EAAAopB,QAAA,GAAAppB,CAAA,MAAAqC,CAAA,CAAAY,CAAA,IAAAnB,CAAA,IAAAmD,CAAA,aAAAA,CAAA,cAAAA,CAAA,mBAAAkjB,mBAAA,CAAA9lB,CAAA,EAAAY,CAAA,EAAAnB,CAAA,EAAA9B,CAAA;AAAA,SAAAqpB,mBAAAvnB,CAAA,EAAA9B,CAAA,EAAAqC,CAAA,EAAAY,CAAA,EAAAgC,CAAA,EAAA2H,CAAA,EAAA5J,CAAA,cAAAd,CAAA,GAAAJ,CAAA,CAAA8K,CAAA,EAAA5J,CAAA,GAAA0D,CAAA,GAAAxE,CAAA,CAAAX,KAAA,WAAAO,CAAA,gBAAAO,CAAA,CAAAP,CAAA,KAAAI,CAAA,CAAAsJ,IAAA,GAAAxL,CAAA,CAAA0G,CAAA,IAAA4iB,OAAA,CAAAC,OAAA,CAAA7iB,CAAA,EAAAlE,IAAA,CAAAS,CAAA,EAAAgC,CAAA;AAAA,SAAAukB,kBAAA1nB,CAAA,6BAAA9B,CAAA,SAAAqC,CAAA,GAAAgN,SAAA,aAAAia,OAAA,WAAArmB,CAAA,EAAAgC,CAAA,QAAA2H,CAAA,GAAA9K,CAAA,CAAAqY,KAAA,CAAAna,CAAA,EAAAqC,CAAA,YAAAonB,MAAA3nB,CAAA,IAAAunB,kBAAA,CAAAzc,CAAA,EAAA3J,CAAA,EAAAgC,CAAA,EAAAwkB,KAAA,EAAAC,MAAA,UAAA5nB,CAAA,cAAA4nB,OAAA5nB,CAAA,IAAAunB,kBAAA,CAAAzc,CAAA,EAAA3J,CAAA,EAAAgC,CAAA,EAAAwkB,KAAA,EAAAC,MAAA,WAAA5nB,CAAA,KAAA2nB,KAAA;AAAA,SAAAvX,kBAAAA,CAAAtF,CAAA,EAAA9K,CAAA,UAAA8K,CAAA,YAAA9K,CAAA,aAAAwmB,SAAA;AAAA,SAAAqB,oBAAAA,CAAAtnB,CAAA,EAAAY,CAAA,aAAAjD,CAAA,MAAAA,CAAA,GAAAiD,CAAA,CAAAqC,MAAA,EAAAtF,CAAA,UAAAiF,CAAA,GAAAhC,CAAA,CAAAjD,CAAA,GAAAiF,CAAA,CAAAikB,UAAA,GAAAjkB,CAAA,CAAAikB,UAAA,QAAAjkB,CAAA,CAAAkkB,YAAA,kBAAAlkB,CAAA,KAAAA,CAAA,CAAAmkB,QAAA,QAAApoB,MAAA,CAAA+nB,cAAA,CAAA1mB,CAAA,EAAAunB,iBAAA,CAAA3kB,CAAA,CAAAP,GAAA,GAAAO,CAAA;AAAA,SAAAyN,eAAAA,CAAArQ,CAAA,EAAAY,CAAA,EAAAjD,CAAA,WAAAiD,CAAA,IAAA0mB,oBAAA,CAAAtnB,CAAA,CAAAtB,SAAA,EAAAkC,CAAA,GAAAjD,CAAA,IAAA2pB,oBAAA,CAAAtnB,CAAA,EAAArC,CAAA,GAAAgB,MAAA,CAAA+nB,cAAA,CAAA1mB,CAAA,iBAAA+mB,QAAA,SAAA/mB,CAAA;AAAA,SAAAunB,iBAAAA,CAAA5pB,CAAA,QAAAkC,CAAA,GAAA2nB,eAAA,CAAA7pB,CAAA,gCAAAG,UAAA,CAAA+B,CAAA,IAAAA,CAAA,GAAAA,CAAA;AAAA,SAAA2nB,eAAAA,CAAA7pB,CAAA,EAAAiD,CAAA,oBAAA9C,UAAA,CAAAH,CAAA,MAAAA,CAAA,SAAAA,CAAA,MAAAqC,CAAA,GAAArC,CAAA,CAAAqa,MAAA,CAAAyP,WAAA,kBAAAznB,CAAA,QAAAH,CAAA,GAAAG,CAAA,CAAA/B,IAAA,CAAAN,CAAA,EAAAiD,CAAA,gCAAA9C,UAAA,CAAA+B,CAAA,UAAAA,CAAA,YAAAomB,SAAA,yEAAArlB,CAAA,GAAArB,MAAA,GAAAG,MAAA,EAAA/B,CAAA;AAD2C;AACK;AAEhD,IAAMgqB,cAAc,GAAG;EACrBnjB,QAAQ,EAAE,iBAAiB;EAC3BT,IAAI,EAAE,cAAc;EACpBpC,MAAM,EAAE,IAAI;EACZ+X,OAAO,EAAE,GAAG;EACZpV,QAAQ,EAAE,QAAQ;EAClBC,IAAI,EAAE;AACR,CAAC;AAED,IAAMqjB,kBAAkB,GAAG;EACzBpjB,QAAQ,EAAE,iBAAiB;EAC3BT,IAAI,EAAE,iBAAiB;EACvBpC,MAAM,EAAE,IAAI;EACZ+X,OAAO,EAAE,GAAG;EACZpV,QAAQ,EAAE,QAAQ;EAClBC,IAAI,EAAE;AACR,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AANA,IAOMsjB,GAAG;EACP;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAAAA,IAAYtkB,OAAO,EAAEohB,SAAS,EAAEmD,MAAM,EAAEC,UAAU,EAAE;IAAAlY,kBAAA,OAAAgY,GAAA;IAClD,IAAI,CAACtkB,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACohB,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACpjB,GAAG,GAAGumB,MAAM;IACjB,IAAI,CAACC,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACzkB,WAAW,GAAGC,OAAO,CAACD,WAAW;IACtC,IAAI,CAAC8hB,gBAAgB,GAAG4C,aAAa,CAACzkB,OAAO,EAAEukB,MAAM,CAAC;IACtD,IAAI,CAACG,oBAAoB,GAAGC,iBAAiB,CAAC3kB,OAAO,EAAEukB,MAAM,CAAC;EAChE;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EATE,OAAAzX,eAAA,CAAAwX,GAAA;IAAAxlB,GAAA;IAAAnD,KAAA,EAUA,SAAAipB,YAAYA,CAAAlX,IAAA,EAA6C;MAAA,IAAAkI,KAAA;MAAA,IAA1C7V,WAAW,GAAA2N,IAAA,CAAX3N,WAAW;QAAEC,OAAO,GAAA0N,IAAA,CAAP1N,OAAO;QAAEyI,OAAO,GAAAiF,IAAA,CAAPjF,OAAO;QAAEkH,OAAO,GAAAjC,IAAA,CAAPiC,OAAO;MACnD,OAAO,IAAI+T,OAAO,CAAC,UAACC,OAAO,EAAEkB,MAAM,EAAK;QACtCjP,KAAI,CAACwL,SAAS,CAACxK,IAAI,CAAC;UAClB7W,WAAW,EAAXA,WAAW;UACXC,OAAO,EAAPA,OAAO;UACPyI,OAAO,EAAPA,OAAO;UACPkH,OAAO,EAAPA,OAAO;UACPvL,QAAQ,EAAE,SAAVA,QAAQA,CAAGd,GAAG,EAAEC,IAAI;YAAA,OAAMD,GAAG,GAAGuhB,MAAM,CAACvhB,GAAG,CAAC,GAAGqgB,OAAO,CAACpgB,IAAI,CAAC;UAAA;QAC7D,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAzE,GAAA;IAAAnD,KAAA,EAKA,SAAAmpB,QAAQA,CAAC9f,IAAI,EAAEZ,QAAQ,EAAE;MAAA,IAAA0S,MAAA;MACvB,IAAM9W,OAAO,GAAGmkB,2BAAwB,CAAC,IAAI,CAACtC,gBAAgB,EAAE,MAAM,CAAC;MACvE,IAAMpZ,OAAO,GAAG0b,YAAoB,CAACnf,IAAI,CAAC;;MAE1C;MACA+f,UAAU,CAAC,YAAM;QACfjO,MAAI,CAACsK,SAAS,CAACxK,IAAI,CAAC;UAClB7W,WAAW,EAAE+W,MAAI,CAAC/W,WAAW;UAC7BC,OAAO,EAAPA,OAAO;UACPyI,OAAO,EAAPA,OAAO;UACPrE,QAAQ,EAARA;QACF,CAAC,CAAC;MACJ,CAAC,EAAE,CAAC,CAAC;IACP;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAtF,GAAA;IAAAnD,KAAA;MAAA,IAAAqpB,UAAA,GAAApB,iBAAA,cAAAX,YAAA,GAAA3jB,CAAA,CAMA,SAAA2lB,QAAgBxc,OAAO;QAAA,IAAAkH,OAAA;UAAA3P,OAAA;UAAAklB,KAAA,GAAAzb,SAAA;QAAA,OAAAwZ,YAAA,GAAAC,CAAA,WAAAiC,QAAA;UAAA,kBAAAA,QAAA,CAAAjpB,CAAA;YAAA;cAAEyT,OAAO,GAAAuV,KAAA,CAAAxlB,MAAA,QAAAwlB,KAAA,QAAA9lB,SAAA,GAAA8lB,KAAA,MAAG,CAAC,CAAC;cAC7BllB,OAAO,GAAGmkB,2BAAwB,CAAC,IAAI,CAACO,oBAAoB,EAAE,MAAM,CAAC;cAAA,OAAAS,QAAA,CAAAne,CAAA,IAEpE,IAAI,CAAC4d,YAAY,CAAC;gBACvB7kB,WAAW,EAAE,IAAI,CAACA,WAAW;gBAC7BC,OAAO,EAAPA,OAAO;gBACPyI,OAAO,EAAPA,OAAO;gBACPkH,OAAO,EAAPA;cACF,CAAC,CAAC;UAAA;QAAA,GAAAsV,OAAA;MAAA,CACH;MAAA,SATKpO,SAASA,CAAAuO,EAAA;QAAA,OAAAJ,UAAA,CAAAzQ,KAAA,OAAA9K,SAAA;MAAA;MAAA,OAAToN,SAAS;IAAA;IAWf;AACF;AACA;AACA;AACA;IAJE;EAAA;IAAA/X,GAAA;IAAAnD,KAAA,EAKA,SAAA0pB,gBAAgBA,CAACrgB,IAAI,EAAEZ,QAAQ,EAAE;MAC/B,IAAMqE,OAAO,GAAG0b,YAAoB,CAACnf,IAAI,CAAC;MAE1C,IAAIsgB,eAAe;MACnB,IAAI,IAAI,CAACd,UAAU,EAAE;QACnBc,eAAe,GAAG,IAAI,CAACd,UAAU,CAAC7D,QAAQ,CAAClY,OAAO,CAAC;MACrD,CAAC,MAAM;QACL6c,eAAe,GAAGnkB,SAAS,CAACsH,OAAO,CAAC;MACtC;MAEA,IAAI6c,eAAe,CAACznB,KAAK,EAAE;QACzB,IAAIuG,QAAQ,EAAE;UACZA,QAAQ,CAACkhB,eAAe,CAACznB,KAAK,CAAC;QACjC;QACA,OAAO,IAAI;MACb;MAEA,OAAOynB,eAAe,CAAC3pB,KAAK;IAC9B;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAmD,GAAA;IAAAnD,KAAA,EAKA,SAAA4pB,eAAeA,CAACC,WAAW,EAAEphB,QAAQ,EAAE;MACrC,IAAMyd,gBAAgB,GAAGsC,2BAAwB,CAC/C,IAAI,CAACtC,gBAAgB,EACrB,MACF,CAAC;MACD,IAAI,CAACT,SAAS,CAACmE,eAAe,CAC5B,IAAI,CAACxlB,WAAW,EAChB8hB,gBAAgB,EAChB2D,WAAW,EACXphB,QACF,CAAC;IACH;EAAC;IAAAtF,GAAA;IAAAnD,KAAA,EAED,SAAAoR,SAASA,CAAC/M,OAAO,EAAE;MACjB,IAAMgN,UAAU,GAAG,IAAI,CAAChN,OAAO;MAC/B,IAAI,CAACA,OAAO,GAAG6F,KAAK,CAACmH,UAAU,EAAEhN,OAAO,CAAC;MACzC,IAAI,CAAC6hB,gBAAgB,GAAG4C,aAAa,CAAC,IAAI,CAACzkB,OAAO,EAAE,IAAI,CAAChC,GAAG,CAAC;MAC7D,IAAI,CAAC0mB,oBAAoB,GAAGC,iBAAiB,CAAC,IAAI,CAAC3kB,OAAO,EAAE,IAAI,CAAChC,GAAG,CAAC;MACrE,IAAI,IAAI,CAACgC,OAAO,CAACD,WAAW,KAAKX,SAAS,EAAE;QAC1C,IAAI,CAACW,WAAW,GAAG,IAAI,CAACC,OAAO,CAACD,WAAW;MAC7C;MACA,OAAO,IAAI;IACb;EAAC;AAAA;AAGH,SAAS0kB,aAAaA,CAACzkB,OAAO,EAAEhC,GAAG,EAAE;EACnC,OAAOmmB,uBAA+B,CAACnkB,OAAO,EAAEokB,cAAc,EAAEpmB,GAAG,CAAC;AACtE;AAEA,SAAS2mB,iBAAiBA,CAAC3kB,OAAO,EAAEhC,GAAG,EAAE;EAAA,IAAAynB,gBAAA;EACvCzlB,OAAO,GAAA6O,gBAAA,CAAAA,gBAAA,KAAQ7O,OAAO;IAAEuhB,QAAQ,GAAAkE,gBAAA,GAAEzlB,OAAO,CAACoM,OAAO,cAAAqZ,gBAAA,uBAAfA,gBAAA,CAAiBlE;EAAQ,EAAE;EAC7D,OAAO4C,uBAA+B,CAACnkB,OAAO,EAAEqkB,kBAAkB,EAAErmB,GAAG,CAAC;AAC1E;AAEA,4CAAesmB,GAAG,E;;AC7KlB;AACA;AACA;AACO,IAAMnO,OAAO,GAAG,OAAO;AACvB,IAAMoL,QAAQ,GAAG,6BAA6B;AAC9C,IAAM1F,QAAQ,GAAG,OAAO;AACxB,IAAM6J,WAAW,GAAG,OAAO;AAC3B,IAAMC,kBAAkB,GAAG,OAAO;AAClC,IAAMC,QAAQ,GAAG,CAAC;AAClB,IAAMC,WAAW,GAAG,EAAE;AAEtB,IAAMC,iBAAiB,GAAG,CAC/B,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,YAAY,EACZ,WAAW,EACX,aAAa,CACd;AAEM,IAAMC,cAAc,GAAG,iDAC5B,SAAS,EACT,oBAAoB,EACpB,aAAa,EACb,OAAO,EACP,qBAAqB,CACtB;AAEM,IAAMC,kBAAkB,GAAG,iDAChC,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,CAClB;AAEM,IAAMC,kBAAkB,GAAG,iDAChC,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,QAAQ,EACR,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,cAAc,CACf;;AAED;AACA,6CAAe;EACb9P,OAAO,EAAPA,OAAO;EACPoL,QAAQ,EAARA,QAAQ;EACR1F,QAAQ,EAARA,QAAQ;EACR6J,WAAW,EAAXA,WAAW;EACXC,kBAAkB,EAAlBA,kBAAkB;EAClBC,QAAQ,EAARA,QAAQ;EACRC,WAAW,EAAXA;AACF,CAAC,E;;ACnED,IAAMK,2BAA2B,GAAG,cAAc;AAClD,IAAMC,sBAAsB,GAAG,gCAAgC;AAC/D,IAAMC,yBAAyB,GAAG,8BAA8B;AAChE,SAASrkB,KAAKA,CAAClE,KAAK,EAAEmC,OAAO,EAAE;EAC7B,IAAI,OAAOnC,KAAK,CAACwoB,UAAU,KAAK,WAAW,IAAI,OAAOxoB,KAAK,CAAC,iBAAiB,CAAC,KAAK,WAAW,EAC5F,OAAOyoB,UAAU,CAACzoB,KAAK,EAAEmC,OAAO,CAAC,CAAC,KAC/B,IAAInC,KAAK,CAACsF,KAAK,IAAItF,KAAK,CAACsF,KAAK,CAACxI,KAAK,CAACwrB,sBAAsB,CAAC,EAC/D,OAAOI,WAAW,CAAC1oB,KAAK,EAAEmC,OAAO,CAAC,CAAC,KAChC,IAAInC,KAAK,CAACsF,KAAK,EAClB,OAAOqjB,eAAe,CAAC3oB,KAAK,EAAEmC,OAAO,CAAC,CAAC,KACpC,IAAIA,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEymB,UAAU,EAC1B,OAAO,EAAE,CAAC,KAEV,MAAM,IAAIjsB,KAAK,CAAC,iCAAiC,CAAC;AACtD;AACA,SAASksB,UAAUA,CAACC,WAAW,EAAE3mB,OAAO,EAAE;EACxC,IAAI2mB,WAAW,CAAChsB,KAAK,CAACwrB,sBAAsB,CAAC,EAC3C,OAAOS,iBAAiB,CAACD,WAAW,EAAE3mB,OAAO,CAAC,CAAC,KAE/C,OAAO6mB,qBAAqB,CAACF,WAAW,EAAE3mB,OAAO,CAAC;AACtD;AACA,SAAS8mB,eAAeA,CAACC,OAAO,EAAE;EAChC,IAAI,CAACA,OAAO,CAACnjB,QAAQ,CAAC,GAAG,CAAC,EACxB,OAAO,CAACmjB,OAAO,EAAE3nB,SAAS,EAAEA,SAAS,CAAC;EACxC,IAAM4nB,MAAM,GAAG,8BAA8B;EAC7C,IAAMhf,KAAK,GAAGgf,MAAM,CAACznB,IAAI,CAACwnB,OAAO,CAACzrB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;EACvD,OAAO,CAAC0M,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,IAAI5I,SAAS,EAAE4I,KAAK,CAAC,CAAC,CAAC,IAAI5I,SAAS,CAAC;AACjE;AACA,SAAS6nB,UAAUA,CAACC,KAAK,EAAElnB,OAAO,EAAE;EAClC,IAAIA,OAAO,IAAIA,OAAO,CAAC6D,KAAK,IAAI,IAAI,EAAE;IACpC,IAAIyJ,KAAK,CAACzD,OAAO,CAAC7J,OAAO,CAAC6D,KAAK,CAAC,EAC9B,OAAOqjB,KAAK,CAACrjB,KAAK,CAAC7D,OAAO,CAAC6D,KAAK,CAAC,CAAC,CAAC,EAAE7D,OAAO,CAAC6D,KAAK,CAAC,CAAC,CAAC,CAAC;IACxD,OAAOqjB,KAAK,CAACrjB,KAAK,CAAC,CAAC,EAAE7D,OAAO,CAAC6D,KAAK,CAAC;EACtC;EACA,OAAOqjB,KAAK;AACd;AACA,SAASX,WAAWA,CAAC1oB,KAAK,EAAEmC,OAAO,EAAE;EACnC,OAAO4mB,iBAAiB,CAAC/oB,KAAK,CAACsF,KAAK,EAAEnD,OAAO,CAAC;AAChD;AACA,SAAS4mB,iBAAiBA,CAACzjB,KAAK,EAAEnD,OAAO,EAAE;EACzC,IAAMmnB,QAAQ,GAAGF,UAAU,CACzB9jB,KAAK,CAACgE,KAAK,CAAC,IAAI,CAAC,CAACqG,MAAM,CAAC,UAAChL,IAAI,EAAK;IACjC,OAAO,CAAC,CAACA,IAAI,CAAC7H,KAAK,CAACwrB,sBAAsB,CAAC;EAC7C,CAAC,CAAC,EACFnmB,OACF,CAAC;EACD,OAAOmnB,QAAQ,CAAC1Z,GAAG,CAAC,UAACjL,IAAI,EAAK;IAC5B,IAAIA,IAAI,CAACoB,QAAQ,CAAC,QAAQ,CAAC,EAAE;MAC3BpB,IAAI,GAAGA,IAAI,CAAClH,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAACA,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC;IACrF;IACA,IAAI8rB,aAAa,GAAG5kB,IAAI,CAAClH,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAACA,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;IAChG,IAAMiH,QAAQ,GAAG6kB,aAAa,CAACzsB,KAAK,CAAC,YAAY,CAAC;IAClDysB,aAAa,GAAG7kB,QAAQ,GAAG6kB,aAAa,CAAC9rB,OAAO,CAACiH,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG6kB,aAAa;IACjF,IAAMC,aAAa,GAAGP,eAAe,CAACvkB,QAAQ,GAAGA,QAAQ,CAAC,CAAC,CAAC,GAAG6kB,aAAa,CAAC;IAC7E,IAAME,YAAY,GAAG/kB,QAAQ,IAAI6kB,aAAa,IAAIhoB,SAAS;IAC3D,IAAMmoB,QAAQ,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC3jB,QAAQ,CAACyjB,aAAa,CAAC,CAAC,CAAC,CAAC,GAAGjoB,SAAS,GAAGioB,aAAa,CAAC,CAAC,CAAC;IAClG,OAAO;MACLG,QAAQ,EAAEF,YAAY;MACtBG,IAAI,EAAEF,QAAQ;MACd/kB,IAAI,EAAE6kB,aAAa,CAAC,CAAC,CAAC,GAAG,CAACA,aAAa,CAAC,CAAC,CAAC,GAAGjoB,SAAS;MACtDsoB,GAAG,EAAEL,aAAa,CAAC,CAAC,CAAC,GAAG,CAACA,aAAa,CAAC,CAAC,CAAC,GAAGjoB,SAAS;MACrDmgB,GAAG,EAAE/c;IACP,CAAC;EACH,CAAC,CAAC;AACJ;AACA,SAASgkB,eAAeA,CAAC3oB,KAAK,EAAEmC,OAAO,EAAE;EACvC,OAAO6mB,qBAAqB,CAAChpB,KAAK,CAACsF,KAAK,EAAEnD,OAAO,CAAC;AACpD;AACA,SAAS6mB,qBAAqBA,CAAC1jB,KAAK,EAAEnD,OAAO,EAAE;EAC7C,IAAMmnB,QAAQ,GAAGF,UAAU,CACzB9jB,KAAK,CAACgE,KAAK,CAAC,IAAI,CAAC,CAACqG,MAAM,CAAC,UAAChL,IAAI,EAAK;IACjC,OAAO,CAACA,IAAI,CAAC7H,KAAK,CAACyrB,yBAAyB,CAAC;EAC/C,CAAC,CAAC,EACFpmB,OACF,CAAC;EACD,OAAOmnB,QAAQ,CAAC1Z,GAAG,CAAC,UAACjL,IAAI,EAAK;IAC5B,IAAIA,IAAI,CAACoB,QAAQ,CAAC,SAAS,CAAC,EAC1BpB,IAAI,GAAGA,IAAI,CAAClH,OAAO,CAAC,kDAAkD,EAAE,KAAK,CAAC;IAChF,IAAI,CAACkH,IAAI,CAACoB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAACpB,IAAI,CAACoB,QAAQ,CAAC,GAAG,CAAC,EAAE;MAC9C,OAAO;QACL4jB,QAAQ,EAAEhlB;MACZ,CAAC;IACH,CAAC,MAAM;MACL,IAAMmlB,iBAAiB,GAAG,4JAA4J;MACtL,IAAMC,OAAO,GAAGplB,IAAI,CAAC7H,KAAK,CAACgtB,iBAAiB,CAAC;MAC7C,IAAML,YAAY,GAAGM,OAAO,IAAIA,OAAO,CAAC,CAAC,CAAC,GAAGA,OAAO,CAAC,CAAC,CAAC,GAAGxoB,SAAS;MACnE,IAAMioB,aAAa,GAAGP,eAAe,CAACtkB,IAAI,CAAClH,OAAO,CAACqsB,iBAAiB,EAAE,EAAE,CAAC,CAAC;MAC1E,OAAO;QACLH,QAAQ,EAAEF,YAAY;QACtBG,IAAI,EAAEJ,aAAa,CAAC,CAAC,CAAC;QACtB7kB,IAAI,EAAE6kB,aAAa,CAAC,CAAC,CAAC,GAAG,CAACA,aAAa,CAAC,CAAC,CAAC,GAAGjoB,SAAS;QACtDsoB,GAAG,EAAEL,aAAa,CAAC,CAAC,CAAC,GAAG,CAACA,aAAa,CAAC,CAAC,CAAC,GAAGjoB,SAAS;QACrDmgB,GAAG,EAAE/c;MACP,CAAC;IACH;EACF,CAAC,CAAC;AACJ;AACA,SAAS8jB,UAAUA,CAAC7pB,CAAC,EAAEuD,OAAO,EAAE;EAC9B,IAAI,CAACvD,CAAC,CAAC4pB,UAAU,IAAI5pB,CAAC,CAACwF,OAAO,CAAC2B,QAAQ,CAAC,IAAI,CAAC,IAAInH,CAAC,CAACwF,OAAO,CAACkF,KAAK,CAAC,IAAI,CAAC,CAACzH,MAAM,GAAGjD,CAAC,CAAC4pB,UAAU,CAAClf,KAAK,CAAC,IAAI,CAAC,CAACzH,MAAM,EAC7G,OAAOmoB,WAAW,CAACprB,CAAC,CAAC,CAAC,KACnB,IAAI,CAACA,CAAC,CAAC0G,KAAK,EACf,OAAO2kB,YAAY,CAACrrB,CAAC,CAAC,CAAC,KAEvB,OAAOsrB,YAAY,CAACtrB,CAAC,EAAEuD,OAAO,CAAC;AACnC;AACA,SAAS6nB,WAAWA,CAACprB,CAAC,EAAEuD,OAAO,EAAE;EAC/B,IAAMgoB,MAAM,GAAG,mCAAmC;EAClD,IAAMd,KAAK,GAAGzqB,CAAC,CAACwF,OAAO,CAACkF,KAAK,CAAC,IAAI,CAAC;EACnC,IAAMjG,MAAM,GAAG,EAAE;EACjB,KAAK,IAAI5E,CAAC,GAAG,CAAC,EAAEuI,GAAG,GAAGqiB,KAAK,CAACxnB,MAAM,EAAEpD,CAAC,GAAGuI,GAAG,EAAEvI,CAAC,IAAI,CAAC,EAAE;IACnD,IAAM3B,KAAK,GAAGqtB,MAAM,CAACzoB,IAAI,CAAC2nB,KAAK,CAAC5qB,CAAC,CAAC,CAAC;IACnC,IAAI3B,KAAK,EAAE;MACTuG,MAAM,CAACb,IAAI,CAAC;QACVonB,IAAI,EAAE9sB,KAAK,CAAC,CAAC,CAAC;QACd6H,IAAI,EAAE,CAAC7H,KAAK,CAAC,CAAC,CAAC;QACf4kB,GAAG,EAAE2H,KAAK,CAAC5qB,CAAC;MACd,CAAC,CAAC;IACJ;EACF;EACA,OAAO2qB,UAAU,CAAC/lB,MAAM,EAAElB,OAAO,CAAC;AACpC;AACA,SAAS8nB,YAAYA,CAACrrB,CAAC,EAAEuD,OAAO,EAAE;EAChC,IAAMgoB,MAAM,GAAG,4DAA4D;EAC3E,IAAMd,KAAK,GAAGzqB,CAAC,CAAC4pB,UAAU,CAAClf,KAAK,CAAC,IAAI,CAAC;EACtC,IAAMjG,MAAM,GAAG,EAAE;EACjB,KAAK,IAAI5E,CAAC,GAAG,CAAC,EAAEuI,GAAG,GAAGqiB,KAAK,CAACxnB,MAAM,EAAEpD,CAAC,GAAGuI,GAAG,EAAEvI,CAAC,IAAI,CAAC,EAAE;IACnD,IAAM3B,KAAK,GAAGqtB,MAAM,CAACzoB,IAAI,CAAC2nB,KAAK,CAAC5qB,CAAC,CAAC,CAAC;IACnC,IAAI3B,KAAK,EAAE;MACTuG,MAAM,CAACb,IAAI,CAAC;QACVmnB,QAAQ,EAAE7sB,KAAK,CAAC,CAAC,CAAC,IAAIyE,SAAS;QAC/BqoB,IAAI,EAAE9sB,KAAK,CAAC,CAAC,CAAC;QACd6H,IAAI,EAAE7H,KAAK,CAAC,CAAC,CAAC,GAAG,CAACA,KAAK,CAAC,CAAC,CAAC,GAAGyE,SAAS;QACtCmgB,GAAG,EAAE2H,KAAK,CAAC5qB,CAAC;MACd,CAAC,CAAC;IACJ;EACF;EACA,OAAO2qB,UAAU,CAAC/lB,MAAM,EAAElB,OAAO,CAAC;AACpC;AACA,SAAS+nB,YAAYA,CAAClqB,KAAK,EAAEmC,OAAO,EAAE;EACpC,IAAMmnB,QAAQ,GAAGF,UAAU;EACzB;EACAppB,KAAK,CAACsF,KAAK,CAACgE,KAAK,CAAC,IAAI,CAAC,CAACqG,MAAM,CAAC,UAAChL,IAAI,EAAK;IACvC,OAAO,CAAC,CAACA,IAAI,CAAC7H,KAAK,CAACurB,2BAA2B,CAAC,IAAI,CAAC1jB,IAAI,CAAC7H,KAAK,CAAC,mBAAmB,CAAC;EACtF,CAAC,CAAC,EACFqF,OACF,CAAC;EACD,OAAOmnB,QAAQ,CAAC1Z,GAAG,CAAC,UAACjL,IAAI,EAAK;IAC5B,IAAMylB,MAAM,GAAGzlB,IAAI,CAAC2E,KAAK,CAAC,GAAG,CAAC;IAC9B,IAAMkgB,aAAa,GAAGP,eAAe,CAACmB,MAAM,CAAChgB,GAAG,CAAC,CAAC,CAAC;IACnD,IAAMigB,YAAY,GAAGD,MAAM,CAAClV,KAAK,CAAC,CAAC,IAAI,EAAE;IACzC,IAAMuU,YAAY,GAAGY,YAAY,CAAC5sB,OAAO,CAAC,gCAAgC,EAAE,IAAI,CAAC,CAACA,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI8D,SAAS;IACxH,IAAI+oB,OAAO;IACX,IAAID,YAAY,CAACvtB,KAAK,CAAC,aAAa,CAAC,EACnCwtB,OAAO,GAAGD,YAAY,CAAC5sB,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC;IAC5D,IAAMyI,IAAI,GAAGokB,OAAO,KAAK/oB,SAAS,IAAI+oB,OAAO,KAAK,2BAA2B,GAAG/oB,SAAS,GAAG+oB,OAAO,CAAChhB,KAAK,CAAC,GAAG,CAAC;IAC9G,OAAO;MACLqgB,QAAQ,EAAEF,YAAY;MACtBvjB,IAAI,EAAJA,IAAI;MACJ0jB,IAAI,EAAEJ,aAAa,CAAC,CAAC,CAAC;MACtB7kB,IAAI,EAAE6kB,aAAa,CAAC,CAAC,CAAC,GAAG,CAACA,aAAa,CAAC,CAAC,CAAC,GAAGjoB,SAAS;MACtDsoB,GAAG,EAAEL,aAAa,CAAC,CAAC,CAAC,GAAG,CAACA,aAAa,CAAC,CAAC,CAAC,GAAGjoB,SAAS;MACrDmgB,GAAG,EAAE/c;IACP,CAAC;EACH,CAAC,CAAC;AACJ;;;;;;;;;ACpK4O;AAC/L;AAE7C,SAASmmB,4BAA4BA,CAACC,eAAe,EAAE;EACrD,OAAOA,eAAe,CAACnb,GAAG,CAAC,UAACob,cAAc,EAAK;IAC7C,OAAO;MACLvB,YAAY,EAAEuB,cAAc,CAACrB,QAAQ;MACrCzjB,IAAI,EAAE8kB,cAAc,CAAC9kB,IAAI;MACzBwjB,QAAQ,EAAEsB,cAAc,CAACpB,IAAI;MAC7BqB,UAAU,EAAED,cAAc,CAACrmB,IAAI;MAC/BumB,YAAY,EAAEF,cAAc,CAACnB,GAAG;MAChChpB,MAAM,EAAEmqB,cAAc,CAACtJ;IACzB,CAAC;EACH,CAAC,CAAC;AACJ;AACA,SAASxd,UAAKA,CAAClE,KAAK,EAAEmC,OAAO,EAAE;EAC7B,OAAO2oB,4BAA4B,CAACP,KAAO,CAACvqB,KAAK,EAAEmC,OAAO,CAAC,CAAC;AAC9D;AACA,SAASumB,gBAAWA,CAAC1oB,KAAK,EAAE;EAC1B,OAAO8qB,4BAA4B,CAACN,aAAa,CAACxqB,KAAK,CAAC,CAAC;AAC3D;AACA,SAAS2oB,oBAAeA,CAAC3oB,KAAK,EAAE;EAC9B,OAAO8qB,4BAA4B,CAACL,iBAAiB,CAACzqB,KAAK,CAAC,CAAC;AAC/D;AACA,SAASyoB,eAAUA,CAAC7pB,CAAC,EAAE;EACrB,OAAOksB,4BAA4B,CAACJ,YAAY,CAAC9rB,CAAC,CAAC,CAAC;AACtD;AACA,SAASorB,gBAAWA,CAACprB,CAAC,EAAE;EACtB,OAAOksB,4BAA4B,CAACH,aAAa,CAAC/rB,CAAC,CAAC,CAAC;AACvD;AACA,SAASqrB,iBAAYA,CAACrrB,CAAC,EAAE;EACvB,OAAOksB,4BAA4B,CAACF,cAAc,CAAChsB,CAAC,CAAC,CAAC;AACxD;AACA,SAASsrB,iBAAYA,CAAClqB,KAAK,EAAE;EAC3B,OAAO8qB,4BAA4B,CAACD,cAAc,CAAC7qB,KAAK,CAAC,CAAC;AAC5D;;;ACnCiE;AAEjE,IAAIorB,gBAAgB,GAAG,GAAG;AAC1B,IAAIC,gBAAgB,GAAG,IAAI1tB,MAAM,CAC/B,2DACF,CAAC;AAED,SAASmH,iBAAiBA,CAAA,EAAG;EAC3B,OAAOsmB,gBAAgB;AACzB;AAEA,SAASpmB,aAAaA,CAAA,EAAG;EACvB,OAAO,IAAI;AACb;AAEA,SAASsmB,KAAKA,CAACC,UAAU,EAAE;EACzB,IAAIpkB,IAAI,GAAG,CAAC,CAAC;EAEbA,IAAI,CAACqkB,WAAW,GAAGD,UAAU;EAE7BpkB,IAAI,CAAChH,GAAG,GAAGorB,UAAU,CAAC7B,QAAQ;EAC9BviB,IAAI,CAACxC,IAAI,GAAG4mB,UAAU,CAACN,UAAU;EACjC9jB,IAAI,CAACtC,IAAI,GAAG0mB,UAAU,CAAC9B,YAAY;EACnCtiB,IAAI,CAACvC,MAAM,GAAG2mB,UAAU,CAACL,YAAY;EACrC/jB,IAAI,CAACjB,IAAI,GAAGqlB,UAAU,CAACrlB,IAAI;EAE3BiB,IAAI,CAACpC,OAAO,GAAGC,aAAa,CAAC,CAAC;EAE9B,OAAOmC,IAAI;AACb;AAEA,SAASskB,KAAKA,CAACjJ,SAAS,EAAEkJ,IAAI,EAAE;EAC9B,SAASC,QAAQA,CAAA,EAAG;IAClB,IAAIC,WAAW,GAAG,EAAE;IAEpBF,IAAI,GAAGA,IAAI,IAAI,CAAC;IAEhB,IAAI;MACFE,WAAW,GAAGT,UAAe,CAAC3I,SAAS,CAAC;IAC1C,CAAC,CAAC,OAAOjZ,EAAE,EAAE;MACXqiB,WAAW,GAAG,EAAE;IAClB;IAEA,IAAItmB,KAAK,GAAG,EAAE;IAEd,KAAK,IAAI7G,CAAC,GAAGitB,IAAI,EAAEjtB,CAAC,GAAGmtB,WAAW,CAAC/pB,MAAM,EAAEpD,CAAC,EAAE,EAAE;MAC9C6G,KAAK,CAAC9C,IAAI,CAAC,IAAI8oB,KAAK,CAACM,WAAW,CAACntB,CAAC,CAAC,CAAC,CAAC;IACvC;IAEA,OAAO6G,KAAK;EACd;EAEA,OAAO;IACLA,KAAK,EAAEqmB,QAAQ,CAAC,CAAC;IACjBvnB,OAAO,EAAEoe,SAAS,CAACpe,OAAO;IAC1B3H,IAAI,EAAEovB,sBAAsB,CAACrJ,SAAS,CAAC;IACvCsJ,QAAQ,EAAEtJ,SAAS,CAACld,KAAK;IACzBymB,YAAY,EAAEvJ;EAChB,CAAC;AACH;AAEA,SAASte,iBAAKA,CAACtF,CAAC,EAAE8sB,IAAI,EAAE;EACtB,IAAIjmB,GAAG,GAAG7G,CAAC;EAEX,IAAI6G,GAAG,CAACumB,MAAM,IAAIvmB,GAAG,CAACwmB,KAAK,EAAE;IAC3B,IAAIC,UAAU,GAAG,EAAE;IACnB,OAAOzmB,GAAG,EAAE;MACVymB,UAAU,CAAC1pB,IAAI,CAAC,IAAIipB,KAAK,CAAChmB,GAAG,EAAEimB,IAAI,CAAC,CAAC;MACrCjmB,GAAG,GAAGA,GAAG,CAACumB,MAAM,IAAIvmB,GAAG,CAACwmB,KAAK;MAE7BP,IAAI,GAAG,CAAC,CAAC,CAAC;IACZ;;IAEA;IACAQ,UAAU,CAAC,CAAC,CAAC,CAACA,UAAU,GAAGA,UAAU;IACrC,OAAOA,UAAU,CAAC,CAAC,CAAC;EACtB,CAAC,MAAM;IACL,OAAO,IAAIT,KAAK,CAAChmB,GAAG,EAAEimB,IAAI,CAAC;EAC7B;AACF;AAEA,SAASS,eAAeA,CAACC,MAAM,EAAE;EAC/B,IAAI,CAACA,MAAM,IAAI,CAACA,MAAM,CAACtvB,KAAK,EAAE;IAC5B,OAAO,CAAC,uDAAuD,EAAE,EAAE,CAAC;EACtE;EACA,IAAIuvB,aAAa,GAAGD,MAAM,CAACtvB,KAAK,CAACuuB,gBAAgB,CAAC;EAClD,IAAIiB,QAAQ,GAAG,WAAW;EAE1B,IAAID,aAAa,EAAE;IACjBC,QAAQ,GAAGD,aAAa,CAACA,aAAa,CAACxqB,MAAM,GAAG,CAAC,CAAC;IAClDuqB,MAAM,GAAGA,MAAM,CAAC3uB,OAAO,CACrB,CAAC4uB,aAAa,CAACA,aAAa,CAACxqB,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,IAAIyqB,QAAQ,GAAG,GAAG,EAChE,EACF,CAAC;IACDF,MAAM,GAAGA,MAAM,CAAC3uB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;EACjD;EACA,OAAO,CAAC6uB,QAAQ,EAAEF,MAAM,CAAC;AAC3B;;AAEA;AACA;AACA;AACA,SAASP,sBAAsBA,CAAC7rB,KAAK,EAAE;EACrC,IAAIvD,IAAI,GAAGuD,KAAK,CAACvD,IAAI,IAAIuD,KAAK,CAACvD,IAAI,CAACoF,MAAM,IAAI7B,KAAK,CAACvD,IAAI;EACxD,IAAI8vB,eAAe,GACjBvsB,KAAK,CAACwL,WAAW,CAAC/O,IAAI,IACtBuD,KAAK,CAACwL,WAAW,CAAC/O,IAAI,CAACoF,MAAM,IAC7B7B,KAAK,CAACwL,WAAW,CAAC/O,IAAI;EAExB,IAAI,CAACA,IAAI,IAAI,CAAC8vB,eAAe,EAAE;IAC7B,OAAO9vB,IAAI,IAAI8vB,eAAe;EAChC;EAEA,IAAI9vB,IAAI,KAAK,OAAO,EAAE;IACpB,OAAO8vB,eAAe;EACxB;EACA,OAAO9vB,IAAI;AACb;AAEA,gDAAe;EACbqI,iBAAiB,EAAjBA,iBAAiB;EACjBqnB,eAAe,EAAfA,eAAe;EACfnnB,aAAa,EAAbA,aAAa;EACbd,KAAK,EAALA,iBAAK;EACLunB,KAAK,EAALA,KAAK;EACLH,KAAK,EAALA;AACF,CAAC,E;;;;;AC9HiC;AAElC,SAASkB,UAAUA,CAACvlB,IAAI,EAAEwlB,QAAQ,EAAE;EAClC,IAAIllB,KAAK,GAAGN,IAAI,CAACM,KAAK;EACtB,IAAImlB,QAAQ,GAAGlsB,MAAQ,CAAC+G,KAAK,CAAC,IAAI,CAAC;EACnC,IAAIsgB,WAAW,GAAG4E,QAAQ,CAAC5E,WAAW;EACtC,IAAI8E,cAAc,GAAGnsB,MAAQ,CAACqnB,WAAW,CAAC,IAAI,CAAC;EAE/C,IAAI6E,QAAQ,GAAGC,cAAc,EAAE;IAC7B,OAAO,KAAK;EACd;EACA,OAAO,IAAI;AACb;AAEA,SAASC,eAAeA,CAACpnB,MAAM,EAAE;EAC/B,OAAO,UAAUyB,IAAI,EAAEwlB,QAAQ,EAAE;IAC/B,IAAII,UAAU,GAAGC,OAAO,CAAC7lB,IAAI,CAAC8lB,WAAW,CAAC;IAC1C,OAAO9lB,IAAI,CAAC8lB,WAAW;IACvB,IAAI7mB,IAAI,GAAGe,IAAI,CAACI,aAAa;IAC7B,OAAOJ,IAAI,CAACI,aAAa;IACzB,IAAI;MACF,IAAI7G,UAAY,CAACisB,QAAQ,CAACO,cAAc,CAAC,EAAE;QACzCP,QAAQ,CAACO,cAAc,CAACH,UAAU,EAAE3mB,IAAI,EAAEe,IAAI,CAAC;MACjD;IACF,CAAC,CAAC,OAAOrI,CAAC,EAAE;MACV6tB,QAAQ,CAACO,cAAc,GAAG,IAAI;MAC9BxnB,MAAM,CAACxF,KAAK,CAAC,8CAA8C,EAAEpB,CAAC,CAAC;IACjE;IACA,IAAI;MACF,IACE4B,UAAY,CAACisB,QAAQ,CAACQ,WAAW,CAAC,IAClCR,QAAQ,CAACQ,WAAW,CAACJ,UAAU,EAAE3mB,IAAI,EAAEe,IAAI,CAAC,EAC5C;QACA,OAAO,KAAK;MACd;IACF,CAAC,CAAC,OAAOrI,CAAC,EAAE;MACV6tB,QAAQ,CAACQ,WAAW,GAAG,IAAI;MAC3BznB,MAAM,CAACxF,KAAK,CAAC,oDAAoD,EAAEpB,CAAC,CAAC;IACvE;IACA,OAAO,IAAI;EACb,CAAC;AACH;AAEA,SAASsuB,mBAAmBA,CAAC1nB,MAAM,EAAE;EACnC,OAAO,UAAUyB,IAAI,EAAEwlB,QAAQ,EAAE;IAC/B,OAAO,CAACU,YAAY,CAAClmB,IAAI,EAAEwlB,QAAQ,EAAE,WAAW,EAAEjnB,MAAM,CAAC;EAC3D,CAAC;AACH;AAEA,SAAS4nB,eAAeA,CAAC5nB,MAAM,EAAE;EAC/B,OAAO,UAAUyB,IAAI,EAAEwlB,QAAQ,EAAE;IAC/B,OAAOU,YAAY,CAAClmB,IAAI,EAAEwlB,QAAQ,EAAE,UAAU,EAAEjnB,MAAM,CAAC;EACzD,CAAC;AACH;AAEA,SAAS6nB,WAAWA,CAACnL,KAAK,EAAE3O,IAAI,EAAE+Z,KAAK,EAAE;EACvC,IAAI,CAACpL,KAAK,EAAE;IACV,OAAO,CAACoL,KAAK;EACf;EAEA,IAAIzL,MAAM,GAAGK,KAAK,CAACL,MAAM;EAEzB,IAAI,CAACA,MAAM,IAAIA,MAAM,CAAChgB,MAAM,KAAK,CAAC,EAAE;IAClC,OAAO,CAACyrB,KAAK;EACf;EAEA,IAAIC,KAAK,EAAEC,QAAQ,EAAErtB,GAAG,EAAEstB,QAAQ;EAClC,IAAIC,UAAU,GAAGna,IAAI,CAAC1R,MAAM;EAC5B,IAAI8rB,WAAW,GAAG9L,MAAM,CAAChgB,MAAM;EAC/B,KAAK,IAAIpD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkvB,WAAW,EAAElvB,CAAC,EAAE,EAAE;IACpC8uB,KAAK,GAAG1L,MAAM,CAACpjB,CAAC,CAAC;IACjB+uB,QAAQ,GAAGD,KAAK,CAACC,QAAQ;IAEzB,IAAI,CAAChtB,MAAQ,CAACgtB,QAAQ,EAAE,QAAQ,CAAC,EAAE;MACjC,OAAO,CAACF,KAAK;IACf;IAEA,KAAK,IAAIvmB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2mB,UAAU,EAAE3mB,CAAC,EAAE,EAAE;MACnC5G,GAAG,GAAGoT,IAAI,CAACxM,CAAC,CAAC;MACb0mB,QAAQ,GAAG,IAAI9vB,MAAM,CAACwC,GAAG,CAAC;MAE1B,IAAIstB,QAAQ,CAAC5vB,IAAI,CAAC2vB,QAAQ,CAAC,EAAE;QAC3B,OAAO,IAAI;MACb;IACF;EACF;EACA,OAAO,KAAK;AACd;AAEA,SAASL,YAAYA,CAAClmB,IAAI,EAAEwlB,QAAQ,EAAEmB,WAAW,EAAEpoB,MAAM,EAAE;EACzD;EACA,IAAI8nB,KAAK,GAAG,KAAK;EACjB,IAAIM,WAAW,KAAK,WAAW,EAAE;IAC/BN,KAAK,GAAG,IAAI;EACd;EAEA,IAAI/Z,IAAI,EAAEsa,MAAM;EAChB,IAAI;IACFta,IAAI,GAAG+Z,KAAK,GAAGb,QAAQ,CAACrhB,aAAa,GAAGqhB,QAAQ,CAACxhB,YAAY;IAC7D4iB,MAAM,GAAGrtB,GAAK,CAACyG,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAACzG,GAAK,CAACyG,IAAI,EAAE,YAAY,CAAC,CAAC;;IAEvE;IACA;IACA,IAAI,CAACsM,IAAI,IAAIA,IAAI,CAAC1R,MAAM,KAAK,CAAC,EAAE;MAC9B,OAAO,CAACyrB,KAAK;IACf;IACA,IAAIO,MAAM,CAAChsB,MAAM,KAAK,CAAC,IAAI,CAACgsB,MAAM,CAAC,CAAC,CAAC,EAAE;MACrC,OAAO,CAACP,KAAK;IACf;IAEA,IAAIQ,YAAY,GAAGD,MAAM,CAAChsB,MAAM;IAChC,KAAK,IAAIpD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqvB,YAAY,EAAErvB,CAAC,EAAE,EAAE;MACrC,IAAI4uB,WAAW,CAACQ,MAAM,CAACpvB,CAAC,CAAC,EAAE8U,IAAI,EAAE+Z,KAAK,CAAC,EAAE;QACvC,OAAO,IAAI;MACb;IACF;EACF,CAAC,CAAC,OACA1uB;EACA,4BACA;IACA,IAAI0uB,KAAK,EAAE;MACTb,QAAQ,CAACrhB,aAAa,GAAG,IAAI;IAC/B,CAAC,MAAM;MACLqhB,QAAQ,CAACxhB,YAAY,GAAG,IAAI;IAC9B;IACA,IAAI8iB,QAAQ,GAAGT,KAAK,GAAG,eAAe,GAAG,cAAc;IACvD9nB,MAAM,CAACxF,KAAK,CACV,2CAA2C,GACzC+tB,QAAQ,GACR,2BAA2B,GAC3BA,QAAQ,GACR,GAAG,EACLnvB,CACF,CAAC;IACD,OAAO,CAAC0uB,KAAK;EACf;EACA,OAAO,KAAK;AACd;AAEA,SAASU,gBAAgBA,CAACxoB,MAAM,EAAE;EAChC,OAAO,UAAUyB,IAAI,EAAEwlB,QAAQ,EAAE;IAC/B,IAAIhuB,CAAC,EAAEsI,CAAC,EAAEknB,eAAe,EAAEjnB,GAAG,EAAEgnB,gBAAgB,EAAEE,eAAe,EAAEC,QAAQ;IAE3E,IAAI;MACFH,gBAAgB,GAAG,KAAK;MACxBC,eAAe,GAAGxB,QAAQ,CAACwB,eAAe;MAE1C,IAAI,CAACA,eAAe,IAAIA,eAAe,CAACpsB,MAAM,KAAK,CAAC,EAAE;QACpD,OAAO,IAAI;MACb;MAEAssB,QAAQ,GAAGC,gBAAgB,CAACnnB,IAAI,CAAC;MAEjC,IAAIknB,QAAQ,CAACtsB,MAAM,KAAK,CAAC,EAAE;QACzB,OAAO,IAAI;MACb;MAEAmF,GAAG,GAAGinB,eAAe,CAACpsB,MAAM;MAC5B,KAAKpD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGuI,GAAG,EAAEvI,CAAC,EAAE,EAAE;QACxByvB,eAAe,GAAG,IAAIvwB,MAAM,CAACswB,eAAe,CAACxvB,CAAC,CAAC,EAAE,IAAI,CAAC;QAEtD,KAAKsI,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGonB,QAAQ,CAACtsB,MAAM,EAAEkF,CAAC,EAAE,EAAE;UACpCinB,gBAAgB,GAAGE,eAAe,CAACrwB,IAAI,CAACswB,QAAQ,CAACpnB,CAAC,CAAC,CAAC;UAEpD,IAAIinB,gBAAgB,EAAE;YACpB,OAAO,KAAK;UACd;QACF;MACF;IACF,CAAC,CAAC,OACAzkB;IACA,4BACA;MACAkjB,QAAQ,CAACwB,eAAe,GAAG,IAAI;MAC/BzoB,MAAM,CAACxF,KAAK,CACV,mGACF,CAAC;IACH;IAEA,OAAO,IAAI;EACb,CAAC;AACH;AAEA,SAASouB,gBAAgBA,CAACnnB,IAAI,EAAE;EAC9B,IAAIuJ,IAAI,GAAGvJ,IAAI,CAACuJ,IAAI;EACpB,IAAI2d,QAAQ,GAAG,EAAE;;EAEjB;EACA;EACA;EACA,IAAI3d,IAAI,CAACwR,WAAW,EAAE;IACpB,IAAIkK,UAAU,GAAG1b,IAAI,CAACwR,WAAW;IAAC,IAAApa,SAAA,GAAAC,oCAAA,CACdqkB,UAAU;MAAApkB,KAAA;IAAA;MAA9B,KAAAF,SAAA,CAAA3D,CAAA,MAAA6D,KAAA,GAAAF,SAAA,CAAAvJ,CAAA,IAAA0J,IAAA,GAAgC;QAAA,IAArBma,KAAK,GAAApa,KAAA,CAAAhK,KAAA;QACdqwB,QAAQ,CAAC3rB,IAAI,CAAChC,GAAK,CAAC0hB,KAAK,EAAE,mBAAmB,CAAC,CAAC;MAClD;IAAC,SAAAzc,GAAA;MAAAmC,SAAA,CAAAhJ,CAAA,CAAA6G,GAAA;IAAA;MAAAmC,SAAA,CAAA3K,CAAA;IAAA;EACH;EACA,IAAIuT,IAAI,CAAC0R,KAAK,EAAE;IACdiM,QAAQ,CAAC3rB,IAAI,CAAChC,GAAK,CAACgQ,IAAI,EAAE,yBAAyB,CAAC,CAAC;EACvD;EACA,IAAIA,IAAI,CAACpM,OAAO,EAAE;IAChB+pB,QAAQ,CAAC3rB,IAAI,CAAChC,GAAK,CAACgQ,IAAI,EAAE,cAAc,CAAC,CAAC;EAC5C;EACA,OAAO2d,QAAQ;AACjB;;;;;;;;;AC3MiD;;AAEjD;AACA;AACA;AACA;AACA;AAJA,IAKqBE,QAAQ;EAC3B;AACF;AACA;AACA;AACA;AACA;AACA;EACE,SAAAA,SAAY3f,KAAK,EAAEvM,OAAO,EAAE;IAAAsM,uBAAA,OAAA4f,QAAA;IAC1B,IAAI,CAAC3f,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACvM,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACmc,UAAU,GAAG,EAAE;IACpB,IAAI,CAAC3X,UAAU,GAAG,CAAC,CAAC;EACtB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE,OAAAsI,oBAAA,CAAAof,QAAA;IAAAptB,GAAA;IAAAnD,KAAA,EAOA,SAAAoR,SAASA,CAAC/M,OAAO,EAAE;MAAA,IAAAmsB,WAAA;MACjB,CAAAA,WAAA,OAAI,CAAC5f,KAAK,cAAA4f,WAAA,eAAVA,WAAA,CAAYpf,SAAS,CAAC/M,OAAO,CAAC;MAC9B,IAAMgN,UAAU,GAAG,IAAI,CAAChN,OAAO;MAC/B,IAAI,CAACA,OAAO,GAAG6F,KAAK,CAACmH,UAAU,EAAEhN,OAAO,CAAC;MACzC,OAAO,IAAI;IACb;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAXE;IAAAlB,GAAA;IAAAnD,KAAA,EAYA,SAAA2gB,YAAYA,CAACI,SAAS,EAAE;MACtB,IAAI7hB,UAAU,CAAC6hB,SAAS,CAAC,EAAE;QACzB,IAAI,CAACP,UAAU,CAAC9b,IAAI,CAACqc,SAAS,CAAC;MACjC;MACA,OAAO,IAAI;IACb;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAbE;IAAA5d,GAAA;IAAAnD,KAAA,EAcA,SAAAoN,GAAGA,CAACjE,IAAI,EAAEV,QAAQ,EAAE;MAAA,IAAAwR,KAAA;MAClBxR,QAAQ,GAAGvJ,UAAU,CAACuJ,QAAQ,CAAC,GAAGA,QAAQ,GAAG,YAAM,CAAC,CAAC;MAErD,IAAI,CAAC,IAAI,CAACpE,OAAO,CAACosB,OAAO,EAAE;QACzB,OAAOhoB,QAAQ,CAAC,IAAI5J,KAAK,CAAC,wBAAwB,CAAC,EAAE,IAAI,CAAC;MAC5D;MAEA,IAAI,CAAC+R,KAAK,CAAC8f,cAAc,CAACvnB,IAAI,CAAC;MAC/B,IAAMwnB,aAAa,GAAGxnB,IAAI,CAACxB,GAAG;MAC9B,IAAI,CAACipB,gBAAgB,CAACznB,IAAI,EAAE,UAACxB,GAAG,EAAEhH,CAAC,EAAK;QACtC,IAAIgH,GAAG,EAAE;UACPsS,KAAI,CAACrJ,KAAK,CAACigB,iBAAiB,CAAC1nB,IAAI,CAAC;UAClC,OAAOV,QAAQ,CAACd,GAAG,EAAE,IAAI,CAAC;QAC5B;QACAsS,KAAI,CAACrJ,KAAK,CAACkgB,OAAO,CAACnwB,CAAC,EAAE8H,QAAQ,EAAEkoB,aAAa,EAAExnB,IAAI,CAAC;MACtD,CAAC,CAAC;IACJ;;IAEA;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EATE;IAAAhG,GAAA;IAAAnD,KAAA,EAUA,SAAA4wB,gBAAgBA,CAACznB,IAAI,EAAEV,QAAQ,EAAE;MAC/B,IAAIsoB,cAAc,GAAG,CAAC,CAAC;MACvB,IAAMC,gBAAgB,GAAG,IAAI,CAACxQ,UAAU,CAACzc,MAAM;MAC/C,IAAMyc,UAAU,GAAG,IAAI,CAACA,UAAU;MAClC,IAAMnc,OAAO,GAAG,IAAI,CAACA,OAAO;MAE5B,IAAM4sB,KAAI,GAAG,SAAPA,IAAIA,CAAItpB,GAAG,EAAEhH,CAAC,EAAK;QACvB,IAAIgH,GAAG,EAAE;UACPc,QAAQ,CAACd,GAAG,EAAE,IAAI,CAAC;UACnB;QACF;QAEAopB,cAAc,EAAE;QAEhB,IAAIA,cAAc,KAAKC,gBAAgB,EAAE;UACvCvoB,QAAQ,CAAC,IAAI,EAAE9H,CAAC,CAAC;UACjB;QACF;QAEA6f,UAAU,CAACuQ,cAAc,CAAC,CAACpwB,CAAC,EAAE0D,OAAO,EAAE4sB,KAAI,CAAC;MAC9C,CAAC;MAEDA,KAAI,CAAC,IAAI,EAAE9nB,IAAI,CAAC;IAClB;EAAC;AAAA;;;;;;;;;;AC1H+B;;AAElC;AACA;AACA;AACA;AACA;AACA;AALA,IAMM+nB,KAAK;EACT;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAAAA,MAAYC,WAAW,EAAEzX,GAAG,EAAEhS,MAAM,EAAErD,OAAO,EAAE+sB,MAAM,EAAE;IAAAzgB,oBAAA,OAAAugB,KAAA;IACrD,IAAI,CAACC,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACzX,GAAG,GAAGA,GAAG;IACd,IAAI,CAAChS,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACrD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAAC+sB,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,UAAU,GAAG,EAAE;IACpB,IAAI,CAACC,YAAY,GAAG,EAAE;IACtB,IAAI,CAACC,eAAe,GAAG,EAAE;IACzB,IAAI,CAACC,UAAU,GAAG,EAAE;IACpB,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB,IAAI,CAACC,cAAc,GAAG,IAAI;EAC5B;;EAEA;AACF;AACA;AACA;AACA;EAJE,OAAAxgB,iBAAA,CAAA+f,KAAA;IAAA/tB,GAAA;IAAAnD,KAAA,EAKA,SAAAoR,SAASA,CAAC/M,OAAO,EAAE;MAAA,IAAAutB,SAAA;MACjB,CAAAA,SAAA,OAAI,CAAClY,GAAG,cAAAkY,SAAA,eAARA,SAAA,CAAUxgB,SAAS,CAAC/M,OAAO,CAAC;MAC5B,IAAMgN,UAAU,GAAG,IAAI,CAAChN,OAAO;MAC/B,IAAI,CAACA,OAAO,GAAG3B,KAAO,CAAC2O,UAAU,EAAEhN,OAAO,CAAC;MAC3C,OAAO,IAAI;IACb;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EARE;IAAAlB,GAAA;IAAAnD,KAAA,EASA,SAAA6xB,YAAYA,CAACC,SAAS,EAAE;MACtB,IAAIpvB,UAAY,CAACovB,SAAS,CAAC,EAAE;QAC3B,IAAI,CAACT,UAAU,CAAC3sB,IAAI,CAACotB,SAAS,CAAC;MACjC;MACA,OAAO,IAAI;IACb;EAAC;IAAA3uB,GAAA;IAAAnD,KAAA,EAED,SAAA0wB,cAAcA,CAACvnB,IAAI,EAAE;MACnB,IAAI,CAACmoB,YAAY,CAAC5sB,IAAI,CAACyE,IAAI,CAAC;IAC9B;EAAC;IAAAhG,GAAA;IAAAnD,KAAA,EAED,SAAA6wB,iBAAiBA,CAAC1nB,IAAI,EAAE;MACtB,IAAM4oB,GAAG,GAAG,IAAI,CAACT,YAAY,CAACvsB,OAAO,CAACoE,IAAI,CAAC;MAC3C,IAAI4oB,GAAG,KAAK,CAAC,CAAC,EAAE;QACd,IAAI,CAACT,YAAY,CAAC9f,MAAM,CAACugB,GAAG,EAAE,CAAC,CAAC;MAClC;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAVE;IAAA5uB,GAAA;IAAAnD,KAAA,EAWA,SAAA8wB,OAAOA,CAAC3nB,IAAI,EAAEV,QAAQ,EAAEkoB,aAAa,EAAEqB,YAAY,EAAE;MAAA,IAAA/X,KAAA;MACnD,IAAI,CAACxR,QAAQ,IAAI,CAAC/F,UAAY,CAAC+F,QAAQ,CAAC,EAAE;QACxCA,QAAQ,GAAG,SAAXA,QAAQA,CAAA,EAAe;UACrB;QACF,CAAC;MACH;MACA,IAAMY,IAAI,GAAGF,IAAI,CAACE,IAAI;MACtB,IAAM4oB,eAAe,GAAG,IAAI,CAACC,gBAAgB,CAAC7oB,IAAI,CAAC;MACnD,IAAI4oB,eAAe,CAACE,IAAI,EAAE;QACxB,IAAI,CAACtB,iBAAiB,CAACmB,YAAY,CAAC;QACpCvpB,QAAQ,CAACwpB,eAAe,CAACtqB,GAAG,CAAC;QAC7B;MACF;MACA,IAAI,CAACyqB,SAAS,CAAC/oB,IAAI,EAAEsnB,aAAa,CAAC;MACnC,IAAI,CAACE,iBAAiB,CAACmB,YAAY,CAAC;MACpC,IAAI,CAAC,IAAI,CAAC3tB,OAAO,CAACguB,QAAQ,EAAE;QAC1B5pB,QAAQ,CAAC,IAAI5J,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACxC;MACF;MAEA,IAAI,IAAI,CAACuyB,MAAM,IAAI/nB,IAAI,CAACqJ,IAAI,EAAE;QAC5BvJ,IAAI,CAACmpB,QAAQ,GAAG,IAAI,CAAClB,MAAM,CAAC9e,OAAO,CAAC,IAAI,EAAEjJ,IAAI,CAAC7H,IAAI,EAAE;UACnDZ,IAAI,EAAE,YAAY;UAClB6I,KAAK,EAAEN,IAAI,CAACM;QACd,CAAC,CAAC;QAEF,IAAIN,IAAI,CAACmpB,QAAQ,EAAE;UACjB5vB,iBAAmB,CAACyG,IAAI,CAACE,IAAI,EAAE,CAC7B;YAAElG,GAAG,EAAE,WAAW;YAAEnD,KAAK,EAAEmJ,IAAI,CAACmpB;UAAS,CAAC,CAC3C,CAAC;QACJ;MACF;MAEA,IAAI,CAACf,eAAe,CAAC7sB,IAAI,CAAC2E,IAAI,CAAC;MAC/B,IAAI;QACF,IAAI,CAACkpB,eAAe,CAAClpB,IAAI,EAAE,UAAC1B,GAAG,EAAEC,IAAI,EAAEoM,OAAO,EAAK;UACjDiG,KAAI,CAACuY,sBAAsB,CAACnpB,IAAI,CAAC;UAEjC,IAAIF,IAAI,CAACmpB,QAAQ,EAAE;YACjBrY,KAAI,CAACmX,MAAM,CAACqB,mBAAmB,CAACtpB,IAAI,CAACmpB,QAAQ,EAAE3qB,GAAG,EAAEC,IAAI,EAAEoM,OAAO,CAAC;UACpE;UAEAvL,QAAQ,CAACd,GAAG,EAAEC,IAAI,CAAC;QACrB,CAAC,CAAC;MACJ,CAAC,CAAC,OAAOD,GAAG,EAAE;QACZ,IAAI,CAAC6qB,sBAAsB,CAACnpB,IAAI,CAAC;QAEjC,IAAIF,IAAI,CAACmpB,QAAQ,EAAE;UAAA,IAAAI,YAAA;UACjB,CAAAA,YAAA,OAAI,CAACtB,MAAM,cAAAsB,YAAA,eAAXA,YAAA,CAAaC,OAAO,CAACxpB,IAAI,CAACmpB,QAAQ,CAAC;QACrC;QAEA7pB,QAAQ,CAACd,GAAG,CAAC;MACf;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAxE,GAAA;IAAAnD,KAAA,EAMA,SAAA4yB,IAAIA,CAACnqB,QAAQ,EAAE;MAAA,IAAA0S,MAAA;MACb,IAAI,CAACzY,UAAY,CAAC+F,QAAQ,CAAC,EAAE;QAC3B;MACF;MACA,IAAI,CAACipB,YAAY,GAAGjpB,QAAQ;MAC5B,IAAI,IAAI,CAACoqB,cAAc,CAAC,CAAC,EAAE;QACzB;MACF;MACA,IAAI,IAAI,CAAClB,cAAc,EAAE;QACvB,IAAI,CAACA,cAAc,GAAGmB,aAAa,CAAC,IAAI,CAACnB,cAAc,CAAC;MAC1D;MACA,IAAI,CAACA,cAAc,GAAGoB,WAAW,CAAC,YAAM;QACtC5X,MAAI,CAAC0X,cAAc,CAAC,CAAC;MACvB,CAAC,EAAE,GAAG,CAAC;IACT;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA1vB,GAAA;IAAAnD,KAAA,EAQA,SAAAkyB,gBAAgBA,CAAC/oB,IAAI,EAAE;MACrB,IAAInI,CAAC,GAAG,IAAI;MACZ,KAAK,IAAIL,CAAC,GAAG,CAAC,EAAEuI,GAAG,GAAG,IAAI,CAACmoB,UAAU,CAACttB,MAAM,EAAEpD,CAAC,GAAGuI,GAAG,EAAEvI,CAAC,EAAE,EAAE;QAC1DK,CAAC,GAAG,IAAI,CAACqwB,UAAU,CAAC1wB,CAAC,CAAC,CAACwI,IAAI,EAAE,IAAI,CAAC9E,OAAO,CAAC;QAC1C,IAAI,CAACrD,CAAC,IAAIA,CAAC,CAAC2G,GAAG,KAAKlE,SAAS,EAAE;UAC7B,OAAO;YAAE0uB,IAAI,EAAE,IAAI;YAAExqB,GAAG,EAAE3G,CAAC,CAAC2G;UAAI,CAAC;QACnC;MACF;MACA,OAAO;QAAEwqB,IAAI,EAAE,KAAK;QAAExqB,GAAG,EAAE;MAAK,CAAC;IACnC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAxE,GAAA;IAAAnD,KAAA,EAOA,SAAAuyB,eAAeA,CAACppB,IAAI,EAAEV,QAAQ,EAAE;MAAA,IAAAwT,MAAA;MAC9B,IAAM+W,iBAAiB,GAAG,IAAI,CAAC7B,WAAW,CAAC8B,UAAU,CAAC9pB,IAAI,CAAC;MAC3D,IAAI6pB,iBAAiB,CAACC,UAAU,EAAE;QAChC,IAAI,CAACvZ,GAAG,CAACyP,QAAQ,CAAChgB,IAAI,EAAE,UAACxB,GAAG,EAAEC,IAAI,EAAEoM,OAAO,EAAK;UAC9C,IAAIrM,GAAG,EAAE;YACPsU,MAAI,CAACiX,WAAW,CAACvrB,GAAG,EAAEwB,IAAI,EAAEV,QAAQ,CAAC;UACvC,CAAC,MAAM;YACLA,QAAQ,CAACd,GAAG,EAAEC,IAAI,EAAEoM,OAAO,CAAC;UAC9B;QACF,CAAC,CAAC;MACJ,CAAC,MAAM,IAAIgf,iBAAiB,CAAC9wB,KAAK,EAAE;QAClCuG,QAAQ,CAACuqB,iBAAiB,CAAC9wB,KAAK,CAAC;MACnC,CAAC,MAAM;QACL,IAAI,CAACwX,GAAG,CAACyP,QAAQ,CAAC6J,iBAAiB,CAAClmB,OAAO,EAAErE,QAAQ,CAAC;MACxD;IACF;;IAEA;EAAA;IAAAtF,GAAA;IAAAnD,KAAA;IAYA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;IACE,SAAAkzB,WAAWA,CAACvrB,GAAG,EAAEwB,IAAI,EAAEV,QAAQ,EAAE;MAC/B,IAAI0qB,WAAW,GAAG,KAAK;MACvB,IAAI,IAAI,CAAC9uB,OAAO,CAAC+uB,aAAa,EAAE;QAC9B,KAAK,IAAIzyB,CAAC,GAAG,CAAC,EAAEuI,GAAG,GAAGgoB,KAAK,CAACmC,gBAAgB,CAACtvB,MAAM,EAAEpD,CAAC,GAAGuI,GAAG,EAAEvI,CAAC,EAAE,EAAE;UACjE,IAAIgH,GAAG,CAAC3B,IAAI,KAAKkrB,KAAK,CAACmC,gBAAgB,CAAC1yB,CAAC,CAAC,EAAE;YAC1CwyB,WAAW,GAAG,IAAI;YAClB;UACF;QACF;QACA,IAAIA,WAAW,IAAIzwB,cAAgB,CAAC,IAAI,CAAC2B,OAAO,CAACivB,UAAU,CAAC,EAAE;UAC5DnqB,IAAI,CAACoqB,OAAO,GAAGpqB,IAAI,CAACoqB,OAAO,GAAGpqB,IAAI,CAACoqB,OAAO,GAAG,CAAC,GAAG,CAAC;UAClD,IAAIpqB,IAAI,CAACoqB,OAAO,GAAG,IAAI,CAAClvB,OAAO,CAACivB,UAAU,EAAE;YAC1CH,WAAW,GAAG,KAAK;UACrB;QACF;MACF;MACA,IAAIA,WAAW,EAAE;QACf,IAAI,CAACK,gBAAgB,CAACrqB,IAAI,EAAEV,QAAQ,CAAC;MACvC,CAAC,MAAM;QACLA,QAAQ,CAACd,GAAG,CAAC;MACf;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAxE,GAAA;IAAAnD,KAAA,EAOA,SAAAwzB,gBAAgBA,CAACrqB,IAAI,EAAEV,QAAQ,EAAE;MAAA,IAAA0T,MAAA;MAC/B,IAAI,CAACqV,UAAU,CAAC9sB,IAAI,CAAC;QAAEyE,IAAI,EAAJA,IAAI;QAAEV,QAAQ,EAARA;MAAS,CAAC,CAAC;MAExC,IAAI,CAAC,IAAI,CAACgpB,WAAW,EAAE;QACrB,IAAI,CAACA,WAAW,GAAGsB,WAAW,CAAC,YAAM;UACnC,OAAO5W,MAAI,CAACqV,UAAU,CAACztB,MAAM,EAAE;YAC7B,IAAM0vB,WAAW,GAAGtX,MAAI,CAACqV,UAAU,CAACpa,KAAK,CAAC,CAAC;YAC3C+E,MAAI,CAACoW,eAAe,CAACkB,WAAW,CAACtqB,IAAI,EAAEsqB,WAAW,CAAChrB,QAAQ,CAAC;UAC9D;QACF,CAAC,EAAE,IAAI,CAACpE,OAAO,CAAC+uB,aAAa,CAAC;MAChC;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAAjwB,GAAA;IAAAnD,KAAA,EAQA,SAAAwyB,sBAAsBA,CAACrpB,IAAI,EAAE;MAC3B,IAAM4oB,GAAG,GAAG,IAAI,CAACR,eAAe,CAACxsB,OAAO,CAACoE,IAAI,CAAC;MAC9C,IAAI4oB,GAAG,KAAK,CAAC,CAAC,EAAE;QACd,IAAI,CAACR,eAAe,CAAC/f,MAAM,CAACugB,GAAG,EAAE,CAAC,CAAC;QACnC,IAAI,CAACc,cAAc,CAAC,CAAC;MACvB;IACF;EAAC;IAAA1vB,GAAA;IAAAnD,KAAA,EAED,SAAAoyB,SAASA,CAAC/oB,IAAI,EAAEsnB,aAAa,EAAE;MAC7B,IAAI,IAAI,CAACjpB,MAAM,IAAI,IAAI,CAACrD,OAAO,CAACqvB,OAAO,EAAE;QACvC,IAAIptB,OAAO,GACTqqB,aAAa,IACbjuB,GAAK,CAAC2G,IAAI,EAAE,8BAA8B,CAAC,IAC3C3G,GAAK,CAAC2G,IAAI,EAAE,sCAAsC,CAAC;QACrD,IAAI/C,OAAO,EAAE;UACX,IAAI,CAACoB,MAAM,CAACxF,KAAK,CAACoE,OAAO,CAAC;UAC1B;QACF;QACAA,OAAO,GAAG5D,GAAK,CAAC2G,IAAI,EAAE,mBAAmB,CAAC;QAC1C,IAAI/C,OAAO,EAAE;UACX,IAAI,CAACoB,MAAM,CAAC0F,GAAG,CAAC9G,OAAO,CAAC;QAC1B;MACF;IACF;EAAC;IAAAnD,GAAA;IAAAnD,KAAA,EAED,SAAA6yB,cAAcA,CAAA,EAAG;MACf,IACEnwB,UAAY,CAAC,IAAI,CAACgvB,YAAY,CAAC,IAC/B,IAAI,CAACJ,YAAY,CAACvtB,MAAM,KAAK,CAAC,IAC9B,IAAI,CAACwtB,eAAe,CAACxtB,MAAM,KAAK,CAAC,EACjC;QACA,IAAI,IAAI,CAAC4tB,cAAc,EAAE;UACvB,IAAI,CAACA,cAAc,GAAGmB,aAAa,CAAC,IAAI,CAACnB,cAAc,CAAC;QAC1D;QACA,IAAI,CAACD,YAAY,CAAC,CAAC;QACnB,OAAO,IAAI;MACb;MACA,OAAO,KAAK;IACd;EAAC;AAAA;AAAAjU,oBAAA,CAhTGyT,KAAK,sBAoMiB,CACxB,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,cAAc,EACd,OAAO,EACP,WAAW,CACZ;AAsGH,0CAAeA,KAAK,E;;;;;;;;;;AC3TpB;AACA;AACA;AACA;AACA;AAJA,IAKMyC,WAAW;EAOf,SAAAA,YAAA,EAA0B;IAAA,IAAdtvB,OAAO,GAAAyJ,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,CAAC,CAAC;IAAA6C,0BAAA,OAAAgjB,WAAA;IACtB,IAAI,CAAC5X,SAAS,GAAG/P,IAAI,CAACzK,GAAG,CAAC,CAAC;IAC3B,IAAI,CAACqyB,OAAO,GAAG,CAAC;IAChB,IAAI,CAACC,aAAa,GAAG,CAAC;IACtB,IAAI,CAACvU,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACwU,eAAe,GAAG,CAAC,CAAC;IACzB,IAAI,CAACC,eAAe,CAAC1vB,OAAO,CAAC;EAC/B;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE,OAAA8M,uBAAA,CAAAwiB,WAAA;IAAAxwB,GAAA;IAAAnD,KAAA,EAQA,SAAA+zB,eAAeA,CAAA,EAAe;MAAA,IAAd1vB,OAAO,GAAAyJ,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,CAAC,CAAC;MAC1B,IAAQiO,SAAS,GAA+B1X,OAAO,CAA/C0X,SAAS;QAAEkO,QAAQ,GAAqB5lB,OAAO,CAApC4lB,QAAQ;QAAE+J,cAAc,GAAK3vB,OAAO,CAA1B2vB,cAAc;MAE3C,IAAIjY,SAAS,KAAKtY,SAAS,EAAE;QAC3BkwB,WAAW,CAACM,cAAc,CAAClY,SAAS,GAAGA,SAAS;MAClD;MACA,IAAIkO,QAAQ,KAAKxmB,SAAS,EAAE;QAC1BkwB,WAAW,CAACM,cAAc,CAAChK,QAAQ,GAAGA,QAAQ;MAChD;MACA,IAAI+J,cAAc,KAAKvwB,SAAS,EAAE;QAChCkwB,WAAW,CAACM,cAAc,CAACD,cAAc,GAAGA,cAAc;MAC5D;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAdE;IAAA7wB,GAAA;IAAAnD,KAAA,EAeA,SAAAizB,UAAUA,CAAC9pB,IAAI,EAAoB;MAAA,IAAlB5H,GAAG,GAAAuM,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG9B,IAAI,CAACzK,GAAG,CAAC,CAAC;MAC/B,IAAM2yB,WAAW,GAAG3yB,GAAG,GAAG,IAAI,CAACwa,SAAS;MACxC,IAAImY,WAAW,GAAG,CAAC,IAAIA,WAAW,IAAI,KAAK,EAAE;QAC3C,IAAI,CAACnY,SAAS,GAAGxa,GAAG;QACpB,IAAI,CAACsyB,aAAa,GAAG,CAAC;MACxB;MAEA,IAAMM,eAAe,GAAGR,WAAW,CAACM,cAAc,CAAChK,QAAQ;MAC3D,IAAMmK,qBAAqB,GAAGT,WAAW,CAACM,cAAc,CAACD,cAAc;MAEvE,IAAIK,SAAS,CAAClrB,IAAI,EAAEgrB,eAAe,EAAE,IAAI,CAACP,OAAO,CAAC,EAAE;QAClD,OAAOU,eAAe,CACpB,IAAI,CAAChV,QAAQ,EACb,IAAI,CAACwU,eAAe,KAAApnB,MAAA,CACjBynB,eAAe,yBAClB,KACF,CAAC;MACH;MAEA,IAAIE,SAAS,CAAClrB,IAAI,EAAEirB,qBAAqB,EAAE,IAAI,CAACP,aAAa,CAAC,EAAE;QAC9D,OAAOS,eAAe,CACpB,IAAI,CAAChV,QAAQ,EACb,IAAI,CAACwU,eAAe,KAAApnB,MAAA,CACjB0nB,qBAAqB,gCACxB,KACF,CAAC;MACH;MAEA,IAAI,CAACR,OAAO,IAAI,CAAC;MACjB,IAAI,CAACC,aAAa,IAAI,CAAC;MAEvB,IAAMU,gBAAgB,GAAG,CAACF,SAAS,CAAClrB,IAAI,EAAEgrB,eAAe,EAAE,IAAI,CAACP,OAAO,CAAC;MACxE,IAAMY,SAAS,GAAGD,gBAAgB;MAClC,IAAMtB,UAAU,GACdsB,gBAAgB,IAChB,CAACF,SAAS,CAAClrB,IAAI,EAAEirB,qBAAqB,EAAE,IAAI,CAACP,aAAa,CAAC;MAE7D,OAAOS,eAAe,CACpB,IAAI,CAAChV,QAAQ,EACb,IAAI,CAACwU,eAAe,EACpB,IAAI,EACJb,UAAU,EACVkB,eAAe,EACfC,qBAAqB,EACrBI,SACF,CAAC;IACH;EAAC;IAAArxB,GAAA;IAAAnD,KAAA,EAED,SAAAy0B,kBAAkBA,CAACnV,QAAQ,EAAEjb,OAAO,EAAE;MACpC,IAAI,CAACib,QAAQ,GAAGA,QAAQ;MACxB,IAAI,CAACwU,eAAe,GAAGzvB,OAAO;IAChC;EAAC;AAAA;AAGH;AAAAoZ,0BAAA,CA3GMkW,WAAW,oBACS;EACtB5X,SAAS,EAAE/P,IAAI,CAACzK,GAAG,CAAC,CAAC;EACrB0oB,QAAQ,EAAExmB,SAAS;EACnBuwB,cAAc,EAAEvwB;AAClB,CAAC;AAwGH,SAAS4wB,SAASA,CAAClrB,IAAI,EAAEurB,KAAK,EAAEd,OAAO,EAAE;EACvC,OAAO,CAACzqB,IAAI,CAACwrB,eAAe,IAAID,KAAK,IAAI,CAAC,IAAId,OAAO,GAAGc,KAAK;AAC/D;AAEA,SAASJ,eAAeA,CACtBhV,QAAQ,EACRjb,OAAO,EACPnC,KAAK,EACL+wB,UAAU,EACVkB,eAAe,EACfS,WAAW,EACXJ,SAAS,EACT;EACA,IAAI1nB,OAAO,GAAG,IAAI;EAClB,IAAM+nB,WAAW,GAAG3yB,KAAK,GAAG,IAAIrD,KAAK,CAACqD,KAAK,CAAC,GAAG,IAAI;EAEnD,IAAI,CAAC2yB,WAAW,IAAI,CAAC5B,UAAU,EAAE;IAC/BnmB,OAAO,GAAGgoB,gBAAgB,CACxBxV,QAAQ,EACRjb,OAAO,EACP8vB,eAAe,EACfS,WAAW,EACXJ,SACF,CAAC;EACH;EAEA,OAAO;IAAEtyB,KAAK,EAAE2yB,WAAW;IAAE5B,UAAU,EAAVA,UAAU;IAAEnmB,OAAO,EAAPA;EAAQ,CAAC;AACpD;AAEA,SAASgoB,gBAAgBA,CACvBxV,QAAQ,EACRjb,OAAO,EACP8vB,eAAe,EACfS,WAAW,EACXJ,SAAS,EACT;EACA,IAAMrR,WAAW,GACf9e,OAAO,CAAC8e,WAAW,IAAK9e,OAAO,CAACyI,OAAO,IAAIzI,OAAO,CAACyI,OAAO,CAACqW,WAAY;EACzE,IAAM4R,GAAG,GAAGP,SAAS,GACjB,8DAA8D,GAC9D,qDAAqD;EACzD,IAAMrrB,IAAI,GAAG;IACXuJ,IAAI,EAAE;MACJpM,OAAO,EAAE;QACPoM,IAAI,EAAEqiB,GAAG;QACTC,KAAK,EAAE;UACL/K,QAAQ,EAAEkK,eAAe;UACzBH,cAAc,EAAEY;QAClB;MACF;IACF,CAAC;IACDxV,QAAQ,EAAE,YAAY;IACtB+D,WAAW,EAAEA,WAAW;IACxB9a,QAAQ,EAAE;MACRmS,OAAO,EACJnW,OAAO,CAACgE,QAAQ,IAAIhE,OAAO,CAACgE,QAAQ,CAACmS,OAAO,IAAKnW,OAAO,CAACmW;IAC9D;EACF,CAAC;EACD,IAAI8E,QAAQ,KAAK,SAAS,EAAE;IAC1BnW,IAAI,CAACmW,QAAQ,GAAG,SAAS;IACzBnW,IAAI,CAAC8rB,SAAS,GAAG,YAAY;IAC7B9rB,IAAI,CAACd,QAAQ,CAAC1J,IAAI,GAAG,oBAAoB;EAC3C,CAAC,MAAM,IAAI2gB,QAAQ,KAAK,QAAQ,EAAE;IAChCnW,IAAI,CAAC8rB,SAAS,GAAG5wB,OAAO,CAAC4wB,SAAS,IAAI,SAAS;IAC/C9rB,IAAI,CAACd,QAAQ,CAAC1J,IAAI,GAAG0F,OAAO,CAACgE,QAAQ,CAAC1J,IAAI;EAC5C,CAAC,MAAM,IAAI2gB,QAAQ,KAAK,cAAc,EAAE;IACtCnW,IAAI,CAAC8rB,SAAS,GAAG5wB,OAAO,CAAC4wB,SAAS,IAAI,cAAc;IACpD9rB,IAAI,CAACd,QAAQ,CAAC1J,IAAI,GAAG0F,OAAO,CAACgE,QAAQ,CAAC1J,IAAI;EAC5C;EACA,OAAOwK,IAAI;AACb;AAEA,gDAAewqB,WAAW,E;;AC1LW;AACN;AACY;AACT;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASuB,OAAOA,CAAC7wB,OAAO,EAAEqV,GAAG,EAAEhS,MAAM,EAAEytB,SAAS,EAAE1kB,OAAO,EAAE2gB,MAAM,EAAE9R,QAAQ,EAAE;EAC3E,IAAI,CAACjb,OAAO,GAAG3B,KAAO,CAAC2B,OAAO,CAAC;EAC/B,IAAI,CAACqD,MAAM,GAAGA,MAAM;EACpBwtB,OAAO,CAAC/D,WAAW,CAAC4C,eAAe,CAAC,IAAI,CAAC1vB,OAAO,CAAC;EACjD6wB,OAAO,CAAC/D,WAAW,CAACsD,kBAAkB,CAACnV,QAAQ,EAAE,IAAI,CAACjb,OAAO,CAAC;EAC9D,IAAI,CAACqV,GAAG,GAAGA,GAAG;EACd,IAAI,CAAC9I,KAAK,GAAG,IAAIsgB,KAAK,CACpBgE,OAAO,CAAC/D,WAAW,EACnBzX,GAAG,EACHhS,MAAM,EACN,IAAI,CAACrD,OAAO,EACZ+sB,MACF,CAAC;EAED,IAAI,CAAC3gB,OAAO,GAAGA,OAAO;;EAEtB;EACA;EACA,IAAI4S,MAAM,GAAG,IAAI,CAAChf,OAAO,CAACgf,MAAM,IAAI,IAAI;EACxC,IAAI+R,cAAc,CAAC/R,MAAM,CAAC,EAAE;IAC1B,IAAI,CAACA,MAAM,GAAGA,MAAM;IACpB;IACA,IAAI,CAAChf,OAAO,CAACgf,MAAM,GAAG,4BAA4B;IAClD,IAAI,CAAChf,OAAO,CAACgxB,kBAAkB,CAAChS,MAAM,GAAG,4BAA4B;EACvE,CAAC,MAAM;IACL,IAAI,CAACA,MAAM,GAAG,IAAI;EACpB;EAEA,IAAI,CAAChb,QAAQ,GAAG,IAAIkoB,QAAQ,CAAC,IAAI,CAAC3f,KAAK,EAAE,IAAI,CAACvM,OAAO,CAAC;EACtD,IAAI,CAAC8wB,SAAS,GAAGA,SAAS;EAC1BG,kBAAkB,CAACjxB,OAAO,CAAC;EAC3B,IAAI,CAACkxB,SAAS,GAAG,IAAI;EACrB,IAAI,CAACC,aAAa,GAAG,MAAM;AAC7B;AAEA,IAAI/M,sBAAc,GAAG;EACnBwB,QAAQ,EAAE,CAAC;EACX+J,cAAc,EAAE;AAClB,CAAC;AAEDkB,OAAO,CAAC/D,WAAW,GAAG,IAAIwC,WAAW,CAAClL,sBAAc,CAAC;AAErDyM,OAAO,CAAC11B,SAAS,CAACi2B,MAAM,GAAG,UAAUpxB,OAAO,EAAE;EAC5C6wB,OAAO,CAAC/D,WAAW,CAAC4C,eAAe,CAAC1vB,OAAO,CAAC;EAC5C,OAAO,IAAI;AACb,CAAC;AAED6wB,OAAO,CAAC11B,SAAS,CAAC4R,SAAS,GAAG,UAAU/M,OAAO,EAAEqxB,WAAW,EAAE;EAC5D,IAAIrkB,UAAU,GAAG,IAAI,CAAChN,OAAO;EAC7B,IAAIyI,OAAO,GAAG,CAAC,CAAC;EAChB,IAAI4oB,WAAW,EAAE;IACf5oB,OAAO,GAAG;MAAEA,OAAO,EAAE4oB;IAAY,CAAC;EACpC;EAEA,IAAI,CAACrxB,OAAO,GAAG3B,KAAO,CAAC2O,UAAU,EAAEhN,OAAO,EAAEyI,OAAO,CAAC;;EAEpD;EACA;EACA,IAAIuW,MAAM,GAAG,IAAI,CAAChf,OAAO,CAACgf,MAAM,IAAI,IAAI;EACxC,IAAI+R,cAAc,CAAC/R,MAAM,CAAC,EAAE;IAC1B,IAAI,CAACA,MAAM,GAAGA,MAAM;IACpB;IACA,IAAI,CAAChf,OAAO,CAACgf,MAAM,GAAG,4BAA4B;IAClD,IAAI,CAAChf,OAAO,CAACgxB,kBAAkB,CAAChS,MAAM,GAAG,4BAA4B;EACvE,CAAC,MAAM;IACL,IAAI,CAACA,MAAM,GAAG,IAAI;EACpB;EAEA,IAAI,CAAChb,QAAQ,IAAI,IAAI,CAACA,QAAQ,CAAC+I,SAAS,CAAC,IAAI,CAAC/M,OAAO,CAAC;EACtD,IAAI,CAAC8wB,SAAS,IAAI,IAAI,CAACA,SAAS,CAAC/jB,SAAS,CAAC,IAAI,CAAC/M,OAAO,CAAC;EACxDixB,kBAAkB,CAACjxB,OAAO,CAAC;EAC3B,IAAI,CAACoxB,MAAM,CAAC,IAAI,CAACpxB,OAAO,CAAC;EAEzB,IAAI+wB,cAAc,CAAC/wB,OAAO,CAACgf,MAAM,CAAC,EAAE;IAClC,IAAI,CAACA,MAAM,GAAGhf,OAAO,CAACgf,MAAM;EAC9B;EAEA,OAAO,IAAI;AACb,CAAC;AAED6R,OAAO,CAAC11B,SAAS,CAAC4N,GAAG,GAAG,UAAUjE,IAAI,EAAE;EACtC,IAAIM,KAAK,GAAG,IAAI,CAACksB,gBAAgB,CAAC,CAAC;EACnC,OAAO,IAAI,CAACC,IAAI,CAACnsB,KAAK,EAAEN,IAAI,CAAC;AAC/B,CAAC;AAED+rB,OAAO,CAAC11B,SAAS,CAACuC,KAAK,GAAG,UAAUoH,IAAI,EAAE;EACxC,IAAI,CAACysB,IAAI,CAAC,OAAO,EAAEzsB,IAAI,CAAC;AAC1B,CAAC;AAED+rB,OAAO,CAAC11B,SAAS,CAACwC,IAAI,GAAG,UAAUmH,IAAI,EAAE;EACvC,IAAI,CAACysB,IAAI,CAAC,MAAM,EAAEzsB,IAAI,CAAC;AACzB,CAAC;AAED+rB,OAAO,CAAC11B,SAAS,CAACggB,IAAI,GAAG,UAAUrW,IAAI,EAAE;EACvC,IAAI,CAACysB,IAAI,CAAC,SAAS,EAAEzsB,IAAI,CAAC;AAC5B,CAAC;AAED+rB,OAAO,CAAC11B,SAAS,CAACyC,OAAO,GAAG,UAAUkH,IAAI,EAAE;EAC1C,IAAI,CAACysB,IAAI,CAAC,SAAS,EAAEzsB,IAAI,CAAC;AAC5B,CAAC;AAED+rB,OAAO,CAAC11B,SAAS,CAAC0C,KAAK,GAAG,UAAUiH,IAAI,EAAE;EACxC,IAAI,CAACysB,IAAI,CAAC,OAAO,EAAEzsB,IAAI,CAAC;AAC1B,CAAC;AAED+rB,OAAO,CAAC11B,SAAS,CAAC2C,QAAQ,GAAG,UAAUgH,IAAI,EAAE;EAC3C,IAAI,CAACysB,IAAI,CAAC,UAAU,EAAEzsB,IAAI,CAAC;AAC7B,CAAC;AAED+rB,OAAO,CAAC11B,SAAS,CAACozB,IAAI,GAAG,UAAUnqB,QAAQ,EAAE;EAC3C,IAAI,CAACmI,KAAK,CAACgiB,IAAI,CAACnqB,QAAQ,CAAC;AAC3B,CAAC;AAEDysB,OAAO,CAAC11B,SAAS,CAACoT,YAAY,GAAG,UAAUhS,IAAI,EAAEkK,QAAQ,EAAErB,KAAK,EAAE;EAChE,OAAO,IAAI,CAAC0rB,SAAS,IAAI,IAAI,CAACA,SAAS,CAACviB,YAAY,CAAChS,IAAI,EAAEkK,QAAQ,EAAErB,KAAK,CAAC;AAC7E,CAAC;AAEDyrB,OAAO,CAAC11B,SAAS,CAACmX,uBAAuB,GAAG,UAAUC,EAAE,EAAE;EACxD,OAAO,IAAI,CAACue,SAAS,IAAI,IAAI,CAACA,SAAS,CAACxe,uBAAuB,CAACC,EAAE,CAAC;AACrE,CAAC;AAEDse,OAAO,CAAC11B,SAAS,CAACsX,WAAW,GAAG,UAAUF,EAAE,EAAE;EAC5C,OAAO,IAAI,CAACue,SAAS,IAAI,IAAI,CAACA,SAAS,CAACre,WAAW,CAACF,EAAE,CAAC;AACzD,CAAC;AAEDse,OAAO,CAAC11B,SAAS,CAACkqB,gBAAgB,GAAG,UAAUvgB,IAAI,EAAE;EACnD,OAAO,IAAI,CAACuQ,GAAG,CAACgQ,gBAAgB,CAACvgB,IAAI,CAAC;AACxC,CAAC;AAED+rB,OAAO,CAAC11B,SAAS,CAACq2B,eAAe,GAAG,UAAUhM,WAAW,EAAE;EACzD,IAAI,CAACnQ,GAAG,CAACkQ,eAAe,CAACC,WAAW,CAAC;AACvC,CAAC;;AAED;;AAEAqL,OAAO,CAAC11B,SAAS,CAACo2B,IAAI,GAAG,UAAUve,YAAY,EAAElO,IAAI,EAAE;EACrD,IAAIV,QAAQ;EACZ,IAAIU,IAAI,CAACV,QAAQ,EAAE;IACjBA,QAAQ,GAAGU,IAAI,CAACV,QAAQ;IACxB,OAAOU,IAAI,CAACV,QAAQ;EACtB;EACA,IAAI,IAAI,CAACpE,OAAO,CAACyxB,qBAAqB,IAAI,IAAI,CAACC,gBAAgB,CAAC5sB,IAAI,CAAC,EAAE;IACrE,IAAIV,QAAQ,EAAE;MACZ,IAAIvG,KAAK,GAAG,IAAIrD,KAAK,CAAC,wBAAwB,CAAC;MAC/CqD,KAAK,CAACiH,IAAI,GAAGA,IAAI;MACjBV,QAAQ,CAACvG,KAAK,CAAC;IACjB;IACA;EACF;EACA,IAAI;IACFiH,IAAI,CAACM,KAAK,GAAGN,IAAI,CAACM,KAAK,IAAI4N,YAAY;IAEvC,IAAI,CAAC2e,kBAAkB,CAAC7sB,IAAI,CAAC;;IAE7B;IACA,IAAI,CAAC8sB,eAAe,CAAC9sB,IAAI,CAAC;IAE1B,IAAMgsB,SAAS,GAAG,IAAI,CAACA,SAAS;IAChC,IAAIA,SAAS,EAAE;MACbA,SAAS,CAACje,mBAAmB,CAAC/N,IAAI,CAAC;MACnCA,IAAI,CAAC+sB,eAAe,GAAGf,SAAS,CAAC1jB,UAAU,CAAC,CAAC,IAAI,EAAE;IACrD;IAEA,IAAI,CAACpJ,QAAQ,CAAC+E,GAAG,CAACjE,IAAI,EAAEV,QAAQ,CAAC;EACnC,CAAC,CAAC,OAAO3H,CAAC,EAAE;IACV,IAAI2H,QAAQ,EAAE;MACZA,QAAQ,CAAC3H,CAAC,CAAC;IACb;IACA,IAAI,CAAC4G,MAAM,CAACxF,KAAK,CAACpB,CAAC,CAAC;EACtB;AACF,CAAC;AAEDo0B,OAAO,CAAC11B,SAAS,CAACw2B,kBAAkB,GAAG,UAAU7sB,IAAI,EAAE;EAAA,IAAAuH,aAAA,EAAAylB,cAAA;EACrD,IAAM9b,IAAI,IAAA3J,aAAA,GAAG,IAAI,CAACD,OAAO,cAAAC,aAAA,uBAAZA,aAAA,CAAc8R,OAAO,CAAC,CAAC;EAEpC,IAAMtX,UAAU,GAAG,CACjB;IAAE/H,GAAG,EAAE,YAAY;IAAEnD,KAAK,GAAAm2B,cAAA,GAAE,IAAI,CAAC1lB,OAAO,cAAA0lB,cAAA,uBAAZA,cAAA,CAAcC;EAAU,CAAC,EACrD;IAAEjzB,GAAG,EAAE,SAAS;IAAEnD,KAAK,EAAEqa,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEsB;EAAO,CAAC,EACvC;IAAExY,GAAG,EAAE,UAAU;IAAEnD,KAAK,EAAEqa,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEoB;EAAQ,CAAC,CAC1C;EACD,IAAItS,IAAI,CAAC8lB,WAAW,EAAE;IACpB/jB,UAAU,CAACxG,IAAI,CAAC;MAAEvB,GAAG,EAAE,aAAa;MAAEnD,KAAK,EAAE;IAAO,CAAC,CAAC;EACxD;EACA0C,iBAAmB,CAACyG,IAAI,CAACE,IAAI,EAAE6B,UAAU,CAAC;EAE1CmP,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEtH,QAAQ,CAAC,oBAAoB,EAAE,CACnC;IAAE5P,GAAG,EAAE,yBAAyB;IAAEnD,KAAK,EAAEmJ,IAAI,CAAC3H;EAAK,CAAC,CACrD,CAAC;AACJ,CAAC;AAED0zB,OAAO,CAAC11B,SAAS,CAACm2B,gBAAgB,GAAG,YAAY;EAC/C,OAAO,IAAI,CAACtxB,OAAO,CAAC6b,QAAQ,IAAI,OAAO;AACzC,CAAC;AAEDgV,OAAO,CAAC11B,SAAS,CAACu2B,gBAAgB,GAAG,UAAU5sB,IAAI,EAAE;EACnD,IAAI,CAACA,IAAI,CAAC8lB,WAAW,EAAE;IACrB,OAAO,KAAK;EACd;EACA,IAAIoH,QAAQ,GAAGC,gBAAgB,CAACntB,IAAI,CAAC;EACrC,IAAI,IAAI,CAACqsB,aAAa,KAAKa,QAAQ,EAAE;IACnC,OAAO,IAAI;EACb;EACA,IAAI,CAACd,SAAS,GAAGpsB,IAAI,CAACxB,GAAG;EACzB,IAAI,CAAC6tB,aAAa,GAAGa,QAAQ;EAC7B,OAAO,KAAK;AACd,CAAC;AAEDnB,OAAO,CAAC11B,SAAS,CAACy2B,eAAe,GAAG,UAAU9sB,IAAI,EAAE;EAClD;EACA;EACA,IAAI,IAAI,CAACka,MAAM,EAAE;IACf;IACA,IAAIhJ,IAAI,GAAG,IAAI,CAACgJ,MAAM,CAAC3I,KAAK,CAAC,CAAC,CAACvC,MAAM,CAAC,CAAC;IAEvC,IAAIoe,YAAY,CAAClc,IAAI,CAAC,EAAE;MACtBA,IAAI,CAACmc,MAAM,CAAC,oBAAoB,EAAErtB,IAAI,CAAC3H,IAAI,CAAC;MAC5C6Y,IAAI,CAACmc,MAAM,CAAC,mBAAmB,EAAE,IAAI,CAAC;MACtCnc,IAAI,CAACmc,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;MAC1Bnc,IAAI,CAACmc,MAAM,CACT,kBAAkB,yCAAA9pB,MAAA,CACqBvD,IAAI,CAAC3H,IAAI,CAClD,CAAC;MACD6Y,IAAI,CAACmc,MAAM,CACT,wBAAwB,+CAAA9pB,MAAA,CACqBvD,IAAI,CAAC3H,IAAI,CACxD,CAAC;;MAED;MACA,IAAIi1B,iBAAiB,GAAGpc,IAAI,CAACpT,OAAO,CAAC,CAAC,CAACyvB,QAAQ,CAAC,CAAC;MACjD,IAAIC,kBAAkB,GAAGtc,IAAI,CAACpT,OAAO,CAAC,CAAC,CAAC2vB,SAAS,CAAC,CAAC;MAEnD,IAAIztB,IAAI,CAACX,MAAM,EAAE;QACfW,IAAI,CAACX,MAAM,CAACquB,mBAAmB,GAAGJ,iBAAiB;QACnDttB,IAAI,CAACX,MAAM,CAACsuB,oBAAoB,GAAGH,kBAAkB;MACvD,CAAC,MAAM;QACLxtB,IAAI,CAACX,MAAM,GAAG;UACZquB,mBAAmB,EAAEJ,iBAAiB;UACtCK,oBAAoB,EAAEH;QACxB,CAAC;MACH;IACF;EACF;AACF,CAAC;AAED,SAASL,gBAAgBA,CAACntB,IAAI,EAAE;EAC9B,IAAI7C,OAAO,GAAG6C,IAAI,CAAC7C,OAAO,IAAI,EAAE;EAChC,IAAIkB,KAAK,GAAG,CAAC2B,IAAI,CAACxB,GAAG,IAAI,CAAC,CAAC,EAAEH,KAAK,IAAInH,MAAM,CAAC8I,IAAI,CAACxB,GAAG,CAAC;EACtD,OAAOrB,OAAO,GAAG,IAAI,GAAGkB,KAAK;AAC/B;;AAEA;AACA;AACA;AACA,SAAS8tB,kBAAkBA,CAACjxB,OAAO,EAAE;EACnC,IAAIA,OAAO,CAAC0yB,eAAe,EAAE;IAC3Bl4B,KAAK,CAACk4B,eAAe,GAAG1yB,OAAO,CAAC0yB,eAAe;EACjD;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS3B,cAAcA,CAAC/R,MAAM,EAAE;EAC9B,IAAI,CAACA,MAAM,EAAE;IACX,OAAO,KAAK;EACd;EAEA,IAAI,CAACA,MAAM,CAAC3I,KAAK,IAAI,OAAO2I,MAAM,CAAC3I,KAAK,KAAK,UAAU,EAAE;IACvD,OAAO,KAAK;EACd;EAEA,IAAIA,KAAK,GAAG2I,MAAM,CAAC3I,KAAK,CAAC,CAAC;EAE1B,IAAI,CAACA,KAAK,IAAI,CAACA,KAAK,CAACvC,MAAM,IAAI,OAAOuC,KAAK,CAACvC,MAAM,KAAK,UAAU,EAAE;IACjE,OAAO,KAAK;EACd;EAEA,OAAO,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA,SAASoe,YAAYA,CAAClc,IAAI,EAAE;EAC1B,IAAI,CAACA,IAAI,IAAI,CAACA,IAAI,CAACpT,OAAO,IAAI,OAAOoT,IAAI,CAACpT,OAAO,KAAK,UAAU,EAAE;IAChE,OAAO,KAAK;EACd;EAEA,IAAIyU,WAAW,GAAGrB,IAAI,CAACpT,OAAO,CAAC,CAAC;EAEhC,IACE,CAACyU,WAAW,IACZ,CAACA,WAAW,CAACgb,QAAQ,IACrB,CAAChb,WAAW,CAACkb,SAAS,IACtB,OAAOlb,WAAW,CAACgb,QAAQ,KAAK,UAAU,IAC1C,OAAOhb,WAAW,CAACkb,SAAS,KAAK,UAAU,EAC3C;IACA,OAAO,KAAK;EACd;EAEA,OAAO,IAAI;AACb;AAEA,4CAAe1B,OAAO,E;;AC9TtB;AACA;AACA;AACA,qDAAe;EACbzE,OAAO,EAAE,KAAK;EACd7K,QAAQ,EAAE;AACZ,CAAC,E;;ACNiC;AAElC,SAASoR,aAAaA,CAAC7tB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EAC9C,IAAIU,IAAI,CAAC8lB,WAAW,EAAE;IACpB9lB,IAAI,CAACE,IAAI,CAAC4lB,WAAW,GAAG,IAAI;EAC9B;EACA,IAAI9lB,IAAI,CAACI,aAAa,EAAE;IACtBJ,IAAI,CAACE,IAAI,CAACE,aAAa,GAAGJ,IAAI,CAACI,aAAa;EAC9C;EACAd,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAAS8tB,iBAAiBA,CAAC9tB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EAClD,IAAIyuB,cAAc,GAAG7yB,OAAO,CAACyI,OAAO,IAAI,CAAC,CAAC;EAC1C,IAAIoqB,cAAc,CAACxkB,IAAI,EAAE;IACvB,OAAOwkB,cAAc,CAACxkB,IAAI;EAC5B;EAEAvJ,IAAI,CAACE,IAAI,GAAG3G,KAAO,CAACyG,IAAI,CAACE,IAAI,EAAE6tB,cAAc,CAAC;EAC9CzuB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAASguB,gBAAgBA,CAAChuB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EACjD,IAAIU,IAAI,CAAC+sB,eAAe,EAAE;IACxBxzB,GAAK,CAACyG,IAAI,EAAE,qBAAqB,EAAEA,IAAI,CAAC+sB,eAAe,CAAC;EAC1D;EACAztB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAASiuB,mBAAmBA,CAACjuB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EACpD,IAAI,CAACU,IAAI,CAAC7C,OAAO,EAAE;IACjBmC,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;IACpB;EACF;EACA,IAAIkuB,SAAS,GAAG,yBAAyB;EACzC,IAAIjT,KAAK,GAAG1hB,GAAK,CAACyG,IAAI,EAAEkuB,SAAS,CAAC;EAClC,IAAI,CAACjT,KAAK,EAAE;IACViT,SAAS,GAAG,iBAAiB;IAC7BjT,KAAK,GAAG1hB,GAAK,CAACyG,IAAI,EAAEkuB,SAAS,CAAC;EAChC;EACA,IAAIjT,KAAK,EAAE;IACT,IAAI,EAAEA,KAAK,CAACM,SAAS,IAAIN,KAAK,CAACM,SAAS,CAACC,WAAW,CAAC,EAAE;MACrDjiB,GAAK,CAACyG,IAAI,EAAEkuB,SAAS,GAAG,wBAAwB,EAAEluB,IAAI,CAAC7C,OAAO,CAAC;MAC/DmC,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;MACpB;IACF;IACA,IAAI6rB,KAAK,GAAGtyB,GAAK,CAACyG,IAAI,EAAEkuB,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnD,IAAIC,QAAQ,GAAG50B,KAAO,CAACsyB,KAAK,EAAE;MAAE1uB,OAAO,EAAE6C,IAAI,CAAC7C;IAAQ,CAAC,CAAC;IACxD5D,GAAK,CAACyG,IAAI,EAAEkuB,SAAS,GAAG,QAAQ,EAAEC,QAAQ,CAAC;EAC7C;EACA7uB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAASsX,aAAaA,CAAC/Y,MAAM,EAAE;EAC7B,OAAO,UAAUyB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;IACxC,IAAI8uB,OAAO,GAAG70B,KAAO,CAACyG,IAAI,CAAC;IAC3B,IAAI4K,QAAQ,GAAG,IAAI;IACnB,IAAI;MACF,IAAIrR,UAAY,CAAC2B,OAAO,CAAC0c,SAAS,CAAC,EAAE;QACnChN,QAAQ,GAAG1P,OAAO,CAAC0c,SAAS,CAACwW,OAAO,CAACluB,IAAI,EAAEF,IAAI,CAAC;MAClD;IACF,CAAC,CAAC,OAAOrI,CAAC,EAAE;MACVuD,OAAO,CAAC0c,SAAS,GAAG,IAAI;MACxBrZ,MAAM,CAACxF,KAAK,CACV,+EAA+E,EAC/EpB,CACF,CAAC;MACD2H,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;MACpB;IACF;IACA,IAAIzG,SAAW,CAACqR,QAAQ,CAAC,EAAE;MACzBA,QAAQ,CAAC9S,IAAI,CACX,UAAUu2B,YAAY,EAAE;QACtB,IAAIA,YAAY,EAAE;UAChBD,OAAO,CAACluB,IAAI,GAAGmuB,YAAY;QAC7B;QACA/uB,QAAQ,CAAC,IAAI,EAAE8uB,OAAO,CAAC;MACzB,CAAC,EACD,UAAUr1B,KAAK,EAAE;QACfuG,QAAQ,CAACvG,KAAK,EAAEiH,IAAI,CAAC;MACvB,CACF,CAAC;IACH,CAAC,MAAM;MACLV,QAAQ,CAAC,IAAI,EAAE8uB,OAAO,CAAC;IACzB;EACF,CAAC;AACH;AAEA,SAASE,kBAAkBA,CAACtuB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EACnD,IAAI,CAACpE,OAAO,CAACqzB,UAAU,EAAE;IACvB,OAAOjvB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;EAC7B;EACA,IAAIwuB,SAAS,GAAG,gBAAgB;EAChC,IAAInvB,MAAM,GAAG9F,GAAK,CAACyG,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;EAC7CX,MAAM,CAACmvB,SAAS,CAAC,GAAGtzB,OAAO;EAC3B8E,IAAI,CAACE,IAAI,CAACb,MAAM,GAAGA,MAAM;EACzBC,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAASyuB,iBAAiBA,CAACvzB,OAAO,EAAE1F,IAAI,EAAE;EACxC,IAAI+D,UAAY,CAAC2B,OAAO,CAAC1F,IAAI,CAAC,CAAC,EAAE;IAC/B0F,OAAO,CAAC1F,IAAI,CAAC,GAAG0F,OAAO,CAAC1F,IAAI,CAAC,CAACG,QAAQ,CAAC,CAAC;EAC1C;AACF;AAEA,SAAS+4B,oBAAoBA,CAAC1uB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EACrD,IAAIqvB,iBAAiB,GAAGzzB,OAAO,CAACgxB,kBAAkB;;EAElD;EACAuC,iBAAiB,CAACE,iBAAiB,EAAE,WAAW,CAAC;EACjDF,iBAAiB,CAACE,iBAAiB,EAAE,aAAa,CAAC;EACnDF,iBAAiB,CAACE,iBAAiB,EAAE,gBAAgB,CAAC;EAEtD,OAAOA,iBAAiB,CAAC1zB,WAAW;EACpC+E,IAAI,CAACE,IAAI,CAAChB,QAAQ,CAAC0vB,kBAAkB,GAAGD,iBAAiB;EACzDrvB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAAS6uB,iBAAiBA,CAAC7uB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EAClD,IAAII,UAAU,GAAGnG,KAAO,CACtByG,IAAI,CAACd,QAAQ,CAAC4vB,MAAM,CAAC5vB,QAAQ,CAACQ,UAAU,EACxCM,IAAI,CAACN,UACP,CAAC;EAED,IAAInG,GAAK,CAACyG,IAAI,EAAE,kBAAkB,CAAC,EAAE;IACnCN,UAAU,CAACqvB,YAAY,GAAG,IAAI;EAChC;EAEA,IAAI/uB,IAAI,CAAC8lB,WAAW,EAAE;IACpBpmB,UAAU,CAACsvB,WAAW,GAAGhvB,IAAI,CAAC8lB,WAAW;EAC3C;EAEA,IAAI9lB,IAAI,CAACxB,GAAG,EAAE;IACZ,IAAI;MACFkB,UAAU,CAACuvB,SAAS,GAAG;QACrB9xB,OAAO,EAAE6C,IAAI,CAACxB,GAAG,CAACrB,OAAO;QACzB3H,IAAI,EAAEwK,IAAI,CAACxB,GAAG,CAAChJ,IAAI;QACnB05B,gBAAgB,EAAElvB,IAAI,CAACxB,GAAG,CAAC+F,WAAW,IAAIvE,IAAI,CAACxB,GAAG,CAAC+F,WAAW,CAAC/O,IAAI;QACnE+wB,QAAQ,EAAEvmB,IAAI,CAACxB,GAAG,CAACikB,QAAQ;QAC3B/kB,IAAI,EAAEsC,IAAI,CAACxB,GAAG,CAACwlB,UAAU;QACzBrmB,MAAM,EAAEqC,IAAI,CAACxB,GAAG,CAACylB,YAAY;QAC7B5lB,KAAK,EAAE2B,IAAI,CAACxB,GAAG,CAACH;MAClB,CAAC;IACH,CAAC,CAAC,OAAO1G,CAAC,EAAE;MACV+H,UAAU,CAACuvB,SAAS,GAAG;QAAEE,MAAM,EAAEj4B,MAAM,CAACS,CAAC;MAAE,CAAC;IAC9C;EACF;EAEAqI,IAAI,CAACE,IAAI,CAAChB,QAAQ,CAACQ,UAAU,GAAGnG,KAAO,CACrCyG,IAAI,CAACE,IAAI,CAAChB,QAAQ,CAACQ,UAAU,EAC7BA,UACF,CAAC;EACDJ,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;;;;;;;;;ACzJA;AACA;AACA;AACmD;AAE5C,IAAM8D,WAAW,MAAAP,MAAA,CAAAqN,0BAAA,CACnBoQ,iBAAiB,IACpB,WAAW,EACX,aAAa,EACb,YAAY,EACZ,SAAS,EACT,OAAO,EACP,UAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,MAAM,EACN,MAAM,EACN,MAAM,EACN,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,yBAAyB,EACzB,QAAQ,EACR,WAAW,EACX,UAAU,EACV,SAAS,EACT,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,SAAS,EACT,QAAQ,EACT;;AAED;AACA,qDAAe;EAAEld,WAAW,EAAXA;AAAY,CAAC,E;;AClD9B,SAASsrB,yBAAyBA,CAACp3B,MAAM,EAAEq3B,OAAO,EAAEC,IAAI,EAAE;EACxD,IAAI,CAACt3B,MAAM,EAAE;IACX;EACF;EACA,IAAIu3B,UAAU;EAEd,IAAI,OAAOF,OAAO,CAACG,kBAAkB,KAAK,UAAU,EAAE;IACpDD,UAAU,GAAGF,OAAO,CAACG,kBAAkB;EACzC,CAAC,MAAM,IAAIx3B,MAAM,CAACy3B,OAAO,EAAE;IACzBF,UAAU,GAAGv3B,MAAM,CAACy3B,OAAO;IAC3B,OAAOF,UAAU,CAACC,kBAAkB,EAAE;MACpCD,UAAU,GAAGA,UAAU,CAACC,kBAAkB;IAC5C;IACAH,OAAO,CAACG,kBAAkB,GAAGD,UAAU;EACzC;EAEAF,OAAO,CAACK,qBAAqB,CAAC,CAAC;EAE/B,IAAIrgB,EAAE,GAAG,SAALA,EAAEA,CAAA,EAAe;IACnB,IAAIpQ,IAAI,GAAGuJ,KAAK,CAACnS,SAAS,CAAC0I,KAAK,CAACnJ,IAAI,CAAC+O,SAAS,EAAE,CAAC,CAAC;IACnDgrB,qBAAqB,CAAC33B,MAAM,EAAEq3B,OAAO,EAAEE,UAAU,EAAEtwB,IAAI,CAAC;EAC1D,CAAC;EACD,IAAIqwB,IAAI,EAAE;IACRjgB,EAAE,CAACmgB,kBAAkB,GAAGD,UAAU;EACpC;EACAv3B,MAAM,CAACy3B,OAAO,GAAGpgB,EAAE;AACrB;AAEA,SAASsgB,qBAAqBA,CAAC33B,MAAM,EAAEO,CAAC,EAAEq3B,GAAG,EAAE3wB,IAAI,EAAE;EACnD,IAAIjH,MAAM,CAAC63B,oBAAoB,EAAE;IAC/B,IAAI,CAAC5wB,IAAI,CAAC,CAAC,CAAC,EAAE;MACZA,IAAI,CAAC,CAAC,CAAC,GAAGjH,MAAM,CAAC63B,oBAAoB;IACvC;IACA,IAAI,CAAC5wB,IAAI,CAAC,CAAC,CAAC,EAAE;MACZA,IAAI,CAAC,CAAC,CAAC,GAAGjH,MAAM,CAAC63B,oBAAoB,CAACC,eAAe;IACvD;IACA93B,MAAM,CAAC63B,oBAAoB,GAAG,IAAI;EACpC;EAEA,IAAIppB,GAAG,GAAGlO,CAAC,CAACw3B,uBAAuB,CAACtgB,KAAK,CAAClX,CAAC,EAAE0G,IAAI,CAAC;EAElD,IAAI2wB,GAAG,EAAE;IACPA,GAAG,CAACngB,KAAK,CAACzX,MAAM,EAAEiH,IAAI,CAAC;EACzB;;EAEA;EACA;EACA;EACA,IAAIwH,GAAG,KAAK,WAAW,EAAE;IACvBlO,CAAC,CAACy3B,sBAAsB,IAAI,CAAC,CAAC,CAAC;EACjC;AACF;AAEA,SAASC,0BAA0BA,CAACj4B,MAAM,EAAEq3B,OAAO,EAAEC,IAAI,EAAE;EACzD,IAAI,CAACt3B,MAAM,EAAE;IACX;EACF;EAEA,IACE,OAAOA,MAAM,CAACk4B,WAAW,KAAK,UAAU,IACxCl4B,MAAM,CAACk4B,WAAW,CAACC,aAAa,EAChC;IACAn4B,MAAM,CAACo4B,mBAAmB,CAAC,oBAAoB,EAAEp4B,MAAM,CAACk4B,WAAW,CAAC;EACtE;EAEA,IAAIG,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAaC,GAAG,EAAE;IACpC,IAAIC,MAAM,EAAEC,OAAO,EAAEC,MAAM;IAC3B,IAAI;MACFF,MAAM,GAAGD,GAAG,CAACC,MAAM;IACrB,CAAC,CAAC,OAAOjuB,EAAE,EAAE;MACXiuB,MAAM,GAAGj2B,SAAS;IACpB;IACA,IAAI;MACFk2B,OAAO,GAAGF,GAAG,CAACE,OAAO;IACvB,CAAC,CAAC,OAAOluB,EAAE,EAAE;MACXkuB,OAAO,GAAG,yDAAyD;IACrE;IACA,IAAI;MACFC,MAAM,GAAGH,GAAG,CAACG,MAAM;MACnB,IAAI,CAACF,MAAM,IAAIE,MAAM,EAAE;QACrBF,MAAM,GAAGE,MAAM,CAACF,MAAM;QACtBC,OAAO,GAAGC,MAAM,CAACD,OAAO;MAC1B;IACF,CAAC,CAAC,OAAOluB,EAAE,EAAE;MACX;IAAA;IAEF,IAAI,CAACiuB,MAAM,EAAE;MACXA,MAAM,GAAG,wDAAwD;IACnE;IAEA,IAAIlB,OAAO,IAAIA,OAAO,CAACqB,wBAAwB,EAAE;MAC/CrB,OAAO,CAACqB,wBAAwB,CAACH,MAAM,EAAEC,OAAO,CAAC;IACnD;EACF,CAAC;EACDH,gBAAgB,CAACF,aAAa,GAAGb,IAAI;EACrCt3B,MAAM,CAACk4B,WAAW,GAAGG,gBAAgB;EACrCr4B,MAAM,CAAC24B,gBAAgB,CAAC,oBAAoB,EAAEN,gBAAgB,CAAC;AACjE;;;ACjGmC;AAEnC,SAASrK,WAAWA,CAAChmB,IAAI,EAAEwlB,QAAQ,EAAE;EACnC,IAAIjsB,GAAK,CAACisB,QAAQ,EAAE,iCAAiC,CAAC,EAAE;IACtD,OAAO,CAACjsB,GAAK,CAACyG,IAAI,EAAE,2BAA2B,CAAC;EAClD;EACA,OAAO,IAAI;AACb;;;ACPA;AACA;AACA;AACA;AACA,oDAAe;EACbsnB,OAAO,EAAE,KAAK;EAAE;EAChBsJ,SAAS,EAAE,IAAI;EAAE;;EAEjB;EACAC,eAAe,EAAE;IACfC,aAAa,EAAE,GAAG;IAClBC,WAAW,EAAE,GAAG;IAChBC,YAAY,EAAE;EAChB,CAAC;EACDC,QAAQ,EAAE,CACR;IACEx5B,IAAI,EAAE,YAAY;IAClB6I,KAAK,EAAE,CAAC,OAAO,EAAE,UAAU;EAC7B,CAAC,CACF;EAED1H,KAAK,EAAE;IACLs4B,SAAS,EAAE,IAAI;IAAE;IACjBC,QAAQ,EAAE,KAAK,CAAE;EACnB,CAAC;EAED;EACAC,gBAAgB,EAAE,IAAI;EAAE;EACxBC,YAAY,EAAE,KAAK;EAAE;EACrBC,YAAY,EAAE,IAAI;EAAE;;EAEpB;EACA;EACA;EACAC,gBAAgB,EAAE;IAChBl4B,QAAQ,EAAE,IAAI;IACdqc,KAAK,EAAE,KAAK;IACZ8b,GAAG,EAAE,KAAK;IACVC,IAAI,EAAE,KAAK;IACXC,KAAK,EAAE,KAAK;IACZC,IAAI,EAAE,KAAK;IACX,gBAAgB,EAAE,KAAK;IACvBC,KAAK,EAAE,KAAK;IACZC,MAAM,EAAE,KAAK;IACbhX,KAAK,EAAE,KAAK;IACZvhB,MAAM,EAAE,KAAK;IACb+Y,IAAI,EAAE,KAAK;IACXnZ,GAAG,EAAE,KAAK;IACV44B,IAAI,EAAE;EACR,CAAC;EAED;EACAC,aAAa,EAAE,KAAK;EAEpB;EACAC,UAAU,EAAE,UAAU;EACtBC,aAAa,EAAE,SAAS;EACxBC,WAAW,EAAE,WAAW;EAExB;EACA;EACAC,cAAc,EAAE;IACdC,MAAM,EAAE,IAAI;IAAE;IACdC,OAAO,EAAE,IAAI;IAAE;IACfC,WAAW,EAAE,IAAI;IAAE;IACnBC,cAAc,EAAE,IAAI;IAAE;IACtBC,oBAAoB,EAAE,IAAI;IAAE;IAC5BC,cAAc,EAAE,IAAI;IAAE;IACtBC,cAAc,EAAE,IAAI;IAAE;IACtBC,iBAAiB,EAAE,IAAI;IAAE;IACzBC,kBAAkB,EAAE,IAAI;IAAE;IAC1BC,oBAAoB,EAAE,IAAI,CAAE;EAC9B;;EAEA;EACA;EACA;EACA;EACA;;EAEA;EACA;AACF,CAAC,E;;AClF2C;AACV;AACC;AAEnC,SAASC,kBAAkBA,CAAC9yB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EACnD,IAAIU,IAAI,CAACxB,GAAG,IAAIhB,WAAW,CAACgnB,KAAK,CAACxkB,IAAI,CAACxB,GAAG,CAAC,CAAChJ,IAAI,KAAK,cAAc,EAAE;IACnE,IAAIgyB,aAAa,GAAG,IAAI9xB,KAAK,CAAC,CAAC;IAC/B8xB,aAAa,CAAChyB,IAAI,GAAGwK,IAAI,CAACxB,GAAG,CAAChJ,IAAI;IAClCgyB,aAAa,CAACrqB,OAAO,GAAG6C,IAAI,CAACxB,GAAG,CAACrB,OAAO;IACxCqqB,aAAa,CAACnpB,KAAK,GAAG2B,IAAI,CAACxB,GAAG,CAACH,KAAK;IACpCmpB,aAAa,CAACzC,MAAM,GAAG/kB,IAAI,CAACxB,GAAG;IAC/BwB,IAAI,CAACxB,GAAG,GAAGgpB,aAAa;EAC1B;EACAloB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAAS+yB,mBAAmBA,CAAC/yB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EACpDU,IAAI,CAACE,IAAI,GAAGF,IAAI,CAACE,IAAI,IAAI,CAAC,CAAC;EAC3B,IAAIF,IAAI,CAACxB,GAAG,EAAE;IACZ,IAAI;MACFwB,IAAI,CAACgzB,SAAS,GACZhzB,IAAI,CAACxB,GAAG,CAACy0B,gBAAgB,IACzBz1B,WAAW,CAACP,KAAK,CAAC+C,IAAI,CAACxB,GAAG,EAAEwB,IAAI,CAACO,UAAU,CAAC;MAE9C,IAAIrF,OAAO,CAACsF,eAAe,EAAE;QAC3BA,0BAAe,CAACR,IAAI,CAAC;MACvB;IACF,CAAC,CAAC,OAAOrI,CAAC,EAAE;MACV4G,UAAM,CAACxF,KAAK,CAAC,uCAAuC,EAAEpB,CAAC,CAAC;MACxD,IAAI;QACFqI,IAAI,CAAC7C,OAAO,GACV6C,IAAI,CAACxB,GAAG,CAACrB,OAAO,IAChB6C,IAAI,CAACxB,GAAG,CAACgd,WAAW,IACpBxb,IAAI,CAAC7C,OAAO,IACZjG,MAAM,CAAC8I,IAAI,CAACxB,GAAG,CAAC;MACpB,CAAC,CAAC,OAAO00B,EAAE,EAAE;QACXlzB,IAAI,CAAC7C,OAAO,GAAGjG,MAAM,CAAC8I,IAAI,CAACxB,GAAG,CAAC,IAAItH,MAAM,CAACg8B,EAAE,CAAC;MAC/C;MACA,OAAOlzB,IAAI,CAACxB,GAAG;IACjB;EACF;EACAc,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAASQ,0BAAeA,CAACR,IAAI,EAAE;EAC7B,IAAIgb,KAAK,GAAG,EAAE;EACd,IAAIxc,GAAG,GAAGwB,IAAI,CAACxB,GAAG;EAElBwc,KAAK,CAACzf,IAAI,CAACiD,GAAG,CAAC;EAEf,OAAOA,GAAG,CAACumB,MAAM,IAAIvmB,GAAG,CAACwmB,KAAK,EAAE;IAC9BxmB,GAAG,GAAGA,GAAG,CAACumB,MAAM,IAAIvmB,GAAG,CAACwmB,KAAK;IAC7BhK,KAAK,CAACzf,IAAI,CAACiD,GAAG,CAAC;EACjB;EAEAjF,eAAiB,CAACyG,IAAI,EAAEgb,KAAK,CAAC;AAChC;AAEA,SAASmY,2BAA2BA,CAACnzB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EAC5D,IAAI,CAACU,IAAI,CAAC7C,OAAO,IAAI,CAAC6C,IAAI,CAACgzB,SAAS,IAAI,CAAChzB,IAAI,CAACX,MAAM,EAAE;IACpDC,QAAQ,CAAC,IAAI5J,KAAK,CAAC,wCAAwC,CAAC,EAAE,IAAI,CAAC;EACrE;EACA4J,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAASozB,WAAWA,CAACpzB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EAC5C,IAAI0a,WAAW,GACZ9e,OAAO,CAACyI,OAAO,IAAIzI,OAAO,CAACyI,OAAO,CAACqW,WAAW,IAAK9e,OAAO,CAAC8e,WAAW;EACzEha,IAAI,CAACE,IAAI,GAAG3G,KAAO,CAACyG,IAAI,CAACE,IAAI,EAAE;IAC7B8Z,WAAW,EAAEA,WAAW;IACxB1Z,KAAK,EAAEN,IAAI,CAACM,KAAK;IACjBmc,QAAQ,EAAEvhB,OAAO,CAACuhB,QAAQ;IAC1BtG,QAAQ,EAAE,SAAS;IACnB2V,SAAS,EAAE,YAAY;IACvB7V,QAAQ,EAAE,YAAY;IACtBod,MAAM,EAAE,CAAC,CAAC;IACVh7B,IAAI,EAAE2H,IAAI,CAAC3H,IAAI;IACf6G,QAAQ,EAAE;MACR1J,IAAI,EAAE,oBAAoB;MAC1B6b,OAAO,EAAEnW,OAAO,CAACmW;IACnB,CAAC;IACDhS,MAAM,EAAEW,IAAI,CAACX;EACf,CAAC,CAAC;EACFC,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAASszB,cAAcA,CAACt7B,MAAM,EAAE;EAC9B,OAAO,UAAUgI,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;IACxC,IAAIi0B,WAAW,GAAG,CAAC,CAAC;IAEpB,IAAIv7B,MAAM,IAAIA,MAAM,CAACyF,QAAQ,EAAE;MAC7B81B,WAAW,CAACr6B,GAAG,GAAGlB,MAAM,CAACyF,QAAQ,CAACO,IAAI;MACtCu1B,WAAW,CAACC,YAAY,GAAGx7B,MAAM,CAACyF,QAAQ,CAACnE,MAAM;IACnD;IAEA,IAAIm6B,YAAY,GAAG,YAAY;IAC/B,IAAI,CAACv4B,OAAO,CAAC8H,SAAS,EAAE;MACtBywB,YAAY,GAAG,IAAI;IACrB,CAAC,MAAM,IAAIv4B,OAAO,CAAC8H,SAAS,KAAK,IAAI,EAAE;MACrCywB,YAAY,IAAI,YAAY;IAC9B;IACA,IAAIA,YAAY,EAAEF,WAAW,CAACG,OAAO,GAAGD,YAAY;IAEpD,IAAIn9B,MAAM,CAAC8L,IAAI,CAACmxB,WAAW,CAAC,CAAC34B,MAAM,GAAG,CAAC,EAAE;MACvCrB,GAAK,CAACyG,IAAI,EAAE,cAAc,EAAEuzB,WAAW,CAAC;IAC1C;IAEAj0B,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;EACtB,CAAC;AACH;AAEA,SAAS2zB,aAAaA,CAAC37B,MAAM,EAAE;EAC7B,OAAO,UAAUgI,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;IACxC,IAAI,CAACtH,MAAM,EAAE;MACX,OAAOsH,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;IAC7B;IACA,IAAI4zB,GAAG,GAAG57B,MAAM,CAACmG,SAAS,IAAI,CAAC,CAAC;IAChC,IAAI01B,GAAG,GAAG77B,MAAM,CAAC87B,MAAM,IAAI,CAAC,CAAC;IAC7Bv6B,GAAK,CAACyG,IAAI,EAAE,aAAa,EAAE;MACzB+zB,UAAU,EAAE/zB,IAAI,CAACC,SAAS,GAAGjI,MAAM,CAACg8B,iBAAiB;MACrD/zB,SAAS,EAAEzH,IAAI,CAAC4O,KAAK,CAACpH,IAAI,CAACC,SAAS,GAAG,IAAI,CAAC;MAC5Cg0B,UAAU,EAAE;QACVC,OAAO,EAAEN,GAAG,CAACx1B,SAAS;QACtB6X,QAAQ,EAAE2d,GAAG,CAAC3d,QAAQ;QACtBke,cAAc,EAAEP,GAAG,CAACQ,aAAa;QACjCN,MAAM,EAAE;UACN3nB,KAAK,EAAE0nB,GAAG,CAAC1nB,KAAK;UAChBD,MAAM,EAAE2nB,GAAG,CAAC3nB;QACd;MACF;IACF,CAAC,CAAC;IACF5M,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;EACtB,CAAC;AACH;AAEA,SAASq0B,aAAaA,CAACr8B,MAAM,EAAE;EAC7B,OAAO,UAAUgI,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;IACxC,IAAI,CAACtH,MAAM,IAAI,CAACA,MAAM,CAACmG,SAAS,EAAE;MAChC,OAAOmB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;IAC7B;IACA,IAAIs0B,OAAO,GAAG,EAAE;IAChB,IAAIC,UAAU,GAAGv8B,MAAM,CAACmG,SAAS,CAACm2B,OAAO,IAAI,EAAE;IAC/C,IAAIE,GAAG;IACP,KAAK,IAAIh9B,CAAC,GAAG,CAAC,EAAEmD,CAAC,GAAG45B,UAAU,CAAC35B,MAAM,EAAEpD,CAAC,GAAGmD,CAAC,EAAE,EAAEnD,CAAC,EAAE;MACjDg9B,GAAG,GAAGD,UAAU,CAAC/8B,CAAC,CAAC;MACnB88B,OAAO,CAAC/4B,IAAI,CAAC;QAAE/F,IAAI,EAAEg/B,GAAG,CAACh/B,IAAI;QAAEgmB,WAAW,EAAEgZ,GAAG,CAAChZ;MAAY,CAAC,CAAC;IAChE;IACAjiB,GAAK,CAACyG,IAAI,EAAE,gCAAgC,EAAEs0B,OAAO,CAAC;IACtDh1B,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;EACtB,CAAC;AACH;AAEA,SAASy0B,OAAOA,CAACz0B,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EACxC,IAAIU,IAAI,CAACgzB,SAAS,EAAE;IAClB,IAAIhzB,IAAI,CAACgzB,SAAS,CAAC/N,UAAU,EAAE;MAC7ByP,iBAAiB,CAAC10B,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,CAAC;IAC5C,CAAC,MAAM;MACLq1B,YAAY,CAAC30B,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,CAAC;IACvC;EACF,CAAC,MAAM;IACLs1B,cAAc,CAAC50B,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,CAAC;EACzC;AACF;AAEA,SAASs1B,cAAcA,CAAC50B,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EAC/C,IAAInC,OAAO,GAAG6C,IAAI,CAAC7C,OAAO;EAC1B,IAAIkC,MAAM,GAAGW,IAAI,CAACX,MAAM;EAExB,IAAI,CAAClC,OAAO,EAAE;IACZA,OAAO,GAAG,2CAA2C;EACvD;EACA,IAAIf,MAAM,GAAG;IACXmN,IAAI,EAAEpM;EACR,CAAC;EAED,IAAIkC,MAAM,EAAE;IACVjD,MAAM,CAACyvB,KAAK,GAAGtyB,KAAO,CAAC8F,MAAM,CAAC;EAChC;EAEA9F,GAAK,CAACyG,IAAI,EAAE,WAAW,EAAE;IAAE7C,OAAO,EAAEf;EAAO,CAAC,CAAC;EAC7CkD,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAAS60B,aAAaA,CAAC70B,IAAI,EAAoB;EAAA,IAAlBgzB,SAAS,GAAAruB,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,IAAI;EAC3C;EACA,IAAItG,KAAK,GAAG,CAAC20B,SAAS,IAAIhzB,IAAI,CAACgzB,SAAS,EAAE30B,KAAK;EAC/C,IACEA,KAAK,IACLA,KAAK,CAACzD,MAAM,KAAK,CAAC,IAClBoF,IAAI,CAAC80B,mBAAmB,IACxB90B,IAAI,CAAC80B,mBAAmB,CAACz2B,KAAK,EAC9B;IACAA,KAAK,GAAG2B,IAAI,CAAC80B,mBAAmB,CAACz2B,KAAK;EACxC;EACA,OAAOA,KAAK;AACd;AAEA,SAASq2B,iBAAiBA,CAAC10B,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EAClD,IAAI2lB,UAAU,GAAGjlB,IAAI,CAACgzB,SAAS,CAAC/N,UAAU;EAC1C,IAAI2B,MAAM,GAAG,EAAE;EAEf,IAAImO,gBAAgB,GAAG9P,UAAU,CAACrqB,MAAM;EACxC,KAAK,IAAIpD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGu9B,gBAAgB,EAAEv9B,CAAC,EAAE,EAAE;IACzC,IAAIyjB,KAAK,GAAG+Z,UAAU,CAACh1B,IAAI,EAAEilB,UAAU,CAACztB,CAAC,CAAC,EAAE0D,OAAO,CAAC;IACpD0rB,MAAM,CAACrrB,IAAI,CAAC0f,KAAK,CAAC;EACpB;EAEA1hB,GAAK,CAACyG,IAAI,EAAE,WAAW,EAAE;IAAE+a,WAAW,EAAE6L;EAAO,CAAC,CAAC;EACjDtnB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAAS20B,YAAYA,CAAC30B,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EAC7C,IAAIjB,KAAK,GAAGw2B,aAAa,CAAC70B,IAAI,CAAC;EAE/B,IAAI3B,KAAK,EAAE;IACT,IAAI4c,KAAK,GAAG+Z,UAAU,CAACh1B,IAAI,EAAEA,IAAI,CAACgzB,SAAS,EAAE93B,OAAO,CAAC;IACrD3B,GAAK,CAACyG,IAAI,EAAE,WAAW,EAAE;MAAEib,KAAK,EAAEA;IAAM,CAAC,CAAC;IAC1C3b,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;EACtB,CAAC,MAAM;IACL,IAAIgzB,SAAS,GAAGhzB,IAAI,CAACgzB,SAAS;IAC9B,IAAIiC,KAAK,GAAGz3B,WAAW,CAAC0nB,eAAe,CAAC8N,SAAS,CAAC71B,OAAO,CAAC;IAC1D,IAAI+3B,SAAS,GAAGC,UAAU,CAACnC,SAAS,EAAEiC,KAAK,CAAC,CAAC,CAAC,EAAE/5B,OAAO,CAAC;IACxD,IAAIiC,OAAO,GAAG83B,KAAK,CAAC,CAAC,CAAC;IAEtBj1B,IAAI,CAAC7C,OAAO,GAAG+3B,SAAS,GAAG,IAAI,GAAG/3B,OAAO;IACzCy3B,cAAc,CAAC50B,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,CAAC;EACzC;AACF;AAEA,SAAS01B,UAAUA,CAACh1B,IAAI,EAAEgzB,SAAS,EAAE93B,OAAO,EAAE;EAC5C,IAAIsgB,WAAW,GAAGxb,IAAI,IAAIA,IAAI,CAACE,IAAI,CAACsb,WAAW;EAC/C,IAAInc,MAAM,GAAGW,IAAI,IAAIA,IAAI,CAACX,MAAM;EAChC,IAAIhB,KAAK,GAAGw2B,aAAa,CAAC70B,IAAI,EAAEgzB,SAAS,CAAC;EAE1C,IAAIiC,KAAK,GAAGz3B,WAAW,CAAC0nB,eAAe,CAAC8N,SAAS,CAAC71B,OAAO,CAAC;EAC1D,IAAI+3B,SAAS,GAAGC,UAAU,CAACnC,SAAS,EAAEiC,KAAK,CAAC,CAAC,CAAC,EAAE/5B,OAAO,CAAC;EACxD,IAAIiC,OAAO,GAAG83B,KAAK,CAAC,CAAC,CAAC;EACtB,IAAIha,KAAK,GAAG;IACVM,SAAS,EAAE;MACT6Z,KAAK,EAAEF,SAAS;MAChB/3B,OAAO,EAAEA;IACX;EACF,CAAC;EAED,IAAIqe,WAAW,EAAE;IACfP,KAAK,CAACM,SAAS,CAACC,WAAW,GAAGA,WAAW;EAC3C;EAEA,IAAInd,KAAK,EAAE;IACT,IAAIA,KAAK,CAACzD,MAAM,KAAK,CAAC,EAAE;MACtBqgB,KAAK,CAACM,SAAS,CAACld,KAAK,GAAG20B,SAAS,CAACnO,QAAQ;MAC1C5J,KAAK,CAACM,SAAS,CAACd,GAAG,GAAGvjB,MAAM,CAAC87B,SAAS,CAAClO,YAAY,CAAC;IACtD;IACA,IAAIR,UAAU;IACd,IAAIgC,KAAK;IACT,IAAIzpB,IAAI;IACR,IAAIw4B,GAAG;IACP,IAAIvjB,IAAI;IACR,IAAIwjB,aAAa;IACjB,IAAI99B,CAAC,EAAE+9B,GAAG;IAEVta,KAAK,CAACL,MAAM,GAAG,EAAE;IACjB,KAAKpjB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6G,KAAK,CAACzD,MAAM,EAAE,EAAEpD,CAAC,EAAE;MACjC8sB,UAAU,GAAGjmB,KAAK,CAAC7G,CAAC,CAAC;MACrB8uB,KAAK,GAAG;QACNC,QAAQ,EAAEjC,UAAU,CAACprB,GAAG,GAAGK,WAAa,CAAC+qB,UAAU,CAACprB,GAAG,CAAC,GAAG,WAAW;QACtEkE,MAAM,EAAEknB,UAAU,CAAC5mB,IAAI,IAAI,IAAI;QAC/B+M,MAAM,EACJ,CAAC6Z,UAAU,CAAC1mB,IAAI,IAAI0mB,UAAU,CAAC1mB,IAAI,KAAK,GAAG,GACvC,aAAa,GACb0mB,UAAU,CAAC1mB,IAAI;QACrBP,KAAK,EAAEinB,UAAU,CAAC3mB;MACpB,CAAC;MACD,IAAIzC,OAAO,CAACs6B,YAAY,EAAE;QACxBlP,KAAK,CAACptB,GAAG,GAAGorB,UAAU,CAACprB,GAAG;MAC5B;MACA,IACEotB,KAAK,CAAC7b,MAAM,IACZ6b,KAAK,CAAC7b,MAAM,CAACgrB,QAAQ,IACrBnP,KAAK,CAAC7b,MAAM,CAACgrB,QAAQ,CAAC,kBAAkB,CAAC,EACzC;QACA;MACF;MAEA54B,IAAI,GAAGw4B,GAAG,GAAGvjB,IAAI,GAAG,IAAI;MACxBwjB,aAAa,GAAGhR,UAAU,CAACxmB,OAAO,GAAGwmB,UAAU,CAACxmB,OAAO,CAAClD,MAAM,GAAG,CAAC;MAClE,IAAI06B,aAAa,EAAE;QACjBC,GAAG,GAAG/8B,IAAI,CAACE,KAAK,CAAC48B,aAAa,GAAG,CAAC,CAAC;QACnCD,GAAG,GAAG/Q,UAAU,CAACxmB,OAAO,CAACiB,KAAK,CAAC,CAAC,EAAEw2B,GAAG,CAAC;QACtC14B,IAAI,GAAGynB,UAAU,CAACxmB,OAAO,CAACy3B,GAAG,CAAC;QAC9BzjB,IAAI,GAAGwS,UAAU,CAACxmB,OAAO,CAACiB,KAAK,CAACw2B,GAAG,CAAC;MACtC;MAEA,IAAI14B,IAAI,EAAE;QACRypB,KAAK,CAACzpB,IAAI,GAAGA,IAAI;MACnB;MAEA,IAAIw4B,GAAG,IAAIvjB,IAAI,EAAE;QACfwU,KAAK,CAACxoB,OAAO,GAAG,CAAC,CAAC;QAClB,IAAIu3B,GAAG,IAAIA,GAAG,CAACz6B,MAAM,EAAE;UACrB0rB,KAAK,CAACxoB,OAAO,CAACu3B,GAAG,GAAGA,GAAG;QACzB;QACA,IAAIvjB,IAAI,IAAIA,IAAI,CAAClX,MAAM,EAAE;UACvB0rB,KAAK,CAACxoB,OAAO,CAACgU,IAAI,GAAGA,IAAI;QAC3B;MACF;MAEA,IAAIwS,UAAU,CAACrlB,IAAI,EAAE;QACnBqnB,KAAK,CAACrnB,IAAI,GAAGqlB,UAAU,CAACrlB,IAAI;MAC9B;MAEAgc,KAAK,CAACL,MAAM,CAACrf,IAAI,CAAC+qB,KAAK,CAAC;IAC1B;;IAEA;IACArL,KAAK,CAACL,MAAM,CAAC8a,OAAO,CAAC,CAAC;IAEtB,IAAIr2B,MAAM,EAAE;MACV4b,KAAK,CAAC4Q,KAAK,GAAGtyB,KAAO,CAAC8F,MAAM,CAAC;IAC/B;EACF;EAEA,OAAO4b,KAAK;AACd;AAEA,SAASka,UAAUA,CAACnC,SAAS,EAAEiC,KAAK,EAAE/5B,OAAO,EAAE;EAC7C,IAAI83B,SAAS,CAACx9B,IAAI,EAAE;IAClB,OAAOw9B,SAAS,CAACx9B,IAAI;EACvB,CAAC,MAAM,IAAI0F,OAAO,CAACgqB,eAAe,EAAE;IAClC,OAAO+P,KAAK;EACd,CAAC,MAAM;IACL,OAAO,WAAW;EACpB;AACF;AAEA,SAASU,WAAWA,CAACC,OAAO,EAAE;EAC5B,OAAO,UAAU51B,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;IACxC,IAAIs2B,OAAO,EAAE;MACX,IAAI9xB,WAAW,GAAG5I,OAAO,CAAC4I,WAAW,IAAI,EAAE;MAC3C,IAAIsB,UAAU,GAAGlK,OAAO,CAACkK,UAAU,IAAI,EAAE;MACzCpF,IAAI,CAACE,IAAI,GAAG01B,OAAO,CAAC51B,IAAI,CAACE,IAAI,EAAE4D,WAAW,EAAEsB,UAAU,CAAC;IACzD;IACA9F,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;EACtB,CAAC;AACH;;;;;;;;;ACxVqC;AACC;AAEtC,SAAS61B,gBAAgBA,CAAAjtB,IAAA,EAQtB;EAAA,IAPD3N,WAAW,GAAA2N,IAAA,CAAX3N,WAAW;IACX/B,GAAG,GAAA0P,IAAA,CAAH1P,GAAG;IACHuR,MAAM,GAAA7B,IAAA,CAAN6B,MAAM;IACN9G,OAAO,GAAAiF,IAAA,CAAPjF,OAAO;IACPkH,OAAO,GAAAjC,IAAA,CAAPiC,OAAO;IACPvL,QAAQ,GAAAsJ,IAAA,CAARtJ,QAAQ;IACR+c,OAAO,GAAAzT,IAAA,CAAPyT,OAAO;EAEP,IAAIyZ,UAAU;EACd,IAAIC,SAAS;EAEb,IAAIx8B,cAAgB,CAAC8iB,OAAO,CAAC,EAAE;IAC7ByZ,UAAU,GAAG,IAAIE,eAAe,CAAC,CAAC;IAClCD,SAAS,GAAG9V,UAAU,CAAC,YAAY;MACjC6V,UAAU,CAACG,KAAK,CAAC,CAAC;IACpB,CAAC,EAAE5Z,OAAO,CAAC;EACb;EAEAxR,OAAO,GAAAd,kBAAA;IACL,cAAc,EAAE,kBAAkB;IAClC,wBAAwB,EAAE9O,WAAW;IACrCi7B,MAAM,EAAEJ,UAAU,IAAIA,UAAU,CAACI;EAAM,GACpCrrB,OAAO,CACX;EAEDgS,KAAK,CAAC3jB,GAAG,EAAE;IACTuR,MAAM,EAANA,MAAM;IACNI,OAAO,EAAPA,OAAO;IACPtB,IAAI,EAAE5F;EACR,CAAC,CAAC,CACC7L,IAAI,CAAC,UAAU8S,QAAQ,EAAE;IACxB,IAAImrB,SAAS,EAAEI,YAAY,CAACJ,SAAS,CAAC;IACtC,IAAMK,WAAW,GAAGxrB,QAAQ,CAACC,OAAO;IAEpC,IAAMwrB,WAAW,GAAGn9B,GAAG,CAACu8B,QAAQ,CAAC,cAAc,CAAC;IAChD,IAAM5qB,OAAO,GAAGwrB,WAAW,GACvB;MACE,wBAAwB,EAAED,WAAW,CAACj0B,GAAG,CAAC,wBAAwB,CAAC;MACnE,oCAAoC,EAAEi0B,WAAW,CAACj0B,GAAG,CACnD,oCACF,CAAC;MACD,gCAAgC,EAAEi0B,WAAW,CAACj0B,GAAG,CAC/C,gCACF;IACF,CAAC,GACD,CAAC,CAAC;IAEN,IAAMm0B,IAAI,GAAG1rB,QAAQ,CAAC0rB,IAAI,CAAC,CAAC;IAC5Bh3B,QAAQ,CAAC,IAAI,EAAEg3B,IAAI,EAAEzrB,OAAO,CAAC;EAC/B,CAAC,CAAC,CACD0rB,KAAK,CAAC,UAAUx9B,KAAK,EAAE;IACtBwF,UAAM,CAACxF,KAAK,CAACA,KAAK,CAACoE,OAAO,CAAC;IAC3BmC,QAAQ,CAACvG,KAAK,CAAC;EACjB,CAAC,CAAC;AACN;AAEA,oDAAe88B,gBAAgB,E;;;;;;;;AC5D/B;;AAEqC;AACC;AAEtC,SAASW,cAAcA,CAAA5tB,IAAA,EASpB;EAAA,IARD3N,WAAW,GAAA2N,IAAA,CAAX3N,WAAW;IACX/B,GAAG,GAAA0P,IAAA,CAAH1P,GAAG;IACHuR,MAAM,GAAA7B,IAAA,CAAN6B,MAAM;IACN9G,OAAO,GAAAiF,IAAA,CAAPjF,OAAO;IACPkH,OAAO,GAAAjC,IAAA,CAAPiC,OAAO;IACPvL,QAAQ,GAAAsJ,IAAA,CAARtJ,QAAQ;IACRm3B,cAAc,GAAA7tB,IAAA,CAAd6tB,cAAc;IACdpa,OAAO,GAAAzT,IAAA,CAAPyT,OAAO;EAEP,IAAI9c,OAAO;EACX,IAAIk3B,cAAc,EAAE;IAClBl3B,OAAO,GAAGk3B,cAAc,CAAC,CAAC;EAC5B,CAAC,MAAM;IACLl3B,OAAO,GAAGm3B,oBAAoB,CAAC,CAAC;EAClC;EACA,IAAI,CAACn3B,OAAO,EAAE;IACZ;IACA,OAAOD,QAAQ,CAAC,IAAI5J,KAAK,CAAC,0BAA0B,CAAC,CAAC;EACxD;EACA,IAAI;IACF,IAAI;MACF,IAAIihC,mBAAkB,GAAG,SAArBA,kBAAkBA,CAAA,EAAe;QACnC,IAAI;UACF,IAAIA,mBAAkB,IAAIp3B,OAAO,CAACq3B,UAAU,KAAK,CAAC,EAAE;YAClDD,mBAAkB,GAAGr8B,SAAS;YAE9B,IAAIu8B,aAAa,GAAGt9B,SAAW,CAACgG,OAAO,CAACu3B,YAAY,CAAC;YACrD,IAAIC,UAAU,CAACx3B,OAAO,CAAC,EAAE;cACvB,IAAM82B,WAAW,GAAGn9B,GAAG,CAACu8B,QAAQ,CAAC,cAAc,CAAC;cAEhD,IAAM5qB,QAAO,GAAGwrB,WAAW,GACvB;gBACE,wBAAwB,EAAE92B,OAAO,CAACy3B,iBAAiB,CACjD,wBACF,CAAC;gBACD,oCAAoC,EAClCz3B,OAAO,CAACy3B,iBAAiB,CACvB,oCACF,CAAC;gBACH,gCAAgC,EAAEz3B,OAAO,CAACy3B,iBAAiB,CACzD,gCACF;cACF,CAAC,GACD,CAAC,CAAC;cACN13B,QAAQ,CAACu3B,aAAa,CAAC99B,KAAK,EAAE89B,aAAa,CAAChgC,KAAK,EAAEgU,QAAO,CAAC;cAC3D;YACF,CAAC,MAAM,IAAIosB,gBAAgB,CAAC13B,OAAO,CAAC,EAAE;cACpC,IAAIA,OAAO,CAAC6Y,MAAM,KAAK,GAAG,EAAE;gBAC1B;gBACA,IAAIjb,OAAO,GACT05B,aAAa,CAAChgC,KAAK,IAAIggC,aAAa,CAAChgC,KAAK,CAACsG,OAAO;gBACpDoB,UAAM,CAACxF,KAAK,CAACoE,OAAO,CAAC;cACvB;cACA;cACAmC,QAAQ,CAAC,IAAI5J,KAAK,CAACwB,MAAM,CAACqI,OAAO,CAAC6Y,MAAM,CAAC,CAAC,CAAC;YAC7C,CAAC,MAAM;cACL;cACA;cACA;cACA,IAAIwT,GAAG,GACL,6DAA6D;cAC/DtsB,QAAQ,CAAC43B,kBAAkB,CAACtL,GAAG,CAAC,CAAC;YACnC;UACF;QACF,CAAC,CAAC,OAAOuL,EAAE,EAAE;UACX;UACA;UACA;UACA,IAAIC,GAAG;UACP,IAAID,EAAE,IAAIA,EAAE,CAAC94B,KAAK,EAAE;YAClB+4B,GAAG,GAAGD,EAAE;UACV,CAAC,MAAM;YACLC,GAAG,GAAG,IAAI1hC,KAAK,CAACyhC,EAAE,CAAC;UACrB;UACA73B,QAAQ,CAAC83B,GAAG,CAAC;QACf;MACF,CAAC;MAED73B,OAAO,CAAC83B,IAAI,CAAC5sB,MAAM,EAAEvR,GAAG,EAAE,IAAI,CAAC;MAC/B,IAAIqG,OAAO,CAAC+3B,gBAAgB,EAAE;QAC5B/3B,OAAO,CAAC+3B,gBAAgB,CAAC,cAAc,EAAE,kBAAkB,CAAC;QAC5D/3B,OAAO,CAAC+3B,gBAAgB,CAAC,wBAAwB,EAAEr8B,WAAW,CAAC;QAC/D,SAAA0d,EAAA,MAAAC,eAAA,GAAqBtiB,MAAM,CAAC8P,OAAO,CAACyE,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,CAAC,CAAC,CAAC,EAAA8N,EAAA,GAAAC,eAAA,CAAAhe,MAAA,EAAA+d,EAAA,IAAE;UAA/C,IAAAE,kBAAA,GAAAtS,iBAAA,CAAAqS,eAAA,CAAAD,EAAA;YAAO9c,CAAC,GAAAgd,kBAAA;YAAEhU,CAAC,GAAAgU,kBAAA;UACdtZ,OAAO,CAAC+3B,gBAAgB,CAACz7B,CAAC,EAAEgJ,CAAC,CAAC;QAChC;MACF;MAEA,IAAItL,cAAgB,CAAC8iB,OAAO,CAAC,EAAE;QAC7B9c,OAAO,CAAC8c,OAAO,GAAGA,OAAO;MAC3B;MAEA9c,OAAO,CAACo3B,kBAAkB,GAAGA,mBAAkB;MAC/Cp3B,OAAO,CAACg4B,IAAI,CAAC5zB,OAAO,CAAC;IACvB,CAAC,CAAC,OAAO6zB,GAAG,EAAE;MACZ;MACA,IAAI,OAAOC,cAAc,KAAK,WAAW,EAAE;QACzC;QACA;;QAEA;QACA,IAAI,CAACz/B,MAAM,IAAI,CAACA,MAAM,CAACyF,QAAQ,EAAE;UAC/B,OAAO6B,QAAQ,CACb,IAAI5J,KAAK,CACP,yDACF,CACF,CAAC;QACH;;QAEA;QACA,IACEsC,MAAM,CAACyF,QAAQ,CAACO,IAAI,CAAClC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,IAChD5C,GAAG,CAAC4C,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,EAC/B;UACA5C,GAAG,GAAG,MAAM,GAAGA,GAAG,CAAC4C,SAAS,CAAC,CAAC,CAAC;QACjC;QAEA,IAAI47B,cAAc,GAAG,IAAID,cAAc,CAAC,CAAC;QACzCC,cAAc,CAACC,UAAU,GAAG,YAAM,CAAC,CAAC;QACpCD,cAAc,CAACE,SAAS,GAAG,YAAY;UACrC,IAAIhM,GAAG,GAAG,mBAAmB;UAC7B,IAAI/uB,IAAI,GAAG,WAAW;UACtByC,QAAQ,CAAC43B,kBAAkB,CAACtL,GAAG,EAAE/uB,IAAI,CAAC,CAAC;QACzC,CAAC;QACD66B,cAAc,CAACjI,OAAO,GAAG,YAAY;UACnCnwB,QAAQ,CAAC,IAAI5J,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC7C,CAAC;QACDgiC,cAAc,CAACG,MAAM,GAAG,YAAY;UAClC,IAAIhB,aAAa,GAAGt9B,SAAW,CAACm+B,cAAc,CAACZ,YAAY,CAAC;UAC5Dx3B,QAAQ,CAACu3B,aAAa,CAAC99B,KAAK,EAAE89B,aAAa,CAAChgC,KAAK,CAAC;QACpD,CAAC;QACD6gC,cAAc,CAACL,IAAI,CAAC5sB,MAAM,EAAEvR,GAAG,EAAE,IAAI,CAAC;QACtCw+B,cAAc,CAACH,IAAI,CAAC5zB,OAAO,CAAC;MAC9B,CAAC,MAAM;QACLrE,QAAQ,CAAC,IAAI5J,KAAK,CAAC,6CAA6C,CAAC,CAAC;MACpE;IACF;EACF,CAAC,CAAC,OAAOw9B,EAAE,EAAE;IACX5zB,QAAQ,CAAC4zB,EAAE,CAAC;EACd;AACF;AAEA,SAASwD,oBAAoBA,CAAA,EAAG;EAC9B;;EAEA,IAAIoB,SAAS,GAAG,CACd,YAAY;IACV,OAAO,IAAIhb,cAAc,CAAC,CAAC;EAC7B,CAAC,EACD,YAAY;IACV,OAAO,IAAIib,aAAa,CAAC,gBAAgB,CAAC;EAC5C,CAAC,EACD,YAAY;IACV,OAAO,IAAIA,aAAa,CAAC,gBAAgB,CAAC;EAC5C,CAAC,EACD,YAAY;IACV,OAAO,IAAIA,aAAa,CAAC,mBAAmB,CAAC;EAC/C,CAAC,CACF;EACD,IAAIC,OAAO;EACX,IAAIxgC,CAAC;EACL,IAAIygC,YAAY,GAAGH,SAAS,CAACl9B,MAAM;EACnC,KAAKpD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGygC,YAAY,EAAEzgC,CAAC,EAAE,EAAE;IACjC,IAAI;MACFwgC,OAAO,GAAGF,SAAS,CAACtgC,CAAC,CAAC,CAAC,CAAC;MACxB;IACF,CAAC,CAAC,OAAO8K,EAAE,EAAE;MACX;IAAA;EAEJ;EACA,OAAO01B,OAAO;AAChB;AAEA,SAASjB,UAAUA,CAACx+B,CAAC,EAAE;EACrB,OAAOA,CAAC,IAAIA,CAAC,CAAC6f,MAAM,IAAI7f,CAAC,CAAC6f,MAAM,KAAK,GAAG;AAC1C;AAEA,SAAS6e,gBAAgBA,CAAC1+B,CAAC,EAAE;EAC3B,OAAOA,CAAC,IAAIgB,MAAQ,CAAChB,CAAC,CAAC6f,MAAM,EAAE,QAAQ,CAAC,IAAI7f,CAAC,CAAC6f,MAAM,IAAI,GAAG,IAAI7f,CAAC,CAAC6f,MAAM,GAAG,GAAG;AAC/E;AAEA,SAAS8e,kBAAkBA,CAAC/5B,OAAO,EAAEN,IAAI,EAAE;EACzC,IAAI2B,GAAG,GAAG,IAAI9I,KAAK,CAACyH,OAAO,CAAC;EAC5BqB,GAAG,CAAC3B,IAAI,GAAGA,IAAI,IAAI,WAAW;EAC9B,OAAO2B,GAAG;AACZ;AAEA,wCAAeg4B,cAAc,E;;AChMM;AAEiB;AACJ;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS0B,SAASA,CAACxY,UAAU,EAAE;EAC7B,IAAI,CAACA,UAAU,GAAGA,UAAU;AAC9B;AAEAwY,SAAS,CAAC7hC,SAAS,CAAC8L,GAAG,GAAG,UACxBlH,WAAW,EACXC,OAAO,EACPC,MAAM,EACNmE,QAAQ,EACRm3B,cAAc,EACd;EACA,IAAI,CAACn3B,QAAQ,IAAI,CAAC/F,UAAY,CAAC+F,QAAQ,CAAC,EAAE;IACxCA,QAAQ,GAAG,SAAXA,QAAQA,CAAA,EAAS,CAAC,CAAC;EACrB;EACA/F,6BAA+B,CAAC0B,WAAW,EAAEC,OAAO,EAAEC,MAAM,CAAC;EAE7D,IAAIsP,MAAM,GAAG,KAAK;EAClB,IAAIvR,GAAG,GAAGK,SAAW,CAAC2B,OAAO,CAAC;EAC9B,IAAI,CAACi9B,gBAAgB,CAAC;IACpBl9B,WAAW,EAAXA,WAAW;IACX/B,GAAG,EAAHA,GAAG;IACHuR,MAAM,EAANA,MAAM;IACNnL,QAAQ,EAARA,QAAQ;IACRm3B,cAAc,EAAdA,cAAc;IACdpa,OAAO,EAAEnhB,OAAO,CAACmhB,OAAO;IACxBC,SAAS,EAAEphB,OAAO,CAACohB;EACrB,CAAC,CAAC;AACJ,CAAC;AAED4b,SAAS,CAAC7hC,SAAS,CAACyb,IAAI,GAAG,UAAAlJ,IAAA,EAOxB;EAAA,IAND3N,WAAW,GAAA2N,IAAA,CAAX3N,WAAW;IACXC,OAAO,GAAA0N,IAAA,CAAP1N,OAAO;IACPyI,OAAO,GAAAiF,IAAA,CAAPjF,OAAO;IACPkH,OAAO,GAAAjC,IAAA,CAAPiC,OAAO;IACPvL,QAAQ,GAAAsJ,IAAA,CAARtJ,QAAQ;IACRm3B,cAAc,GAAA7tB,IAAA,CAAd6tB,cAAc;EAEd,IAAI,CAACn3B,QAAQ,IAAI,CAAC/F,UAAY,CAAC+F,QAAQ,CAAC,EAAE;IACxCA,QAAQ,GAAG,SAAXA,QAAQA,CAAA,EAAS,CAAC,CAAC;EACrB;EAEA,IAAI,CAACqE,OAAO,EAAE;IACZ,OAAOrE,QAAQ,CAAC,IAAI5J,KAAK,CAAC,2BAA2B,CAAC,CAAC;EACzD;EAEA,IAAI8qB,eAAe;EACnB;EACA,IAAI,IAAI,CAACd,UAAU,IAAI/b,OAAO,CAAC4F,IAAI,EAAE;IACnCiX,eAAe,GAAG,IAAI,CAACd,UAAU,CAAC7D,QAAQ,CAAClY,OAAO,CAAC;EACrD,CAAC,MAAM;IACL6c,eAAe,GAAGjnB,SAAW,CAACoK,OAAO,CAAC;EACxC;EACA,IAAI6c,eAAe,CAACznB,KAAK,EAAE;IACzB,OAAOuG,QAAQ,CAACkhB,eAAe,CAACznB,KAAK,CAAC;EACxC;EAEA,IAAI0R,MAAM,GAAG,MAAM;EACnB,IAAIvR,GAAG,GAAGK,SAAW,CAAC2B,OAAO,CAAC;EAC9B,IAAI,CAACi9B,gBAAgB,CAAC;IACpBl9B,WAAW,EAAXA,WAAW;IACX/B,GAAG,EAAHA,GAAG;IACHuR,MAAM,EAANA,MAAM;IACN9G,OAAO,EAAE6c,eAAe,CAAC3pB,KAAK;IAC9BgU,OAAO,EAAPA,OAAO;IACPvL,QAAQ,EAARA,QAAQ;IACRm3B,cAAc,EAAdA,cAAc;IACdpa,OAAO,EAAEnhB,OAAO,CAACmhB,OAAO;IACxBC,SAAS,EAAEphB,OAAO,CAACohB;EACrB,CAAC,CAAC;AACJ,CAAC;AAED4b,SAAS,CAAC7hC,SAAS,CAACoqB,eAAe,GAAG,UACpCxlB,WAAW,EACXC,OAAO,EACPyI,OAAO,EACPrE,QAAQ,EACRm3B,cAAc,EACd;EACA,IAAI,CAACn3B,QAAQ,IAAI,CAAC/F,UAAY,CAAC+F,QAAQ,CAAC,EAAE;IACxCA,QAAQ,GAAG,SAAXA,QAAQA,CAAA,EAAS,CAAC,CAAC;EACrB;EAEA,IAAImL,MAAM,GAAG,MAAM;EACnB,IAAIvR,GAAG,GAAGK,SAAW,CAAC2B,OAAO,CAAC;EAC9B,IAAI,CAACi9B,gBAAgB,CAAC;IACpBl9B,WAAW,EAAXA,WAAW;IACX/B,GAAG,EAAHA,GAAG;IACHuR,MAAM,EAANA,MAAM;IACN9G,OAAO,EAAPA,OAAO;IACPrE,QAAQ,EAARA,QAAQ;IACRm3B,cAAc,EAAdA,cAAc;IACdpa,OAAO,EAAEnhB,OAAO,CAACmhB,OAAO;IACxBC,SAAS,EAAEphB,OAAO,CAACohB;EACrB,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA4b,SAAS,CAAC7hC,SAAS,CAAC8hC,gBAAgB,GAAG,YAAY;EAAA,IAAArnB,KAAA;EACjD,IAAI6I,OAAO,GACR,OAAO3hB,MAAM,KAAK,WAAW,IAAIA,MAAM,IACvC,OAAO2W,IAAI,KAAK,WAAW,IAAIA,IAAK;EACvC;EACA;EACA;EACA;EACA,IAAIypB,QAAQ,GAAGze,OAAO,IAAIA,OAAO,CAAC0e,IAAI,IAAI1e,OAAO,CAAC0e,IAAI,CAACC,IAAI;EAC3D,IAAIr5B,IAAI,GAAGuJ,KAAK,CAACnS,SAAS,CAAC0I,KAAK,CAACnJ,IAAI,CAAC+O,SAAS,CAAC;EAEhD,IAAIyzB,QAAQ,EAAE;IACZA,QAAQ,CAACG,GAAG,CAAC,YAAM;MACjBznB,KAAI,CAAC0nB,YAAY,CAAC/oB,KAAK,CAACnV,SAAS,EAAE2E,IAAI,CAAC;IAC1C,CAAC,CAAC;EACJ,CAAC,MAAM;IACL,IAAI,CAACu5B,YAAY,CAAC/oB,KAAK,CAACnV,SAAS,EAAE2E,IAAI,CAAC;EAC1C;AACF,CAAC;AAEDi5B,SAAS,CAAC7hC,SAAS,CAACmiC,YAAY,GAAG,UAAUr9B,MAAM,EAAE;EACnD,IAAQwI,OAAO,GAA0BxI,MAAM,CAAvCwI,OAAO;IAAErE,QAAQ,GAAgBnE,MAAM,CAA9BmE,QAAQ;IAAEgd,SAAS,GAAKnhB,MAAM,CAApBmhB,SAAS;EACpC,IAAI,OAAOmc,YAAY,KAAK,WAAW,EAAE;IACvC,OAAOC,aAAa,CAAC/0B,OAAO,EAAErE,QAAQ,CAAC;EACzC;EAEA,IAAIgd,SAAS,KAAK,OAAO,EAAE;IACzBuZ,eAAgB,CAAC16B,MAAM,CAAC;EAC1B,CAAC,MAAM;IACLq7B,GAAc,CAACr7B,MAAM,CAAC;EACxB;AACF,CAAC;;AAED;AACA,SAASu9B,aAAaA,CAACpC,IAAI,EAAEh3B,QAAQ,EAAE;EACrC,IAAIq5B,YAAY,GAAG,IAAIF,YAAY,CAAC,CAAC;EACrCE,YAAY,CAACjM,eAAe,CAC1B4J,IAAI,EACJ,UAAUsC,IAAI,EAAE;IACd;EAAA,CACD,EACD,UAAUp6B,GAAG,EAAE;IACbc,QAAQ,CAAC,IAAI5J,KAAK,CAAC8I,GAAG,CAAC,CAAC;EAC1B,CACF,CAAC;AACH;AAEA,sDAAe05B,SAAS,E;;ACzKxB;AACA,SAASj7B,SAAKA,CAAC/D,GAAG,EAAE;EAClB,IAAIkD,MAAM,GAAG;IACXH,QAAQ,EAAE,IAAI;IACd48B,IAAI,EAAE,IAAI;IACV5b,IAAI,EAAE,IAAI;IACVvhB,IAAI,EAAE,IAAI;IACVo9B,IAAI,EAAE,IAAI;IACV96B,IAAI,EAAE9E,GAAG;IACTiD,QAAQ,EAAE,IAAI;IACdD,IAAI,EAAE,IAAI;IACVygB,QAAQ,EAAE,IAAI;IACdrjB,MAAM,EAAE,IAAI;IACZO,KAAK,EAAE;EACT,CAAC;EAED,IAAIrC,CAAC,EAAE0O,IAAI;EACX1O,CAAC,GAAG0B,GAAG,CAAC0C,OAAO,CAAC,IAAI,CAAC;EACrB,IAAIpE,CAAC,KAAK,CAAC,CAAC,EAAE;IACZ4E,MAAM,CAACH,QAAQ,GAAG/C,GAAG,CAAC4C,SAAS,CAAC,CAAC,EAAEtE,CAAC,CAAC;IACrC0O,IAAI,GAAG1O,CAAC,GAAG,CAAC;EACd,CAAC,MAAM;IACL0O,IAAI,GAAG,CAAC;EACV;EAEA1O,CAAC,GAAG0B,GAAG,CAAC0C,OAAO,CAAC,GAAG,EAAEsK,IAAI,CAAC;EAC1B,IAAI1O,CAAC,KAAK,CAAC,CAAC,EAAE;IACZ4E,MAAM,CAACy8B,IAAI,GAAG3/B,GAAG,CAAC4C,SAAS,CAACoK,IAAI,EAAE1O,CAAC,CAAC;IACpC0O,IAAI,GAAG1O,CAAC,GAAG,CAAC;EACd;EAEAA,CAAC,GAAG0B,GAAG,CAAC0C,OAAO,CAAC,GAAG,EAAEsK,IAAI,CAAC;EAC1B,IAAI1O,CAAC,KAAK,CAAC,CAAC,EAAE;IACZA,CAAC,GAAG0B,GAAG,CAAC0C,OAAO,CAAC,GAAG,EAAEsK,IAAI,CAAC;IAC1B,IAAI1O,CAAC,KAAK,CAAC,CAAC,EAAE;MACZA,CAAC,GAAG0B,GAAG,CAAC0C,OAAO,CAAC,GAAG,EAAEsK,IAAI,CAAC;MAC1B,IAAI1O,CAAC,KAAK,CAAC,CAAC,EAAE;QACZ4E,MAAM,CAAC6gB,IAAI,GAAG/jB,GAAG,CAAC4C,SAAS,CAACoK,IAAI,CAAC;MACnC,CAAC,MAAM;QACL9J,MAAM,CAAC6gB,IAAI,GAAG/jB,GAAG,CAAC4C,SAAS,CAACoK,IAAI,EAAE1O,CAAC,CAAC;QACpC4E,MAAM,CAAC08B,IAAI,GAAG5/B,GAAG,CAAC4C,SAAS,CAACtE,CAAC,CAAC;MAChC;MACA4E,MAAM,CAACD,QAAQ,GAAGC,MAAM,CAAC6gB,IAAI,CAAC5a,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC3CjG,MAAM,CAACF,IAAI,GAAGE,MAAM,CAAC6gB,IAAI,CAAC5a,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACvC,IAAIjG,MAAM,CAACF,IAAI,EAAE;QACfE,MAAM,CAACF,IAAI,GAAG68B,QAAQ,CAAC38B,MAAM,CAACF,IAAI,EAAE,EAAE,CAAC;MACzC;MACA,OAAOE,MAAM;IACf,CAAC,MAAM;MACLA,MAAM,CAAC6gB,IAAI,GAAG/jB,GAAG,CAAC4C,SAAS,CAACoK,IAAI,EAAE1O,CAAC,CAAC;MACpC4E,MAAM,CAACD,QAAQ,GAAGC,MAAM,CAAC6gB,IAAI,CAAC5a,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC3CjG,MAAM,CAACF,IAAI,GAAGE,MAAM,CAAC6gB,IAAI,CAAC5a,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACvC,IAAIjG,MAAM,CAACF,IAAI,EAAE;QACfE,MAAM,CAACF,IAAI,GAAG68B,QAAQ,CAAC38B,MAAM,CAACF,IAAI,EAAE,EAAE,CAAC;MACzC;MACAgK,IAAI,GAAG1O,CAAC;IACV;EACF,CAAC,MAAM;IACL4E,MAAM,CAAC6gB,IAAI,GAAG/jB,GAAG,CAAC4C,SAAS,CAACoK,IAAI,EAAE1O,CAAC,CAAC;IACpC4E,MAAM,CAACD,QAAQ,GAAGC,MAAM,CAAC6gB,IAAI,CAAC5a,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3CjG,MAAM,CAACF,IAAI,GAAGE,MAAM,CAAC6gB,IAAI,CAAC5a,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvC,IAAIjG,MAAM,CAACF,IAAI,EAAE;MACfE,MAAM,CAACF,IAAI,GAAG68B,QAAQ,CAAC38B,MAAM,CAACF,IAAI,EAAE,EAAE,CAAC;IACzC;IACAgK,IAAI,GAAG1O,CAAC;EACV;EAEAA,CAAC,GAAG0B,GAAG,CAAC0C,OAAO,CAAC,GAAG,EAAEsK,IAAI,CAAC;EAC1B,IAAI1O,CAAC,KAAK,CAAC,CAAC,EAAE;IACZ4E,MAAM,CAACV,IAAI,GAAGxC,GAAG,CAAC4C,SAAS,CAACoK,IAAI,CAAC;EACnC,CAAC,MAAM;IACL9J,MAAM,CAACV,IAAI,GAAGxC,GAAG,CAAC4C,SAAS,CAACoK,IAAI,EAAE1O,CAAC,CAAC;IACpC4E,MAAM,CAAC08B,IAAI,GAAG5/B,GAAG,CAAC4C,SAAS,CAACtE,CAAC,CAAC;EAChC;EAEA,IAAI4E,MAAM,CAACV,IAAI,EAAE;IACf,IAAIs9B,SAAS,GAAG58B,MAAM,CAACV,IAAI,CAAC2G,KAAK,CAAC,GAAG,CAAC;IACtCjG,MAAM,CAACugB,QAAQ,GAAGqc,SAAS,CAAC,CAAC,CAAC;IAC9B58B,MAAM,CAACvC,KAAK,GAAGm/B,SAAS,CAAC,CAAC,CAAC;IAC3B58B,MAAM,CAAC9C,MAAM,GAAG8C,MAAM,CAACvC,KAAK,GAAG,GAAG,GAAGuC,MAAM,CAACvC,KAAK,GAAG,IAAI;EAC1D;EACA,OAAOuC,MAAM;AACf;;;;;;;;;;;;;AClF4B;AACU;AACM;AACV;AACmB;AAClB;AACkB;AACA;AAClB;AAES;AACA;AACE;AACI;AACJ;AACP;AACJ;;AAEnC;AACA,IAAIq9B,SAAS,GAAG,IAAI;AAAC,IAEf1N,YAAO;EACX,SAAAA,QAAY7wB,OAAO,EAAE4zB,MAAM,EAAE;IAAAtnB,mBAAA,OAAAukB,OAAA;IAC3BxtB,UAAM,CAACkW,IAAI,CAAC;MAAEsC,QAAQ,EAAE7b,OAAO,CAAC6b,QAAQ,IAAI;IAAQ,CAAC,CAAC;IACtD,IAAI,CAAC7b,OAAO,GAAG3B,aAAe,CAAC+lB,mBAAc,EAAEpkB,OAAO,EAAE,IAAI,EAAEqD,UAAM,CAAC;IACrE,IAAI,CAACrD,OAAO,CAACgxB,kBAAkB,GAAGhxB,OAAO;IACzC,IAAI,CAACw+B,UAAU,GAAG,IAAI,CAACA,UAAU,IAAI,CAAC,CAAC;IACvC,IAAMryB,SAAS,GAAG,IAAI,CAACqyB,UAAU,CAAC1N,SAAS;IAC3C,IAAM2N,YAAY,GAAG,IAAI,CAACD,UAAU,CAACE,YAAY;IACjD,IAAI,CAACC,WAAW,GAAG,IAAI,CAACH,UAAU,CAACG,WAAW;IAC9C,IAAI,CAAC10B,KAAK,GAAG,IAAI,CAACu0B,UAAU,CAACv0B,KAAK;IAClC,IAAMua,UAAU,GAAG,IAAI,CAACga,UAAU,CAACha,UAAU;IAC7C,IAAMhG,OAAO,GAAG,IAAI,CAACggB,UAAU,CAACpyB,OAAO;IACvC,IAAMwyB,MAAM,GAAG,IAAI,CAACJ,UAAU,CAACzR,MAAM;IAErC,IAAM3L,SAAS,GAAG,IAAI4b,iBAAS,CAACxY,UAAU,CAAC;IAC3C,IAAMnP,GAAG,GAAG,IAAI0oB,OAAG,CAAC,IAAI,CAAC/9B,OAAO,EAAEohB,SAAS,EAAEmD,mBAAM,EAAEC,UAAU,CAAC;IAChE,IAAIhG,OAAO,EAAE;MACX,IAAI,CAACpS,OAAO,GAAG,IAAIoS,OAAO,CAACqgB,QAAQ,CAAC,CAAC,EAAExpB,GAAG,EAAE,IAAI,CAACrV,OAAO,CAAC;MACzD,IAAI,CAACoM,OAAO,CAACuS,WAAW,CAAC,CAAC;IAC5B;IACA,IAAIxS,SAAS,EAAE;MACb,IAAI,CAAC2kB,SAAS,GAAG,IAAI3kB,SAAS,CAAC,IAAI,CAACnM,OAAO,EAAE,IAAI,CAACoM,OAAO,CAAC;IAC5D;IAEA,IAAIwyB,MAAM,IAAIvgC,SAAW,CAAC,CAAC,EAAE;MAC3B,IAAMygC,aAAa,GAAG,IAAI,CAAC9+B,OAAO,CAAC+sB,MAAM;MACzC,IAAI,CAACA,MAAM,GAAG,IAAI6R,MAAM,CAAC;QACvBxyB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrB0kB,SAAS,EAAE,IAAI,CAACA,SAAS;QACzB9wB,OAAO,EAAE8+B;MACX,CAAC,CAAC;MAEF,IAAIA,aAAa,CAAC1S,OAAO,IAAI0S,aAAa,CAACpJ,SAAS,EAAE;QACpD,IAAI,CAAC3I,MAAM,CAACgS,QAAQ,CAACC,KAAK,CAAC,CAAC;MAC9B;IACF;IAEA,IAAI,CAACpL,MAAM,GACTA,MAAM,IACN,IAAIqK,OAAM,CACR,IAAI,CAACj+B,OAAO,EACZqV,GAAG,EACHhS,UAAM,EACN,IAAI,CAACytB,SAAS,EACd,IAAI,CAAC1kB,OAAO,EACZ,IAAI,CAAC2gB,MAAM,EACX,SACF,CAAC;IACH,IAAItO,OAAO,GAAGogB,QAAQ,CAAC,CAAC;IACxB,IAAII,SAAS,GAAG,OAAOl8B,QAAQ,KAAK,WAAW,IAAIA,QAAQ;IAC3D,IAAI,CAACm8B,QAAQ,GAAGzgB,OAAO,CAAC0gB,MAAM,IAAI1gB,OAAO,CAAC0gB,MAAM,CAACC,OAAO,CAAC,CAAC;IAC1D,IAAI,CAACtK,sBAAsB,GAAG,CAAC;IAC/BuK,uBAAuB,CAAC,IAAI,CAACzL,MAAM,CAAC5vB,QAAQ,EAAE,IAAI,EAAEya,OAAO,CAAC;IAC5D6gB,oBAAoB,CAAC,IAAI,CAAC1L,MAAM,CAACrnB,KAAK,CAAC;IACvC,IAAI,CAACgzB,qBAAqB,CAAC,CAAC;IAC5B,IAAId,YAAY,EAAE;MAChB,IAAI,CAACC,YAAY,GAAG,IAAID,YAAY,CAClC,IAAI,CAACz+B,OAAO,EACZ,IAAI,CAAC4zB,MAAM,CAAC9C,SAAS,EACrB,IAAI,EACJrS,OAAO,EACPwgB,SACF,CAAC;MACD,IAAI,CAACP,YAAY,CAACc,UAAU,CAAC,CAAC;IAChC;IAEA,IAAI,CAACC,+BAA+B,CAACz/B,OAAO,CAAC;;IAE7C;IACA,IAAI,CAAC0/B,OAAO,GAAG,IAAI;EACrB;EAAC,OAAA5yB,gBAAA,CAAA+jB,OAAA;IAAA/xB,GAAA;IAAAnD,KAAA,EAcD,SAAAy1B,MAAMA,CAACpxB,OAAO,EAAE;MACd,IAAI,CAAC4zB,MAAM,CAACxC,MAAM,CAACpxB,OAAO,CAAC;MAC3B,OAAO,IAAI;IACb;EAAC;IAAAlB,GAAA;IAAAnD,KAAA,EAED,SAAAoR,SAASA,CAAC/M,OAAO,EAAEqxB,WAAW,EAAE;MAAA,IAAAhlB,aAAA,EAAAgiB,YAAA,EAAAsR,kBAAA;MAC9B,IAAI3/B,OAAO,CAAC6b,QAAQ,EAAE;QACpBxY,UAAM,CAACkW,IAAI,CAAC;UAAEsC,QAAQ,EAAE7b,OAAO,CAAC6b;QAAS,CAAC,CAAC;MAC7C;MACA,IAAI,CAAC4jB,+BAA+B,CAACz/B,OAAO,CAAC;MAC7C,IAAIgN,UAAU,GAAG,IAAI,CAAChN,OAAO;MAC7B,IAAIyI,OAAO,GAAG,CAAC,CAAC;MAChB,IAAI4oB,WAAW,EAAE;QACf5oB,OAAO,GAAG;UAAEA,OAAO,EAAE4oB;QAAY,CAAC;MACpC;MAEA,IAAI,CAACrxB,OAAO,GAAG3B,aAAe,CAAC2O,UAAU,EAAEhN,OAAO,EAAEyI,OAAO,EAAEpF,UAAM,CAAC;MACpE,IAAI,CAACrD,OAAO,CAACgxB,kBAAkB,GAAG3yB,aAAe,CAC/C2O,UAAU,CAACgkB,kBAAkB,EAC7BhxB,OAAO,EACPyI,OACF,CAAC;MAED,CAAA4D,aAAA,OAAI,CAACD,OAAO,cAAAC,aAAA,eAAZA,aAAA,CAAcU,SAAS,CAAC,IAAI,CAAC/M,OAAO,CAAC;MACrC,CAAAquB,YAAA,OAAI,CAACtB,MAAM,cAAAsB,YAAA,eAAXA,YAAA,CAAathB,SAAS,CAAC,IAAI,CAAC/M,OAAO,CAAC+sB,MAAM,CAAC;MAC3C,IAAI,CAAC6G,MAAM,CAAC7mB,SAAS,CAAC,IAAI,CAAC/M,OAAO,EAAEqxB,WAAW,CAAC;MAChD,CAAAsO,kBAAA,OAAI,CAACjB,YAAY,cAAAiB,kBAAA,eAAjBA,kBAAA,CAAmB5yB,SAAS,CAAC,IAAI,CAAC/M,OAAO,CAAC;MAC1C,IAAI,CAACu/B,qBAAqB,CAAC,CAAC;MAC5B,OAAO,IAAI;IACb;EAAC;IAAAzgC,GAAA;IAAAnD,KAAA,EAED,SAAAu1B,SAASA,CAAA,EAAG;MACV,OAAO,IAAI,CAAC0C,MAAM,CAAC1C,SAAS;IAC9B;EAAC;IAAApyB,GAAA;IAAAnD,KAAA,EAED,SAAAoN,GAAGA,CAAA,EAAG;MACJ,IAAIjE,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAACn2B,SAAS,CAAC;MACtC,IAAItM,IAAI,GAAG2H,IAAI,CAAC3H,IAAI;MACpB,IAAI,CAACy2B,MAAM,CAAC7qB,GAAG,CAACjE,IAAI,CAAC;MACrB,OAAO;QAAE3H,IAAI,EAAEA;MAAK,CAAC;IACvB;EAAC;IAAA2B,GAAA;IAAAnD,KAAA,EAED,SAAA+B,KAAKA,CAAA,EAAG;MACN,IAAIoH,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAACn2B,SAAS,CAAC;MACtC,IAAItM,IAAI,GAAG2H,IAAI,CAAC3H,IAAI;MACpB,IAAI,CAACy2B,MAAM,CAACl2B,KAAK,CAACoH,IAAI,CAAC;MACvB,OAAO;QAAE3H,IAAI,EAAEA;MAAK,CAAC;IACvB;EAAC;IAAA2B,GAAA;IAAAnD,KAAA,EAED,SAAAgC,IAAIA,CAAA,EAAG;MACL,IAAImH,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAACn2B,SAAS,CAAC;MACtC,IAAItM,IAAI,GAAG2H,IAAI,CAAC3H,IAAI;MACpB,IAAI,CAACy2B,MAAM,CAACj2B,IAAI,CAACmH,IAAI,CAAC;MACtB,OAAO;QAAE3H,IAAI,EAAEA;MAAK,CAAC;IACvB;EAAC;IAAA2B,GAAA;IAAAnD,KAAA,EAED,SAAAwf,IAAIA,CAAA,EAAG;MACL,IAAIrW,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAACn2B,SAAS,CAAC;MACtC,IAAItM,IAAI,GAAG2H,IAAI,CAAC3H,IAAI;MACpB,IAAI,CAACy2B,MAAM,CAACzY,IAAI,CAACrW,IAAI,CAAC;MACtB,OAAO;QAAE3H,IAAI,EAAEA;MAAK,CAAC;IACvB;EAAC;IAAA2B,GAAA;IAAAnD,KAAA,EAED,SAAAiC,OAAOA,CAAA,EAAG;MACR,IAAIkH,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAACn2B,SAAS,CAAC;MACtC,IAAItM,IAAI,GAAG2H,IAAI,CAAC3H,IAAI;MACpB,IAAI,CAACy2B,MAAM,CAACh2B,OAAO,CAACkH,IAAI,CAAC;MACzB,OAAO;QAAE3H,IAAI,EAAEA;MAAK,CAAC;IACvB;EAAC;IAAA2B,GAAA;IAAAnD,KAAA,EAED,SAAAkC,KAAKA,CAAA,EAAG;MACN,IAAIiH,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAACn2B,SAAS,CAAC;MACtC,IAAItM,IAAI,GAAG2H,IAAI,CAAC3H,IAAI;MACpB,IAAI,CAACy2B,MAAM,CAAC/1B,KAAK,CAACiH,IAAI,CAAC;MACvB,OAAO;QAAE3H,IAAI,EAAEA;MAAK,CAAC;IACvB;EAAC;IAAA2B,GAAA;IAAAnD,KAAA,EAED,SAAAmC,QAAQA,CAAA,EAAG;MACT,IAAIgH,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAACn2B,SAAS,CAAC;MACtC,IAAItM,IAAI,GAAG2H,IAAI,CAAC3H,IAAI;MACpB,IAAI,CAACy2B,MAAM,CAAC91B,QAAQ,CAACgH,IAAI,CAAC;MAC1B,OAAO;QAAE3H,IAAI,EAAEA;MAAK,CAAC;IACvB;EAAC;IAAA2B,GAAA;IAAAnD,KAAA,EAED,SAAA0pB,gBAAgBA,CAACvgB,IAAI,EAAE;MACrB,OAAO,IAAI,CAAC8uB,MAAM,CAACvO,gBAAgB,CAACvgB,IAAI,CAAC;IAC3C;EAAC;IAAAhG,GAAA;IAAAnD,KAAA,EAED,SAAA61B,eAAeA,CAAChM,WAAW,EAAE;MAC3B,OAAO,IAAI,CAACoO,MAAM,CAACpC,eAAe,CAAChM,WAAW,CAAC;IACjD;EAAC;IAAA1mB,GAAA;IAAAnD,KAAA,EAED,SAAAkkC,mBAAmBA,CAACj9B,OAAO,EAAE;MAC3B,OAAO,IAAI,CAACk9B,aAAa,CAAAjxB,iBAAA;QAAGtS,IAAI,EAAE;MAAQ,GAAKqG,OAAO,CAAE,CAAC;IAC3D;EAAC;IAAA9D,GAAA;IAAAnD,KAAA,EAED,SAAAmkC,aAAaA,CAACl9B,OAAO,EAAE;MACrB,IAAI,CAAC,IAAI,CAACmqB,MAAM,EAAE,OAAO,IAAI;MAE7B,OAAO,IAAI,CAACA,MAAM,CAAC+S,aAAa,CAACl9B,OAAO,CAAC;IAC3C;EAAC;IAAA9D,GAAA;IAAAnD,KAAA,EAED,SAAA4jC,qBAAqBA,CAAA,EAAG;MACtB,IAAI9gB,OAAO,GAAGogB,QAAQ,CAAC,CAAC;MAExB,IAAI,CAAC,IAAI,CAACkB,8BAA8B,EAAE;QACxC,IACE,IAAI,CAAC//B,OAAO,CAACggC,eAAe,IAC5B,IAAI,CAAChgC,OAAO,CAACigC,wBAAwB,EACrC;UACA5B,yBAAiC,CAAC5f,OAAO,EAAE,IAAI,CAAC;UAChD,IAAI,IAAI,CAACkgB,WAAW,IAAI,IAAI,CAAC3+B,OAAO,CAACkgC,uBAAuB,EAAE;YAC5D,IAAI,CAACvB,WAAW,CAAClgB,OAAO,EAAE,IAAI,CAAC;UACjC;UACA,IAAI,CAACshB,8BAA8B,GAAG,IAAI;QAC5C;MACF;MACA,IAAI,CAAC,IAAI,CAACI,8BAA8B,EAAE;QACxC,IACE,IAAI,CAACngC,OAAO,CAAC+0B,0BAA0B,IACvC,IAAI,CAAC/0B,OAAO,CAACogC,yBAAyB,EACtC;UACA/B,0BAAkC,CAAC5f,OAAO,EAAE,IAAI,CAAC;UACjD,IAAI,CAAC0hB,8BAA8B,GAAG,IAAI;QAC5C;MACF;IACF;EAAC;IAAArhC,GAAA;IAAAnD,KAAA,EAED,SAAAk5B,uBAAuBA,CAAC5yB,OAAO,EAAEjE,GAAG,EAAEkE,MAAM,EAAEC,KAAK,EAAEtE,KAAK,EAAE+E,OAAO,EAAE;MACnE,IACE,CAAC,IAAI,CAAC5C,OAAO,CAACggC,eAAe,IAC7B,CAAC,IAAI,CAAChgC,OAAO,CAACigC,wBAAwB,EACtC;QACA;MACF;;MAEA;MACA;MACA;MACA;MACA,IACE,IAAI,CAACjgC,OAAO,CAACqgC,sBAAsB,IACnC,IAAI,CAACnB,QAAQ,IACbrhC,KAAK,KAAK,IAAI,IACdG,GAAG,KAAK,EAAE,EACV;QACA,OAAO,WAAW;MACpB;MAEA,IAAI8G,IAAI;MACR,IAAIgzB,SAAS,GAAGz5B,sBAAwB,CACtC4D,OAAO,EACPjE,GAAG,EACHkE,MAAM,EACNC,KAAK,EACLtE,KAAK,EACL,SAAS,EACT,oBAAoB,EACpByE,WACF,CAAC;MACD,IAAIjE,OAAS,CAACR,KAAK,CAAC,EAAE;QACpBiH,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAAC,CAAC39B,OAAO,EAAEpE,KAAK,EAAE+E,OAAO,CAAC,CAAC;QAClDkC,IAAI,CAAC80B,mBAAmB,GAAG9B,SAAS;MACtC,CAAC,MAAM,IAAIz5B,OAAS,CAACL,GAAG,CAAC,EAAE;QACzB8G,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAAC,CAAC39B,OAAO,EAAEjE,GAAG,EAAE4E,OAAO,CAAC,CAAC;QAChDkC,IAAI,CAAC80B,mBAAmB,GAAG9B,SAAS;MACtC,CAAC,MAAM;QACLhzB,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAAC,CAAC39B,OAAO,EAAEW,OAAO,CAAC,CAAC;QAC3CkC,IAAI,CAACgzB,SAAS,GAAGA,SAAS;MAC5B;MACAhzB,IAAI,CAACM,KAAK,GAAG,IAAI,CAACpF,OAAO,CAAC2lB,kBAAkB;MAC5C7gB,IAAI,CAAC8lB,WAAW,GAAG,IAAI;MACvB,IAAI,CAACgJ,MAAM,CAAC7qB,GAAG,CAACjE,IAAI,CAAC;IACvB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAXE;IAAAhG,GAAA;IAAAnD,KAAA,EAYA,SAAA64B,qBAAqBA,CAAA,EAAG;MAAA,IAAA5e,KAAA;MACtB,IAAI,CAAC,IAAI,CAAC5V,OAAO,CAACqgC,sBAAsB,IAAI,CAAC,IAAI,CAACnB,QAAQ,EAAE;QAC1D;MACF;MAEA,IAAMoB,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIziC,KAAK,EAAE0iC,MAAM,EAAK;QAC3C,IAAI3qB,KAAI,CAAC5V,OAAO,CAACqgC,sBAAsB,EAAE;UACvC,IAAIzqB,KAAI,CAACkf,sBAAsB,EAAE;YAC/B;YACA;YACA;YACA;YACA;YACAlf,KAAI,CAACkf,sBAAsB,IAAI,CAAC;YAEhC,IAAI,CAACj3B,KAAK,EAAE;cACV;cACA;cACA;cACA;YACF;;YAEA;YACAA,KAAK,CAAC2iC,YAAY,GAAG,IAAI;;YAEzB;YACA;YACA;YACA5qB,KAAI,CAACif,uBAAuB,CAACh3B,KAAK,CAACoE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAEpE,KAAK,CAAC;UACtE;QACF;;QAEA;QACA,OAAOA,KAAK,CAACsF,KAAK;MACpB,CAAC;;MAED;MACA,IAAI;QACF3I,KAAK,CAAC8lC,iBAAiB,GAAGA,iBAAiB;MAC7C,CAAC,CAAC,OAAO7jC,CAAC,EAAE;QACV,IAAI,CAACuD,OAAO,CAACqgC,sBAAsB,GAAG,KAAK;QAC3C,IAAI,CAACxiC,KAAK,CAAC,gCAAgC,EAAEpB,CAAC,CAAC;MACjD;IACF;EAAC;IAAAqC,GAAA;IAAAnD,KAAA,EAED,SAAA65B,wBAAwBA,CAACH,MAAM,EAAEC,OAAO,EAAE;MACxC,IACE,CAAC,IAAI,CAACt1B,OAAO,CAAC+0B,0BAA0B,IACxC,CAAC,IAAI,CAAC/0B,OAAO,CAACogC,yBAAyB,EACvC;QACA;MACF;MAEA,IAAIn+B,OAAO,GAAG,4CAA4C;MAC1D,IAAIozB,MAAM,EAAE;QACV,IAAIA,MAAM,CAACpzB,OAAO,EAAE;UAClBA,OAAO,GAAGozB,MAAM,CAACpzB,OAAO;QAC1B,CAAC,MAAM;UACL,IAAIw+B,YAAY,GAAGpiC,SAAW,CAACg3B,MAAM,CAAC;UACtC,IAAIoL,YAAY,CAAC9kC,KAAK,EAAE;YACtBsG,OAAO,GAAGw+B,YAAY,CAAC9kC,KAAK;UAC9B;QACF;MACF;MACA,IAAIiH,OAAO,GACRyyB,MAAM,IAAIA,MAAM,CAACT,eAAe,IAChCU,OAAO,IAAIA,OAAO,CAACV,eAAgB;MAEtC,IAAI9vB,IAAI;MACR,IAAIzG,OAAS,CAACg3B,MAAM,CAAC,EAAE;QACrBvwB,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAAC,CAAC39B,OAAO,EAAEozB,MAAM,EAAEzyB,OAAO,CAAC,CAAC;MACrD,CAAC,MAAM;QACLkC,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAAC,CAAC39B,OAAO,EAAEozB,MAAM,EAAEzyB,OAAO,CAAC,CAAC;QACnDkC,IAAI,CAACgzB,SAAS,GAAGz5B,sBAAwB,CACvC4D,OAAO,EACP,EAAE,EACF,CAAC,EACD,CAAC,EACD,IAAI,EACJ,oBAAoB,EACpB,EAAE,EACFK,WACF,CAAC;MACH;MACAwC,IAAI,CAACM,KAAK,GAAG,IAAI,CAACpF,OAAO,CAAC2lB,kBAAkB;MAC5C7gB,IAAI,CAAC8lB,WAAW,GAAG,IAAI;MACvB9lB,IAAI,CAACI,aAAa,GAAGJ,IAAI,CAACI,aAAa,IAAI,EAAE;MAC7CJ,IAAI,CAACI,aAAa,CAAC7E,IAAI,CAACi1B,OAAO,CAAC;MAChC,IAAI,CAAC1B,MAAM,CAAC7qB,GAAG,CAACjE,IAAI,CAAC;IACvB;EAAC;IAAAhG,GAAA;IAAAnD,KAAA,EAED,SAAA+kC,IAAIA,CAAC5lC,CAAC,EAAE8H,OAAO,EAAE+9B,OAAO,EAAE;MACxB,IAAI;QACF,IAAIC,KAAK;QACT,IAAIviC,UAAY,CAACuE,OAAO,CAAC,EAAE;UACzBg+B,KAAK,GAAGh+B,OAAO;QACjB,CAAC,MAAM;UACLg+B,KAAK,GAAG,SAARA,KAAKA,CAAA,EAAe;YAClB,OAAOh+B,OAAO,IAAI,CAAC,CAAC;UACtB,CAAC;QACH;QAEA,IAAI,CAACvE,UAAY,CAACvD,CAAC,CAAC,EAAE;UACpB,OAAOA,CAAC;QACV;QAEA,IAAIA,CAAC,CAAC+lC,OAAO,EAAE;UACb,OAAO/lC,CAAC;QACV;QAEA,IAAI,CAACA,CAAC,CAACgmC,gBAAgB,EAAE;UACvBhmC,CAAC,CAACgmC,gBAAgB,GAAG,YAAY;YAC/B,IAAIH,OAAO,IAAItiC,UAAY,CAACsiC,OAAO,CAAC,EAAE;cACpCA,OAAO,CAACpsB,KAAK,CAAC,IAAI,EAAE9K,SAAS,CAAC;YAChC;YACA,IAAI;cACF,OAAO3O,CAAC,CAACyZ,KAAK,CAAC,IAAI,EAAE9K,SAAS,CAAC;YACjC,CAAC,CAAC,OAAOyyB,GAAG,EAAE;cACZ,IAAIz/B,CAAC,GAAGy/B,GAAG;cACX,IAAIz/B,CAAC,IAAIK,MAAM,CAAC63B,oBAAoB,KAAKl4B,CAAC,EAAE;gBAC1C,IAAI4B,MAAQ,CAAC5B,CAAC,EAAE,QAAQ,CAAC,EAAE;kBACzBA,CAAC,GAAG,IAAIT,MAAM,CAACS,CAAC,CAAC;gBACnB;gBACAA,CAAC,CAACm4B,eAAe,GAAGgM,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;gBACjCnkC,CAAC,CAACm4B,eAAe,CAACmM,cAAc,GAAGjmC,CAAC,CAACL,QAAQ,CAAC,CAAC;gBAE/CqC,MAAM,CAAC63B,oBAAoB,GAAGl4B,CAAC;cACjC;cACA,MAAMA,CAAC;YACT;UACF,CAAC;UAED3B,CAAC,CAACgmC,gBAAgB,CAACD,OAAO,GAAG,IAAI;UAEjC,KAAK,IAAI/kC,IAAI,IAAIhB,CAAC,EAAE;YAClB,IAAIuD,MAAQ,CAACvD,CAAC,EAAEgB,IAAI,CAAC,IAAIA,IAAI,KAAK,kBAAkB,EAAE;cACpDhB,CAAC,CAACgmC,gBAAgB,CAAChlC,IAAI,CAAC,GAAGhB,CAAC,CAACgB,IAAI,CAAC;YACpC;UACF;QACF;QAEA,OAAOhB,CAAC,CAACgmC,gBAAgB;MAC3B,CAAC,CAAC,OAAO15B,EAAE,EAAE;QACX;QACA,OAAOtM,CAAC;MACV;IACF;EAAC;IAAAgE,GAAA;IAAAnD,KAAA,EAED,SAAA4S,YAAYA,CAAA,EAAG;MACb,IAAI7H,KAAK,GAAGrI,oBAAsB,CAACoL,SAAS,CAAC;MAC7C,OAAO,IAAI,CAACmqB,MAAM,CAACrlB,YAAY,CAAC7H,KAAK,CAACnK,IAAI,EAAEmK,KAAK,CAACD,QAAQ,EAAEC,KAAK,CAACtB,KAAK,CAAC;IAC1E;EAAC;IAAAtG,GAAA;IAAAnD,KAAA,EAED,SAAAqlC,cAAcA,CAACzmB,IAAI,EAAE;MAAA,IAAAuX,cAAA;MACnB,IAAI,GAAAA,cAAA,GAAC,IAAI,CAAC1lB,OAAO,cAAA0lB,cAAA,eAAZA,cAAA,CAAczY,OAAO,GAAE;MAE5B,IAAI,CAACjN,OAAO,CAACiN,OAAO,CAACiB,OAAO,CAACC,IAAI,CAAC;IACpC;EAAC;IAAAzb,GAAA;IAAAnD,KAAA,EAED,SAAAslC,oBAAoBA,CAACznB,KAAK,EAAE;MAAA,IAAA0nB,cAAA;MAC1B,IAAI,GAAAA,cAAA,GAAC,IAAI,CAAC90B,OAAO,cAAA80B,cAAA,eAAZA,cAAA,CAAc7nB,OAAO,GAAE;MAE5BG,KAAK,GAAA3K,iBAAA,KAAQ2K,KAAK,CAAE;MAEpB,IAAI,CAACpN,OAAO,CAACiN,OAAO,CAACgB,aAAa,CAACb,KAAK,CAAC;IAC3C;EAAC;IAAA1a,GAAA;IAAAnD,KAAA,EAED,SAAA8jC,+BAA+BA,CAACz/B,OAAO,EAAE;MAAA,IAAAmhC,gBAAA,EAAAC,eAAA,EAAAC,iBAAA,EAAAC,iBAAA,EAAAC,iBAAA;MACvC,IAAMC,MAAM,GAAGxhC,OAAO,CAACwhC,MAAM,MAAAL,gBAAA,GAAInhC,OAAO,CAACyI,OAAO,cAAA04B,gBAAA,uBAAfA,gBAAA,CAAiBK,MAAM;MACxD,IAAIA,MAAM,EAAE;QACV,IAAI,CAACR,cAAc,CAACQ,MAAM,CAAC;MAC7B;MACA,IAAMC,YAAY,GAChB,EAAAL,eAAA,GAAAphC,OAAO,CAAC4zB,MAAM,cAAAwN,eAAA,gBAAAA,eAAA,GAAdA,eAAA,CAAgBrI,UAAU,cAAAqI,eAAA,uBAA1BA,eAAA,CAA4BK,YAAY,KACxCzhC,OAAO,CAAC0hC,WAAW,IACnB1hC,OAAO,CAACyhC,YAAY,MAAAJ,iBAAA,GACpBrhC,OAAO,CAACyI,OAAO,cAAA44B,iBAAA,gBAAAA,iBAAA,GAAfA,iBAAA,CAAiBzN,MAAM,cAAAyN,iBAAA,gBAAAA,iBAAA,GAAvBA,iBAAA,CAAyBtI,UAAU,cAAAsI,iBAAA,uBAAnCA,iBAAA,CAAqCI,YAAY,OAAAH,iBAAA,GACjDthC,OAAO,CAACyI,OAAO,cAAA64B,iBAAA,uBAAfA,iBAAA,CAAiBG,YAAY,OAAAF,iBAAA,GAC7BvhC,OAAO,CAACyI,OAAO,cAAA84B,iBAAA,uBAAfA,iBAAA,CAAiBG,WAAW;MAC9B,IAAI,CAACT,oBAAoB,CAAC;QACxB,qBAAqB,EAAEQ,YAAY;QACnC,uBAAuB,EAAE,oBAAoB;QAC7C,0BAA0B,EAAEzhC,OAAO,CAACmW;MACtC,CAAC,CAAC;IACJ;;IAEA;EAAA;IAAArX,GAAA;IAAAnD,KAAA,EACA,SAAA2W,uBAAuBA,CAAC7V,CAAC,EAAE8V,EAAE,EAAE;MAC7B,IAAI,CAACA,EAAE,EAAE;QACPA,EAAE,GAAG,IAAI5K,IAAI,CAAC,CAAC;MACjB;MACA,OAAO,IAAI,CAACisB,MAAM,CAACthB,uBAAuB,CAACC,EAAE,CAAC;IAChD;EAAC;IAAAzT,GAAA;IAAAnD,KAAA,EAED,SAAA8W,WAAWA,CAAChW,CAAC,EAAE8V,EAAE,EAAE;MACjB,IAAI,CAACA,EAAE,EAAE;QACPA,EAAE,GAAG,IAAI5K,IAAI,CAAC,CAAC;MACjB;MACA,OAAO,IAAI,CAACisB,MAAM,CAACnhB,WAAW,CAACF,EAAE,CAAC;IACpC;EAAC;IAAAzT,GAAA;IAAAnD,KAAA,EAED,SAAAgmC,QAAQA,CAAA,EAAG;MACTt+B,UAAM,CAAC1F,IAAI,CACT,qHACF,CAAC;IACH;EAAC;IAAAmB,GAAA;IAAAnD,KAAA,EAED,SAAAikC,WAAWA,CAAC77B,IAAI,EAAE;MAChB,OAAO1F,UAAY,CAAC0F,IAAI,EAAEV,UAAM,EAAE,IAAI,CAAC;IACzC;;IAEA;IACA;IACA;IACA;EAAA;IAAAvE,GAAA;IAAAnD,KAAA,EA7ZA,SAAO4d,IAAIA,CAACvZ,OAAO,EAAE4zB,MAAM,EAAE;MAC3B,IAAI2K,SAAS,EAAE;QACb,OAAOA,SAAS,CAACnN,MAAM,CAACpxB,OAAO,CAAC,CAAC+M,SAAS,CAAC/M,OAAO,CAAC;MACrD;MACAu+B,SAAS,GAAG,IAAI1N,OAAO,CAAC7wB,OAAO,EAAE4zB,MAAM,CAAC;MACxC,OAAO2K,SAAS;IAClB;EAAC;IAAAz/B,GAAA;IAAAnD,KAAA,EAED,SAAOimC,aAAaA,CAACpD,UAAU,EAAE;MAC/B3N,OAAO,CAAC11B,SAAS,CAACqjC,UAAU,GAAGA,UAAU;IAC3C;EAAC;IAAA1/B,GAAA;IAAAnD,KAAA,EAoZD,SAAOkmC,YAAYA,CAACtyB,MAAM,EAAExL,IAAI,EAAE;MAChC,IAAI,CAACw6B,SAAS,EAAE;QACd,IAAMt8B,OAAO,GAAG,4BAA4B;QAC5CoB,UAAM,CAACxF,KAAK,CAACoE,OAAO,CAAC;QACrB,IAAM6/B,aAAa,GAAGC,iBAAiB,CAACh+B,IAAI,CAAC;QAC7C,IAAI+9B,aAAa,EAAE;UACjBA,aAAa,CAAC,IAAItnC,KAAK,CAACyH,OAAO,CAAC,CAAC;QACnC;QACA;MACF;MACA,OAAOs8B,SAAS,CAAChvB,MAAM,CAAC,CAACgF,KAAK,CAACgqB,SAAS,EAAEx6B,IAAI,CAAC;IACjD;EAAC;AAAA;AAoBH;AAAAi+B,QAAA,GArgBMnR,YAAO;AAAAzX,mBAAA,CAAPyX,YAAO,YAmfK;EAAA,SAAAxc,IAAA,GAAA5K,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAA+G,IAAA,GAAAC,IAAA,MAAAA,IAAA,GAAAD,IAAA,EAAAC,IAAA;IAAJvQ,IAAI,CAAAuQ,IAAA,IAAA7K,SAAA,CAAA6K,IAAA;EAAA;EAAA,OAAKuc,QAAO,CAACgR,YAAY,CAAC,QAAQ,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CAnf7DyX,YAAO,eAofQ;EAAA,SAAAxV,KAAA,GAAA5R,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAA+N,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJvX,IAAI,CAAAuX,KAAA,IAAA7R,SAAA,CAAA6R,KAAA;EAAA;EAAA,OAAKuV,QAAO,CAACgR,YAAY,CAAC,WAAW,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CApfnEyX,YAAO,eAqfQ;EAAA,SAAAtV,KAAA,GAAA9R,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAAiO,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJzX,IAAI,CAAAyX,KAAA,IAAA/R,SAAA,CAAA+R,KAAA;EAAA;EAAA,OAAKqV,QAAO,CAACgR,YAAY,CAAC,WAAW,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CArfnEyX,YAAO,SAsfE;EAAA,SAAApV,KAAA,GAAAhS,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAAmO,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJ3X,IAAI,CAAA2X,KAAA,IAAAjS,SAAA,CAAAiS,KAAA;EAAA;EAAA,OAAKmV,QAAO,CAACgR,YAAY,CAAC,KAAK,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CAtfvDyX,YAAO,WAufI;EAAA,SAAAlV,KAAA,GAAAlS,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAAqO,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJ7X,IAAI,CAAA6X,KAAA,IAAAnS,SAAA,CAAAmS,KAAA;EAAA;EAAA,OAAKiV,QAAO,CAACgR,YAAY,CAAC,OAAO,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CAvf3DyX,YAAO,UAwfG;EAAA,SAAAoR,KAAA,GAAAx4B,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAA20B,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJn+B,IAAI,CAAAm+B,KAAA,IAAAz4B,SAAA,CAAAy4B,KAAA;EAAA;EAAA,OAAKrR,QAAO,CAACgR,YAAY,CAAC,MAAM,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CAxfzDyX,YAAO,UAyfG;EAAA,SAAAsR,KAAA,GAAA14B,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAA60B,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJr+B,IAAI,CAAAq+B,KAAA,IAAA34B,SAAA,CAAA24B,KAAA;EAAA;EAAA,OAAKvR,QAAO,CAACgR,YAAY,CAAC,MAAM,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CAzfzDyX,YAAO,aA0fM;EAAA,SAAAwR,KAAA,GAAA54B,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAA+0B,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJv+B,IAAI,CAAAu+B,KAAA,IAAA74B,SAAA,CAAA64B,KAAA;EAAA;EAAA,OAAKzR,QAAO,CAACgR,YAAY,CAAC,SAAS,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CA1f/DyX,YAAO,WA2fI;EAAA,SAAA0R,KAAA,GAAA94B,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAAi1B,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJz+B,IAAI,CAAAy+B,KAAA,IAAA/4B,SAAA,CAAA+4B,KAAA;EAAA;EAAA,OAAK3R,QAAO,CAACgR,YAAY,CAAC,OAAO,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CA3f3DyX,YAAO,cA4fO;EAAA,SAAA4R,KAAA,GAAAh5B,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAAm1B,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJ3+B,IAAI,CAAA2+B,KAAA,IAAAj5B,SAAA,CAAAi5B,KAAA;EAAA;EAAA,OAAK7R,QAAO,CAACgR,YAAY,CAAC,UAAU,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CA5fjEyX,YAAO,sBA6fe;EAAA,SAAA8R,KAAA,GAAAl5B,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAAq1B,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJ7+B,IAAI,CAAA6+B,KAAA,IAAAn5B,SAAA,CAAAm5B,KAAA;EAAA;EAAA,OAChC/R,QAAO,CAACgR,YAAY,CAAC,kBAAkB,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CA9f5CyX,YAAO,qBA+fc;EAAA,SAAAgS,MAAA,GAAAp5B,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAAu1B,MAAA,GAAAC,MAAA,MAAAA,MAAA,GAAAD,MAAA,EAAAC,MAAA;IAAJ/+B,IAAI,CAAA++B,MAAA,IAAAr5B,SAAA,CAAAq5B,MAAA;EAAA;EAAA,OAC/BjS,QAAO,CAACgR,YAAY,CAAC,iBAAiB,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CAhgB3CyX,YAAO,UAigBG;EAAA,SAAAkS,MAAA,GAAAt5B,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAAy1B,MAAA,GAAAC,MAAA,MAAAA,MAAA,GAAAD,MAAA,EAAAC,MAAA;IAAJj/B,IAAI,CAAAi/B,MAAA,IAAAv5B,SAAA,CAAAu5B,MAAA;EAAA;EAAA,OAAKnS,QAAO,CAACgR,YAAY,CAAC,MAAM,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CAjgBzDyX,YAAO,kBAkgBW;EAAA,SAAAoS,MAAA,GAAAx5B,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAA21B,MAAA,GAAAC,MAAA,MAAAA,MAAA,GAAAD,MAAA,EAAAC,MAAA;IAAJn/B,IAAI,CAAAm/B,MAAA,IAAAz5B,SAAA,CAAAy5B,MAAA;EAAA;EAAA,OAAKrS,QAAO,CAACgR,YAAY,CAAC,cAAc,EAAE99B,IAAI,CAAC;AAAA;AAK/E,SAASs7B,uBAAuBA,CAACr7B,QAAQ,EAAE07B,OAAO,EAAEjhB,OAAO,EAAE;EAC3Dza,QAAQ,CACLsY,YAAY,CAACH,kBAA6B,CAAC,CAC3CG,YAAY,CAACH,mBAA8B,CAAC,CAC5CG,YAAY,CAACH,2BAAsC,CAAC,CACpDG,YAAY,CAACH,WAAsB,CAAC,CACpCG,YAAY,CAACH,cAAyB,CAACsC,OAAO,CAAC,CAAC,CAChDnC,YAAY,CAACH,aAAwB,CAACsC,OAAO,CAAC,CAAC,CAC/CnC,YAAY,CAACH,aAAwB,CAACsC,OAAO,CAAC,CAAC,CAC/CnC,YAAY,CAACH,OAAkB,CAAC,CAChCG,YAAY,CAAC6hB,mBAAoC,CAAC,CAClD7hB,YAAY,CAAC6hB,gBAAiC,CAAC,CAC/C7hB,YAAY,CAAC6hB,kBAAmC,CAAC,CACjD7hB,YAAY,CAACH,WAAsB,CAACujB,OAAO,CAACz1B,KAAK,CAAC,CAAC,CACnDqS,YAAY,CAAC6hB,iBAAkC,CAAC,CAChD7hB,YAAY,CAAC6hB,aAA8B,CAAC96B,UAAM,CAAC,CAAC,CACpDiZ,YAAY,CAAC6hB,oBAAqC,CAAC,CACnD7hB,YAAY,CAAC6hB,iBAAkC,CAAC,CAChD7hB,YAAY,CAAC6hB,aAA8B,CAAC;AACjD;AAEA,SAASmB,oBAAoBA,CAAC/yB,KAAK,EAAE;EACnCA,KAAK,CACFihB,YAAY,CAACwQ,UAA2B,CAAC,CACzCxQ,YAAY,CAACR,WAAsB,CAAC,CACpCQ,YAAY,CAACwQ,eAAgC,CAAC36B,UAAM,CAAC,CAAC,CACtDmqB,YAAY,CAACwQ,mBAAoC,CAAC36B,UAAM,CAAC,CAAC,CAC1DmqB,YAAY,CAACwQ,eAAgC,CAAC36B,UAAM,CAAC,CAAC,CACtDmqB,YAAY,CAACwQ,gBAAiC,CAAC36B,UAAM,CAAC,CAAC;AAC5D;AAEA,SAAS0+B,iBAAiBA,CAACh+B,IAAI,EAAE;EAC/B,KAAK,IAAIzH,CAAC,GAAG,CAAC,EAAEuI,GAAG,GAAGd,IAAI,CAACrE,MAAM,EAAEpD,CAAC,GAAGuI,GAAG,EAAE,EAAEvI,CAAC,EAAE;IAC/C,IAAI+B,UAAY,CAAC0F,IAAI,CAACzH,CAAC,CAAC,CAAC,EAAE;MACzB,OAAOyH,IAAI,CAACzH,CAAC,CAAC;IAChB;EACF;EACA,OAAO8C,SAAS;AAClB;AAEA,SAASy/B,QAAQA,CAAA,EAAG;EAClB,OACG,OAAO/hC,MAAM,KAAK,WAAW,IAAIA,MAAM,IACvC,OAAO2W,IAAI,KAAK,WAAW,IAAIA,IAAK;AAEzC;AAEA,IAAM2Q,mBAAc,GAAG;EACrBtF,WAAW,EAAE,SAAS;EACtB3I,OAAO,EAAE+K,gBAAgB;EACzBtY,WAAW,EAAEw1B,4BAA2B;EACxCviB,QAAQ,EAAEqF,iBAAiB;EAC3BwE,WAAW,EAAExE,oBAAoB;EACjCyE,kBAAkB,EAAEzE,2BAA2B;EAC/CK,QAAQ,EAAEL,iBAAiB;EAC3BmO,OAAO,EAAE,KAAK;EACdjD,OAAO,EAAE,IAAI;EACb4B,QAAQ,EAAE,IAAI;EACdqF,UAAU,EAAE,KAAK;EACjBvgB,uBAAuB,EAAE,IAAI;EAC7BhL,SAAS,EAAE,IAAI;EACfu4B,sBAAsB,EAAE,IAAI;EAC5B5O,qBAAqB,EAAE,IAAI;EAC3ByO,uBAAuB,EAAE,KAAK;EAC9BnT,MAAM,EAAEuR,eAAc;EACtBlyB,OAAO,EAAE8xB,gBAAeA;AAC1B,CAAC;AAED,yCAAerN,YAAO,E;;AChmBiB;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASlhB,OAAOA,CAACA,OAAO,EAAE;EACxB,IAAI,OAAOwzB,OAAO,KAAK,WAAW,EAAE;IAClC,OAAO,IAAIC,YAAY,CAACzzB,OAAO,CAAC;EAClC;EAEA,OAAO,IAAIwzB,OAAO,CAACxzB,OAAO,CAAC;AAC7B;AAEA,SAAS0zB,aAAaA,CAAC/oC,IAAI,EAAE;EAC3B,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;IAC5BA,IAAI,GAAG0B,MAAM,CAAC1B,IAAI,CAAC;EACrB;EACA,OAAOA,IAAI,CAACM,WAAW,CAAC,CAAC;AAC3B;AAEA,SAAS0oC,cAAcA,CAAC3nC,KAAK,EAAE;EAC7B,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC7BA,KAAK,GAAGK,MAAM,CAACL,KAAK,CAAC;EACvB;EACA,OAAOA,KAAK;AACd;AAEA,SAAS4nC,WAAWA,CAACC,KAAK,EAAE;EAC1B,IAAIphB,QAAQ,GAAG;IACbwK,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAc;MAChB,IAAIjxB,KAAK,GAAG6nC,KAAK,CAACzwB,KAAK,CAAC,CAAC;MACzB,OAAO;QAAEnN,IAAI,EAAEjK,KAAK,KAAKyD,SAAS;QAAEzD,KAAK,EAAEA;MAAM,CAAC;IACpD;EACF,CAAC;EAED,OAAOymB,QAAQ;AACjB;AAEA,SAASghB,YAAYA,CAACzzB,OAAO,EAAE;EAC7B,IAAI,CAAClC,GAAG,GAAG,CAAC,CAAC;EAEb,IAAIkC,OAAO,YAAYyzB,YAAY,EAAE;IACnCzzB,OAAO,CAAC8zB,OAAO,CAAC,UAAU9nC,KAAK,EAAErB,IAAI,EAAE;MACrC,IAAI,CAACopC,MAAM,CAACppC,IAAI,EAAEqB,KAAK,CAAC;IAC1B,CAAC,EAAE,IAAI,CAAC;EACV,CAAC,MAAM,IAAI2R,KAAK,CAACzD,OAAO,CAAC8F,OAAO,CAAC,EAAE;IACjCA,OAAO,CAAC8zB,OAAO,CAAC,UAAUE,MAAM,EAAE;MAChC,IAAI,CAACD,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,EAAE,IAAI,CAAC;EACV,CAAC,MAAM,IAAIh0B,OAAO,EAAE;IAClBvU,MAAM,CAACwoC,mBAAmB,CAACj0B,OAAO,CAAC,CAAC8zB,OAAO,CAAC,UAAUnpC,IAAI,EAAE;MAC1D,IAAI,CAACopC,MAAM,CAACppC,IAAI,EAAEqV,OAAO,CAACrV,IAAI,CAAC,CAAC;IAClC,CAAC,EAAE,IAAI,CAAC;EACV;AACF;AAEA8oC,YAAY,CAACjoC,SAAS,CAACuoC,MAAM,GAAG,UAAUppC,IAAI,EAAEqB,KAAK,EAAE;EACrDrB,IAAI,GAAG+oC,aAAa,CAAC/oC,IAAI,CAAC;EAC1BqB,KAAK,GAAG2nC,cAAc,CAAC3nC,KAAK,CAAC;EAC7B,IAAIkoC,QAAQ,GAAG,IAAI,CAACp2B,GAAG,CAACnT,IAAI,CAAC;EAC7B,IAAI,CAACmT,GAAG,CAACnT,IAAI,CAAC,GAAGupC,QAAQ,GAAGA,QAAQ,GAAG,IAAI,GAAGloC,KAAK,GAAGA,KAAK;AAC7D,CAAC;AAEDynC,YAAY,CAACjoC,SAAS,CAAC8L,GAAG,GAAG,UAAU3M,IAAI,EAAE;EAC3CA,IAAI,GAAG+oC,aAAa,CAAC/oC,IAAI,CAAC;EAC1B,OAAO,IAAI,CAAC8b,GAAG,CAAC9b,IAAI,CAAC,GAAG,IAAI,CAACmT,GAAG,CAACnT,IAAI,CAAC,GAAG,IAAI;AAC/C,CAAC;AAED8oC,YAAY,CAACjoC,SAAS,CAACib,GAAG,GAAG,UAAU9b,IAAI,EAAE;EAC3C,OAAOsB,MAAM,CAAC,IAAI,CAAC6R,GAAG,EAAE41B,aAAa,CAAC/oC,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED8oC,YAAY,CAACjoC,SAAS,CAACsoC,OAAO,GAAG,UAAUr/B,QAAQ,EAAEgQ,OAAO,EAAE;EAC5D,KAAK,IAAI9Z,IAAI,IAAI,IAAI,CAACmT,GAAG,EAAE;IACzB,IAAI7R,MAAM,CAAC,IAAI,CAAC6R,GAAG,EAAEnT,IAAI,CAAC,EAAE;MAC1B8J,QAAQ,CAAC1J,IAAI,CAAC0Z,OAAO,EAAE,IAAI,CAAC3G,GAAG,CAACnT,IAAI,CAAC,EAAEA,IAAI,EAAE,IAAI,CAAC;IACpD;EACF;AACF,CAAC;AAED8oC,YAAY,CAACjoC,SAAS,CAAC+P,OAAO,GAAG,YAAY;EAC3C,IAAIs4B,KAAK,GAAG,EAAE;EACd,IAAI,CAACC,OAAO,CAAC,UAAU9nC,KAAK,EAAErB,IAAI,EAAE;IAClCkpC,KAAK,CAACnjC,IAAI,CAAC,CAAC/F,IAAI,EAAEqB,KAAK,CAAC,CAAC;EAC3B,CAAC,CAAC;EACF,OAAO4nC,WAAW,CAACC,KAAK,CAAC;AAC3B,CAAC;AAED,oDAAe7zB,OAAO,E;;AC/FtB,SAASrU,OAAOA,CAACO,GAAG,EAAEvB,IAAI,EAAEkN,WAAW,EAAEs8B,YAAY,EAAEvnC,IAAI,EAAE;EAC3D,IAAIwnC,IAAI,GAAGloC,GAAG,CAACvB,IAAI,CAAC;EACpBuB,GAAG,CAACvB,IAAI,CAAC,GAAGkN,WAAW,CAACu8B,IAAI,CAAC;EAC7B,IAAID,YAAY,EAAE;IAChBA,YAAY,CAACvnC,IAAI,CAAC,CAAC8D,IAAI,CAAC,CAACxE,GAAG,EAAEvB,IAAI,EAAEypC,IAAI,CAAC,CAAC;EAC5C;AACF;AAEA,oDAAezoC,OAAO,E;;;;;ACRtB,SAAS0oC,cAAcA,CAACvnC,CAAC,EAAE;EACzB,OAAO,CAACA,CAAC,CAACwnC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,EAAErpC,WAAW,CAAC,CAAC;AACrD;AAEA,SAASspC,kBAAkBA,CAACl0B,OAAO,EAAEzT,IAAI,EAAE4nC,QAAQ,EAAE;EACnD,IAAIn0B,OAAO,CAACo0B,OAAO,CAACxpC,WAAW,CAAC,CAAC,KAAK2B,IAAI,CAAC3B,WAAW,CAAC,CAAC,EAAE;IACxD,OAAO,KAAK;EACd;EACA,IAAI,CAACupC,QAAQ,EAAE;IACb,OAAO,IAAI;EACb;EACA,IAAME,WAAW,GAAGL,cAAc,CAACh0B,OAAO,CAAC;EAAC,IAAAvK,SAAA,GAAAC,oCAAA,CACtBy+B,QAAQ;IAAAx+B,KAAA;EAAA;IAA9B,KAAAF,SAAA,CAAA3D,CAAA,MAAA6D,KAAA,GAAAF,SAAA,CAAAvJ,CAAA,IAAA0J,IAAA,GAAgC;MAAA,IAArBmJ,OAAO,GAAApJ,KAAA,CAAAhK,KAAA;MAChB,IAAIoT,OAAO,KAAKs1B,WAAW,EAAE;QAC3B,OAAO,IAAI;MACb;IACF;EAAC,SAAA/gC,GAAA;IAAAmC,SAAA,CAAAhJ,CAAA,CAAA6G,GAAA;EAAA;IAAAmC,SAAA,CAAA3K,CAAA;EAAA;EACD,OAAO,KAAK;AACd;AAEA,SAASwpC,mBAAmBA,CAAClP,GAAG,EAAEmP,GAAG,EAAE;EACrC,IAAInP,GAAG,CAACtkB,MAAM,EAAE;IACd,OAAOskB,GAAG,CAACtkB,MAAM;EACnB;EACA,IAAIyzB,GAAG,IAAIA,GAAG,CAACC,gBAAgB,EAAE;IAC/B,OAAOD,GAAG,CAACC,gBAAgB,CAACpP,GAAG,CAACqP,OAAO,EAAErP,GAAG,CAACsP,OAAO,CAAC;EACvD;EACA,OAAOtlC,SAAS;AAClB;AAEA,SAASulC,WAAWA,CAACC,IAAI,EAAE;EACzB,IAAIC,UAAU,GAAG,CAAC;EAClB,IAAIC,GAAG,GAAG,EAAE;EACZ,IAAIC,eAAe;EACnB,KAAK,IAAI/zB,MAAM,GAAG,CAAC,EAAE4zB,IAAI,IAAI5zB,MAAM,GAAG6zB,UAAU,EAAE7zB,MAAM,EAAE,EAAE;IAC1D+zB,eAAe,GAAGC,eAAe,CAACJ,IAAI,CAAC;IACvC,IAAI,CAACG,eAAe,IAAIA,eAAe,CAACX,OAAO,KAAK,MAAM,EAAE;MAC1D;IACF;IACAU,GAAG,CAAChpB,OAAO,CAACipB,eAAe,CAAC;IAC5BH,IAAI,GAAGA,IAAI,CAACK,UAAU;EACxB;EACA,OAAOH,GAAG;AACZ;AAEA,SAASI,oBAAoBA,CAACl+B,CAAC,EAAE;EAC/B,IAAIm+B,UAAU,GAAG,EAAE;EACnB,IAAIC,SAAS,GAAG,KAAK;IACnBC,eAAe,GAAGD,SAAS,CAAC1lC,MAAM;EACpC,IAAIolC,GAAG,GAAG,EAAE;IACVjgC,GAAG,GAAG,CAAC;IACPygC,OAAO;IACPC,WAAW;EAEb,KAAK,IAAIjpC,CAAC,GAAG0K,CAAC,CAACtH,MAAM,GAAG,CAAC,EAAEpD,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;IACtCgpC,OAAO,GAAGE,mBAAmB,CAACx+B,CAAC,CAAC1K,CAAC,CAAC,CAAC;IACnCipC,WAAW,GAAG1gC,GAAG,GAAGigC,GAAG,CAACplC,MAAM,GAAG2lC,eAAe,GAAGC,OAAO,CAAC5lC,MAAM;IACjE,IAAIpD,CAAC,GAAG0K,CAAC,CAACtH,MAAM,GAAG,CAAC,IAAI6lC,WAAW,IAAIJ,UAAU,GAAG,CAAC,EAAE;MACrDL,GAAG,CAAChpB,OAAO,CAAC,KAAK,CAAC;MAClB;IACF;IACAgpB,GAAG,CAAChpB,OAAO,CAACwpB,OAAO,CAAC;IACpBzgC,GAAG,IAAIygC,OAAO,CAAC5lC,MAAM;EACvB;EACA,OAAOolC,GAAG,CAACxkC,IAAI,CAAC8kC,SAAS,CAAC;AAC5B;AAEA,SAASK,aAAaA,CAACb,IAAI,EAAE;EAC3B,OAAOM,oBAAoB,CAACP,WAAW,CAACC,IAAI,CAAC,CAAC;AAChD;AAEA,SAASY,mBAAmBA,CAACE,IAAI,EAAE;EACjC,IAAI,CAACA,IAAI,IAAI,CAACA,IAAI,CAACtB,OAAO,EAAE;IAC1B,OAAO,EAAE;EACX;EACA,IAAIU,GAAG,GAAG,CAACY,IAAI,CAACtB,OAAO,CAAC;EACxB,IAAIsB,IAAI,CAACzsB,EAAE,EAAE;IACX6rB,GAAG,CAACzkC,IAAI,CAAC,GAAG,GAAGqlC,IAAI,CAACzsB,EAAE,CAAC;EACzB;EACA,IAAIysB,IAAI,CAACC,OAAO,EAAE;IAChBb,GAAG,CAACzkC,IAAI,CAAC,GAAG,GAAGqlC,IAAI,CAACC,OAAO,CAACrlC,IAAI,CAAC,GAAG,CAAC,CAAC;EACxC;EAAC,IAAA+F,UAAA,GAAAX,oCAAA,CACuBggC,IAAI,CAAC7+B,UAAU;IAAAP,MAAA;EAAA;IAAvC,KAAAD,UAAA,CAAAvE,CAAA,MAAAwE,MAAA,GAAAD,UAAA,CAAAnK,CAAA,IAAA0J,IAAA,GAAyC;MAAA,IAA9BggC,SAAS,GAAAt/B,MAAA,CAAA3K,KAAA;MAClBmpC,GAAG,CAACzkC,IAAI,CAAC,GAAG,GAAGulC,SAAS,CAAC9mC,GAAG,GAAG,IAAI,GAAG8mC,SAAS,CAACjqC,KAAK,GAAG,IAAI,CAAC;IAC/D;EAAC,SAAA2H,GAAA;IAAA+C,UAAA,CAAA5J,CAAA,CAAA6G,GAAA;EAAA;IAAA+C,UAAA,CAAAvL,CAAA;EAAA;EAED,OAAOgqC,GAAG,CAACxkC,IAAI,CAAC,EAAE,CAAC;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS0kC,eAAeA,CAACJ,IAAI,EAAE;EAC7B,IAAI,CAACA,IAAI,IAAI,CAACA,IAAI,CAACR,OAAO,EAAE;IAC1B,OAAO,IAAI;EACb;EACA,IAAIU,GAAG,GAAG,CAAC,CAAC;IACV9K,SAAS;EACX8K,GAAG,CAACV,OAAO,GAAGQ,IAAI,CAACR,OAAO,CAACxpC,WAAW,CAAC,CAAC;EACxC,IAAIgqC,IAAI,CAAC3rB,EAAE,EAAE;IACX6rB,GAAG,CAAC7rB,EAAE,GAAG2rB,IAAI,CAAC3rB,EAAE;EAClB;EACA+gB,SAAS,GAAG4K,IAAI,CAAC5K,SAAS;EAC1B,IAAIA,SAAS,IAAI,OAAOA,SAAS,KAAK,QAAQ,EAAE;IAC9C8K,GAAG,CAACa,OAAO,GAAG3L,SAAS,CAAC7yB,KAAK,CAAC,KAAK,CAAC;EACtC;EACA,IAAIN,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;EACjDi+B,GAAG,CAACj+B,UAAU,GAAG,EAAE;EACnB,SAAA4W,EAAA,MAAAnE,WAAA,GAAwBzS,UAAU,EAAA4W,EAAA,GAAAnE,WAAA,CAAA5Z,MAAA,EAAA+d,EAAA,IAAE;IAA/B,IAAMmoB,SAAS,GAAAtsB,WAAA,CAAAmE,EAAA;IAClB,IAAM1F,IAAI,GAAG6sB,IAAI,CAACX,YAAY,CAAC2B,SAAS,CAAC;IACzC,IAAI7tB,IAAI,EAAE;MACR+sB,GAAG,CAACj+B,UAAU,CAACxG,IAAI,CAAC;QAAEvB,GAAG,EAAE8mC,SAAS;QAAEjqC,KAAK,EAAEoc;MAAK,CAAC,CAAC;IACtD;EACF;EACA,OAAO+sB,GAAG;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASe,iBAAiBA,CAAC71B,OAAO,EAAE21B,OAAO,EAAEG,SAAS,EAAE;EACtD,IAAI;IAAA,IAAAh/B,UAAA,GAAApB,oCAAA,CACgBigC,OAAO;MAAA5+B,MAAA;IAAA;MAAzB,KAAAD,UAAA,CAAAhF,CAAA,MAAAiF,MAAA,GAAAD,UAAA,CAAA5K,CAAA,IAAA0J,IAAA,GAA2B;QAAA,IAAhBmgC,GAAG,GAAAh/B,MAAA,CAAApL,KAAA;QACZ,IAAI,OAAOoqC,GAAG,KAAK,QAAQ,EAAE;UAC3B,IAAI/1B,OAAO,CAACg2B,SAAS,CAACC,QAAQ,CAACF,GAAG,CAAC,EAAE;YACnC,OAAO,IAAI;UACb;QACF,CAAC,MAAM;UAAA,IAAAv6B,UAAA,GAAA9F,oCAAA,CACWsK,OAAO,CAACg2B,SAAS;YAAAv6B,MAAA;UAAA;YAAjC,KAAAD,UAAA,CAAA1J,CAAA,MAAA2J,MAAA,GAAAD,UAAA,CAAAtP,CAAA,IAAA0J,IAAA,GAAmC;cAAA,IAAxBxI,CAAC,GAAAqO,MAAA,CAAA9P,KAAA;cACV,IAAIoqC,GAAG,CAACrqC,IAAI,CAAC0B,CAAC,CAAC,EAAE;gBACf,OAAO,IAAI;cACb;YACF;UAAC,SAAAkG,GAAA;YAAAkI,UAAA,CAAA/O,CAAA,CAAA6G,GAAA;UAAA;YAAAkI,UAAA,CAAA1Q,CAAA;UAAA;QACH;MACF;IAAC,SAAAwI,GAAA;MAAAwD,UAAA,CAAArK,CAAA,CAAA6G,GAAA;IAAA;MAAAwD,UAAA,CAAAhM,CAAA;IAAA;IAAA,IAAAmQ,UAAA,GAAAvF,oCAAA,CACiBogC,SAAS;MAAA36B,MAAA;IAAA;MAA3B,KAAAF,UAAA,CAAAnJ,CAAA,MAAAqJ,MAAA,GAAAF,UAAA,CAAA/O,CAAA,IAAA0J,IAAA,GAA6B;QAAA,IAAlBsgC,GAAG,GAAA/6B,MAAA,CAAAxP,KAAA;QACZ,IAAIqU,OAAO,CAAC4X,OAAO,CAACse,GAAG,CAAC,EAAE;UACxB,OAAO,IAAI;QACb;MACF;IAAC,SAAA5iC,GAAA;MAAA2H,UAAA,CAAAxO,CAAA,CAAA6G,GAAA;IAAA;MAAA2H,UAAA,CAAAnQ,CAAA;IAAA;EACH,CAAC,CAAC,OAAOsM,EAAE,EAAE;IACX;EAAA;EAEF,OAAO,KAAK;AACd;;;;;;;;;;;;;;;;;ACjKA;AACA;;AAEkC;AACF;AACY;AACA;AACT;AAEQ;AACL;AAEtC,IAAM8Z,kBAAQ,GAAG;EACfmlB,OAAO,EAAE,IAAI;EACbC,sBAAsB,EAAE,KAAK;EAC7BC,mBAAmB,EAAE,KAAK;EAC1BC,qBAAqB,EAAE,KAAK;EAC5BC,kBAAkB,EAAE,KAAK;EACzBC,qBAAqB,EAAE,KAAK;EAC5BC,qBAAqB,EAAE,KAAK;EAC5BC,mBAAmB,EAAE,KAAK;EAC1B79B,GAAG,EAAE,IAAI;EACT89B,GAAG,EAAE,IAAI;EACTC,UAAU,EAAE,IAAI;EAChBC,YAAY,EAAE,IAAI;EAClBC,qBAAqB,EAAE,IAAI;EAC3BC,4BAA4B,EAAE;AAChC,CAAC;AAED,SAASC,OAAOA,CAACpD,YAAY,EAAEvnC,IAAI,EAAE;EACnC,IAAIwY,CAAC;EACL,OAAO+uB,YAAY,CAACvnC,IAAI,CAAC,CAACmD,MAAM,EAAE;IAChCqV,CAAC,GAAG+uB,YAAY,CAACvnC,IAAI,CAAC,CAACwW,KAAK,CAAC,CAAC;IAC9BgC,CAAC,CAAC,CAAC,CAAC,CAACA,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;EACnB;AACF;AAEA,SAASoyB,mBAAmBA,CAAC7mB,WAAW,EAAE;EACxC,IAAI,CAACA,WAAW,IAAI,CAACA,WAAW,CAACzZ,UAAU,EAAE;IAC3C,OAAO,IAAI;EACb;EACA,IAAM2S,KAAK,GAAG8G,WAAW,CAACzZ,UAAU;EAAC,IAAApB,SAAA,GAAAC,mCAAA,CACrB8T,KAAK;IAAA7T,KAAA;EAAA;IAArB,KAAAF,SAAA,CAAA3D,CAAA,MAAA6D,KAAA,GAAAF,SAAA,CAAAvJ,CAAA,IAAA0J,IAAA,GAAuB;MAAA,IAAZoB,CAAC,GAAArB,KAAA,CAAAhK,KAAA;MACV,IAAIqL,CAAC,CAAClI,GAAG,KAAK,MAAM,EAAE;QACpB,OAAOkI,CAAC,CAACrL,KAAK;MAChB;IACF;EAAC,SAAA2H,GAAA;IAAAmC,SAAA,CAAAhJ,CAAA,CAAA6G,GAAA;EAAA;IAAAmC,SAAA,CAAA3K,CAAA;EAAA;EACD,OAAO,IAAI;AACb;AAEA,SAASssC,oBAAoBA,CAACx+B,WAAW,EAAE;EACzC,IAAMy+B,QAAQ,GAAG,EAAE;EAAC,IAAAhhC,UAAA,GAAAX,mCAAA,CACAkD,WAAW;IAAAtC,MAAA;EAAA;IAA/B,KAAAD,UAAA,CAAAvE,CAAA,MAAAwE,MAAA,GAAAD,UAAA,CAAAnK,CAAA,IAAA0J,IAAA,GAAiC;MAAA,IAAtB8F,KAAK,GAAApF,MAAA,CAAA3K,KAAA;MACd0rC,QAAQ,CAAChnC,IAAI,CAAC,IAAI7E,MAAM,CAACkQ,KAAK,EAAE,GAAG,CAAC,CAAC;IACvC;EAAC,SAAApI,GAAA;IAAA+C,UAAA,CAAA5J,CAAA,CAAA6G,GAAA;EAAA;IAAA+C,UAAA,CAAAvL,CAAA;EAAA;EACD,OAAO,UAAUwlB,WAAW,EAAE;IAC5B,IAAMhmB,IAAI,GAAG6sC,mBAAmB,CAAC7mB,WAAW,CAAC;IAC7C,IAAI,CAAChmB,IAAI,EAAE;MACT,OAAO,KAAK;IACd;IACA,SAAAmjB,EAAA,MAAA6pB,SAAA,GAAgBD,QAAQ,EAAA5pB,EAAA,GAAA6pB,SAAA,CAAA5nC,MAAA,EAAA+d,EAAA,IAAE;MAArB,IAAM9gB,CAAC,GAAA2qC,SAAA,CAAA7pB,EAAA;MACV,IAAI9gB,CAAC,CAACjB,IAAI,CAACpB,IAAI,CAAC,EAAE;QAChB,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd,CAAC;AACH;AAAC,IAEKmkC,YAAY;EAChB,SAAAA,aAAYz+B,OAAO,EAAE8wB,SAAS,EAAE4O,OAAO,EAAE6H,OAAO,EAAEC,SAAS,EAAE;IAAAl7B,wBAAA,OAAAmyB,YAAA;IAAArlB,wBAAA,mCAk4BlC,YAAY;MACrC,IAAI,CAACquB,eAAe,CAAC,cAAc,CAAC;IACtC,CAAC;IAn4BC,IAAI,CAACznC,OAAO,GAAGA,OAAO;IACtB,IAAI0nC,cAAc,GAAG1nC,OAAO,CAAC0nC,cAAc;IAC3C,IAAI1nC,OAAO,CAACosB,OAAO,KAAK,KAAK,IAAIsb,cAAc,KAAK,KAAK,EAAE;MACzD,IAAI,CAACA,cAAc,GAAG,CAAC,CAAC;IAC1B,CAAC,MAAM;MACL,IAAI,CAACrpC,MAAQ,CAACqpC,cAAc,EAAE,QAAQ,CAAC,EAAE;QACvCA,cAAc,GAAGxmB,kBAAQ;MAC3B;MACA,IAAI,CAACwmB,cAAc,GAAGrpC,KAAO,CAAC6iB,kBAAQ,EAAEwmB,cAAc,CAAC;IACzD;IACA,IAAI,CAACC,kBAAkB,CAAC,CAAC;IACzB,IAAI,CAAC7W,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAAC4O,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACl7B,UAAU,GAAGk7B,OAAO,CAAC9L,MAAM,CAAC5vB,QAAQ,CAACQ,UAAU;IACpD,IAAI,CAAC+iC,OAAO,GAAGA,OAAO,IAAI,CAAC,CAAC;IAC5B,IAAI,CAACC,SAAS,GAAGA,SAAS,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC1D,YAAY,GAAG;MAClBuC,OAAO,EAAE,EAAE;MACXt9B,GAAG,EAAE,EAAE;MACP+9B,UAAU,EAAE,EAAE;MACdC,YAAY,EAAE;IAChB,CAAC;IACD,IAAI,CAACa,aAAa,GAAG;MACnBf,GAAG,EAAE,EAAE;MACPE,YAAY,EAAE,EAAE;MAChBc,qBAAqB,EAAE;IACzB,CAAC;IAED,IAAI,CAACC,SAAS,GAAG,IAAI,CAACP,OAAO,CAAChlC,QAAQ;IACtC,IAAI,CAACwlC,SAAS,GAAG,IAAI,CAACD,SAAS,IAAI,IAAI,CAACA,SAAS,CAAChlC,IAAI;EACxD;EAAC,OAAAgK,qBAAA,CAAA2xB,YAAA;IAAA3/B,GAAA;IAAAnD,KAAA,EAED,SAAAgsC,kBAAkBA,CAAA,EAAG;MAAA,IAAAK,qBAAA,EAAAC,eAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA;MACnB,IAAMzoC,OAAO,GAAG,IAAI,CAACA,OAAO;MAC5B,IAAI,CAAC0oC,oBAAoB,GAAG/d,OAAO,EAAAqd,qBAAA,GACjChoC,OAAO,CAAC0oC,oBAAoB,cAAAV,qBAAA,cAAAA,qBAAA,IAAAC,eAAA,GAAIjoC,OAAO,CAAC+sB,MAAM,cAAAkb,eAAA,uBAAdA,eAAA,CAAgBpR,aAClD,CAAC;MACD,IAAI,CAAC8R,iBAAiB,GAAG3oC,OAAO,CAAC2oC,iBAAiB;MAClD,IAAI,CAACvB,oBAAoB,GAAGA,oBAAoB,CAACpnC,OAAO,CAAC4I,WAAW,CAAC;MACrE,IAAI,CAACggC,WAAW,IAAAV,gBAAA,GAAGloC,OAAO,CAAC+sB,MAAM,cAAAmb,gBAAA,uBAAdA,gBAAA,CAAgBU,WAAW;MAC9C,IAAI,CAACvS,gBAAgB,GAAG,EAAA8R,gBAAA,GAAAnoC,OAAO,CAAC+sB,MAAM,cAAAob,gBAAA,uBAAdA,gBAAA,CAAgB9R,gBAAgB,KAAI,CAAC,CAAC;MAC9D,IAAI,CAACwS,YAAY,GAAG,EAAAT,gBAAA,GAClBpoC,OAAO,CAAC+sB,MAAM,cAAAqb,gBAAA,uBAAdA,gBAAA,CAAgBtR,UAAU,GAAAuR,gBAAA,GAC1BroC,OAAO,CAAC+sB,MAAM,cAAAsb,gBAAA,uBAAdA,gBAAA,CAAgBrR,WAAW,GAAAsR,gBAAA,GAC3BtoC,OAAO,CAAC+sB,MAAM,cAAAub,gBAAA,uBAAdA,gBAAA,CAAgBvR,aAAa,CAC9B,CAACvpB,MAAM,CAACmd,OAAO,CAAC;MACjB,IAAI,CAACme,cAAc,GAAG,EAAAP,gBAAA,GACpBvoC,OAAO,CAAC+sB,MAAM,cAAAwb,gBAAA,uBAAdA,gBAAA,CAAgBQ,aAAa,GAAAP,gBAAA,GAC7BxoC,OAAO,CAAC+sB,MAAM,cAAAyb,gBAAA,uBAAdA,gBAAA,CAAgBQ,cAAc,GAAAP,gBAAA,GAC9BzoC,OAAO,CAAC+sB,MAAM,cAAA0b,gBAAA,uBAAdA,gBAAA,CAAgBQ,gBAAgB,CACjC,CAACz7B,MAAM,CAACmd,OAAO,CAAC;IACnB;EAAC;IAAA7rB,GAAA;IAAAnD,KAAA,EAED,SAAAoR,SAASA,CAAC/M,OAAO,EAAE;MACjB,IAAI,CAACA,OAAO,GAAG3B,KAAO,CAAC,IAAI,CAAC2B,OAAO,EAAEA,OAAO,CAAC;MAC7C,IAAI0nC,cAAc,GAAG1nC,OAAO,CAAC0nC,cAAc;MAC3C,IAAMwB,WAAW,GAAG7qC,KAAO,CAAC,IAAI,CAACqpC,cAAc,CAAC;MAChD,IAAI1nC,OAAO,CAACosB,OAAO,KAAK,KAAK,IAAIsb,cAAc,KAAK,KAAK,EAAE;QACzD,IAAI,CAACA,cAAc,GAAG,CAAC,CAAC;MAC1B,CAAC,MAAM;QACL,IAAI,CAACrpC,MAAQ,CAACqpC,cAAc,EAAE,QAAQ,CAAC,EAAE;UACvCA,cAAc,GAAGxmB,kBAAQ;QAC3B;QACA,IAAI,CAACwmB,cAAc,GAAGrpC,KAAO,CAAC6iB,kBAAQ,EAAEwmB,cAAc,CAAC;MACzD;MACA,IAAI,CAACC,kBAAkB,CAAC,CAAC;MACzB,IAAI,CAACnI,UAAU,CAAC0J,WAAW,CAAC;IAC9B;;IAEA;EAAA;IAAApqC,GAAA;IAAAnD,KAAA,EACA,SAAA6jC,UAAUA,CAAC0J,WAAW,EAAE;MACtB,IAAI,IAAI,CAACxB,cAAc,CAACrB,OAAO,IAAI,EAAE6C,WAAW,IAAIA,WAAW,CAAC7C,OAAO,CAAC,EAAE;QACxE,IAAI,CAAC8C,iBAAiB,CAAC,CAAC;MAC1B,CAAC,MAAM,IACL,CAAC,IAAI,CAACzB,cAAc,CAACrB,OAAO,IAC5B6C,WAAW,IACXA,WAAW,CAAC7C,OAAO,EACnB;QACA,IAAI,CAAC+C,mBAAmB,CAAC,CAAC;MAC5B;MAEA,IAAI,IAAI,CAAC1B,cAAc,CAAC3+B,GAAG,IAAI,EAAEmgC,WAAW,IAAIA,WAAW,CAACngC,GAAG,CAAC,EAAE;QAChE,IAAI,CAACsgC,iBAAiB,CAAC,CAAC;MAC1B,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC3B,cAAc,CAAC3+B,GAAG,IAAImgC,WAAW,IAAIA,WAAW,CAACngC,GAAG,EAAE;QACrE,IAAI,CAACugC,mBAAmB,CAAC,CAAC;MAC5B;MAEA,IAAI,IAAI,CAAC5B,cAAc,CAACb,GAAG,IAAI,EAAEqC,WAAW,IAAIA,WAAW,CAACrC,GAAG,CAAC,EAAE;QAChE,IAAI,CAAC0C,aAAa,CAAC,CAAC;MACtB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC7B,cAAc,CAACb,GAAG,IAAIqC,WAAW,IAAIA,WAAW,CAACrC,GAAG,EAAE;QACrE,IAAI,CAAC2C,eAAe,CAAC,CAAC;MACxB;MAEA,IACE,IAAI,CAAC9B,cAAc,CAACZ,UAAU,IAC9B,EAAEoC,WAAW,IAAIA,WAAW,CAACpC,UAAU,CAAC,EACxC;QACA,IAAI,CAAC2C,oBAAoB,CAAC,CAAC;MAC7B,CAAC,MAAM,IACL,CAAC,IAAI,CAAC/B,cAAc,CAACZ,UAAU,IAC/BoC,WAAW,IACXA,WAAW,CAACpC,UAAU,EACtB;QACA,IAAI,CAAC4C,sBAAsB,CAAC,CAAC;MAC/B;MAEA,IACE,IAAI,CAAChC,cAAc,CAACX,YAAY,IAChC,EAAEmC,WAAW,IAAIA,WAAW,CAACnC,YAAY,CAAC,EAC1C;QACA,IAAI,CAAC4C,sBAAsB,CAAC,CAAC;MAC/B,CAAC,MAAM,IACL,CAAC,IAAI,CAACjC,cAAc,CAACX,YAAY,IACjCmC,WAAW,IACXA,WAAW,CAACnC,YAAY,EACxB;QACA,IAAI,CAAC6C,wBAAwB,CAAC,CAAC;MACjC;MAEA,IACE,IAAI,CAAClC,cAAc,CAACV,qBAAqB,IACzC,EAAEkC,WAAW,IAAIA,WAAW,CAAClC,qBAAqB,CAAC,EACnD;QACA,IAAI,CAAC6C,+BAA+B,CAAC,CAAC;MACxC,CAAC,MAAM,IACL,CAAC,IAAI,CAACnC,cAAc,CAACV,qBAAqB,IAC1CkC,WAAW,IACXA,WAAW,CAAClC,qBAAqB,EACjC;QACA,IAAI,CAAC8C,iCAAiC,CAAC,CAAC;MAC1C;IACF;EAAC;IAAAhrC,GAAA;IAAAnD,KAAA,EAED,SAAAytC,mBAAmBA,CAAA,EAAG;MACpBlC,OAAO,CAAC,IAAI,CAACpD,YAAY,EAAE,SAAS,CAAC;IACvC;EAAC;IAAAhlC,GAAA;IAAAnD,KAAA,EAED,SAAAwtC,iBAAiBA,CAAA,EAAG;MAClB,IAAM11B,IAAI,GAAG,IAAI;MAEjB,SAASs2B,QAAQA,CAACjuC,IAAI,EAAEkuC,GAAG,EAAE;QAC3B,IAAIluC,IAAI,IAAIkuC,GAAG,IAAI3rC,UAAY,CAAC2rC,GAAG,CAACluC,IAAI,CAAC,CAAC,EAAE;UAC1CR,eAAO,CAAC0uC,GAAG,EAAEluC,IAAI,EAAE,UAAUioC,IAAI,EAAE;YACjC,OAAOtwB,IAAI,CAACisB,OAAO,CAACgB,IAAI,CAACqD,IAAI,CAAC;UAChC,CAAC,CAAC;QACJ;MACF;MAEA,IAAI,gBAAgB,IAAI,IAAI,CAACwD,OAAO,EAAE;QACpC,IAAM0C,IAAI,GAAG,IAAI,CAAC1C,OAAO,CAAC3lB,cAAc,CAACzmB,SAAS;QAClDG,eAAO,CACL2uC,IAAI,EACJ,MAAM,EACN,UAAUlG,IAAI,EAAE;UACd,OAAO,UAAUx0B,MAAM,EAAEvR,GAAG,EAAE;YAC5B,IAAMksC,WAAW,GAAGC,YAAY,CAACnsC,GAAG,CAAC;YACrC,IAAIK,MAAQ,CAACL,GAAG,EAAE,QAAQ,CAAC,IAAIksC,WAAW,EAAE;cAC1ClsC,GAAG,GAAGksC,WAAW,GAAGlsC,GAAG,CAACvD,QAAQ,CAAC,CAAC,GAAGuD,GAAG;cACxC,IAAI,IAAI,CAACosC,aAAa,EAAE;gBACtB,IAAI,CAACA,aAAa,CAAC76B,MAAM,GAAGA,MAAM;gBAClC,IAAI,CAAC66B,aAAa,CAACpsC,GAAG,GAAGA,GAAG;gBAC5B,IAAI,CAACosC,aAAa,CAACh7B,WAAW,GAAG,IAAI;gBACrC,IAAI,CAACg7B,aAAa,CAACt6B,aAAa,GAAGzR,GAAK,CAAC,CAAC;gBAC1C,IAAI,CAAC+rC,aAAa,CAAC96B,WAAW,GAAG,IAAI;cACvC,CAAC,MAAM;gBACL,IAAI,CAAC86B,aAAa,GAAG;kBACnB76B,MAAM,EAAEA,MAAM;kBACdvR,GAAG,EAAEA,GAAG;kBACRoR,WAAW,EAAE,IAAI;kBACjBU,aAAa,EAAEzR,GAAK,CAAC,CAAC;kBACtBiR,WAAW,EAAE;gBACf,CAAC;cACH;YACF;YACA,OAAOy0B,IAAI,CAACxvB,KAAK,CAAC,IAAI,EAAE9K,SAAS,CAAC;UACpC,CAAC;QACH,CAAC,EACD,IAAI,CAACq6B,YAAY,EACjB,SACF,CAAC;QAEDxoC,eAAO,CACL2uC,IAAI,EACJ,kBAAkB,EAClB,UAAUlG,IAAI,EAAE;UACd,OAAO,UAAUJ,MAAM,EAAEhoC,KAAK,EAAE;YAC9B;YACA,IAAI,CAAC,IAAI,CAACyuC,aAAa,EAAE;cACvB,IAAI,CAACA,aAAa,GAAG,CAAC,CAAC;YACzB;YACA,IAAI/rC,MAAQ,CAACslC,MAAM,EAAE,QAAQ,CAAC,IAAItlC,MAAQ,CAAC1C,KAAK,EAAE,QAAQ,CAAC,EAAE;cAC3D,IAAI8X,IAAI,CAACi0B,cAAc,CAAClB,qBAAqB,EAAE;gBAC7C,IAAI,CAAC,IAAI,CAAC4D,aAAa,CAAC36B,eAAe,EAAE;kBACvC,IAAI,CAAC26B,aAAa,CAAC36B,eAAe,GAAG,CAAC,CAAC;gBACzC;gBACA,IAAI,CAAC26B,aAAa,CAAC36B,eAAe,CAACk0B,MAAM,CAAC,GAAGhoC,KAAK;cACpD;cACA;cACA,IAAIgoC,MAAM,CAAC/oC,WAAW,CAAC,CAAC,KAAK,cAAc,EAAE;gBAC3C,IAAI,CAACwvC,aAAa,CAACC,oBAAoB,GAAG1uC,KAAK;cACjD;YACF;YACA,OAAOooC,IAAI,CAACxvB,KAAK,CAAC,IAAI,EAAE9K,SAAS,CAAC;UACpC,CAAC;QACH,CAAC,EACD,IAAI,CAACq6B,YAAY,EACjB,SACF,CAAC;QAEDxoC,eAAO,CACL2uC,IAAI,EACJ,MAAM,EACN,UAAUlG,IAAI,EAAE;UACd,OAAO,UAAU/+B,IAAI,EAAE;YACrB,IAAMglC,GAAG,GAAG,IAAI;YAEhB,SAASM,yBAAyBA,CAAA,EAAG;cACnC,IAAIN,GAAG,CAACI,aAAa,EAAE;gBACrB,IAAIJ,GAAG,CAACI,aAAa,CAACh7B,WAAW,KAAK,IAAI,EAAE;kBAC1C46B,GAAG,CAACI,aAAa,CAACh7B,WAAW,GAAG,CAAC;kBACjC,IAAIqE,IAAI,CAACi0B,cAAc,CAACjB,kBAAkB,EAAE;oBAC1CuD,GAAG,CAACI,aAAa,CAAC/lC,OAAO,GAAGW,IAAI;kBAClC;kBACAglC,GAAG,CAACO,eAAe,GAAG92B,IAAI,CAAC3E,cAAc,CACvCk7B,GAAG,CAACI,aAAa,EACjB,KAAK,EACLhrC,SACF,CAAC;gBACH;gBACA,IAAI4qC,GAAG,CAACtO,UAAU,GAAG,CAAC,EAAE;kBACtBsO,GAAG,CAACI,aAAa,CAACt6B,aAAa,GAAGzR,GAAK,CAAC,CAAC;gBAC3C;gBACA,IAAI2rC,GAAG,CAACtO,UAAU,GAAG,CAAC,EAAE;kBACtB,IAAMpsB,WAAW,GAAGjR,GAAK,CAAC,CAAC;kBAC3B2rC,GAAG,CAACI,aAAa,CAAC96B,WAAW,GAAGA,WAAW;kBAE3C,IAAIK,QAAO,GAAG,IAAI;kBAClBq6B,GAAG,CAACI,aAAa,CAACI,qBAAqB,GACrCR,GAAG,CAAClO,iBAAiB,CAAC,cAAc,CAAC;kBACvC,IAAIroB,IAAI,CAACi0B,cAAc,CAACpB,sBAAsB,EAAE;oBAC9C,IAAMmE,aAAa,GACjBh3B,IAAI,CAACi0B,cAAc,CAACpB,sBAAsB;oBAC5C32B,QAAO,GAAG,CAAC,CAAC;oBACZ,IAAI;sBACF,IAAIg0B,MAAM;sBACV,IAAI8G,aAAa,KAAK,IAAI,EAAE;wBAC1B,IAAMC,UAAU,GAAGV,GAAG,CAACW,qBAAqB,CAAC,CAAC;wBAC9C,IAAID,UAAU,EAAE;0BACd,IAAMvkC,GAAG,GAAGukC,UAAU,CAACE,IAAI,CAAC,CAAC,CAACzjC,KAAK,CAAC,SAAS,CAAC;0BAC9C,IAAIa,KAAK,EAAErM,KAAK;0BAAC,IAAAmL,UAAA,GAAApB,mCAAA,CACDS,GAAG;4BAAAY,MAAA;0BAAA;4BAAnB,KAAAD,UAAA,CAAAhF,CAAA,MAAAiF,MAAA,GAAAD,UAAA,CAAA5K,CAAA,IAAA0J,IAAA,GAAqB;8BAAA,IAAVjF,CAAC,GAAAoG,MAAA,CAAApL,KAAA;8BACVqM,KAAK,GAAGrH,CAAC,CAACwG,KAAK,CAAC,IAAI,CAAC;8BACrBw8B,MAAM,GAAG37B,KAAK,CAAC+K,KAAK,CAAC,CAAC;8BACtBpX,KAAK,GAAGqM,KAAK,CAAC1H,IAAI,CAAC,IAAI,CAAC;8BACxBqP,QAAO,CAACg0B,MAAM,CAAC,GAAGhoC,KAAK;4BACzB;0BAAC,SAAA2H,GAAA;4BAAAwD,UAAA,CAAArK,CAAA,CAAA6G,GAAA;0BAAA;4BAAAwD,UAAA,CAAAhM,CAAA;0BAAA;wBACH;sBACF,CAAC,MAAM;wBAAA,IAAAmQ,UAAA,GAAAvF,mCAAA,CACW+kC,aAAa;0BAAAt/B,MAAA;wBAAA;0BAA7B,KAAAF,UAAA,CAAAnJ,CAAA,MAAAqJ,MAAA,GAAAF,UAAA,CAAA/O,CAAA,IAAA0J,IAAA,GAA+B;4BAAA,IAApBjF,EAAC,GAAAwK,MAAA,CAAAxP,KAAA;4BACVgU,QAAO,CAAChP,EAAC,CAAC,GAAGqpC,GAAG,CAAClO,iBAAiB,CAACn7B,EAAC,CAAC;0BACvC;wBAAC,SAAA2C,GAAA;0BAAA2H,UAAA,CAAAxO,CAAA,CAAA6G,GAAA;wBAAA;0BAAA2H,UAAA,CAAAnQ,CAAA;wBAAA;sBACH;oBACF,CAAC,CAAC,OAAOsM,EAAE,EAAE;sBACX;AACtB;oBADsB;kBAGJ;kBACA,IAAIiH,IAAI,GAAG,IAAI;kBACf,IAAIoF,IAAI,CAACi0B,cAAc,CAACnB,mBAAmB,EAAE;oBAC3C,IAAI;sBACFl4B,IAAI,GAAG27B,GAAG,CAACpO,YAAY;oBACzB,CAAC,CAAC,OAAOx0B,EAAE,EAAE;sBACX;oBAAA;kBAEJ;kBACA,IAAIsI,QAAQ,GAAG,IAAI;kBACnB,IAAIrB,IAAI,IAAIsB,QAAO,EAAE;oBACnBD,QAAQ,GAAG,CAAC,CAAC;oBACb,IAAIrB,IAAI,EAAE;sBACR,IACEoF,IAAI,CAACo3B,iBAAiB,CACpBb,GAAG,CAACI,aAAa,CAACI,qBACpB,CAAC,EACD;wBACA96B,QAAQ,CAACrB,IAAI,GAAGoF,IAAI,CAACq3B,SAAS,CAACz8B,IAAI,CAAC;sBACtC,CAAC,MAAM;wBACLqB,QAAQ,CAACrB,IAAI,GAAGA,IAAI;sBACtB;oBACF;oBACA,IAAIsB,QAAO,EAAE;sBACXD,QAAQ,CAACC,OAAO,GAAGA,QAAO;oBAC5B;kBACF;kBACA,IAAID,QAAQ,EAAE;oBACZs6B,GAAG,CAACI,aAAa,CAAC16B,QAAQ,GAAGA,QAAQ;kBACvC;kBACA,IAAI;oBACF,IAAI/N,IAAI,GAAGqoC,GAAG,CAAC9sB,MAAM;oBACrBvb,IAAI,GAAGA,IAAI,KAAK,IAAI,GAAG,GAAG,GAAGA,IAAI;oBACjCqoC,GAAG,CAACI,aAAa,CAACh7B,WAAW,GAAGzN,IAAI;oBACpC8R,IAAI,CAACs3B,sBAAsB,CACzBf,GAAG,CAACO,eAAe,EACnBj7B,WAAW,EACX3N,IACF,CAAC;oBACDqoC,GAAG,CAACO,eAAe,CAACnlC,KAAK,GACvBqO,IAAI,CAACqd,SAAS,CAAC3hB,eAAe,CAACxN,IAAI,CAAC;oBACtC8R,IAAI,CAACu3B,iBAAiB,CAAChB,GAAG,CAACI,aAAa,CAAC;kBAC3C,CAAC,CAAC,OAAOhjC,EAAE,EAAE;oBACX;kBAAA;gBAEJ;cACF;YACF;YAEA2iC,QAAQ,CAAC,QAAQ,EAAEC,GAAG,CAAC;YACvBD,QAAQ,CAAC,SAAS,EAAEC,GAAG,CAAC;YACxBD,QAAQ,CAAC,YAAY,EAAEC,GAAG,CAAC;YAE3B,IACE,oBAAoB,IAAIA,GAAG,IAC3B3rC,UAAY,CAAC2rC,GAAG,CAACvO,kBAAkB,CAAC,EACpC;cACAngC,eAAO,CAAC0uC,GAAG,EAAE,oBAAoB,EAAE,UAAUjG,IAAI,EAAE;gBACjD,OAAOtwB,IAAI,CAACisB,OAAO,CAACgB,IAAI,CACtBqD,IAAI,EACJ3kC,SAAS,EACTkrC,yBACF,CAAC;cACH,CAAC,CAAC;YACJ,CAAC,MAAM;cACLN,GAAG,CAACvO,kBAAkB,GAAG6O,yBAAyB;YACpD;YACA,IAAIN,GAAG,CAACI,aAAa,IAAI32B,IAAI,CAACw3B,eAAe,CAAC,CAAC,EAAE;cAC/CjB,GAAG,CAACI,aAAa,CAACjnC,KAAK,GAAG,IAAI3I,KAAK,CAAC,CAAC,CAAC2I,KAAK;YAC7C;YACA,OAAO4gC,IAAI,CAACxvB,KAAK,CAAC,IAAI,EAAE9K,SAAS,CAAC;UACpC,CAAC;QACH,CAAC,EACD,IAAI,CAACq6B,YAAY,EACjB,SACF,CAAC;MACH;MAEA,IAAI,OAAO,IAAI,IAAI,CAACyD,OAAO,EAAE;QAC3BjsC,eAAO,CACL,IAAI,CAACisC,OAAO,EACZ,OAAO,EACP,UAAUxD,IAAI,EAAE;UACd,OAAO,UAAUmH,GAAG,EAAEC,EAAE,EAAE;YACxB,IAAMpnC,IAAI,GAAAuJ,KAAA,CAAAnS,SAAA,CAAA0I,KAAA,CAAAnJ,IAAA,CAAO+O,SAAS,CAAC;YAC3B,IAAMjB,KAAK,GAAGzE,IAAI,CAAC,CAAC,CAAC;YACrB,IAAIwL,MAAM,GAAG,KAAK;YAClB,IAAIvR,GAAG;YACP,IAAMksC,WAAW,GAAGC,YAAY,CAAC3hC,KAAK,CAAC;YACvC,IAAInK,MAAQ,CAACmK,KAAK,EAAE,QAAQ,CAAC,IAAI0hC,WAAW,EAAE;cAC5ClsC,GAAG,GAAGksC,WAAW,GAAG1hC,KAAK,CAAC/N,QAAQ,CAAC,CAAC,GAAG+N,KAAK;YAC9C,CAAC,MAAM,IAAIA,KAAK,EAAE;cAChBxK,GAAG,GAAGwK,KAAK,CAACxK,GAAG;cACf,IAAIwK,KAAK,CAAC+G,MAAM,EAAE;gBAChBA,MAAM,GAAG/G,KAAK,CAAC+G,MAAM;cACvB;YACF;YACA,IAAIxL,IAAI,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,CAACwL,MAAM,EAAE;cAC7BA,MAAM,GAAGxL,IAAI,CAAC,CAAC,CAAC,CAACwL,MAAM;YACzB;YACA,IAAM9I,QAAQ,GAAG;cACf8I,MAAM,EAAEA,MAAM;cACdvR,GAAG,EAAEA,GAAG;cACRoR,WAAW,EAAE,IAAI;cACjBU,aAAa,EAAEzR,GAAK,CAAC,CAAC;cACtBiR,WAAW,EAAE;YACf,CAAC;YACD,IAAIvL,IAAI,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,CAAC4L,OAAO,EAAE;cAC9B;cACA;cACA,IAAMy7B,UAAU,GAAGz7B,eAAO,CAAC5L,IAAI,CAAC,CAAC,CAAC,CAAC4L,OAAO,CAAC;cAE3ClJ,QAAQ,CAAC4jC,oBAAoB,GAAGe,UAAU,CAACnkC,GAAG,CAAC,cAAc,CAAC;cAE9D,IAAIwM,IAAI,CAACi0B,cAAc,CAAClB,qBAAqB,EAAE;gBAC7C//B,QAAQ,CAACgJ,eAAe,GAAGgE,IAAI,CAAC43B,YAAY,CAC1CD,UAAU,EACV33B,IAAI,CAACi0B,cAAc,CAAClB,qBACtB,CAAC;cACH;YACF;YAEA,IAAI/yB,IAAI,CAACi0B,cAAc,CAACjB,kBAAkB,EAAE;cAC1C,IAAI1iC,IAAI,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,CAACsK,IAAI,EAAE;gBAC3B5H,QAAQ,CAACpC,OAAO,GAAGN,IAAI,CAAC,CAAC,CAAC,CAACsK,IAAI;cACjC,CAAC,MAAM,IACLtK,IAAI,CAAC,CAAC,CAAC,IACP,CAAC1F,MAAQ,CAAC0F,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAC5BA,IAAI,CAAC,CAAC,CAAC,CAACsK,IAAI,EACZ;gBACA5H,QAAQ,CAACpC,OAAO,GAAGN,IAAI,CAAC,CAAC,CAAC,CAACsK,IAAI;cACjC;YACF;YACA,IAAMi9B,cAAc,GAAG73B,IAAI,CAAC3E,cAAc,CACxCrI,QAAQ,EACR,OAAO,EACPrH,SACF,CAAC;YACD,IAAIqU,IAAI,CAACw3B,eAAe,CAAC,CAAC,EAAE;cAC1BxkC,QAAQ,CAACtD,KAAK,GAAG,IAAI3I,KAAK,CAAC,CAAC,CAAC2I,KAAK;YACpC;;YAEA;YACA;YACA,OAAO4gC,IAAI,CAACxvB,KAAK,CAAC,IAAI,EAAExQ,IAAI,CAAC,CAACnH,IAAI,CAAC,UAAU2G,IAAI,EAAE;cACjD,IAAM+L,WAAW,GAAGjR,GAAK,CAAC,CAAC;cAC3BoI,QAAQ,CAAC6I,WAAW,GAAGA,WAAW;cAClC7I,QAAQ,CAAC2I,WAAW,GAAG7L,IAAI,CAAC2Z,MAAM;cAClCzJ,IAAI,CAACs3B,sBAAsB,CACzBO,cAAc,EACdh8B,WAAW,EACX/L,IAAI,CAAC2Z,MACP,CAAC;cAEDzW,QAAQ,CAAC+jC,qBAAqB,GAAGjnC,IAAI,CAACoM,OAAO,CAAC1I,GAAG,CAAC,cAAc,CAAC;cACjE,IAAI0I,OAAO,GAAG,IAAI;cAClB,IAAI8D,IAAI,CAACi0B,cAAc,CAACpB,sBAAsB,EAAE;gBAC9C32B,OAAO,GAAG8D,IAAI,CAAC43B,YAAY,CACzB9nC,IAAI,CAACoM,OAAO,EACZ8D,IAAI,CAACi0B,cAAc,CAACpB,sBACtB,CAAC;cACH;cACA,IAAIj4B,IAAI,GAAG,IAAI;cACf,IAAIoF,IAAI,CAACi0B,cAAc,CAACnB,mBAAmB,EAAE;gBAC3C,IAAI,OAAOhjC,IAAI,CAACgzB,IAAI,KAAK,UAAU,EAAE;kBACnC;kBACA;kBACA;kBACAloB,IAAI,GAAG9K,IAAI,CAACG,KAAK,CAAC,CAAC,CAAC6yB,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC9B;cACF;cACA,IAAI5mB,OAAO,IAAItB,IAAI,EAAE;gBACnB5H,QAAQ,CAACiJ,QAAQ,GAAG,CAAC,CAAC;gBACtB,IAAIrB,IAAI,EAAE;kBACR;kBACA,IAAI,OAAOA,IAAI,CAACzR,IAAI,KAAK,UAAU,EAAE;oBACnCyR,IAAI,CAACzR,IAAI,CAAC,UAAU25B,IAAI,EAAE;sBACxB,IACEA,IAAI,IACJ9iB,IAAI,CAACo3B,iBAAiB,CAACpkC,QAAQ,CAAC+jC,qBAAqB,CAAC,EACtD;wBACA/jC,QAAQ,CAACiJ,QAAQ,CAACrB,IAAI,GAAGoF,IAAI,CAACq3B,SAAS,CAACvU,IAAI,CAAC;sBAC/C,CAAC,MAAM;wBACL9vB,QAAQ,CAACiJ,QAAQ,CAACrB,IAAI,GAAGkoB,IAAI;sBAC/B;oBACF,CAAC,CAAC;kBACJ,CAAC,MAAM;oBACL9vB,QAAQ,CAACiJ,QAAQ,CAACrB,IAAI,GAAGA,IAAI;kBAC/B;gBACF;gBACA,IAAIsB,OAAO,EAAE;kBACXlJ,QAAQ,CAACiJ,QAAQ,CAACC,OAAO,GAAGA,OAAO;gBACrC;cACF;cACA8D,IAAI,CAACu3B,iBAAiB,CAACvkC,QAAQ,CAAC;cAChC,OAAOlD,IAAI;YACb,CAAC,CAAC;UACJ,CAAC;QACH,CAAC,EACD,IAAI,CAACugC,YAAY,EACjB,SACF,CAAC;MACH;IACF;EAAC;IAAAhlC,GAAA;IAAAnD,KAAA,EAED,SAAAmT,cAAcA,CAACrI,QAAQ,EAAEsI,OAAO,EAAEb,WAAW,EAAE;MAC7C,IACEzH,QAAQ,CAACpC,OAAO,IAChB,IAAI,CAACwmC,iBAAiB,CAACpkC,QAAQ,CAAC4jC,oBAAoB,CAAC,EACrD;QACA5jC,QAAQ,CAACpC,OAAO,GAAG,IAAI,CAACymC,SAAS,CAACrkC,QAAQ,CAACpC,OAAO,CAAC;MACrD;MACA,OAAO,IAAI,CAACysB,SAAS,CAAChiB,cAAc,CAACrI,QAAQ,EAAEsI,OAAO,EAAEb,WAAW,CAAC;IACtE;EAAC;IAAApP,GAAA;IAAAnD,KAAA,EAED,SAAAkvC,iBAAiBA,CAACU,WAAW,EAAE;MAC7B,OAAOA,WAAW,IAChBltC,MAAQ,CAACktC,WAAW,EAAE,QAAQ,CAAC,IAC/BA,WAAW,CAAC3wC,WAAW,CAAC,CAAC,CAACgJ,QAAQ,CAAC,MAAM,CAAC,GACxC,IAAI,GACJ,KAAK;IACX;EAAC;IAAA9E,GAAA;IAAAnD,KAAA,EAED,SAAAovC,sBAAsBA,CAACrkC,KAAK,EAAE8kC,SAAS,EAAEh8B,UAAU,EAAE;MACnD,IAAI9I,KAAK,CAACkH,cAAc,EAAE;QACxBlH,KAAK,CAACkH,cAAc,CAAC,uBAAuB,CAAC,GAAG,CAC9C49B,SAAS,GAAG,GAAG,EACf/wC,QAAQ,CAAC,CAAC;QACZiM,KAAK,CAACkH,cAAc,CAAC4B,UAAU,GAAGA,UAAU;MAC9C;IACF;EAAC;IAAA1Q,GAAA;IAAAnD,KAAA,EAED,SAAAmvC,SAASA,CAAC1P,IAAI,EAAE;MACd,OAAO/5B,IAAI,CAACF,SAAS,CAAC8I,SAAK,CAAC5I,IAAI,CAACU,KAAK,CAACq5B,IAAI,CAAC,EAAE,IAAI,CAACp7B,OAAO,CAAC4I,WAAW,CAAC,CAAC;IAC1E;EAAC;IAAA9J,GAAA;IAAAnD,KAAA,EAED,SAAA0vC,YAAYA,CAACI,SAAS,EAAEhB,aAAa,EAAE;MACrC,IAAMiB,UAAU,GAAG,CAAC,CAAC;MACrB,IAAI;QACF,IAAIjB,aAAa,KAAK,IAAI,EAAE;UAC1B,IAAI,OAAOgB,SAAS,CAACvgC,OAAO,KAAK,UAAU,EAAE;YAC3C;YACA,IAAMw/B,UAAU,GAAGe,SAAS,CAACvgC,OAAO,CAAC,CAAC;YACtC,IAAIygC,aAAa,GAAGjB,UAAU,CAAC9d,IAAI,CAAC,CAAC;YACrC,OAAO,CAAC+e,aAAa,CAAC/lC,IAAI,EAAE;cAC1B8lC,UAAU,CAACC,aAAa,CAAChwC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAGgwC,aAAa,CAAChwC,KAAK,CAAC,CAAC,CAAC;cAC3DgwC,aAAa,GAAGjB,UAAU,CAAC9d,IAAI,CAAC,CAAC;YACnC;UACF;QACF,CAAC,MAAM;UAAA,IAAAphB,UAAA,GAAA9F,mCAAA,CACW+kC,aAAa;YAAAh/B,MAAA;UAAA;YAA7B,KAAAD,UAAA,CAAA1J,CAAA,MAAA2J,MAAA,GAAAD,UAAA,CAAAtP,CAAA,IAAA0J,IAAA,GAA+B;cAAA,IAApBjF,CAAC,GAAA8K,MAAA,CAAA9P,KAAA;cACV+vC,UAAU,CAAC/qC,CAAC,CAAC,GAAG8qC,SAAS,CAACxkC,GAAG,CAACtG,CAAC,CAAC;YAClC;UAAC,SAAA2C,GAAA;YAAAkI,UAAA,CAAA/O,CAAA,CAAA6G,GAAA;UAAA;YAAAkI,UAAA,CAAA1Q,CAAA;UAAA;QACH;MACF,CAAC,CAAC,OAAOsM,EAAE,EAAE;QACX;MAAA;MAEF,OAAOskC,UAAU;IACnB;EAAC;IAAA5sC,GAAA;IAAAnD,KAAA,EAED,SAAAsvC,eAAeA,CAAA,EAAG;MAChB,OACE,IAAI,CAACvD,cAAc,CAAChB,qBAAqB,IACzC,IAAI,CAACgB,cAAc,CAACf,qBAAqB,IACzC,IAAI,CAACe,cAAc,CAACd,mBAAmB;IAE3C;EAAC;IAAA9nC,GAAA;IAAAnD,KAAA,EAED,SAAAqvC,iBAAiBA,CAACvkC,QAAQ,EAAE;MAC1B,IAAMyW,MAAM,GAAGzW,QAAQ,CAAC2I,WAAW;MAEnC,IACG8N,MAAM,IAAI,GAAG,IAAI,IAAI,CAACwqB,cAAc,CAAChB,qBAAqB,IAC1DxpB,MAAM,IAAI,GAAG,IAAI,IAAI,CAACwqB,cAAc,CAACf,qBAAsB,IAC3DzpB,MAAM,KAAK,CAAC,IAAI,IAAI,CAACwqB,cAAc,CAACd,mBAAoB,EACzD;QACA,IAAM/oC,KAAK,GAAG,IAAIrD,KAAK,CAAC,kCAAkC,GAAG0iB,MAAM,CAAC;QACpErf,KAAK,CAACsF,KAAK,GAAGsD,QAAQ,CAACtD,KAAK;QAC5B,IAAI,CAACu8B,OAAO,CAAC7hC,KAAK,CAACA,KAAK,EAAE;UAAEwH,UAAU,EAAE;QAAE,CAAC,CAAC;MAC9C;IACF;EAAC;IAAAvG,GAAA;IAAAnD,KAAA,EAED,SAAA2tC,mBAAmBA,CAAA,EAAG;MACpB,IAAIv0B,CAAC;MACL,OAAO,IAAI,CAAC+uB,YAAY,CAAC,KAAK,CAAC,CAACpkC,MAAM,EAAE;QACtCqV,CAAC,GAAG,IAAI,CAAC+uB,YAAY,CAAC,KAAK,CAAC,CAAC/wB,KAAK,CAAC,CAAC;QACpC,IAAI,CAACw0B,OAAO,CAACxrB,OAAO,CAAChH,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;MACnC;IACF;EAAC;IAAAjW,GAAA;IAAAnD,KAAA,EAED,SAAA0tC,iBAAiBA,CAAA,EAAG;MAAA,IAAAuC,aAAA;MAClB,IAAI,GAAAA,aAAA,GAAC,IAAI,CAACrE,OAAO,cAAAqE,aAAA,gBAAAA,aAAA,GAAZA,aAAA,CAAc7vB,OAAO,cAAA6vB,aAAA,eAArBA,aAAA,CAAuB7iC,GAAG,GAAE;QAC/B;MACF;MAEA,IAAM0K,IAAI,GAAG,IAAI;MACjB,IAAMrW,CAAC,GAAG,IAAI,CAACmqC,OAAO,CAACxrB,OAAO;MAE9B,SAAS8vB,WAAWA,CAACt8B,MAAM,EAAE;QAC3B;QACA,YAAY;;QAAE;QAEd,IAAMw0B,IAAI,GAAG3mC,CAAC,CAACmS,MAAM,CAAC;QACtB,IAAMu8B,WAAW,GAAG1uC,CAAC;QACrB,IAAMgI,KAAK,GAAGmK,MAAM,KAAK,MAAM,GAAG,SAAS,GAAGA,MAAM;QACpDnS,CAAC,CAACmS,MAAM,CAAC,GAAG,YAAY;UACtB,IAAMxL,IAAI,GAAGuJ,KAAK,CAACnS,SAAS,CAAC0I,KAAK,CAACnJ,IAAI,CAAC+O,SAAS,CAAC;UAClD,IAAMxH,OAAO,GAAG5D,kBAAoB,CAAC0F,IAAI,CAAC;UAC1C0P,IAAI,CAACqd,SAAS,CAACniB,UAAU,CAAC1M,OAAO,EAAEmD,KAAK,EAAE,IAAI,EAAE/G,GAAK,CAAC,CAAC,CAAC;UACxD,IAAI0lC,IAAI,EAAE;YACR7oC,QAAQ,CAACC,SAAS,CAACoZ,KAAK,CAAC7Z,IAAI,CAACqpC,IAAI,EAAE+H,WAAW,EAAE/nC,IAAI,CAAC;UACxD;QACF,CAAC;QACD0P,IAAI,CAACqwB,YAAY,CAAC,KAAK,CAAC,CAACzjC,IAAI,CAAC,CAACkP,MAAM,EAAEw0B,IAAI,CAAC,CAAC;MAC/C;MACA,IAAMgI,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;MACzD,IAAI;QACF,SAAAC,GAAA,MAAAC,QAAA,GAAgBF,OAAO,EAAAC,GAAA,GAAAC,QAAA,CAAAvsC,MAAA,EAAAssC,GAAA,IAAE;UAApB,IAAM1sC,CAAC,GAAA2sC,QAAA,CAAAD,GAAA;UACVH,WAAW,CAACvsC,CAAC,CAAC;QAChB;MACF,CAAC,CAAC,OAAO7C,CAAC,EAAE;QACV,IAAI,CAAC+H,UAAU,CAAC6kC,iBAAiB,GAAG;UAAExrC,KAAK,EAAEpB,CAAC,CAACwF;QAAQ,CAAC;MAC1D;IACF;EAAC;IAAAnD,GAAA;IAAAnD,KAAA,EAED,SAAA6tC,eAAeA,CAAA,EAAG;MAChB,IAAI,CAAC/B,eAAe,CAAC,KAAK,CAAC;IAC7B;EAAC;IAAA3oC,GAAA;IAAAnD,KAAA,EAED,SAAA4tC,aAAaA,CAAA,EAAG;MAAA,IAAA3zB,KAAA;MACd,IAAI,CAACs2B,WAAW,CACd,KAAK,EACL,IAAI,CAAC3E,OAAO,EACZ,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,EACpC,UAAC9qC,CAAC;QAAA,OAAKmZ,KAAI,CAACu2B,WAAW,CAAC,OAAO,EAAE1vC,CAAC,CAAC;MAAA,CACrC,CAAC;MACD,IAAI,CAACyvC,WAAW,CACd,KAAK,EACL,IAAI,CAAC3E,OAAO,EACZ,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,EAC1D,UAAC9qC,CAAC;QAAA,OAAKmZ,KAAI,CAACu2B,WAAW,CAAC,UAAU,EAAE1vC,CAAC,CAAC;MAAA,CACxC,CAAC;MACD,IAAI,CAACyvC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC3E,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAC9qC,CAAC;QAAA,OACzDmZ,KAAI,CAACu2B,WAAW,CAAC,OAAO,EAAE1vC,CAAC,CAAC;MAAA,CAC9B,CAAC;MACD,IAAI,CAACyvC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC3E,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,UAAC9qC,CAAC;QAAA,OAC7DmZ,KAAI,CAACu2B,WAAW,CAAC,MAAM,EAAE1vC,CAAC,CAAC;MAAA,CAC7B,CAAC;MACD,IAAI,CAACyvC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC3E,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,UAAC9qC,CAAC;QAAA,OAC3DmZ,KAAI,CAACu2B,WAAW,CAAC,OAAO,EAAE1vC,CAAC,CAAC;MAAA,CAC9B,CAAC;MACD,IAAI,CAACyvC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC3E,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,UAAC9qC,CAAC;QAAA,OAClDmZ,KAAI,CAACu2B,WAAW,CAAC,QAAQ,EAAE1vC,CAAC,CAAC;MAAA,CAC/B,CAAC;MACD,IAAI,CAACyvC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC1E,SAAS,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAC/qC,CAAC;QAAA,OAC9DmZ,KAAI,CAACu2B,WAAW,CAAC,eAAe,EAAE1vC,CAAC,CAAC;MAAA,CACtC,CAAC;IACH;EAAC;IAAAqC,GAAA;IAAAnD,KAAA,EAED,SAAAwwC,WAAWA,CAAC7xC,IAAI,EAAE86B,GAAG,EAAE;MACrB,IAAI;QACF,OAAO;UACLgX,KAAK,EAAE,IAAI,CAACC,WAAW;UACvBC,QAAQ,EAAE,IAAI,CAACC,UAAU;UACzBC,KAAK,EAAE,IAAI,CAACC,WAAW;UACvBC,IAAI,EAAE,IAAI,CAACC,UAAU;UACrBnkC,KAAK,EAAE,IAAI,CAACokC,WAAW;UACvBC,MAAM,EAAE,IAAI,CAACC,YAAY;UACzBC,aAAa,EAAE,IAAI,CAACC;QACtB,CAAC,CAAC1yC,IAAI,CAAC,CAACI,IAAI,CAAC,IAAI,EAAE06B,GAAG,CAAC;MACzB,CAAC,CAAC,OAAO8G,GAAG,EAAE;QACZ74B,UAAM,CAAC0F,GAAG,IAAAV,MAAA,CAAI/N,IAAI,qBAAkB86B,GAAG,EAAE8G,GAAG,EAAEA,GAAG,CAAC/4B,KAAK,CAAC;MAC1D;IACF;EAAC;IAAArE,GAAA;IAAAnD,KAAA,EAED,SAAAqxC,mBAAmBA,CAACC,IAAI,EAAE;MACxB,IAAI,CAACvN,OAAO,CAACI,aAAa,CAAC;QACzBvjC,IAAI,EAAE,YAAY;QAClBiE,IAAI,EAAE,IAAItC,GAAG,CAAC,IAAI,CAAC4pC,SAAS,CAAChlC,IAAI,CAAC,CAAC2e;MACrC,CAAC,CAAC;IACJ;EAAC;IAAA3iB,GAAA;IAAAnD,KAAA,EAED,SAAA0wC,WAAWA,CAACjX,GAAG,EAAE;MAAA,IAAA8X,WAAA;MACf,IAAM9I,OAAO,IAAA8I,WAAA,GAAG9X,GAAG,CAACtkB,MAAM,cAAAo8B,WAAA,uBAAVA,WAAA,CAAY9I,OAAO,CAACxpC,WAAW,CAAC,CAAC;MACjD,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAACgJ,QAAQ,CAACwgC,OAAO,CAAC,EAAE;MAEvD,IAAI,CAACtT,SAAS,CAACrgB,YAAY,CAAC;QAC1BlU,IAAI,EAAE64B,GAAG,CAAC74B,IAAI;QACd8T,WAAW,EAAE,CAAC+kB,GAAG,CAAC+X,SAAS;QAC3Bn9B,OAAO,EAAEm2B,aAAqB,CAAC/Q,GAAG,CAACtkB,MAAM,CAAC;QAC1C/L,SAAS,EAAE1G,GAAK,CAAC;MACnB,CAAC,CAAC;IACJ;EAAC;IAAAS,GAAA;IAAAnD,KAAA,EAED,SAAA8wC,WAAWA,CAACrX,GAAG,EAAE;MAAA,IAAAgY,YAAA;MACf,IAAM7wC,IAAI,GAAG64B,GAAG,CAAC74B,IAAI;MACrB,IAAMyT,OAAO,GAAG,CAAAo9B,YAAA,GAAAhY,GAAG,CAACtkB,MAAM,cAAAs8B,YAAA,eAAVA,YAAA,CAAYtwC,MAAM,GAC9B,QAAQ,GACRqpC,aAAqB,CAAC/Q,GAAG,CAACtkB,MAAM,CAAC;MAErC,IAAI,CAACggB,SAAS,CAACzf,YAAY,CAAC;QAC1B9U,IAAI,EAAEA,IAAI;QACV8T,WAAW,EAAE,CAAC+kB,GAAG,CAAC+X,SAAS;QAC3Bn9B,OAAO,EAAPA,OAAO;QACPjL,SAAS,EAAE1G,GAAK,CAAC;MACnB,CAAC,CAAC;IACJ;EAAC;IAAAS,GAAA;IAAAnD,KAAA,EAED,SAAAgxC,UAAUA,CAACM,IAAI,EAAE;MACf;MACA;MACA;MACA;MACA;IAAA;EACD;IAAAnuC,GAAA;IAAAnD,KAAA,EAED,SAAAmxC,YAAYA,CAAC1X,GAAG,EAAE;MAChB,IAAMlkB,aAAa,GAAGpU,MAAM,CAAC87B,MAAM,CAAC3nB,KAAK,GAAGnU,MAAM,CAACuwC,UAAU;MAE7D,IAAI,CAACvc,SAAS,CAACtf,aAAa,CAAC;QAC3BjV,IAAI,EAAE64B,GAAG,CAAC74B,IAAI;QACd8T,WAAW,EAAE,CAAC+kB,GAAG,CAAC+X,SAAS;QAC3Bl8B,KAAK,EAAEnU,MAAM,CAACuwC,UAAU;QACxBr8B,MAAM,EAAElU,MAAM,CAACwwC,WAAW;QAC1Bp8B,aAAa,EAAEA,aAAa;QAC5BnM,SAAS,EAAE1G,GAAK,CAAC;MACnB,CAAC,CAAC;IACJ;EAAC;IAAAS,GAAA;IAAAnD,KAAA,EAED,SAAA4wC,UAAUA,CAACnX,GAAG,EAAE;MACd,IAAM74B,IAAI,GAAG64B,GAAG,CAAC74B,IAAI;MACrB,IAAIyV,KAAK,EAAEC,UAAU,EAAEH,UAAU,EAAEC,aAAa;MAEhD,IAAIxV,IAAI,KAAK,MAAM,EAAE;QACnByV,KAAK,GAAG,EAAE;QACVC,UAAU,GAAG,EAAE;QACf,IAAMs7B,IAAI,MAAAllC,MAAA,CAAAqN,2BAAA,CAAO0f,GAAG,CAACoY,YAAY,CAACC,KAAK,GAAA/3B,2BAAA,CAAK0f,GAAG,CAACoY,YAAY,CAAChK,KAAK,EAAC;QAAC,IAAA53B,UAAA,GAAAlG,mCAAA,CACpD6nC,IAAI;UAAA1hC,MAAA;QAAA;UAApB,KAAAD,UAAA,CAAA9J,CAAA,MAAA+J,MAAA,GAAAD,UAAA,CAAA1P,CAAA,IAAA0J,IAAA,GAAsB;YAAA,IAAXvG,CAAC,GAAAwM,MAAA,CAAAlQ,KAAA;YACV,IAAI0D,CAAC,CAACmY,IAAI,IAAInY,CAAC,CAAC9C,IAAI,EAAE;cACpByV,KAAK,CAAC3R,IAAI,CAAChB,CAAC,CAACmY,IAAI,CAAC;cAClBvF,UAAU,CAAC5R,IAAI,CAAChB,CAAC,CAAC9C,IAAI,CAAC;YACzB;UACF;QAAC,SAAA+G,GAAA;UAAAsI,UAAA,CAAAnP,CAAA,CAAA6G,GAAA;QAAA;UAAAsI,UAAA,CAAA9Q,CAAA;QAAA;MACH;MACA,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC8I,QAAQ,CAACrH,IAAI,CAAC,EAAE;QAAA,IAAAmxC,iBAAA,EAAAC,kBAAA;QACxC77B,UAAU,IAAA47B,iBAAA,GAAGtY,GAAG,CAACoY,YAAY,cAAAE,iBAAA,uBAAhBA,iBAAA,CAAkB57B,UAAU;QACzCC,aAAa,IAAA47B,kBAAA,GAAGvY,GAAG,CAACoY,YAAY,cAAAG,kBAAA,uBAAhBA,kBAAA,CAAkB57B,aAAa;MACjD;MAEA,IAAI,CAAC+e,SAAS,CAACnf,eAAe,CAAC;QAC7BpV,IAAI,EAAJA,IAAI;QACJ8T,WAAW,EAAE,CAAC+kB,GAAG,CAAC+X,SAAS;QAC3Bn9B,OAAO,EAAEm2B,aAAqB,CAAC/Q,GAAG,CAACtkB,MAAM,CAAC;QAC1CgB,UAAU,EAAEA,UAAU;QACtBC,aAAa,EAAEA,aAAa;QAC5BC,KAAK,EAAE3Q,IAAI,CAACF,SAAS,CAAC6Q,KAAK,CAAC;QAC5BC,UAAU,EAAE5Q,IAAI,CAACF,SAAS,CAAC8Q,UAAU,CAAC;QACtClN,SAAS,EAAE1G,GAAK,CAAC;MACnB,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;EAHE;IAAAS,GAAA;IAAAnD,KAAA,EAIA,SAAAiyC,eAAeA,CAACjyC,KAAK,EAAEqU,OAAO,EAAEo0B,OAAO,EAAEyJ,SAAS,EAAE;MAClD,IAAMC,IAAI,GAAG,QAAQ;MAErB,IAAID,SAAS,KAAK,UAAU,EAAE;QAC5B,OAAOC,IAAI;MACb;MAEA,IAAI,IAAI,CAACpF,oBAAoB,EAAE;QAC7B,OAAOoF,IAAI;MACb,CAAC,MAAM;QACL,IAAMxtB,WAAW,GAAG6lB,eAAuB,CAACn2B,OAAO,CAAC;QACpD,IAAI,IAAI,CAAC24B,iBAAiB,EAAE;UAC1B,IAAI,IAAI,CAACA,iBAAiB,CAACroB,WAAW,CAAC,EAAE;YACvC,OAAOwtB,IAAI;UACb;QACF,CAAC,MAAM,IAAI,IAAI,CAAC1G,oBAAoB,CAAC9mB,WAAW,CAAC,EAAE;UACjD,OAAOwtB,IAAI;QACb;MACF;;MAEA;MACA,IACE3H,iBAAyB,CAACn2B,OAAO,EAAE,IAAI,CAAC64B,YAAY,EAAE,IAAI,CAACC,cAAc,CAAC,EAC1E;QACA,OAAOgF,IAAI;MACb;;MAEA;MACA;MACA;MACA,IACE,IAAI,CAACzX,gBAAgB,CAAC+N,OAAO,CAACxpC,WAAW,CAAC,CAAC,CAAC,IAC5C,IAAI,CAACy7B,gBAAgB,CAACwX,SAAS,CAAC,EAChC;QACA,IAAI,IAAI,CAACjF,WAAW,EAAE;UACpB,OAAO,IAAI,CAACA,WAAW,CAACjtC,KAAK,EAAEqU,OAAO,CAAC;QACzC,CAAC,MAAM;UACL,OAAO89B,IAAI;QACb;MACF;MAEA,OAAOnyC,KAAK;IACd;;IAEA;AACF;AACA;AACA;EAHE;IAAAmD,GAAA;IAAAnD,KAAA,EAIA,SAAAixC,WAAWA,CAACxX,GAAG,EAAE;MAAA,IAAA2Y,YAAA,EAAAC,YAAA,EAAAC,YAAA,EAAAC,YAAA;MACf,IAAM3xC,IAAI,GAAG64B,GAAG,CAAC74B,IAAI;MACrB,IAAM6nC,OAAO,IAAA2J,YAAA,GAAG3Y,GAAG,CAACtkB,MAAM,cAAAi9B,YAAA,uBAAVA,YAAA,CAAY3J,OAAO,CAACxpC,WAAW,CAAC,CAAC;MACjD,IAAIe,KAAK,IAAAqyC,YAAA,GAAG5Y,GAAG,CAACtkB,MAAM,cAAAk9B,YAAA,uBAAVA,YAAA,CAAYryC,KAAK;MAC7B,IAAIkyC,SAAS,GAAG,EAAAI,YAAA,GAAA7Y,GAAG,CAACtkB,MAAM,cAAAm9B,YAAA,gBAAAA,YAAA,GAAVA,YAAA,CAAYpnC,UAAU,cAAAonC,YAAA,gBAAAA,YAAA,GAAtBA,YAAA,CAAwB1xC,IAAI,cAAA0xC,YAAA,uBAA5BA,YAAA,CAA8BtyC,KAAK,OAAAuyC,YAAA,GAAI9Y,GAAG,CAACtkB,MAAM,cAAAo9B,YAAA,uBAAVA,YAAA,CAAY3xC,IAAI;MAEvE,IAAIZ,KAAK,KAAKyD,SAAS,EAAE;QACvBzD,KAAK,GAAG,IAAI,CAACiyC,eAAe,CAACjyC,KAAK,EAAEy5B,GAAG,CAACtkB,MAAM,EAAEszB,OAAO,EAAEyJ,SAAS,CAAC;MACrE;MAEA,QAAQtxC,IAAI;QACV,KAAK,OAAO;UACV,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAACqH,QAAQ,CAACiqC,SAAS,CAAC,EAAE;UAC/C,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAACjqC,QAAQ,CAACwgC,OAAO,CAAC,EAAE;YAC5CyJ,SAAS,GAAGzJ,OAAO;UACrB;UACA;QAEF,KAAK,QAAQ;UACX,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAACxgC,QAAQ,CAACiqC,SAAS,CAAC,EAAE;UAChD,IAAIA,SAAS,KAAK,UAAU,EAAE;YAAA,IAAAM,YAAA;YAC5BxyC,KAAK,IAAAwyC,YAAA,GAAG/Y,GAAG,CAACtkB,MAAM,cAAAq9B,YAAA,uBAAVA,YAAA,CAAYl+B,OAAO;UAC7B;UACA;MACJ;MAEA,IAAI,CAAC6gB,SAAS,CAAC5gB,YAAY,CAAC;QAC1B3T,IAAI,EAAEsxC,SAAS;QACfx9B,WAAW,EAAE,CAAC+kB,GAAG,CAAC+X,SAAS;QAC3Bn9B,OAAO,EAAEm2B,aAAqB,CAAC/Q,GAAG,CAACtkB,MAAM,CAAC;QAC1CnV,KAAK,EAALA,KAAK;QACLoJ,SAAS,EAAE1G,GAAK,CAAC;MACnB,CAAC,CAAC;IACJ;EAAC;IAAAS,GAAA;IAAAnD,KAAA,EAED,SAAA+tC,sBAAsBA,CAAA,EAAG;MACvB,IAAMvK,MAAM,GAAG,IAAI,CAACoI,OAAO,CAACpI,MAAM;MAClC,IAAMiP,iBAAiB,GAAGjP,MAAM,IAAIA,MAAM,CAACkP,GAAG,IAAIlP,MAAM,CAACkP,GAAG,CAACjP,OAAO;MACpE;MACA,IAAMkP,YAAY,GAChB,CAACF,iBAAiB,IAClB,IAAI,CAAC7G,OAAO,CAACgH,OAAO,IACpB,IAAI,CAAChH,OAAO,CAACgH,OAAO,CAACC,SAAS;MAChC,IAAI,CAACF,YAAY,EAAE;QACjB;MACF;MACApH,OAAO,CAAC,IAAI,CAACpD,YAAY,EAAE,YAAY,CAAC;IAC1C;EAAC;IAAAhlC,GAAA;IAAAnD,KAAA,EAED,SAAA8tC,oBAAoBA,CAAA,EAAG;MACrB,IAAMtK,MAAM,GAAG,IAAI,CAACoI,OAAO,CAACpI,MAAM;MAClC,IAAMiP,iBAAiB,GAAGjP,MAAM,IAAIA,MAAM,CAACkP,GAAG,IAAIlP,MAAM,CAACkP,GAAG,CAACjP,OAAO;MACpE;MACA,IAAMkP,YAAY,GAChB,CAACF,iBAAiB,IAClB,IAAI,CAAC7G,OAAO,CAACgH,OAAO,IACpB,IAAI,CAAChH,OAAO,CAACgH,OAAO,CAACC,SAAS;MAChC,IAAI,CAACF,YAAY,EAAE;QACjB;MACF;MACA,IAAM76B,IAAI,GAAG,IAAI;MACjBnY,eAAO,CACL,IAAI,CAACisC,OAAO,EACZ,YAAY,EACZ,UAAUxD,IAAI,EAAE;QACd,OAAO,YAAY;UACjB,IAAMx7B,OAAO,GAAGkL,IAAI,CAACq0B,SAAS,CAAChlC,IAAI;UACnC2Q,IAAI,CAACg7B,eAAe,CAACh7B,IAAI,CAACs0B,SAAS,EAAEx/B,OAAO,CAAC;UAC7C,IAAIw7B,IAAI,EAAE;YACRA,IAAI,CAACxvB,KAAK,CAAC,IAAI,EAAE9K,SAAS,CAAC;UAC7B;QACF,CAAC;MACH,CAAC,EACD,IAAI,CAACq6B,YAAY,EACjB,YACF,CAAC;MAEDxoC,eAAO,CACL,IAAI,CAACisC,OAAO,CAACgH,OAAO,EACpB,WAAW,EACX,UAAUxK,IAAI,EAAE;QACd,OAAO,YAAY;UACjB,IAAM/lC,GAAG,GAAGyL,SAAS,CAAC/J,MAAM,GAAG,CAAC,GAAG+J,SAAS,CAAC,CAAC,CAAC,GAAGrK,SAAS;UAC3D,IAAIpB,GAAG,EAAE;YACPyV,IAAI,CAACg7B,eAAe,CAACh7B,IAAI,CAACs0B,SAAS,EAAE/rC,MAAM,CAACgC,GAAG,CAAC,CAAC;UACnD;UACA,OAAO+lC,IAAI,CAACxvB,KAAK,CAAC,IAAI,EAAE9K,SAAS,CAAC;QACpC,CAAC;MACH,CAAC,EACD,IAAI,CAACq6B,YAAY,EACjB,YACF,CAAC;IACH;EAAC;IAAAhlC,GAAA;IAAAnD,KAAA,EAED,SAAA8yC,eAAeA,CAACt8B,IAAI,EAAEC,EAAE,EAAE;MACxB,IAAMs8B,UAAU,GAAGtI,SAAe,CAAC,IAAI,CAAC0B,SAAS,CAAChlC,IAAI,CAAC;MACvD,IAAM6rC,QAAQ,GAAGvI,SAAe,CAACh0B,EAAE,CAAC;MACpC,IAAMw8B,UAAU,GAAGxI,SAAe,CAACj0B,IAAI,CAAC;MACxC,IAAI,CAAC41B,SAAS,GAAG31B,EAAE;MACnB,IACEs8B,UAAU,CAAC3tC,QAAQ,KAAK4tC,QAAQ,CAAC5tC,QAAQ,IACzC2tC,UAAU,CAAC3sB,IAAI,KAAK4sB,QAAQ,CAAC5sB,IAAI,EACjC;QACA3P,EAAE,GAAGu8B,QAAQ,CAACnuC,IAAI,IAAImuC,QAAQ,CAAC/Q,IAAI,IAAI,EAAE,CAAC;MAC5C;MACA,IACE8Q,UAAU,CAAC3tC,QAAQ,KAAK6tC,UAAU,CAAC7tC,QAAQ,IAC3C2tC,UAAU,CAAC3sB,IAAI,KAAK6sB,UAAU,CAAC7sB,IAAI,EACnC;QACA5P,IAAI,GAAGy8B,UAAU,CAACpuC,IAAI,IAAIouC,UAAU,CAAChR,IAAI,IAAI,EAAE,CAAC;MAClD;MACA,IAAI,CAAC9M,SAAS,CAAC5e,iBAAiB,CAACC,IAAI,EAAEC,EAAE,EAAE,IAAI,EAAE/T,GAAK,CAAC,CAAC,CAAC;MACzD,IAAI,CAACqhC,OAAO,CAACI,aAAa,CAAC;QACzBvjC,IAAI,EAAE,YAAY;QAClBiE,IAAI,EAAE4R;MACR,CAAC,CAAC;IACJ;EAAC;IAAAtT,GAAA;IAAAnD,KAAA,EAMD,SAAAguC,sBAAsBA,CAAA,EAAG;MACvB,IAAMl2B,IAAI,GAAG,IAAI;MACjB,IAAI,CAACy4B,WAAW,CACd,cAAc,EACd,IAAI,CAAC3E,OAAO,EACZ,CAAC,QAAQ,EAAE,SAAS,CAAC,EACrB,UAACnS,GAAG;QAAA,OAAK3hB,IAAI,CAACo7B,kBAAkB,CAACzZ,GAAG,CAAC;MAAA,CACvC,CAAC;IACH;EAAC;IAAAt2B,GAAA;IAAAnD,KAAA,EAED,SAAAkzC,kBAAkBA,CAACzZ,GAAG,EAAE;MACtB,IAAM74B,IAAI,GAAG64B,GAAG,CAAC74B,IAAI;MAErB,IAAI,CAACu0B,SAAS,CAACpe,yBAAyB,CAAC;QACvCnW,IAAI,EAAJA,IAAI;QACJ8T,WAAW,EAAE,CAAC+kB,GAAG,CAAC+X,SAAS;QAC3BpoC,SAAS,EAAE1G,GAAK,CAAC;MACnB,CAAC,CAAC;IACJ;EAAC;IAAAS,GAAA;IAAAnD,KAAA,EAED,SAAAmzC,cAAcA,CAACC,QAAQ,EAAE;MACvB,IAAI9sC,OAAO,GACT,6BAA6B,GAC7B,cAAc,GACd8sC,QAAQ,CAACC,UAAU,GACnB,IAAI,GACJ,qBAAqB,GACrBD,QAAQ,CAACE,iBAAiB,GAC1B,IAAI,GACJ,sBAAsB,GACtBF,QAAQ,CAACG,kBAAkB,GAC3B,IAAI;MAEN,IAAIH,QAAQ,CAACI,UAAU,EAAE;QACvBltC,OAAO,IACL,YAAY,GACZ8sC,QAAQ,CAACI,UAAU,GACnB,IAAI,GACJ,QAAQ,GACRJ,QAAQ,CAACjmB,UAAU,GACnB,IAAI,GACJ,OAAO,GACPimB,QAAQ,CAAChmB,YAAY,GACrB,IAAI;MACR;MAEA9mB,OAAO,IAAI,kBAAkB,GAAG8sC,QAAQ,CAACK,cAAc;MAEvD,IAAI,CAACte,SAAS,CAACniB,UAAU,CAAC1M,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE5D,GAAK,CAAC,CAAC,CAAC;MAC1D,IAAI,CAACgxC,cAAc,CAACptC,OAAO,CAAC;IAC9B;EAAC;IAAAnD,GAAA;IAAAnD,KAAA,EAED,SAAA0zC,cAAcA,CAACptC,OAAO,EAAE;MACtB,IAAI,IAAI,CAACylC,cAAc,CAACT,4BAA4B,EAAE;QACpD,IAAI,CAACvH,OAAO,CAAC7hC,KAAK,CAACoE,OAAO,CAAC;MAC7B;IACF;EAAC;IAAAnD,GAAA;IAAAnD,KAAA,EAED,SAAAmuC,iCAAiCA,CAAA,EAAG;MAClC,IAAI,CAACrC,eAAe,CAAC,uBAAuB,CAAC;IAC/C;EAAC;IAAA3oC,GAAA;IAAAnD,KAAA,EAED,SAAAkuC,+BAA+BA,CAAA,EAAG;MAChC,IAAI,EAAE,kBAAkB,IAAI,IAAI,CAACrC,SAAS,CAAC,EAAE;QAC3C;MACF;MAEA,IAAM8H,UAAU,GAAG,IAAI,CAACR,cAAc,CAACzyB,IAAI,CAAC,IAAI,CAAC;MACjD,IAAI,CAAC6vB,WAAW,CACd,uBAAuB,EACvB,IAAI,CAAC1E,SAAS,EACd,CAAC,yBAAyB,CAAC,EAC3B8H,UACF,CAAC;IACH;EAAC;IAAAxwC,GAAA;IAAAnD,KAAA,EAED,SAAAuwC,WAAWA,CAACqD,OAAO,EAAE1zC,GAAG,EAAE2zC,KAAK,EAAErb,OAAO,EAAE;MAAA,IAAArd,MAAA;MACxC,IAAIjb,GAAG,CAAC45B,gBAAgB,EAAE;QAAA,IAAAga,UAAA,GAAA/pC,mCAAA,CACR8pC,KAAK;UAAAE,MAAA;QAAA;UAAA,IAAAC,KAAA,YAAAA,MAAA,EAAE;YAAA,IAAZv1C,CAAC,GAAAs1C,MAAA,CAAA/zC,KAAA;YACV,IAAMqE,OAAO,GAAG;cAAEiO,OAAO,EAAE,IAAI;cAAE2hC,OAAO,EAAE;YAAK,CAAC;YAChD/zC,GAAG,CAAC45B,gBAAgB,CAACr7B,CAAC,EAAE+5B,OAAO,EAAEn0B,OAAO,EAAE,IAAI,CAAC;YAC/C8W,MAAI,CAAC8wB,aAAa,CAAC2H,OAAO,CAAC,CAAClvC,IAAI,CAAC,YAAY;cAC3CxE,GAAG,CAACq5B,mBAAmB,CAAC96B,CAAC,EAAE+5B,OAAO,EAAEn0B,OAAO,CAAC;YAC9C,CAAC,CAAC;UACJ,CAAC;UAND,KAAAyvC,UAAA,CAAA3tC,CAAA,MAAA4tC,MAAA,GAAAD,UAAA,CAAAvzC,CAAA,IAAA0J,IAAA;YAAA+pC,KAAA;UAAA;QAMC,SAAArsC,GAAA;UAAAmsC,UAAA,CAAAhzC,CAAA,CAAA6G,GAAA;QAAA;UAAAmsC,UAAA,CAAA30C,CAAA;QAAA;MACH;IACF;EAAC;IAAAgE,GAAA;IAAAnD,KAAA,EAED,SAAA8rC,eAAeA,CAAC8H,OAAO,EAAE;MACvB,IAAIlyC,CAAC;MACL,OAAO,IAAI,CAACuqC,aAAa,CAAC2H,OAAO,CAAC,CAAC7vC,MAAM,EAAE;QACzCrC,CAAC,GAAG,IAAI,CAACuqC,aAAa,CAAC2H,OAAO,CAAC,CAACx8B,KAAK,CAAC,CAAC;QACvC1V,CAAC,CAAC,CAAC;MACL;IACF;EAAC;AAAA;AAGH,SAAS8sC,YAAYA,CAAC3hC,KAAK,EAAE;EAC3B,OAAO,OAAOtK,GAAG,KAAK,WAAW,IAAIsK,KAAK,YAAYtK,GAAG;AAC3D;AAEA,sDAAeugC,YAAY,E;;ACjjCY;AAEvC,SAASE,WAAWA,CAAC7hC,MAAM,EAAEq3B,OAAO,EAAEC,IAAI,EAAE;EAC1C,IAAI,CAACt3B,MAAM,EAAE;IACX;EACF;EACA;EACA,IAAIuhC,OAAO,GACT,2YAA2Y,CAACl3B,KAAK,CAC/Y,GACF,CAAC;EACH,IAAI7K,CAAC,EAAE80B,MAAM;EACb,KAAK90B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+hC,OAAO,CAAC3+B,MAAM,EAAE,EAAEpD,CAAC,EAAE;IACnC80B,MAAM,GAAGiN,OAAO,CAAC/hC,CAAC,CAAC;IAEnB,IAAIQ,MAAM,CAACs0B,MAAM,CAAC,IAAIt0B,MAAM,CAACs0B,MAAM,CAAC,CAACj2B,SAAS,EAAE;MAC9C00C,wBAAwB,CAAC1b,OAAO,EAAEr3B,MAAM,CAACs0B,MAAM,CAAC,CAACj2B,SAAS,EAAEi5B,IAAI,CAAC;IACnE;EACF;AACF;AAEA,SAASyb,wBAAwBA,CAAC1b,OAAO,EAAEh5B,SAAS,EAAEi5B,IAAI,EAAE;EAC1D,IAAIx4B,MAAM,CAACT,SAAS,EAAE,kBAAkB,CAAC,EAAE;IACzC,IAAI20C,mBAAmB,GAAG30C,SAAS,CAACs6B,gBAAgB;IACpD,OACEqa,mBAAmB,CAACC,cAAc,IAClCD,mBAAmB,CAAC7a,aAAa,EACjC;MACA6a,mBAAmB,GAAGA,mBAAmB,CAACC,cAAc;IAC1D;IACA,IAAIC,KAAK,GAAG,SAARA,KAAKA,CAAatpC,KAAK,EAAEtC,QAAQ,EAAE6rC,MAAM,EAAE;MAC7CH,mBAAmB,CAACp1C,IAAI,CAAC,IAAI,EAAEgM,KAAK,EAAEytB,OAAO,CAACuM,IAAI,CAACt8B,QAAQ,CAAC,EAAE6rC,MAAM,CAAC;IACvE,CAAC;IACDD,KAAK,CAACD,cAAc,GAAGD,mBAAmB;IAC1CE,KAAK,CAAC/a,aAAa,GAAGb,IAAI;IAC1Bj5B,SAAS,CAACs6B,gBAAgB,GAAGua,KAAK;IAElC,IAAIE,sBAAsB,GAAG/0C,SAAS,CAAC+5B,mBAAmB;IAC1D,OACEgb,sBAAsB,CAACC,iBAAiB,IACxCD,sBAAsB,CAACjb,aAAa,EACpC;MACAib,sBAAsB,GAAGA,sBAAsB,CAACC,iBAAiB;IACnE;IACA,IAAIC,QAAQ,GAAG,SAAXA,QAAQA,CAAa1pC,KAAK,EAAEtC,QAAQ,EAAE6rC,MAAM,EAAE;MAChDC,sBAAsB,CAACx1C,IAAI,CACzB,IAAI,EACJgM,KAAK,EACJtC,QAAQ,IAAIA,QAAQ,CAAC08B,gBAAgB,IAAK18B,QAAQ,EACnD6rC,MACF,CAAC;IACH,CAAC;IACDG,QAAQ,CAACD,iBAAiB,GAAGD,sBAAsB;IACnDE,QAAQ,CAACnb,aAAa,GAAGb,IAAI;IAC7Bj5B,SAAS,CAAC+5B,mBAAmB,GAAGkb,QAAQ;EAC1C;AACF;AAEA,wDAAezR,WAAW,E;;AC1DM;AACQ;AACI;AACF;AAEV;AACU;AACC;AAE3C9N,IAAO,CAAC+Q,aAAa,CAAC;EACpB9Q,SAAS,EAAE3kB,SAAS;EACpBuyB,YAAY,EAAED,iBAAY;EAC1BE,WAAW,EAAEA,mBAAW;EACxB10B,KAAK,EAAEA,SAAK;EACZua,UAAU,EAAEA,UAAU;EACtBpY,OAAO,EAAEoS,OAAOA;AAClB,CAAC,CAAC;AAEF,oDAAeqS,IAAO,E;;;AClBc;AAEpC,IAAI7wB,OAAO,GAAI,OAAOlD,MAAM,KAAK,WAAW,IAAKA,MAAM,CAACuzC,cAAc;AACtE,IAAIC,KAAK,GAAGtwC,OAAO,IAAIA,OAAO,CAACuwC,WAAW,IAAI,SAAS;AACvD,IAAIC,WAAW,GAAI,OAAO1zC,MAAM,KAAK,WAAW,IAAKA,MAAM,CAACwzC,KAAK,CAAC,IAAI,OAAOxzC,MAAM,CAACwzC,KAAK,CAAC,CAACG,MAAM,KAAK,UAAU,IAAI3zC,MAAM,CAACwzC,KAAK,CAAC,CAACG,MAAM,CAAC,CAAC,KAAKrxC,SAAS;AAExJ,IAAK,OAAOtC,MAAM,KAAK,WAAW,IAAK,CAACA,MAAM,CAACg8B,iBAAiB,EAAE;EAChEh8B,MAAM,CAACg8B,iBAAiB,GAAI,IAAInxB,IAAI,CAAC,CAAC,CAAE6K,OAAO,CAAC,CAAC;AACnD;AAEA,IAAI,CAACg+B,WAAW,IAAIxwC,OAAO,EAAE;EAC3B,IAAI6wB,eAAO,GAAG,IAAI6O,eAAO,CAAC1/B,OAAO,CAAC;EAClClD,MAAM,CAACwzC,KAAK,CAAC,GAAGzf,eAAO;AACzB,CAAC,MAAM,IAAI,OAAO/zB,MAAM,KAAK,WAAW,EAAE;EACxCA,MAAM,CAAC4iC,OAAO,GAAGA,eAAO;EACxB5iC,MAAM,CAAC4zC,eAAe,GAAG,IAAI;AAC/B,CAAC,MAAM,IAAI,OAAOj9B,IAAI,KAAK,WAAW,EAAE;EACtCA,IAAI,CAACisB,OAAO,GAAGA,eAAO;EACtBjsB,IAAI,CAACi9B,eAAe,GAAG,IAAI;AAC7B;AAEA,oDAAehR,gDAAAA,eAAO,I","sources":["webpack://rollbar/webpack/bootstrap","webpack://rollbar/webpack/runtime/define property getters","webpack://rollbar/webpack/runtime/hasOwnProperty shorthand","webpack://rollbar/webpack/runtime/make namespace object","webpack://rollbar/./src/utility.js","webpack://rollbar/./src/utility/traverse.js","webpack://rollbar/./src/scrub.js","webpack://rollbar/./src/telemetry.js","webpack://rollbar/./src/tracing/context.js","webpack://rollbar/./src/tracing/contextManager.js","webpack://rollbar/./src/tracing/hrtime.js","webpack://rollbar/./src/tracing/exporter.js","webpack://rollbar/./src/tracing/id.js","webpack://rollbar/./src/tracing/session.js","webpack://rollbar/./src/logger.js","webpack://rollbar/./src/tracing/spanProcessor.js","webpack://rollbar/./src/tracing/span.js","webpack://rollbar/./src/tracing/tracer.js","webpack://rollbar/./src/tracing/tracing.js","webpack://rollbar/./src/truncation.js","webpack://rollbar/./src/apiUtility.js","webpack://rollbar/./src/api.js","webpack://rollbar/./src/defaults.js","webpack://rollbar/./node_modules/error-stack-parser-es/dist/lite.mjs","webpack://rollbar/./node_modules/error-stack-parser-es/dist/index.mjs","webpack://rollbar/./src/errorParser.js","webpack://rollbar/./src/predicates.js","webpack://rollbar/./src/notifier.js","webpack://rollbar/./src/queue.js","webpack://rollbar/./src/rateLimiter.js","webpack://rollbar/./src/rollbar.js","webpack://rollbar/./src/tracing/defaults.js","webpack://rollbar/./src/transforms.js","webpack://rollbar/./src/browser/defaults.js","webpack://rollbar/./src/browser/globalSetup.js","webpack://rollbar/./src/browser/predicates.js","webpack://rollbar/./src/browser/replay/defaults.js","webpack://rollbar/./src/browser/transforms.js","webpack://rollbar/./src/browser/transport/fetch.js","webpack://rollbar/./src/browser/transport/xhr.js","webpack://rollbar/./src/browser/transport.js","webpack://rollbar/./src/browser/url.js","webpack://rollbar/./src/browser/core.js","webpack://rollbar/./src/utility/headers.js","webpack://rollbar/./src/utility/replace.js","webpack://rollbar/./src/browser/domUtility.js","webpack://rollbar/./src/browser/telemetry.js","webpack://rollbar/./src/browser/wrapGlobals.js","webpack://rollbar/./src/browser/rollbar.js","webpack://rollbar/./src/browser/bundles/rollbar.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(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__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*\n * isType - Given a Javascript value and a string, returns true if the type of the value matches the\n * given string.\n *\n * @param x - any value\n * @param t - a lowercase string containing one of the following type names:\n * - undefined\n * - null\n * - error\n * - number\n * - boolean\n * - string\n * - symbol\n * - function\n * - object\n * - array\n * @returns true if x is of type t, otherwise false\n */\nfunction isType(x, t) {\n return t === typeName(x);\n}\n\n/*\n * typeName - Given a Javascript value, returns the type of the object as a string\n */\nfunction typeName(x) {\n var name = typeof x;\n if (name !== 'object') {\n return name;\n }\n if (!x) {\n return 'null';\n }\n if (x instanceof Error) {\n return 'error';\n }\n return {}.toString\n .call(x)\n .match(/\\s([a-zA-Z]+)/)[1]\n .toLowerCase();\n}\n\n/* isFunction - a convenience function for checking if a value is a function\n *\n * @param f - any value\n * @returns true if f is a function, otherwise false\n */\nfunction isFunction(f) {\n return isType(f, 'function');\n}\n\n/* isNativeFunction - a convenience function for checking if a value is a native JS function\n *\n * @param f - any value\n * @returns true if f is a native JS function, otherwise false\n */\nfunction isNativeFunction(f) {\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n var funcMatchString = Function.prototype.toString\n .call(Object.prototype.hasOwnProperty)\n .replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?');\n var reIsNative = RegExp('^' + funcMatchString + '$');\n return isObject(f) && reIsNative.test(f);\n}\n\n/* isObject - Checks if the argument is an object\n *\n * @param value - any value\n * @returns true is value is an object function is an object)\n */\nfunction isObject(value) {\n return (\n value != null && (typeof value == 'object' || typeof value == 'function')\n );\n}\n\n/* hasOwn - safe helper around Object.hasOwnProperty */\nfunction hasOwn(obj, prop) {\n if (obj == null) {\n return false;\n }\n if (Object.hasOwn) {\n return Object.hasOwn(obj, prop);\n }\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n/* isString - Checks if the argument is a string\n *\n * @param value - any value\n * @returns true if value is a string\n */\nfunction isString(value) {\n return typeof value === 'string' || value instanceof String;\n}\n\n/**\n * isFiniteNumber - determines whether the passed value is a finite number\n *\n * @param {*} n - any value\n * @returns true if value is a finite number\n */\nfunction isFiniteNumber(n) {\n return Number.isFinite(n);\n}\n\n/*\n * isIterable - convenience function for checking if a value can be iterated, essentially\n * whether it is an object or an array.\n *\n * @param i - any value\n * @returns true if i is an object or an array as determined by `typeName`\n */\nfunction isIterable(i) {\n var type = typeName(i);\n return type === 'object' || type === 'array';\n}\n\n/*\n * isError - convenience function for checking if a value is of an error type\n *\n * @param e - any value\n * @returns true if e is an error\n */\nfunction isError(e) {\n // Detect both Error and Firefox Exception type\n return isType(e, 'error') || isType(e, 'exception');\n}\n\n/* isPromise - a convenience function for checking if a value is a promise\n *\n * @param p - any value\n * @returns true if f is a function, otherwise false\n */\nfunction isPromise(p) {\n return isObject(p) && isType(p.then, 'function');\n}\n\n/**\n * isBrowser - a convenience function for checking if the code is running in a browser\n *\n * @returns true if the code is running in a browser environment\n */\nfunction isBrowser() {\n return typeof window !== 'undefined';\n}\n\nfunction redact() {\n return '********';\n}\n\n// from http://stackoverflow.com/a/8809472/1138191\nfunction uuid4() {\n var d = now();\n var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(\n /[xy]/g,\n function (c) {\n var r = ((d + Math.random() * 16) % 16) | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : (r & 0x7) | 0x8).toString(16);\n },\n );\n return uuid;\n}\n\nvar LEVELS = {\n debug: 0,\n info: 1,\n warning: 2,\n error: 3,\n critical: 4,\n};\n\nfunction sanitizeHref(url) {\n try {\n const urlObject = new URL(url);\n if (urlObject.password) {\n urlObject.password = redact();\n }\n if (urlObject.search) {\n urlObject.search = redact();\n }\n return urlObject.toString();\n } catch (_) {\n return url; // Return original URL if parsing fails\n }\n}\n\nfunction sanitizeUrl(url) {\n var baseUrlParts = parseUri(url);\n if (!baseUrlParts) {\n return '(unknown)';\n }\n\n // remove a trailing # if there is no anchor\n if (baseUrlParts.anchor === '') {\n baseUrlParts.source = baseUrlParts.source.replace('#', '');\n }\n\n url = baseUrlParts.source.replace('?' + baseUrlParts.query, '');\n return url;\n}\n\nvar parseUriOptions = {\n strictMode: false,\n key: [\n 'source',\n 'protocol',\n 'authority',\n 'userInfo',\n 'user',\n 'password',\n 'host',\n 'port',\n 'relative',\n 'path',\n 'directory',\n 'file',\n 'query',\n 'anchor',\n ],\n q: {\n name: 'queryKey',\n parser: /(?:^|&)([^&=]*)=?([^&]*)/g,\n },\n parser: {\n strict:\n /^(?:([^:/?#]+):)?(?:\\/\\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\\d*))?))?((((?:[^?#/]*\\/)*)([^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n loose:\n /^(?:(?![^:@]+:[^:@/]*@)([^:/?#.]+):)?(?:\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[?#]|$)))*\\/?)?([^?#/]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n },\n};\n\nfunction parseUri(str) {\n if (!isType(str, 'string')) {\n return undefined;\n }\n\n var o = parseUriOptions;\n var m = o.parser[o.strictMode ? 'strict' : 'loose'].exec(str);\n var uri = {};\n\n for (var i = 0, l = o.key.length; i < l; ++i) {\n uri[o.key[i]] = m[i] || '';\n }\n\n uri[o.q.name] = {};\n uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {\n if ($1) {\n uri[o.q.name][$1] = $2;\n }\n });\n\n return uri;\n}\n\nfunction addParamsAndAccessTokenToPath(accessToken, options, params) {\n params = params || {};\n params.access_token = accessToken;\n var paramsArray = [];\n var k;\n for (k in params) {\n if (Object.prototype.hasOwnProperty.call(params, k)) {\n paramsArray.push([k, params[k]].join('='));\n }\n }\n var query = '?' + paramsArray.sort().join('&');\n\n options = options || {};\n options.path = options.path || '';\n var qs = options.path.indexOf('?');\n var h = options.path.indexOf('#');\n var p;\n if (qs !== -1 && (h === -1 || h > qs)) {\n p = options.path;\n options.path = p.substring(0, qs) + query + '&' + p.substring(qs + 1);\n } else {\n if (h !== -1) {\n p = options.path;\n options.path = p.substring(0, h) + query + p.substring(h);\n } else {\n options.path = options.path + query;\n }\n }\n}\n\nfunction formatUrl(u, protocol) {\n protocol = protocol || u.protocol;\n if (!protocol && u.port) {\n if (u.port === 80) {\n protocol = 'http:';\n } else if (u.port === 443) {\n protocol = 'https:';\n }\n }\n protocol = protocol || 'https:';\n\n if (!u.hostname) {\n return null;\n }\n var result = protocol + '//' + u.hostname;\n if (u.port) {\n result = result + ':' + u.port;\n }\n if (u.path) {\n result = result + u.path;\n }\n return result;\n}\n\nfunction stringify(obj, backup) {\n var value, error;\n try {\n value = JSON.stringify(obj);\n } catch (jsonError) {\n if (backup && isFunction(backup)) {\n try {\n value = backup(obj);\n } catch (backupError) {\n error = backupError;\n }\n } else {\n error = jsonError;\n }\n }\n return { error: error, value: value };\n}\n\nfunction maxByteSize(string) {\n // The transport will use utf-8, so assume utf-8 encoding.\n //\n // This minimal implementation will accurately count bytes for all UCS-2 and\n // single code point UTF-16. If presented with multi code point UTF-16,\n // which should be rare, it will safely overcount, not undercount.\n //\n // While robust utf-8 encoders exist, this is far smaller and far more performant.\n // For quickly counting payload size for truncation, smaller is better.\n\n var count = 0;\n var length = string.length;\n\n for (var i = 0; i < length; i++) {\n var code = string.charCodeAt(i);\n if (code < 128) {\n // up to 7 bits\n count = count + 1;\n } else if (code < 2048) {\n // up to 11 bits\n count = count + 2;\n } else if (code < 65536) {\n // up to 16 bits\n count = count + 3;\n }\n }\n\n return count;\n}\n\nfunction jsonParse(s) {\n var value, error;\n try {\n value = JSON.parse(s);\n } catch (e) {\n error = e;\n }\n return { error, value };\n}\n\nfunction makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n mode,\n backupMessage,\n errorParser,\n) {\n var location = {\n url: url || '',\n line: lineno,\n column: colno,\n };\n location.func = errorParser.guessFunctionName(location.url, location.line);\n location.context = errorParser.gatherContext(location.url, location.line);\n var href =\n typeof document !== 'undefined' &&\n document &&\n document.location &&\n document.location.href;\n var useragent =\n typeof window !== 'undefined' &&\n window &&\n window.navigator &&\n window.navigator.userAgent;\n return {\n mode: mode,\n message: error ? String(error) : message || backupMessage,\n url: href,\n stack: [location],\n useragent: useragent,\n };\n}\n\nfunction wrapCallback(logger, f) {\n return function (err, resp) {\n try {\n f(err, resp);\n } catch (e) {\n logger.error(e);\n }\n };\n}\n\nfunction nonCircularClone(obj) {\n var seen = [obj];\n\n function clone(obj, seen) {\n var value,\n name,\n newSeen,\n result = {};\n\n try {\n for (name in obj) {\n value = obj[name];\n\n if (value && (isType(value, 'object') || isType(value, 'array'))) {\n if (seen.includes(value)) {\n result[name] = 'Removed circular reference: ' + typeName(value);\n } else {\n newSeen = seen.slice();\n newSeen.push(value);\n result[name] = clone(value, newSeen);\n }\n continue;\n }\n\n result[name] = value;\n }\n } catch (e) {\n result = 'Failed cloning custom data: ' + e.message;\n }\n return result;\n }\n return clone(obj, seen);\n}\n\nfunction createItem(args, logger, notifier, requestKeys, lambdaContext) {\n var message, err, custom, callback, request;\n var arg;\n var extraArgs = [];\n var diagnostic = {};\n var argTypes = [];\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n argTypes.push(typ);\n switch (typ) {\n case 'undefined':\n break;\n case 'string':\n if (message) {\n extraArgs.push(arg);\n } else {\n message = arg;\n }\n break;\n case 'function':\n callback = wrapCallback(logger, arg);\n break;\n case 'date':\n extraArgs.push(arg);\n break;\n case 'error':\n case 'domexception':\n case 'exception': // Firefox Exception type\n if (err) {\n extraArgs.push(arg);\n } else {\n err = arg;\n }\n break;\n case 'object':\n case 'array':\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n if (err) {\n extraArgs.push(arg);\n } else {\n err = arg;\n }\n break;\n }\n if (requestKeys && typ === 'object' && !request) {\n for (var j = 0, len = requestKeys.length; j < len; ++j) {\n if (arg[requestKeys[j]] !== undefined) {\n request = arg;\n break;\n }\n }\n if (request) {\n break;\n }\n }\n if (custom) {\n extraArgs.push(arg);\n } else {\n custom = arg;\n }\n break;\n default:\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n if (err) {\n extraArgs.push(arg);\n } else {\n err = arg;\n }\n break;\n }\n extraArgs.push(arg);\n }\n }\n\n // if custom is an array this turns it into an object with integer keys\n if (custom) custom = nonCircularClone(custom);\n\n if (extraArgs.length > 0) {\n if (!custom) custom = nonCircularClone({});\n custom.extraArgs = nonCircularClone(extraArgs);\n }\n\n var item = {\n message: message,\n err: err,\n custom: custom,\n timestamp: now(),\n callback: callback,\n notifier: notifier,\n diagnostic: diagnostic,\n uuid: uuid4(),\n };\n\n item.data = item.data || {};\n\n setCustomItemKeys(item, custom);\n\n if (requestKeys && request) {\n item.request = request;\n }\n if (lambdaContext) {\n item.lambdaContext = lambdaContext;\n }\n item._originalArgs = args;\n item.diagnostic.original_arg_types = argTypes;\n return item;\n}\n\nfunction setCustomItemKeys(item, custom) {\n if (custom && custom.level !== undefined) {\n item.level = custom.level;\n delete custom.level;\n }\n if (custom && custom.skipFrames !== undefined) {\n item.skipFrames = custom.skipFrames;\n delete custom.skipFrames;\n }\n}\n\nfunction addErrorContext(item, errors) {\n var custom = item.data.custom || {};\n var contextAdded = false;\n\n try {\n for (const error of errors) {\n if (hasOwn(error, 'rollbarContext')) {\n custom = merge(custom, nonCircularClone(error.rollbarContext));\n contextAdded = true;\n }\n }\n\n // Avoid adding an empty object to the data.\n if (contextAdded) {\n item.data.custom = custom;\n }\n } catch (e) {\n item.diagnostic.error_context = 'Failed: ' + e.message;\n }\n}\n\nvar TELEMETRY_TYPES = [\n 'log',\n 'network',\n 'dom',\n 'navigation',\n 'error',\n 'manual',\n];\nvar TELEMETRY_LEVELS = ['critical', 'error', 'warning', 'info', 'debug'];\n\nfunction arrayIncludes(arr, val) {\n for (const entry of arr) {\n if (entry === val) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction createTelemetryEvent(args) {\n var type, metadata, level;\n var arg;\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n switch (typ) {\n case 'string':\n if (!type && arrayIncludes(TELEMETRY_TYPES, arg)) {\n type = arg;\n } else if (!level && arrayIncludes(TELEMETRY_LEVELS, arg)) {\n level = arg;\n }\n break;\n case 'object':\n metadata = arg;\n break;\n default:\n break;\n }\n }\n var event = {\n type: type || 'manual',\n metadata: metadata || {},\n level: level,\n };\n\n return event;\n}\n\nfunction addItemAttributes(itemData, attributes) {\n itemData.attributes = itemData.attributes || [];\n for (const a of attributes) {\n if (a.value === undefined) {\n continue;\n }\n itemData.attributes.push(a);\n }\n}\n\n/*\n * get - given an obj/array and a keypath, return the value at that keypath or\n * undefined if not possible.\n *\n * @param obj - an object or array\n * @param path - a string of keys separated by '.' such as 'plugin.jquery.0.message'\n * which would correspond to 42 in `{plugin: {jquery: [{message: 42}]}}`\n */\nfunction get(obj, path) {\n if (!obj) {\n return undefined;\n }\n var keys = path.split('.');\n var result = obj;\n try {\n for (var i = 0, len = keys.length; i < len; ++i) {\n result = result[keys[i]];\n }\n } catch (_e) {\n result = undefined;\n }\n return result;\n}\n\nfunction set(obj, path, value) {\n if (!obj) {\n return;\n }\n\n // Prevent prototype pollution by setting the prototype to null.\n Object.setPrototypeOf(obj, null);\n\n var keys = path.split('.');\n var len = keys.length;\n if (len < 1) {\n return;\n }\n if (len === 1) {\n obj[keys[0]] = value;\n return;\n }\n try {\n var temp = obj[keys[0]] || {};\n var replacement = temp;\n for (var i = 1; i < len - 1; ++i) {\n temp[keys[i]] = temp[keys[i]] || {};\n temp = temp[keys[i]];\n }\n temp[keys[len - 1]] = value;\n obj[keys[0]] = replacement;\n } catch (_e) {\n return;\n }\n}\n\nfunction formatArgsAsString(args) {\n var i, len, arg;\n var result = [];\n for (i = 0, len = args.length; i < len; ++i) {\n arg = args[i];\n switch (typeName(arg)) {\n case 'object':\n arg = stringify(arg);\n arg = arg.error || arg.value;\n if (arg.length > 500) {\n arg = arg.substr(0, 497) + '...';\n }\n break;\n case 'null':\n arg = 'null';\n break;\n case 'undefined':\n arg = 'undefined';\n break;\n case 'symbol':\n arg = arg.toString();\n break;\n }\n result.push(arg);\n }\n return result.join(' ');\n}\n\nfunction now() {\n if (Date.now) {\n return Date.now();\n }\n return Number(new Date());\n}\n\nfunction filterIp(requestData, captureIp) {\n if (!requestData || !requestData['user_ip'] || captureIp === true) {\n return;\n }\n var newIp = requestData['user_ip'];\n if (!captureIp) {\n newIp = null;\n } else {\n try {\n var parts;\n if (newIp.indexOf('.') !== -1) {\n parts = newIp.split('.');\n parts.pop();\n parts.push('0');\n newIp = parts.join('.');\n } else if (newIp.indexOf(':') !== -1) {\n parts = newIp.split(':');\n if (parts.length > 2) {\n var beginning = parts.slice(0, 3);\n var slashIdx = beginning[2].indexOf('/');\n if (slashIdx !== -1) {\n beginning[2] = beginning[2].substring(0, slashIdx);\n }\n var terminal = '0000:0000:0000:0000:0000';\n newIp = beginning.concat(terminal).join(':');\n }\n } else {\n newIp = null;\n }\n } catch (_e) {\n newIp = null;\n }\n }\n requestData['user_ip'] = newIp;\n}\n\nfunction handleOptions(current, input, payload, logger) {\n var result = merge(current, input, payload);\n result = updateDeprecatedOptions(result, logger);\n if (!input || input.overwriteScrubFields) {\n return result;\n }\n if (input.scrubFields) {\n result.scrubFields = (current.scrubFields || []).concat(input.scrubFields);\n }\n return result;\n}\n\nfunction updateDeprecatedOptions(options, logger) {\n if (options.hostWhiteList && !options.hostSafeList) {\n options.hostSafeList = options.hostWhiteList;\n options.hostWhiteList = undefined;\n logger && logger.log('hostWhiteList is deprecated. Use hostSafeList.');\n }\n if (options.hostBlackList && !options.hostBlockList) {\n options.hostBlockList = options.hostBlackList;\n options.hostBlackList = undefined;\n logger && logger.log('hostBlackList is deprecated. Use hostBlockList.');\n }\n return options;\n}\n\nfunction merge() {\n function isPlainObject(obj) {\n if (!obj || Object.prototype.toString.call(obj) !== '[object Object]') {\n return false;\n }\n\n var hasOwnConstructor = hasOwn(obj, 'constructor');\n var hasIsPrototypeOf =\n obj.constructor &&\n obj.constructor.prototype &&\n hasOwn(obj.constructor.prototype, 'isPrototypeOf');\n // Not own constructor property must be Object\n if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n return false;\n }\n\n // Own properties are enumerated firstly, so to speed up,\n // if last one is own, then all properties are own.\n var key;\n for (key in obj) {\n /**/\n }\n\n return typeof key === 'undefined' || hasOwn(obj, key);\n }\n\n var i,\n src,\n copy,\n clone,\n name,\n result = Object.create(null), // no prototype pollution on Object\n current = null,\n length = arguments.length;\n\n for (i = 0; i < length; i++) {\n current = arguments[i];\n if (current === null || current === undefined) {\n continue;\n }\n\n for (name in current) {\n src = result[name];\n copy = current[name];\n if (result !== copy) {\n if (copy && isPlainObject(copy)) {\n clone = src && isPlainObject(src) ? src : {};\n result[name] = merge(clone, copy);\n } else if (typeof copy !== 'undefined') {\n result[name] = copy;\n }\n }\n }\n }\n return result;\n}\n\nexport {\n addParamsAndAccessTokenToPath,\n createItem,\n addErrorContext,\n createTelemetryEvent,\n addItemAttributes,\n filterIp,\n formatArgsAsString,\n formatUrl,\n get,\n handleOptions,\n isError,\n isFiniteNumber,\n isFunction,\n hasOwn,\n isIterable,\n isNativeFunction,\n isObject,\n isString,\n isType,\n isPromise,\n isBrowser,\n jsonParse,\n LEVELS,\n makeUnhandledStackInfo,\n merge,\n now,\n redact,\n sanitizeHref,\n sanitizeUrl,\n set,\n stringify,\n maxByteSize,\n typeName,\n uuid4,\n};\n","import * as _ from '../utility.js';\n\nfunction traverse(obj, func, seen) {\n var k, v, i;\n var isObj = _.isType(obj, 'object');\n var isArray = _.isType(obj, 'array');\n var keys = [];\n var seenIndex;\n\n // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11.\n seen = seen || { obj: [], mapped: [] };\n\n if (isObj) {\n seenIndex = seen.obj.indexOf(obj);\n\n if (isObj && seenIndex !== -1) {\n // Prefer the mapped object if there is one.\n return seen.mapped[seenIndex] || seen.obj[seenIndex];\n }\n\n seen.obj.push(obj);\n seenIndex = seen.obj.length - 1;\n }\n\n if (isObj) {\n for (k in obj) {\n if (_.hasOwn(obj, k)) {\n keys.push(k);\n }\n }\n } else if (isArray) {\n for (i = 0; i < obj.length; ++i) {\n keys.push(i);\n }\n }\n\n var result = isObj ? {} : [];\n var same = true;\n for (i = 0; i < keys.length; ++i) {\n k = keys[i];\n v = obj[k];\n result[k] = func(k, v, seen);\n same = same && result[k] === obj[k];\n }\n\n if (isObj && !same) {\n seen.mapped[seenIndex] = result;\n }\n\n return !same ? result : obj;\n}\n\nexport default traverse;\n","import traverse from './utility/traverse.js';\nimport * as _ from './utility.js';\n\nfunction scrub(data, scrubFields, scrubPaths) {\n scrubFields = scrubFields || [];\n\n if (scrubPaths) {\n for (const path of scrubPaths) {\n scrubPath(data, path);\n }\n }\n\n var paramRes = _getScrubFieldRegexs(scrubFields);\n var queryRes = _getScrubQueryParamRegexs(scrubFields);\n\n function redactQueryParam(dummy0, paramPart) {\n return paramPart + _.redact();\n }\n\n function paramScrubber(v) {\n if (_.isType(v, 'string')) {\n for (const regex of queryRes) {\n v = v.replace(regex, redactQueryParam);\n }\n }\n return v;\n }\n\n function valScrubber(k, v) {\n for (const regex of paramRes) {\n if (regex.test(k)) {\n v = _.redact();\n break;\n }\n }\n return v;\n }\n\n function scrubber(k, v, seen) {\n var tmpV = valScrubber(k, v);\n if (tmpV === v) {\n if (_.isType(v, 'object') || _.isType(v, 'array')) {\n return traverse(v, scrubber, seen);\n }\n return paramScrubber(tmpV);\n } else {\n return tmpV;\n }\n }\n\n return traverse(data, scrubber);\n}\n\nfunction scrubPath(obj, path) {\n var keys = path.split('.');\n var last = keys.length - 1;\n try {\n for (const [index, key] of keys.entries()) {\n if (index < last) {\n obj = obj[key];\n } else {\n obj[key] = _.redact();\n }\n }\n } catch (_e) {\n // Missing key is OK;\n }\n}\n\nfunction _getScrubFieldRegexs(scrubFields) {\n var ret = [];\n for (const field of scrubFields) {\n var pat = '^\\\\[?(%5[bB])?' + field + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?$';\n ret.push(new RegExp(pat, 'i'));\n }\n return ret;\n}\n\nfunction _getScrubQueryParamRegexs(scrubFields) {\n var ret = [];\n for (const field of scrubFields) {\n var pat = '\\\\[?(%5[bB])?' + field + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?';\n ret.push(new RegExp('(' + pat + '=)([^&\\\\n]+)', 'igm'));\n }\n return ret;\n}\n\nexport default scrub;\n","import * as _ from './utility.js';\n\nconst MAX_EVENTS = 100;\n\n// Temporary workaround while solving commonjs -> esm issues in Node 18 - 20.\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\nclass Telemeter {\n constructor(options, tracing) {\n this.queue = [];\n this.options = _.merge(options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n this.tracing = tracing;\n this.telemetrySpan = this.tracing?.startSpan('rollbar-telemetry', {});\n }\n\n configure(options) {\n var oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n var newMaxEvents = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n var deleteCount = 0;\n if (this.queue.length > newMaxEvents) {\n deleteCount = this.queue.length - newMaxEvents;\n }\n this.maxQueueSize = newMaxEvents;\n this.queue.splice(0, deleteCount);\n }\n\n copyEvents() {\n var events = Array.prototype.slice.call(this.queue, 0);\n if (_.isFunction(this.options.filterTelemetry)) {\n try {\n var i = events.length;\n while (i--) {\n if (this.options.filterTelemetry(events[i])) {\n events.splice(i, 1);\n }\n }\n } catch (_e) {\n this.options.filterTelemetry = null;\n }\n }\n\n // Filter until supported in legacy telemetry\n events = events.filter((e) => e.type !== 'connectivity');\n\n // Remove internal keys from output\n events = events.map(\n ({ otelAttributes: _otelAttributes, ...event }) => event,\n );\n\n return events;\n }\n\n exportTelemetrySpan(attributes = {}) {\n if (this.telemetrySpan) {\n this.telemetrySpan.end(attributes);\n this.telemetrySpan = this.tracing.startSpan('rollbar-telemetry', {});\n }\n }\n\n capture(\n type,\n metadata,\n level,\n rollbarUUID,\n timestamp = null,\n otelAttributes = null,\n ) {\n var e = {\n level: getLevel(type, level),\n type: type,\n timestamp_ms: timestamp || _.now(),\n body: metadata,\n source: 'client',\n };\n if (rollbarUUID) {\n e.uuid = rollbarUUID;\n }\n if (otelAttributes) {\n e.otelAttributes = otelAttributes;\n }\n\n try {\n if (\n _.isFunction(this.options.filterTelemetry) &&\n this.options.filterTelemetry(e)\n ) {\n return false;\n }\n } catch (_exc) {\n this.options.filterTelemetry = null;\n }\n\n this.push(e);\n return e;\n }\n\n captureEvent(type, metadata, level, rollbarUUID) {\n return this.capture(type, metadata, level, rollbarUUID);\n }\n\n captureError(err, level, rollbarUUID, timestamp) {\n const message = err.message || String(err);\n var metadata = { message };\n if (err.stack) {\n metadata.stack = err.stack;\n }\n const otelAttributes = {\n message,\n level,\n type: 'error',\n uuid: rollbarUUID,\n };\n\n this.telemetrySpan?.addEvent(\n 'rollbar-occurrence-event',\n otelAttributes,\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'error',\n metadata,\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureLog(message, level, rollbarUUID, timestamp) {\n const event = rollbarUUID\n ? 'rollbar-occurrence-event'\n : 'rollbar-log-event';\n const otelAttributes = {\n message,\n level,\n ...(rollbarUUID ? { type: 'message', uuid: rollbarUUID } : {}),\n };\n\n this.telemetrySpan?.addEvent(event, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'log',\n { message },\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNetwork(metadata, subtype, rollbarUUID, requestData) {\n subtype = subtype || 'xhr';\n metadata.subtype = metadata.subtype || subtype;\n if (requestData) {\n metadata.request = requestData;\n }\n const level = this.levelFromStatus(metadata.status_code);\n const endTimeNano = (metadata.end_time_ms || 0) * 1e6;\n const otelAttributes = {\n type: metadata.subtype,\n method: metadata.method,\n url: metadata.url,\n statusCode: metadata.status_code,\n 'request.headers': JSON.stringify(metadata.request_headers || {}),\n 'response.headers': JSON.stringify(metadata.response?.headers || {}),\n 'response.timeUnixNano': endTimeNano.toString(),\n };\n const requestBody = metadata.request;\n const responseBody = metadata.response?.body;\n if (requestBody) {\n otelAttributes['request.body'] = JSON.stringify(requestBody);\n }\n if (responseBody) {\n otelAttributes['response.body'] = JSON.stringify(responseBody);\n }\n\n this.telemetrySpan?.addEvent(\n 'rollbar-network-event',\n otelAttributes,\n fromMillis(metadata.start_time_ms),\n );\n\n return this.capture(\n 'network',\n metadata,\n level,\n rollbarUUID,\n metadata.start_time_ms,\n otelAttributes,\n );\n }\n\n levelFromStatus(statusCode) {\n if (statusCode >= 200 && statusCode < 400) {\n return 'info';\n }\n if (statusCode === 0 || statusCode >= 400) {\n return 'error';\n }\n return 'info';\n }\n\n captureDom(subtype, element, value, checked, rollbarUUID) {\n var metadata = {\n subtype: subtype,\n element: element,\n };\n if (value !== undefined) {\n metadata.value = value;\n }\n if (checked !== undefined) {\n metadata.checked = checked;\n }\n return this.capture('dom', metadata, 'info', rollbarUUID);\n }\n\n captureInput({ type, isSynthetic, element, value, timestamp }) {\n const name = 'rollbar-input-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n value,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n value,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureClick({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-click-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n _getRepeatedEvent(name, attributes) {\n const lastEvent = this._lastEvent(this.queue);\n\n if (\n lastEvent &&\n lastEvent.body.type === name &&\n lastEvent.otelAttributes.target === attributes.target\n ) {\n return lastEvent;\n }\n }\n\n _updateRepeatedEvent(event, attributes, timestamp) {\n const duration = Math.max(timestamp - event.timestamp_ms, 1);\n event.body.value = attributes.value;\n event.otelAttributes.value = attributes.value;\n event.otelAttributes.height = attributes.height;\n event.otelAttributes.width = attributes.width;\n event.otelAttributes.textZoomRatio = attributes.textZoomRatio;\n event.otelAttributes['endTimeUnixNano'] = fromMillis(timestamp);\n event.otelAttributes['durationUnixNano'] = fromMillis(duration);\n event.otelAttributes.count = (event.otelAttributes.count || 1) + 1;\n event.otelAttributes.rate = event.otelAttributes.count / (duration / 1000);\n }\n\n _lastEvent(list) {\n return list.length > 0 ? list[list.length - 1] : null;\n }\n\n captureFocus({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-focus-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureResize({\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n timestamp,\n }) {\n const name = 'rollbar-resize-event';\n const metadata = {\n type: name,\n subtype: type,\n width,\n height,\n textZoomRatio,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n };\n\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureDragDrop({\n type,\n isSynthetic,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n timestamp,\n }) {\n const name = 'rollbar-dragdrop-event';\n let metadata = {\n type: name,\n subtype: type,\n isSynthetic,\n };\n\n let otelAttributes = {\n type,\n isSynthetic,\n };\n\n if (type === 'dragstart') {\n metadata = { ...metadata, element, dropEffect, effectAllowed };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n };\n }\n\n if (type === 'drop') {\n metadata = {\n ...metadata,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNavigation(from, to, rollbarUUID, timestamp) {\n this.telemetrySpan?.addEvent(\n 'rollbar-navigation-event',\n { 'previous.url.full': from, 'url.full': to },\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'navigation',\n { from, to },\n 'info',\n rollbarUUID,\n timestamp,\n );\n }\n\n captureDomContentLoaded(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'DOMContentLoaded' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'DOMContentLoaded'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureLoad(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'load' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'load'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureConnectivityChange({ type, isSynthetic, timestamp }) {\n const name = 'rollbar-connectivity-event';\n const metadata = {\n type: name,\n subtype: type,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'connectivity',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n // Only intended to be used internally by the notifier\n _captureRollbarItem(item) {\n if (!this.options.includeItemsInTelemetry) {\n return;\n }\n if (item.err) {\n return this.captureError(item.err, item.level, item.uuid, item.timestamp);\n }\n if (item.message) {\n return this.captureLog(\n item.message,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n if (item.custom) {\n return this.capture(\n 'log',\n item.custom,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n }\n\n push(e) {\n this.queue.push(e);\n if (this.queue.length > this.maxQueueSize) {\n this.queue.shift();\n }\n }\n}\n\nfunction getLevel(type, level) {\n if (level) {\n return level;\n }\n var defaultLevel = {\n error: 'error',\n manual: 'info',\n };\n return defaultLevel[type] || 'info';\n}\n\nexport default Telemeter;\n","export class Context {\n constructor(parentContext) {\n this._currentContext = parentContext ? new Map(parentContext) : new Map();\n }\n\n getValue(key) {\n return this._currentContext.get(key);\n }\n\n setValue(key, value) {\n const context = new Context(this._currentContext);\n context._currentContext.set(key, value);\n return context;\n }\n\n deleteValue(key) {\n const context = new Context(self._currentContext);\n context._currentContext.delete(key);\n return context;\n }\n}\n\nexport const ROOT_CONTEXT = new Context();\n","import { ROOT_CONTEXT } from './context.js';\n\nexport class ContextManager {\n constructor() {\n this.currentContext = ROOT_CONTEXT;\n }\n\n active() {\n return this.currentContext;\n }\n\n enterContext(context) {\n const previousContext = this.currentContext;\n this.currentContext = context || ROOT_CONTEXT;\n return previousContext;\n }\n\n exitContext(context) {\n this.currentContext = context;\n return this.currentContext;\n }\n\n with(context, fn, thisArg, ...args) {\n const previousContext = this.enterContext(context);\n try {\n return fn.call(thisArg, ...args);\n } finally {\n this.exitContext(previousContext);\n }\n }\n}\n\nexport function createContextKey(key) {\n // Use Symbol for OpenTelemetry compatibility.\n return Symbol.for(key);\n}\n","/**\n * @module hrtime\n *\n * @description Methods for handling OpenTelemetry hrtime.\n */\n\n/**\n * Convert a duration in milliseconds to an OpenTelemetry hrtime tuple.\n *\n * @param {number} millis - The duration in milliseconds.\n * @returns {[number, number]} An array where the first element is seconds\n * and the second is nanoseconds.\n */\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in milliseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in milliseconds.\n */\nfunction toMillis(hrtime) {\n return hrtime[0] * 1e3 + Math.round(hrtime[1] / 1e6);\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in nanoseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in nanoseconds.\n */\nfunction toNanos(hrtime) {\n return hrtime[0] * 1e9 + hrtime[1];\n}\n\n/**\n * Adds two OpenTelemetry hrtime tuples.\n *\n * @param {[number, number]} a - The first hrtime tuple [s, ns].\n * @param {[number, number]} b - The second hrtime tuple [s, ns].\n * @returns {[number, number]} Summed hrtime tuple, normalized.\n *\n */\nfunction add(a, b) {\n return [a[0] + b[0] + Math.trunc((a[1] + b[1]) / 1e9), (a[1] + b[1]) % 1e9];\n}\n\n/**\n * Get the current high-resolution time as an OpenTelemetry hrtime tuple.\n *\n * @param {boolean} usePerformance=false - If true, uses the Performance API (timeOrigin + now()).\n *\n * @returns {[number, number]} The current hrtime tuple [s, ns].\n */\nfunction now(usePerformance = false) {\n if (usePerformance) {\n return add(\n fromMillis(performance.timeOrigin),\n fromMillis(performance.now()),\n );\n }\n return fromMillis(Date.now());\n}\n\n/**\n * Check if a value is a valid OpenTelemetry hrtime tuple.\n *\n * An hrtime tuple is an Array of exactly two numbers:\n * [seconds, nanoseconds]\n *\n * @param {*} value – anything to test\n * @returns {boolean} true if `value` is a [number, number] array of length 2\n *\n * @example\n * isHrTime([ 1, 500 ]); // true\n * isHrTime([ 0, 1e9 ]); // true\n * isHrTime([ '1', 500 ]); // false\n * isHrTime({ 0: 1, 1: 500 }); // false\n */\nfunction isHrTime(value) {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number'\n );\n}\n\n/**\n * Methods for handling hrtime. OpenTelemetry uses the [seconds, nanoseconds]\n * format for hrtime in the `ReadableSpan` interface.\n *\n * @example\n * import hrtime from '@tracing/hrtime.js';\n *\n * hrtime.fromMillis(1000);\n * hrtime.toMillis([0, 1000]);\n * hrtime.add([0, 0], [0, 1000]);\n * hrtime.now();\n * hrtime.isHrTime([0, 1000]);\n */\nexport default { fromMillis, toMillis, toNanos, add, now, isHrTime };\n","import hrtime from './hrtime.js';\n\n/**\n * SpanExporter is responsible for exporting ReadableSpan objects\n * and transforming them into the OTLP-compatible format.\n */\nexport class SpanExporter {\n constructor(api, options = {}) {\n this.api = api;\n this.options = options;\n }\n\n /**\n * Export spans to the span export queue\n *\n * @param {Array} spans - Array of ReadableSpan objects to export\n * @param {Function} _resultCallback - Optional callback (not used)\n */\n export(spans, _resultCallback) {\n spanExportQueue.push(...spans);\n }\n\n /**\n * Transforms an array of ReadableSpan objects into the OTLP format payload\n * compatible with the Rollbar API. This follows the OpenTelemetry protocol\n * specification for traces.\n *\n * @returns {Object} OTLP format payload for API transmission\n */\n toPayload() {\n const spans = spanExportQueue.slice();\n spanExportQueue.length = 0;\n\n if (!spans || !spans.length) {\n return { resourceSpans: [] };\n }\n\n const resource = (spans[0] && spans[0].resource) || {};\n\n const scopeMap = new Map();\n\n for (const span of spans) {\n const scopeKey = span.instrumentationScope\n ? `${span.instrumentationScope.name}:${span.instrumentationScope.version}`\n : 'default:1.0.0';\n\n if (!scopeMap.has(scopeKey)) {\n scopeMap.set(scopeKey, {\n scope: span.instrumentationScope || {\n name: 'default',\n version: '1.0.0',\n attributes: [],\n },\n spans: [],\n });\n }\n\n scopeMap.get(scopeKey).spans.push(this._transformSpan(span));\n }\n\n return {\n resourceSpans: [\n {\n resource: this._transformResource(resource),\n scopeSpans: Array.from(scopeMap.values()).map((scopeData) => ({\n scope: this._transformInstrumentationScope(scopeData.scope),\n spans: scopeData.spans,\n })),\n },\n ],\n };\n }\n\n /**\n * Sends the given payload to the Rollbar API.\n *\n * @param {String} payload - Serialized OTLP format payload\n * @param {Object} headers - Optional request headers\n * @returns {Promise} Promise that resolves when the request completes\n */\n post(payload, headers = {}) {\n return this.api.postSpans(payload, headers);\n }\n\n /**\n * Transforms a ReadableSpan into the OTLP Span format\n *\n * @private\n * @param {Object} span - ReadableSpan object to transform\n * @returns {Object} OTLP Span format\n */\n _transformSpan(span) {\n const transformAttributes = (attributes) => {\n return Object.entries(attributes || {}).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n };\n\n const transformEvents = (events) => {\n return (events || []).map((event) => ({\n timeUnixNano: hrtime.toNanos(event.time),\n name: event.name,\n attributes: transformAttributes(event.attributes),\n }));\n };\n\n return {\n traceId: span.spanContext.traceId,\n spanId: span.spanContext.spanId,\n parentSpanId: span.parentSpanId || '',\n name: span.name,\n kind: span.kind || 1, // INTERNAL by default\n startTimeUnixNano: hrtime.toNanos(span.startTime),\n endTimeUnixNano: hrtime.toNanos(span.endTime),\n attributes: transformAttributes(span.attributes),\n events: transformEvents(span.events),\n };\n }\n\n /**\n * Transforms a resource object into OTLP Resource format\n *\n * @private\n * @param {Object} resource - Resource information\n * @returns {Object} OTLP Resource format\n */\n _transformResource(resource) {\n const attributes = resource.attributes || {};\n const keyValues = Object.entries(attributes).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n\n return {\n attributes: keyValues,\n };\n }\n\n /**\n * Transforms an instrumentation scope into OTLP InstrumentationScope format\n *\n * @private\n * @param {Object} scope - Instrumentation scope information\n * @returns {Object} OTLP InstrumentationScope format\n */\n _transformInstrumentationScope(scope) {\n return {\n name: scope.name || '',\n version: scope.version || '',\n attributes: (scope.attributes || []).map((attr) => ({\n key: attr.key,\n value: this._transformAnyValue(attr.value),\n })),\n };\n }\n\n /**\n * Transforms a JavaScript value into an OTLP AnyValue\n *\n * @private\n * @param {any} value - Value to transform\n * @returns {Object} OTLP AnyValue format\n */\n _transformAnyValue(value) {\n if (value === null || value === undefined) {\n return { stringValue: '' };\n }\n\n const type = typeof value;\n\n if (type === 'string') {\n return { stringValue: value };\n } else if (type === 'number') {\n if (Number.isInteger(value)) {\n return { intValue: value.toString() };\n } else {\n return { doubleValue: value };\n }\n } else if (type === 'boolean') {\n return { boolValue: value };\n } else if (Array.isArray(value)) {\n return {\n arrayValue: {\n values: value.map((v) => this._transformAnyValue(v)),\n },\n };\n } else if (type === 'object') {\n return {\n kvlistValue: {\n values: Object.entries(value).map(([k, v]) => ({\n key: k,\n value: this._transformAnyValue(v),\n })),\n },\n };\n }\n\n return { stringValue: String(value) };\n }\n}\n\nexport const spanExportQueue = [];\n","/**\n * Generate a random hexadecimal ID of specified byte length\n *\n * @param {number} bytes - Number of bytes for the ID (default: 16)\n * @returns {string} - Hexadecimal string representation\n */\nfunction gen(bytes = 16) {\n let randomBytes = new Uint8Array(bytes);\n crypto.getRandomValues(randomBytes);\n let randHex = Array.from(randomBytes, (byte) =>\n byte.toString(16).padStart(2, '0'),\n ).join('');\n return randHex;\n}\n\n/**\n * Tracing id generation utils\n *\n * @example\n * import id from './id.js';\n *\n * const spanId = id.gen(8); // => \"a1b2c3d4e5f6...\"\n */\nexport default { gen };\n","import id from './id.js';\n\nconst SESSION_KEY = 'RollbarSession';\n\nexport class Session {\n _attributes;\n\n constructor(tracing, options) {\n this.options = options;\n this.tracing = tracing;\n this.window = tracing.window;\n this.session = null;\n this._attributes = {};\n }\n\n init(attrs = {}) {\n if (this.session) {\n return this;\n }\n this.getSession() || this.createSession();\n\n this.initSessionAttributes(attrs);\n\n return this;\n }\n\n getSession() {\n try {\n const serializedSession = this.window.sessionStorage.getItem(SESSION_KEY);\n\n if (!serializedSession) {\n return null;\n }\n\n this.session = JSON.parse(serializedSession);\n } catch {\n return null;\n }\n return this;\n }\n\n createSession() {\n this.session = {\n id: id.gen(),\n createdAt: Date.now(),\n };\n\n return this.setSession(this.session);\n }\n\n setSession(session) {\n const sessionString = JSON.stringify(session);\n\n try {\n this.window.sessionStorage.setItem(SESSION_KEY, sessionString);\n } catch {\n return null;\n }\n return this;\n }\n\n get attributes() {\n return this._attributes;\n }\n\n setAttributes(attributes) {\n this._attributes = { ...this._attributes, ...attributes };\n return this;\n }\n\n setUser(user) {\n this.setAttributes({\n 'user.id': user?.id,\n 'user.email': user?.email,\n 'user.name': user?.name || user?.username,\n });\n return this;\n }\n\n initSessionAttributes(attrs) {\n this.setAttributes({\n 'session.id': this.session.id,\n 'browser.brands': navigator.userAgentData?.brands,\n 'browser.language': navigator.language,\n 'browser.mobile': navigator.userAgentData?.mobile,\n 'browser.platform': navigator.userAgentData?.platform,\n 'client.address': '$remote_ip', // updated at the API\n 'rollbar.notifier.framework': 'browser-js',\n 'user_agent.original': navigator.userAgent,\n ...attrs,\n });\n return this;\n }\n}\n","let log = () => {};\n\nconst levels = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n disable: 4,\n};\n\nconst logger = {\n error: (...args) => log('error', args),\n warn: (...args) => log('warn', args),\n info: (...args) => log('info', args),\n debug: (...args) => log('debug', args),\n log: (...args) => log('info', args),\n init: ({ logLevel }) => {\n log = function (level, args) {\n if (levels[level] < levels[logLevel]) return;\n\n args.unshift('Rollbar:');\n\n // eslint-disable-next-line no-console\n console[level].apply(console, args);\n };\n },\n};\n\nexport default logger;\n","import logger from '../logger.js';\n\nexport class SpanProcessor {\n constructor(exporter, options = {}) {\n this.exporter = exporter;\n this.options = options;\n this.pendingSpans = new Map();\n this.transforms = [this.userTransform.bind(this)];\n }\n\n addTransform(transformFn) {\n this.transforms.unshift(transformFn);\n }\n\n userTransform(span) {\n if (this.options.transformSpan) {\n this.options.transformSpan({ span: span });\n }\n }\n\n applyTransforms(span) {\n for (const transform of this.transforms) {\n try {\n transform(span);\n } catch (e) {\n logger.error('Error running span transform callback', e);\n }\n }\n }\n\n onStart(span, _parentContext) {\n this.pendingSpans.set(span.span.spanContext.spanId, span);\n }\n\n onEnd(span) {\n this.applyTransforms(span.span);\n this.exporter.export([span.export()]);\n this.pendingSpans.delete(span.span.spanContext.spanId);\n }\n}\n","import hrtime from './hrtime.js';\n\nexport class Span {\n constructor(options) {\n this.usePerformance = options.usePerformance;\n this.initReadableSpan(options);\n\n this.spanProcessor = options.spanProcessor;\n this.spanProcessor.onStart(this, options.context);\n\n if (options.attributes) {\n this.setAttributes(options.attributes);\n }\n return this;\n }\n\n initReadableSpan(options) {\n this.span = {\n name: options.name,\n kind: options.kind,\n spanContext: options.spanContext,\n parentSpanId: options.parentSpanId,\n startTime: options.startTime || hrtime.now(options.usePerformance),\n endTime: [0, 0],\n status: { code: 0, message: '' },\n attributes: { 'session.id': options.session?.id },\n links: [],\n events: [],\n duration: 0,\n ended: false,\n resource: options.resource,\n instrumentationScope: options.scope,\n droppedAttributesCount: 0,\n droppedEventsCount: 0,\n droppedLinksCount: 0,\n };\n }\n\n spanContext() {\n return this.span.spanContext;\n }\n\n get spanId() {\n return this.span.spanContext.spanId;\n }\n\n get traceId() {\n return this.span.spanContext.traceId;\n }\n\n setAttribute(key, value) {\n if (value == null || this.span.ended) return this;\n if (key.length === 0) return this;\n\n this.span.attributes[key] = value;\n return this;\n }\n\n setAttributes(attributes) {\n for (const [k, v] of Object.entries(attributes)) {\n this.setAttribute(k, v);\n }\n return this;\n }\n\n addEvent(name, attributes = {}, time) {\n if (this.span.ended) return this;\n\n this.span.events.push({\n name,\n attributes,\n time: time || hrtime.now(),\n droppedAttributesCount: 0,\n });\n\n return this;\n }\n\n isRecording() {\n return this.span.ended === false;\n }\n\n end(attributes, time) {\n if (attributes) this.setAttributes(attributes);\n this.span.endTime = time || hrtime.now(this.usePerformance);\n this.span.ended = true;\n this.spanProcessor.onEnd(this);\n }\n\n export() {\n return this.span;\n }\n}\n","import id from './id.js';\nimport { Span } from './span.js';\n\nexport class Tracer {\n constructor(tracing, spanProcessor) {\n this.spanProcessor = spanProcessor;\n this.tracing = tracing;\n }\n\n startSpan(\n name,\n options = {},\n context = this.tracing.contextManager.active(),\n ) {\n const parentSpan = this.tracing.getSpan(context);\n const parentSpanContext = parentSpan?.spanContext();\n const spanId = id.gen(8);\n let traceId;\n let traceFlags = 0;\n let traceState = null;\n let parentSpanId;\n if (parentSpanContext) {\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n parentSpanId = parentSpanContext.spanId;\n } else {\n traceId = id.gen(16);\n }\n\n const kind = 0;\n const spanContext = { traceId, spanId, traceFlags, traceState };\n const resource = {\n attributes: {\n ...(this.tracing.resource?.attributes || {}),\n ...(options.resource?.attributes || {}),\n },\n };\n\n const span = new Span({\n resource: resource,\n scope: this.tracing.scope,\n session: this.tracing.session?.session,\n context,\n spanContext,\n name,\n kind,\n parentSpanId,\n spanProcessor: this.spanProcessor,\n startTime: options.startTime,\n usePerformance: options.usePerformance,\n });\n return span;\n }\n}\n","import { ContextManager, createContextKey } from './contextManager.js';\nimport { SpanExporter } from './exporter.js';\nimport id from './id.js';\nimport { Session } from './session.js';\nimport { SpanProcessor } from './spanProcessor.js';\nimport { Tracer } from './tracer.js';\n\nconst SPAN_KEY = createContextKey('Rollbar Context Key SPAN');\n\nexport default class Tracing {\n constructor(gWindow, api, options) {\n this.api = api;\n this.options = options;\n this.window = gWindow;\n\n if (this.window.sessionStorage) {\n this.session = new Session(this, options);\n }\n this.createTracer();\n }\n\n configure(options) {\n // Options merge happens before configure is called, so we can just replace.\n this.options = options;\n }\n\n initSession() {\n if (this.session) {\n this.session.init();\n }\n }\n\n get sessionId() {\n if (this.session) {\n return this.session.session.id;\n }\n return null;\n }\n\n get resource() {\n return {\n attributes: {\n ...(this.options.resource || {}),\n 'rollbar.environment':\n this.options.payload?.environment ?? this.options.environment,\n },\n };\n }\n\n get scope() {\n return {\n name: 'rollbar-browser-js',\n version: this.options.version,\n };\n }\n\n idGen(bytes = 16) {\n return id.gen(bytes);\n }\n\n createTracer() {\n this.contextManager = new ContextManager();\n this.exporter = new SpanExporter(this.api, this.options);\n this.spanProcessor = new SpanProcessor(this.exporter, this.options.tracing);\n this.tracer = new Tracer(this, this.spanProcessor);\n }\n\n getTracer() {\n return this.tracer;\n }\n\n addSpanTransform(transformFn) {\n this.spanProcessor.addTransform(transformFn);\n }\n\n getSpan(context = this.contextManager.active()) {\n return context.getValue(SPAN_KEY);\n }\n\n setSpan(context = this.contextManager.active(), span) {\n return context.setValue(SPAN_KEY, span);\n }\n\n startSpan(name, options = {}, context = this.contextManager.active()) {\n return this.tracer.startSpan(name, options, context);\n }\n\n with(context, fn, thisArg, ...args) {\n return this.contextManager.with(context, fn, thisArg, ...args);\n }\n\n withSpan(name, options, fn, thisArg) {\n const span = this.startSpan(name, options);\n return this.with(\n this.setSpan(this.contextManager.active(), span),\n fn,\n thisArg,\n span,\n );\n }\n}\n","import traverse from './utility/traverse.js';\nimport * as _ from './utility.js';\n\nfunction raw(payload, jsonBackup) {\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction selectFrames(frames, range) {\n var len = frames.length;\n if (len > range * 2) {\n return frames.slice(0, range).concat(frames.slice(len - range));\n }\n return frames;\n}\n\nfunction truncateFrames(payload, jsonBackup, range) {\n range = typeof range === 'undefined' ? 30 : range;\n var body = payload.data.body;\n var frames;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (const trace of chain) {\n frames = trace.frames;\n frames = selectFrames(frames, range);\n trace.frames = frames;\n }\n } else if (body.trace) {\n frames = body.trace.frames;\n frames = selectFrames(frames, range);\n body.trace.frames = frames;\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction maybeTruncateValue(len, val) {\n if (!val) {\n return val;\n }\n if (val.length > len) {\n return val.slice(0, len - 3).concat('...');\n }\n return val;\n}\n\nfunction truncateStrings(len, payload, jsonBackup) {\n function truncator(k, v, seen) {\n switch (_.typeName(v)) {\n case 'string':\n return maybeTruncateValue(len, v);\n case 'object':\n case 'array':\n return traverse(v, truncator, seen);\n default:\n return v;\n }\n }\n payload = traverse(payload, truncator);\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction truncateTraceData(traceData) {\n if (traceData.exception) {\n delete traceData.exception.description;\n traceData.exception.message = maybeTruncateValue(\n 255,\n traceData.exception.message,\n );\n }\n traceData.frames = selectFrames(traceData.frames, 1);\n return traceData;\n}\n\nfunction minBody(payload, jsonBackup) {\n var body = payload.data.body;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (const [index, trace] of chain.entries()) {\n chain[index] = truncateTraceData(trace);\n }\n } else if (body.trace) {\n body.trace = truncateTraceData(body.trace);\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction needsTruncation(payload, maxSize) {\n return _.maxByteSize(payload) > maxSize;\n}\n\nfunction truncate(payload, jsonBackup, maxSize) {\n maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize;\n var strategies = [\n raw,\n truncateFrames,\n truncateStrings.bind(null, 1024),\n truncateStrings.bind(null, 512),\n truncateStrings.bind(null, 256),\n minBody,\n ];\n var strategy, results, result;\n\n while ((strategy = strategies.shift())) {\n results = strategy(payload, jsonBackup);\n payload = results[0];\n result = results[1];\n if (result.error || !needsTruncation(result.value, maxSize)) {\n return result;\n }\n }\n return result;\n}\n\nexport default {\n truncate,\n\n /* for testing */\n raw,\n truncateFrames,\n truncateStrings,\n maybeTruncateValue,\n};\n","import * as _ from './utility.js';\n\nfunction buildPayload(data) {\n if (!_.isType(data.context, 'string')) {\n var contextResult = _.stringify(data.context);\n if (contextResult.error) {\n data.context = \"Error: could not serialize 'context'\";\n } else {\n data.context = contextResult.value || '';\n }\n if (data.context.length > 255) {\n data.context = data.context.substr(0, 255);\n }\n }\n return {\n data: data,\n };\n}\n\nfunction getTransportFromOptions(options, defaults, url) {\n var hostname = defaults.hostname;\n var protocol = defaults.protocol;\n var port = defaults.port;\n var path = defaults.path;\n var search = defaults.search;\n var timeout = options.timeout;\n var transport = detectTransport(options);\n\n var proxy = options.proxy;\n if (options.endpoint) {\n var opts = url.parse(options.endpoint);\n hostname = opts.hostname;\n protocol = opts.protocol;\n port = opts.port;\n path = opts.pathname;\n search = opts.search;\n }\n return {\n timeout: timeout,\n hostname: hostname,\n protocol: protocol,\n port: port,\n path: path,\n search: search,\n proxy: proxy,\n transport: transport,\n };\n}\n\nfunction detectTransport(options) {\n var gWindow =\n (typeof window !== 'undefined' && window) ||\n (typeof self !== 'undefined' && self);\n var transport = options.defaultTransport || 'xhr';\n if (typeof gWindow.fetch === 'undefined') transport = 'xhr';\n if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch';\n return transport;\n}\n\nfunction transportOptions(transport, method) {\n var protocol = transport.protocol || 'https:';\n var port =\n transport.port ||\n (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined);\n var hostname = transport.hostname;\n var path = transport.path;\n var timeout = transport.timeout;\n var transportAPI = transport.transport;\n if (transport.search) {\n path = path + transport.search;\n }\n if (transport.proxy) {\n path = protocol + '//' + hostname + path;\n hostname = transport.proxy.host || transport.proxy.hostname;\n port = transport.proxy.port;\n protocol = transport.proxy.protocol || protocol;\n }\n return {\n timeout: timeout,\n protocol: protocol,\n hostname: hostname,\n path: path,\n port: port,\n method: method,\n transport: transportAPI,\n };\n}\n\nfunction appendPathToPath(base, path) {\n var baseTrailingSlash = /\\/$/.test(base);\n var pathBeginningSlash = /^\\//.test(path);\n\n if (baseTrailingSlash && pathBeginningSlash) {\n path = path.substring(1);\n } else if (!baseTrailingSlash && !pathBeginningSlash) {\n path = '/' + path;\n }\n\n return base + path;\n}\n\nexport {\n buildPayload,\n getTransportFromOptions,\n transportOptions,\n appendPathToPath,\n};\n","import * as helpers from './apiUtility.js';\nimport { stringify, merge } from './utility.js';\n\nconst defaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/item/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\nconst OTLPDefaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/session/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\n/**\n * Api encapsulates methods of communicating with the Rollbar API. It is a\n * standard interface with some parts implemented differently for server or\n * browser contexts. It is an object that should be instantiated when used so\n * it can contain non-global options that may be different for another instance\n * of RollbarApi.\n */\nclass Api {\n /**\n * @param {Object} options - Configuration supplied from the parent Rollbar instance.\n * @param {string} options.accessToken - Token used to authenticate API calls.\n * @param {string} [options.endpoint] - Optional fully qualified URL overriding\n * the default `https://api.rollbar.com/api/1/item`.\n * @param {Object} [options.proxy] - Optional proxy descriptor containing:\n * `host`/`hostname` (required), `port`, and `protocol`.\n * @param {Object} transport - Adapter implementing `post` and `postJsonPayload`.\n * @param {Object} urllib - Minimal URL helper used for option normalization.\n * @param {Object} truncation - Optional truncation helper for payload size enforcement.\n */\n constructor(options, transport, urllib, truncation) {\n this.options = options;\n this.transport = transport;\n this.url = urllib;\n this.truncation = truncation;\n this.accessToken = options.accessToken;\n this.transportOptions = _getTransport(options, urllib);\n this.OTLPTransportOptions = _getOTLPTransport(options, urllib);\n }\n\n /**\n * Wraps transport.post in a Promise to support async/await\n *\n * @param {Object} options - Options for the API request\n * @param {string} options.accessToken - The access token for authentication\n * @param {Object} options.transportOptions - Options for the transport\n * @param {Object} options.payload - The data payload to send\n * @returns {Promise} A promise that resolves with the response or rejects with an error\n * @private\n */\n _postPromise({ accessToken, options, payload, headers }) {\n return new Promise((resolve, reject) => {\n this.transport.post({\n accessToken,\n options,\n payload,\n headers,\n callback: (err, resp) => (err ? reject(err) : resolve(resp)),\n });\n });\n }\n\n /**\n *\n * @param data\n * @param callback\n */\n postItem(data, callback) {\n const options = helpers.transportOptions(this.transportOptions, 'POST');\n const payload = helpers.buildPayload(data);\n\n // ensure the network request is scheduled after the current tick.\n setTimeout(() => {\n this.transport.post({\n accessToken: this.accessToken,\n options,\n payload,\n callback,\n });\n }, 0);\n }\n\n /**\n * Posts spans to the Rollbar API using the session endpoint\n *\n * @param {Array} payload - The spans to send\n * @returns {Promise} A promise that resolves with the API response\n */\n async postSpans(payload, headers = {}) {\n const options = helpers.transportOptions(this.OTLPTransportOptions, 'POST');\n\n return this._postPromise({\n accessToken: this.accessToken,\n options,\n payload,\n headers,\n });\n }\n\n /**\n *\n * @param data\n * @param callback\n */\n buildJsonPayload(data, callback) {\n const payload = helpers.buildPayload(data);\n\n let stringifyResult;\n if (this.truncation) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = stringify(payload);\n }\n\n if (stringifyResult.error) {\n if (callback) {\n callback(stringifyResult.error);\n }\n return null;\n }\n\n return stringifyResult.value;\n }\n\n /**\n *\n * @param jsonPayload\n * @param callback\n */\n postJsonPayload(jsonPayload, callback) {\n const transportOptions = helpers.transportOptions(\n this.transportOptions,\n 'POST',\n );\n this.transport.postJsonPayload(\n this.accessToken,\n transportOptions,\n jsonPayload,\n callback,\n );\n }\n\n configure(options) {\n const oldOptions = this.options;\n this.options = merge(oldOptions, options);\n this.transportOptions = _getTransport(this.options, this.url);\n this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url);\n if (this.options.accessToken !== undefined) {\n this.accessToken = this.options.accessToken;\n }\n return this;\n }\n}\n\nfunction _getTransport(options, url) {\n return helpers.getTransportFromOptions(options, defaultOptions, url);\n}\n\nfunction _getOTLPTransport(options, url) {\n options = { ...options, endpoint: options.tracing?.endpoint };\n return helpers.getTransportFromOptions(options, OTLPDefaultOptions, url);\n}\n\nexport default Api;\n","/**\n * Default options shared across platforms\n */\nexport const version = '3.0.0';\nexport const endpoint = 'api.rollbar.com/api/1/item/';\nexport const logLevel = 'debug';\nexport const reportLevel = 'debug';\nexport const uncaughtErrorLevel = 'error';\nexport const maxItems = 0;\nexport const itemsPerMin = 60;\n\nexport const commonScrubFields = [\n 'pw',\n 'pass',\n 'passwd',\n 'password',\n 'secret',\n 'confirm_password',\n 'confirmPassword',\n 'password_confirmation',\n 'passwordConfirmation',\n 'access_token',\n 'accessToken',\n 'X-Rollbar-Access-Token',\n 'secret_key',\n 'secretKey',\n 'secretToken',\n];\n\nexport const apiScrubFields = [\n 'api_key',\n 'authenticity_token',\n 'oauth_token',\n 'token',\n 'user_session_secret',\n];\n\nexport const requestScrubFields = [\n 'request.session.csrf',\n 'request.session._csrf',\n 'request.params._csrf',\n 'request.cookie',\n 'request.cookies',\n];\n\nexport const commonScrubHeaders = [\n 'authorization',\n 'www-authorization',\n 'http_authorization',\n 'omniauth.auth',\n 'cookie',\n 'oauth-access-token',\n 'x-access-token',\n 'x_csrf_token',\n 'http_x_csrf_token',\n 'x-csrf-token',\n];\n\n// For backward compatibility with default export\nexport default {\n version,\n endpoint,\n logLevel,\n reportLevel,\n uncaughtErrorLevel,\n maxItems,\n itemsPerMin,\n};\n","const FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\nfunction parse(error, options) {\n if (typeof error.stacktrace !== \"undefined\" || typeof error[\"opera#sourceloc\"] !== \"undefined\")\n return parseOpera(error, options);\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIE(error, options);\n else if (error.stack)\n return parseFFOrSafari(error, options);\n else if (options?.allowEmpty)\n return [];\n else\n throw new Error(\"Cannot parse given Error object\");\n}\nfunction parseStack(stackString, options) {\n if (stackString.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIeString(stackString, options);\n else\n return parseFFOrSafariString(stackString, options);\n}\nfunction extractLocation(urlLike) {\n if (!urlLike.includes(\":\"))\n return [urlLike, undefined, undefined];\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n const parts = regExp.exec(urlLike.replace(/[()]/g, \"\"));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n}\nfunction applySlice(lines, options) {\n if (options && options.slice != null) {\n if (Array.isArray(options.slice))\n return lines.slice(options.slice[0], options.slice[1]);\n return lines.slice(0, options.slice);\n }\n return lines;\n}\nfunction parseV8OrIE(error, options) {\n return parseV8OrIeString(error.stack, options);\n}\nfunction parseV8OrIeString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\"(eval \")) {\n line = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(,.*$)/g, \"\");\n }\n let sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\").replace(/^.*?\\s+/, \"\");\n const location = sanitizedLine.match(/ (\\(.+\\)$)/);\n sanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n const locationParts = extractLocation(location ? location[1] : sanitizedLine);\n const functionName = location && sanitizedLine || undefined;\n const fileName = [\"eval\", \"\"].includes(locationParts[0]) ? undefined : locationParts[0];\n return {\n function: functionName,\n file: fileName,\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\nfunction parseFFOrSafari(error, options) {\n return parseFFOrSafariString(error.stack, options);\n}\nfunction parseFFOrSafariString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\" > eval\"))\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, \":$1\");\n if (!line.includes(\"@\") && !line.includes(\":\")) {\n return {\n function: line\n };\n } else {\n const functionNameRegex = /(([^\\n\\r\"\\u2028\\u2029]*\".[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*(?:@[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*)*(?:[\\n\\r\\u2028\\u2029][^@]*)?)?[^@]*)@/;\n const matches = line.match(functionNameRegex);\n const functionName = matches && matches[1] ? matches[1] : undefined;\n const locationParts = extractLocation(line.replace(functionNameRegex, \"\"));\n return {\n function: functionName,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n }\n });\n}\nfunction parseOpera(e, options) {\n if (!e.stacktrace || e.message.includes(\"\\n\") && e.message.split(\"\\n\").length > e.stacktrace.split(\"\\n\").length)\n return parseOpera9(e);\n else if (!e.stack)\n return parseOpera10(e);\n else\n return parseOpera11(e, options);\n}\nfunction parseOpera9(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n const lines = e.message.split(\"\\n\");\n const result = [];\n for (let i = 2, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n file: match[2],\n line: +match[1],\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera10(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n const lines = e.stacktrace.split(\"\\n\");\n const result = [];\n for (let i = 0, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n function: match[3] || undefined,\n file: match[2],\n line: match[1] ? +match[1] : undefined,\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera11(error, options) {\n const filtered = applySlice(\n // @ts-expect-error missing stack property\n error.stack.split(\"\\n\").filter((line) => {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }),\n options\n );\n return filtered.map((line) => {\n const tokens = line.split(\"@\");\n const locationParts = extractLocation(tokens.pop());\n const functionCall = tokens.shift() || \"\";\n const functionName = functionCall.replace(//, \"$2\").replace(/\\([^)]*\\)/g, \"\") || undefined;\n let argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/))\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, \"$1\");\n const args = argsRaw === undefined || argsRaw === \"[arguments not available]\" ? undefined : argsRaw.split(\",\");\n return {\n function: functionName,\n args,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\n\nexport { extractLocation, parse, parseFFOrSafari, parseFFOrSafariString, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseStack, parseV8OrIE, parseV8OrIeString };\n","import { parse as parse$1, parseV8OrIE as parseV8OrIE$1, parseFFOrSafari as parseFFOrSafari$1, parseOpera as parseOpera$1, parseOpera9 as parseOpera9$1, parseOpera10 as parseOpera10$1, parseOpera11 as parseOpera11$1 } from './lite.mjs';\nexport { extractLocation } from './lite.mjs';\n\nfunction stackframesLiteToStackframes(liteStackframes) {\n return liteStackframes.map((liteStackframe) => {\n return {\n functionName: liteStackframe.function,\n args: liteStackframe.args,\n fileName: liteStackframe.file,\n lineNumber: liteStackframe.line,\n columnNumber: liteStackframe.col,\n source: liteStackframe.raw\n };\n });\n}\nfunction parse(error, options) {\n return stackframesLiteToStackframes(parse$1(error, options));\n}\nfunction parseV8OrIE(error) {\n return stackframesLiteToStackframes(parseV8OrIE$1(error));\n}\nfunction parseFFOrSafari(error) {\n return stackframesLiteToStackframes(parseFFOrSafari$1(error));\n}\nfunction parseOpera(e) {\n return stackframesLiteToStackframes(parseOpera$1(e));\n}\nfunction parseOpera9(e) {\n return stackframesLiteToStackframes(parseOpera9$1(e));\n}\nfunction parseOpera10(e) {\n return stackframesLiteToStackframes(parseOpera10$1(e));\n}\nfunction parseOpera11(error) {\n return stackframesLiteToStackframes(parseOpera11$1(error));\n}\n\nexport { parse, parseFFOrSafari, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseV8OrIE };\n","import { parse as parseErrorStack } from 'error-stack-parser-es';\n\nvar UNKNOWN_FUNCTION = '?';\nvar ERR_CLASS_REGEXP = new RegExp(\n '^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): ',\n);\n\nfunction guessFunctionName() {\n return UNKNOWN_FUNCTION;\n}\n\nfunction gatherContext() {\n return null;\n}\n\nfunction Frame(stackFrame) {\n var data = {};\n\n data._stackFrame = stackFrame;\n\n data.url = stackFrame.fileName;\n data.line = stackFrame.lineNumber;\n data.func = stackFrame.functionName;\n data.column = stackFrame.columnNumber;\n data.args = stackFrame.args;\n\n data.context = gatherContext();\n\n return data;\n}\n\nfunction Stack(exception, skip) {\n function getStack() {\n var parserStack = [];\n\n skip = skip || 0;\n\n try {\n parserStack = parseErrorStack(exception);\n } catch (_e) {\n parserStack = [];\n }\n\n var stack = [];\n\n for (var i = skip; i < parserStack.length; i++) {\n stack.push(new Frame(parserStack[i]));\n }\n\n return stack;\n }\n\n return {\n stack: getStack(),\n message: exception.message,\n name: _mostSpecificErrorName(exception),\n rawStack: exception.stack,\n rawException: exception,\n };\n}\n\nfunction parse(e, skip) {\n var err = e;\n\n if (err.nested || err.cause) {\n var traceChain = [];\n while (err) {\n traceChain.push(new Stack(err, skip));\n err = err.nested || err.cause;\n\n skip = 0; // Only apply skip value to primary error\n }\n\n // Return primary error with full trace chain attached.\n traceChain[0].traceChain = traceChain;\n return traceChain[0];\n } else {\n return new Stack(err, skip);\n }\n}\n\nfunction guessErrorClass(errMsg) {\n if (!errMsg || !errMsg.match) {\n return ['Unknown error. There was no error message to display.', ''];\n }\n var errClassMatch = errMsg.match(ERR_CLASS_REGEXP);\n var errClass = '(unknown)';\n\n if (errClassMatch) {\n errClass = errClassMatch[errClassMatch.length - 1];\n errMsg = errMsg.replace(\n (errClassMatch[errClassMatch.length - 2] || '') + errClass + ':',\n '',\n );\n errMsg = errMsg.replace(/(^[\\s]+|[\\s]+$)/g, '');\n }\n return [errClass, errMsg];\n}\n\n// * Prefers any value over an empty string\n// * Prefers any value over 'Error' where possible\n// * Prefers name over constructor.name when both are more specific than 'Error'\nfunction _mostSpecificErrorName(error) {\n var name = error.name && error.name.length && error.name;\n var constructorName =\n error.constructor.name &&\n error.constructor.name.length &&\n error.constructor.name;\n\n if (!name || !constructorName) {\n return name || constructorName;\n }\n\n if (name === 'Error') {\n return constructorName;\n }\n return name;\n}\n\nexport default {\n guessFunctionName,\n guessErrorClass,\n gatherContext,\n parse,\n Stack,\n Frame,\n};\n","import * as _ from './utility.js';\n\nfunction checkLevel(item, settings) {\n var level = item.level;\n var levelVal = _.LEVELS[level] || 0;\n var reportLevel = settings.reportLevel;\n var reportLevelVal = _.LEVELS[reportLevel] || 0;\n\n if (levelVal < reportLevelVal) {\n return false;\n }\n return true;\n}\n\nfunction userCheckIgnore(logger) {\n return function (item, settings) {\n var isUncaught = Boolean(item._isUncaught);\n delete item._isUncaught;\n var args = item._originalArgs;\n delete item._originalArgs;\n try {\n if (_.isFunction(settings.onSendCallback)) {\n settings.onSendCallback(isUncaught, args, item);\n }\n } catch (e) {\n settings.onSendCallback = null;\n logger.error('Error while calling onSendCallback, removing', e);\n }\n try {\n if (\n _.isFunction(settings.checkIgnore) &&\n settings.checkIgnore(isUncaught, args, item)\n ) {\n return false;\n }\n } catch (e) {\n settings.checkIgnore = null;\n logger.error('Error while calling custom checkIgnore(), removing', e);\n }\n return true;\n };\n}\n\nfunction urlIsNotBlockListed(logger) {\n return function (item, settings) {\n return !urlIsOnAList(item, settings, 'blocklist', logger);\n };\n}\n\nfunction urlIsSafeListed(logger) {\n return function (item, settings) {\n return urlIsOnAList(item, settings, 'safelist', logger);\n };\n}\n\nfunction matchFrames(trace, list, block) {\n if (!trace) {\n return !block;\n }\n\n var frames = trace.frames;\n\n if (!frames || frames.length === 0) {\n return !block;\n }\n\n var frame, filename, url, urlRegex;\n var listLength = list.length;\n var frameLength = frames.length;\n for (var i = 0; i < frameLength; i++) {\n frame = frames[i];\n filename = frame.filename;\n\n if (!_.isType(filename, 'string')) {\n return !block;\n }\n\n for (var j = 0; j < listLength; j++) {\n url = list[j];\n urlRegex = new RegExp(url);\n\n if (urlRegex.test(filename)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction urlIsOnAList(item, settings, safeOrBlock, logger) {\n // safelist is the default\n var block = false;\n if (safeOrBlock === 'blocklist') {\n block = true;\n }\n\n var list, traces;\n try {\n list = block ? settings.hostBlockList : settings.hostSafeList;\n traces = _.get(item, 'body.trace_chain') || [_.get(item, 'body.trace')];\n\n // These two checks are important to come first as they are defaults\n // in case the list is missing or the trace is missing or not well-formed\n if (!list || list.length === 0) {\n return !block;\n }\n if (traces.length === 0 || !traces[0]) {\n return !block;\n }\n\n var tracesLength = traces.length;\n for (var i = 0; i < tracesLength; i++) {\n if (matchFrames(traces[i], list, block)) {\n return true;\n }\n }\n } catch (\n e\n /* istanbul ignore next */\n ) {\n if (block) {\n settings.hostBlockList = null;\n } else {\n settings.hostSafeList = null;\n }\n var listName = block ? 'hostBlockList' : 'hostSafeList';\n logger.error(\n \"Error while reading your configuration's \" +\n listName +\n ' option. Removing custom ' +\n listName +\n '.',\n e,\n );\n return !block;\n }\n return false;\n}\n\nfunction messageIsIgnored(logger) {\n return function (item, settings) {\n var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages;\n\n try {\n messageIsIgnored = false;\n ignoredMessages = settings.ignoredMessages;\n\n if (!ignoredMessages || ignoredMessages.length === 0) {\n return true;\n }\n\n messages = messagesFromItem(item);\n\n if (messages.length === 0) {\n return true;\n }\n\n len = ignoredMessages.length;\n for (i = 0; i < len; i++) {\n rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi');\n\n for (j = 0; j < messages.length; j++) {\n messageIsIgnored = rIgnoredMessage.test(messages[j]);\n\n if (messageIsIgnored) {\n return false;\n }\n }\n }\n } catch (\n _e\n /* istanbul ignore next */\n ) {\n settings.ignoredMessages = null;\n logger.error(\n \"Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages.\",\n );\n }\n\n return true;\n };\n}\n\nfunction messagesFromItem(item) {\n var body = item.body;\n var messages = [];\n\n // The payload schema only allows one of trace_chain, message, or trace.\n // However, existing test cases are based on having both trace and message present.\n // So here we preserve the ability to collect strings from any combination of these keys.\n if (body.trace_chain) {\n var traceChain = body.trace_chain;\n for (const trace of traceChain) {\n messages.push(_.get(trace, 'exception.message'));\n }\n }\n if (body.trace) {\n messages.push(_.get(body, 'trace.exception.message'));\n }\n if (body.message) {\n messages.push(_.get(body, 'message.body'));\n }\n return messages;\n}\n\nexport {\n checkLevel,\n userCheckIgnore,\n urlIsNotBlockListed,\n urlIsSafeListed,\n messageIsIgnored,\n};\n","import { merge, isFunction } from './utility.js';\n\n/*\n * Notifier - delegates between the client exposed API, the chain of transforms\n * necessary to turn an item into something that can be sent to Rollbar, and the\n * queue which handles the communcation with the Rollbar API servers.\n */\nexport default class Notifier {\n /**\n *\n * @param {Object} queue - an object that conforms to the interface:\n * `addItem(item, callback)`\n * @param {Object} options - an object representing the options to be set for\n * this notifier, this should have any defaults already set by the caller\n */\n constructor(queue, options) {\n this.queue = queue;\n this.options = options;\n this.transforms = [];\n this.diagnostic = {};\n }\n\n /**\n * configure - updates the options for this notifier with the passed in object\n *\n * @param {Object} options - an object which gets merged with the current\n * options set on this notifier\n * @returns this\n */\n configure(options) {\n this.queue?.configure(options);\n const oldOptions = this.options;\n this.options = merge(oldOptions, options);\n return this;\n }\n\n /**\n * Adds a transform onto the end of the queue of transforms for this notifier\n *\n * @param {Function} transform - a function which takes three arguments:\n * - item: An Object representing the data to eventually be sent to Rollbar\n * - options: The current value of the options for this notifier\n * - callback: `function(err: (Null|Error), item: (Null|Object))` the\n * transform must call this callback with a null value for error if it\n * wants the processing chain to continue, otherwise with an error to\n * terminate the processing. The item should be the updated item after\n * this transform is finished modifying it.\n */\n addTransform(transform) {\n if (isFunction(transform)) {\n this.transforms.push(transform);\n }\n return this;\n }\n\n /**\n * The internal log function which applies the configured transforms and then\n * pushes onto the queue to be sent to the backend.\n *\n * @param {Object} item - An object with the following structure:\n * - message [String] - An optional string to be sent to rollbar\n * - error [Error] - An optional error\n * @param {Function} callback - A function of type `function(err, resp)` which\n * will be called with exactly one null argument and one non-null argument.\n * The callback will be called once, either during the transform stage if\n * an error occurs inside a transform, or in response to the communication\n * with the backend. The second argument will be the response from the\n * backend in case of success.\n */\n log(item, callback) {\n callback = isFunction(callback) ? callback : () => {};\n\n if (!this.options.enabled) {\n return callback(new Error('Rollbar is not enabled'), null);\n }\n\n this.queue.addPendingItem(item);\n const originalError = item.err;\n this._applyTransforms(item, (err, i) => {\n if (err) {\n this.queue.removePendingItem(item);\n return callback(err, null);\n }\n this.queue.addItem(i, callback, originalError, item);\n });\n }\n\n /* Internal */\n\n /**\n * Applies the transforms that have been added to this notifier sequentially.\n * See `addTransform` for more information.\n *\n * @param {Object} item - An item to be transformed\n * @param {Function} callback - A function of type `function(err, item)` which\n * will be called with a non-null error and a null item in the case of a\n * transform failure, or a null error and non-null item after all\n * transforms have been applied.\n */\n _applyTransforms(item, callback) {\n let transformIndex = -1;\n const transformsLength = this.transforms.length;\n const transforms = this.transforms;\n const options = this.options;\n\n const next = (err, i) => {\n if (err) {\n callback(err, null);\n return;\n }\n\n transformIndex++;\n\n if (transformIndex === transformsLength) {\n callback(null, i);\n return;\n }\n\n transforms[transformIndex](i, options, next);\n };\n\n next(null, item);\n }\n}\n","import * as _ from './utility.js';\n\n/**\n * Queue - an object which handles which handles a queue of items to be sent to Rollbar.\n * This object handles rate limiting via a passed in rate limiter, retries based on connection\n * errors, and filtering of items based on a set of configurable predicates. The communication to\n * the backend is performed via a given API object.\n */\nclass Queue {\n /**\n * @param rateLimiter - An object which conforms to the interface\n * `rateLimiter.shouldSend(item) -> bool`\n * @param api - An object which conforms to the interface\n * `api.postItem(payload, function(err, response))`\n * @param logger - An object used to log verbose messages if desired\n * @param options - see `Queue.prototype.configure`\n * @param replay - Optional `Replay` for coordinating session replay with error occurrences\n */\n constructor(rateLimiter, api, logger, options, replay) {\n this.rateLimiter = rateLimiter;\n this.api = api;\n this.logger = logger;\n this.options = options;\n this.replay = replay;\n this.predicates = [];\n this.pendingItems = [];\n this.pendingRequests = [];\n this.retryQueue = [];\n this.retryHandle = null;\n this.waitCallback = null;\n this.waitIntervalID = null;\n }\n\n /**\n * configure - updates the options this queue uses\n *\n * @param options\n */\n configure(options) {\n this.api?.configure(options);\n const oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n return this;\n }\n\n /**\n * addPredicate - adds a predicate to the end of the list of predicates for this queue\n *\n * @param predicate - function(item, options) -> (bool|{err: Error})\n * Returning true means that this predicate passes and the item is okay to go on the queue\n * Returning false means do not add the item to the queue, but it is not an error\n * Returning {err: Error} means do not add the item to the queue, and the given error explains why\n * Returning {err: undefined} is equivalent to returning true but don't do that\n */\n addPredicate(predicate) {\n if (_.isFunction(predicate)) {\n this.predicates.push(predicate);\n }\n return this;\n }\n\n addPendingItem(item) {\n this.pendingItems.push(item);\n }\n\n removePendingItem(item) {\n const idx = this.pendingItems.indexOf(item);\n if (idx !== -1) {\n this.pendingItems.splice(idx, 1);\n }\n }\n\n /**\n * addItem - Send an item to the Rollbar API if all of the predicates are satisfied\n *\n * @param item - Item instance with the payload to send to the backend\n * @param callback - function(error, repsonse) which will be called with the response from the API\n * in the case of a success, otherwise response will be null and error will have a value. If both\n * error and response are null then the item was stopped by a predicate which did not consider this\n * to be an error condition, but nonetheless did not send the item to the API.\n * @param originalError - The original error before any transformations that is to be logged if any\n * @param originalItem - The original item before transforms, used in pendingItems queue\n */\n addItem(item, callback, originalError, originalItem) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {\n return;\n };\n }\n const data = item.data;\n const predicateResult = this._applyPredicates(data);\n if (predicateResult.stop) {\n this.removePendingItem(originalItem);\n callback(predicateResult.err);\n return;\n }\n this._maybeLog(data, originalError);\n this.removePendingItem(originalItem);\n if (!this.options.transmit) {\n callback(new Error('Transmit disabled'));\n return;\n }\n\n if (this.replay && data.body) {\n item.replayId = this.replay.capture(null, data.uuid, {\n type: 'occurrence',\n level: item.level,\n });\n\n if (item.replayId) {\n _.addItemAttributes(item.data, [\n { key: 'replay_id', value: item.replayId },\n ]);\n }\n }\n\n this.pendingRequests.push(data);\n try {\n this._makeApiRequest(data, (err, resp, headers) => {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers);\n }\n\n callback(err, resp);\n });\n } catch (err) {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay?.discard(item.replayId);\n }\n\n callback(err);\n }\n }\n\n /**\n * wait - Stop any further errors from being added to the queue, and get called back when all items\n * currently processing have finished sending to the backend.\n *\n * @param callback - function() called when all pending items have been sent\n */\n wait(callback) {\n if (!_.isFunction(callback)) {\n return;\n }\n this.waitCallback = callback;\n if (this._maybeCallWait()) {\n return;\n }\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitIntervalID = setInterval(() => {\n this._maybeCallWait();\n }, 500);\n }\n\n /**\n * Sequentially applies the predicates that have been added to the queue to the\n * given item with the currently configured options.\n *\n * @param item - An item in the queue\n * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue,\n * the error value should be passed up to a callbak if we are stopping.\n */\n _applyPredicates(item) {\n let p = null;\n for (let i = 0, len = this.predicates.length; i < len; i++) {\n p = this.predicates[i](item, this.options);\n if (!p || p.err !== undefined) {\n return { stop: true, err: p.err };\n }\n }\n return { stop: false, err: null };\n }\n\n /**\n * Send an item to Rollbar, callback when done, if there is an error make an\n * effort to retry if we are configured to do so.\n *\n * @param item - an item ready to send to the backend\n * @param callback - function(err, response)\n */\n _makeApiRequest(item, callback) {\n const rateLimitResponse = this.rateLimiter.shouldSend(item);\n if (rateLimitResponse.shouldSend) {\n this.api.postItem(item, (err, resp, headers) => {\n if (err) {\n this._maybeRetry(err, item, callback);\n } else {\n callback(err, resp, headers);\n }\n });\n } else if (rateLimitResponse.error) {\n callback(rateLimitResponse.error);\n } else {\n this.api.postItem(rateLimitResponse.payload, callback);\n }\n }\n\n // These are errors basically mean there is no internet connection\n static RETRIABLE_ERRORS = [\n 'ECONNRESET',\n 'ENOTFOUND',\n 'ESOCKETTIMEDOUT',\n 'ETIMEDOUT',\n 'ECONNREFUSED',\n 'EHOSTUNREACH',\n 'EPIPE',\n 'EAI_AGAIN',\n ];\n\n /**\n * Given the error returned by the API, decide if we should retry or just callback\n * with the error.\n *\n * @param err - an error returned by the API transport\n * @param item - the item that was trying to be sent when this error occured\n * @param callback - function(err, response)\n */\n _maybeRetry(err, item, callback) {\n let shouldRetry = false;\n if (this.options.retryInterval) {\n for (let i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) {\n if (err.code === Queue.RETRIABLE_ERRORS[i]) {\n shouldRetry = true;\n break;\n }\n }\n if (shouldRetry && _.isFiniteNumber(this.options.maxRetries)) {\n item.retries = item.retries ? item.retries + 1 : 1;\n if (item.retries > this.options.maxRetries) {\n shouldRetry = false;\n }\n }\n }\n if (shouldRetry) {\n this._retryApiRequest(item, callback);\n } else {\n callback(err);\n }\n }\n\n /**\n * Add an item and a callback to a queue and possibly start a timer to process\n * that queue based on the retryInterval in the options for this queue.\n *\n * @param item - an item that failed to send due to an error we deem retriable\n * @param callback - function(err, response)\n */\n _retryApiRequest(item, callback) {\n this.retryQueue.push({ item, callback });\n\n if (!this.retryHandle) {\n this.retryHandle = setInterval(() => {\n while (this.retryQueue.length) {\n const retryObject = this.retryQueue.shift();\n this._makeApiRequest(retryObject.item, retryObject.callback);\n }\n }, this.options.retryInterval);\n }\n }\n\n /**\n * Removes the item from the pending request queue, this queue is used to\n * enable to functionality of providing a callback that clients can pass to `wait` to be notified\n * when the pending request queue has been emptied. This must be called when the API finishes\n * processing this item. If a `wait` callback is configured, it is called by this function.\n *\n * @param item - the item previously added to the pending request queue\n */\n _dequeuePendingRequest(item) {\n const idx = this.pendingRequests.indexOf(item);\n if (idx !== -1) {\n this.pendingRequests.splice(idx, 1);\n this._maybeCallWait();\n }\n }\n\n _maybeLog(data, originalError) {\n if (this.logger && this.options.verbose) {\n let message =\n originalError ||\n _.get(data, 'body.trace.exception.message') ||\n _.get(data, 'body.trace_chain.0.exception.message');\n if (message) {\n this.logger.error(message);\n return;\n }\n message = _.get(data, 'body.message.body');\n if (message) {\n this.logger.log(message);\n }\n }\n }\n\n _maybeCallWait() {\n if (\n _.isFunction(this.waitCallback) &&\n this.pendingItems.length === 0 &&\n this.pendingRequests.length === 0\n ) {\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitCallback();\n return true;\n }\n return false;\n }\n}\n\nexport default Queue;\n","/*\n * RateLimiter - encapsulates the logic for counting items sent to Rollbar.\n *\n * @param options - the same options that are accepted by configureGlobal offered as a convenience\n */\nclass RateLimiter {\n static globalSettings = {\n startTime: Date.now(),\n maxItems: undefined,\n itemsPerMinute: undefined,\n };\n\n constructor(options = {}) {\n this.startTime = Date.now();\n this.counter = 0;\n this.perMinCounter = 0;\n this.platform = null;\n this.platformOptions = {};\n this.configureGlobal(options);\n }\n\n /*\n * configureGlobal - set the global rate limiter options\n *\n * @param options - Only the following values are recognized:\n * startTime: a timestamp of the form returned by (new Date()).getTime()\n * maxItems: the maximum items\n * itemsPerMinute: the max number of items to send in a given minute\n */\n configureGlobal(options = {}) {\n const { startTime, maxItems, itemsPerMinute } = options;\n\n if (startTime !== undefined) {\n RateLimiter.globalSettings.startTime = startTime;\n }\n if (maxItems !== undefined) {\n RateLimiter.globalSettings.maxItems = maxItems;\n }\n if (itemsPerMinute !== undefined) {\n RateLimiter.globalSettings.itemsPerMinute = itemsPerMinute;\n }\n }\n\n /*\n * shouldSend - determine if we should send a given item based on rate limit settings\n *\n * @param item - the item we are about to send\n * @returns An object with the following structure:\n * error: (Error|null)\n * shouldSend: bool\n * payload: (Object|null)\n * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and\n * exactly one of error or payload will be non-null. If error is non-null, the returned Error will\n * describe the situation, but it means that we were already over a rate limit (either globally or\n * per minute) when this item was checked. If error is null, and therefore payload is non-null, it\n * means this item put us over the global rate limit and the payload should be sent to Rollbar in\n * place of the passed in item.\n */\n shouldSend(item, now = Date.now()) {\n const elapsedTime = now - this.startTime;\n if (elapsedTime < 0 || elapsedTime >= 60000) {\n this.startTime = now;\n this.perMinCounter = 0;\n }\n\n const globalRateLimit = RateLimiter.globalSettings.maxItems;\n const globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute;\n\n if (checkRate(item, globalRateLimit, this.counter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n `${globalRateLimit} max items reached`,\n false,\n );\n }\n\n if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n `${globalRateLimitPerMin} items per minute reached`,\n false,\n );\n }\n\n this.counter += 1;\n this.perMinCounter += 1;\n\n const underGlobalLimit = !checkRate(item, globalRateLimit, this.counter);\n const perMinute = underGlobalLimit;\n const shouldSend =\n underGlobalLimit &&\n !checkRate(item, globalRateLimitPerMin, this.perMinCounter);\n\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n null,\n shouldSend,\n globalRateLimit,\n globalRateLimitPerMin,\n perMinute,\n );\n }\n\n setPlatformOptions(platform, options) {\n this.platform = platform;\n this.platformOptions = options;\n }\n}\n\n/* Helpers */\n\nfunction checkRate(item, limit, counter) {\n return !item.ignoreRateLimit && limit >= 1 && counter > limit;\n}\n\nfunction shouldSendValue(\n platform,\n options,\n error,\n shouldSend,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n let payload = null;\n const errorResult = error ? new Error(error) : null;\n\n if (!errorResult && !shouldSend) {\n payload = rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n );\n }\n\n return { error: errorResult, shouldSend, payload };\n}\n\nfunction rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n const environment =\n options.environment || (options.payload && options.payload.environment);\n const msg = perMinute\n ? 'item per minute limit reached, ignoring errors until timeout'\n : 'maxItems has been hit, ignoring errors until reset.';\n const item = {\n body: {\n message: {\n body: msg,\n extra: {\n maxItems: globalRateLimit,\n itemsPerMinute: limitPerMin,\n },\n },\n },\n language: 'javascript',\n environment: environment,\n notifier: {\n version:\n (options.notifier && options.notifier.version) || options.version,\n },\n };\n if (platform === 'browser') {\n item.platform = 'browser';\n item.framework = 'browser-js';\n item.notifier.name = 'rollbar-browser-js';\n } else if (platform === 'server') {\n item.framework = options.framework || 'node-js';\n item.notifier.name = options.notifier.name;\n } else if (platform === 'react-native') {\n item.framework = options.framework || 'react-native';\n item.notifier.name = options.notifier.name;\n }\n return item;\n}\n\nexport default RateLimiter;\n","import Notifier from './notifier.js';\nimport Queue from './queue.js';\nimport RateLimiter from './rateLimiter.js';\nimport * as _ from './utility.js';\n\n/*\n * Rollbar - the interface to Rollbar\n *\n * @param options\n * @param api\n * @param logger\n */\nfunction Rollbar(options, api, logger, telemeter, tracing, replay, platform) {\n this.options = _.merge(options);\n this.logger = logger;\n Rollbar.rateLimiter.configureGlobal(this.options);\n Rollbar.rateLimiter.setPlatformOptions(platform, this.options);\n this.api = api;\n this.queue = new Queue(\n Rollbar.rateLimiter,\n api,\n logger,\n this.options,\n replay,\n );\n\n this.tracing = tracing;\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is created\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier = new Notifier(this.queue, this.options);\n this.telemeter = telemeter;\n setStackTraceLimit(options);\n this.lastError = null;\n this.lastErrorHash = 'none';\n}\n\nvar defaultOptions = {\n maxItems: 0,\n itemsPerMinute: 60,\n};\n\nRollbar.rateLimiter = new RateLimiter(defaultOptions);\n\nRollbar.prototype.global = function (options) {\n Rollbar.rateLimiter.configureGlobal(options);\n return this;\n};\n\nRollbar.prototype.configure = function (options, payloadData) {\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.merge(oldOptions, options, payload);\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is configured\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier && this.notifier.configure(this.options);\n this.telemeter && this.telemeter.configure(this.options);\n setStackTraceLimit(options);\n this.global(this.options);\n\n if (validateTracer(options.tracer)) {\n this.tracer = options.tracer;\n }\n\n return this;\n};\n\nRollbar.prototype.log = function (item) {\n var level = this._defaultLogLevel();\n return this._log(level, item);\n};\n\nRollbar.prototype.debug = function (item) {\n this._log('debug', item);\n};\n\nRollbar.prototype.info = function (item) {\n this._log('info', item);\n};\n\nRollbar.prototype.warn = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.warning = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.error = function (item) {\n this._log('error', item);\n};\n\nRollbar.prototype.critical = function (item) {\n this._log('critical', item);\n};\n\nRollbar.prototype.wait = function (callback) {\n this.queue.wait(callback);\n};\n\nRollbar.prototype.captureEvent = function (type, metadata, level) {\n return this.telemeter && this.telemeter.captureEvent(type, metadata, level);\n};\n\nRollbar.prototype.captureDomContentLoaded = function (ts) {\n return this.telemeter && this.telemeter.captureDomContentLoaded(ts);\n};\n\nRollbar.prototype.captureLoad = function (ts) {\n return this.telemeter && this.telemeter.captureLoad(ts);\n};\n\nRollbar.prototype.buildJsonPayload = function (item) {\n return this.api.buildJsonPayload(item);\n};\n\nRollbar.prototype.sendJsonPayload = function (jsonPayload) {\n this.api.postJsonPayload(jsonPayload);\n};\n\n/* Internal */\n\nRollbar.prototype._log = function (defaultLevel, item) {\n var callback;\n if (item.callback) {\n callback = item.callback;\n delete item.callback;\n }\n if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) {\n if (callback) {\n var error = new Error('ignored identical item');\n error.item = item;\n callback(error);\n }\n return;\n }\n try {\n item.level = item.level || defaultLevel;\n\n this._addItemAttributes(item);\n\n // Legacy OpenTracing support\n this._addTracingInfo(item);\n\n const telemeter = this.telemeter;\n if (telemeter) {\n telemeter._captureRollbarItem(item);\n item.telemetryEvents = telemeter.copyEvents() || [];\n }\n\n this.notifier.log(item, callback);\n } catch (e) {\n if (callback) {\n callback(e);\n }\n this.logger.error(e);\n }\n};\n\nRollbar.prototype._addItemAttributes = function (item) {\n const span = this.tracing?.getSpan();\n\n const attributes = [\n { key: 'session_id', value: this.tracing?.sessionId },\n { key: 'span_id', value: span?.spanId },\n { key: 'trace_id', value: span?.traceId },\n ];\n if (item._isUncaught) {\n attributes.push({ key: 'is_uncaught', value: 'true' });\n }\n _.addItemAttributes(item.data, attributes);\n\n span?.addEvent('rollbar.occurrence', [\n { key: 'rollbar.occurrence.uuid', value: item.uuid },\n ]);\n};\n\nRollbar.prototype._defaultLogLevel = function () {\n return this.options.logLevel || 'debug';\n};\n\nRollbar.prototype._sameAsLastError = function (item) {\n if (!item._isUncaught) {\n return false;\n }\n var itemHash = generateItemHash(item);\n if (this.lastErrorHash === itemHash) {\n return true;\n }\n this.lastError = item.err;\n this.lastErrorHash = itemHash;\n return false;\n};\n\nRollbar.prototype._addTracingInfo = function (item) {\n // Tracer validation occurs in the constructor\n // or in the Rollbar.prototype.configure methods\n if (this.tracer) {\n // add rollbar occurrence uuid to span\n var span = this.tracer.scope().active();\n\n if (validateSpan(span)) {\n span.setTag('rollbar.error_uuid', item.uuid);\n span.setTag('rollbar.has_error', true);\n span.setTag('error', true);\n span.setTag(\n 'rollbar.item_url',\n `https://rollbar.com/item/uuid/?uuid=${item.uuid}`,\n );\n span.setTag(\n 'rollbar.occurrence_url',\n `https://rollbar.com/occurrence/uuid/?uuid=${item.uuid}`,\n );\n\n // add span ID & trace ID to occurrence\n var opentracingSpanId = span.context().toSpanId();\n var opentracingTraceId = span.context().toTraceId();\n\n if (item.custom) {\n item.custom.opentracing_span_id = opentracingSpanId;\n item.custom.opentracing_trace_id = opentracingTraceId;\n } else {\n item.custom = {\n opentracing_span_id: opentracingSpanId,\n opentracing_trace_id: opentracingTraceId,\n };\n }\n }\n }\n};\n\nfunction generateItemHash(item) {\n var message = item.message || '';\n var stack = (item.err || {}).stack || String(item.err);\n return message + '::' + stack;\n}\n\n// Node.js, Chrome, Safari, and some other browsers support this property\n// which globally sets the number of stack frames returned in an Error object.\n// If a browser can't use it, no harm done.\nfunction setStackTraceLimit(options) {\n if (options.stackTraceLimit) {\n Error.stackTraceLimit = options.stackTraceLimit;\n }\n}\n\n/**\n * Validate the Tracer object provided to the Client\n * is valid for our Opentracing use case.\n * @param {opentracer.Tracer} tracer\n */\nfunction validateTracer(tracer) {\n if (!tracer) {\n return false;\n }\n\n if (!tracer.scope || typeof tracer.scope !== 'function') {\n return false;\n }\n\n var scope = tracer.scope();\n\n if (!scope || !scope.active || typeof scope.active !== 'function') {\n return false;\n }\n\n return true;\n}\n\n/**\n * Validate the Span object provided\n * @param {opentracer.Span} span\n */\nfunction validateSpan(span) {\n if (!span || !span.context || typeof span.context !== 'function') {\n return false;\n }\n\n var spanContext = span.context();\n\n if (\n !spanContext ||\n !spanContext.toSpanId ||\n !spanContext.toTraceId ||\n typeof spanContext.toSpanId !== 'function' ||\n typeof spanContext.toTraceId !== 'function'\n ) {\n return false;\n }\n\n return true;\n}\n\nexport default Rollbar;\n","/**\n * Default tracing options\n */\nexport default {\n enabled: false,\n endpoint: 'api.rollbar.com/api/1/session/',\n};\n","import * as _ from './utility.js';\n\nfunction itemToPayload(item, options, callback) {\n if (item._isUncaught) {\n item.data._isUncaught = true;\n }\n if (item._originalArgs) {\n item.data._originalArgs = item._originalArgs;\n }\n callback(null, item);\n}\n\nfunction addPayloadOptions(item, options, callback) {\n var payloadOptions = options.payload || {};\n if (payloadOptions.body) {\n delete payloadOptions.body;\n }\n\n item.data = _.merge(item.data, payloadOptions);\n callback(null, item);\n}\n\nfunction addTelemetryData(item, options, callback) {\n if (item.telemetryEvents) {\n _.set(item, 'data.body.telemetry', item.telemetryEvents);\n }\n callback(null, item);\n}\n\nfunction addMessageWithError(item, options, callback) {\n if (!item.message) {\n callback(null, item);\n return;\n }\n var tracePath = 'data.body.trace_chain.0';\n var trace = _.get(item, tracePath);\n if (!trace) {\n tracePath = 'data.body.trace';\n trace = _.get(item, tracePath);\n }\n if (trace) {\n if (!(trace.exception && trace.exception.description)) {\n _.set(item, tracePath + '.exception.description', item.message);\n callback(null, item);\n return;\n }\n var extra = _.get(item, tracePath + '.extra') || {};\n var newExtra = _.merge(extra, { message: item.message });\n _.set(item, tracePath + '.extra', newExtra);\n }\n callback(null, item);\n}\n\nfunction userTransform(logger) {\n return function (item, options, callback) {\n var newItem = _.merge(item);\n var response = null;\n try {\n if (_.isFunction(options.transform)) {\n response = options.transform(newItem.data, item);\n }\n } catch (e) {\n options.transform = null;\n logger.error(\n 'Error while calling custom transform() function. Removing custom transform().',\n e,\n );\n callback(null, item);\n return;\n }\n if (_.isPromise(response)) {\n response.then(\n function (promisedItem) {\n if (promisedItem) {\n newItem.data = promisedItem;\n }\n callback(null, newItem);\n },\n function (error) {\n callback(error, item);\n },\n );\n } else {\n callback(null, newItem);\n }\n };\n}\n\nfunction addConfigToPayload(item, options, callback) {\n if (!options.sendConfig) {\n return callback(null, item);\n }\n var configKey = '_rollbarConfig';\n var custom = _.get(item, 'data.custom') || {};\n custom[configKey] = options;\n item.data.custom = custom;\n callback(null, item);\n}\n\nfunction addFunctionOption(options, name) {\n if (_.isFunction(options[name])) {\n options[name] = options[name].toString();\n }\n}\n\nfunction addConfiguredOptions(item, options, callback) {\n var configuredOptions = options._configuredOptions;\n\n // These must be stringified or they'll get dropped during serialization.\n addFunctionOption(configuredOptions, 'transform');\n addFunctionOption(configuredOptions, 'checkIgnore');\n addFunctionOption(configuredOptions, 'onSendCallback');\n\n delete configuredOptions.accessToken;\n item.data.notifier.configured_options = configuredOptions;\n callback(null, item);\n}\n\nfunction addDiagnosticKeys(item, options, callback) {\n var diagnostic = _.merge(\n item.notifier.client.notifier.diagnostic,\n item.diagnostic,\n );\n\n if (_.get(item, 'err._isAnonymous')) {\n diagnostic.is_anonymous = true;\n }\n\n if (item._isUncaught) {\n diagnostic.is_uncaught = item._isUncaught;\n }\n\n if (item.err) {\n try {\n diagnostic.raw_error = {\n message: item.err.message,\n name: item.err.name,\n constructor_name: item.err.constructor && item.err.constructor.name,\n filename: item.err.fileName,\n line: item.err.lineNumber,\n column: item.err.columnNumber,\n stack: item.err.stack,\n };\n } catch (e) {\n diagnostic.raw_error = { failed: String(e) };\n }\n }\n\n item.data.notifier.diagnostic = _.merge(\n item.data.notifier.diagnostic,\n diagnostic,\n );\n callback(null, item);\n}\n\nexport {\n itemToPayload,\n addPayloadOptions,\n addTelemetryData,\n addMessageWithError,\n userTransform,\n addConfigToPayload,\n addConfiguredOptions,\n addDiagnosticKeys,\n};\n","/**\n * Default browser options\n */\nimport { commonScrubFields } from '../defaults.js';\n\nexport const scrubFields = [\n ...commonScrubFields,\n 'cc-number',\n 'card number',\n 'cardnumber',\n 'cardnum',\n 'ccnum',\n 'ccnumber',\n 'cc num',\n 'creditcardnumber',\n 'credit card number',\n 'newcreditcardnumber',\n 'new credit card',\n 'creditcardno',\n 'credit card no',\n 'card#',\n 'card #',\n 'cc-csc',\n 'cvc',\n 'cvc2',\n 'cvv2',\n 'ccv2',\n 'security code',\n 'card verification',\n 'name on credit card',\n 'name on card',\n 'nameoncard',\n 'cardholder',\n 'card holder',\n 'name des karteninhabers',\n 'ccname',\n 'card type',\n 'cardtype',\n 'cc type',\n 'cctype',\n 'payment type',\n 'expiration date',\n 'expirationdate',\n 'expdate',\n 'cc-exp',\n 'ccmonth',\n 'ccyear',\n];\n\n// For compatibility with existing code that expects default export with scrubFields property\nexport default { scrubFields };\n","function captureUncaughtExceptions(window, handler, shim) {\n if (!window) {\n return;\n }\n var oldOnError;\n\n if (typeof handler._rollbarOldOnError === 'function') {\n oldOnError = handler._rollbarOldOnError;\n } else if (window.onerror) {\n oldOnError = window.onerror;\n while (oldOnError._rollbarOldOnError) {\n oldOnError = oldOnError._rollbarOldOnError;\n }\n handler._rollbarOldOnError = oldOnError;\n }\n\n handler.handleAnonymousErrors();\n\n var fn = function () {\n var args = Array.prototype.slice.call(arguments, 0);\n _rollbarWindowOnError(window, handler, oldOnError, args);\n };\n if (shim) {\n fn._rollbarOldOnError = oldOnError;\n }\n window.onerror = fn;\n}\n\nfunction _rollbarWindowOnError(window, r, old, args) {\n if (window._rollbarWrappedError) {\n if (!args[4]) {\n args[4] = window._rollbarWrappedError;\n }\n if (!args[5]) {\n args[5] = window._rollbarWrappedError._rollbarContext;\n }\n window._rollbarWrappedError = null;\n }\n\n var ret = r.handleUncaughtException.apply(r, args);\n\n if (old) {\n old.apply(window, args);\n }\n\n // Let other chained onerror handlers above run before setting this.\n // If an error is thrown and caught within a chained onerror handler,\n // Error.prepareStackTrace() will see that one before the one we want.\n if (ret === 'anonymous') {\n r.anonymousErrorsPending += 1; // See Rollbar.prototype.handleAnonymousErrors()\n }\n}\n\nfunction captureUnhandledRejections(window, handler, shim) {\n if (!window) {\n return;\n }\n\n if (\n typeof window._rollbarURH === 'function' &&\n window._rollbarURH.belongsToShim\n ) {\n window.removeEventListener('unhandledrejection', window._rollbarURH);\n }\n\n var rejectionHandler = function (evt) {\n var reason, promise, detail;\n try {\n reason = evt.reason;\n } catch (_e) {\n reason = undefined;\n }\n try {\n promise = evt.promise;\n } catch (_e) {\n promise = '[unhandledrejection] error getting `promise` from event';\n }\n try {\n detail = evt.detail;\n if (!reason && detail) {\n reason = detail.reason;\n promise = detail.promise;\n }\n } catch (_e) {\n // Ignore\n }\n if (!reason) {\n reason = '[unhandledrejection] error getting `reason` from event';\n }\n\n if (handler && handler.handleUnhandledRejection) {\n handler.handleUnhandledRejection(reason, promise);\n }\n };\n rejectionHandler.belongsToShim = shim;\n window._rollbarURH = rejectionHandler;\n window.addEventListener('unhandledrejection', rejectionHandler);\n}\n\nexport { captureUncaughtExceptions, captureUnhandledRejections };\n","import * as _ from '../utility.js';\n\nfunction checkIgnore(item, settings) {\n if (_.get(settings, 'plugins.jquery.ignoreAjaxErrors')) {\n return !_.get(item, 'body.message.extra.isAjax');\n }\n return true;\n}\n\nexport { checkIgnore };\n","/**\n * Default session replay recording options\n * See https://github.com/rrweb-io/rrweb/blob/master/guide.md#options for details\n */\nexport default {\n enabled: false, // Whether recording is enabled\n autoStart: true, // Start recording automatically when Rollbar initializes\n\n // defaults used by triggers that don't specify them\n triggerDefaults: {\n samplingRatio: 1.0,\n preDuration: 300,\n postDuration: 5,\n },\n triggers: [\n {\n type: 'occurrence',\n level: ['error', 'critical'],\n },\n ],\n\n debug: {\n logErrors: true, // Whether to log errors emitted by rrweb.\n logEmits: false, // Whether to log emitted events\n },\n\n // Recording options\n inlineStylesheet: true, // Whether to inline stylesheets to improve replay accuracy\n inlineImages: false, // Whether to record the image content\n collectFonts: true, // Whether to collect fonts in the website\n\n // Privacy options\n // Fine-grained control over which input types to mask\n // By default only password inputs are masked if maskInputs is true\n maskInputOptions: {\n password: true,\n email: false,\n tel: false,\n text: false,\n color: false,\n date: false,\n 'datetime-local': false,\n month: false,\n number: false,\n range: false,\n search: false,\n time: false,\n url: false,\n week: false,\n },\n\n // Mask all input values\n maskAllInputs: false,\n\n // Class names to block, mask, or ignore the content of elements.\n blockClass: 'rb-block',\n maskTextClass: 'rb-mask',\n ignoreClass: 'rb-ignore',\n\n // Remove unnecessary parts of the DOM\n // By default all removable elements are removed\n slimDOMOptions: {\n script: true, // Remove script elements\n comment: true, // Remove comments\n headFavicon: true, // Remove favicons in the head\n headWhitespace: true, // Remove whitespace in head\n headMetaDescKeywords: true, // Remove meta description and keywords\n headMetaSocial: true, // Remove social media meta tags\n headMetaRobots: true, // Remove robots meta directives\n headMetaHttpEquiv: true, // Remove http-equiv meta directives\n headMetaAuthorship: true, // Remove authorship meta directives\n headMetaVerification: true, // Remove verification meta directives\n },\n\n // Custom callbacks for advanced use cases\n // These are undefined by default and can be set programmatically\n // maskInputFn: undefined, // Custom function to mask input values\n // maskTextFn: undefined, // Custom function to mask text content\n // errorHandler: undefined, // Custom error handler for recording errors\n\n // Plugin system\n // plugins: [] // List of plugins to use (must be set programmatically)\n};\n","import errorParser from '../errorParser.js';\nimport logger from '../logger.js';\nimport * as _ from '../utility.js';\n\nfunction handleDomException(item, options, callback) {\n if (item.err && errorParser.Stack(item.err).name === 'DOMException') {\n var originalError = new Error();\n originalError.name = item.err.name;\n originalError.message = item.err.message;\n originalError.stack = item.err.stack;\n originalError.nested = item.err;\n item.err = originalError;\n }\n callback(null, item);\n}\n\nfunction handleItemWithError(item, options, callback) {\n item.data = item.data || {};\n if (item.err) {\n try {\n item.stackInfo =\n item.err._savedStackTrace ||\n errorParser.parse(item.err, item.skipFrames);\n\n if (options.addErrorContext) {\n addErrorContext(item);\n }\n } catch (e) {\n logger.error('Error while parsing the error object.', e);\n try {\n item.message =\n item.err.message ||\n item.err.description ||\n item.message ||\n String(item.err);\n } catch (e2) {\n item.message = String(item.err) || String(e2);\n }\n delete item.err;\n }\n }\n callback(null, item);\n}\n\nfunction addErrorContext(item) {\n var chain = [];\n var err = item.err;\n\n chain.push(err);\n\n while (err.nested || err.cause) {\n err = err.nested || err.cause;\n chain.push(err);\n }\n\n _.addErrorContext(item, chain);\n}\n\nfunction ensureItemHasSomethingToSay(item, options, callback) {\n if (!item.message && !item.stackInfo && !item.custom) {\n callback(new Error('No message, stack info, or custom data'), null);\n }\n callback(null, item);\n}\n\nfunction addBaseInfo(item, options, callback) {\n var environment =\n (options.payload && options.payload.environment) || options.environment;\n item.data = _.merge(item.data, {\n environment: environment,\n level: item.level,\n endpoint: options.endpoint,\n platform: 'browser',\n framework: 'browser-js',\n language: 'javascript',\n server: {},\n uuid: item.uuid,\n notifier: {\n name: 'rollbar-browser-js',\n version: options.version,\n },\n custom: item.custom,\n });\n callback(null, item);\n}\n\nfunction addRequestInfo(window) {\n return function (item, options, callback) {\n var requestInfo = {};\n\n if (window && window.location) {\n requestInfo.url = window.location.href;\n requestInfo.query_string = window.location.search;\n }\n\n var remoteString = '$remote_ip';\n if (!options.captureIp) {\n remoteString = null;\n } else if (options.captureIp !== true) {\n remoteString += '_anonymize';\n }\n if (remoteString) requestInfo.user_ip = remoteString;\n\n if (Object.keys(requestInfo).length > 0) {\n _.set(item, 'data.request', requestInfo);\n }\n\n callback(null, item);\n };\n}\n\nfunction addClientInfo(window) {\n return function (item, options, callback) {\n if (!window) {\n return callback(null, item);\n }\n var nav = window.navigator || {};\n var scr = window.screen || {};\n _.set(item, 'data.client', {\n runtime_ms: item.timestamp - window._rollbarStartTime,\n timestamp: Math.round(item.timestamp / 1000),\n javascript: {\n browser: nav.userAgent,\n language: nav.language,\n cookie_enabled: nav.cookieEnabled,\n screen: {\n width: scr.width,\n height: scr.height,\n },\n },\n });\n callback(null, item);\n };\n}\n\nfunction addPluginInfo(window) {\n return function (item, options, callback) {\n if (!window || !window.navigator) {\n return callback(null, item);\n }\n var plugins = [];\n var navPlugins = window.navigator.plugins || [];\n var cur;\n for (var i = 0, l = navPlugins.length; i < l; ++i) {\n cur = navPlugins[i];\n plugins.push({ name: cur.name, description: cur.description });\n }\n _.set(item, 'data.client.javascript.plugins', plugins);\n callback(null, item);\n };\n}\n\nfunction addBody(item, options, callback) {\n if (item.stackInfo) {\n if (item.stackInfo.traceChain) {\n addBodyTraceChain(item, options, callback);\n } else {\n addBodyTrace(item, options, callback);\n }\n } else {\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction addBodyMessage(item, options, callback) {\n var message = item.message;\n var custom = item.custom;\n\n if (!message) {\n message = 'Item sent with null or missing arguments.';\n }\n var result = {\n body: message,\n };\n\n if (custom) {\n result.extra = _.merge(custom);\n }\n\n _.set(item, 'data.body', { message: result });\n callback(null, item);\n}\n\nfunction stackFromItem(item, stackInfo = null) {\n // Transform a TraceKit stackInfo object into a Rollbar trace\n let stack = (stackInfo || item.stackInfo).stack;\n if (\n stack &&\n stack.length === 0 &&\n item._unhandledStackInfo &&\n item._unhandledStackInfo.stack\n ) {\n stack = item._unhandledStackInfo.stack;\n }\n return stack;\n}\n\nfunction addBodyTraceChain(item, options, callback) {\n var traceChain = item.stackInfo.traceChain;\n var traces = [];\n\n var traceChainLength = traceChain.length;\n for (var i = 0; i < traceChainLength; i++) {\n var trace = buildTrace(item, traceChain[i], options);\n traces.push(trace);\n }\n\n _.set(item, 'data.body', { trace_chain: traces });\n callback(null, item);\n}\n\nfunction addBodyTrace(item, options, callback) {\n var stack = stackFromItem(item);\n\n if (stack) {\n var trace = buildTrace(item, item.stackInfo, options);\n _.set(item, 'data.body', { trace: trace });\n callback(null, item);\n } else {\n var stackInfo = item.stackInfo;\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n\n item.message = className + ': ' + message;\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction buildTrace(item, stackInfo, options) {\n var description = item && item.data.description;\n var custom = item && item.custom;\n var stack = stackFromItem(item, stackInfo);\n\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n var trace = {\n exception: {\n class: className,\n message: message,\n },\n };\n\n if (description) {\n trace.exception.description = description;\n }\n\n if (stack) {\n if (stack.length === 0) {\n trace.exception.stack = stackInfo.rawStack;\n trace.exception.raw = String(stackInfo.rawException);\n }\n var stackFrame;\n var frame;\n var code;\n var pre;\n var post;\n var contextLength;\n var i, mid;\n\n trace.frames = [];\n for (i = 0; i < stack.length; ++i) {\n stackFrame = stack[i];\n frame = {\n filename: stackFrame.url ? _.sanitizeUrl(stackFrame.url) : '(unknown)',\n lineno: stackFrame.line || null,\n method:\n !stackFrame.func || stackFrame.func === '?'\n ? '[anonymous]'\n : stackFrame.func,\n colno: stackFrame.column,\n };\n if (options.sendFrameUrl) {\n frame.url = stackFrame.url;\n }\n if (\n frame.method &&\n frame.method.endsWith &&\n frame.method.endsWith('_rollbar_wrapped')\n ) {\n continue;\n }\n\n code = pre = post = null;\n contextLength = stackFrame.context ? stackFrame.context.length : 0;\n if (contextLength) {\n mid = Math.floor(contextLength / 2);\n pre = stackFrame.context.slice(0, mid);\n code = stackFrame.context[mid];\n post = stackFrame.context.slice(mid);\n }\n\n if (code) {\n frame.code = code;\n }\n\n if (pre || post) {\n frame.context = {};\n if (pre && pre.length) {\n frame.context.pre = pre;\n }\n if (post && post.length) {\n frame.context.post = post;\n }\n }\n\n if (stackFrame.args) {\n frame.args = stackFrame.args;\n }\n\n trace.frames.push(frame);\n }\n\n // NOTE(cory): reverse the frames since rollbar.com expects the most recent call last\n trace.frames.reverse();\n\n if (custom) {\n trace.extra = _.merge(custom);\n }\n }\n\n return trace;\n}\n\nfunction errorClass(stackInfo, guess, options) {\n if (stackInfo.name) {\n return stackInfo.name;\n } else if (options.guessErrorClass) {\n return guess;\n } else {\n return '(unknown)';\n }\n}\n\nfunction addScrubber(scrubFn) {\n return function (item, options, callback) {\n if (scrubFn) {\n var scrubFields = options.scrubFields || [];\n var scrubPaths = options.scrubPaths || [];\n item.data = scrubFn(item.data, scrubFields, scrubPaths);\n }\n callback(null, item);\n };\n}\n\nexport {\n handleDomException,\n handleItemWithError,\n ensureItemHasSomethingToSay,\n addBaseInfo,\n addRequestInfo,\n addClientInfo,\n addPluginInfo,\n addBody,\n addScrubber,\n};\n","import logger from '../../logger.js';\nimport * as _ from '../../utility.js';\n\nfunction makeFetchRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n timeout,\n}) {\n var controller;\n var timeoutId;\n\n if (_.isFiniteNumber(timeout)) {\n controller = new AbortController();\n timeoutId = setTimeout(function () {\n controller.abort();\n }, timeout);\n }\n\n headers = {\n 'Content-Type': 'application/json',\n 'X-Rollbar-Access-Token': accessToken,\n signal: controller && controller.signal,\n ...headers,\n };\n\n fetch(url, {\n method,\n headers,\n body: payload,\n })\n .then(function (response) {\n if (timeoutId) clearTimeout(timeoutId);\n const respHeaders = response.headers;\n\n const isItemRoute = url.endsWith('/api/1/item/');\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': respHeaders.get('Rollbar-Replay-Enabled'),\n 'Rollbar-Replay-RateLimit-Remaining': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n\n const json = response.json();\n callback(null, json, headers);\n })\n .catch(function (error) {\n logger.error(error.message);\n callback(error);\n });\n}\n\nexport default makeFetchRequest;\n","/*global XDomainRequest*/\n\nimport logger from '../../logger.js';\nimport * as _ from '../../utility.js';\n\nfunction makeXhrRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n requestFactory,\n timeout,\n}) {\n var request;\n if (requestFactory) {\n request = requestFactory();\n } else {\n request = _createXMLHTTPObject();\n }\n if (!request) {\n // Give up, no way to send requests\n return callback(new Error('No way to send a request'));\n }\n try {\n try {\n var onreadystatechange = function () {\n try {\n if (onreadystatechange && request.readyState === 4) {\n onreadystatechange = undefined;\n\n var parseResponse = _.jsonParse(request.responseText);\n if (_isSuccess(request)) {\n const isItemRoute = url.endsWith('/api/1/item/');\n\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': request.getResponseHeader(\n 'Rollbar-Replay-Enabled',\n ),\n 'Rollbar-Replay-RateLimit-Remaining':\n request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n callback(parseResponse.error, parseResponse.value, headers);\n return;\n } else if (_isNormalFailure(request)) {\n if (request.status === 403) {\n // likely caused by using a server access token\n var message =\n parseResponse.value && parseResponse.value.message;\n logger.error(message);\n }\n // return valid http status codes\n callback(new Error(String(request.status)));\n } else {\n // IE will return a status 12000+ on some sort of connection failure,\n // so we return a blank error\n // http://msdn.microsoft.com/en-us/library/aa383770%28VS.85%29.aspx\n var msg =\n 'XHR response had no status code (likely connection failure)';\n callback(_newRetriableError(msg));\n }\n }\n } catch (ex) {\n //jquery source mentions firefox may error out while accessing the\n //request members if there is a network error\n //https://github.com/jquery/jquery/blob/a938d7b1282fc0e5c52502c225ae8f0cef219f0a/src/ajax/xhr.js#L111\n var exc;\n if (ex && ex.stack) {\n exc = ex;\n } else {\n exc = new Error(ex);\n }\n callback(exc);\n }\n };\n\n request.open(method, url, true);\n if (request.setRequestHeader) {\n request.setRequestHeader('Content-Type', 'application/json');\n request.setRequestHeader('X-Rollbar-Access-Token', accessToken);\n for (const [h, v] of Object.entries(headers ?? {})) {\n request.setRequestHeader(h, v);\n }\n }\n\n if (_.isFiniteNumber(timeout)) {\n request.timeout = timeout;\n }\n\n request.onreadystatechange = onreadystatechange;\n request.send(payload);\n } catch (_e1) {\n // Sending using the normal xmlhttprequest object didn't work, try XDomainRequest\n if (typeof XDomainRequest !== 'undefined') {\n // Assume we are in a really old browser which has a bunch of limitations:\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n\n // Extreme paranoia: if we have XDomainRequest then we have a window, but just in case\n if (!window || !window.location) {\n return callback(\n new Error(\n 'No window available during request, unknown environment',\n ),\n );\n }\n\n // If the current page is http, try and send over http\n if (\n window.location.href.substring(0, 5) === 'http:' &&\n url.substring(0, 5) === 'https'\n ) {\n url = 'http' + url.substring(5);\n }\n\n var xdomainrequest = new XDomainRequest();\n xdomainrequest.onprogress = () => {};\n xdomainrequest.ontimeout = function () {\n var msg = 'Request timed out';\n var code = 'ETIMEDOUT';\n callback(_newRetriableError(msg, code));\n };\n xdomainrequest.onerror = function () {\n callback(new Error('Error during request'));\n };\n xdomainrequest.onload = function () {\n var parseResponse = _.jsonParse(xdomainrequest.responseText);\n callback(parseResponse.error, parseResponse.value);\n };\n xdomainrequest.open(method, url, true);\n xdomainrequest.send(payload);\n } else {\n callback(new Error('Cannot find a method to transport a request'));\n }\n }\n } catch (e2) {\n callback(e2);\n }\n}\n\nfunction _createXMLHTTPObject() {\n /* global ActiveXObject:false */\n\n var factories = [\n function () {\n return new XMLHttpRequest();\n },\n function () {\n return new ActiveXObject('Msxml2.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Msxml3.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Microsoft.XMLHTTP');\n },\n ];\n var xmlhttp;\n var i;\n var numFactories = factories.length;\n for (i = 0; i < numFactories; i++) {\n try {\n xmlhttp = factories[i]();\n break;\n } catch (_e) {\n // pass\n }\n }\n return xmlhttp;\n}\n\nfunction _isSuccess(r) {\n return r && r.status && r.status === 200;\n}\n\nfunction _isNormalFailure(r) {\n return r && _.isType(r.status, 'number') && r.status >= 400 && r.status < 600;\n}\n\nfunction _newRetriableError(message, code) {\n var err = new Error(message);\n err.code = code || 'ENOTFOUND';\n return err;\n}\n\nexport default makeXhrRequest;\n","import * as _ from '../utility.js';\n\nimport makeFetchRequest from './transport/fetch.js';\nimport makeXhrRequest from './transport/xhr.js';\n\n/*\n * accessToken may be embedded in payload but that should not\n * be assumed\n *\n * options: {\n * hostname\n * protocol\n * path\n * port\n * method\n * transport ('xhr' | 'fetch')\n * }\n *\n * params is an object containing key/value pairs. These\n * will be appended to the path as 'key=value&key=value'\n *\n * payload is an unserialized object\n */\nfunction Transport(truncation) {\n this.truncation = truncation;\n}\n\nTransport.prototype.get = function (\n accessToken,\n options,\n params,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = () => {};\n }\n _.addParamsAndAccessTokenToPath(accessToken, options, params);\n\n var method = 'GET';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.post = function ({\n accessToken,\n options,\n payload,\n headers,\n callback,\n requestFactory,\n}) {\n if (!callback || !_.isFunction(callback)) {\n callback = () => {};\n }\n\n if (!payload) {\n return callback(new Error('Cannot send empty request'));\n }\n\n var stringifyResult;\n // Check payload.body to ensure only items are truncated.\n if (this.truncation && payload.body) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = _.stringify(payload);\n }\n if (stringifyResult.error) {\n return callback(stringifyResult.error);\n }\n\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload: stringifyResult.value,\n headers,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.postJsonPayload = function (\n accessToken,\n options,\n payload,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = () => {};\n }\n\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\n// Wraps `_makeRequest` if zone.js is being used, ensuring that Rollbar\n// API calls are not intercepted by any child forked zones.\n// This is equivalent to `NgZone.runOutsideAngular` in Angular.\nTransport.prototype._makeZoneRequest = function () {\n var gWindow =\n (typeof window !== 'undefined' && window) ||\n (typeof self !== 'undefined' && self);\n // Whenever zone.js is loaded and `Zone` is exposed globally, access\n // the root zone to ensure that requests are always made within it.\n // This approach is framework-agnostic, regardless of which\n // framework zone.js is used with.\n var rootZone = gWindow && gWindow.Zone && gWindow.Zone.root;\n var args = Array.prototype.slice.call(arguments);\n\n if (rootZone) {\n rootZone.run(() => {\n this._makeRequest.apply(undefined, args);\n });\n } else {\n this._makeRequest.apply(undefined, args);\n }\n};\n\nTransport.prototype._makeRequest = function (params) {\n const { payload, callback, transport } = params;\n if (typeof RollbarProxy !== 'undefined') {\n return _proxyRequest(payload, callback);\n }\n\n if (transport === 'fetch') {\n makeFetchRequest(params);\n } else {\n makeXhrRequest(params);\n }\n};\n\n/* global RollbarProxy */\nfunction _proxyRequest(json, callback) {\n var rollbarProxy = new RollbarProxy();\n rollbarProxy.sendJsonPayload(\n json,\n function (_msg) {\n /* do nothing */\n },\n function (err) {\n callback(new Error(err));\n },\n );\n}\n\nexport default Transport;\n","// See https://nodejs.org/docs/latest/api/url.html\nfunction parse(url) {\n var result = {\n protocol: null,\n auth: null,\n host: null,\n path: null,\n hash: null,\n href: url,\n hostname: null,\n port: null,\n pathname: null,\n search: null,\n query: null,\n };\n\n var i, last;\n i = url.indexOf('//');\n if (i !== -1) {\n result.protocol = url.substring(0, i);\n last = i + 2;\n } else {\n last = 0;\n }\n\n i = url.indexOf('@', last);\n if (i !== -1) {\n result.auth = url.substring(last, i);\n last = i + 1;\n }\n\n i = url.indexOf('/', last);\n if (i === -1) {\n i = url.indexOf('?', last);\n if (i === -1) {\n i = url.indexOf('#', last);\n if (i === -1) {\n result.host = url.substring(last);\n } else {\n result.host = url.substring(last, i);\n result.hash = url.substring(i);\n }\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n return result;\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n\n i = url.indexOf('#', last);\n if (i === -1) {\n result.path = url.substring(last);\n } else {\n result.path = url.substring(last, i);\n result.hash = url.substring(i);\n }\n\n if (result.path) {\n var pathParts = result.path.split('?');\n result.pathname = pathParts[0];\n result.query = pathParts[1];\n result.search = result.query ? '?' + result.query : null;\n }\n return result;\n}\n\nexport { parse };\n","import API from '../api.js';\nimport defaults from '../defaults.js';\nimport errorParser from '../errorParser.js';\nimport logger from '../logger.js';\nimport * as sharedPredicates from '../predicates.js';\nimport Client from '../rollbar.js';\nimport tracingDefaults from '../tracing/defaults.js';\nimport * as sharedTransforms from '../transforms.js';\nimport * as _ from '../utility.js';\n\nimport browserDefaults from './defaults.js';\nimport * as globals from './globalSetup.js';\nimport * as predicates from './predicates.js';\nimport replayDefaults from './replay/defaults.js';\nimport * as transforms from './transforms.js';\nimport Transport from './transport.js';\nimport * as urllib from './url.js';\n\n// Used to support global `Rollbar` instance.\nlet _instance = null;\n\nclass Rollbar {\n constructor(options, client) {\n logger.init({ logLevel: options.logLevel || 'error' });\n this.options = _.handleOptions(defaultOptions, options, null, logger);\n this.options._configuredOptions = options;\n this.components = this.components || {};\n const Telemeter = this.components.telemeter;\n const Instrumenter = this.components.instrumenter;\n this.wrapGlobals = this.components.wrapGlobals;\n this.scrub = this.components.scrub;\n const truncation = this.components.truncation;\n const Tracing = this.components.tracing;\n const Replay = this.components.replay;\n\n const transport = new Transport(truncation);\n const api = new API(this.options, transport, urllib, truncation);\n if (Tracing) {\n this.tracing = new Tracing(_gWindow(), api, this.options);\n this.tracing.initSession();\n }\n if (Telemeter) {\n this.telemeter = new Telemeter(this.options, this.tracing);\n }\n\n if (Replay && _.isBrowser()) {\n const replayOptions = this.options.replay;\n this.replay = new Replay({\n tracing: this.tracing,\n telemeter: this.telemeter,\n options: replayOptions,\n });\n\n if (replayOptions.enabled && replayOptions.autoStart) {\n this.replay.recorder.start();\n }\n }\n\n this.client =\n client ||\n new Client(\n this.options,\n api,\n logger,\n this.telemeter,\n this.tracing,\n this.replay,\n 'browser',\n );\n var gWindow = _gWindow();\n var gDocument = typeof document !== 'undefined' && document;\n this.isChrome = gWindow.chrome && gWindow.chrome.runtime; // check .runtime to avoid Edge browsers\n this.anonymousErrorsPending = 0;\n addTransformsToNotifier(this.client.notifier, this, gWindow);\n addPredicatesToQueue(this.client.queue);\n this.setupUnhandledCapture();\n if (Instrumenter) {\n this.instrumenter = new Instrumenter(\n this.options,\n this.client.telemeter,\n this,\n gWindow,\n gDocument,\n );\n this.instrumenter.instrument();\n }\n\n this.setSessionAttributesFromOptions(options);\n\n // Used with rollbar-react for rollbar-react-native compatibility.\n this.rollbar = this;\n }\n\n static init(options, client) {\n if (_instance) {\n return _instance.global(options).configure(options);\n }\n _instance = new Rollbar(options, client);\n return _instance;\n }\n\n static setComponents(components) {\n Rollbar.prototype.components = components;\n }\n\n global(options) {\n this.client.global(options);\n return this;\n }\n\n configure(options, payloadData) {\n if (options.logLevel) {\n logger.init({ logLevel: options.logLevel });\n }\n this.setSessionAttributesFromOptions(options);\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.handleOptions(oldOptions, options, payload, logger);\n this.options._configuredOptions = _.handleOptions(\n oldOptions._configuredOptions,\n options,\n payload,\n );\n\n this.tracing?.configure(this.options);\n this.replay?.configure(this.options.replay);\n this.client.configure(this.options, payloadData);\n this.instrumenter?.configure(this.options);\n this.setupUnhandledCapture();\n return this;\n }\n\n lastError() {\n return this.client.lastError;\n }\n\n log() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.log(item);\n return { uuid: uuid };\n }\n\n debug() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.debug(item);\n return { uuid: uuid };\n }\n\n info() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.info(item);\n return { uuid: uuid };\n }\n\n warn() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warn(item);\n return { uuid: uuid };\n }\n\n warning() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warning(item);\n return { uuid: uuid };\n }\n\n error() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.error(item);\n return { uuid: uuid };\n }\n\n critical() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.critical(item);\n return { uuid: uuid };\n }\n\n buildJsonPayload(item) {\n return this.client.buildJsonPayload(item);\n }\n\n sendJsonPayload(jsonPayload) {\n return this.client.sendJsonPayload(jsonPayload);\n }\n\n triggerDirectReplay(context) {\n return this.triggerReplay({ type: 'direct', ...context });\n }\n\n triggerReplay(context) {\n if (!this.replay) return null;\n\n return this.replay.triggerReplay(context);\n }\n\n setupUnhandledCapture() {\n var gWindow = _gWindow();\n\n if (!this.unhandledExceptionsInitialized) {\n if (\n this.options.captureUncaught ||\n this.options.handleUncaughtExceptions\n ) {\n globals.captureUncaughtExceptions(gWindow, this);\n if (this.wrapGlobals && this.options.wrapGlobalEventHandlers) {\n this.wrapGlobals(gWindow, this);\n }\n this.unhandledExceptionsInitialized = true;\n }\n }\n if (!this.unhandledRejectionsInitialized) {\n if (\n this.options.captureUnhandledRejections ||\n this.options.handleUnhandledRejections\n ) {\n globals.captureUnhandledRejections(gWindow, this);\n this.unhandledRejectionsInitialized = true;\n }\n }\n }\n\n handleUncaughtException(message, url, lineno, colno, error, context) {\n if (\n !this.options.captureUncaught &&\n !this.options.handleUncaughtExceptions\n ) {\n return;\n }\n\n // Chrome will always send 5+ arguments and error will be valid or null, not undefined.\n // If error is undefined, we have a different caller.\n // Chrome also sends errors from web workers with null error, but does not invoke\n // prepareStackTrace() for these. Test for empty url to skip them.\n if (\n this.options.inspectAnonymousErrors &&\n this.isChrome &&\n error === null &&\n url === ''\n ) {\n return 'anonymous';\n }\n\n var item;\n var stackInfo = _.makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n 'onerror',\n 'uncaught exception',\n errorParser,\n );\n if (_.isError(error)) {\n item = this._createItem([message, error, context]);\n item._unhandledStackInfo = stackInfo;\n } else if (_.isError(url)) {\n item = this._createItem([message, url, context]);\n item._unhandledStackInfo = stackInfo;\n } else {\n item = this._createItem([message, context]);\n item.stackInfo = stackInfo;\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n this.client.log(item);\n }\n\n /**\n * Chrome only. Other browsers will ignore.\n *\n * Use Error.prepareStackTrace to extract information about errors that\n * do not have a valid error object in onerror().\n *\n * In tested version of Chrome, onerror is called first but has no way\n * to communicate with prepareStackTrace. Use a counter to let this\n * handler know which errors to send to Rollbar.\n *\n * In config options, set inspectAnonymousErrors to enable.\n */\n handleAnonymousErrors() {\n if (!this.options.inspectAnonymousErrors || !this.isChrome) {\n return;\n }\n\n const prepareStackTrace = (error, _stack) => {\n if (this.options.inspectAnonymousErrors) {\n if (this.anonymousErrorsPending) {\n // This is the only known way to detect that onerror saw an anonymous error.\n // It depends on onerror reliably being called before Error.prepareStackTrace,\n // which so far holds true on tested versions of Chrome. If versions of Chrome\n // are tested that behave differently, this logic will need to be updated\n // accordingly.\n this.anonymousErrorsPending -= 1;\n\n if (!error) {\n // Not likely to get here, but calling handleUncaughtException from here\n // without an error object would throw off the anonymousErrorsPending counter,\n // so return now.\n return;\n }\n\n // Allow this to be tracked later.\n error._isAnonymous = true;\n\n // url, lineno, colno shouldn't be needed for these errors.\n // If that changes, update this accordingly, using the unused\n // _stack param as needed (rather than parse error.toString()).\n this.handleUncaughtException(error.message, null, null, null, error);\n }\n }\n\n // Workaround to ensure stack is preserved for normal errors.\n return error.stack;\n };\n\n // https://v8.dev/docs/stack-trace-api\n try {\n Error.prepareStackTrace = prepareStackTrace;\n } catch (e) {\n this.options.inspectAnonymousErrors = false;\n this.error('anonymous error handler failed', e);\n }\n }\n\n handleUnhandledRejection(reason, promise) {\n if (\n !this.options.captureUnhandledRejections &&\n !this.options.handleUnhandledRejections\n ) {\n return;\n }\n\n var message = 'unhandled rejection was null or undefined!';\n if (reason) {\n if (reason.message) {\n message = reason.message;\n } else {\n var reasonResult = _.stringify(reason);\n if (reasonResult.value) {\n message = reasonResult.value;\n }\n }\n }\n var context =\n (reason && reason._rollbarContext) ||\n (promise && promise._rollbarContext);\n\n var item;\n if (_.isError(reason)) {\n item = this._createItem([message, reason, context]);\n } else {\n item = this._createItem([message, reason, context]);\n item.stackInfo = _.makeUnhandledStackInfo(\n message,\n '',\n 0,\n 0,\n null,\n 'unhandledrejection',\n '',\n errorParser,\n );\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n item._originalArgs = item._originalArgs || [];\n item._originalArgs.push(promise);\n this.client.log(item);\n }\n\n wrap(f, context, _before) {\n try {\n var ctxFn;\n if (_.isFunction(context)) {\n ctxFn = context;\n } else {\n ctxFn = function () {\n return context || {};\n };\n }\n\n if (!_.isFunction(f)) {\n return f;\n }\n\n if (f._isWrap) {\n return f;\n }\n\n if (!f._rollbar_wrapped) {\n f._rollbar_wrapped = function () {\n if (_before && _.isFunction(_before)) {\n _before.apply(this, arguments);\n }\n try {\n return f.apply(this, arguments);\n } catch (exc) {\n var e = exc;\n if (e && window._rollbarWrappedError !== e) {\n if (_.isType(e, 'string')) {\n e = new String(e);\n }\n e._rollbarContext = ctxFn() || {};\n e._rollbarContext._wrappedSource = f.toString();\n\n window._rollbarWrappedError = e;\n }\n throw e;\n }\n };\n\n f._rollbar_wrapped._isWrap = true;\n\n for (var prop in f) {\n if (_.hasOwn(f, prop) && prop !== '_rollbar_wrapped') {\n f._rollbar_wrapped[prop] = f[prop];\n }\n }\n }\n\n return f._rollbar_wrapped;\n } catch (_e) {\n // Return the original function if the wrap fails.\n return f;\n }\n }\n\n captureEvent() {\n var event = _.createTelemetryEvent(arguments);\n return this.client.captureEvent(event.type, event.metadata, event.level);\n }\n\n setSessionUser(user) {\n if (!this.tracing?.session) return;\n\n this.tracing.session.setUser(user);\n }\n\n setSessionAttributes(attrs) {\n if (!this.tracing?.session) return;\n\n attrs = { ...attrs };\n\n this.tracing.session.setAttributes(attrs);\n }\n\n setSessionAttributesFromOptions(options) {\n const person = options.person || options.payload?.person;\n if (person) {\n this.setSessionUser(person);\n }\n const code_version =\n options.client?.javascript?.code_version ||\n options.codeVersion ||\n options.code_version ||\n options.payload?.client?.javascript?.code_version ||\n options.payload?.code_version ||\n options.payload?.codeVersion;\n this.setSessionAttributes({\n 'rollbar.codeVersion': code_version,\n 'rollbar.notifier.name': 'rollbar-browser-js',\n 'rollbar.notifier.version': options.version,\n });\n }\n\n // The following two methods are used internally and are not meant for public use\n captureDomContentLoaded(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureDomContentLoaded(ts);\n }\n\n captureLoad(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureLoad(ts);\n }\n\n loadFull() {\n logger.info(\n 'Unexpected Rollbar.loadFull() called on a Notifier instance. This can happen when Rollbar is loaded multiple times.',\n );\n }\n\n _createItem(args) {\n return _.createItem(args, logger, this);\n }\n\n // Static version of instance methods support the legacy pattern of a\n // global `Rollbar` instance, where after calling `Rollbar.init()`,\n // `Rollbar` can be used as if it were an instance.\n // If support for this pattern is dropped, these static methods can be removed.\n static callInstance(method, args) {\n if (!_instance) {\n const message = 'Rollbar is not initialized';\n logger.error(message);\n const maybeCallback = _getFirstFunction(args);\n if (maybeCallback) {\n maybeCallback(new Error(message));\n }\n return;\n }\n return _instance[method].apply(_instance, args);\n }\n\n static global = (...args) => Rollbar.callInstance('global', args);\n static configure = (...args) => Rollbar.callInstance('configure', args);\n static lastError = (...args) => Rollbar.callInstance('lastError', args);\n static log = (...args) => Rollbar.callInstance('log', args);\n static debug = (...args) => Rollbar.callInstance('debug', args);\n static info = (...args) => Rollbar.callInstance('info', args);\n static warn = (...args) => Rollbar.callInstance('warn', args);\n static warning = (...args) => Rollbar.callInstance('warning', args);\n static error = (...args) => Rollbar.callInstance('error', args);\n static critical = (...args) => Rollbar.callInstance('critical', args);\n static buildJsonPayload = (...args) =>\n Rollbar.callInstance('buildJsonPayload', args);\n static sendJsonPayload = (...args) =>\n Rollbar.callInstance('sendJsonPayload', args);\n static wrap = (...args) => Rollbar.callInstance('wrap', args);\n static captureEvent = (...args) => Rollbar.callInstance('captureEvent', args);\n}\n\n/* Internal */\n\nfunction addTransformsToNotifier(notifier, rollbar, gWindow) {\n notifier\n .addTransform(transforms.handleDomException)\n .addTransform(transforms.handleItemWithError)\n .addTransform(transforms.ensureItemHasSomethingToSay)\n .addTransform(transforms.addBaseInfo)\n .addTransform(transforms.addRequestInfo(gWindow))\n .addTransform(transforms.addClientInfo(gWindow))\n .addTransform(transforms.addPluginInfo(gWindow))\n .addTransform(transforms.addBody)\n .addTransform(sharedTransforms.addMessageWithError)\n .addTransform(sharedTransforms.addTelemetryData)\n .addTransform(sharedTransforms.addConfigToPayload)\n .addTransform(transforms.addScrubber(rollbar.scrub))\n .addTransform(sharedTransforms.addPayloadOptions)\n .addTransform(sharedTransforms.userTransform(logger))\n .addTransform(sharedTransforms.addConfiguredOptions)\n .addTransform(sharedTransforms.addDiagnosticKeys)\n .addTransform(sharedTransforms.itemToPayload);\n}\n\nfunction addPredicatesToQueue(queue) {\n queue\n .addPredicate(sharedPredicates.checkLevel)\n .addPredicate(predicates.checkIgnore)\n .addPredicate(sharedPredicates.userCheckIgnore(logger))\n .addPredicate(sharedPredicates.urlIsNotBlockListed(logger))\n .addPredicate(sharedPredicates.urlIsSafeListed(logger))\n .addPredicate(sharedPredicates.messageIsIgnored(logger));\n}\n\nfunction _getFirstFunction(args) {\n for (var i = 0, len = args.length; i < len; ++i) {\n if (_.isFunction(args[i])) {\n return args[i];\n }\n }\n return undefined;\n}\n\nfunction _gWindow() {\n return (\n (typeof window !== 'undefined' && window) ||\n (typeof self !== 'undefined' && self)\n );\n}\n\nconst defaultOptions = {\n environment: 'unknown',\n version: defaults.version,\n scrubFields: browserDefaults.scrubFields,\n logLevel: defaults.logLevel,\n reportLevel: defaults.reportLevel,\n uncaughtErrorLevel: defaults.uncaughtErrorLevel,\n endpoint: defaults.endpoint,\n verbose: false,\n enabled: true,\n transmit: true,\n sendConfig: false,\n includeItemsInTelemetry: true,\n captureIp: true,\n inspectAnonymousErrors: true,\n ignoreDuplicateErrors: true,\n wrapGlobalEventHandlers: false,\n replay: replayDefaults,\n tracing: tracingDefaults,\n};\n\nexport default Rollbar;\n","import { hasOwn } from '../utility.js';\n\n/*\n * headers - Detect when fetch Headers are undefined and use a partial polyfill.\n *\n * A full polyfill is not used in order to keep package size as small as possible.\n * Since this is only used internally and is not added to the window object,\n * the full interface doesn't need to be supported.\n *\n * This implementation is modified from whatwg-fetch:\n * https://github.com/github/fetch\n */\nfunction headers(headers) {\n if (typeof Headers === 'undefined') {\n return new FetchHeaders(headers);\n }\n\n return new Headers(headers);\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n return name.toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value;\n}\n\nfunction iteratorFor(items) {\n var iterator = {\n next: function () {\n var value = items.shift();\n return { done: value === undefined, value: value };\n },\n };\n\n return iterator;\n}\n\nfunction FetchHeaders(headers) {\n this.map = {};\n\n if (headers instanceof FetchHeaders) {\n headers.forEach(function (value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function (header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function (name) {\n this.append(name, headers[name]);\n }, this);\n }\n}\n\nFetchHeaders.prototype.append = function (name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n};\n\nFetchHeaders.prototype.get = function (name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null;\n};\n\nFetchHeaders.prototype.has = function (name) {\n return hasOwn(this.map, normalizeName(name));\n};\n\nFetchHeaders.prototype.forEach = function (callback, thisArg) {\n for (var name in this.map) {\n if (hasOwn(this.map, name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n};\n\nFetchHeaders.prototype.entries = function () {\n var items = [];\n this.forEach(function (value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items);\n};\n\nexport default headers;\n","function replace(obj, name, replacement, replacements, type) {\n var orig = obj[name];\n obj[name] = replacement(orig);\n if (replacements) {\n replacements[type].push([obj, name, orig]);\n }\n}\n\nexport default replace;\n","function getElementType(e) {\n return (e.getAttribute('type') || '').toLowerCase();\n}\n\nfunction isDescribedElement(element, type, subtypes) {\n if (element.tagName.toLowerCase() !== type.toLowerCase()) {\n return false;\n }\n if (!subtypes) {\n return true;\n }\n const elementType = getElementType(element);\n for (const subtype of subtypes) {\n if (subtype === elementType) {\n return true;\n }\n }\n return false;\n}\n\nfunction getElementFromEvent(evt, doc) {\n if (evt.target) {\n return evt.target;\n }\n if (doc && doc.elementFromPoint) {\n return doc.elementFromPoint(evt.clientX, evt.clientY);\n }\n return undefined;\n}\n\nfunction treeToArray(elem) {\n var MAX_HEIGHT = 5;\n var out = [];\n var nextDescription;\n for (var height = 0; elem && height < MAX_HEIGHT; height++) {\n nextDescription = describeElement(elem);\n if (!nextDescription || nextDescription.tagName === 'html') {\n break;\n }\n out.unshift(nextDescription);\n elem = elem.parentNode;\n }\n return out;\n}\n\nfunction elementArrayToString(a) {\n var MAX_LENGTH = 80;\n var separator = ' > ',\n separatorLength = separator.length;\n var out = [],\n len = 0,\n nextStr,\n totalLength;\n\n for (var i = a.length - 1; i >= 0; i--) {\n nextStr = descriptionToString(a[i]);\n totalLength = len + out.length * separatorLength + nextStr.length;\n if (i < a.length - 1 && totalLength >= MAX_LENGTH + 3) {\n out.unshift('...');\n break;\n }\n out.unshift(nextStr);\n len += nextStr.length;\n }\n return out.join(separator);\n}\n\nfunction elementString(elem) {\n return elementArrayToString(treeToArray(elem));\n}\n\nfunction descriptionToString(desc) {\n if (!desc || !desc.tagName) {\n return '';\n }\n var out = [desc.tagName];\n if (desc.id) {\n out.push('#' + desc.id);\n }\n if (desc.classes) {\n out.push('.' + desc.classes.join('.'));\n }\n for (const attribute of desc.attributes) {\n out.push('[' + attribute.key + '=\"' + attribute.value + '\"]');\n }\n\n return out.join('');\n}\n\n/**\n * Input: a dom element\n * Output: null if tagName is falsey or input is falsey, else\n * {\n * tagName: String,\n * id: String | undefined,\n * classes: [String] | undefined,\n * attributes: [\n * {\n * key: OneOf(type, name, title, alt),\n * value: String\n * }\n * ]\n * }\n */\nfunction describeElement(elem) {\n if (!elem || !elem.tagName) {\n return null;\n }\n var out = {},\n className;\n out.tagName = elem.tagName.toLowerCase();\n if (elem.id) {\n out.id = elem.id;\n }\n className = elem.className;\n if (className && typeof className === 'string') {\n out.classes = className.split(/\\s+/);\n }\n var attributes = ['type', 'name', 'title', 'alt'];\n out.attributes = [];\n for (const attribute of attributes) {\n const attr = elem.getAttribute(attribute);\n if (attr) {\n out.attributes.push({ key: attribute, value: attr });\n }\n }\n return out;\n}\n\n/*\n * Detects if the given element matches any of the given class names (string or regex),\n * or CSS selectors.\n * @param {HTMLElement} element - The DOM element to check.\n * @param {Array} classes - An array of class names (string or regex) to match against.\n * @param {Array} selectors - An array of CSS selectors to match against.\n * @return {boolean} - True if the element matches any of the classes or selectors, false otherwise.\n */\nfunction isMatchingElement(element, classes, selectors) {\n try {\n for (const cls of classes) {\n if (typeof cls === 'string') {\n if (element.classList.contains(cls)) {\n return true;\n }\n } else {\n for (const c of element.classList) {\n if (cls.test(c)) {\n return true;\n }\n }\n }\n }\n for (const sel of selectors) {\n if (element.matches(sel)) {\n return true;\n }\n }\n } catch (_e) {\n // ignore errors from invalid arguments\n }\n return false;\n}\n\nexport {\n describeElement,\n descriptionToString,\n elementArrayToString,\n elementString,\n treeToArray,\n getElementFromEvent,\n isDescribedElement,\n getElementType,\n isMatchingElement,\n};\n","/* eslint-disable @typescript-eslint/no-this-alias */\n// TODO(matux): refactor to remove no-this-alias disable\n\nimport logger from '../logger.js';\nimport scrub from '../scrub.js';\nimport headers from '../utility/headers.js';\nimport replace from '../utility/replace.js';\nimport * as _ from '../utility.js';\n\nimport * as domUtil from './domUtility.js';\nimport * as urlparser from './url.js';\n\nconst defaults = {\n network: true,\n networkResponseHeaders: false,\n networkResponseBody: false,\n networkRequestHeaders: false,\n networkRequestBody: false,\n networkErrorOnHttp5xx: false,\n networkErrorOnHttp4xx: false,\n networkErrorOnHttp0: false,\n log: true,\n dom: true,\n navigation: true,\n connectivity: true,\n contentSecurityPolicy: true,\n errorOnContentSecurityPolicy: false,\n};\n\nfunction restore(replacements, type) {\n let b;\n while (replacements[type].length) {\n b = replacements[type].shift();\n b[0][b[1]] = b[2];\n }\n}\n\nfunction nameFromDescription(description) {\n if (!description || !description.attributes) {\n return null;\n }\n const attrs = description.attributes;\n for (const a of attrs) {\n if (a.key === 'name') {\n return a.value;\n }\n }\n return null;\n}\n\nfunction defaultValueScrubber(scrubFields) {\n const patterns = [];\n for (const field of scrubFields) {\n patterns.push(new RegExp(field, 'i'));\n }\n return function (description) {\n const name = nameFromDescription(description);\n if (!name) {\n return false;\n }\n for (const p of patterns) {\n if (p.test(name)) {\n return true;\n }\n }\n return false;\n };\n}\n\nclass Instrumenter {\n constructor(options, telemeter, rollbar, _window, _document) {\n this.options = options;\n let autoInstrument = options.autoInstrument;\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.telemeter = telemeter;\n this.rollbar = rollbar;\n this.diagnostic = rollbar.client.notifier.diagnostic;\n this._window = _window || {};\n this._document = _document || {};\n this.replacements = {\n network: [],\n log: [],\n navigation: [],\n connectivity: [],\n };\n this.eventRemovers = {\n dom: [],\n connectivity: [],\n contentsecuritypolicy: [],\n };\n\n this._location = this._window.location;\n this._lastHref = this._location && this._location.href;\n }\n\n configureScrubbing() {\n const options = this.options;\n this.scrubTelemetryInputs = Boolean(\n options.scrubTelemetryInputs ?? options.replay?.maskAllInputs,\n );\n this.telemetryScrubber = options.telemetryScrubber;\n this.defaultValueScrubber = defaultValueScrubber(options.scrubFields);\n this.maskInputFn = options.replay?.maskInputFn;\n this.maskInputOptions = options.replay?.maskInputOptions || {};\n this.scrubClasses = [\n options.replay?.blockClass,\n options.replay?.ignoreClass,\n options.replay?.maskTextClass,\n ].filter(Boolean);\n this.scrubSelectors = [\n options.replay?.blockSelector,\n options.replay?.ignoreSelector,\n options.replay?.maskTextSelector,\n ].filter(Boolean);\n }\n\n configure(options) {\n this.options = _.merge(this.options, options);\n let autoInstrument = options.autoInstrument;\n const oldSettings = _.merge(this.autoInstrument);\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.instrument(oldSettings);\n }\n\n // eslint-disable-next-line complexity\n instrument(oldSettings) {\n if (this.autoInstrument.network && !(oldSettings && oldSettings.network)) {\n this.instrumentNetwork();\n } else if (\n !this.autoInstrument.network &&\n oldSettings &&\n oldSettings.network\n ) {\n this.deinstrumentNetwork();\n }\n\n if (this.autoInstrument.log && !(oldSettings && oldSettings.log)) {\n this.instrumentConsole();\n } else if (!this.autoInstrument.log && oldSettings && oldSettings.log) {\n this.deinstrumentConsole();\n }\n\n if (this.autoInstrument.dom && !(oldSettings && oldSettings.dom)) {\n this.instrumentDom();\n } else if (!this.autoInstrument.dom && oldSettings && oldSettings.dom) {\n this.deinstrumentDom();\n }\n\n if (\n this.autoInstrument.navigation &&\n !(oldSettings && oldSettings.navigation)\n ) {\n this.instrumentNavigation();\n } else if (\n !this.autoInstrument.navigation &&\n oldSettings &&\n oldSettings.navigation\n ) {\n this.deinstrumentNavigation();\n }\n\n if (\n this.autoInstrument.connectivity &&\n !(oldSettings && oldSettings.connectivity)\n ) {\n this.instrumentConnectivity();\n } else if (\n !this.autoInstrument.connectivity &&\n oldSettings &&\n oldSettings.connectivity\n ) {\n this.deinstrumentConnectivity();\n }\n\n if (\n this.autoInstrument.contentSecurityPolicy &&\n !(oldSettings && oldSettings.contentSecurityPolicy)\n ) {\n this.instrumentContentSecurityPolicy();\n } else if (\n !this.autoInstrument.contentSecurityPolicy &&\n oldSettings &&\n oldSettings.contentSecurityPolicy\n ) {\n this.deinstrumentContentSecurityPolicy();\n }\n }\n\n deinstrumentNetwork() {\n restore(this.replacements, 'network');\n }\n\n instrumentNetwork() {\n const self = this;\n\n function wrapProp(prop, xhr) {\n if (prop in xhr && _.isFunction(xhr[prop])) {\n replace(xhr, prop, function (orig) {\n return self.rollbar.wrap(orig);\n });\n }\n }\n\n if ('XMLHttpRequest' in this._window) {\n const xhrp = this._window.XMLHttpRequest.prototype;\n replace(\n xhrp,\n 'open',\n function (orig) {\n return function (method, url) {\n const isUrlObject = _isUrlObject(url);\n if (_.isType(url, 'string') || isUrlObject) {\n url = isUrlObject ? url.toString() : url;\n if (this.__rollbar_xhr) {\n this.__rollbar_xhr.method = method;\n this.__rollbar_xhr.url = url;\n this.__rollbar_xhr.status_code = null;\n this.__rollbar_xhr.start_time_ms = _.now();\n this.__rollbar_xhr.end_time_ms = null;\n } else {\n this.__rollbar_xhr = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'setRequestHeader',\n function (orig) {\n return function (header, value) {\n // If xhr.open is async, __rollbar_xhr may not be initialized yet.\n if (!this.__rollbar_xhr) {\n this.__rollbar_xhr = {};\n }\n if (_.isType(header, 'string') && _.isType(value, 'string')) {\n if (self.autoInstrument.networkRequestHeaders) {\n if (!this.__rollbar_xhr.request_headers) {\n this.__rollbar_xhr.request_headers = {};\n }\n this.__rollbar_xhr.request_headers[header] = value;\n }\n // We want the content type even if request header telemetry is off.\n if (header.toLowerCase() === 'content-type') {\n this.__rollbar_xhr.request_content_type = value;\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'send',\n function (orig) {\n return function (data) {\n const xhr = this;\n\n function onreadystatechangeHandler() {\n if (xhr.__rollbar_xhr) {\n if (xhr.__rollbar_xhr.status_code === null) {\n xhr.__rollbar_xhr.status_code = 0;\n if (self.autoInstrument.networkRequestBody) {\n xhr.__rollbar_xhr.request = data;\n }\n xhr.__rollbar_event = self.captureNetwork(\n xhr.__rollbar_xhr,\n 'xhr',\n undefined,\n );\n }\n if (xhr.readyState < 2) {\n xhr.__rollbar_xhr.start_time_ms = _.now();\n }\n if (xhr.readyState > 3) {\n const end_time_ms = _.now();\n xhr.__rollbar_xhr.end_time_ms = end_time_ms;\n\n let headers = null;\n xhr.__rollbar_xhr.response_content_type =\n xhr.getResponseHeader('Content-Type');\n if (self.autoInstrument.networkResponseHeaders) {\n const headersConfig =\n self.autoInstrument.networkResponseHeaders;\n headers = {};\n try {\n let header;\n if (headersConfig === true) {\n const allHeaders = xhr.getAllResponseHeaders();\n if (allHeaders) {\n const arr = allHeaders.trim().split(/[\\r\\n]+/);\n let parts, value;\n for (const h of arr) {\n parts = h.split(': ');\n header = parts.shift();\n value = parts.join(': ');\n headers[header] = value;\n }\n }\n } else {\n for (const h of headersConfig) {\n headers[h] = xhr.getResponseHeader(h);\n }\n }\n } catch (_e) {\n /* we ignore the errors here that could come from different\n * browser issues with the xhr methods */\n }\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n try {\n body = xhr.responseText;\n } catch (_e) {\n /* ignore errors from reading responseText */\n }\n }\n let response = null;\n if (body || headers) {\n response = {};\n if (body) {\n if (\n self.isJsonContentType(\n xhr.__rollbar_xhr.response_content_type,\n )\n ) {\n response.body = self.scrubJson(body);\n } else {\n response.body = body;\n }\n }\n if (headers) {\n response.headers = headers;\n }\n }\n if (response) {\n xhr.__rollbar_xhr.response = response;\n }\n try {\n let code = xhr.status;\n code = code === 1223 ? 204 : code;\n xhr.__rollbar_xhr.status_code = code;\n self.addOtelNetworkResponse(\n xhr.__rollbar_event,\n end_time_ms,\n code,\n );\n xhr.__rollbar_event.level =\n self.telemeter.levelFromStatus(code);\n self.errorOnHttpStatus(xhr.__rollbar_xhr);\n } catch (_e) {\n /* ignore possible exception from xhr.status */\n }\n }\n }\n }\n\n wrapProp('onload', xhr);\n wrapProp('onerror', xhr);\n wrapProp('onprogress', xhr);\n\n if (\n 'onreadystatechange' in xhr &&\n _.isFunction(xhr.onreadystatechange)\n ) {\n replace(xhr, 'onreadystatechange', function (orig) {\n return self.rollbar.wrap(\n orig,\n undefined,\n onreadystatechangeHandler,\n );\n });\n } else {\n xhr.onreadystatechange = onreadystatechangeHandler;\n }\n if (xhr.__rollbar_xhr && self.trackHttpErrors()) {\n xhr.__rollbar_xhr.stack = new Error().stack;\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n }\n\n if ('fetch' in this._window) {\n replace(\n this._window,\n 'fetch',\n function (orig) {\n return function (_fn, _t) {\n const args = [...arguments];\n const input = args[0];\n let method = 'GET';\n let url;\n const isUrlObject = _isUrlObject(input);\n if (_.isType(input, 'string') || isUrlObject) {\n url = isUrlObject ? input.toString() : input;\n } else if (input) {\n url = input.url;\n if (input.method) {\n method = input.method;\n }\n }\n if (args[1] && args[1].method) {\n method = args[1].method;\n }\n const metadata = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n if (args[1] && args[1].headers) {\n // Argument may be a Headers object, or plain object. Ensure here that\n // we are working with a Headers object with case-insensitive keys.\n const reqHeaders = headers(args[1].headers);\n\n metadata.request_content_type = reqHeaders.get('Content-Type');\n\n if (self.autoInstrument.networkRequestHeaders) {\n metadata.request_headers = self.fetchHeaders(\n reqHeaders,\n self.autoInstrument.networkRequestHeaders,\n );\n }\n }\n\n if (self.autoInstrument.networkRequestBody) {\n if (args[1] && args[1].body) {\n metadata.request = args[1].body;\n } else if (\n args[0] &&\n !_.isType(args[0], 'string') &&\n args[0].body\n ) {\n metadata.request = args[0].body;\n }\n }\n const telemetryEvent = self.captureNetwork(\n metadata,\n 'fetch',\n undefined,\n );\n if (self.trackHttpErrors()) {\n metadata.stack = new Error().stack;\n }\n\n // Start our handler before returning the promise. This allows resp.clone()\n // to execute before other handlers touch the response.\n return orig.apply(this, args).then(function (resp) {\n const end_time_ms = _.now();\n metadata.end_time_ms = end_time_ms;\n metadata.status_code = resp.status;\n self.addOtelNetworkResponse(\n telemetryEvent,\n end_time_ms,\n resp.status,\n );\n\n metadata.response_content_type = resp.headers.get('Content-Type');\n let headers = null;\n if (self.autoInstrument.networkResponseHeaders) {\n headers = self.fetchHeaders(\n resp.headers,\n self.autoInstrument.networkResponseHeaders,\n );\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n if (typeof resp.text === 'function') {\n // Response.text() is not implemented on some platforms\n // The response must be cloned to prevent reading (and locking) the original stream.\n // This must be done before other handlers touch the response.\n body = resp.clone().text(); //returns a Promise\n }\n }\n if (headers || body) {\n metadata.response = {};\n if (body) {\n // Test to ensure body is a Promise, which it should always be.\n if (typeof body.then === 'function') {\n body.then(function (text) {\n if (\n text &&\n self.isJsonContentType(metadata.response_content_type)\n ) {\n metadata.response.body = self.scrubJson(text);\n } else {\n metadata.response.body = text;\n }\n });\n } else {\n metadata.response.body = body;\n }\n }\n if (headers) {\n metadata.response.headers = headers;\n }\n }\n self.errorOnHttpStatus(metadata);\n return resp;\n });\n };\n },\n this.replacements,\n 'network',\n );\n }\n }\n\n captureNetwork(metadata, subtype, rollbarUUID) {\n if (\n metadata.request &&\n this.isJsonContentType(metadata.request_content_type)\n ) {\n metadata.request = this.scrubJson(metadata.request);\n }\n return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID);\n }\n\n isJsonContentType(contentType) {\n return contentType &&\n _.isType(contentType, 'string') &&\n contentType.toLowerCase().includes('json')\n ? true\n : false;\n }\n\n addOtelNetworkResponse(event, endTimeMs, statusCode) {\n if (event.otelAttributes) {\n event.otelAttributes['response.timeUnixNano'] = (\n endTimeMs * 1e6\n ).toString();\n event.otelAttributes.statusCode = statusCode;\n }\n }\n\n scrubJson(json) {\n return JSON.stringify(scrub(JSON.parse(json), this.options.scrubFields));\n }\n\n fetchHeaders(inHeaders, headersConfig) {\n const outHeaders = {};\n try {\n if (headersConfig === true) {\n if (typeof inHeaders.entries === 'function') {\n // Headers.entries() is not implemented in IE\n const allHeaders = inHeaders.entries();\n let currentHeader = allHeaders.next();\n while (!currentHeader.done) {\n outHeaders[currentHeader.value[0]] = currentHeader.value[1];\n currentHeader = allHeaders.next();\n }\n }\n } else {\n for (const h of headersConfig) {\n outHeaders[h] = inHeaders.get(h);\n }\n }\n } catch (_e) {\n /* ignore probable IE errors */\n }\n return outHeaders;\n }\n\n trackHttpErrors() {\n return (\n this.autoInstrument.networkErrorOnHttp5xx ||\n this.autoInstrument.networkErrorOnHttp4xx ||\n this.autoInstrument.networkErrorOnHttp0\n );\n }\n\n errorOnHttpStatus(metadata) {\n const status = metadata.status_code;\n\n if (\n (status >= 500 && this.autoInstrument.networkErrorOnHttp5xx) ||\n (status >= 400 && this.autoInstrument.networkErrorOnHttp4xx) ||\n (status === 0 && this.autoInstrument.networkErrorOnHttp0)\n ) {\n const error = new Error('HTTP request failed with Status ' + status);\n error.stack = metadata.stack;\n this.rollbar.error(error, { skipFrames: 1 });\n }\n }\n\n deinstrumentConsole() {\n let b;\n while (this.replacements['log'].length) {\n b = this.replacements['log'].shift();\n this._window.console[b[0]] = b[1];\n }\n }\n\n instrumentConsole() {\n if (!this._window?.console?.log) {\n return;\n }\n\n const self = this;\n const c = this._window.console;\n\n function wrapConsole(method) {\n // eslint-disable-next-line strict\n 'use strict'; // See https://github.com/rollbar/rollbar.js/pull/778\n\n const orig = c[method];\n const origConsole = c;\n const level = method === 'warn' ? 'warning' : method;\n c[method] = function () {\n const args = Array.prototype.slice.call(arguments);\n const message = _.formatArgsAsString(args);\n self.telemeter.captureLog(message, level, null, _.now());\n if (orig) {\n Function.prototype.apply.call(orig, origConsole, args);\n }\n };\n self.replacements['log'].push([method, orig]);\n }\n const methods = ['debug', 'info', 'warn', 'error', 'log'];\n try {\n for (const m of methods) {\n wrapConsole(m);\n }\n } catch (e) {\n this.diagnostic.instrumentConsole = { error: e.message };\n }\n }\n\n deinstrumentDom() {\n this.removeListeners('dom');\n }\n\n instrumentDom() {\n this.addListener(\n 'dom',\n this._window,\n ['click', 'dblclick', 'contextmenu'],\n (e) => this.handleEvent('click', e),\n );\n this.addListener(\n 'dom',\n this._window,\n ['dragstart', 'dragend', 'dragenter', 'dragleave', 'drop'],\n (e) => this.handleEvent('dragdrop', e),\n );\n this.addListener('dom', this._window, ['blur', 'focus'], (e) =>\n this.handleEvent('focus', e),\n );\n this.addListener('dom', this._window, ['submit', 'invalid'], (e) =>\n this.handleEvent('form', e),\n );\n this.addListener('dom', this._window, ['input', 'change'], (e) =>\n this.handleEvent('input', e),\n );\n this.addListener('dom', this._window, ['resize'], (e) =>\n this.handleEvent('resize', e),\n );\n this.addListener('dom', this._document, ['DOMContentLoaded'], (e) =>\n this.handleEvent('contentLoaded', e),\n );\n }\n\n handleEvent(name, evt) {\n try {\n return {\n click: this.handleClick,\n dragdrop: this.handleDrag,\n focus: this.handleFocus,\n form: this.handleForm,\n input: this.handleInput,\n resize: this.handleResize,\n contentLoaded: this.handleContentLoaded,\n }[name].call(this, evt);\n } catch (exc) {\n logger.log(`${name} handler error`, evt, exc, exc.stack);\n }\n }\n\n handleContentLoaded(_evt) {\n this.rollbar.triggerReplay({\n type: 'navigation',\n path: new URL(this._location.href).pathname,\n });\n }\n\n handleClick(evt) {\n const tagName = evt.target?.tagName.toLowerCase();\n if (['input', 'select', 'textarea'].includes(tagName)) return;\n\n this.telemeter.captureClick({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n timestamp: _.now(),\n });\n }\n\n handleFocus(evt) {\n const type = evt.type;\n const element = evt.target?.window\n ? 'window'\n : domUtil.elementString(evt.target);\n\n this.telemeter.captureFocus({\n type: type,\n isSynthetic: !evt.isTrusted,\n element,\n timestamp: _.now(),\n });\n }\n\n handleForm(_evt) {\n // TODO: implement form event handling\n //const type = evt.type;\n //const elementString = evt.target?.window\n // ? 'window'\n // : domUtil.elementString(evt.target);\n }\n\n handleResize(evt) {\n const textZoomRatio = window.screen.width / window.innerWidth;\n\n this.telemeter.captureResize({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n width: window.innerWidth,\n height: window.innerHeight,\n textZoomRatio: textZoomRatio,\n timestamp: _.now(),\n });\n }\n\n handleDrag(evt) {\n const type = evt.type;\n let kinds, mediaTypes, dropEffect, effectAllowed;\n\n if (type === 'drop') {\n kinds = [];\n mediaTypes = [];\n const objs = [...evt.dataTransfer.files, ...evt.dataTransfer.items];\n for (const o of objs) {\n if (o.kind && o.type) {\n kinds.push(o.kind);\n mediaTypes.push(o.type);\n }\n }\n }\n if (['drop', 'dragstart'].includes(type)) {\n dropEffect = evt.dataTransfer?.dropEffect;\n effectAllowed = evt.dataTransfer?.effectAllowed;\n }\n\n this.telemeter.captureDragDrop({\n type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n dropEffect: dropEffect,\n effectAllowed: effectAllowed,\n kinds: JSON.stringify(kinds),\n mediaTypes: JSON.stringify(mediaTypes),\n timestamp: _.now(),\n });\n }\n\n /*\n * Applies Rollbar telemetry scrubbing options to the dom input value.\n * When replay options are present, applies those as well.\n */\n scrubInputValue(value, element, tagName, inputType) {\n const mask = '******';\n\n if (inputType === 'password') {\n return mask;\n }\n\n if (this.scrubTelemetryInputs) {\n return mask;\n } else {\n const description = domUtil.describeElement(element);\n if (this.telemetryScrubber) {\n if (this.telemetryScrubber(description)) {\n return mask;\n }\n } else if (this.defaultValueScrubber(description)) {\n return mask;\n }\n }\n\n // Apply replay options regardless of other scrubbing\n if (\n domUtil.isMatchingElement(element, this.scrubClasses, this.scrubSelectors)\n ) {\n return mask;\n }\n\n // This check is last since maskInputFn returns a modified value rather\n // than a boolean, which would cause an early return even if the value\n // was not scrubbed.\n if (\n this.maskInputOptions[tagName.toLowerCase()] ||\n this.maskInputOptions[inputType]\n ) {\n if (this.maskInputFn) {\n return this.maskInputFn(value, element);\n } else {\n return mask;\n }\n }\n\n return value;\n }\n\n /*\n * Uses the `input` event for everything except radio and checkbox inputs.\n * For those, it uses the `change` event.\n */\n handleInput(evt) {\n const type = evt.type;\n const tagName = evt.target?.tagName.toLowerCase();\n let value = evt.target?.value;\n let inputType = evt.target?.attributes?.type?.value || evt.target?.type;\n\n if (value !== undefined) {\n value = this.scrubInputValue(value, evt.target, tagName, inputType);\n }\n\n switch (type) {\n case 'input':\n if (['radio', 'checkbox'].includes(inputType)) return;\n if (['select', 'textarea'].includes(tagName)) {\n inputType = tagName;\n }\n break;\n\n case 'change':\n if (!['radio', 'checkbox'].includes(inputType)) return;\n if (inputType === 'checkbox') {\n value = evt.target?.checked;\n }\n break;\n }\n\n this.telemeter.captureInput({\n type: inputType,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n value,\n timestamp: _.now(),\n });\n }\n\n deinstrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n restore(this.replacements, 'navigation');\n }\n\n instrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n const self = this;\n replace(\n this._window,\n 'onpopstate',\n function (orig) {\n return function () {\n const current = self._location.href;\n self.handleUrlChange(self._lastHref, current);\n if (orig) {\n orig.apply(this, arguments);\n }\n };\n },\n this.replacements,\n 'navigation',\n );\n\n replace(\n this._window.history,\n 'pushState',\n function (orig) {\n return function () {\n const url = arguments.length > 2 ? arguments[2] : undefined;\n if (url) {\n self.handleUrlChange(self._lastHref, String(url));\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'navigation',\n );\n }\n\n handleUrlChange(from, to) {\n const parsedHref = urlparser.parse(this._location.href);\n const parsedTo = urlparser.parse(to);\n const parsedFrom = urlparser.parse(from);\n this._lastHref = to;\n if (\n parsedHref.protocol === parsedTo.protocol &&\n parsedHref.host === parsedTo.host\n ) {\n to = parsedTo.path + (parsedTo.hash || '');\n }\n if (\n parsedHref.protocol === parsedFrom.protocol &&\n parsedHref.host === parsedFrom.host\n ) {\n from = parsedFrom.path + (parsedFrom.hash || '');\n }\n this.telemeter.captureNavigation(from, to, null, _.now());\n this.rollbar.triggerReplay({\n type: 'navigation',\n path: to,\n });\n }\n\n deinstrumentConnectivity = function () {\n this.removeListeners('connectivity');\n };\n\n instrumentConnectivity() {\n const self = this;\n this.addListener(\n 'connectivity',\n this._window,\n ['online', 'offline'],\n (evt) => self.handleConnectivity(evt),\n );\n }\n\n handleConnectivity(evt) {\n const type = evt.type;\n\n this.telemeter.captureConnectivityChange({\n type,\n isSynthetic: !evt.isTrusted,\n timestamp: _.now(),\n });\n }\n\n handleCspEvent(cspEvent) {\n let message =\n 'Security Policy Violation: ' +\n 'blockedURI: ' +\n cspEvent.blockedURI +\n ', ' +\n 'violatedDirective: ' +\n cspEvent.violatedDirective +\n ', ' +\n 'effectiveDirective: ' +\n cspEvent.effectiveDirective +\n ', ';\n\n if (cspEvent.sourceFile) {\n message +=\n 'location: ' +\n cspEvent.sourceFile +\n ', ' +\n 'line: ' +\n cspEvent.lineNumber +\n ', ' +\n 'col: ' +\n cspEvent.columnNumber +\n ', ';\n }\n\n message += 'originalPolicy: ' + cspEvent.originalPolicy;\n\n this.telemeter.captureLog(message, 'error', null, _.now());\n this.handleCspError(message);\n }\n\n handleCspError(message) {\n if (this.autoInstrument.errorOnContentSecurityPolicy) {\n this.rollbar.error(message);\n }\n }\n\n deinstrumentContentSecurityPolicy() {\n this.removeListeners('contentsecuritypolicy');\n }\n\n instrumentContentSecurityPolicy() {\n if (!('addEventListener' in this._document)) {\n return;\n }\n\n const cspHandler = this.handleCspEvent.bind(this);\n this.addListener(\n 'contentsecuritypolicy',\n this._document,\n ['securitypolicyviolation'],\n cspHandler,\n );\n }\n\n addListener(section, obj, types, handler) {\n if (obj.addEventListener) {\n for (const t of types) {\n const options = { capture: true, passive: true };\n obj.addEventListener(t, handler, options, true);\n this.eventRemovers[section].push(function () {\n obj.removeEventListener(t, handler, options);\n });\n }\n }\n }\n\n removeListeners(section) {\n let r;\n while (this.eventRemovers[section].length) {\n r = this.eventRemovers[section].shift();\n r();\n }\n }\n}\n\nfunction _isUrlObject(input) {\n return typeof URL !== 'undefined' && input instanceof URL;\n}\n\nexport default Instrumenter;\n","import { hasOwn } from '../utility.js';\n\nfunction wrapGlobals(window, handler, shim) {\n if (!window) {\n return;\n }\n // Adapted from https://github.com/bugsnag/bugsnag-js\n var globals =\n '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'.split(\n ',',\n );\n var i, global;\n for (i = 0; i < globals.length; ++i) {\n global = globals[i];\n\n if (window[global] && window[global].prototype) {\n _extendListenerPrototype(handler, window[global].prototype, shim);\n }\n }\n}\n\nfunction _extendListenerPrototype(handler, prototype, shim) {\n if (hasOwn(prototype, 'addEventListener')) {\n var oldAddEventListener = prototype.addEventListener;\n while (\n oldAddEventListener._rollbarOldAdd &&\n oldAddEventListener.belongsToShim\n ) {\n oldAddEventListener = oldAddEventListener._rollbarOldAdd;\n }\n var addFn = function (event, callback, bubble) {\n oldAddEventListener.call(this, event, handler.wrap(callback), bubble);\n };\n addFn._rollbarOldAdd = oldAddEventListener;\n addFn.belongsToShim = shim;\n prototype.addEventListener = addFn;\n\n var oldRemoveEventListener = prototype.removeEventListener;\n while (\n oldRemoveEventListener._rollbarOldRemove &&\n oldRemoveEventListener.belongsToShim\n ) {\n oldRemoveEventListener = oldRemoveEventListener._rollbarOldRemove;\n }\n var removeFn = function (event, callback, bubble) {\n oldRemoveEventListener.call(\n this,\n event,\n (callback && callback._rollbar_wrapped) || callback,\n bubble,\n );\n };\n removeFn._rollbarOldRemove = oldRemoveEventListener;\n removeFn.belongsToShim = shim;\n prototype.removeEventListener = removeFn;\n }\n}\n\nexport default wrapGlobals;\n","import scrub from '../scrub.js';\nimport Telemeter from '../telemetry.js';\nimport Tracing from '../tracing/tracing.js';\nimport truncation from '../truncation.js';\n\nimport Rollbar from './core.js';\nimport Instrumenter from './telemetry.js';\nimport wrapGlobals from './wrapGlobals.js';\n\nRollbar.setComponents({\n telemeter: Telemeter,\n instrumenter: Instrumenter,\n wrapGlobals: wrapGlobals,\n scrub: scrub,\n truncation: truncation,\n tracing: Tracing,\n});\n\nexport default Rollbar;\n","import rollbar from '../rollbar.js';\n\nvar options = (typeof window !== 'undefined') && window._rollbarConfig;\nvar alias = options && options.globalAlias || 'Rollbar';\nvar shimRunning = (typeof window !== 'undefined') && window[alias] && typeof window[alias].shimId === 'function' && window[alias].shimId() !== undefined;\n\nif ((typeof window !== 'undefined') && !window._rollbarStartTime) {\n window._rollbarStartTime = (new Date()).getTime();\n}\n\nif (!shimRunning && options) {\n var Rollbar = new rollbar(options);\n window[alias] = Rollbar;\n} else if (typeof window !== 'undefined') {\n window.rollbar = rollbar;\n window._rollbarDidLoad = true;\n} else if (typeof self !== 'undefined') {\n self.rollbar = rollbar;\n self._rollbarDidLoad = true;\n}\n\nexport default rollbar;\n"],"names":["isType","x","t","typeName","name","_typeof","Error","toString","call","match","toLowerCase","isFunction","f","isNativeFunction","reRegExpChar","funcMatchString","Function","prototype","Object","hasOwnProperty","replace","reIsNative","RegExp","isObject","test","value","hasOwn","obj","prop","isString","String","isFiniteNumber","n","Number","isFinite","isIterable","i","type","isError","e","isPromise","p","then","isBrowser","window","redact","uuid4","d","now","uuid","c","r","Math","random","floor","LEVELS","debug","info","warning","error","critical","sanitizeHref","url","urlObject","URL","password","search","_","sanitizeUrl","baseUrlParts","parseUri","anchor","source","query","parseUriOptions","strictMode","key","q","parser","strict","loose","str","undefined","o","m","exec","uri","l","length","$0","$1","$2","addParamsAndAccessTokenToPath","accessToken","options","params","access_token","paramsArray","k","push","join","sort","path","qs","indexOf","h","substring","formatUrl","u","protocol","port","hostname","result","stringify","backup","JSON","jsonError","backupError","maxByteSize","string","count","code","charCodeAt","jsonParse","s","parse","makeUnhandledStackInfo","message","lineno","colno","mode","backupMessage","errorParser","location","line","column","func","guessFunctionName","context","gatherContext","href","document","useragent","navigator","userAgent","stack","wrapCallback","logger","err","resp","nonCircularClone","seen","clone","newSeen","includes","slice","createItem","args","notifier","requestKeys","lambdaContext","custom","callback","request","arg","extraArgs","diagnostic","argTypes","typ","DOMException","j","len","item","timestamp","data","setCustomItemKeys","_originalArgs","original_arg_types","level","skipFrames","addErrorContext","errors","contextAdded","_iterator","_createForOfIteratorHelper","_step","done","merge","rollbarContext","error_context","TELEMETRY_TYPES","TELEMETRY_LEVELS","arrayIncludes","arr","val","_iterator2","_step2","entry","createTelemetryEvent","metadata","event","addItemAttributes","itemData","attributes","_iterator3","_step3","a","get","keys","split","_e","set","setPrototypeOf","temp","replacement","formatArgsAsString","substr","Date","filterIp","requestData","captureIp","newIp","parts","pop","beginning","slashIdx","terminal","concat","handleOptions","current","input","payload","updateDeprecatedOptions","overwriteScrubFields","scrubFields","hostWhiteList","hostSafeList","log","hostBlackList","hostBlockList","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","constructor","src","copy","create","arguments","traverse","v","isObj","isArray","seenIndex","mapped","same","scrub","scrubPaths","scrubPath","paramRes","_getScrubFieldRegexs","queryRes","_getScrubQueryParamRegexs","redactQueryParam","dummy0","paramPart","paramScrubber","regex","valScrubber","scrubber","tmpV","last","_iterator4","entries","_step4","_step4$value","_slicedToArray","index","ret","_iterator5","_step5","field","pat","_iterator6","_step6","MAX_EVENTS","fromMillis","millis","trunc","round","Telemeter","tracing","_this$tracing","_classCallCheck","queue","maxTelemetryEvents","maxQueueSize","max","min","telemetrySpan","startSpan","_createClass","configure","oldOptions","newMaxEvents","deleteCount","splice","copyEvents","events","Array","filterTelemetry","filter","map","_ref","_otelAttributes","otelAttributes","_objectWithoutProperties","_excluded","exportTelemetrySpan","end","capture","rollbarUUID","getLevel","timestamp_ms","body","_exc","captureEvent","captureError","_this$telemetrySpan","addEvent","captureLog","_this$telemetrySpan2","_objectSpread","captureNetwork","subtype","_metadata$response","_metadata$response2","_this$telemetrySpan3","levelFromStatus","status_code","endTimeNano","end_time_ms","method","statusCode","request_headers","response","headers","requestBody","responseBody","start_time_ms","captureDom","element","checked","captureInput","_ref2","_this$telemetrySpan4","isSynthetic","endTimeUnixNano","_getRepeatedEvent","_updateRepeatedEvent","captureClick","_ref3","_this$telemetrySpan5","lastEvent","_lastEvent","target","duration","height","width","textZoomRatio","rate","list","captureFocus","_ref4","_this$telemetrySpan6","captureResize","_ref5","_this$telemetrySpan7","captureDragDrop","_ref6","_this$telemetrySpan8","dropEffect","effectAllowed","kinds","mediaTypes","captureNavigation","from","to","_this$telemetrySpan9","captureDomContentLoaded","ts","getTime","captureLoad","captureConnectivityChange","_ref7","_this$telemetrySpan0","_captureRollbarItem","includeItemsInTelemetry","shift","defaultLevel","manual","Context","parentContext","_currentContext","Map","getValue","setValue","deleteValue","self","delete","ROOT_CONTEXT","ContextManager","currentContext","active","enterContext","previousContext","exitContext","with","fn","thisArg","_len","_key","apply","createContextKey","Symbol","for","toMillis","hrtime","toNanos","add","b","usePerformance","performance","timeOrigin","isHrTime","SpanExporter","api","export","spans","_resultCallback","spanExportQueue","_toConsumableArray","toPayload","_this","resourceSpans","resource","scopeMap","span","scopeKey","instrumentationScope","version","has","scope","_transformSpan","_transformResource","scopeSpans","values","scopeData","_transformInstrumentationScope","post","postSpans","_this2","transformAttributes","_transformAnyValue","transformEvents","timeUnixNano","time","traceId","spanContext","spanId","parentSpanId","kind","startTimeUnixNano","startTime","endTime","_this3","keyValues","_this4","attr","_this5","stringValue","isInteger","intValue","doubleValue","boolValue","arrayValue","kvlistValue","gen","bytes","randomBytes","Uint8Array","crypto","getRandomValues","randHex","byte","padStart","id","SESSION_KEY","Session","_defineProperty","session","_attributes","init","attrs","getSession","createSession","initSessionAttributes","serializedSession","sessionStorage","getItem","_unused","createdAt","setSession","sessionString","setItem","_unused2","setAttributes","setUser","user","email","username","_navigator$userAgentD","_navigator$userAgentD2","_navigator$userAgentD3","userAgentData","brands","language","mobile","platform","levels","warn","disable","_len2","_key2","_len3","_key3","_len4","_key4","_len5","_key5","logLevel","unshift","console","SpanProcessor","exporter","pendingSpans","transforms","userTransform","bind","addTransform","transformFn","transformSpan","applyTransforms","transform","onStart","_parentContext","onEnd","Span","initReadableSpan","spanProcessor","_options$session","status","links","ended","droppedAttributesCount","droppedEventsCount","droppedLinksCount","setAttribute","_i","_Object$entries","_Object$entries$_i","isRecording","Tracer","_this$tracing$resourc","_options$resource","_this$tracing$session","contextManager","parentSpan","getSpan","parentSpanContext","traceFlags","traceState","SPAN_KEY","Tracing","gWindow","createTracer","initSession","_this$options$payload","_this$options$payload2","environment","idGen","tracer","getTracer","addSpanTransform","setSpan","_this$contextManager","withSpan","default","raw","jsonBackup","selectFrames","frames","range","truncateFrames","trace_chain","chain","trace","maybeTruncateValue","truncateStrings","truncator","truncateTraceData","traceData","exception","description","minBody","_step2$value","needsTruncation","maxSize","truncate","strategies","strategy","results","buildPayload","contextResult","getTransportFromOptions","defaults","timeout","transport","detectTransport","proxy","endpoint","opts","pathname","defaultTransport","fetch","XMLHttpRequest","transportOptions","transportAPI","host","appendPathToPath","base","baseTrailingSlash","pathBeginningSlash","iterator","toStringTag","Generator","_regeneratorDefine2","y","G","TypeError","return","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","__proto__","displayName","_regenerator","w","defineProperty","_regeneratorDefine","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","_asyncToGenerator","_next","_throw","_defineProperties","_toPropertyKey","_toPrimitive","toPrimitive","helpers","defaultOptions","OTLPDefaultOptions","Api","urllib","truncation","_getTransport","OTLPTransportOptions","_getOTLPTransport","_postPromise","reject","postItem","setTimeout","_postSpans","_callee","_args","_context","_x","buildJsonPayload","stringifyResult","postJsonPayload","jsonPayload","_options$tracing","reportLevel","uncaughtErrorLevel","maxItems","itemsPerMin","commonScrubFields","apiScrubFields","requestScrubFields","commonScrubHeaders","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","allowEmpty","parseStack","stackString","parseV8OrIeString","parseFFOrSafariString","extractLocation","urlLike","regExp","applySlice","lines","filtered","sanitizedLine","locationParts","functionName","fileName","function","file","col","functionNameRegex","matches","parseOpera9","parseOpera10","parseOpera11","lineRE","tokens","functionCall","argsRaw","parse$1","parseV8OrIE$1","parseFFOrSafari$1","parseOpera$1","parseOpera9$1","parseOpera10$1","parseOpera11$1","stackframesLiteToStackframes","liteStackframes","liteStackframe","lineNumber","columnNumber","parseErrorStack","UNKNOWN_FUNCTION","ERR_CLASS_REGEXP","Frame","stackFrame","_stackFrame","Stack","skip","getStack","parserStack","_mostSpecificErrorName","rawStack","rawException","nested","cause","traceChain","guessErrorClass","errMsg","errClassMatch","errClass","constructorName","checkLevel","settings","levelVal","reportLevelVal","userCheckIgnore","isUncaught","Boolean","_isUncaught","onSendCallback","checkIgnore","urlIsNotBlockListed","urlIsOnAList","urlIsSafeListed","matchFrames","block","frame","filename","urlRegex","listLength","frameLength","safeOrBlock","traces","tracesLength","listName","messageIsIgnored","ignoredMessages","rIgnoredMessage","messages","messagesFromItem","Notifier","_this$queue","enabled","addPendingItem","originalError","_applyTransforms","removePendingItem","addItem","transformIndex","transformsLength","next","Queue","rateLimiter","replay","predicates","pendingItems","pendingRequests","retryQueue","retryHandle","waitCallback","waitIntervalID","_this$api","addPredicate","predicate","idx","originalItem","predicateResult","_applyPredicates","stop","_maybeLog","transmit","replayId","_makeApiRequest","_dequeuePendingRequest","sendOrDiscardReplay","_this$replay","discard","wait","_maybeCallWait","clearInterval","setInterval","rateLimitResponse","shouldSend","_maybeRetry","shouldRetry","retryInterval","RETRIABLE_ERRORS","maxRetries","retries","_retryApiRequest","retryObject","verbose","RateLimiter","counter","perMinCounter","platformOptions","configureGlobal","itemsPerMinute","globalSettings","elapsedTime","globalRateLimit","globalRateLimitPerMin","checkRate","shouldSendValue","underGlobalLimit","perMinute","setPlatformOptions","limit","ignoreRateLimit","limitPerMin","errorResult","rateLimitPayload","msg","extra","framework","Rollbar","telemeter","validateTracer","_configuredOptions","setStackTraceLimit","lastError","lastErrorHash","global","payloadData","_defaultLogLevel","_log","sendJsonPayload","ignoreDuplicateErrors","_sameAsLastError","_addItemAttributes","_addTracingInfo","telemetryEvents","_this$tracing2","sessionId","itemHash","generateItemHash","validateSpan","setTag","opentracingSpanId","toSpanId","opentracingTraceId","toTraceId","opentracing_span_id","opentracing_trace_id","stackTraceLimit","itemToPayload","addPayloadOptions","payloadOptions","addTelemetryData","addMessageWithError","tracePath","newExtra","newItem","promisedItem","addConfigToPayload","sendConfig","configKey","addFunctionOption","addConfiguredOptions","configuredOptions","configured_options","addDiagnosticKeys","client","is_anonymous","is_uncaught","raw_error","constructor_name","failed","captureUncaughtExceptions","handler","shim","oldOnError","_rollbarOldOnError","onerror","handleAnonymousErrors","_rollbarWindowOnError","old","_rollbarWrappedError","_rollbarContext","handleUncaughtException","anonymousErrorsPending","captureUnhandledRejections","_rollbarURH","belongsToShim","removeEventListener","rejectionHandler","evt","reason","promise","detail","handleUnhandledRejection","addEventListener","autoStart","triggerDefaults","samplingRatio","preDuration","postDuration","triggers","logErrors","logEmits","inlineStylesheet","inlineImages","collectFonts","maskInputOptions","tel","text","color","date","month","number","week","maskAllInputs","blockClass","maskTextClass","ignoreClass","slimDOMOptions","script","comment","headFavicon","headWhitespace","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","handleDomException","handleItemWithError","stackInfo","_savedStackTrace","e2","ensureItemHasSomethingToSay","addBaseInfo","server","addRequestInfo","requestInfo","query_string","remoteString","user_ip","addClientInfo","nav","scr","screen","runtime_ms","_rollbarStartTime","javascript","browser","cookie_enabled","cookieEnabled","addPluginInfo","plugins","navPlugins","cur","addBody","addBodyTraceChain","addBodyTrace","addBodyMessage","stackFromItem","_unhandledStackInfo","traceChainLength","buildTrace","guess","className","errorClass","class","pre","contextLength","mid","sendFrameUrl","endsWith","reverse","addScrubber","scrubFn","makeFetchRequest","controller","timeoutId","AbortController","abort","signal","clearTimeout","respHeaders","isItemRoute","json","catch","makeXhrRequest","requestFactory","_createXMLHTTPObject","onreadystatechange","readyState","parseResponse","responseText","_isSuccess","getResponseHeader","_isNormalFailure","_newRetriableError","ex","exc","open","setRequestHeader","send","_e1","XDomainRequest","xdomainrequest","onprogress","ontimeout","onload","factories","ActiveXObject","xmlhttp","numFactories","Transport","_makeZoneRequest","rootZone","Zone","root","run","_makeRequest","RollbarProxy","_proxyRequest","rollbarProxy","_msg","auth","hash","parseInt","pathParts","API","sharedPredicates","Client","tracingDefaults","sharedTransforms","browserDefaults","globals","replayDefaults","_instance","components","Instrumenter","instrumenter","wrapGlobals","Replay","_gWindow","replayOptions","recorder","start","gDocument","isChrome","chrome","runtime","addTransformsToNotifier","addPredicatesToQueue","setupUnhandledCapture","instrument","setSessionAttributesFromOptions","rollbar","_this$instrumenter","_createItem","triggerDirectReplay","triggerReplay","unhandledExceptionsInitialized","captureUncaught","handleUncaughtExceptions","wrapGlobalEventHandlers","unhandledRejectionsInitialized","handleUnhandledRejections","inspectAnonymousErrors","prepareStackTrace","_stack","_isAnonymous","reasonResult","wrap","_before","ctxFn","_isWrap","_rollbar_wrapped","_wrappedSource","setSessionUser","setSessionAttributes","_this$tracing3","_options$payload","_options$client","_options$payload2","_options$payload3","_options$payload4","person","code_version","codeVersion","loadFull","setComponents","callInstance","maybeCallback","_getFirstFunction","_Rollbar","_len6","_key6","_len7","_key7","_len8","_key8","_len9","_key9","_len0","_key0","_len1","_key1","_len10","_key10","_len11","_key11","_len12","_key12","Headers","FetchHeaders","normalizeName","normalizeValue","iteratorFor","items","forEach","append","header","getOwnPropertyNames","oldValue","replacements","orig","getElementType","getAttribute","isDescribedElement","subtypes","tagName","elementType","getElementFromEvent","doc","elementFromPoint","clientX","clientY","treeToArray","elem","MAX_HEIGHT","out","nextDescription","describeElement","parentNode","elementArrayToString","MAX_LENGTH","separator","separatorLength","nextStr","totalLength","descriptionToString","elementString","desc","classes","attribute","isMatchingElement","selectors","cls","classList","contains","sel","domUtil","urlparser","network","networkResponseHeaders","networkResponseBody","networkRequestHeaders","networkRequestBody","networkErrorOnHttp5xx","networkErrorOnHttp4xx","networkErrorOnHttp0","dom","navigation","connectivity","contentSecurityPolicy","errorOnContentSecurityPolicy","restore","nameFromDescription","defaultValueScrubber","patterns","_patterns","_window","_document","removeListeners","autoInstrument","configureScrubbing","eventRemovers","contentsecuritypolicy","_location","_lastHref","_options$scrubTelemet","_options$replay","_options$replay2","_options$replay3","_options$replay4","_options$replay5","_options$replay6","_options$replay7","_options$replay8","_options$replay9","scrubTelemetryInputs","telemetryScrubber","maskInputFn","scrubClasses","scrubSelectors","blockSelector","ignoreSelector","maskTextSelector","oldSettings","instrumentNetwork","deinstrumentNetwork","instrumentConsole","deinstrumentConsole","instrumentDom","deinstrumentDom","instrumentNavigation","deinstrumentNavigation","instrumentConnectivity","deinstrumentConnectivity","instrumentContentSecurityPolicy","deinstrumentContentSecurityPolicy","wrapProp","xhr","xhrp","isUrlObject","_isUrlObject","__rollbar_xhr","request_content_type","onreadystatechangeHandler","__rollbar_event","response_content_type","headersConfig","allHeaders","getAllResponseHeaders","trim","isJsonContentType","scrubJson","addOtelNetworkResponse","errorOnHttpStatus","trackHttpErrors","_fn","_t","reqHeaders","fetchHeaders","telemetryEvent","contentType","endTimeMs","inHeaders","outHeaders","currentHeader","_this$_window","wrapConsole","origConsole","methods","_i2","_methods","addListener","handleEvent","click","handleClick","dragdrop","handleDrag","focus","handleFocus","form","handleForm","handleInput","resize","handleResize","contentLoaded","handleContentLoaded","_evt","_evt$target","isTrusted","_evt$target2","innerWidth","innerHeight","objs","dataTransfer","files","_evt$dataTransfer","_evt$dataTransfer2","scrubInputValue","inputType","mask","_evt$target3","_evt$target4","_evt$target5","_evt$target6","_evt$target7","chromePackagedApp","app","hasPushState","history","pushState","handleUrlChange","parsedHref","parsedTo","parsedFrom","handleConnectivity","handleCspEvent","cspEvent","blockedURI","violatedDirective","effectiveDirective","sourceFile","originalPolicy","handleCspError","cspHandler","section","types","_iterator7","_step7","_loop","passive","_extendListenerPrototype","oldAddEventListener","_rollbarOldAdd","addFn","bubble","oldRemoveEventListener","_rollbarOldRemove","removeFn","_rollbarConfig","alias","globalAlias","shimRunning","shimId","_rollbarDidLoad"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/rollbar.min.cjs b/dist/rollbar.min.cjs index 67df18628..69a3bf883 100644 --- a/dist/rollbar.min.cjs +++ b/dist/rollbar.min.cjs @@ -1,2 +1,2 @@ /*! For license information please see rollbar.min.cjs.LICENSE.txt */ -(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},e={};t.d(e,{default:()=>or});const r=require("util"),n=require("os");var o=Object.prototype.hasOwnProperty,i=Object.prototype.toString,a=function(t){if(!t||"[object Object]"!==i.call(t))return!1;var e,r=o.call(t,"constructor"),n=t.constructor&&t.constructor.prototype&&o.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!r&&!n)return!1;for(e in t);return void 0===e||o.call(t,e)};const s=function t(){var e,r,n,o,i,s=Object.create(null),u=null,c=arguments.length;for(e=0;e=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r0&&(s||(s=g({})),s.extraArgs=g(p));var k,_={message:i,err:a,custom:s,timestamp:O(),callback:u,notifier:r,diagnostic:{},uuid:(k=O(),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){var e=(k+16*Math.random())%16|0;return k=Math.floor(k/16),("x"===t?e:7&e|8).toString(16)})))};return _.data=_.data||{},function(t,e){e&&void 0!==e.level&&(t.level=e.level,delete e.level);e&&void 0!==e.skipFrames&&(t.skipFrames=e.skipFrames,delete e.skipFrames)}(_,s),n&&c&&(_.request=c),o&&(_.lambdaContext=o),_._originalArgs=t,_.diagnostic.original_arg_types=h,_}var w=["log","network","dom","navigation","error","manual"],k=["critical","error","warning","info","debug"];function _(t,e){for(var r=0;r=1&&r>e}function P(t,e,r,n,o,i,a){var s=null;return r&&(r=new Error(r)),r||n||(s=function(t,e,r,n,o){var i,a=e.environment||e.payload&&e.payload.environment;i=o?"item per minute limit reached, ignoring errors until timeout":"maxItems has been hit, ignoring errors until reset.";var s={body:{message:{body:i,extra:{maxItems:r,itemsPerMinute:n}}},language:"javascript",environment:a,notifier:{version:e.notifier&&e.notifier.version||e.version}};"browser"===t?(s.platform="browser",s.framework="browser-js",s.notifier.name="rollbar-browser-js"):"server"===t?(s.framework=e.framework||"node-js",s.notifier.name=e.notifier.name):"react-native"===t&&(s.framework=e.framework||"react-native",s.notifier.name=e.notifier.name);return s}(t,e,o,i,a)),{error:r,shouldSend:n,payload:s}}T.globalSettings={startTime:O(),maxItems:void 0,itemsPerMinute:void 0},T.prototype.configureGlobal=function(t){void 0!==t.startTime&&(T.globalSettings.startTime=t.startTime),void 0!==t.maxItems&&(T.globalSettings.maxItems=t.maxItems),void 0!==t.itemsPerMinute&&(T.globalSettings.itemsPerMinute=t.itemsPerMinute)},T.prototype.shouldSend=function(t,e){var r=(e=e||O())-this.startTime;(r<0||r>=6e4)&&(this.startTime=e,this.perMinCounter=0);var n=T.globalSettings.maxItems,o=T.globalSettings.itemsPerMinute;if(L(t,n,this.counter))return P(this.platform,this.platformOptions,n+" max items reached",!1);if(L(t,o,this.perMinCounter))return P(this.platform,this.platformOptions,o+" items per minute reached",!1);this.counter++,this.perMinCounter++;var i=!L(t,n,this.counter),a=i;return i=i&&!L(t,o,this.perMinCounter),P(this.platform,this.platformOptions,null,i,n,o,a)},T.prototype.setPlatformOptions=function(t,e){this.platform=t,this.platformOptions=e};const j=T;function R(t){return R="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},R(t)}function q(t,e){for(var r=0;rthis.options.maxRetries&&(i=!1))}i?this._retryApiRequest(r,n):n(e)}},{key:"_retryApiRequest",value:function(t,e){var r=this;this.retryQueue.push({item:t,callback:e}),this.retryHandle||(this.retryHandle=setInterval((function(){for(;r.retryQueue.length;){var t=r.retryQueue.shift();r._makeApiRequest(t.item,t.callback)}}),this.options.retryInterval))}},{key:"_dequeuePendingRequest",value:function(t){var e=this.pendingRequests.indexOf(t);-1!==e&&(this.pendingRequests.splice(e,1),this._maybeCallWait())}},{key:"_maybeLog",value:function(t,e){if(this.logger&&this.options.verbose){var r=e||E(t,"body.trace.exception.message")||E(t,"body.trace_chain.0.exception.message");if(r)return void this.logger.error(r);(r=E(t,"body.message.body"))&&this.logger.log(r)}}},{key:"_maybeCallWait",value:function(){return!(!h(this.waitCallback)||0!==this.pendingItems.length||0!==this.pendingRequests.length||(this.waitIntervalID&&(this.waitIntervalID=clearInterval(this.waitIntervalID)),this.waitCallback(),0))}}])&&q(e.prototype,r),n&&q(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r,n}();C=D,U=["ECONNRESET","ENOTFOUND","ESOCKETTIMEDOUT","ETIMEDOUT","ECONNREFUSED","EHOSTUNREACH","EPIPE","EAI_AGAIN"],(M=A(M="RETRIABLE_ERRORS"))in C?Object.defineProperty(C,M,{value:U,enumerable:!0,configurable:!0,writable:!0}):C[M]=U;const N=D;function F(t,e){this.queue=t,this.options=e,this.transforms=[],this.diagnostic={}}F.prototype.configure=function(t){this.queue&&this.queue.configure(t);var e=this.options;return this.options=s(e,t),this},F.prototype.addTransform=function(t){return h(t)&&this.transforms.push(t),this},F.prototype.log=function(t,e){if(e&&h(e)||(e=function(){}),!this.options.enabled)return e(new Error("Rollbar is not enabled"));this.queue.addPendingItem(t);var r=t.err;this._applyTransforms(t,function(n,o){if(n)return this.queue.removePendingItem(t),e(n,null);this.queue.addItem(o,e,r,t)}.bind(this))},F.prototype._applyTransforms=function(t,e){var r=-1,n=this.transforms.length,o=this.transforms,i=this.options,a=function(t,s){t?e(t,null):++r!==n?o[r](s,i,a):e(null,s)};a(null,t)};const H=F;function J(t,e,r,n,o,i,a){this.options=s(t),this.logger=r,J.rateLimiter.configureGlobal(this.options),J.rateLimiter.setPlatformOptions(a,this.options),this.api=e,this.queue=new N(J.rateLimiter,e,r,this.options,i),this.tracing=o;var u=this.options.tracer||null;W(u)?(this.tracer=u,this.options.tracer="opentracing-tracer-enabled",this.options._configuredOptions.tracer="opentracing-tracer-enabled"):this.tracer=null,this.notifier=new H(this.queue,this.options),this.telemeter=n,B(t),this.lastError=null,this.lastErrorHash="none"}function B(t){t.stackTraceLimit&&(Error.stackTraceLimit=t.stackTraceLimit)}function W(t){if(!t)return!1;if(!t.scope||"function"!=typeof t.scope)return!1;var e=t.scope();return!(!e||!e.active||"function"!=typeof e.active)}J.rateLimiter=new j({maxItems:0,itemsPerMinute:60}),J.prototype.global=function(t){return J.rateLimiter.configureGlobal(t),this},J.prototype.configure=function(t,e){var r=this.options,n={};e&&(n={payload:e}),this.options=s(r,t,n);var o=this.options.tracer||null;return W(o)?(this.tracer=o,this.options.tracer="opentracing-tracer-enabled",this.options._configuredOptions.tracer="opentracing-tracer-enabled"):this.tracer=null,this.notifier&&this.notifier.configure(this.options),this.telemeter&&this.telemeter.configure(this.options),B(t),this.global(this.options),W(t.tracer)&&(this.tracer=t.tracer),this},J.prototype.log=function(t){var e=this._defaultLogLevel();return this._log(e,t)},J.prototype.debug=function(t){this._log("debug",t)},J.prototype.info=function(t){this._log("info",t)},J.prototype.warn=function(t){this._log("warning",t)},J.prototype.warning=function(t){this._log("warning",t)},J.prototype.error=function(t){this._log("error",t)},J.prototype.critical=function(t){this._log("critical",t)},J.prototype.wait=function(t){this.queue.wait(t)},J.prototype.captureEvent=function(t,e,r){return this.telemeter&&this.telemeter.captureEvent(t,e,r)},J.prototype.captureDomContentLoaded=function(t){return this.telemeter&&this.telemeter.captureDomContentLoaded(t)},J.prototype.captureLoad=function(t){return this.telemeter&&this.telemeter.captureLoad(t)},J.prototype.buildJsonPayload=function(t){return this.api.buildJsonPayload(t)},J.prototype.sendJsonPayload=function(t){this.api.postJsonPayload(t)},J.prototype._log=function(t,e){var r;if(e.callback&&(r=e.callback,delete e.callback),this.options.ignoreDuplicateErrors&&this._sameAsLastError(e)){if(r){var n=new Error("ignored identical item");n.item=e,r(n)}}else try{e.level=e.level||t,this._addTracingAttributes(e),this._addTracingInfo(e);var o=this.telemeter;o&&(o._captureRollbarItem(e),e.telemetryEvents=o.copyEvents()||[]),this.notifier.log(e,r)}catch(t){r&&r(t),this.logger.error(t)}},J.prototype._addTracingAttributes=function(t){var e,r,n=null===(e=this.tracing)||void 0===e?void 0:e.getSpan(),o=[{key:"session_id",value:null===(r=this.tracing)||void 0===r?void 0:r.sessionId},{key:"span_id",value:null==n?void 0:n.spanId},{key:"trace_id",value:null==n?void 0:n.traceId}];x(t.data,o),null==n||n.addEvent("rollbar.occurrence",[{key:"rollbar.occurrence.uuid",value:t.uuid}])},J.prototype._defaultLogLevel=function(){return this.options.logLevel||"debug"},J.prototype._sameAsLastError=function(t){if(!t._isUncaught)return!1;var e=function(t){var e=t.message||"",r=(t.err||{}).stack||String(t.err);return e+"::"+r}(t);return this.lastErrorHash===e||(this.lastError=t.err,this.lastErrorHash=e,!1)},J.prototype._addTracingInfo=function(t){if(this.tracer){var e=this.tracer.scope().active();if(function(t){if(!t||!t.context||"function"!=typeof t.context)return!1;var e=t.context();if(!e||!e.toSpanId||!e.toTraceId||"function"!=typeof e.toSpanId||"function"!=typeof e.toTraceId)return!1;return!0}(e)){e.setTag("rollbar.error_uuid",t.uuid),e.setTag("rollbar.has_error",!0),e.setTag("error",!0),e.setTag("rollbar.item_url","https://rollbar.com/item/uuid/?uuid=".concat(t.uuid)),e.setTag("rollbar.occurrence_url","https://rollbar.com/occurrence/uuid/?uuid=".concat(t.uuid));var r=e.context().toSpanId(),n=e.context().toTraceId();t.custom?(t.custom.opentracing_span_id=r,t.custom.opentracing_trace_id=n):t.custom={opentracing_span_id:r,opentracing_trace_id:n}}}};const G=J;function z(t){if(!p(t.context,"string")){var e=v(t.context);e.error?t.context="Error: could not serialize 'context'":t.context=e.value||"",t.context.length>255&&(t.context=t.context.substr(0,255))}return{data:t}}function $(t,e,r){var n=e.hostname,o=e.protocol,i=e.port,a=e.path,s=e.search,u=t.timeout,c=function(t){var e="undefined"!=typeof window&&window||"undefined"!=typeof self&&self,r=t.defaultTransport||"xhr";void 0===e.fetch&&(r="xhr");void 0===e.XMLHttpRequest&&(r="fetch");return r}(t),l=t.proxy;if(t.endpoint){var p=r.parse(t.endpoint);n=p.hostname,o=p.protocol,i=p.port,a=p.pathname,s=p.search}return{timeout:u,hostname:n,protocol:o,port:i,path:a,search:s,proxy:l,transport:c}}function Q(t,e){var r=t.protocol||"https:",n=t.port||("http:"===r?80:"https:"===r?443:void 0),o=t.hostname,i=t.path,a=t.timeout,s=t.transport;return t.search&&(i+=t.search),t.proxy&&(i=r+"//"+o+i,o=t.proxy.host||t.proxy.hostname,n=t.proxy.port,r=t.proxy.protocol||r),{timeout:a,protocol:r,hostname:o,path:i,port:n,method:e,transport:s}}function Z(t){return Z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Z(t)}function V(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function X(t){for(var e=1;e=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),c=n.call(a,"finallyLoc");if(u&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),L(r),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;L(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:j(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),v}},e}function tt(t,e,r,n,o,i,a){try{var s=t[i](a),u=s.value}catch(t){return void r(t)}s.done?e(u):Promise.resolve(u).then(n,o)}var et={hostname:"api.rollbar.com",path:"/api/1/item/",search:null,version:"1",protocol:"https:",port:443},rt={hostname:"api.rollbar.com",path:"/api/1/session/",search:null,version:"1",protocol:"https:",port:443};function nt(t,e,r,n){this.options=t,this.transport=e,this.url=r,this.truncation=n,this.accessToken=t.accessToken,this.transportOptions=ot(t,r),this.OTLPTransportOptions=it(t,r)}function ot(t,e){return $(t,et,e)}function it(t,e){var r;return $(t=X(X({},t),{},{endpoint:null===(r=t.tracing)||void 0===r?void 0:r.endpoint}),rt,e)}nt.prototype._postPromise=function(t){var e=t.accessToken,r=t.options,n=t.payload,o=t.headers,i=this;return new Promise((function(t,a){i.transport.post({accessToken:e,options:r,payload:n,headers:o,callback:function(e,r){return e?a(e):t(r)}})}))},nt.prototype.postItem=function(t,e){var r=Q(this.transportOptions,"POST"),n=z(t),o=this;setTimeout((function(){o.transport.post({accessToken:o.accessToken,options:r,payload:n,callback:e})}),0)},nt.prototype.postSpans=function(){var t,e=(t=Y().mark((function t(e){var r,n,o=arguments;return Y().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=o.length>1&&void 0!==o[1]?o[1]:{},n=Q(this.OTLPTransportOptions,"POST"),t.next=4,this._postPromise({accessToken:this.accessToken,options:n,payload:e,headers:r});case 4:return t.abrupt("return",t.sent);case 5:case"end":return t.stop()}}),t,this)})),function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){tt(i,n,o,a,s,"next",t)}function s(t){tt(i,n,o,a,s,"throw",t)}a(void 0)}))});return function(t){return e.apply(this,arguments)}}(),nt.prototype.buildJsonPayload=function(t,e){var r,n=z(t);return(r=this.truncation?this.truncation.truncate(n):v(n)).error?(e&&e(r.error),null):r.value},nt.prototype.postJsonPayload=function(t,e){var r=Q(this.transportOptions,"POST");this.transport.postJsonPayload(this.accessToken,r,t,e)},nt.prototype.configure=function(t){var e=this.oldOptions;return this.options=s(e,t),this.transportOptions=ot(this.options,this.url),this.OTLPTransportOptions=it(this.options,this.url),void 0!==this.options.accessToken&&(this.accessToken=this.options.accessToken),this};const at=nt;var st=function(){},ut={debug:0,info:1,warn:2,error:3,disable:4},ct={error:function(){for(var t=arguments.length,e=new Array(t),r=0;rt.length)&&(e=t.length);for(var r=0,n=Array(e);r2*e?t.slice(0,e).concat(t.slice(r-e)):t}function wt(t,e,r){r=void 0===r?30:r;var n,o=t.data.body;if(o.trace_chain)for(var i=o.trace_chain,a=0;at?e.slice(0,t-3).concat("..."):e}function _t(t,e,r){return e=yt(e,(function e(r,n,o){switch(f(n)){case"string":return kt(t,n);case"object":case"array":return yt(n,e,o);default:return n}})),[e,v(e,r)]}function xt(t){return t.exception&&(delete t.exception.description,t.exception.message=kt(255,t.exception.message)),t.frames=bt(t.frames,1),t}function Et(t,e){var r=t.data.body;if(r.trace_chain)for(var n=r.trace_chain,o=0;oe}const Ot={truncate:function(t,e,r){r=void 0===r?524288:r;for(var n,o,i,a=[gt,wt,_t.bind(null,1024),_t.bind(null,512),_t.bind(null,256),Et];n=a.shift();)if(t=(o=n(t,e))[0],(i=o[1]).error||!St(i.value,r))return i;return i},raw:gt,truncateFrames:wt,truncateStrings:_t,maybeTruncateValue:kt},It=require("http"),Tt=require("https"),Lt=require("json-stringify-safe");function Pt(){this.rateLimitExpires=0}function jt(t,e,r){var n=e&&e.headers||{};if(n["Content-Type"]="application/json",r)try{n["Content-Length"]=Buffer.byteLength(r,"utf8")}catch(t){lt.error("Could not get the content length of the data")}return n["X-Rollbar-Access-Token"]=t,n}function Rt(t){return{"http:":It,"https:":Tt}[t.protocol]}function qt(){return Math.floor(Date.now()/1e3)}Pt.prototype.get=function(t,e,r,n,o){var i;if(n&&h(n)||(n=function(){}),function(t,e,r){(r=r||{}).access_token=t;var n,o=[];for(n in r)Object.prototype.hasOwnProperty.call(r,n)&&o.push([n,r[n]].join("="));var i="?"+o.sort().join("&");(e=e||{}).path=e.path||"";var a,s=e.path.indexOf("?"),u=e.path.indexOf("#");-1!==s&&(-1===u||u>s)?(a=e.path,e.path=a.substring(0,s)+i+"&"+a.substring(s+1)):-1!==u?(a=e.path,e.path=a.substring(0,u)+i+a.substring(u)):e.path=e.path+i}(t,e=e||{},r),e.headers=jt(t,e),!(i=o?o(e):Rt(e)))return lt.error("Unknown transport based on given protocol: "+e.protocol),n(new Error("Unknown transport"));var a=i.request(e,function(t){this.handleResponse(t,n)}.bind(this));a.on("error",(function(t){n(t)})),a.end()},Pt.prototype.post=function(t){var e,r=t.accessToken,n=t.options,o=t.payload,i=t.callback,a=t.transportFactory;if(i&&h(i)||(i=function(){}),qt()n&&(o=this.queue.length-n),this.maxQueueSize=n,this.queue.splice(0,o)}},{key:"copyEvents",value:function(){var t=Array.prototype.slice.call(this.queue,0);if(h(this.options.filterTelemetry))try{for(var e=t.length;e--;)this.options.filterTelemetry(t[e])&&t.splice(e,1)}catch(t){this.options.filterTelemetry=null}return t=t.filter((function(t){return"connectivity"!==t.type})),t=t.map((function(t){t.otelAttributes;var e=function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(-1!==e.indexOf(n))continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.telemetrySpan&&(this.telemetrySpan.end(t),this.telemetrySpan=this.tracing.startSpan("rollbar-telemetry",{}))}},{key:"capture",value:function(t,e,r,n){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,a={level:zt(t,r),type:t,timestamp_ms:o||O(),body:e,source:"client"};n&&(a.uuid=n),i&&(a.otelAttributes=i);try{if(h(this.options.filterTelemetry)&&this.options.filterTelemetry(a))return!1}catch(t){this.options.filterTelemetry=null}return this.push(a),a}},{key:"captureEvent",value:function(t,e,r,n){return this.capture(t,e,r,n)}},{key:"captureError",value:function(t,e,r,n){var o,i=t.message||String(t),a={message:i};t.stack&&(a.stack=t.stack);var s={message:i,level:e,type:"error",uuid:r};return null===(o=this.telemetrySpan)||void 0===o||o.addEvent("rollbar-occurrence-event",s,Wt(n)),this.capture("error",a,e,r,n,s)}},{key:"captureLog",value:function(t,e,r,n){var o,i,a=null;r?(a={message:t,level:e,type:"message",uuid:r},null===(o=this.telemetrySpan)||void 0===o||o.addEvent("rollbar-occurrence-event",a,Wt(n))):(a={message:t,level:e},null===(i=this.telemetrySpan)||void 0===i||i.addEvent("rollbar-log-event",a,Wt(n)));return this.capture("log",{message:t},e,r,n,a)}},{key:"captureNetwork",value:function(t,e,r,n){var o,i;e=e||"xhr",t.subtype=t.subtype||e,n&&(t.request=n);var a=this.levelFromStatus(t.status_code),s=1e6*(t.end_time_ms||0),u={type:t.subtype,method:t.method,url:t.url,statusCode:t.status_code,"request.headers":JSON.stringify(t.request_headers||{}),"response.headers":JSON.stringify((null===(o=t.response)||void 0===o?void 0:o.headers)||{}),"response.timeUnixNano":s.toString()};return null===(i=this.telemetrySpan)||void 0===i||i.addEvent("rollbar-network-event",u,Wt(t.start_time_ms)),this.capture("network",t,a,r,t.start_time_ms,u)}},{key:"levelFromStatus",value:function(t){return t>=200&&t<400?"info":0===t||t>=400?"error":"info"}},{key:"captureDom",value:function(t,e,r,n,o){var i={subtype:t,element:e};return void 0!==r&&(i.value=r),void 0!==n&&(i.checked=n),this.capture("dom",i,"info",o)}},{key:"captureInput",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.value,a=t.timestamp,s="rollbar-input-event",u={type:s,subtype:r,element:o,value:i},c={type:r,isSynthetic:n,element:o,value:i,endTimeUnixNano:Wt(a)},l=this._getRepeatedEvent(s,c);return l?this._updateRepeatedEvent(l,c,a):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(s,c,Wt(a)),this.capture("dom",u,"info",null,a,c))}},{key:"captureClick",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.timestamp,a="rollbar-click-event",s={type:a,subtype:r,element:o},u={type:r,isSynthetic:n,element:o,endTimeUnixNano:Wt(i)},c=this._getRepeatedEvent(a,u);return c?this._updateRepeatedEvent(c,u,i):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(a,u,Wt(i)),this.capture("dom",s,"info",null,i,u))}},{key:"_getRepeatedEvent",value:function(t,e){var r=this._lastEvent(this.queue);if(r&&r.body.type===t&&r.otelAttributes.target===e.target)return r}},{key:"_updateRepeatedEvent",value:function(t,e,r){var n=Math.max(r-t.timestamp_ms,1);t.body.value=e.value,t.otelAttributes.value=e.value,t.otelAttributes.height=e.height,t.otelAttributes.width=e.width,t.otelAttributes.textZoomRatio=e.textZoomRatio,t.otelAttributes.endTimeUnixNano=Wt(r),t.otelAttributes.durationUnixNano=Wt(n),t.otelAttributes.count=(t.otelAttributes.count||1)+1,t.otelAttributes.rate=t.otelAttributes.count/(n/1e3)}},{key:"_lastEvent",value:function(t){return t.length>0?t[t.length-1]:null}},{key:"captureFocus",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.timestamp,a="rollbar-focus-event",s={type:a,subtype:r,element:o},u={type:r,isSynthetic:n,element:o};return null===(e=this.telemetrySpan)||void 0===e||e.addEvent(a,u,Wt(i)),this.capture("dom",s,"info",null,i,u)}},{key:"captureResize",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.width,i=t.height,a=t.textZoomRatio,s=t.timestamp,u="rollbar-resize-event",c={type:u,subtype:r,width:o,height:i,textZoomRatio:a},l={type:r,isSynthetic:n,width:o,height:i,textZoomRatio:a},p=this._getRepeatedEvent(u,l);return p?this._updateRepeatedEvent(p,l,s):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(u,l,Wt(s)),this.capture("dom",c,"info",null,s,l))}},{key:"captureDragDrop",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.dropEffect,a=t.effectAllowed,s=t.kinds,u=t.mediaTypes,c=t.timestamp,l="rollbar-dragdrop-event",p={type:l,subtype:r,isSynthetic:n},f={type:r,isSynthetic:n};return"dragstart"===r&&(p=Nt(Nt({},p),{},{element:o,dropEffect:i,effectAllowed:a}),f=Nt(Nt({},f),{},{element:o,dropEffect:i,effectAllowed:a})),"drop"===r&&(p=Nt(Nt({},p),{},{element:o,dropEffect:i,effectAllowed:a,kinds:s,mediaTypes:u}),f=Nt(Nt({},f),{},{element:o,dropEffect:i,effectAllowed:a,kinds:s,mediaTypes:u})),null===(e=this.telemetrySpan)||void 0===e||e.addEvent(l,f,Wt(c)),this.capture("dom",p,"info",null,c,f)}},{key:"captureNavigation",value:function(t,e,r,n){var o;return null===(o=this.telemetrySpan)||void 0===o||o.addEvent("rollbar-navigation-event",{"previous.url.full":t,"url.full":e},Wt(n)),this.capture("navigation",{from:t,to:e},"info",r,n)}},{key:"captureDomContentLoaded",value:function(t){return this.capture("navigation",{subtype:"DOMContentLoaded"},"info",void 0,t&&t.getTime())}},{key:"captureLoad",value:function(t){return this.capture("navigation",{subtype:"load"},"info",void 0,t&&t.getTime())}},{key:"captureConnectivityChange",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.timestamp,i="rollbar-connectivity-event",a={type:i,subtype:r},s={type:r,isSynthetic:n};return null===(e=this.telemetrySpan)||void 0===e||e.addEvent(i,s,Wt(o)),this.capture("connectivity",a,"info",null,o,s)}},{key:"_captureRollbarItem",value:function(t){if(this.options.includeItemsInTelemetry)return t.err?this.captureError(t.err,t.level,t.uuid,t.timestamp):t.message?this.captureLog(t.message,t.level,t.uuid,t.timestamp):t.custom?this.capture("log",t.custom,t.level,t.uuid,t.timestamp):void 0}},{key:"push",value:function(t){this.queue.push(t),this.queue.length>this.maxQueueSize&&this.queue.shift()}}])}();function zt(t,e){if(e)return e;return{error:"error",manual:"info"}[t]||"info"}const $t=Gt;const Qt=function(t,e,r,n,o){var i=t[e];t[e]=r(i),n&&n[o].push([t,e,i])};function Zt(t){var e={protocol:t.protocol,hostname:"string"==typeof t.hostname&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,hash:t.hash,search:t.search,pathname:t.pathname,path:"".concat(t.pathname||"").concat(t.search||""),href:t.href};return""!==t.port&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth="".concat(t.username,":").concat(t.password)),e}function Vt(t){var e=t.protocol||"http:";return e+="//",t.auth&&(e+="".concat(t.auth,"@")),e+=t.hostname||t.host||"localhost",t.port&&(e+=":".concat(t.port)),e+=t.path||"/"}var Xt={network:!0,networkResponseHeaders:!1,networkRequestHeaders:!1,log:!0};function Kt(t,e,r){this.options=t;var n=t.autoInstrument;!1===t.enabled||!1===n?this.autoInstrument={}:(p(n,"object")||(n=Xt),this.autoInstrument=s(Xt,n)),this.telemeter=e,this.rollbar=r,this.diagnostic=r.client.notifier.diagnostic,this.replacements={network:[],log:[]}}function Yt(t){var e=this.telemeter,r=this;return function(n,o,i){var a=function(t,e,r){if("string"==typeof t){var n=t;t=Zt(new Ct.URL(n))}else t&&t instanceof Ct.URL?t=Zt(t):(r=e,e=t,t=null);return"function"==typeof e?(r=e,e=t||{}):e=s(t||{},e),{options:e,cb:r}}(n,o,i),u={method:a.options.method||"GET",url:Vt(a.options),status_code:null,start_time_ms:O(),end_time_ms:null};r.autoInstrument.networkRequestHeaders&&(u.request_headers=a.options.headers),e.captureNetwork(u,"http");var c=Array.from(arguments),l=function(t,e,r){return function(n){if(e.end_time_ms=O(),e.status_code=n.statusCode,e.response={},t.networkResponseHeaders&&(e.response.headers=n.headers),r)return r.apply(void 0,arguments)}}(r.autoInstrument,u,a.cb);a.cb&&c.pop(),c.push(l);var p=t.apply(Tt,c);return p.on("error",(function(t){u.status_code=0,u.error=[t.name,t.message].join(": ")})),p}}function te(t,e){for(var r;t[e].length;)(r=t[e].shift())[0][r[1]]=r[2]}Kt.prototype.configure=function(t){this.options=s(this.options,t);var e=t.autoInstrument,r=s(this.autoInstrument);!1===t.enabled||!1===e?this.autoInstrument={}:(p(e,"object")||(e=Xt),this.autoInstrument=s(Xt,e)),this.instrument(r)},Kt.prototype.instrument=function(t){!this.autoInstrument.network||t&&t.network?!this.autoInstrument.network&&t&&t.network&&this.deinstrumentNetwork():this.instrumentNetwork(),!this.autoInstrument.log||t&&t.log?!this.autoInstrument.log&&t&&t.log&&this.deinstrumentConsole():this.instrumentConsole()},Kt.prototype.deinstrumentNetwork=function(){te(this.replacements,"network")},Kt.prototype.instrumentNetwork=function(){Qt(It,"request",Yt.bind(this),this.replacements,"network"),Qt(Tt,"request",Yt.bind(this),this.replacements,"network")},Kt.prototype.captureNetwork=function(t,e,r){return this.telemeter.captureNetwork(t,e,r)},Kt.prototype.deinstrumentConsole=function(){te(this.replacements,"log")},Kt.prototype.instrumentConsole=function(){var t=this.telemeter,e=process.stdout;Qt(e,"write",(function(r){return function(n){return t.captureLog(n,"info"),r.apply(e,arguments)}}),this.replacements,"log");var r=process.stderr;Qt(r,"write",(function(e){return function(n){return t.captureLog(n,"error"),e.apply(r,arguments)}}),this.replacements,"log")};const ee=Kt,re=require("async"),ne=require("fs"),oe=require("lru-cache"),ie=require("source-map"),ae=require("path");var se={},ue={},ce={},le=/^data:application\/json[^,]+base64,/;function pe(t){if(t=t.trim(),/^file:/.test(t)&&(t=t.replace(/file:\/\/\/(\w:)?/,(function(t,e){return e?"":"/"}))),t in se)return se[t];var e="";try{ne.existsSync(t)&&(e=ne.readFileSync(t,"utf8"))}catch(t){}return se[t]=e}function fe(t,e){if(!t)return e;var r=ae.dirname(t),n=/^\w+:\/\/[^\/]*/.exec(r),o=n?n[0]:"",i=r.slice(o.length);return o&&/^\/\w\:/.test(i)?(o+="/")+ae.resolve(r.slice(o.length),e).replace(/\\/g,"/"):o+ae.resolve(r.slice(o.length),e)}function he(t){var e,r=function(t){var e;e=pe(t);for(var r,n,o=/(?:\/\/[@#][ \t]+sourceMappingURL=([^\s'"]+?)[ \t]*$)|(?:\/\*[@#][ \t]+sourceMappingURL=([^\*]+?)[ \t]*(?:\*\/)[ \t]*$)/gm;n=o.exec(e);)r=n;return r?r[1]:null}(t);if(!r)return null;if(le.test(r)){var n=r.slice(r.indexOf(",")+1);e=Buffer.from(n,"base64").toString(),r=t}else e=pe(r=fe(t,r));return e?{url:r,map:e}:null}function de(t,e){var r=ue[t.source];if(!r){var n=he(t.source);n?(r=ue[t.source]={url:n.url,map:new ie.SourceMapConsumer(n.map)},e.node_source_maps.source_mapping_urls[t.source]=n.url,r.map.sourcesContent&&r.map.sources.forEach((function(t,e){var n=r.map.sourcesContent[e];if(n){var o=fe(r.url,t);se[o]=n}}))):(r=ue[t.source]={url:null,map:null},e.node_source_maps.source_mapping_urls[t.source]="not found")}if(r&&r.map&&"function"==typeof r.map.originalPositionFor){var o=r.map.originalPositionFor(t);if(null!==o.source){var i=o.source;return o.source=fe(r.url,o.source),function(t,e,r){ce[r]||(ce[r]=t.map.sourceContentFor(e,!0))}(r,i,o.source),o}}return t}function me(t){return ce[t]}function ve(t){return ve="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ve(t)}var ye=/^\s*at (?:([^(]+(?: \[\w\s+\])?(?:.*\)*)) )?\(?(.+?)(?::(\d+):(\d+)(?:, :(\d+):(\d+))?)?\)?$/,ge=/^\s*at .+ \(.+ (at[^)]+\))\)$/,be=/^\s*(>?) [0-9]+\|(\s*.+)$/m,we=new oe({max:100}),ke={};function _e(t,e){var r,n,o,i,a;if((r=(n=t).match(ge))&&(n=r[1]),!(r=n.match(ye)))return e(null,null);var s={source:(o=r.slice(1))[1],line:Math.floor(o[2]),column:Math.floor(o[3])-1};a=this.useSourceMaps?function(t,e){return de({source:t.source,line:t.line,column:t.column},e)}(s,this.diagnostic):s,i={method:o[0]||"",filename:a.source,lineno:a.line,colno:a.column,runtimePosition:s},o[4]&&(i.compiled_lineno=Math.floor(o[4])),o[5]&&(i.compiled_colno=Math.floor(o[5])),e(null,i)}function xe(t,e){var r,n;r="/"===t[0]||"."===t[0],n=!!we.get(t),e(null,r&&!n&&!!!ke[t])}function Ee(t,e){if(me(t))return e(null,!0);ne.stat(t,(function(t){e(null,!t)}))}function Se(t,e){var r=[];t.forEach((function(t){-1===r.indexOf(t.filename)&&r.push(t.filename)})),re.filter(r,xe,(function(r,n){if(r)return e(r);var o;function i(t,e){o[t]=e,we.set(t,e)}function a(t,e){var r=me(t);if(r)try{var n=r.split("\n");return i(t,n),e(null)}catch(t){return e(t)}!function(t,e){try{ne.readFile(t,(function(t,r){var n;return t?e(t):(n=r.toString("utf8").split("\n"),e(null,n))}))}catch(t){lt.log(t)}}(t,(function(r,n){return r?e(r):(i(t,n),e(null))}))}function s(t,e){var r=o[t.filename]||we.get(t.filename);r&&function(t,e){t.code=e[t.lineno-1],t.context={pre:e.slice(Math.max(0,t.lineno-4),t.lineno-1),post:e.slice(t.lineno,t.lineno+3)}}(t,r),e(null)}o={},re.filter(n,Ee,(function(r,n){if(r)return e(r);re.each(n,a,(function(r){if(r)return e(r);re.eachSeries(t,s,(function(r){if(r)return e(r);e(null,t)}))}))}))}))}function Oe(t,e,n,o){var i=function(t){var e,n;if(null==t)return null;if("object"!==ve(t))return null;if(r.isArray(t))return t;for(n in e=[],t)Object.prototype.hasOwnProperty.call(t,n)&&e.push(t[n]);return e}(t.errors);return function(t,e,r,n){var o,i=t;for(;"object"===ve(i);)i=i&&i.stack;o=(i||"").split("\n").slice(1),e.nodeSourceMaps&&(r.diagnostic.node_source_maps={},r.diagnostic.node_source_maps.source_mapping_urls={});re.map(o,_e.bind({useSourceMaps:e.nodeSourceMaps,diagnostic:r.diagnostic}),(function(t,e){if(t)return n(t);e.reverse(),re.filter(e,(function(t,e){e(null,!!t)}),(function(t,e){if(t)return n(t);Se(e,n)}))}))}(t.stack,e,n,(function(e,r){var a,s,u,c,l;return e?(lt.error("could not parse exception, err: "+e),o(e)):(a=String(t.message||""),s=String(t.name||""),u={class:s,message:a,frames:r},i&&i.length&&(c=i[0],u={class:s,message:String(c.message||""),frames:r}),a.match(be)&&(l=function(t){var e,r,n,o,i,a,s,u,c,l,p;for(r=(e=t.split("\n"))[0].indexOf(":"),n=e[0].slice(0,r),o=parseInt(e[0].slice(r+1),10),a=e[(i=e.length)-1],e=e.slice(1,i-1),c=[],l=[],s=0;s"===p[1]?u=p[2]:u?p[2]&&l.push(p[2]):p[2]&&c.push(p[2]));return{frame:{method:"",filename:n,lineno:o,code:u,context:{pre:c=c.slice(0,Math.min(c.length,3)),post:l=l.slice(0,Math.min(l.length,3))}},message:a}}(a),u.message=l.message,u.frames.push(l.frame)),n.localsMap?void n.notifier.locals.mergeLocals(n.localsMap,r,t.stack,(function(t){return t&&(lt.error("could not parse locals, err: "+t),n.diagnostic["error parsing locals"]=t),o(null,u)})):o(null,u))}))}const Ie=require("request-ip");function Te(t,e){var r=e.split("."),n=r.length-1;try{for(var o=0;o<=n;++o)o",o=t.protocol||(t.socket&&t.socket.encrypted?"https":"http"),i=t.baseUrl||"";if(p(t.url,"string")){var a=i&&i.length?i+t.url:t.url;e=Ct.parse(a,!0)}else e=t.url||{};e.protocol=e.protocol||o,e.host=e.host||n;var s={url:Ct.format(e),user_ip:Ue(t),headers:r,method:t.method};e.search&&e.search.length>0&&(s.GET=e.query);var u=t.body||t.payload;if(u){var c={};if("object"===(h=f(u))||"array"===h){for(var l in u)Object.prototype.hasOwnProperty.call(u,l)&&(c[l]=u[l]);s[t.method]=c}else s.body=u}var h;return s}(n);if(function(t,e){if(t&&t.user_ip&&!0!==e){var r=t.user_ip;if(e)try{var n;if(-1!==r.indexOf("."))(n=r.split(".")).pop(),n.push("0"),r=n.join(".");else if(-1!==r.indexOf(":")){if((n=r.split(":")).length>2){var o=n.slice(0,3),i=o[2].indexOf("/");-1!==i&&(o[2]=o[2].substring(0,i)),r=o.concat("0000:0000:0000:0000:0000").join(":")}}else r=null}catch(t){r=null}else r=null;t.user_ip=r}}(a,e.captureIp),t.data.request=a,n.route)i=n.route.path,t.data.context=o&&o.length?o+i:i;else try{i=n.app._router.matchRequest(n).path,t.data.context=o&&o.length?o+i:i}catch(t){}var s=e.captureEmail,u=e.captureUsername;if(n.rollbar_person){var c=n.rollbar_person;!s&&c.email&&(c.email=null),!u&&c.username&&(c.username=null),t.data.person=c}else if(n.user)t.data.person={id:n.user.id},n.user.username&&u&&(t.data.person.username=n.user.username),n.user.email&&s&&(t.data.person.email=n.user.email);else if(n.user_id||n.userId){var l=n.user_id||n.userId;h(l)&&(l=l()),t.data.person={id:l}}r(null,t)}else r(null,t)}function Ae(t,e,r){var n=t.lambdaContext;if(n){var o={remainingTimeInMillis:n.getRemainingTimeInMillis(),callbackWaitsForEmptyEventLoop:n.callbackWaitsForEmptyEventLoop,functionName:n.functionName,functionVersion:n.functionVersion,arn:n.invokedFunctionArn,requestId:n.awsRequestId};t.data=t.data||{},t.data.custom=t.data.custom||{},t.data.custom.lambda=o,r(null,t)}else r(null,t)}function Ce(t,e,r){var n=e.scrubHeaders||[],o=e.scrubFields||[],i=e.scrubPaths||[];o=n.concat(o),function(t,e){if(!t||!e.scrubRequestBody)return;try{("string"==typeof(r=t.body)||r instanceof String)&&Me(t)&&(t.body=JSON.parse(t.body))}catch(e){t.body=null,t.error="request.body parse failed: "+e.message}var r}(t.data.request,e),t.data=Le(t.data,o,i),function(t,e){if(!t||!e.scrubRequestBody)return;try{d(t.body)&&Me(t)&&(t.body=JSON.stringify(t.body))}catch(e){t.body=null,t.error="request.body serialization failed: "+e.message}}(t.data.request,e),r(null,t)}function Me(t){return t.headers&&t.headers["content-type"]&&t.headers["content-type"].includes("json")}function Ue(t){var e=t.ip;return e||(e=Ie.getClientIp(t)),e}function De(t,e,r){t._isUncaught&&(t.data._isUncaught=!0),t._originalArgs&&(t.data._originalArgs=t._originalArgs),r(null,t)}function Ne(t,e,r){var n=e.payload||{};n.body&&delete n.body,t.data=s(t.data,n),r(null,t)}function Fe(t,e,r){t.telemetryEvents&&S(t,"data.body.telemetry",t.telemetryEvents),r(null,t)}function He(t,e,r){if(t.message){var n="data.body.trace_chain.0",o=E(t,n);if(o||(o=E(t,n="data.body.trace")),o){if(!o.exception||!o.exception.description)return S(t,n+".exception.description",t.message),void r(null,t);var i=E(t,n+".extra")||{};S(t,n+".extra",s(i,{message:t.message}))}r(null,t)}else r(null,t)}function Je(t){return function(e,r,n){var o,i=s(e),a=null;try{h(r.transform)&&(a=r.transform(i.data,e))}catch(o){return r.transform=null,t.error("Error while calling custom transform() function. Removing custom transform().",o),void n(null,e)}d(o=a)&&p(o.then,"function")?a.then((function(t){t&&(i.data=t),n(null,i)}),(function(t){n(t,e)})):n(null,i)}}function Be(t,e,r){if(!e.sendConfig)return r(null,t);var n=E(t,"data.custom")||{};n._rollbarConfig=e,t.data.custom=n,r(null,t)}function We(t,e){h(t[e])&&(t[e]=t[e].toString())}function Ge(t,e,r){var n=e._configuredOptions;We(n,"transform"),We(n,"checkIgnore"),We(n,"onSendCallback"),delete n.accessToken,t.data.notifier.configured_options=n,r(null,t)}function ze(t,e,r){var n=s(t.notifier.client.notifier.diagnostic,t.diagnostic);if(E(t,"err._isAnonymous")&&(n.is_anonymous=!0),t._isUncaught&&(n.is_uncaught=t._isUncaught),t.err)try{n.raw_error={message:t.err.message,name:t.err.name,constructor_name:t.err.constructor&&t.err.constructor.name,filename:t.err.fileName,line:t.err.lineNumber,column:t.err.columnNumber,stack:t.err.stack}}catch(t){n.raw_error={failed:String(t)}}t.data.notifier.diagnostic=s(t.data.notifier.diagnostic,n),r(null,t)}function $e(t,e){var r=t.level,n=m[r]||0,o=e.reportLevel;return!(n<(m[o]||0))}function Qe(t,e,r){if(!t)return!r;var n,o,i=t.frames;if(!i||0===i.length)return!r;for(var a=e.length,s=i.length,u=0;u{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},e={};t.d(e,{default:()=>kr});const r=require("os"),n=require("url"),o=require("util"),i=require("json-stringify-safe");function a(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return s(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r0&&(s||(s=g({})),s.extraArgs=g(p));var k,_={message:i,err:a,custom:s,timestamp:O(),callback:u,notifier:r,diagnostic:{},uuid:(k=O(),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){var e=(k+16*Math.random())%16|0;return k=Math.floor(k/16),("x"===t?e:7&e|8).toString(16)}))};return _.data=_.data||{},function(t,e){e&&void 0!==e.level&&(t.level=e.level,delete e.level);e&&void 0!==e.skipFrames&&(t.skipFrames=e.skipFrames,delete e.skipFrames)}(_,s),n&&l&&(_.request=l),o&&(_.lambdaContext=o),_._originalArgs=t,_.diagnostic.original_arg_types=h,_}var w=["log","network","dom","navigation","error","manual"],k=["critical","error","warning","info","debug"];function _(t,e){var r,n=a(t);try{for(n.s();!(r=n.n()).done;){if(r.value===e)return!0}}catch(t){n.e(t)}finally{n.f()}return!1}function S(t,e){t.attributes=t.attributes||[];var r,n=a(e);try{for(n.s();!(r=n.n()).done;){var o=r.value;void 0!==o.value&&t.attributes.push(o)}}catch(t){n.e(t)}finally{n.f()}}function E(t,e){if(t){var r=e.split("."),n=t;try{for(var o=0,i=r.length;o255&&(t.context=t.context.substr(0,255))}return{data:t}}function P(t,e,r){var n=e.hostname,o=e.protocol,i=e.port,a=e.path,s=e.search,u=t.timeout,l=function(t){var e="undefined"!=typeof window&&window||"undefined"!=typeof self&&self,r=t.defaultTransport||"xhr";void 0===e.fetch&&(r="xhr");void 0===e.XMLHttpRequest&&(r="fetch");return r}(t),c=t.proxy;if(t.endpoint){var f=r.parse(t.endpoint);n=f.hostname,o=f.protocol,i=f.port,a=f.pathname,s=f.search}return{timeout:u,hostname:n,protocol:o,port:i,path:a,search:s,proxy:c,transport:l}}function R(t,e){var r=t.protocol||"https:",n=t.port||("http:"===r?80:"https:"===r?443:void 0),o=t.hostname,i=t.path,a=t.timeout,s=t.transport;return t.search&&(i+=t.search),t.proxy&&(i=r+"//"+o+i,o=t.proxy.host||t.proxy.hostname,n=t.proxy.port,r=t.proxy.protocol||r),{timeout:a,protocol:r,hostname:o,path:i,port:n,method:e,transport:s}}function L(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function A(t){for(var e=1;e3?(o=d===n)&&(u=i[(s=i[4])?5:(s=3,3)],i[4]=i[5]=t):i[0]<=h&&((o=r<2&&hn||n>d)&&(i[4]=r,i[5]=n,p.n=d,s=0))}if(o||r>1)return a;throw f=!0,n}return function(o,c,d){if(l>1)throw TypeError("Generator is already running");for(f&&1===c&&h(c,d),s=c,u=d;(e=s<2?t:u)||!f;){i||(s?s<3?(s>1&&(p.n=-1),h(s,u)):p.n=u:p.v=u);try{if(l=2,i){if(s||(o="next"),e=i[o]){if(!(e=e.call(i,u)))throw TypeError("iterator result is not an object");if(!e.done)return e;u=e.value,s<2&&(s=0)}else 1===s&&(e=i.return)&&e.call(i),s<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),s=1);i=t}else if((e=(f=p.n<0)?u:r.call(n,p))!==a)break}catch(e){i=t,s=1,u=e}finally{l=1}}return{value:e,done:f}}}(r,o,i),!0),l}var a={};function s(){}function u(){}function l(){}e=Object.getPrototypeOf;var c=[][n]?e(e([][n]())):(U(e={},n,function(){return this}),e),f=l.prototype=s.prototype=Object.create(c);function p(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,l):(t.__proto__=l,U(t,o,"GeneratorFunction")),t.prototype=Object.create(f),t}return u.prototype=l,U(f,"constructor",l),U(l,"constructor",u),u.displayName="GeneratorFunction",U(l,o,"GeneratorFunction"),U(f),U(f,o,"Generator"),U(f,n,function(){return this}),U(f,"toString",function(){return"[object Generator]"}),(M=function(){return{w:i,m:p}})()}function U(t,e,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}U=function(t,e,r,n){function i(e,r){U(t,e,function(t){return this._invoke(e,r,t)})}e?o?o(t,e,{value:r,enumerable:!n,configurable:!n,writable:!n}):t[e]=r:(i("next",0),i("throw",1),i("return",2))},U(t,e,r,n)}function D(t,e,r,n,o,i,a){try{var s=t[i](a),u=s.value}catch(t){return void r(t)}s.done?e(u):Promise.resolve(u).then(n,o)}function N(t,e){for(var r=0;r1&&void 0!==o[1]?o[1]:{},n=R(this.OTLPTransportOptions,"POST"),t.a(2,this._postPromise({accessToken:this.accessToken,options:n,payload:e,headers:r}))},t,this)}),o=function(){var t=this,e=arguments;return new Promise(function(r,o){var i=n.apply(t,e);function a(t){D(i,r,o,a,s,"next",t)}function s(t){D(i,r,o,a,s,"throw",t)}a(void 0)})},function(t){return o.apply(this,arguments)})},{key:"buildJsonPayload",value:function(t,e){var r,n=j(t);return(r=this.truncation?this.truncation.truncate(n):y(n)).error?(e&&e(r.error),null):r.value}},{key:"postJsonPayload",value:function(t,e){var r=R(this.transportOptions,"POST");this.transport.postJsonPayload(this.accessToken,r,t,e)}},{key:"configure",value:function(t){var e=this.options;return this.options=T(e,t),this.transportOptions=W(this.options,this.url),this.OTLPTransportOptions=G(this.options,this.url),void 0!==this.options.accessToken&&(this.accessToken=this.options.accessToken),this}}],e&&N(t.prototype,e),r&&N(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r,n,o}();function W(t,e){return P(t,H,e)}function G(t,e){var r;return P(t=A(A({},t),{},{endpoint:null===(r=t.tracing)||void 0===r?void 0:r.endpoint}),B,e)}const z=J;var $="3.0.0",Q="debug";var Z=function(){},V={debug:0,info:1,warn:2,error:3,disable:4},X={error:function(){for(var t=arguments.length,e=new Array(t),r=0;r=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function tt(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);rthis.options.maxRetries&&(i=!1))}i?this._retryApiRequest(r,n):n(e)}},{key:"_retryApiRequest",value:function(t,e){var r=this;this.retryQueue.push({item:t,callback:e}),this.retryHandle||(this.retryHandle=setInterval(function(){for(;r.retryQueue.length;){var t=r.retryQueue.shift();r._makeApiRequest(t.item,t.callback)}},this.options.retryInterval))}},{key:"_dequeuePendingRequest",value:function(t){var e=this.pendingRequests.indexOf(t);-1!==e&&(this.pendingRequests.splice(e,1),this._maybeCallWait())}},{key:"_maybeLog",value:function(t,e){if(this.logger&&this.options.verbose){var r=e||E(t,"body.trace.exception.message")||E(t,"body.trace_chain.0.exception.message");if(r)return void this.logger.error(r);(r=E(t,"body.message.body"))&&this.logger.log(r)}}},{key:"_maybeCallWait",value:function(){return!(!f(this.waitCallback)||0!==this.pendingItems.length||0!==this.pendingRequests.length||(this.waitIntervalID&&(this.waitIntervalID=clearInterval(this.waitIntervalID)),this.waitCallback(),0))}}])&&ct(e.prototype,r),n&&ct(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r,n}();pt=mt,dt=["ECONNRESET","ENOTFOUND","ESOCKETTIMEDOUT","ETIMEDOUT","ECONNREFUSED","EHOSTUNREACH","EPIPE","EAI_AGAIN"],(ht=ft(ht="RETRIABLE_ERRORS"))in pt?Object.defineProperty(pt,ht,{value:dt,enumerable:!0,configurable:!0,writable:!0}):pt[ht]=dt;const yt=mt;function vt(t){return vt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},vt(t)}function gt(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.startTime=Date.now(),this.counter=0,this.perMinCounter=0,this.platform=null,this.platformOptions={},this.configureGlobal(e)}return function(t,e,r){return e&>(t.prototype,e),r&>(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}(t,[{key:"configureGlobal",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.startTime,n=e.maxItems,o=e.itemsPerMinute;void 0!==r&&(t.globalSettings.startTime=r),void 0!==n&&(t.globalSettings.maxItems=n),void 0!==o&&(t.globalSettings.itemsPerMinute=o)}},{key:"shouldSend",value:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now(),n=r-this.startTime;(n<0||n>=6e4)&&(this.startTime=r,this.perMinCounter=0);var o=t.globalSettings.maxItems,i=t.globalSettings.itemsPerMinute;if(kt(e,o,this.counter))return _t(this.platform,this.platformOptions,"".concat(o," max items reached"),!1);if(kt(e,i,this.perMinCounter))return _t(this.platform,this.platformOptions,"".concat(i," items per minute reached"),!1);this.counter+=1,this.perMinCounter+=1;var a=!kt(e,o,this.counter),s=a,u=a&&!kt(e,i,this.perMinCounter);return _t(this.platform,this.platformOptions,null,u,o,i,s)}},{key:"setPlatformOptions",value:function(t,e){this.platform=t,this.platformOptions=e}}])}();function kt(t,e,r){return!t.ignoreRateLimit&&e>=1&&r>e}function _t(t,e,r,n,o,i,a){var s=null,u=r?new Error(r):null;return u||n||(s=function(t,e,r,n,o){var i=e.environment||e.payload&&e.payload.environment,a=o?"item per minute limit reached, ignoring errors until timeout":"maxItems has been hit, ignoring errors until reset.",s={body:{message:{body:a,extra:{maxItems:r,itemsPerMinute:n}}},language:"javascript",environment:i,notifier:{version:e.notifier&&e.notifier.version||e.version}};"browser"===t?(s.platform="browser",s.framework="browser-js",s.notifier.name="rollbar-browser-js"):"server"===t?(s.framework=e.framework||"node-js",s.notifier.name=e.notifier.name):"react-native"===t&&(s.framework=e.framework||"react-native",s.notifier.name=e.notifier.name);return s}(t,e,o,i,a)),{error:u,shouldSend:n,payload:s}}!function(t,e,r){(e=bt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r}(wt,"globalSettings",{startTime:Date.now(),maxItems:void 0,itemsPerMinute:void 0});const St=wt;function Et(t,e,r,n,o,i,a){this.options=T(t),this.logger=r,Et.rateLimiter.configureGlobal(this.options),Et.rateLimiter.setPlatformOptions(a,this.options),this.api=e,this.queue=new yt(Et.rateLimiter,e,r,this.options,i),this.tracing=o;var s=this.options.tracer||null;Ot(s)?(this.tracer=s,this.options.tracer="opentracing-tracer-enabled",this.options._configuredOptions.tracer="opentracing-tracer-enabled"):this.tracer=null,this.notifier=new ut(this.queue,this.options),this.telemeter=n,xt(t),this.lastError=null,this.lastErrorHash="none"}function xt(t){t.stackTraceLimit&&(Error.stackTraceLimit=t.stackTraceLimit)}function Ot(t){if(!t)return!1;if(!t.scope||"function"!=typeof t.scope)return!1;var e=t.scope();return!(!e||!e.active||"function"!=typeof e.active)}Et.rateLimiter=new St({maxItems:0,itemsPerMinute:60}),Et.prototype.global=function(t){return Et.rateLimiter.configureGlobal(t),this},Et.prototype.configure=function(t,e){var r=this.options,n={};e&&(n={payload:e}),this.options=T(r,t,n);var o=this.options.tracer||null;return Ot(o)?(this.tracer=o,this.options.tracer="opentracing-tracer-enabled",this.options._configuredOptions.tracer="opentracing-tracer-enabled"):this.tracer=null,this.notifier&&this.notifier.configure(this.options),this.telemeter&&this.telemeter.configure(this.options),xt(t),this.global(this.options),Ot(t.tracer)&&(this.tracer=t.tracer),this},Et.prototype.log=function(t){var e=this._defaultLogLevel();return this._log(e,t)},Et.prototype.debug=function(t){this._log("debug",t)},Et.prototype.info=function(t){this._log("info",t)},Et.prototype.warn=function(t){this._log("warning",t)},Et.prototype.warning=function(t){this._log("warning",t)},Et.prototype.error=function(t){this._log("error",t)},Et.prototype.critical=function(t){this._log("critical",t)},Et.prototype.wait=function(t){this.queue.wait(t)},Et.prototype.captureEvent=function(t,e,r){return this.telemeter&&this.telemeter.captureEvent(t,e,r)},Et.prototype.captureDomContentLoaded=function(t){return this.telemeter&&this.telemeter.captureDomContentLoaded(t)},Et.prototype.captureLoad=function(t){return this.telemeter&&this.telemeter.captureLoad(t)},Et.prototype.buildJsonPayload=function(t){return this.api.buildJsonPayload(t)},Et.prototype.sendJsonPayload=function(t){this.api.postJsonPayload(t)},Et.prototype._log=function(t,e){var r;if(e.callback&&(r=e.callback,delete e.callback),this.options.ignoreDuplicateErrors&&this._sameAsLastError(e)){if(r){var n=new Error("ignored identical item");n.item=e,r(n)}}else try{e.level=e.level||t,this._addItemAttributes(e),this._addTracingInfo(e);var o=this.telemeter;o&&(o._captureRollbarItem(e),e.telemetryEvents=o.copyEvents()||[]),this.notifier.log(e,r)}catch(t){r&&r(t),this.logger.error(t)}},Et.prototype._addItemAttributes=function(t){var e,r,n=null===(e=this.tracing)||void 0===e?void 0:e.getSpan(),o=[{key:"session_id",value:null===(r=this.tracing)||void 0===r?void 0:r.sessionId},{key:"span_id",value:null==n?void 0:n.spanId},{key:"trace_id",value:null==n?void 0:n.traceId}];t._isUncaught&&o.push({key:"is_uncaught",value:"true"}),S(t.data,o),null==n||n.addEvent("rollbar.occurrence",[{key:"rollbar.occurrence.uuid",value:t.uuid}])},Et.prototype._defaultLogLevel=function(){return this.options.logLevel||"debug"},Et.prototype._sameAsLastError=function(t){if(!t._isUncaught)return!1;var e=function(t){var e=t.message||"",r=(t.err||{}).stack||String(t.err);return e+"::"+r}(t);return this.lastErrorHash===e||(this.lastError=t.err,this.lastErrorHash=e,!1)},Et.prototype._addTracingInfo=function(t){if(this.tracer){var e=this.tracer.scope().active();if(function(t){if(!t||!t.context||"function"!=typeof t.context)return!1;var e=t.context();if(!e||!e.toSpanId||!e.toTraceId||"function"!=typeof e.toSpanId||"function"!=typeof e.toTraceId)return!1;return!0}(e)){e.setTag("rollbar.error_uuid",t.uuid),e.setTag("rollbar.has_error",!0),e.setTag("error",!0),e.setTag("rollbar.item_url","https://rollbar.com/item/uuid/?uuid=".concat(t.uuid)),e.setTag("rollbar.occurrence_url","https://rollbar.com/occurrence/uuid/?uuid=".concat(t.uuid));var r=e.context().toSpanId(),n=e.context().toTraceId();t.custom?(t.custom.opentracing_span_id=r,t.custom.opentracing_trace_id=n):t.custom={opentracing_span_id:r,opentracing_trace_id:n}}}};const It=Et;var Tt=["otelAttributes"];function jt(t){return jt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},jt(t)}function Pt(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function Rt(t){for(var e=1;en&&(o=this.queue.length-n),this.maxQueueSize=n,this.queue.splice(0,o)}},{key:"copyEvents",value:function(){var t=Array.prototype.slice.call(this.queue,0);if(f(this.options.filterTelemetry))try{for(var e=t.length;e--;)this.options.filterTelemetry(t[e])&&t.splice(e,1)}catch(t){this.options.filterTelemetry=null}return t=t.filter(function(t){return"connectivity"!==t.type}),t=t.map(function(t){t.otelAttributes;var e=function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(-1!==e.indexOf(n))continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.telemetrySpan&&(this.telemetrySpan.end(t),this.telemetrySpan=this.tracing.startSpan("rollbar-telemetry",{}))}},{key:"capture",value:function(t,e,r,n){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,a={level:Dt(t,r),type:t,timestamp_ms:o||O(),body:e,source:"client"};n&&(a.uuid=n),i&&(a.otelAttributes=i);try{if(f(this.options.filterTelemetry)&&this.options.filterTelemetry(a))return!1}catch(t){this.options.filterTelemetry=null}return this.push(a),a}},{key:"captureEvent",value:function(t,e,r,n){return this.capture(t,e,r,n)}},{key:"captureError",value:function(t,e,r,n){var o,i=t.message||String(t),a={message:i};t.stack&&(a.stack=t.stack);var s={message:i,level:e,type:"error",uuid:r};return null===(o=this.telemetrySpan)||void 0===o||o.addEvent("rollbar-occurrence-event",s,Mt(n)),this.capture("error",a,e,r,n,s)}},{key:"captureLog",value:function(t,e,r,n){var o,i=r?"rollbar-occurrence-event":"rollbar-log-event",a=Rt({message:t,level:e},r?{type:"message",uuid:r}:{});return null===(o=this.telemetrySpan)||void 0===o||o.addEvent(i,a,Mt(n)),this.capture("log",{message:t},e,r,n,a)}},{key:"captureNetwork",value:function(t,e,r,n){var o,i,a;e=e||"xhr",t.subtype=t.subtype||e,n&&(t.request=n);var s=this.levelFromStatus(t.status_code),u=1e6*(t.end_time_ms||0),l={type:t.subtype,method:t.method,url:t.url,statusCode:t.status_code,"request.headers":JSON.stringify(t.request_headers||{}),"response.headers":JSON.stringify((null===(o=t.response)||void 0===o?void 0:o.headers)||{}),"response.timeUnixNano":u.toString()},c=t.request,f=null===(i=t.response)||void 0===i?void 0:i.body;return c&&(l["request.body"]=JSON.stringify(c)),f&&(l["response.body"]=JSON.stringify(f)),null===(a=this.telemetrySpan)||void 0===a||a.addEvent("rollbar-network-event",l,Mt(t.start_time_ms)),this.capture("network",t,s,r,t.start_time_ms,l)}},{key:"levelFromStatus",value:function(t){return t>=200&&t<400?"info":0===t||t>=400?"error":"info"}},{key:"captureDom",value:function(t,e,r,n,o){var i={subtype:t,element:e};return void 0!==r&&(i.value=r),void 0!==n&&(i.checked=n),this.capture("dom",i,"info",o)}},{key:"captureInput",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.value,a=t.timestamp,s="rollbar-input-event",u={type:s,subtype:r,element:o,value:i},l={type:r,isSynthetic:n,element:o,value:i,endTimeUnixNano:Mt(a)},c=this._getRepeatedEvent(s,l);return c?this._updateRepeatedEvent(c,l,a):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(s,l,Mt(a)),this.capture("dom",u,"info",null,a,l))}},{key:"captureClick",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.timestamp,a="rollbar-click-event",s={type:a,subtype:r,element:o},u={type:r,isSynthetic:n,element:o,endTimeUnixNano:Mt(i)},l=this._getRepeatedEvent(a,u);return l?this._updateRepeatedEvent(l,u,i):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(a,u,Mt(i)),this.capture("dom",s,"info",null,i,u))}},{key:"_getRepeatedEvent",value:function(t,e){var r=this._lastEvent(this.queue);if(r&&r.body.type===t&&r.otelAttributes.target===e.target)return r}},{key:"_updateRepeatedEvent",value:function(t,e,r){var n=Math.max(r-t.timestamp_ms,1);t.body.value=e.value,t.otelAttributes.value=e.value,t.otelAttributes.height=e.height,t.otelAttributes.width=e.width,t.otelAttributes.textZoomRatio=e.textZoomRatio,t.otelAttributes.endTimeUnixNano=Mt(r),t.otelAttributes.durationUnixNano=Mt(n),t.otelAttributes.count=(t.otelAttributes.count||1)+1,t.otelAttributes.rate=t.otelAttributes.count/(n/1e3)}},{key:"_lastEvent",value:function(t){return t.length>0?t[t.length-1]:null}},{key:"captureFocus",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.timestamp,a="rollbar-focus-event",s={type:a,subtype:r,element:o},u={type:r,isSynthetic:n,element:o};return null===(e=this.telemetrySpan)||void 0===e||e.addEvent(a,u,Mt(i)),this.capture("dom",s,"info",null,i,u)}},{key:"captureResize",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.width,i=t.height,a=t.textZoomRatio,s=t.timestamp,u="rollbar-resize-event",l={type:u,subtype:r,width:o,height:i,textZoomRatio:a},c={type:r,isSynthetic:n,width:o,height:i,textZoomRatio:a},f=this._getRepeatedEvent(u,c);return f?this._updateRepeatedEvent(f,c,s):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(u,c,Mt(s)),this.capture("dom",l,"info",null,s,c))}},{key:"captureDragDrop",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.dropEffect,a=t.effectAllowed,s=t.kinds,u=t.mediaTypes,l=t.timestamp,c="rollbar-dragdrop-event",f={type:c,subtype:r,isSynthetic:n},p={type:r,isSynthetic:n};return"dragstart"===r&&(f=Rt(Rt({},f),{},{element:o,dropEffect:i,effectAllowed:a}),p=Rt(Rt({},p),{},{element:o,dropEffect:i,effectAllowed:a})),"drop"===r&&(f=Rt(Rt({},f),{},{element:o,dropEffect:i,effectAllowed:a,kinds:s,mediaTypes:u}),p=Rt(Rt({},p),{},{element:o,dropEffect:i,effectAllowed:a,kinds:s,mediaTypes:u})),null===(e=this.telemetrySpan)||void 0===e||e.addEvent(c,p,Mt(l)),this.capture("dom",f,"info",null,l,p)}},{key:"captureNavigation",value:function(t,e,r,n){var o;return null===(o=this.telemetrySpan)||void 0===o||o.addEvent("rollbar-navigation-event",{"previous.url.full":t,"url.full":e},Mt(n)),this.capture("navigation",{from:t,to:e},"info",r,n)}},{key:"captureDomContentLoaded",value:function(t){return this.capture("navigation",{subtype:"DOMContentLoaded"},"info",void 0,t&&t.getTime())}},{key:"captureLoad",value:function(t){return this.capture("navigation",{subtype:"load"},"info",void 0,t&&t.getTime())}},{key:"captureConnectivityChange",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.timestamp,i="rollbar-connectivity-event",a={type:i,subtype:r},s={type:r,isSynthetic:n};return null===(e=this.telemetrySpan)||void 0===e||e.addEvent(i,s,Mt(o)),this.capture("connectivity",a,"info",null,o,s)}},{key:"_captureRollbarItem",value:function(t){if(this.options.includeItemsInTelemetry)return t.err?this.captureError(t.err,t.level,t.uuid,t.timestamp):t.message?this.captureLog(t.message,t.level,t.uuid,t.timestamp):t.custom?this.capture("log",t.custom,t.level,t.uuid,t.timestamp):void 0}},{key:"push",value:function(t){this.queue.push(t),this.queue.length>this.maxQueueSize&&this.queue.shift()}}])}();function Dt(t,e){if(e)return e;return{error:"error",manual:"info"}[t]||"info"}const Nt=Ut;function Ft(t,e,r){t._isUncaught&&(t.data._isUncaught=!0),t._originalArgs&&(t.data._originalArgs=t._originalArgs),r(null,t)}function Ht(t,e,r){var n=e.payload||{};n.body&&delete n.body,t.data=T(t.data,n),r(null,t)}function Bt(t,e,r){t.telemetryEvents&&x(t,"data.body.telemetry",t.telemetryEvents),r(null,t)}function Jt(t,e,r){if(t.message){var n="data.body.trace_chain.0",o=E(t,n);if(o||(o=E(t,n="data.body.trace")),o){if(!o.exception||!o.exception.description)return x(t,n+".exception.description",t.message),void r(null,t);x(t,n+".extra",T(E(t,n+".extra")||{},{message:t.message}))}r(null,t)}else r(null,t)}function Wt(t){return function(e,r,n){var o,i=T(e),a=null;try{f(r.transform)&&(a=r.transform(i.data,e))}catch(o){return r.transform=null,t.error("Error while calling custom transform() function. Removing custom transform().",o),void n(null,e)}p(o=a)&&l(o.then,"function")?a.then(function(t){t&&(i.data=t),n(null,i)},function(t){n(t,e)}):n(null,i)}}function Gt(t,e,r){if(!e.sendConfig)return r(null,t);var n=E(t,"data.custom")||{};n._rollbarConfig=e,t.data.custom=n,r(null,t)}function zt(t,e){f(t[e])&&(t[e]=t[e].toString())}function $t(t,e,r){var n=e._configuredOptions;zt(n,"transform"),zt(n,"checkIgnore"),zt(n,"onSendCallback"),delete n.accessToken,t.data.notifier.configured_options=n,r(null,t)}function Qt(t,e,r){var n=T(t.notifier.client.notifier.diagnostic,t.diagnostic);if(E(t,"err._isAnonymous")&&(n.is_anonymous=!0),t._isUncaught&&(n.is_uncaught=t._isUncaught),t.err)try{n.raw_error={message:t.err.message,name:t.err.name,constructor_name:t.err.constructor&&t.err.constructor.name,filename:t.err.fileName,line:t.err.lineNumber,column:t.err.columnNumber,stack:t.err.stack}}catch(t){n.raw_error={failed:String(t)}}t.data.notifier.diagnostic=T(t.data.notifier.diagnostic,n),r(null,t)}const Zt=function(t,e,r){var n,o,i,a,s=l(t,"object"),u=l(t,"array"),c=[];if(r=r||{obj:[],mapped:[]},s){if(a=r.obj.indexOf(t),s&&-1!==a)return r.mapped[a]||r.obj[a];r.obj.push(t),a=r.obj.length-1}if(s)for(n in t)h(t,n)&&c.push(n);else if(u)for(i=0;i=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function Kt(t,e){if(t){if("string"==typeof t)return Yt(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Yt(t,e):void 0}}function Yt(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r2*e?t.slice(0,e).concat(t.slice(r-e)):t}function re(t,e,r){r=void 0===r?30:r;var n,o=t.data.body;if(o.trace_chain){var i,a=Xt(o.trace_chain);try{for(a.s();!(i=a.n()).done;){var s=i.value;n=ee(n=s.frames,r),s.frames=n}}catch(t){a.e(t)}finally{a.f()}}else o.trace&&(n=ee(n=o.trace.frames,r),o.trace.frames=n);return[t,y(t,e)]}function ne(t,e){return e&&e.length>t?e.slice(0,t-3).concat("..."):e}function oe(t,e,r){return e=Zt(e,function e(r,n,o){switch(c(n)){case"string":return ne(t,n);case"object":case"array":return Zt(n,e,o);default:return n}}),[e,y(e,r)]}function ie(t){return t.exception&&(delete t.exception.description,t.exception.message=ne(255,t.exception.message)),t.frames=ee(t.frames,1),t}function ae(t,e){var r=t.data.body;if(r.trace_chain){var n,o=r.trace_chain,i=Xt(o.entries());try{for(i.s();!(n=i.n()).done;){var a=Vt(n.value,2),s=a[0],u=a[1];o[s]=ie(u)}}catch(t){i.e(t)}finally{i.f()}}else r.trace&&(r.trace=ie(r.trace));return[t,y(t,e)]}function se(t,e){return function(t){for(var e=0,r=t.length,n=0;ne}const ue={truncate:function(t,e,r){r=void 0===r?524288:r;for(var n,o,i,a=[te,re,oe.bind(null,1024),oe.bind(null,512),oe.bind(null,256),ae];n=a.shift();)if(t=(o=n(t,e))[0],(i=o[1]).error||!se(i.value,r))return i;return i},raw:te,truncateFrames:re,truncateStrings:oe,maybeTruncateValue:ne};function le(t){return function(t){if(Array.isArray(t))return ce(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return ce(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ce(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ce(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function Ie(t,e){if(t){if("string"==typeof t)return Te(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Te(t,e):void 0}}function Te(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r:(\d+):(\d+))?)?\)?$/,ze=/^\s*at .+ \(.+ (at[^)]+\))\)$/,$e=/^\s*(>?) [0-9]+\|(\s*.+)$/m,Qe=new Le({max:100}),Ze={};function Ve(t,e){var r,n,o,i,a;if((r=(n=t).match(ze))&&(n=r[1]),!(r=n.match(Ge)))return e(null,null);var s={source:(o=r.slice(1))[1],line:Math.floor(o[2]),column:Math.floor(o[3])-1};a=this.useSourceMaps?function(t,e){return Be({source:t.source,line:t.line,column:t.column},e)}(s,this.diagnostic):s,i={method:o[0]||"",filename:a.source,lineno:a.line,colno:a.column,runtimePosition:s},o[4]&&(i.compiled_lineno=Math.floor(o[4])),o[5]&&(i.compiled_colno=Math.floor(o[5])),e(null,i)}function Xe(t,e){var r,n,o;r="/"===t[0]||"."===t[0],n=Boolean(Qe.get(t)),o=Boolean(Ze[t]),e(null,r&&!n&&!o)}function Ke(t,e){if(Je(t))return e(null,!0);Re.stat(t,function(t){e(null,!t)})}function Ye(t,e){var r=[];t.forEach(function(t){-1===r.indexOf(t.filename)&&r.push(t.filename)}),Se.filter(r,Xe,function(r,n){if(r)return e(r);var o;function i(t,e){o[t]=e,Qe.set(t,e)}function a(t,e){var r=Je(t);if(r)try{var n=r.split("\n");return i(t,n),e(null)}catch(t){return e(t)}!function(t,e){try{Re.readFile(t,function(t,r){var n;return t?e(t):(n=r.toString("utf8").split("\n"),e(null,n))})}catch(t){K.log(t)}}(t,function(r,n){return r?e(r):(i(t,n),e(null))})}function s(t,e){var r=o[t.filename]||Qe.get(t.filename);r&&function(t,e){t.code=e[t.lineno-1],t.context={pre:e.slice(Math.max(0,t.lineno-4),t.lineno-1),post:e.slice(t.lineno,t.lineno+3)}}(t,r),e(null)}o={},Se.filter(n,Ke,function(r,n){if(r)return e(r);Se.each(n,a,function(r){if(r)return e(r);Se.eachSeries(t,s,function(r){if(r)return e(r);e(null,t)})})})})}function tr(t,e,r,n){var i=function(t){var e,r;if(null==t)return null;if("object"!==We(t))return null;if(o.isArray(t))return t;for(r in e=[],t)Object.prototype.hasOwnProperty.call(t,r)&&e.push(t[r]);return e}(t.errors);return function(t,e,r,n){var o,i=t;for(;"object"===We(i);)i=i&&i.stack;o=(i||"").split("\n").slice(1),e.nodeSourceMaps&&(r.diagnostic.node_source_maps={},r.diagnostic.node_source_maps.source_mapping_urls={});Se.map(o,Ve.bind({useSourceMaps:e.nodeSourceMaps,diagnostic:r.diagnostic}),function(t,e){if(t)return n(t);e.reverse(),Se.filter(e,function(t,e){e(null,Boolean(t))},function(t,e){if(t)return n(t);Ye(e,n)})})}(t.stack,e,r,function(e,o){var a,s,u,l,c;return e?(K.error("could not parse exception, err: "+e),n(e)):(a=String(t.message||""),s=String(t.name||""),u={class:s,message:a,frames:o},i&&i.length&&(l=i[0],u={class:s,message:String(l.message||""),frames:o}),a.match($e)&&(c=function(t){var e,r,n,o,i,a,s,u,l,c,f;for(r=(e=t.split("\n"))[0].indexOf(":"),n=e[0].slice(0,r),o=parseInt(e[0].slice(r+1),10),a=e[(i=e.length)-1],e=e.slice(1,i-1),l=[],c=[],s=0;s"===f[1]?u=f[2]:u?f[2]&&c.push(f[2]):f[2]&&l.push(f[2]));return{frame:{method:"",filename:n,lineno:o,code:u,context:{pre:l=l.slice(0,Math.min(l.length,3)),post:c=c.slice(0,Math.min(c.length,3))}},message:a}}(a),u.message=c.message,u.frames.push(c.frame)),r.localsMap?void r.notifier.locals.mergeLocals(r.localsMap,o,t.stack,function(t){return t&&(K.error("could not parse locals, err: "+t),r.diagnostic["error parsing locals"]=t),n(null,u)}):n(null,u))})}function er(t,e,r){var n,o=e.payload&&e.payload.environment||e.environment,i={timestamp:Math.round(t.timestamp/1e3),environment:t.environment||o,level:t.level||"error",language:"javascript",framework:t.framework||e.framework,uuid:t.uuid,notifier:JSON.parse(JSON.stringify(e.notifier)),custom:t.custom,attributes:null===(n=t.data)||void 0===n?void 0:n.attributes};e.codeVersion?i.code_version=e.codeVersion:e.code_version&&(i.code_version=e.code_version),Object.getOwnPropertyNames(t.custom||{}).forEach(function(e){h(i,e)||(i[e]=t.custom[e])}),i.server={host:e.host,argv:process.argv.concat(),pid:process.pid},e.branch&&(i.server.branch=e.branch),e.root&&(i.server.root=e.root),t.data=i,r(null,t)}function rr(t,e,r){t.stackInfo?function(t,e,r){t.stackInfo&&(t.data=t.data||{},t.data.body=t.data.body||{},t.data.body.trace_chain=t.stackInfo),r(null,t)}(t,0,r):function(t,e,r){t.data=t.data||{},t.data.body=t.data.body||{};var n=t.message||"Item sent with null or missing arguments.";t.data.body.message={body:n},r(null,t)}(t,0,r)}function nr(t,e,r){if(!t.err)return r(null,t);var n=t.err,o=[],i=[];do{o.push(n),n=n.nested||n.cause}while(n);t.stackInfo=i,e.addErrorContext&&function(t,e){var r=t.data.custom||{},n=!1;try{var o,i=a(e);try{for(i.s();!(o=i.n()).done;){var s=o.value;h(s,"rollbarContext")&&(r=T(r,g(s.rollbarContext)),n=!0)}}catch(t){i.e(t)}finally{i.f()}n&&(t.data.custom=r)}catch(e){t.diagnostic.error_context="Failed: "+e.message}}(t,o);Se.eachSeries(o,function(t,e,r){return function(n,o){tr(n,e,r,function(e,r){return e?o(e):(t.push({frames:r.frames,exception:{class:r.class,message:r.message}}),o(null))})}}(i,e,t),function(e){e&&(t.message=t.err.message||t.err.description||t.message||String(t.err),t.diagnostic.buildTraceData=e.message,delete t.stackInfo),r(null,t)})}function or(t,e,r){t.data=t.data||{};var o=t.request;if(o){var i=o.baseUrl||"";if(e.addRequestData&&f(e.addRequestData))return e.addRequestData(t.data,o),void r(null,t);var a,s=function(t){var e,r=t.headers||{},o=r.host||"",i=t.protocol||(t.socket&&t.socket.encrypted?"https":"http"),a=t.baseUrl||"";if(l(t.url,"string")){var s=a&&a.length?a+t.url:t.url;e=n.parse(s,!0)}else e=t.url||{};e.protocol=e.protocol||i,e.host=e.host||o;var u={url:n.format(e),user_ip:ur(t),headers:r,method:t.method};e.search&&e.search.length>0&&(u.GET=e.query);var f=t.body||t.payload;if(f){var p={};if("object"===(m=c(f))||"array"===m){for(var d in f)h(f,d)&&(p[d]=f[d]);u[t.method]=p}else u.body=f}var m;return u}(o);if(function(t,e){if(t&&t.user_ip&&!0!==e){var r=t.user_ip;if(e)try{var n;if(-1!==r.indexOf("."))(n=r.split(".")).pop(),n.push("0"),r=n.join(".");else if(-1!==r.indexOf(":")){if((n=r.split(":")).length>2){var o=n.slice(0,3),i=o[2].indexOf("/");-1!==i&&(o[2]=o[2].substring(0,i)),r=o.concat("0000:0000:0000:0000:0000").join(":")}}else r=null}catch(t){r=null}else r=null;t.user_ip=r}}(s,e.captureIp),t.data.request=s,o.route)a=o.route.path,t.data.context=i&&i.length?i+a:a;else try{a=o.app._router.matchRequest(o).path,t.data.context=i&&i.length?i+a:a}catch(t){}var u=e.captureEmail,p=e.captureUsername;if(o.rollbar_person){var d=o.rollbar_person;!u&&d.email&&(d.email=null),!p&&d.username&&(d.username=null),t.data.person=d}else if(o.user)t.data.person={id:o.user.id},o.user.username&&p&&(t.data.person.username=o.user.username),o.user.email&&u&&(t.data.person.email=o.user.email);else if(o.user_id||o.userId){var m=o.user_id||o.userId;f(m)&&(m=m()),t.data.person={id:m}}r(null,t)}else r(null,t)}function ir(t,e,r){var n=t.lambdaContext;if(n){var o={remainingTimeInMillis:n.getRemainingTimeInMillis(),callbackWaitsForEmptyEventLoop:n.callbackWaitsForEmptyEventLoop,functionName:n.functionName,functionVersion:n.functionVersion,arn:n.invokedFunctionArn,requestId:n.awsRequestId};t.data=t.data||{},t.data.custom=t.data.custom||{},t.data.custom.lambda=o,r(null,t)}else r(null,t)}function ar(t,e,r){var n=e.scrubHeaders||[],o=e.scrubFields||[],i=e.scrubPaths||[];o=n.concat(o),function(t,e){if(!t||!e.scrubRequestBody)return;try{("string"==typeof(r=t.body)||r instanceof String)&&sr(t)&&(t.body=JSON.parse(t.body))}catch(e){t.body=null,t.error="request.body parse failed: "+e.message}var r}(t.data.request,e),t.data=Pe(t.data,o,i),function(t,e){if(!t||!e.scrubRequestBody)return;try{p(t.body)&&sr(t)&&(t.body=JSON.stringify(t.body))}catch(e){t.body=null,t.error="request.body serialization failed: "+e.message}}(t.data.request,e),r(null,t)}function sr(t){return t.headers&&t.headers["content-type"]&&t.headers["content-type"].includes("json")}function ur(t){var e=t.ip;return e||(e=Ee.getClientIp(t)),e}function lr(){this.rateLimitExpires=0}function cr(t,e,r){var n=e&&e.headers||{};if(n["Content-Type"]="application/json",r)try{n["Content-Length"]=Buffer.byteLength(r,"utf8")}catch(t){K.error("Could not get the content length of the data")}return n["X-Rollbar-Access-Token"]=t,n}function fr(t){return{"http:":he,"https:":de}[t.protocol]}function pr(){return Math.floor(Date.now()/1e3)}lr.prototype.get=function(t,e,r,n,o){var i;if(n&&f(n)||(n=function(){}),function(t,e,r){(r=r||{}).access_token=t;var n,o=[];for(n in r)Object.prototype.hasOwnProperty.call(r,n)&&o.push([n,r[n]].join("="));var i="?"+o.sort().join("&");(e=e||{}).path=e.path||"";var a,s=e.path.indexOf("?"),u=e.path.indexOf("#");-1!==s&&(-1===u||u>s)?(a=e.path,e.path=a.substring(0,s)+i+"&"+a.substring(s+1)):-1!==u?(a=e.path,e.path=a.substring(0,u)+i+a.substring(u)):e.path=e.path+i}(t,e=e||{},r),e.headers=cr(t,e),!(i=o?o(e):fr(e)))return K.error("Unknown transport based on given protocol: "+e.protocol),n(new Error("Unknown transport"));var a=i.request(e,function(t){this.handleResponse(t,n)}.bind(this));a.on("error",function(t){n(t)}),a.end()},lr.prototype.post=function(t){var e,r=t.accessToken,n=t.options,o=t.payload,a=t.callback,s=t.transportFactory;if(a&&f(a)||(a=function(){}),pr()=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r0&&(s||(s=S({})),s.extraArgs=S(p));var g,w={message:i,err:a,custom:s,timestamp:A(),callback:u,notifier:r,diagnostic:{},uuid:(g=A(),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){var e=(g+16*Math.random())%16|0;return g=Math.floor(g/16),("x"===t?e:7&e|8).toString(16)})))};return w.data=w.data||{},function(t,e){e&&void 0!==e.level&&(t.level=e.level,delete e.level);e&&void 0!==e.skipFrames&&(t.skipFrames=e.skipFrames,delete e.skipFrames)}(w,s),n&&l&&(w.request=l),o&&(w.lambdaContext=o),w._originalArgs=t,w.diagnostic.original_arg_types=h,w}var x=["log","network","dom","navigation","error","manual"],E=["critical","error","warning","info","debug"];function I(t,e){for(var r=0;r=1&&r>e}function N(t,e,r,n,o,i,a){var s=null;return r&&(r=new Error(r)),r||n||(s=function(t,e,r,n,o){var i,a=e.environment||e.payload&&e.payload.environment;i=o?"item per minute limit reached, ignoring errors until timeout":"maxItems has been hit, ignoring errors until reset.";var s={body:{message:{body:i,extra:{maxItems:r,itemsPerMinute:n}}},language:"javascript",environment:a,notifier:{version:e.notifier&&e.notifier.version||e.version}};"browser"===t?(s.platform="browser",s.framework="browser-js",s.notifier.name="rollbar-browser-js"):"server"===t?(s.framework=e.framework||"node-js",s.notifier.name=e.notifier.name):"react-native"===t&&(s.framework=e.framework||"react-native",s.notifier.name=e.notifier.name);return s}(t,e,o,i,a)),{error:r,shouldSend:n,payload:s}}C.globalSettings={startTime:A(),maxItems:void 0,itemsPerMinute:void 0},C.prototype.configureGlobal=function(t){void 0!==t.startTime&&(C.globalSettings.startTime=t.startTime),void 0!==t.maxItems&&(C.globalSettings.maxItems=t.maxItems),void 0!==t.itemsPerMinute&&(C.globalSettings.itemsPerMinute=t.itemsPerMinute)},C.prototype.shouldSend=function(t,e){var r=(e=e||A())-this.startTime;(r<0||r>=6e4)&&(this.startTime=e,this.perMinCounter=0);var n=C.globalSettings.maxItems,o=C.globalSettings.itemsPerMinute;if(L(t,n,this.counter))return N(this.platform,this.platformOptions,n+" max items reached",!1);if(L(t,o,this.perMinCounter))return N(this.platform,this.platformOptions,o+" items per minute reached",!1);this.counter++,this.perMinCounter++;var i=!L(t,n,this.counter),a=i;return i=i&&!L(t,o,this.perMinCounter),N(this.platform,this.platformOptions,null,i,n,o,a)},C.prototype.setPlatformOptions=function(t,e){this.platform=t,this.platformOptions=e};var q=C;function D(t){return D="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},D(t)}function M(t,e){for(var r=0;rthis.options.maxRetries&&(o=!1))}o?this._retryApiRequest(r,n):n(e)}},{key:"_retryApiRequest",value:function(t,e){var r=this;this.retryQueue.push({item:t,callback:e}),this.retryHandle||(this.retryHandle=setInterval((function(){for(;r.retryQueue.length;){var t=r.retryQueue.shift();r._makeApiRequest(t.item,t.callback)}}),this.options.retryInterval))}},{key:"_dequeuePendingRequest",value:function(t){var e=this.pendingRequests.indexOf(t);-1!==e&&(this.pendingRequests.splice(e,1),this._maybeCallWait())}},{key:"_maybeLog",value:function(t,e){if(this.logger&&this.options.verbose){var r=e||P(t,"body.trace.exception.message")||P(t,"body.trace_chain.0.exception.message");if(r)return void this.logger.error(r);(r=P(t,"body.message.body"))&&this.logger.log(r)}}},{key:"_maybeCallWait",value:function(){return!(!f(this.waitCallback)||0!==this.pendingItems.length||0!==this.pendingRequests.length||(this.waitIntervalID&&(this.waitIntervalID=clearInterval(this.waitIntervalID)),this.waitCallback(),0))}}],r&&M(e.prototype,r),n&&M(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r,n}();H=V,J=["ECONNRESET","ENOTFOUND","ESOCKETTIMEDOUT","ETIMEDOUT","ECONNREFUSED","EHOSTUNREACH","EPIPE","EAI_AGAIN"],(F=U(F="RETRIABLE_ERRORS"))in H?Object.defineProperty(H,F,{value:J,enumerable:!0,configurable:!0,writable:!0}):H[F]=J;var W=V;function B(t,e){this.queue=t,this.options=e,this.transforms=[],this.diagnostic={}}B.prototype.configure=function(t){this.queue&&this.queue.configure(t);var e=this.options;return this.options=i(e,t),this},B.prototype.addTransform=function(t){return f(t)&&this.transforms.push(t),this},B.prototype.log=function(t,e){if(e&&f(e)||(e=function(){}),!this.options.enabled)return e(new Error("Rollbar is not enabled"));this.queue.addPendingItem(t);var r=t.err;this._applyTransforms(t,function(n,o){if(n)return this.queue.removePendingItem(t),e(n,null);this.queue.addItem(o,e,r,t)}.bind(this))},B.prototype._applyTransforms=function(t,e){var r=-1,n=this.transforms.length,o=this.transforms,i=this.options,a=function(t,s){t?e(t,null):++r!==n?o[r](s,i,a):e(null,s)};a(null,t)};var G=B;function $(t,e,r,n,o,a,s){this.options=i(t),this.logger=r,$.rateLimiter.configureGlobal(this.options),$.rateLimiter.setPlatformOptions(s,this.options),this.api=e,this.queue=new W($.rateLimiter,e,r,this.options,a),this.tracing=o;var u=this.options.tracer||null;X(u)?(this.tracer=u,this.options.tracer="opentracing-tracer-enabled",this.options._configuredOptions.tracer="opentracing-tracer-enabled"):this.tracer=null,this.notifier=new G(this.queue,this.options),this.telemeter=n,z(t),this.lastError=null,this.lastErrorHash="none"}function z(t){t.stackTraceLimit&&(Error.stackTraceLimit=t.stackTraceLimit)}function X(t){if(!t)return!1;if(!t.scope||"function"!=typeof t.scope)return!1;var e=t.scope();return!(!e||!e.active||"function"!=typeof e.active)}$.rateLimiter=new q({maxItems:0,itemsPerMinute:60}),$.prototype.global=function(t){return $.rateLimiter.configureGlobal(t),this},$.prototype.configure=function(t,e){var r=this.options,n={};e&&(n={payload:e}),this.options=i(r,t,n);var o=this.options.tracer||null;return X(o)?(this.tracer=o,this.options.tracer="opentracing-tracer-enabled",this.options._configuredOptions.tracer="opentracing-tracer-enabled"):this.tracer=null,this.notifier&&this.notifier.configure(this.options),this.telemeter&&this.telemeter.configure(this.options),z(t),this.global(this.options),X(t.tracer)&&(this.tracer=t.tracer),this},$.prototype.log=function(t){var e=this._defaultLogLevel();return this._log(e,t)},$.prototype.debug=function(t){this._log("debug",t)},$.prototype.info=function(t){this._log("info",t)},$.prototype.warn=function(t){this._log("warning",t)},$.prototype.warning=function(t){this._log("warning",t)},$.prototype.error=function(t){this._log("error",t)},$.prototype.critical=function(t){this._log("critical",t)},$.prototype.wait=function(t){this.queue.wait(t)},$.prototype.captureEvent=function(t,e,r){return this.telemeter&&this.telemeter.captureEvent(t,e,r)},$.prototype.captureDomContentLoaded=function(t){return this.telemeter&&this.telemeter.captureDomContentLoaded(t)},$.prototype.captureLoad=function(t){return this.telemeter&&this.telemeter.captureLoad(t)},$.prototype.buildJsonPayload=function(t){return this.api.buildJsonPayload(t)},$.prototype.sendJsonPayload=function(t){this.api.postJsonPayload(t)},$.prototype._log=function(t,e){var r;if(e.callback&&(r=e.callback,delete e.callback),this.options.ignoreDuplicateErrors&&this._sameAsLastError(e)){if(r){var n=new Error("ignored identical item");n.item=e,r(n)}}else try{e.level=e.level||t,this._addTracingAttributes(e),this._addTracingInfo(e);var o=this.telemeter;o&&(o._captureRollbarItem(e),e.telemetryEvents=o.copyEvents()||[]),this.notifier.log(e,r)}catch(t){r&&r(t),this.logger.error(t)}},$.prototype._addTracingAttributes=function(t){var e,r,n=null===(e=this.tracing)||void 0===e?void 0:e.getSpan(),o=[{key:"session_id",value:null===(r=this.tracing)||void 0===r?void 0:r.sessionId},{key:"span_id",value:null==n?void 0:n.spanId},{key:"trace_id",value:null==n?void 0:n.traceId}];j(t.data,o),null==n||n.addEvent("rollbar.occurrence",[{key:"rollbar.occurrence.uuid",value:t.uuid}])},$.prototype._defaultLogLevel=function(){return this.options.logLevel||"debug"},$.prototype._sameAsLastError=function(t){if(!t._isUncaught)return!1;var e=function(t){var e=t.message||"",r=(t.err||{}).stack||String(t.err);return e+"::"+r}(t);return this.lastErrorHash===e||(this.lastError=t.err,this.lastErrorHash=e,!1)},$.prototype._addTracingInfo=function(t){if(this.tracer){var e=this.tracer.scope().active();if(function(t){if(!t||!t.context||"function"!=typeof t.context)return!1;var e=t.context();if(!e||!e.toSpanId||!e.toTraceId||"function"!=typeof e.toSpanId||"function"!=typeof e.toTraceId)return!1;return!0}(e)){e.setTag("rollbar.error_uuid",t.uuid),e.setTag("rollbar.has_error",!0),e.setTag("error",!0),e.setTag("rollbar.item_url","https://rollbar.com/item/uuid/?uuid=".concat(t.uuid)),e.setTag("rollbar.occurrence_url","https://rollbar.com/occurrence/uuid/?uuid=".concat(t.uuid));var r=e.context().toSpanId(),n=e.context().toTraceId();t.custom?(t.custom.opentracing_span_id=r,t.custom.opentracing_trace_id=n):t.custom={opentracing_span_id:r,opentracing_trace_id:n}}}};var Z=$;function Q(t){if(!l(t.context,"string")){var e=g(t.context);e.error?t.context="Error: could not serialize 'context'":t.context=e.value||"",t.context.length>255&&(t.context=t.context.substr(0,255))}return{data:t}}function K(t,e,r){var n=e.hostname,o=e.protocol,i=e.port,a=e.path,s=e.search,u=t.timeout,l=function(t){var e="undefined"!=typeof window&&window||"undefined"!=typeof self&&self,r=t.defaultTransport||"xhr";void 0===e.fetch&&(r="xhr");void 0===e.XMLHttpRequest&&(r="fetch");return r}(t),c=t.proxy;if(t.endpoint){var f=r.parse(t.endpoint);n=f.hostname,o=f.protocol,i=f.port,a=f.pathname,s=f.search}return{timeout:u,hostname:n,protocol:o,port:i,path:a,search:s,proxy:c,transport:l}}function Y(t,e){var r=t.protocol||"https:",n=t.port||("http:"===r?80:"https:"===r?443:void 0),o=t.hostname,i=t.path,a=t.timeout,s=t.transport;return t.search&&(i+=t.search),t.proxy&&(i=r+"//"+o+i,o=t.proxy.host||t.proxy.hostname,n=t.proxy.port,r=t.proxy.protocol||r),{timeout:a,protocol:r,hostname:o,path:i,port:n,method:e,transport:s}}function tt(t){return tt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},tt(t)}function et(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function rt(t){for(var e=1;e=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(u&&l){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),P(r),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;P(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:A(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),v}},e}function it(t,e,r,n,o,i,a){try{var s=t[i](a),u=s.value}catch(t){return void r(t)}s.done?e(u):Promise.resolve(u).then(n,o)}var at={hostname:"api.rollbar.com",path:"/api/1/item/",search:null,version:"1",protocol:"https:",port:443},st={hostname:"api.rollbar.com",path:"/api/1/session/",search:null,version:"1",protocol:"https:",port:443};function ut(t,e,r,n){this.options=t,this.transport=e,this.url=r,this.truncation=n,this.accessToken=t.accessToken,this.transportOptions=lt(t,r),this.OTLPTransportOptions=ct(t,r)}function lt(t,e){return K(t,at,e)}function ct(t,e){var r;return K(t=rt(rt({},t),{},{endpoint:null===(r=t.tracing)||void 0===r?void 0:r.endpoint}),st,e)}ut.prototype._postPromise=function(t){var e=t.accessToken,r=t.options,n=t.payload,o=t.headers,i=this;return new Promise((function(t,a){i.transport.post({accessToken:e,options:r,payload:n,headers:o,callback:function(e,r){return e?a(e):t(r)}})}))},ut.prototype.postItem=function(t,e){var r=Y(this.transportOptions,"POST"),n=Q(t),o=this;setTimeout((function(){o.transport.post({accessToken:o.accessToken,options:r,payload:n,callback:e})}),0)},ut.prototype.postSpans=function(){var t,e=(t=ot().mark((function t(e){var r,n,o=arguments;return ot().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=o.length>1&&void 0!==o[1]?o[1]:{},n=Y(this.OTLPTransportOptions,"POST"),t.next=4,this._postPromise({accessToken:this.accessToken,options:n,payload:e,headers:r});case 4:return t.abrupt("return",t.sent);case 5:case"end":return t.stop()}}),t,this)})),function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){it(i,n,o,a,s,"next",t)}function s(t){it(i,n,o,a,s,"throw",t)}a(void 0)}))});return function(t){return e.apply(this,arguments)}}(),ut.prototype.buildJsonPayload=function(t,e){var r,n=Q(t);return(r=this.truncation?this.truncation.truncate(n):g(n)).error?(e&&e(r.error),null):r.value},ut.prototype.postJsonPayload=function(t,e){var r=Y(this.transportOptions,"POST");this.transport.postJsonPayload(this.accessToken,r,t,e)},ut.prototype.configure=function(t){var e=this.oldOptions;return this.options=i(e,t),this.transportOptions=lt(this.options,this.url),this.OTLPTransportOptions=ct(this.options,this.url),void 0!==this.options.accessToken&&(this.accessToken=this.options.accessToken),this};var ft=ut,pt=function(){},ht={debug:0,info:1,warn:2,error:3,disable:4},dt={error:function(){for(var t=arguments.length,e=new Array(t),r=0;rt.length)&&(e=t.length);for(var r=0,n=Array(e);r=400&&t.status<600}(e)){if(403===e.status){var o=t.value&&t.value.message;yt.error(o)}s(new Error(String(e.status)))}else{s(_t("XHR response had no status code (likely connection failure)"))}}}catch(t){var i;i=t&&t.stack?t:new Error(t),s(i)}};if(e.open(o,n,!0),e.setRequestHeader){e.setRequestHeader("Content-Type","application/json"),e.setRequestHeader("X-Rollbar-Access-Token",r);for(var p=0,d=Object.entries(null!=a?a:{});ps)?(a=e.path,e.path=a.substring(0,s)+i+"&"+a.substring(s+1)):-1!==u?(a=e.path,e.path=a.substring(0,u)+i+a.substring(u)):e.path=e.path+i}(t,e,r);var i=b(e);this._makeZoneRequest({accessToken:t,url:i,method:"GET",callback:n,requestFactory:o,timeout:e.timeout,transport:e.transport})},Ot.prototype.post=function(t){var e=this,r=t.accessToken,n=t.options,o=t.payload,i=t.headers,a=t.callback,s=t.requestFactory;return function(t){if(a&&f(a)||(a=function(){}),!t)return a(new Error("Cannot send empty request"));var o;if((o=e.truncation&&t.body?e.truncation.truncate(t):g(t)).error)return a(o.error);t=o.value;var u=b(n);e._makeZoneRequest({accessToken:r,url:u,method:"POST",payload:t,headers:i,callback:a,requestFactory:s,timeout:n.timeout,transport:n.transport})}(o)},Ot.prototype.postJsonPayload=function(t,e,r,n,o){n&&f(n)||(n=function(){});var i=b(e);this._makeZoneRequest({accessToken:t,url:i,method:"POST",payload:r,callback:n,requestFactory:o,timeout:e.timeout,transport:e.transport})},Ot.prototype._makeZoneRequest=function(){var t="undefined"!=typeof window&&window||void 0!==n&&n,e=t&&t.Zone&&t.Zone.root,r=Array.prototype.slice.call(arguments);if(e){var n=this;e.run((function(){n._makeRequest.apply(void 0,r)}))}else this._makeRequest.apply(void 0,r)},Ot.prototype._makeRequest=function(t){var e=t.payload,r=t.callback,n=t.transport;if("undefined"!=typeof RollbarProxy)return function(t,e){(new RollbarProxy).sendJsonPayload(t,(function(t){}),(function(t){e(new Error(t))}))}(e,r);"fetch"===n?gt(t):St(t)};var xt=Ot;function Et(t){var e,r,n={protocol:null,auth:null,host:null,path:null,hash:null,href:t,hostname:null,port:null,pathname:null,search:null,query:null};if(-1!==(e=t.indexOf("//"))?(n.protocol=t.substring(0,e),r=e+2):r=0,-1!==(e=t.indexOf("@",r))&&(n.auth=t.substring(r,e),r=e+1),-1===(e=t.indexOf("/",r))){if(-1===(e=t.indexOf("?",r)))return-1===(e=t.indexOf("#",r))?n.host=t.substring(r):(n.host=t.substring(r,e),n.hash=t.substring(e)),n.hostname=n.host.split(":")[0],n.port=n.host.split(":")[1],n.port&&(n.port=parseInt(n.port,10)),n;n.host=t.substring(r,e),n.hostname=n.host.split(":")[0],n.port=n.host.split(":")[1],n.port&&(n.port=parseInt(n.port,10)),r=e}else n.host=t.substring(r,e),n.hostname=n.host.split(":")[0],n.port=n.host.split(":")[1],n.port&&(n.port=parseInt(n.port,10)),r=e;if(-1===(e=t.indexOf("#",r))?n.path=t.substring(r):(n.path=t.substring(r,e),n.hash=t.substring(e)),n.path){var o=n.path.split("?");n.pathname=o[0],n.query=o[1],n.search=n.query?"?"+n.query:null}return n}var It=/(^|@)\S+:\d+/,jt=/^\s*at .*(\S+:\d+|\(native\))/m,Pt=/^(eval@)?(\[native code\])?$/;function Tt(t,e){if(void 0!==t.stacktrace||void 0!==t["opera#sourceloc"])return function(t,e){return!t.stacktrace||t.message.includes("\n")&&t.message.split("\n").length>t.stacktrace.split("\n").length?function(t,e){for(var r=/Line (\d+).*script (?:in )?(\S+)/i,n=t.message.split("\n"),o=[],i=2,a=n.length;i/,"$2").replace(/\([^)]*\)/g,"")||void 0;return o.match(/\(([^)]*)\)/)&&(e=o.replace(/^[^(]+\(([^)]*)\)$/,"$1")),{function:i,args:void 0===e||"[arguments not available]"===e?void 0:e.split(","),file:n[0],line:n[1]?+n[1]:void 0,col:n[2]?+n[2]:void 0,raw:t}}))}(t,e):function(t,e){for(var r=/Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i,n=t.stacktrace.split("\n"),o=[],i=0,a=n.length;i"].includes(n[0])?void 0:n[0],line:n[1]?+n[1]:void 0,col:n[2]?+n[2]:void 0,raw:t}}))}function Lt(t,e){return Rt(t.split("\n").filter((function(t){return!t.match(Pt)})),e).map((function(t){if(t.includes(" > eval")&&(t=t.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),t.includes("@")||t.includes(":")){var e=/(([^\n\r"\u2028\u2029]*".[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*(?:@[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*)*(?:[\n\r\u2028\u2029][^@]*)?)?[^@]*)@/,r=t.match(e),n=r&&r[1]?r[1]:void 0,o=At(t.replace(e,""));return{function:n,file:o[0],line:o[1]?+o[1]:void 0,col:o[2]?+o[2]:void 0,raw:t}}return{function:t}}))}function Nt(t){return t.map((function(t){return{functionName:t.function,args:t.args,fileName:t.file,lineNumber:t.line,columnNumber:t.col,source:t.raw}}))}var qt=new RegExp("^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): ");function Dt(){return null}function Mt(t){var e={};return e._stackFrame=t,e.url=t.fileName,e.line=t.lineNumber,e.func=t.functionName,e.column=t.columnNumber,e.args=t.args,e.context=null,e}function Ut(t,e){return{stack:function(){var r=[];e=e||0;try{r=function(t,e){return Nt(Tt(t,e))}(t)}catch(t){r=[]}for(var n=[],o=e;ot.length)&&(e=t.length);for(var r=0,n=Array(e);r0&&T(e,"data.request",o),n(null,e)}}(r)).addTransform(function(t){return function(e,r,n){if(!t)return n(null,e);var o=t.navigator||{},i=t.screen||{};T(e,"data.client",{runtime_ms:e.timestamp-t._rollbarStartTime,timestamp:Math.round(e.timestamp/1e3),javascript:{browser:o.userAgent,language:o.language,cookie_enabled:o.cookieEnabled,screen:{width:i.width,height:i.height}}}),n(null,e)}}(r)).addTransform(function(t){return function(e,r,n){if(!t||!t.navigator)return n(null,e);for(var o,i=[],a=t.navigator.plugins||[],s=0,u=a.length;sn&&(o=this.queue.length-n),this.maxQueueSize=n,this.queue.splice(0,o)}},{key:"copyEvents",value:function(){var t=Array.prototype.slice.call(this.queue,0);if(f(this.options.filterTelemetry))try{for(var e=t.length;e--;)this.options.filterTelemetry(t[e])&&t.splice(e,1)}catch(t){this.options.filterTelemetry=null}return t=t.filter((function(t){return"connectivity"!==t.type})),t=t.map((function(t){t.otelAttributes;var e=function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(-1!==e.indexOf(n))continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.telemetrySpan&&(this.telemetrySpan.end(t),this.telemetrySpan=this.tracing.startSpan("rollbar-telemetry",{}))}},{key:"capture",value:function(t,e,r,n){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,a={level:Fe(t,r),type:t,timestamp_ms:o||A(),body:e,source:"client"};n&&(a.uuid=n),i&&(a.otelAttributes=i);try{if(f(this.options.filterTelemetry)&&this.options.filterTelemetry(a))return!1}catch(t){this.options.filterTelemetry=null}return this.push(a),a}},{key:"captureEvent",value:function(t,e,r,n){return this.capture(t,e,r,n)}},{key:"captureError",value:function(t,e,r,n){var o,i=t.message||String(t),a={message:i};t.stack&&(a.stack=t.stack);var s={message:i,level:e,type:"error",uuid:r};return null===(o=this.telemetrySpan)||void 0===o||o.addEvent("rollbar-occurrence-event",s,Ue(n)),this.capture("error",a,e,r,n,s)}},{key:"captureLog",value:function(t,e,r,n){var o,i,a=null;r?(a={message:t,level:e,type:"message",uuid:r},null===(o=this.telemetrySpan)||void 0===o||o.addEvent("rollbar-occurrence-event",a,Ue(n))):(a={message:t,level:e},null===(i=this.telemetrySpan)||void 0===i||i.addEvent("rollbar-log-event",a,Ue(n)));return this.capture("log",{message:t},e,r,n,a)}},{key:"captureNetwork",value:function(t,e,r,n){var o,i;e=e||"xhr",t.subtype=t.subtype||e,n&&(t.request=n);var a=this.levelFromStatus(t.status_code),s=1e6*(t.end_time_ms||0),u={type:t.subtype,method:t.method,url:t.url,statusCode:t.status_code,"request.headers":JSON.stringify(t.request_headers||{}),"response.headers":JSON.stringify((null===(o=t.response)||void 0===o?void 0:o.headers)||{}),"response.timeUnixNano":s.toString()};return null===(i=this.telemetrySpan)||void 0===i||i.addEvent("rollbar-network-event",u,Ue(t.start_time_ms)),this.capture("network",t,a,r,t.start_time_ms,u)}},{key:"levelFromStatus",value:function(t){return t>=200&&t<400?"info":0===t||t>=400?"error":"info"}},{key:"captureDom",value:function(t,e,r,n,o){var i={subtype:t,element:e};return void 0!==r&&(i.value=r),void 0!==n&&(i.checked=n),this.capture("dom",i,"info",o)}},{key:"captureInput",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.value,a=t.timestamp,s="rollbar-input-event",u={type:s,subtype:r,element:o,value:i},l={type:r,isSynthetic:n,element:o,value:i,endTimeUnixNano:Ue(a)},c=this._getRepeatedEvent(s,l);return c?this._updateRepeatedEvent(c,l,a):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(s,l,Ue(a)),this.capture("dom",u,"info",null,a,l))}},{key:"captureClick",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.timestamp,a="rollbar-click-event",s={type:a,subtype:r,element:o},u={type:r,isSynthetic:n,element:o,endTimeUnixNano:Ue(i)},l=this._getRepeatedEvent(a,u);return l?this._updateRepeatedEvent(l,u,i):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(a,u,Ue(i)),this.capture("dom",s,"info",null,i,u))}},{key:"_getRepeatedEvent",value:function(t,e){var r=this._lastEvent(this.queue);if(r&&r.body.type===t&&r.otelAttributes.target===e.target)return r}},{key:"_updateRepeatedEvent",value:function(t,e,r){var n=Math.max(r-t.timestamp_ms,1);t.body.value=e.value,t.otelAttributes.value=e.value,t.otelAttributes.height=e.height,t.otelAttributes.width=e.width,t.otelAttributes.textZoomRatio=e.textZoomRatio,t.otelAttributes.endTimeUnixNano=Ue(r),t.otelAttributes.durationUnixNano=Ue(n),t.otelAttributes.count=(t.otelAttributes.count||1)+1,t.otelAttributes.rate=t.otelAttributes.count/(n/1e3)}},{key:"_lastEvent",value:function(t){return t.length>0?t[t.length-1]:null}},{key:"captureFocus",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.timestamp,a="rollbar-focus-event",s={type:a,subtype:r,element:o},u={type:r,isSynthetic:n,element:o};return null===(e=this.telemetrySpan)||void 0===e||e.addEvent(a,u,Ue(i)),this.capture("dom",s,"info",null,i,u)}},{key:"captureResize",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.width,i=t.height,a=t.textZoomRatio,s=t.timestamp,u="rollbar-resize-event",l={type:u,subtype:r,width:o,height:i,textZoomRatio:a},c={type:r,isSynthetic:n,width:o,height:i,textZoomRatio:a},f=this._getRepeatedEvent(u,c);return f?this._updateRepeatedEvent(f,c,s):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(u,c,Ue(s)),this.capture("dom",l,"info",null,s,c))}},{key:"captureDragDrop",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.dropEffect,a=t.effectAllowed,s=t.kinds,u=t.mediaTypes,l=t.timestamp,c="rollbar-dragdrop-event",f={type:c,subtype:r,isSynthetic:n},p={type:r,isSynthetic:n};return"dragstart"===r&&(f=Le(Le({},f),{},{element:o,dropEffect:i,effectAllowed:a}),p=Le(Le({},p),{},{element:o,dropEffect:i,effectAllowed:a})),"drop"===r&&(f=Le(Le({},f),{},{element:o,dropEffect:i,effectAllowed:a,kinds:s,mediaTypes:u}),p=Le(Le({},p),{},{element:o,dropEffect:i,effectAllowed:a,kinds:s,mediaTypes:u})),null===(e=this.telemetrySpan)||void 0===e||e.addEvent(c,p,Ue(l)),this.capture("dom",f,"info",null,l,p)}},{key:"captureNavigation",value:function(t,e,r,n){var o;return null===(o=this.telemetrySpan)||void 0===o||o.addEvent("rollbar-navigation-event",{"previous.url.full":t,"url.full":e},Ue(n)),this.capture("navigation",{from:t,to:e},"info",r,n)}},{key:"captureDomContentLoaded",value:function(t){return this.capture("navigation",{subtype:"DOMContentLoaded"},"info",void 0,t&&t.getTime())}},{key:"captureLoad",value:function(t){return this.capture("navigation",{subtype:"load"},"info",void 0,t&&t.getTime())}},{key:"captureConnectivityChange",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.timestamp,i="rollbar-connectivity-event",a={type:i,subtype:r},s={type:r,isSynthetic:n};return null===(e=this.telemetrySpan)||void 0===e||e.addEvent(i,s,Ue(o)),this.capture("connectivity",a,"info",null,o,s)}},{key:"_captureRollbarItem",value:function(t){if(this.options.includeItemsInTelemetry)return t.err?this.captureError(t.err,t.level,t.uuid,t.timestamp):t.message?this.captureLog(t.message,t.level,t.uuid,t.timestamp):t.custom?this.capture("log",t.custom,t.level,t.uuid,t.timestamp):void 0}},{key:"push",value:function(t){this.queue.push(t),this.queue.length>this.maxQueueSize&&this.queue.shift()}}])}();function Fe(t,e){if(e)return e;return{error:"error",manual:"info"}[t]||"info"}var Je=He;function Ve(t){return"string"!=typeof t&&(t=String(t)),t.toLowerCase()}function We(t){this.map={},t instanceof We?t.forEach((function(t,e){this.append(e,t)}),this):Array.isArray(t)?t.forEach((function(t){this.append(t[0],t[1])}),this):t&&Object.getOwnPropertyNames(t).forEach((function(e){this.append(e,t[e])}),this)}We.prototype.append=function(t,e){t=Ve(t),e=function(t){return"string"!=typeof t&&(t=String(t)),t}(e);var r=this.map[t];this.map[t]=r?r+", "+e:e},We.prototype.get=function(t){return t=Ve(t),this.has(t)?this.map[t]:null},We.prototype.has=function(t){return this.map.hasOwnProperty(Ve(t))},We.prototype.forEach=function(t,e){for(var r in this.map)this.map.hasOwnProperty(r)&&t.call(e,this.map[r],r,this)},We.prototype.entries=function(){var t=[];return this.forEach((function(e,r){t.push([r,e])})),function(t){return{next:function(){var e=t.shift();return{done:void 0===e,value:e}}}}(t)};var Be=function(t){return"undefined"==typeof Headers?new We(t):new Headers(t)};var Ge=function(t,e,r,n,o){var i=t[e];t[e]=r(i),n&&n[o].push([t,e,i])};var $e=function(t,e,r){var n,o,i,a,s=l(t,"object"),u=l(t,"array"),c=[];if(r=r||{obj:[],mapped:[]},s){if(a=r.obj.indexOf(t),s&&-1!==a)return r.mapped[a]||r.obj[a];r.obj.push(t),a=r.obj.length-1}if(s)for(n in t)Object.prototype.hasOwnProperty.call(t,n)&&c.push(n);else if(u)for(i=0;i=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function Qe(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=0;i--){if(e=Ye(t[i]),r=o+3*n.length+e.length,i=83){n.unshift("...");break}n.unshift(e),o+=e.length}return n.join(" > ")}(function(t){for(var e,r=[],n=0;t&&n<5&&"html"!==(e=tr(t)).tagName;n++)r.unshift(e),t=t.parentNode;return r}(t))}function Ye(t){if(!t||!t.tagName)return"";var e=[t.tagName];t.id&&e.push("#"+t.id),t.classes&&e.push("."+t.classes.join("."));for(var r=0;r=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function ar(t,e){if(t){if("string"==typeof t)return sr(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?sr(t,e):void 0}}function sr(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r3)){var e=A();o.__rollbar_xhr.end_time_ms=e;var r=null;if(o.__rollbar_xhr.response_content_type=o.getResponseHeader("Content-Type"),t.autoInstrument.networkResponseHeaders){var i=t.autoInstrument.networkResponseHeaders;r={};try{var a;if(!0===i){var s=o.getAllResponseHeaders();if(s){var u,l,c,f=ir(s.trim().split(/[\r\n]+/));try{for(f.s();!(c=f.n()).done;){a=(u=c.value.split(": ")).shift(),l=u.join(": "),r[a]=l}}catch(t){f.e(t)}finally{f.f()}}}else{var p,h=ir(i);try{for(h.s();!(p=h.n()).done;){var d=p.value;r[d]=o.getResponseHeader(d)}}catch(t){h.e(t)}finally{h.f()}}}catch(t){}}var y=null;if(t.autoInstrument.networkResponseBody)try{y=o.responseText}catch(t){}var v=null;(y||r)&&(v={},y&&(t.isJsonContentType(o.__rollbar_xhr.response_content_type)?v.body=t.scrubJson(y):v.body=y),r&&(v.headers=r)),v&&(o.__rollbar_xhr.response=v);try{var m=o.status;m=1223===m?204:m,o.__rollbar_xhr.status_code=m,t.addOtelNetworkResponse(o.__rollbar_event,e,m),o.__rollbar_event.level=t.telemeter.levelFromStatus(m),t.errorOnHttpStatus(o.__rollbar_xhr)}catch(t){}}}return e("onload",o),e("onerror",o),e("onprogress",o),"onreadystatechange"in o&&f(o.onreadystatechange)?Ge(o,"onreadystatechange",(function(e){return t.rollbar.wrap(e,void 0,i)})):o.onreadystatechange=i,o.__rollbar_xhr&&t.trackHttpErrors()&&(o.__rollbar_xhr.stack=(new Error).stack),r.apply(this,arguments)}}),this.replacements,"network")}"fetch"in this._window&&Ge(this._window,"fetch",(function(e){return function(r,n){var o,i=Array.prototype.slice.call(arguments),a=i[0],s="GET",u=pr(a);l(a,"string")||u?o=u?a.toString():a:a&&(o=a.url,a.method&&(s=a.method)),i[1]&&i[1].method&&(s=i[1].method);var c={method:s,url:o,status_code:null,start_time_ms:A(),end_time_ms:null};if(i[1]&&i[1].headers){var f=Be(i[1].headers);c.request_content_type=f.get("Content-Type"),t.autoInstrument.networkRequestHeaders&&(c.request_headers=t.fetchHeaders(f,t.autoInstrument.networkRequestHeaders))}t.autoInstrument.networkRequestBody&&(i[1]&&i[1].body?c.request=i[1].body:i[0]&&!l(i[0],"string")&&i[0].body&&(c.request=i[0].body));var p=t.captureNetwork(c,"fetch",void 0);return t.trackHttpErrors()&&(c.stack=(new Error).stack),e.apply(this,i).then((function(e){var r=A();c.end_time_ms=r,c.status_code=e.status,t.addOtelNetworkResponse(p,r,e.status),c.response_content_type=e.headers.get("Content-Type");var n=null;t.autoInstrument.networkResponseHeaders&&(n=t.fetchHeaders(e.headers,t.autoInstrument.networkResponseHeaders));var o=null;return t.autoInstrument.networkResponseBody&&"function"==typeof e.text&&(o=e.clone().text()),(n||o)&&(c.response={},o&&("function"==typeof o.then?o.then((function(e){e&&t.isJsonContentType(c.response_content_type)?c.response.body=t.scrubJson(e):c.response.body=e})):c.response.body=o),n&&(c.response.headers=n)),t.errorOnHttpStatus(c),e}))}}),this.replacements,"network")}},{key:"captureNetwork",value:function(t,e,r){return t.request&&this.isJsonContentType(t.request_content_type)&&(t.request=this.scrubJson(t.request)),this.telemeter.captureNetwork(t,e,r)}},{key:"isJsonContentType",value:function(t){return!!(t&&l(t,"string")&&t.toLowerCase().includes("json"))}},{key:"addOtelNetworkResponse",value:function(t,e,r){t.otelAttributes&&(t.otelAttributes["response.timeUnixNano"]=(1e6*e).toString(),t.otelAttributes.statusCode=r)}},{key:"scrubJson",value:function(t){return JSON.stringify(Xe(JSON.parse(t),this.options.scrubFields))}},{key:"fetchHeaders",value:function(t,e){var r={};try{if(!0===e){if("function"==typeof t.entries)for(var n=t.entries(),o=n.next();!o.done;)r[o.value[0]]=o.value[1],o=n.next()}else{var i,a=ir(e);try{for(a.s();!(i=a.n()).done;){var s=i.value;r[s]=t.get(s)}}catch(t){a.e(t)}finally{a.f()}}}catch(t){}return r}},{key:"trackHttpErrors",value:function(){return this.autoInstrument.networkErrorOnHttp5xx||this.autoInstrument.networkErrorOnHttp4xx||this.autoInstrument.networkErrorOnHttp0}},{key:"errorOnHttpStatus",value:function(t){var e=t.status_code;if(e>=500&&this.autoInstrument.networkErrorOnHttp5xx||e>=400&&this.autoInstrument.networkErrorOnHttp4xx||0===e&&this.autoInstrument.networkErrorOnHttp0){var r=new Error("HTTP request failed with Status "+e);r.stack=t.stack,this.rollbar.error(r,{skipFrames:1})}}},{key:"deinstrumentConsole",value:function(){for(var t;this.replacements.log.length;)t=this.replacements.log.shift(),this._window.console[t[0]]=t[1]}},{key:"instrumentConsole",value:function(){var t;if(null!==(t=this._window)&&void 0!==t&&null!==(t=t.console)&&void 0!==t&&t.log){var e=this,r=this._window.console;try{for(var n=0,o=["debug","info","warn","error","log"];n500&&(n=n.substr(0,497)+"...");break;case"null":n="null";break;case"undefined":n="undefined";break;case"symbol":n=n.toString()}o.push(n)}return o.join(" ")}(t);e.telemeter.captureLog(r,i,null,A()),n&&Function.prototype.apply.call(n,o,t)},e.replacements.log.push([t,n])}}},{key:"deinstrumentDom",value:function(){this.removeListeners("dom")}},{key:"instrumentDom",value:function(){var t=this;this.addListener("dom",this._window,["click","dblclick","contextmenu"],(function(e){return t.handleEvent("click",e)})),this.addListener("dom",this._window,["dragstart","dragend","dragenter","dragleave","drop"],(function(e){return t.handleEvent("dragdrop",e)})),this.addListener("dom",this._window,["blur","focus"],(function(e){return t.handleEvent("focus",e)})),this.addListener("dom",this._window,["submit","invalid"],(function(e){return t.handleEvent("form",e)})),this.addListener("dom",this._window,["input","change"],(function(e){return t.handleEvent("input",e)})),this.addListener("dom",this._window,["resize"],(function(e){return t.handleEvent("resize",e)})),this.addListener("dom",this._document,["DOMContentLoaded"],(function(e){return t.handleEvent("contentLoaded",e)}))}},{key:"handleEvent",value:function(t,e){try{return{click:this.handleClick,dragdrop:this.handleDrag,focus:this.handleFocus,form:this.handleForm,input:this.handleInput,resize:this.handleResize,contentLoaded:this.handleContentLoaded}[t].call(this,e)}catch(r){console.log("".concat(t," handler error"),e,r,r.stack)}}},{key:"handleContentLoaded",value:function(t){this.rollbar.triggerReplay({type:"navigation",path:new URL(this._location.href).pathname})}},{key:"handleClick",value:function(t){var e,r=null===(e=t.target)||void 0===e?void 0:e.tagName.toLowerCase();["input","select","textarea"].includes(r)||this.telemeter.captureClick({type:t.type,isSynthetic:!t.isTrusted,element:Ke(t.target),timestamp:A()})}},{key:"handleFocus",value:function(t){var e,r=t.type,n=null!==(e=t.target)&&void 0!==e&&e.window?"window":Ke(t.target);this.telemeter.captureFocus({type:r,isSynthetic:!t.isTrusted,element:n,timestamp:A()})}},{key:"handleForm",value:function(t){var e;t.type,null!==(e=t.target)&&void 0!==e&&e.window||Ke(t.target)}},{key:"handleResize",value:function(t){var e=window.screen.width/window.innerWidth;this.telemeter.captureResize({type:t.type,isSynthetic:!t.isTrusted,width:window.innerWidth,height:window.innerHeight,textZoomRatio:e,timestamp:A()})}},{key:"handleDrag",value:function(t){var e,r,n,o,i,a,s=t.type;if("drop"===s){e=[],r=[];var u,l=ir([].concat(rr(t.dataTransfer.files),rr(t.dataTransfer.items)));try{for(l.s();!(u=l.n()).done;){var c=u.value;c.kind&&c.type&&(e.push(c.kind),r.push(c.type))}}catch(t){l.e(t)}finally{l.f()}}["drop","dragstart"].includes(s)&&(n=null===(i=t.dataTransfer)||void 0===i?void 0:i.dropEffect,o=null===(a=t.dataTransfer)||void 0===a?void 0:a.effectAllowed);this.telemeter.captureDragDrop({type:s,isSynthetic:!t.isTrusted,element:Ke(t.target),dropEffect:n,effectAllowed:o,kinds:JSON.stringify(e),mediaTypes:JSON.stringify(r),timestamp:A()})}},{key:"scrubInputValue",value:function(t,e,r,n){var o="******";if("password"===n)return o;if(this.scrubTelemetryInputs)return o;var i=tr(e);if(this.telemetryScrubber){if(this.telemetryScrubber(i))return o}else if(this.defaultValueScrubber(i))return o;return function(t,e,r){try{var n,o=Ze(e);try{for(o.s();!(n=o.n()).done;){var i=n.value;if("string"==typeof i){if(t.classList.contains(i))return!0}else{var a,s=Ze(t.classList);try{for(s.s();!(a=s.n()).done;){var u=a.value;if(i.test(u))return!0}}catch(t){s.e(t)}finally{s.f()}}}}catch(t){o.e(t)}finally{o.f()}var l,c=Ze(r);try{for(c.s();!(l=c.n()).done;){var f=l.value;if(t.matches(f))return!0}}catch(t){c.e(t)}finally{c.f()}}catch(t){}return!1}(e,this.scrubClasses,this.scrubSelectors)?o:this.maskInputOptions[r.toLowerCase()]||this.maskInputOptions[n]?this.maskInputFn?this.maskInputFn(t,e):o:t}},{key:"handleInput",value:function(t){var e,r,n,o,i=t.type,a=null===(e=t.target)||void 0===e?void 0:e.tagName.toLowerCase(),s=null===(r=t.target)||void 0===r?void 0:r.value,u=(null===(n=t.target)||void 0===n||null===(n=n.attributes)||void 0===n||null===(n=n.type)||void 0===n?void 0:n.value)||(null===(o=t.target)||void 0===o?void 0:o.type);switch(void 0!==s&&(s=this.scrubInputValue(s,t.target,a,u)),i){case"input":if(["radio","checkbox"].includes(u))return;["select","textarea"].includes(a)&&(u=a);break;case"change":if(!["radio","checkbox"].includes(u))return;var l;if("checkbox"===u)s=null===(l=t.target)||void 0===l?void 0:l.checked}this.telemeter.captureInput({type:u,isSynthetic:!t.isTrusted,element:Ke(t.target),value:s,timestamp:A()})}},{key:"deinstrumentNavigation",value:function(){var t=this._window.chrome;!(t&&t.app&&t.app.runtime)&&this._window.history&&this._window.history.pushState&&lr(this.replacements,"navigation")}},{key:"instrumentNavigation",value:function(){var t=this._window.chrome;if(!(t&&t.app&&t.app.runtime)&&this._window.history&&this._window.history.pushState){var e=this;Ge(this._window,"onpopstate",(function(t){return function(){var r=e._location.href;e.handleUrlChange(e._lastHref,r),t&&t.apply(this,arguments)}}),this.replacements,"navigation"),Ge(this._window.history,"pushState",(function(t){return function(){var r=arguments.length>2?arguments[2]:void 0;return r&&e.handleUrlChange(e._lastHref,r+""),t.apply(this,arguments)}}),this.replacements,"navigation")}}},{key:"handleUrlChange",value:function(t,e){var r=Et(this._location.href),n=Et(e),o=Et(t);this._lastHref=e,r.protocol===n.protocol&&r.host===n.host&&(e=n.path+(n.hash||"")),r.protocol===o.protocol&&r.host===o.host&&(t=o.path+(o.hash||"")),this.telemeter.captureNavigation(t,e,null,A());this.rollbar.triggerReplay({type:"navigation",path:e})}},{key:"instrumentConnectivity",value:function(){var t=this;this.addListener("connectivity",this._window,["online","offline"],(function(e){return t.handleConnectivity(e)}))}},{key:"handleConnectivity",value:function(t){var e=t.type;this.telemeter.captureConnectivityChange({type:e,isSynthetic:!t.isTrusted,timestamp:A()})}},{key:"handleCspEvent",value:function(t){var e="Security Policy Violation: blockedURI: "+t.blockedURI+", violatedDirective: "+t.violatedDirective+", effectiveDirective: "+t.effectiveDirective+", ";t.sourceFile&&(e+="location: "+t.sourceFile+", line: "+t.lineNumber+", col: "+t.columnNumber+", "),e+="originalPolicy: "+t.originalPolicy,this.telemeter.captureLog(e,"error",null,A()),this.handleCspError(e)}},{key:"handleCspError",value:function(t){this.autoInstrument.errorOnContentSecurityPolicy&&this.rollbar.error(t)}},{key:"deinstrumentContentSecurityPolicy",value:function(){this.removeListeners("contentsecuritypolicy")}},{key:"instrumentContentSecurityPolicy",value:function(){if("addEventListener"in this._document){var t=this.handleCspEvent.bind(this);this.addListener("contentsecuritypolicy",this._document,["securitypolicyviolation"],t)}}},{key:"addListener",value:function(t,e,r,n){var o=this;if(e.addEventListener){var i,a=ir(r);try{var s=function(){var r=i.value,a={capture:!0,passive:!0};e.addEventListener(r,n,a,!0),o.eventRemovers[t].push((function(){e.removeEventListener(r,n,a)}))};for(a.s();!(i=a.n()).done;)s()}catch(t){a.e(t)}finally{a.f()}}}},{key:"removeListeners",value:function(t){for(;this.eventRemovers[t].length;)this.eventRemovers[t].shift()()}}])}();function pr(t){return"undefined"!=typeof URL&&t instanceof URL}var hr=fr;function dr(t,e,r){if(e.hasOwnProperty&&e.hasOwnProperty("addEventListener")){for(var n=e.addEventListener;n._rollbarOldAdd&&n.belongsToShim;)n=n._rollbarOldAdd;var o=function(e,r,o){n.call(this,e,t.wrap(r),o)};o._rollbarOldAdd=n,o.belongsToShim=r,e.addEventListener=o;for(var i=e.removeEventListener;i._rollbarOldRemove&&i.belongsToShim;)i=i._rollbarOldRemove;var a=function(t,e,r){i.call(this,t,e&&e._rollbar_wrapped||e,r)};a._rollbarOldRemove=i,a.belongsToShim=r,e.removeEventListener=a}}var yr=function(t,e,r){if(t){var n,o,i="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".split(",");for(n=0;n2*e?t.slice(0,e).concat(t.slice(r-e)):t}function br(t,e,r){r=void 0===r?30:r;var n,o=t.data.body;if(o.trace_chain)for(var i=o.trace_chain,a=0;at?e.slice(0,t-3).concat("..."):e}function wr(t,e,r){return e=$e(e,(function e(r,n,o){switch(c(n)){case"string":return gr(t,n);case"object":case"array":return $e(n,e,o);default:return n}})),[e,g(e,r)]}function kr(t){return t.exception&&(delete t.exception.description,t.exception.message=gr(255,t.exception.message)),t.frames=mr(t.frames,1),t}function _r(t,e){var r=t.data.body;if(r.trace_chain)for(var n=r.trace_chain,o=0;oe}var Or={truncate:function(t,e,r){r=void 0===r?524288:r;for(var n,o,i,a=[vr,br,wr.bind(null,1024),wr.bind(null,512),wr.bind(null,256),_r];n=a.shift();)if(t=(o=n(t,e))[0],(i=o[1]).error||!Sr(i.value,r))return i;return i},raw:vr,truncateFrames:br,truncateStrings:wr,maybeTruncateValue:gr};function xr(t){return xr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},xr(t)}function Er(t,e){for(var r=0;r3?o-3:0),a=3;a0&&void 0!==arguments[0]?arguments[0]:16);return crypto.getRandomValues(t),Array.from(t,(function(t){return t.toString(16).padStart(2,"0")})).join("")}};function Nr(t){return Nr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Nr(t)}function qr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function Dr(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return this.session||(this.getSession()||this.createSession(),this.initSessionAttributes(t)),this}},{key:"getSession",value:function(){try{var t=this.window.sessionStorage.getItem(Fr);if(!t)return null;this.session=JSON.parse(t)}catch(t){return null}return this}},{key:"createSession",value:function(){return this.session={id:Lr.gen(),createdAt:Date.now()},this.setSession(this.session)}},{key:"setSession",value:function(t){var e=JSON.stringify(t);try{this.window.sessionStorage.setItem(Fr,e)}catch(t){return null}return this}},{key:"attributes",get:function(){return this._attributes}},{key:"setAttributes",value:function(t){return this._attributes=Dr(Dr({},this._attributes),t),this}},{key:"setUser",value:function(t){return this.setAttributes({"user.id":null==t?void 0:t.id,"user.email":null==t?void 0:t.email,"user.name":(null==t?void 0:t.name)||(null==t?void 0:t.username)}),this}},{key:"initSessionAttributes",value:function(t){var e,r,n;return this.setAttributes(Dr({"session.id":this.session.id,"browser.brands":null===(e=navigator.userAgentData)||void 0===e?void 0:e.brands,"browser.language":navigator.language,"browser.mobile":null===(r=navigator.userAgentData)||void 0===r?void 0:r.mobile,"browser.platform":null===(n=navigator.userAgentData)||void 0===n?void 0:n.platform,"client.address":"$remote_ip","rollbar.notifier.framework":"browser-js","user_agent.original":navigator.userAgent},t)),this}}])}();function Vr(t){return[Math.trunc(t/1e3),Math.round(t%1e3*1e6)]}function Wr(t,e){return[t[0]+e[0]+Math.trunc((t[1]+e[1])/1e9),(t[1]+e[1])%1e9]}var Br={fromMillis:Vr,toMillis:function(t){return 1e3*t[0]+Math.round(t[1]/1e6)},toNanos:function(t){return 1e9*t[0]+t[1]},add:Wr,now:function(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]?Wr(Vr(performance.timeOrigin),Vr(performance.now())):Vr(Date.now())},isHrTime:function(t){return Array.isArray(t)&&2===t.length&&"number"==typeof t[0]&&"number"==typeof t[1]}};function Gr(t){return Gr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Gr(t)}function $r(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,s=[],u=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(s.push(n.value),s.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(t,e)||Xr(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function zr(t){return function(t){if(Array.isArray(t))return Zr(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||Xr(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Xr(t,e){if(t){if("string"==typeof t)return Zr(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Zr(t,e):void 0}}function Zr(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.api=e,this.options=r}),[{key:"export",value:function(t,e){tn.push.apply(tn,zr(t))}},{key:"toPayload",value:function(){var t=this,e=tn.slice();if(tn.length=0,!e||!e.length)return{resourceSpans:[]};var r,n=e[0]&&e[0].resource||{},o=new Map,i=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=Xr(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}(e);try{for(i.s();!(r=i.n()).done;){var a=r.value,s=a.instrumentationScope?"".concat(a.instrumentationScope.name,":").concat(a.instrumentationScope.version):"default:1.0.0";o.has(s)||o.set(s,{scope:a.instrumentationScope||{name:"default",version:"1.0.0",attributes:[]},spans:[]}),o.get(s).spans.push(this._transformSpan(a))}}catch(t){i.e(t)}finally{i.f()}return{resourceSpans:[{resource:this._transformResource(n),scopeSpans:Array.from(o.values()).map((function(e){return{scope:t._transformInstrumentationScope(e.scope),spans:e.spans}}))}]}}},{key:"post",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.api.postSpans(t,e)}},{key:"_transformSpan",value:function(t){var e,r=this,n=function(t){return Object.entries(t||{}).map((function(t){var e=$r(t,2),n=e[0],o=e[1];return{key:n,value:r._transformAnyValue(o)}}))};return{traceId:t.spanContext.traceId,spanId:t.spanContext.spanId,parentSpanId:t.parentSpanId||"",name:t.name,kind:t.kind||1,startTimeUnixNano:Br.toNanos(t.startTime),endTimeUnixNano:Br.toNanos(t.endTime),attributes:n(t.attributes),events:(e=t.events,(e||[]).map((function(t){return{timeUnixNano:Br.toNanos(t.time),name:t.name,attributes:n(t.attributes)}})))}}},{key:"_transformResource",value:function(t){var e=this,r=t.attributes||{};return{attributes:Object.entries(r).map((function(t){var r=$r(t,2),n=r[0],o=r[1];return{key:n,value:e._transformAnyValue(o)}}))}}},{key:"_transformInstrumentationScope",value:function(t){var e=this;return{name:t.name||"",version:t.version||"",attributes:(t.attributes||[]).map((function(t){return{key:t.key,value:e._transformAnyValue(t.value)}}))}}},{key:"_transformAnyValue",value:function(t){var e=this;if(null==t)return{stringValue:""};var r=Gr(t);return"string"===r?{stringValue:t}:"number"===r?Number.isInteger(t)?{intValue:t.toString()}:{doubleValue:t}:"boolean"===r?{boolValue:t}:Array.isArray(t)?{arrayValue:{values:t.map((function(t){return e._transformAnyValue(t)}))}}:"object"===r?{kvlistValue:{values:Object.entries(t).map((function(t){var r=$r(t,2),n=r[0],o=r[1];return{key:n,value:e._transformAnyValue(o)}}))}}:{stringValue:String(t)}}}])}(),tn=[];function en(t){return en="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},en(t)}function rn(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return nn(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?nn(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function nn(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.exporter=e,this.options=r,this.pendingSpans=new Map,this.transforms=[this.userTransform.bind(this)]}),[{key:"addTransform",value:function(t){this.transforms.unshift(t)}},{key:"userTransform",value:function(t){this.options.transformSpan&&this.options.transformSpan({span:t})}},{key:"applyTransforms",value:function(t){var e,r=rn(this.transforms);try{for(r.s();!(e=r.n()).done;){var n=e.value;try{n(t)}catch(t){yt.error("Error running span transform callback",t)}}}catch(t){r.e(t)}finally{r.f()}}},{key:"onStart",value:function(t,e){this.pendingSpans.set(t.span.spanContext.spanId,t)}},{key:"onEnd",value:function(t){this.applyTransforms(t.span),this.exporter.export([t.export()]),this.pendingSpans.delete(t.span.spanContext.spanId)}}])}();function un(t){return un="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},un(t)}function ln(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,s=[],u=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(s.push(n.value),s.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(t,e)||function(t,e){if(t){if("string"==typeof t)return cn(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?cn(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function cn(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0;return this.span.ended||this.span.events.push({name:t,attributes:e,time:r||Br.now(),droppedAttributesCount:0}),this}},{key:"isRecording",value:function(){return!1===this.span.ended}},{key:"end",value:function(t,e){t&&this.setAttributes(t),this.span.endTime=e||Br.now(this.usePerformance),this.span.ended=!0,this.spanProcessor.onEnd(this)}},{key:"export",value:function(){return this.span}}])}();function dn(t){return dn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},dn(t)}function yn(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function vn(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.tracing.contextManager.active(),u=this.tracing.getSpan(s),l=null==u?void 0:u.spanContext(),c=Lr.gen(8),f=null;l?(o=l.traceId,f=l.traceState,i=l.spanId):o=Lr.gen(16);var p={traceId:o,spanId:c,traceFlags:0,traceState:f},h={attributes:vn(vn({},(null===(e=this.tracing.resource)||void 0===e?void 0:e.attributes)||{}),(null===(r=a.resource)||void 0===r?void 0:r.attributes)||{})};return new hn({resource:h,scope:this.tracing.scope,session:null===(n=this.tracing.session)||void 0===n?void 0:n.session,context:s,spanContext:p,name:t,kind:0,parentSpanId:i,spanProcessor:this.spanProcessor,startTime:a.startTime,usePerformance:a.usePerformance})}}])}();function kn(t){return kn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},kn(t)}function _n(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function Sn(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:16;return Lr.gen(t)}},{key:"createTracer",value:function(){this.contextManager=new Cr,this.exporter=new Yr(this.api,this.options),this.spanProcessor=new sn(this.exporter,this.options.tracing),this.tracer=new wn(this,this.spanProcessor)}},{key:"getTracer",value:function(){return this.tracer}},{key:"addSpanTransform",value:function(t){this.spanProcessor.addTransform(t)}},{key:"getSpan",value:function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.contextManager.active()).getValue(jn)}},{key:"setSpan",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.contextManager.active(),e=arguments.length>1?arguments[1]:void 0;return t.setValue(jn,e)}},{key:"startSpan",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.contextManager.active();return this.tracer.startSpan(t,e,r)}},{key:"with",value:function(t,e,r){for(var n,o=arguments.length,i=new Array(o>3?o-3:0),a=3;a=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return s=t.done,t},e:function(t){u=!0,a=t},f:function(){try{s||null==r.return||r.return()}finally{if(u)throw a}}}}function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r0&&(u||(u=k({})),u.extraArgs=k(p));var g,S={message:i,err:s,custom:u,timestamp:T(),callback:l,notifier:r,diagnostic:{},uuid:(g=T(),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){var e=(g+16*Math.random())%16|0;return g=Math.floor(g/16),("x"===t?e:7&e|8).toString(16)}))};return S.data=S.data||{},function(t,e){e&&void 0!==e.level&&(t.level=e.level,delete e.level);e&&void 0!==e.skipFrames&&(t.skipFrames=e.skipFrames,delete e.skipFrames)}(S,u),n&&c&&(S.request=c),o&&(S.lambdaContext=o),S._originalArgs=t,S.diagnostic.original_arg_types=d,S}var _=["log","network","dom","navigation","error","manual"],O=["critical","error","warning","info","debug"];function x(t,e){var n,o=r(t);try{for(o.s();!(n=o.n()).done;){if(n.value===e)return!0}}catch(t){o.e(t)}finally{o.f()}return!1}function E(t,e){t.attributes=t.attributes||[];var n,o=r(e);try{for(o.s();!(n=o.n()).done;){var i=n.value;void 0!==i.value&&t.attributes.push(i)}}catch(t){o.e(t)}finally{o.f()}}function j(t,e){if(t){var r=e.split("."),n=t;try{for(var o=0,i=r.length;o=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function q(t,e){if(t){if("string"==typeof t)return N(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?N(t,e):void 0}}function N(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);rn&&(o=this.queue.length-n),this.maxQueueSize=n,this.queue.splice(0,o)}},{key:"copyEvents",value:function(){var t=Array.prototype.slice.call(this.queue,0);if(s(this.options.filterTelemetry))try{for(var e=t.length;e--;)this.options.filterTelemetry(t[e])&&t.splice(e,1)}catch(t){this.options.filterTelemetry=null}return t=(t=t.filter(function(t){return"connectivity"!==t.type})).map(function(t){t.otelAttributes;var e=function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(-1!==e.indexOf(n))continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.telemetrySpan&&(this.telemetrySpan.end(t),this.telemetrySpan=this.tracing.startSpan("rollbar-telemetry",{}))}},{key:"capture",value:function(t,e,r,n){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,a={level:X(t,r),type:t,timestamp_ms:o||T(),body:e,source:"client"};n&&(a.uuid=n),i&&(a.otelAttributes=i);try{if(s(this.options.filterTelemetry)&&this.options.filterTelemetry(a))return!1}catch(t){this.options.filterTelemetry=null}return this.push(a),a}},{key:"captureEvent",value:function(t,e,r,n){return this.capture(t,e,r,n)}},{key:"captureError",value:function(t,e,r,n){var o,i=t.message||String(t),a={message:i};t.stack&&(a.stack=t.stack);var s={message:i,level:e,type:"error",uuid:r};return null===(o=this.telemetrySpan)||void 0===o||o.addEvent("rollbar-occurrence-event",s,G(n)),this.capture("error",a,e,r,n,s)}},{key:"captureLog",value:function(t,e,r,n){var o,i=r?"rollbar-occurrence-event":"rollbar-log-event",a=J({message:t,level:e},r?{type:"message",uuid:r}:{});return null===(o=this.telemetrySpan)||void 0===o||o.addEvent(i,a,G(n)),this.capture("log",{message:t},e,r,n,a)}},{key:"captureNetwork",value:function(t,e,r,n){var o,i,a;e=e||"xhr",t.subtype=t.subtype||e,n&&(t.request=n);var s=this.levelFromStatus(t.status_code),u=1e6*(t.end_time_ms||0),l={type:t.subtype,method:t.method,url:t.url,statusCode:t.status_code,"request.headers":JSON.stringify(t.request_headers||{}),"response.headers":JSON.stringify((null===(o=t.response)||void 0===o?void 0:o.headers)||{}),"response.timeUnixNano":u.toString()},c=t.request,f=null===(i=t.response)||void 0===i?void 0:i.body;return c&&(l["request.body"]=JSON.stringify(c)),f&&(l["response.body"]=JSON.stringify(f)),null===(a=this.telemetrySpan)||void 0===a||a.addEvent("rollbar-network-event",l,G(t.start_time_ms)),this.capture("network",t,s,r,t.start_time_ms,l)}},{key:"levelFromStatus",value:function(t){return t>=200&&t<400?"info":0===t||t>=400?"error":"info"}},{key:"captureDom",value:function(t,e,r,n,o){var i={subtype:t,element:e};return void 0!==r&&(i.value=r),void 0!==n&&(i.checked=n),this.capture("dom",i,"info",o)}},{key:"captureInput",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.value,a=t.timestamp,s="rollbar-input-event",u={type:s,subtype:r,element:o,value:i},l={type:r,isSynthetic:n,element:o,value:i,endTimeUnixNano:G(a)},c=this._getRepeatedEvent(s,l);return c?this._updateRepeatedEvent(c,l,a):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(s,l,G(a)),this.capture("dom",u,"info",null,a,l))}},{key:"captureClick",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.timestamp,a="rollbar-click-event",s={type:a,subtype:r,element:o},u={type:r,isSynthetic:n,element:o,endTimeUnixNano:G(i)},l=this._getRepeatedEvent(a,u);return l?this._updateRepeatedEvent(l,u,i):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(a,u,G(i)),this.capture("dom",s,"info",null,i,u))}},{key:"_getRepeatedEvent",value:function(t,e){var r=this._lastEvent(this.queue);if(r&&r.body.type===t&&r.otelAttributes.target===e.target)return r}},{key:"_updateRepeatedEvent",value:function(t,e,r){var n=Math.max(r-t.timestamp_ms,1);t.body.value=e.value,t.otelAttributes.value=e.value,t.otelAttributes.height=e.height,t.otelAttributes.width=e.width,t.otelAttributes.textZoomRatio=e.textZoomRatio,t.otelAttributes.endTimeUnixNano=G(r),t.otelAttributes.durationUnixNano=G(n),t.otelAttributes.count=(t.otelAttributes.count||1)+1,t.otelAttributes.rate=t.otelAttributes.count/(n/1e3)}},{key:"_lastEvent",value:function(t){return t.length>0?t[t.length-1]:null}},{key:"captureFocus",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.timestamp,a="rollbar-focus-event",s={type:a,subtype:r,element:o},u={type:r,isSynthetic:n,element:o};return null===(e=this.telemetrySpan)||void 0===e||e.addEvent(a,u,G(i)),this.capture("dom",s,"info",null,i,u)}},{key:"captureResize",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.width,i=t.height,a=t.textZoomRatio,s=t.timestamp,u="rollbar-resize-event",l={type:u,subtype:r,width:o,height:i,textZoomRatio:a},c={type:r,isSynthetic:n,width:o,height:i,textZoomRatio:a},f=this._getRepeatedEvent(u,c);return f?this._updateRepeatedEvent(f,c,s):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(u,c,G(s)),this.capture("dom",l,"info",null,s,c))}},{key:"captureDragDrop",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.dropEffect,a=t.effectAllowed,s=t.kinds,u=t.mediaTypes,l=t.timestamp,c="rollbar-dragdrop-event",f={type:c,subtype:r,isSynthetic:n},p={type:r,isSynthetic:n};return"dragstart"===r&&(f=J(J({},f),{},{element:o,dropEffect:i,effectAllowed:a}),p=J(J({},p),{},{element:o,dropEffect:i,effectAllowed:a})),"drop"===r&&(f=J(J({},f),{},{element:o,dropEffect:i,effectAllowed:a,kinds:s,mediaTypes:u}),p=J(J({},p),{},{element:o,dropEffect:i,effectAllowed:a,kinds:s,mediaTypes:u})),null===(e=this.telemetrySpan)||void 0===e||e.addEvent(c,p,G(l)),this.capture("dom",f,"info",null,l,p)}},{key:"captureNavigation",value:function(t,e,r,n){var o;return null===(o=this.telemetrySpan)||void 0===o||o.addEvent("rollbar-navigation-event",{"previous.url.full":t,"url.full":e},G(n)),this.capture("navigation",{from:t,to:e},"info",r,n)}},{key:"captureDomContentLoaded",value:function(t){return this.capture("navigation",{subtype:"DOMContentLoaded"},"info",void 0,t&&t.getTime())}},{key:"captureLoad",value:function(t){return this.capture("navigation",{subtype:"load"},"info",void 0,t&&t.getTime())}},{key:"captureConnectivityChange",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.timestamp,i="rollbar-connectivity-event",a={type:i,subtype:r},s={type:r,isSynthetic:n};return null===(e=this.telemetrySpan)||void 0===e||e.addEvent(i,s,G(o)),this.capture("connectivity",a,"info",null,o,s)}},{key:"_captureRollbarItem",value:function(t){if(this.options.includeItemsInTelemetry)return t.err?this.captureError(t.err,t.level,t.uuid,t.timestamp):t.message?this.captureLog(t.message,t.level,t.uuid,t.timestamp):t.custom?this.capture("log",t.custom,t.level,t.uuid,t.timestamp):void 0}},{key:"push",value:function(t){this.queue.push(t),this.queue.length>this.maxQueueSize&&this.queue.shift()}}],e&&B(t.prototype,e),r&&B(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function X(t,e){if(e)return e;return{error:"error",manual:"info"}[t]||"info"}var Z=z;function Q(t){return Q="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Q(t)}function K(t,e){for(var r=0;r3?o-3:0),a=3;a0&&void 0!==arguments[0]&&arguments[0]?st(at(performance.timeOrigin),at(performance.now())):at(Date.now())},isHrTime:function(t){return Array.isArray(t)&&2===t.length&&"number"==typeof t[0]&&"number"==typeof t[1]}};function lt(t){return lt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},lt(t)}function ct(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,s=[],u=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(s.push(n.value),s.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(t,e)||pt(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ft(t){return function(t){if(Array.isArray(t))return dt(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||pt(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function pt(t,e){if(t){if("string"==typeof t)return dt(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?dt(t,e):void 0}}function dt(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.api=e,this.options=r},e=[{key:"export",value:function(t,e){mt.push.apply(mt,ft(t))}},{key:"toPayload",value:function(){var t=this,e=mt.slice();if(mt.length=0,!e||!e.length)return{resourceSpans:[]};var r,n=e[0]&&e[0].resource||{},o=new Map,i=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=pt(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}(e);try{for(i.s();!(r=i.n()).done;){var a=r.value,s=a.instrumentationScope?"".concat(a.instrumentationScope.name,":").concat(a.instrumentationScope.version):"default:1.0.0";o.has(s)||o.set(s,{scope:a.instrumentationScope||{name:"default",version:"1.0.0",attributes:[]},spans:[]}),o.get(s).spans.push(this._transformSpan(a))}}catch(t){i.e(t)}finally{i.f()}return{resourceSpans:[{resource:this._transformResource(n),scopeSpans:Array.from(o.values()).map(function(e){return{scope:t._transformInstrumentationScope(e.scope),spans:e.spans}})}]}}},{key:"post",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.api.postSpans(t,e)}},{key:"_transformSpan",value:function(t){var e,r=this,n=function(t){return Object.entries(t||{}).map(function(t){var e=ct(t,2),n=e[0],o=e[1];return{key:n,value:r._transformAnyValue(o)}})};return{traceId:t.spanContext.traceId,spanId:t.spanContext.spanId,parentSpanId:t.parentSpanId||"",name:t.name,kind:t.kind||1,startTimeUnixNano:ut.toNanos(t.startTime),endTimeUnixNano:ut.toNanos(t.endTime),attributes:n(t.attributes),events:(e=t.events,(e||[]).map(function(t){return{timeUnixNano:ut.toNanos(t.time),name:t.name,attributes:n(t.attributes)}}))}}},{key:"_transformResource",value:function(t){var e=this,r=t.attributes||{};return{attributes:Object.entries(r).map(function(t){var r=ct(t,2),n=r[0],o=r[1];return{key:n,value:e._transformAnyValue(o)}})}}},{key:"_transformInstrumentationScope",value:function(t){var e=this;return{name:t.name||"",version:t.version||"",attributes:(t.attributes||[]).map(function(t){return{key:t.key,value:e._transformAnyValue(t.value)}})}}},{key:"_transformAnyValue",value:function(t){var e=this;if(null==t)return{stringValue:""};var r=lt(t);return"string"===r?{stringValue:t}:"number"===r?Number.isInteger(t)?{intValue:t.toString()}:{doubleValue:t}:"boolean"===r?{boolValue:t}:Array.isArray(t)?{arrayValue:{values:t.map(function(t){return e._transformAnyValue(t)})}}:"object"===r?{kvlistValue:{values:Object.entries(t).map(function(t){var r=ct(t,2),n=r[0],o=r[1];return{key:n,value:e._transformAnyValue(o)}})}}:{stringValue:String(t)}}}],e&&ht(t.prototype,e),r&&ht(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}(),mt=[];var bt={gen:function(){var t=new Uint8Array(arguments.length>0&&void 0!==arguments[0]?arguments[0]:16);return crypto.getRandomValues(t),Array.from(t,function(t){return t.toString(16).padStart(2,"0")}).join("")}};function gt(t){return gt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},gt(t)}function wt(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function kt(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return this.session||(this.getSession()||this.createSession(),this.initSessionAttributes(t)),this}},{key:"getSession",value:function(){try{var t=this.window.sessionStorage.getItem(xt);if(!t)return null;this.session=JSON.parse(t)}catch(t){return null}return this}},{key:"createSession",value:function(){return this.session={id:bt.gen(),createdAt:Date.now()},this.setSession(this.session)}},{key:"setSession",value:function(t){var e=JSON.stringify(t);try{this.window.sessionStorage.setItem(xt,e)}catch(t){return null}return this}},{key:"attributes",get:function(){return this._attributes}},{key:"setAttributes",value:function(t){return this._attributes=kt(kt({},this._attributes),t),this}},{key:"setUser",value:function(t){return this.setAttributes({"user.id":null==t?void 0:t.id,"user.email":null==t?void 0:t.email,"user.name":(null==t?void 0:t.name)||(null==t?void 0:t.username)}),this}},{key:"initSessionAttributes",value:function(t){var e,r,n;return this.setAttributes(kt({"session.id":this.session.id,"browser.brands":null===(e=navigator.userAgentData)||void 0===e?void 0:e.brands,"browser.language":navigator.language,"browser.mobile":null===(r=navigator.userAgentData)||void 0===r?void 0:r.mobile,"browser.platform":null===(n=navigator.userAgentData)||void 0===n?void 0:n.platform,"client.address":"$remote_ip","rollbar.notifier.framework":"browser-js","user_agent.original":navigator.userAgent},t)),this}}],e&&St(t.prototype,e),r&&St(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}(),jt=function(){},It={debug:0,info:1,warn:2,error:3,disable:4},Tt={error:function(){for(var t=arguments.length,e=new Array(t),r=0;r=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function Ct(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.exporter=e,this.options=r,this.pendingSpans=new Map,this.transforms=[this.userTransform.bind(this)]},e=[{key:"addTransform",value:function(t){this.transforms.unshift(t)}},{key:"userTransform",value:function(t){this.options.transformSpan&&this.options.transformSpan({span:t})}},{key:"applyTransforms",value:function(t){var e,r=Rt(this.transforms);try{for(r.s();!(e=r.n()).done;){var n=e.value;try{n(t)}catch(t){Pt.error("Error running span transform callback",t)}}}catch(t){r.e(t)}finally{r.f()}}},{key:"onStart",value:function(t,e){this.pendingSpans.set(t.span.spanContext.spanId,t)}},{key:"onEnd",value:function(t){this.applyTransforms(t.span),this.exporter.export([t.export()]),this.pendingSpans.delete(t.span.spanContext.spanId)}}],e&&Lt(t.prototype,e),r&&Lt(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function Dt(t){return Dt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Dt(t)}function Mt(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,s=[],u=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(s.push(n.value),s.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(t,e)||function(t,e){if(t){if("string"==typeof t)return Ut(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Ut(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ut(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0;return this.span.ended||this.span.events.push({name:t,attributes:e,time:r||ut.now(),droppedAttributesCount:0}),this}},{key:"isRecording",value:function(){return!1===this.span.ended}},{key:"end",value:function(t,e){t&&this.setAttributes(t),this.span.endTime=e||ut.now(this.usePerformance),this.span.ended=!0,this.spanProcessor.onEnd(this)}},{key:"export",value:function(){return this.span}}],e&&Ht(t.prototype,e),r&&Ht(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function Vt(t){return Vt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Vt(t)}function Bt(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function Wt(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.tracing.contextManager.active(),u=this.tracing.getSpan(s),l=null==u?void 0:u.spanContext(),c=bt.gen(8),f=null;l?(o=l.traceId,f=l.traceState,i=l.spanId):o=bt.gen(16);var p={traceId:o,spanId:c,traceFlags:0,traceState:f},d={attributes:Wt(Wt({},(null===(e=this.tracing.resource)||void 0===e?void 0:e.attributes)||{}),(null===(r=a.resource)||void 0===r?void 0:r.attributes)||{})};return new Jt({resource:d,scope:this.tracing.scope,session:null===(n=this.tracing.session)||void 0===n?void 0:n.session,context:s,spanContext:p,name:t,kind:0,parentSpanId:i,spanProcessor:this.spanProcessor,startTime:a.startTime,usePerformance:a.usePerformance})}}],e&&Gt(t.prototype,e),r&&Gt(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function Zt(t){return Zt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Zt(t)}function Qt(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function Kt(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:16;return bt.gen(t)}},{key:"createTracer",value:function(){this.contextManager=new it,this.exporter=new vt(this.api,this.options),this.spanProcessor=new Nt(this.exporter,this.options.tracing),this.tracer=new Xt(this,this.spanProcessor)}},{key:"getTracer",value:function(){return this.tracer}},{key:"addSpanTransform",value:function(t){this.spanProcessor.addTransform(t)}},{key:"getSpan",value:function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.contextManager.active()).getValue(ne)}},{key:"setSpan",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.contextManager.active(),e=arguments.length>1?arguments[1]:void 0;return t.setValue(ne,e)}},{key:"startSpan",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.contextManager.active();return this.tracer.startSpan(t,e,r)}},{key:"with",value:function(t,e,r){for(var n,o=arguments.length,i=new Array(o>3?o-3:0),a=3;a=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function se(t,e){if(t){if("string"==typeof t)return ue(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ue(t,e):void 0}}function ue(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r2*e?t.slice(0,e).concat(t.slice(r-e)):t}function fe(t,e,r){r=void 0===r?30:r;var n,o=t.data.body;if(o.trace_chain){var i,a=ae(o.trace_chain);try{for(a.s();!(i=a.n()).done;){var s=i.value;n=ce(n=s.frames,r),s.frames=n}}catch(t){a.e(t)}finally{a.f()}}else o.trace&&(n=ce(n=o.trace.frames,r),o.trace.frames=n);return[t,m(t,e)]}function pe(t,e){return e&&e.length>t?e.slice(0,t-3).concat("..."):e}function de(t,e,r){return e=R(e,function e(r,n,o){switch(a(n)){case"string":return pe(t,n);case"object":case"array":return R(n,e,o);default:return n}}),[e,m(e,r)]}function he(t){return t.exception&&(delete t.exception.description,t.exception.message=pe(255,t.exception.message)),t.frames=ce(t.frames,1),t}function ye(t,e){var r=t.data.body;if(r.trace_chain){var n,o=r.trace_chain,i=ae(o.entries());try{for(i.s();!(n=i.n()).done;){var a=ie(n.value,2),s=a[0],u=a[1];o[s]=he(u)}}catch(t){i.e(t)}finally{i.f()}}else r.trace&&(r.trace=he(r.trace));return[t,m(t,e)]}function ve(t,e){return function(t){for(var e=0,r=t.length,n=0;ne}var me={truncate:function(t,e,r){r=void 0===r?524288:r;for(var n,o,i,a=[le,fe,de.bind(null,1024),de.bind(null,512),de.bind(null,256),ye];n=a.shift();)if(t=(o=n(t,e))[0],(i=o[1]).error||!ve(i.value,r))return i;return i},raw:le,truncateFrames:fe,truncateStrings:de,maybeTruncateValue:pe};function be(t){if(!i(t.context,"string")){var e=m(t.context);e.error?t.context="Error: could not serialize 'context'":t.context=e.value||"",t.context.length>255&&(t.context=t.context.substr(0,255))}return{data:t}}function ge(t,e,r){var n=e.hostname,o=e.protocol,i=e.port,a=e.path,s=e.search,u=t.timeout,l=function(t){var e="undefined"!=typeof window&&window||"undefined"!=typeof self&&self,r=t.defaultTransport||"xhr";void 0===e.fetch&&(r="xhr");void 0===e.XMLHttpRequest&&(r="fetch");return r}(t),c=t.proxy;if(t.endpoint){var f=r.parse(t.endpoint);n=f.hostname,o=f.protocol,i=f.port,a=f.pathname,s=f.search}return{timeout:u,hostname:n,protocol:o,port:i,path:a,search:s,proxy:c,transport:l}}function we(t,e){var r=t.protocol||"https:",n=t.port||("http:"===r?80:"https:"===r?443:void 0),o=t.hostname,i=t.path,a=t.timeout,s=t.transport;return t.search&&(i+=t.search),t.proxy&&(i=r+"//"+o+i,o=t.proxy.host||t.proxy.hostname,n=t.proxy.port,r=t.proxy.protocol||r),{timeout:a,protocol:r,hostname:o,path:i,port:n,method:e,transport:s}}function ke(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function Se(t){for(var e=1;e3?(o=h===n)&&(u=i[(s=i[4])?5:(s=3,3)],i[4]=i[5]=t):i[0]<=d&&((o=r<2&&dn||n>h)&&(i[4]=r,i[5]=n,p.n=h,s=0))}if(o||r>1)return a;throw f=!0,n}return function(o,c,h){if(l>1)throw TypeError("Generator is already running");for(f&&1===c&&d(c,h),s=c,u=h;(e=s<2?t:u)||!f;){i||(s?s<3?(s>1&&(p.n=-1),d(s,u)):p.n=u:p.v=u);try{if(l=2,i){if(s||(o="next"),e=i[o]){if(!(e=e.call(i,u)))throw TypeError("iterator result is not an object");if(!e.done)return e;u=e.value,s<2&&(s=0)}else 1===s&&(e=i.return)&&e.call(i),s<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),s=1);i=t}else if((e=(f=p.n<0)?u:r.call(n,p))!==a)break}catch(e){i=t,s=1,u=e}finally{l=1}}return{value:e,done:f}}}(r,o,i),!0),l}var a={};function s(){}function u(){}function l(){}e=Object.getPrototypeOf;var c=[][n]?e(e([][n]())):(Ee(e={},n,function(){return this}),e),f=l.prototype=s.prototype=Object.create(c);function p(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,l):(t.__proto__=l,Ee(t,o,"GeneratorFunction")),t.prototype=Object.create(f),t}return u.prototype=l,Ee(f,"constructor",l),Ee(l,"constructor",u),u.displayName="GeneratorFunction",Ee(l,o,"GeneratorFunction"),Ee(f),Ee(f,o,"Generator"),Ee(f,n,function(){return this}),Ee(f,"toString",function(){return"[object Generator]"}),(xe=function(){return{w:i,m:p}})()}function Ee(t,e,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}Ee=function(t,e,r,n){function i(e,r){Ee(t,e,function(t){return this._invoke(e,r,t)})}e?o?o(t,e,{value:r,enumerable:!n,configurable:!n,writable:!n}):t[e]=r:(i("next",0),i("throw",1),i("return",2))},Ee(t,e,r,n)}function je(t,e,r,n,o,i,a){try{var s=t[i](a),u=s.value}catch(t){return void r(t)}s.done?e(u):Promise.resolve(u).then(n,o)}function Ie(t,e){for(var r=0;r1&&void 0!==o[1]?o[1]:{},n=we(this.OTLPTransportOptions,"POST"),t.a(2,this._postPromise({accessToken:this.accessToken,options:n,payload:e,headers:r}))},t,this)}),o=function(){var t=this,e=arguments;return new Promise(function(r,o){var i=n.apply(t,e);function a(t){je(i,r,o,a,s,"next",t)}function s(t){je(i,r,o,a,s,"throw",t)}a(void 0)})},function(t){return o.apply(this,arguments)})},{key:"buildJsonPayload",value:function(t,e){var r,n=be(t);return(r=this.truncation?this.truncation.truncate(n):m(n)).error?(e&&e(r.error),null):r.value}},{key:"postJsonPayload",value:function(t,e){var r=we(this.transportOptions,"POST");this.transport.postJsonPayload(this.accessToken,r,t,e)}},{key:"configure",value:function(t){var e=this.options;return this.options=A(e,t),this.transportOptions=Ce(this.options,this.url),this.OTLPTransportOptions=Le(this.options,this.url),void 0!==this.options.accessToken&&(this.accessToken=this.options.accessToken),this}}],e&&Ie(t.prototype,e),r&&Ie(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r,n,o}();function Ce(t,e){return ge(t,Pe,e)}function Le(t,e){var r;return ge(t=Se(Se({},t),{},{endpoint:null===(r=t.tracing)||void 0===r?void 0:r.endpoint}),Ae,e)}var qe=Re,Ne="3.0.0",De="api.rollbar.com/api/1/item/",Me="debug",Ue="debug",He="error",Fe=/(^|@)\S+:\d+/,Je=/^\s*at .*(\S+:\d+|\(native\))/m,Ve=/^(eval@)?(\[native code\])?$/;function Be(t,e){if(void 0!==t.stacktrace||void 0!==t["opera#sourceloc"])return function(t,e){return!t.stacktrace||t.message.includes("\n")&&t.message.split("\n").length>t.stacktrace.split("\n").length?function(t,e){for(var r=/Line (\d+).*script (?:in )?(\S+)/i,n=t.message.split("\n"),o=[],i=2,a=n.length;i/,"$2").replace(/\([^)]*\)/g,"")||void 0;return o.match(/\(([^)]*)\)/)&&(e=o.replace(/^[^(]+\(([^)]*)\)$/,"$1")),{function:i,args:void 0===e||"[arguments not available]"===e?void 0:e.split(","),file:n[0],line:n[1]?+n[1]:void 0,col:n[2]?+n[2]:void 0,raw:t}})}(t,e):function(t,e){for(var r=/Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i,n=t.stacktrace.split("\n"),o=[],i=0,a=n.length;i"].includes(n[0])?void 0:n[0],line:n[1]?+n[1]:void 0,col:n[2]?+n[2]:void 0,raw:t}})}function ze(t,e){return $e(t.split("\n").filter(function(t){return!t.match(Ve)}),e).map(function(t){if(t.includes(" > eval")&&(t=t.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),t.includes("@")||t.includes(":")){var e=/(([^\n\r"\u2028\u2029]*".[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*(?:@[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*)*(?:[\n\r\u2028\u2029][^@]*)?)?[^@]*)@/,r=t.match(e),n=r&&r[1]?r[1]:void 0,o=We(t.replace(e,""));return{function:n,file:o[0],line:o[1]?+o[1]:void 0,col:o[2]?+o[2]:void 0,raw:t}}return{function:t}})}function Xe(t){return t.map(function(t){return{functionName:t.function,args:t.args,fileName:t.file,lineNumber:t.line,columnNumber:t.col,source:t.raw}})}var Ze=new RegExp("^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): ");function Qe(){return null}function Ke(t){var e={};return e._stackFrame=t,e.url=t.fileName,e.line=t.lineNumber,e.func=t.functionName,e.column=t.columnNumber,e.args=t.args,e.context=null,e}function Ye(t,e){return{stack:function(){var r=[];e=e||0;try{r=function(t,e){return Xe(Be(t,e))}(t)}catch(t){r=[]}for(var n=[],o=e;o=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function nr(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);rthis.options.maxRetries&&(o=!1))}o?this._retryApiRequest(r,n):n(e)}},{key:"_retryApiRequest",value:function(t,e){var r=this;this.retryQueue.push({item:t,callback:e}),this.retryHandle||(this.retryHandle=setInterval(function(){for(;r.retryQueue.length;){var t=r.retryQueue.shift();r._makeApiRequest(t.item,t.callback)}},this.options.retryInterval))}},{key:"_dequeuePendingRequest",value:function(t){var e=this.pendingRequests.indexOf(t);-1!==e&&(this.pendingRequests.splice(e,1),this._maybeCallWait())}},{key:"_maybeLog",value:function(t,e){if(this.logger&&this.options.verbose){var r=e||j(t,"body.trace.exception.message")||j(t,"body.trace_chain.0.exception.message");if(r)return void this.logger.error(r);(r=j(t,"body.message.body"))&&this.logger.log(r)}}},{key:"_maybeCallWait",value:function(){return!(!s(this.waitCallback)||0!==this.pendingItems.length||0!==this.pendingRequests.length||(this.waitIntervalID&&(this.waitIntervalID=clearInterval(this.waitIntervalID)),this.waitCallback(),0))}}],r&&dr(e.prototype,r),n&&dr(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r,n}();yr=br,mr=["ECONNRESET","ENOTFOUND","ESOCKETTIMEDOUT","ETIMEDOUT","ECONNREFUSED","EHOSTUNREACH","EPIPE","EAI_AGAIN"],(vr=hr(vr="RETRIABLE_ERRORS"))in yr?Object.defineProperty(yr,vr,{value:mr,enumerable:!0,configurable:!0,writable:!0}):yr[vr]=mr;var gr=br;function wr(t){return wr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},wr(t)}function kr(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.startTime=Date.now(),this.counter=0,this.perMinCounter=0,this.platform=null,this.platformOptions={},this.configureGlobal(e)}return function(t,e,r){return e&&kr(t.prototype,e),r&&kr(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}(t,[{key:"configureGlobal",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.startTime,n=e.maxItems,o=e.itemsPerMinute;void 0!==r&&(t.globalSettings.startTime=r),void 0!==n&&(t.globalSettings.maxItems=n),void 0!==o&&(t.globalSettings.itemsPerMinute=o)}},{key:"shouldSend",value:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now(),n=r-this.startTime;(n<0||n>=6e4)&&(this.startTime=r,this.perMinCounter=0);var o=t.globalSettings.maxItems,i=t.globalSettings.itemsPerMinute;if(Or(e,o,this.counter))return xr(this.platform,this.platformOptions,"".concat(o," max items reached"),!1);if(Or(e,i,this.perMinCounter))return xr(this.platform,this.platformOptions,"".concat(i," items per minute reached"),!1);this.counter+=1,this.perMinCounter+=1;var a=!Or(e,o,this.counter),s=a,u=a&&!Or(e,i,this.perMinCounter);return xr(this.platform,this.platformOptions,null,u,o,i,s)}},{key:"setPlatformOptions",value:function(t,e){this.platform=t,this.platformOptions=e}}])}();function Or(t,e,r){return!t.ignoreRateLimit&&e>=1&&r>e}function xr(t,e,r,n,o,i,a){var s=null,u=r?new Error(r):null;return u||n||(s=function(t,e,r,n,o){var i=e.environment||e.payload&&e.payload.environment,a=o?"item per minute limit reached, ignoring errors until timeout":"maxItems has been hit, ignoring errors until reset.",s={body:{message:{body:a,extra:{maxItems:r,itemsPerMinute:n}}},language:"javascript",environment:i,notifier:{version:e.notifier&&e.notifier.version||e.version}};"browser"===t?(s.platform="browser",s.framework="browser-js",s.notifier.name="rollbar-browser-js"):"server"===t?(s.framework=e.framework||"node-js",s.notifier.name=e.notifier.name):"react-native"===t&&(s.framework=e.framework||"react-native",s.notifier.name=e.notifier.name);return s}(t,e,o,i,a)),{error:u,shouldSend:n,payload:s}}!function(t,e,r){(e=Sr(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r}(_r,"globalSettings",{startTime:Date.now(),maxItems:void 0,itemsPerMinute:void 0});var Er=_r;function jr(t,e,r,n,o,i,a){this.options=A(t),this.logger=r,jr.rateLimiter.configureGlobal(this.options),jr.rateLimiter.setPlatformOptions(a,this.options),this.api=e,this.queue=new gr(jr.rateLimiter,e,r,this.options,i),this.tracing=o;var s=this.options.tracer||null;Tr(s)?(this.tracer=s,this.options.tracer="opentracing-tracer-enabled",this.options._configuredOptions.tracer="opentracing-tracer-enabled"):this.tracer=null,this.notifier=new fr(this.queue,this.options),this.telemeter=n,Ir(t),this.lastError=null,this.lastErrorHash="none"}function Ir(t){t.stackTraceLimit&&(Error.stackTraceLimit=t.stackTraceLimit)}function Tr(t){if(!t)return!1;if(!t.scope||"function"!=typeof t.scope)return!1;var e=t.scope();return!(!e||!e.active||"function"!=typeof e.active)}jr.rateLimiter=new Er({maxItems:0,itemsPerMinute:60}),jr.prototype.global=function(t){return jr.rateLimiter.configureGlobal(t),this},jr.prototype.configure=function(t,e){var r=this.options,n={};e&&(n={payload:e}),this.options=A(r,t,n);var o=this.options.tracer||null;return Tr(o)?(this.tracer=o,this.options.tracer="opentracing-tracer-enabled",this.options._configuredOptions.tracer="opentracing-tracer-enabled"):this.tracer=null,this.notifier&&this.notifier.configure(this.options),this.telemeter&&this.telemeter.configure(this.options),Ir(t),this.global(this.options),Tr(t.tracer)&&(this.tracer=t.tracer),this},jr.prototype.log=function(t){var e=this._defaultLogLevel();return this._log(e,t)},jr.prototype.debug=function(t){this._log("debug",t)},jr.prototype.info=function(t){this._log("info",t)},jr.prototype.warn=function(t){this._log("warning",t)},jr.prototype.warning=function(t){this._log("warning",t)},jr.prototype.error=function(t){this._log("error",t)},jr.prototype.critical=function(t){this._log("critical",t)},jr.prototype.wait=function(t){this.queue.wait(t)},jr.prototype.captureEvent=function(t,e,r){return this.telemeter&&this.telemeter.captureEvent(t,e,r)},jr.prototype.captureDomContentLoaded=function(t){return this.telemeter&&this.telemeter.captureDomContentLoaded(t)},jr.prototype.captureLoad=function(t){return this.telemeter&&this.telemeter.captureLoad(t)},jr.prototype.buildJsonPayload=function(t){return this.api.buildJsonPayload(t)},jr.prototype.sendJsonPayload=function(t){this.api.postJsonPayload(t)},jr.prototype._log=function(t,e){var r;if(e.callback&&(r=e.callback,delete e.callback),this.options.ignoreDuplicateErrors&&this._sameAsLastError(e)){if(r){var n=new Error("ignored identical item");n.item=e,r(n)}}else try{e.level=e.level||t,this._addItemAttributes(e),this._addTracingInfo(e);var o=this.telemeter;o&&(o._captureRollbarItem(e),e.telemetryEvents=o.copyEvents()||[]),this.notifier.log(e,r)}catch(t){r&&r(t),this.logger.error(t)}},jr.prototype._addItemAttributes=function(t){var e,r,n=null===(e=this.tracing)||void 0===e?void 0:e.getSpan(),o=[{key:"session_id",value:null===(r=this.tracing)||void 0===r?void 0:r.sessionId},{key:"span_id",value:null==n?void 0:n.spanId},{key:"trace_id",value:null==n?void 0:n.traceId}];t._isUncaught&&o.push({key:"is_uncaught",value:"true"}),E(t.data,o),null==n||n.addEvent("rollbar.occurrence",[{key:"rollbar.occurrence.uuid",value:t.uuid}])},jr.prototype._defaultLogLevel=function(){return this.options.logLevel||"debug"},jr.prototype._sameAsLastError=function(t){if(!t._isUncaught)return!1;var e=function(t){var e=t.message||"",r=(t.err||{}).stack||String(t.err);return e+"::"+r}(t);return this.lastErrorHash===e||(this.lastError=t.err,this.lastErrorHash=e,!1)},jr.prototype._addTracingInfo=function(t){if(this.tracer){var e=this.tracer.scope().active();if(function(t){if(!t||!t.context||"function"!=typeof t.context)return!1;var e=t.context();if(!e||!e.toSpanId||!e.toTraceId||"function"!=typeof e.toSpanId||"function"!=typeof e.toTraceId)return!1;return!0}(e)){e.setTag("rollbar.error_uuid",t.uuid),e.setTag("rollbar.has_error",!0),e.setTag("error",!0),e.setTag("rollbar.item_url","https://rollbar.com/item/uuid/?uuid=".concat(t.uuid)),e.setTag("rollbar.occurrence_url","https://rollbar.com/occurrence/uuid/?uuid=".concat(t.uuid));var r=e.context().toSpanId(),n=e.context().toTraceId();t.custom?(t.custom.opentracing_span_id=r,t.custom.opentracing_trace_id=n):t.custom={opentracing_span_id:r,opentracing_trace_id:n}}}};var Pr=jr;function Ar(t,e,r){t._isUncaught&&(t.data._isUncaught=!0),t._originalArgs&&(t.data._originalArgs=t._originalArgs),r(null,t)}function Rr(t,e,r){var n=e.payload||{};n.body&&delete n.body,t.data=A(t.data,n),r(null,t)}function Cr(t,e,r){t.telemetryEvents&&I(t,"data.body.telemetry",t.telemetryEvents),r(null,t)}function Lr(t,e,r){if(t.message){var n="data.body.trace_chain.0",o=j(t,n);if(o||(o=j(t,n="data.body.trace")),o){if(!o.exception||!o.exception.description)return I(t,n+".exception.description",t.message),void r(null,t);I(t,n+".extra",A(j(t,n+".extra")||{},{message:t.message}))}r(null,t)}else r(null,t)}function qr(t){return function(e,r,n){var o,a=A(e),l=null;try{s(r.transform)&&(l=r.transform(a.data,e))}catch(o){return r.transform=null,t.error("Error while calling custom transform() function. Removing custom transform().",o),void n(null,e)}u(o=l)&&i(o.then,"function")?l.then(function(t){t&&(a.data=t),n(null,a)},function(t){n(t,e)}):n(null,a)}}function Nr(t,e,r){if(!e.sendConfig)return r(null,t);var n=j(t,"data.custom")||{};n._rollbarConfig=e,t.data.custom=n,r(null,t)}function Dr(t,e){s(t[e])&&(t[e]=t[e].toString())}function Mr(t,e,r){var n=e._configuredOptions;Dr(n,"transform"),Dr(n,"checkIgnore"),Dr(n,"onSendCallback"),delete n.accessToken,t.data.notifier.configured_options=n,r(null,t)}function Ur(t,e,r){var n=A(t.notifier.client.notifier.diagnostic,t.diagnostic);if(j(t,"err._isAnonymous")&&(n.is_anonymous=!0),t._isUncaught&&(n.is_uncaught=t._isUncaught),t.err)try{n.raw_error={message:t.err.message,name:t.err.name,constructor_name:t.err.constructor&&t.err.constructor.name,filename:t.err.fileName,line:t.err.lineNumber,column:t.err.columnNumber,stack:t.err.stack}}catch(t){n.raw_error={failed:String(t)}}t.data.notifier.diagnostic=A(t.data.notifier.diagnostic,n),r(null,t)}function Hr(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:null)||t.stackInfo).stack;return e&&0===e.length&&t._unhandledStackInfo&&t._unhandledStackInfo.stack&&(e=t._unhandledStackInfo.stack),e}function Qr(t,e,r){var n=t&&t.data.description,o=t&&t.custom,i=Zr(t,e),a=er.guessErrorClass(e.message),s={exception:{class:Kr(e,a[0],r),message:a[1]}};if(n&&(s.exception.description=n),i){var u,l,c,f,p,d,y,v;for(0===i.length&&(s.exception.stack=e.rawStack,s.exception.raw=String(e.rawException)),s.frames=[],y=0;yt.length)&&(e=t.length);for(var r=0,n=Array(e);r=400&&t.status<600}(e)){if(403===e.status){var o=t.value&&t.value.message;Pt.error(o)}u(new Error(String(e.status)))}else{u(an("XHR response had no status code (likely connection failure)"))}}}catch(t){var a;a=t&&t.stack?t:new Error(t),u(a)}};if(e.open(o,n,!0),e.setRequestHeader){e.setRequestHeader("Content-Type","application/json"),e.setRequestHeader("X-Rollbar-Access-Token",r);for(var d=0,h=Object.entries(null!=s?s:{});ds)?(a=e.path,e.path=a.substring(0,s)+i+"&"+a.substring(s+1)):-1!==u?(a=e.path,e.path=a.substring(0,u)+i+a.substring(u)):e.path=e.path+i}(t,e,r);var i=v(e);this._makeZoneRequest({accessToken:t,url:i,method:"GET",callback:n,requestFactory:o,timeout:e.timeout,transport:e.transport})},un.prototype.post=function(t){var e,r=t.accessToken,n=t.options,o=t.payload,i=t.headers,a=t.callback,u=t.requestFactory;if(a&&s(a)||(a=function(){}),!o)return a(new Error("Cannot send empty request"));if((e=this.truncation&&o.body?this.truncation.truncate(o):m(o)).error)return a(e.error);var l=v(n);this._makeZoneRequest({accessToken:r,url:l,method:"POST",payload:e.value,headers:i,callback:a,requestFactory:u,timeout:n.timeout,transport:n.transport})},un.prototype.postJsonPayload=function(t,e,r,n,o){n&&s(n)||(n=function(){});var i=v(e);this._makeZoneRequest({accessToken:t,url:i,method:"POST",payload:r,callback:n,requestFactory:o,timeout:e.timeout,transport:e.transport})},un.prototype._makeZoneRequest=function(){var t=this,e="undefined"!=typeof window&&window||"undefined"!=typeof self&&self,r=e&&e.Zone&&e.Zone.root,n=Array.prototype.slice.call(arguments);r?r.run(function(){t._makeRequest.apply(void 0,n)}):this._makeRequest.apply(void 0,n)},un.prototype._makeRequest=function(t){var e=t.payload,r=t.callback,n=t.transport;if("undefined"!=typeof RollbarProxy)return function(t,e){(new RollbarProxy).sendJsonPayload(t,function(t){},function(t){e(new Error(t))})}(e,r);"fetch"===n?rn(t):sn(t)};var ln,cn=un;function fn(t){var e,r,n={protocol:null,auth:null,host:null,path:null,hash:null,href:t,hostname:null,port:null,pathname:null,search:null,query:null};if(-1!==(e=t.indexOf("//"))?(n.protocol=t.substring(0,e),r=e+2):r=0,-1!==(e=t.indexOf("@",r))&&(n.auth=t.substring(r,e),r=e+1),-1===(e=t.indexOf("/",r))){if(-1===(e=t.indexOf("?",r)))return-1===(e=t.indexOf("#",r))?n.host=t.substring(r):(n.host=t.substring(r,e),n.hash=t.substring(e)),n.hostname=n.host.split(":")[0],n.port=n.host.split(":")[1],n.port&&(n.port=parseInt(n.port,10)),n;n.host=t.substring(r,e),n.hostname=n.host.split(":")[0],n.port=n.host.split(":")[1],n.port&&(n.port=parseInt(n.port,10)),r=e}else n.host=t.substring(r,e),n.hostname=n.host.split(":")[0],n.port=n.host.split(":")[1],n.port&&(n.port=parseInt(n.port,10)),r=e;if(-1===(e=t.indexOf("#",r))?n.path=t.substring(r):(n.path=t.substring(r,e),n.hash=t.substring(e)),n.path){var o=n.path.split("?");n.pathname=o[0],n.query=o[1],n.search=n.query?"?"+n.query:null}return n}function pn(t){return pn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},pn(t)}function dn(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function hn(t){for(var e=1;e0&&I(e,"data.request",o),n(null,e)}}(r)).addTransform(function(t){return function(e,r,n){if(!t)return n(null,e);var o=t.navigator||{},i=t.screen||{};I(e,"data.client",{runtime_ms:e.timestamp-t._rollbarStartTime,timestamp:Math.round(e.timestamp/1e3),javascript:{browser:o.userAgent,language:o.language,cookie_enabled:o.cookieEnabled,screen:{width:i.width,height:i.height}}}),n(null,e)}}(r)).addTransform(function(t){return function(e,r,n){if(!t||!t.navigator)return n(null,e);for(var o,i=[],a=t.navigator.plugins||[],s=0,u=a.length;s=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function In(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=0;i--){if(e=Pn(t[i]),r=o+3*n.length+e.length,i=83){n.unshift("...");break}n.unshift(e),o+=e.length}return n.join(" > ")}(function(t){for(var e,r=[],n=0;t&&n<5&&(e=An(t))&&"html"!==e.tagName;n++)r.unshift(e),t=t.parentNode;return r}(t))}function Pn(t){if(!t||!t.tagName)return"";var e=[t.tagName];t.id&&e.push("#"+t.id),t.classes&&e.push("."+t.classes.join("."));var r,n=jn(t.attributes);try{for(n.s();!(r=n.n()).done;){var o=r.value;e.push("["+o.key+'="'+o.value+'"]')}}catch(t){n.e(t)}finally{n.f()}return e.join("")}function An(t){if(!t||!t.tagName)return null;var e,r={};r.tagName=t.tagName.toLowerCase(),t.id&&(r.id=t.id),(e=t.className)&&"string"==typeof e&&(r.classes=e.split(/\s+/));r.attributes=[];for(var n=0,o=["type","name","title","alt"];n=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function Dn(t,e){if(t){if("string"==typeof t)return Mn(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Mn(t,e):void 0}}function Mn(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r3)){var e=T();o.__rollbar_xhr.end_time_ms=e;var r=null;if(o.__rollbar_xhr.response_content_type=o.getResponseHeader("Content-Type"),t.autoInstrument.networkResponseHeaders){var i=t.autoInstrument.networkResponseHeaders;r={};try{var a;if(!0===i){var s=o.getAllResponseHeaders();if(s){var u,l,c,f=Nn(s.trim().split(/[\r\n]+/));try{for(f.s();!(c=f.n()).done;){a=(u=c.value.split(": ")).shift(),l=u.join(": "),r[a]=l}}catch(t){f.e(t)}finally{f.f()}}}else{var p,d=Nn(i);try{for(d.s();!(p=d.n()).done;){var h=p.value;r[h]=o.getResponseHeader(h)}}catch(t){d.e(t)}finally{d.f()}}}catch(t){}}var y=null;if(t.autoInstrument.networkResponseBody)try{y=o.responseText}catch(t){}var v=null;(y||r)&&(v={},y&&(t.isJsonContentType(o.__rollbar_xhr.response_content_type)?v.body=t.scrubJson(y):v.body=y),r&&(v.headers=r)),v&&(o.__rollbar_xhr.response=v);try{var m=o.status;m=1223===m?204:m,o.__rollbar_xhr.status_code=m,t.addOtelNetworkResponse(o.__rollbar_event,e,m),o.__rollbar_event.level=t.telemeter.levelFromStatus(m),t.errorOnHttpStatus(o.__rollbar_xhr)}catch(t){}}}return e("onload",o),e("onerror",o),e("onprogress",o),"onreadystatechange"in o&&s(o.onreadystatechange)?En(o,"onreadystatechange",function(e){return t.rollbar.wrap(e,void 0,i)}):o.onreadystatechange=i,o.__rollbar_xhr&&t.trackHttpErrors()&&(o.__rollbar_xhr.stack=(new Error).stack),r.apply(this,arguments)}},this.replacements,"network")}"fetch"in this._window&&En(this._window,"fetch",function(e){return function(r,n){var o,a=Array.prototype.slice.call(arguments),s=a[0],u="GET",l=Vn(s);i(s,"string")||l?o=l?s.toString():s:s&&(o=s.url,s.method&&(u=s.method)),a[1]&&a[1].method&&(u=a[1].method);var c={method:u,url:o,status_code:null,start_time_ms:T(),end_time_ms:null};if(a[1]&&a[1].headers){var f=xn(a[1].headers);c.request_content_type=f.get("Content-Type"),t.autoInstrument.networkRequestHeaders&&(c.request_headers=t.fetchHeaders(f,t.autoInstrument.networkRequestHeaders))}t.autoInstrument.networkRequestBody&&(a[1]&&a[1].body?c.request=a[1].body:a[0]&&!i(a[0],"string")&&a[0].body&&(c.request=a[0].body));var p=t.captureNetwork(c,"fetch",void 0);return t.trackHttpErrors()&&(c.stack=(new Error).stack),e.apply(this,a).then(function(e){var r=T();c.end_time_ms=r,c.status_code=e.status,t.addOtelNetworkResponse(p,r,e.status),c.response_content_type=e.headers.get("Content-Type");var n=null;t.autoInstrument.networkResponseHeaders&&(n=t.fetchHeaders(e.headers,t.autoInstrument.networkResponseHeaders));var o=null;return t.autoInstrument.networkResponseBody&&"function"==typeof e.text&&(o=e.clone().text()),(n||o)&&(c.response={},o&&("function"==typeof o.then?o.then(function(e){e&&t.isJsonContentType(c.response_content_type)?c.response.body=t.scrubJson(e):c.response.body=e}):c.response.body=o),n&&(c.response.headers=n)),t.errorOnHttpStatus(c),e})}},this.replacements,"network")}},{key:"captureNetwork",value:function(t,e,r){return t.request&&this.isJsonContentType(t.request_content_type)&&(t.request=this.scrubJson(t.request)),this.telemeter.captureNetwork(t,e,r)}},{key:"isJsonContentType",value:function(t){return!!(t&&i(t,"string")&&t.toLowerCase().includes("json"))}},{key:"addOtelNetworkResponse",value:function(t,e,r){t.otelAttributes&&(t.otelAttributes["response.timeUnixNano"]=(1e6*e).toString(),t.otelAttributes.statusCode=r)}},{key:"scrubJson",value:function(t){return JSON.stringify(M(JSON.parse(t),this.options.scrubFields))}},{key:"fetchHeaders",value:function(t,e){var r={};try{if(!0===e){if("function"==typeof t.entries)for(var n=t.entries(),o=n.next();!o.done;)r[o.value[0]]=o.value[1],o=n.next()}else{var i,a=Nn(e);try{for(a.s();!(i=a.n()).done;){var s=i.value;r[s]=t.get(s)}}catch(t){a.e(t)}finally{a.f()}}}catch(t){}return r}},{key:"trackHttpErrors",value:function(){return this.autoInstrument.networkErrorOnHttp5xx||this.autoInstrument.networkErrorOnHttp4xx||this.autoInstrument.networkErrorOnHttp0}},{key:"errorOnHttpStatus",value:function(t){var e=t.status_code;if(e>=500&&this.autoInstrument.networkErrorOnHttp5xx||e>=400&&this.autoInstrument.networkErrorOnHttp4xx||0===e&&this.autoInstrument.networkErrorOnHttp0){var r=new Error("HTTP request failed with Status "+e);r.stack=t.stack,this.rollbar.error(r,{skipFrames:1})}}},{key:"deinstrumentConsole",value:function(){for(var t;this.replacements.log.length;)t=this.replacements.log.shift(),this._window.console[t[0]]=t[1]}},{key:"instrumentConsole",value:function(){var t;if(null!==(t=this._window)&&void 0!==t&&null!==(t=t.console)&&void 0!==t&&t.log){var e=this,r=this._window.console;try{for(var n=0,o=["debug","info","warn","error","log"];n500&&(n=n.substr(0,497)+"...");break;case"null":n="null";break;case"undefined":n="undefined";break;case"symbol":n=n.toString()}o.push(n)}return o.join(" ")}(t);e.telemeter.captureLog(r,i,null,T()),n&&Function.prototype.apply.call(n,o,t)},e.replacements.log.push([t,n])}}},{key:"deinstrumentDom",value:function(){this.removeListeners("dom")}},{key:"instrumentDom",value:function(){var t=this;this.addListener("dom",this._window,["click","dblclick","contextmenu"],function(e){return t.handleEvent("click",e)}),this.addListener("dom",this._window,["dragstart","dragend","dragenter","dragleave","drop"],function(e){return t.handleEvent("dragdrop",e)}),this.addListener("dom",this._window,["blur","focus"],function(e){return t.handleEvent("focus",e)}),this.addListener("dom",this._window,["submit","invalid"],function(e){return t.handleEvent("form",e)}),this.addListener("dom",this._window,["input","change"],function(e){return t.handleEvent("input",e)}),this.addListener("dom",this._window,["resize"],function(e){return t.handleEvent("resize",e)}),this.addListener("dom",this._document,["DOMContentLoaded"],function(e){return t.handleEvent("contentLoaded",e)})}},{key:"handleEvent",value:function(t,e){try{return{click:this.handleClick,dragdrop:this.handleDrag,focus:this.handleFocus,form:this.handleForm,input:this.handleInput,resize:this.handleResize,contentLoaded:this.handleContentLoaded}[t].call(this,e)}catch(r){Pt.log("".concat(t," handler error"),e,r,r.stack)}}},{key:"handleContentLoaded",value:function(t){this.rollbar.triggerReplay({type:"navigation",path:new URL(this._location.href).pathname})}},{key:"handleClick",value:function(t){var e,r=null===(e=t.target)||void 0===e?void 0:e.tagName.toLowerCase();["input","select","textarea"].includes(r)||this.telemeter.captureClick({type:t.type,isSynthetic:!t.isTrusted,element:Tn(t.target),timestamp:T()})}},{key:"handleFocus",value:function(t){var e,r=t.type,n=null!==(e=t.target)&&void 0!==e&&e.window?"window":Tn(t.target);this.telemeter.captureFocus({type:r,isSynthetic:!t.isTrusted,element:n,timestamp:T()})}},{key:"handleForm",value:function(t){}},{key:"handleResize",value:function(t){var e=window.screen.width/window.innerWidth;this.telemeter.captureResize({type:t.type,isSynthetic:!t.isTrusted,width:window.innerWidth,height:window.innerHeight,textZoomRatio:e,timestamp:T()})}},{key:"handleDrag",value:function(t){var e,r,n,o,i,a,s=t.type;if("drop"===s){e=[],r=[];var u,l=Nn([].concat(Cn(t.dataTransfer.files),Cn(t.dataTransfer.items)));try{for(l.s();!(u=l.n()).done;){var c=u.value;c.kind&&c.type&&(e.push(c.kind),r.push(c.type))}}catch(t){l.e(t)}finally{l.f()}}["drop","dragstart"].includes(s)&&(n=null===(i=t.dataTransfer)||void 0===i?void 0:i.dropEffect,o=null===(a=t.dataTransfer)||void 0===a?void 0:a.effectAllowed);this.telemeter.captureDragDrop({type:s,isSynthetic:!t.isTrusted,element:Tn(t.target),dropEffect:n,effectAllowed:o,kinds:JSON.stringify(e),mediaTypes:JSON.stringify(r),timestamp:T()})}},{key:"scrubInputValue",value:function(t,e,r,n){var o="******";if("password"===n)return o;if(this.scrubTelemetryInputs)return o;var i=An(e);if(this.telemetryScrubber){if(this.telemetryScrubber(i))return o}else if(this.defaultValueScrubber(i))return o;return function(t,e,r){try{var n,o=jn(e);try{for(o.s();!(n=o.n()).done;){var i=n.value;if("string"==typeof i){if(t.classList.contains(i))return!0}else{var a,s=jn(t.classList);try{for(s.s();!(a=s.n()).done;){var u=a.value;if(i.test(u))return!0}}catch(t){s.e(t)}finally{s.f()}}}}catch(t){o.e(t)}finally{o.f()}var l,c=jn(r);try{for(c.s();!(l=c.n()).done;){var f=l.value;if(t.matches(f))return!0}}catch(t){c.e(t)}finally{c.f()}}catch(t){}return!1}(e,this.scrubClasses,this.scrubSelectors)?o:this.maskInputOptions[r.toLowerCase()]||this.maskInputOptions[n]?this.maskInputFn?this.maskInputFn(t,e):o:t}},{key:"handleInput",value:function(t){var e,r,n,o,i=t.type,a=null===(e=t.target)||void 0===e?void 0:e.tagName.toLowerCase(),s=null===(r=t.target)||void 0===r?void 0:r.value,u=(null===(n=t.target)||void 0===n||null===(n=n.attributes)||void 0===n||null===(n=n.type)||void 0===n?void 0:n.value)||(null===(o=t.target)||void 0===o?void 0:o.type);switch(void 0!==s&&(s=this.scrubInputValue(s,t.target,a,u)),i){case"input":if(["radio","checkbox"].includes(u))return;["select","textarea"].includes(a)&&(u=a);break;case"change":if(!["radio","checkbox"].includes(u))return;var l;if("checkbox"===u)s=null===(l=t.target)||void 0===l?void 0:l.checked}this.telemeter.captureInput({type:u,isSynthetic:!t.isTrusted,element:Tn(t.target),value:s,timestamp:T()})}},{key:"deinstrumentNavigation",value:function(){var t=this._window.chrome;!(t&&t.app&&t.app.runtime)&&this._window.history&&this._window.history.pushState&&Hn(this.replacements,"navigation")}},{key:"instrumentNavigation",value:function(){var t=this._window.chrome;if(!(t&&t.app&&t.app.runtime)&&this._window.history&&this._window.history.pushState){var e=this;En(this._window,"onpopstate",function(t){return function(){var r=e._location.href;e.handleUrlChange(e._lastHref,r),t&&t.apply(this,arguments)}},this.replacements,"navigation"),En(this._window.history,"pushState",function(t){return function(){var r=arguments.length>2?arguments[2]:void 0;return r&&e.handleUrlChange(e._lastHref,String(r)),t.apply(this,arguments)}},this.replacements,"navigation")}}},{key:"handleUrlChange",value:function(t,e){var r=fn(this._location.href),n=fn(e),o=fn(t);this._lastHref=e,r.protocol===n.protocol&&r.host===n.host&&(e=n.path+(n.hash||"")),r.protocol===o.protocol&&r.host===o.host&&(t=o.path+(o.hash||"")),this.telemeter.captureNavigation(t,e,null,T()),this.rollbar.triggerReplay({type:"navigation",path:e})}},{key:"instrumentConnectivity",value:function(){var t=this;this.addListener("connectivity",this._window,["online","offline"],function(e){return t.handleConnectivity(e)})}},{key:"handleConnectivity",value:function(t){var e=t.type;this.telemeter.captureConnectivityChange({type:e,isSynthetic:!t.isTrusted,timestamp:T()})}},{key:"handleCspEvent",value:function(t){var e="Security Policy Violation: blockedURI: "+t.blockedURI+", violatedDirective: "+t.violatedDirective+", effectiveDirective: "+t.effectiveDirective+", ";t.sourceFile&&(e+="location: "+t.sourceFile+", line: "+t.lineNumber+", col: "+t.columnNumber+", "),e+="originalPolicy: "+t.originalPolicy,this.telemeter.captureLog(e,"error",null,T()),this.handleCspError(e)}},{key:"handleCspError",value:function(t){this.autoInstrument.errorOnContentSecurityPolicy&&this.rollbar.error(t)}},{key:"deinstrumentContentSecurityPolicy",value:function(){this.removeListeners("contentsecuritypolicy")}},{key:"instrumentContentSecurityPolicy",value:function(){if("addEventListener"in this._document){var t=this.handleCspEvent.bind(this);this.addListener("contentsecuritypolicy",this._document,["securitypolicyviolation"],t)}}},{key:"addListener",value:function(t,e,r,n){var o=this;if(e.addEventListener){var i,a=Nn(r);try{var s=function(){var r=i.value,a={capture:!0,passive:!0};e.addEventListener(r,n,a,!0),o.eventRemovers[t].push(function(){e.removeEventListener(r,n,a)})};for(a.s();!(i=a.n()).done;)s()}catch(t){a.e(t)}finally{a.f()}}}},{key:"removeListeners",value:function(t){for(;this.eventRemovers[t].length;)this.eventRemovers[t].shift()()}}])}();function Vn(t){return"undefined"!=typeof URL&&t instanceof URL}var Bn=Jn;function Wn(t,e,r){if(l(e,"addEventListener")){for(var n=e.addEventListener;n._rollbarOldAdd&&n.belongsToShim;)n=n._rollbarOldAdd;var o=function(e,r,o){n.call(this,e,t.wrap(r),o)};o._rollbarOldAdd=n,o.belongsToShim=r,e.addEventListener=o;for(var i=e.removeEventListener;i._rollbarOldRemove&&i.belongsToShim;)i=i._rollbarOldRemove;var a=function(t,e,r){i.call(this,t,e&&e._rollbar_wrapped||e,r)};a._rollbarOldRemove=i,a.belongsToShim=r,e.removeEventListener=a}}var $n=function(t,e,r){if(t){var n,o,i="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".split(",");for(n=0;n qs)) {\n p = options.path;\n options.path = p.substring(0, qs) + query + '&' + p.substring(qs + 1);\n } else {\n if (h !== -1) {\n p = options.path;\n options.path = p.substring(0, h) + query + p.substring(h);\n } else {\n options.path = options.path + query;\n }\n }\n}\n\nfunction formatUrl(u, protocol) {\n protocol = protocol || u.protocol;\n if (!protocol && u.port) {\n if (u.port === 80) {\n protocol = 'http:';\n } else if (u.port === 443) {\n protocol = 'https:';\n }\n }\n protocol = protocol || 'https:';\n\n if (!u.hostname) {\n return null;\n }\n var result = protocol + '//' + u.hostname;\n if (u.port) {\n result = result + ':' + u.port;\n }\n if (u.path) {\n result = result + u.path;\n }\n return result;\n}\n\nfunction stringify(obj, backup) {\n var value, error;\n try {\n value = JSON.stringify(obj);\n } catch (jsonError) {\n if (backup && isFunction(backup)) {\n try {\n value = backup(obj);\n } catch (backupError) {\n error = backupError;\n }\n } else {\n error = jsonError;\n }\n }\n return { error: error, value: value };\n}\n\nfunction maxByteSize(string) {\n // The transport will use utf-8, so assume utf-8 encoding.\n //\n // This minimal implementation will accurately count bytes for all UCS-2 and\n // single code point UTF-16. If presented with multi code point UTF-16,\n // which should be rare, it will safely overcount, not undercount.\n //\n // While robust utf-8 encoders exist, this is far smaller and far more performant.\n // For quickly counting payload size for truncation, smaller is better.\n\n var count = 0;\n var length = string.length;\n\n for (var i = 0; i < length; i++) {\n var code = string.charCodeAt(i);\n if (code < 128) {\n // up to 7 bits\n count = count + 1;\n } else if (code < 2048) {\n // up to 11 bits\n count = count + 2;\n } else if (code < 65536) {\n // up to 16 bits\n count = count + 3;\n }\n }\n\n return count;\n}\n\nfunction jsonParse(s) {\n var value, error;\n try {\n value = JSON.parse(s);\n } catch (e) {\n error = e;\n }\n return { error: error, value: value };\n}\n\nfunction makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n mode,\n backupMessage,\n errorParser,\n) {\n var location = {\n url: url || '',\n line: lineno,\n column: colno,\n };\n location.func = errorParser.guessFunctionName(location.url, location.line);\n location.context = errorParser.gatherContext(location.url, location.line);\n var href =\n typeof document !== 'undefined' &&\n document &&\n document.location &&\n document.location.href;\n var useragent =\n typeof window !== 'undefined' &&\n window &&\n window.navigator &&\n window.navigator.userAgent;\n return {\n mode: mode,\n message: error ? String(error) : message || backupMessage,\n url: href,\n stack: [location],\n useragent: useragent,\n };\n}\n\nfunction wrapCallback(logger, f) {\n return function (err, resp) {\n try {\n f(err, resp);\n } catch (e) {\n logger.error(e);\n }\n };\n}\n\nfunction nonCircularClone(obj) {\n var seen = [obj];\n\n function clone(obj, seen) {\n var value,\n name,\n newSeen,\n result = {};\n\n try {\n for (name in obj) {\n value = obj[name];\n\n if (value && (isType(value, 'object') || isType(value, 'array'))) {\n if (seen.includes(value)) {\n result[name] = 'Removed circular reference: ' + typeName(value);\n } else {\n newSeen = seen.slice();\n newSeen.push(value);\n result[name] = clone(value, newSeen);\n }\n continue;\n }\n\n result[name] = value;\n }\n } catch (e) {\n result = 'Failed cloning custom data: ' + e.message;\n }\n return result;\n }\n return clone(obj, seen);\n}\n\nfunction createItem(args, logger, notifier, requestKeys, lambdaContext) {\n var message, err, custom, callback, request;\n var arg;\n var extraArgs = [];\n var diagnostic = {};\n var argTypes = [];\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n argTypes.push(typ);\n switch (typ) {\n case 'undefined':\n break;\n case 'string':\n message ? extraArgs.push(arg) : (message = arg);\n break;\n case 'function':\n callback = wrapCallback(logger, arg);\n break;\n case 'date':\n extraArgs.push(arg);\n break;\n case 'error':\n case 'domexception':\n case 'exception': // Firefox Exception type\n err ? extraArgs.push(arg) : (err = arg);\n break;\n case 'object':\n case 'array':\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n err ? extraArgs.push(arg) : (err = arg);\n break;\n }\n if (requestKeys && typ === 'object' && !request) {\n for (var j = 0, len = requestKeys.length; j < len; ++j) {\n if (arg[requestKeys[j]] !== undefined) {\n request = arg;\n break;\n }\n }\n if (request) {\n break;\n }\n }\n custom ? extraArgs.push(arg) : (custom = arg);\n break;\n default:\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n err ? extraArgs.push(arg) : (err = arg);\n break;\n }\n extraArgs.push(arg);\n }\n }\n\n // if custom is an array this turns it into an object with integer keys\n if (custom) custom = nonCircularClone(custom);\n\n if (extraArgs.length > 0) {\n if (!custom) custom = nonCircularClone({});\n custom.extraArgs = nonCircularClone(extraArgs);\n }\n\n var item = {\n message: message,\n err: err,\n custom: custom,\n timestamp: now(),\n callback: callback,\n notifier: notifier,\n diagnostic: diagnostic,\n uuid: uuid4(),\n };\n\n item.data = item.data || {};\n\n setCustomItemKeys(item, custom);\n\n if (requestKeys && request) {\n item.request = request;\n }\n if (lambdaContext) {\n item.lambdaContext = lambdaContext;\n }\n item._originalArgs = args;\n item.diagnostic.original_arg_types = argTypes;\n return item;\n}\n\nfunction setCustomItemKeys(item, custom) {\n if (custom && custom.level !== undefined) {\n item.level = custom.level;\n delete custom.level;\n }\n if (custom && custom.skipFrames !== undefined) {\n item.skipFrames = custom.skipFrames;\n delete custom.skipFrames;\n }\n}\n\nfunction addErrorContext(item, errors) {\n var custom = item.data.custom || {};\n var contextAdded = false;\n\n try {\n for (var i = 0; i < errors.length; ++i) {\n if (errors[i].hasOwnProperty('rollbarContext')) {\n custom = merge(custom, nonCircularClone(errors[i].rollbarContext));\n contextAdded = true;\n }\n }\n\n // Avoid adding an empty object to the data.\n if (contextAdded) {\n item.data.custom = custom;\n }\n } catch (e) {\n item.diagnostic.error_context = 'Failed: ' + e.message;\n }\n}\n\nvar TELEMETRY_TYPES = [\n 'log',\n 'network',\n 'dom',\n 'navigation',\n 'error',\n 'manual',\n];\nvar TELEMETRY_LEVELS = ['critical', 'error', 'warning', 'info', 'debug'];\n\nfunction arrayIncludes(arr, val) {\n for (var k = 0; k < arr.length; ++k) {\n if (arr[k] === val) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction createTelemetryEvent(args) {\n var type, metadata, level;\n var arg;\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n switch (typ) {\n case 'string':\n if (!type && arrayIncludes(TELEMETRY_TYPES, arg)) {\n type = arg;\n } else if (!level && arrayIncludes(TELEMETRY_LEVELS, arg)) {\n level = arg;\n }\n break;\n case 'object':\n metadata = arg;\n break;\n default:\n break;\n }\n }\n var event = {\n type: type || 'manual',\n metadata: metadata || {},\n level: level,\n };\n\n return event;\n}\n\nfunction addItemAttributes(itemData, attributes) {\n itemData.attributes = itemData.attributes || [];\n for (const a of attributes) {\n if (a.value === undefined) {\n continue;\n }\n itemData.attributes.push(a);\n }\n}\n\n/*\n * get - given an obj/array and a keypath, return the value at that keypath or\n * undefined if not possible.\n *\n * @param obj - an object or array\n * @param path - a string of keys separated by '.' such as 'plugin.jquery.0.message'\n * which would correspond to 42 in `{plugin: {jquery: [{message: 42}]}}`\n */\nfunction get(obj, path) {\n if (!obj) {\n return undefined;\n }\n var keys = path.split('.');\n var result = obj;\n try {\n for (var i = 0, len = keys.length; i < len; ++i) {\n result = result[keys[i]];\n }\n } catch (e) {\n result = undefined;\n }\n return result;\n}\n\nfunction set(obj, path, value) {\n if (!obj) {\n return;\n }\n\n // Prevent prototype pollution by setting the prototype to null.\n Object.setPrototypeOf(obj, null);\n\n var keys = path.split('.');\n var len = keys.length;\n if (len < 1) {\n return;\n }\n if (len === 1) {\n obj[keys[0]] = value;\n return;\n }\n try {\n var temp = obj[keys[0]] || {};\n var replacement = temp;\n for (var i = 1; i < len - 1; ++i) {\n temp[keys[i]] = temp[keys[i]] || {};\n temp = temp[keys[i]];\n }\n temp[keys[len - 1]] = value;\n obj[keys[0]] = replacement;\n } catch (e) {\n return;\n }\n}\n\nfunction formatArgsAsString(args) {\n var i, len, arg;\n var result = [];\n for (i = 0, len = args.length; i < len; ++i) {\n arg = args[i];\n switch (typeName(arg)) {\n case 'object':\n arg = stringify(arg);\n arg = arg.error || arg.value;\n if (arg.length > 500) {\n arg = arg.substr(0, 497) + '...';\n }\n break;\n case 'null':\n arg = 'null';\n break;\n case 'undefined':\n arg = 'undefined';\n break;\n case 'symbol':\n arg = arg.toString();\n break;\n }\n result.push(arg);\n }\n return result.join(' ');\n}\n\nfunction now() {\n if (Date.now) {\n return +Date.now();\n }\n return +new Date();\n}\n\nfunction filterIp(requestData, captureIp) {\n if (!requestData || !requestData['user_ip'] || captureIp === true) {\n return;\n }\n var newIp = requestData['user_ip'];\n if (!captureIp) {\n newIp = null;\n } else {\n try {\n var parts;\n if (newIp.indexOf('.') !== -1) {\n parts = newIp.split('.');\n parts.pop();\n parts.push('0');\n newIp = parts.join('.');\n } else if (newIp.indexOf(':') !== -1) {\n parts = newIp.split(':');\n if (parts.length > 2) {\n var beginning = parts.slice(0, 3);\n var slashIdx = beginning[2].indexOf('/');\n if (slashIdx !== -1) {\n beginning[2] = beginning[2].substring(0, slashIdx);\n }\n var terminal = '0000:0000:0000:0000:0000';\n newIp = beginning.concat(terminal).join(':');\n }\n } else {\n newIp = null;\n }\n } catch (e) {\n newIp = null;\n }\n }\n requestData['user_ip'] = newIp;\n}\n\nfunction handleOptions(current, input, payload, logger) {\n var result = merge(current, input, payload);\n result = updateDeprecatedOptions(result, logger);\n if (!input || input.overwriteScrubFields) {\n return result;\n }\n if (input.scrubFields) {\n result.scrubFields = (current.scrubFields || []).concat(input.scrubFields);\n }\n return result;\n}\n\nfunction updateDeprecatedOptions(options, logger) {\n if (options.hostWhiteList && !options.hostSafeList) {\n options.hostSafeList = options.hostWhiteList;\n options.hostWhiteList = undefined;\n logger && logger.log('hostWhiteList is deprecated. Use hostSafeList.');\n }\n if (options.hostBlackList && !options.hostBlockList) {\n options.hostBlockList = options.hostBlackList;\n options.hostBlackList = undefined;\n logger && logger.log('hostBlackList is deprecated. Use hostBlockList.');\n }\n return options;\n}\n\nexport {\n addParamsAndAccessTokenToPath,\n createItem,\n addErrorContext,\n createTelemetryEvent,\n addItemAttributes,\n filterIp,\n formatArgsAsString,\n formatUrl,\n get,\n handleOptions,\n isError,\n isFiniteNumber,\n isFunction,\n isIterable,\n isNativeFunction,\n isObject,\n isString,\n isType,\n isPromise,\n isBrowser,\n jsonParse,\n LEVELS,\n makeUnhandledStackInfo,\n merge,\n now,\n redact,\n sanitizeHref,\n sanitizeUrl,\n set,\n stringify,\n maxByteSize,\n typeName,\n uuid4,\n};\n","import * as _ from './utility.js';\n\n/*\n * RateLimiter - an object that encapsulates the logic for counting items sent to Rollbar\n *\n * @param options - the same options that are accepted by configureGlobal offered as a convenience\n */\nfunction RateLimiter(options) {\n this.startTime = _.now();\n this.counter = 0;\n this.perMinCounter = 0;\n this.platform = null;\n this.platformOptions = {};\n this.configureGlobal(options);\n}\n\nRateLimiter.globalSettings = {\n startTime: _.now(),\n maxItems: undefined,\n itemsPerMinute: undefined,\n};\n\n/*\n * configureGlobal - set the global rate limiter options\n *\n * @param options - Only the following values are recognized:\n * startTime: a timestamp of the form returned by (new Date()).getTime()\n * maxItems: the maximum items\n * itemsPerMinute: the max number of items to send in a given minute\n */\nRateLimiter.prototype.configureGlobal = function (options) {\n if (options.startTime !== undefined) {\n RateLimiter.globalSettings.startTime = options.startTime;\n }\n if (options.maxItems !== undefined) {\n RateLimiter.globalSettings.maxItems = options.maxItems;\n }\n if (options.itemsPerMinute !== undefined) {\n RateLimiter.globalSettings.itemsPerMinute = options.itemsPerMinute;\n }\n};\n\n/*\n * shouldSend - determine if we should send a given item based on rate limit settings\n *\n * @param item - the item we are about to send\n * @returns An object with the following structure:\n * error: (Error|null)\n * shouldSend: bool\n * payload: (Object|null)\n * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and\n * exactly one of error or payload will be non-null. If error is non-null, the returned Error will\n * describe the situation, but it means that we were already over a rate limit (either globally or\n * per minute) when this item was checked. If error is null, and therefore payload is non-null, it\n * means this item put us over the global rate limit and the payload should be sent to Rollbar in\n * place of the passed in item.\n */\nRateLimiter.prototype.shouldSend = function (item, now) {\n now = now || _.now();\n var elapsedTime = now - this.startTime;\n if (elapsedTime < 0 || elapsedTime >= 60000) {\n this.startTime = now;\n this.perMinCounter = 0;\n }\n\n var globalRateLimit = RateLimiter.globalSettings.maxItems;\n var globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute;\n\n if (checkRate(item, globalRateLimit, this.counter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n globalRateLimit + ' max items reached',\n false,\n );\n } else if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n globalRateLimitPerMin + ' items per minute reached',\n false,\n );\n }\n this.counter++;\n this.perMinCounter++;\n\n var shouldSend = !checkRate(item, globalRateLimit, this.counter);\n var perMinute = shouldSend;\n shouldSend =\n shouldSend && !checkRate(item, globalRateLimitPerMin, this.perMinCounter);\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n null,\n shouldSend,\n globalRateLimit,\n globalRateLimitPerMin,\n perMinute,\n );\n};\n\nRateLimiter.prototype.setPlatformOptions = function (platform, options) {\n this.platform = platform;\n this.platformOptions = options;\n};\n\n/* Helpers */\n\nfunction checkRate(item, limit, counter) {\n return !item.ignoreRateLimit && limit >= 1 && counter > limit;\n}\n\nfunction shouldSendValue(\n platform,\n options,\n error,\n shouldSend,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n var payload = null;\n if (error) {\n error = new Error(error);\n }\n if (!error && !shouldSend) {\n payload = rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n );\n }\n return { error: error, shouldSend: shouldSend, payload: payload };\n}\n\nfunction rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n var environment =\n options.environment || (options.payload && options.payload.environment);\n var msg;\n if (perMinute) {\n msg = 'item per minute limit reached, ignoring errors until timeout';\n } else {\n msg = 'maxItems has been hit, ignoring errors until reset.';\n }\n var item = {\n body: {\n message: {\n body: msg,\n extra: {\n maxItems: globalRateLimit,\n itemsPerMinute: limitPerMin,\n },\n },\n },\n language: 'javascript',\n environment: environment,\n notifier: {\n version:\n (options.notifier && options.notifier.version) || options.version,\n },\n };\n if (platform === 'browser') {\n item.platform = 'browser';\n item.framework = 'browser-js';\n item.notifier.name = 'rollbar-browser-js';\n } else if (platform === 'server') {\n item.framework = options.framework || 'node-js';\n item.notifier.name = options.notifier.name;\n } else if (platform === 'react-native') {\n item.framework = options.framework || 'react-native';\n item.notifier.name = options.notifier.name;\n }\n return item;\n}\n\nexport default RateLimiter;\n","import * as _ from './utility.js';\n\n/**\n * Queue - an object which handles which handles a queue of items to be sent to Rollbar.\n * This object handles rate limiting via a passed in rate limiter, retries based on connection\n * errors, and filtering of items based on a set of configurable predicates. The communication to\n * the backend is performed via a given API object.\n */\nclass Queue {\n /**\n * @param rateLimiter - An object which conforms to the interface\n * `rateLimiter.shouldSend(item) -> bool`\n * @param api - An object which conforms to the interface\n * `api.postItem(payload, function(err, response))`\n * @param logger - An object used to log verbose messages if desired\n * @param options - see `Queue.prototype.configure`\n * @param replay - Optional `Replay` for coordinating session replay with error occurrences\n */\n constructor(rateLimiter, api, logger, options, replay) {\n this.rateLimiter = rateLimiter;\n this.api = api;\n this.logger = logger;\n this.options = options;\n this.replay = replay;\n this.predicates = [];\n this.pendingItems = [];\n this.pendingRequests = [];\n this.retryQueue = [];\n this.retryHandle = null;\n this.waitCallback = null;\n this.waitIntervalID = null;\n }\n\n /**\n * configure - updates the options this queue uses\n *\n * @param options\n */\n configure(options) {\n this.api?.configure(options);\n const oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n return this;\n }\n\n /**\n * addPredicate - adds a predicate to the end of the list of predicates for this queue\n *\n * @param predicate - function(item, options) -> (bool|{err: Error})\n * Returning true means that this predicate passes and the item is okay to go on the queue\n * Returning false means do not add the item to the queue, but it is not an error\n * Returning {err: Error} means do not add the item to the queue, and the given error explains why\n * Returning {err: undefined} is equivalent to returning true but don't do that\n */\n addPredicate(predicate) {\n if (_.isFunction(predicate)) {\n this.predicates.push(predicate);\n }\n return this;\n }\n\n addPendingItem(item) {\n this.pendingItems.push(item);\n }\n\n removePendingItem(item) {\n const idx = this.pendingItems.indexOf(item);\n if (idx !== -1) {\n this.pendingItems.splice(idx, 1);\n }\n }\n\n /**\n * addItem - Send an item to the Rollbar API if all of the predicates are satisfied\n *\n * @param item - Item instance with the payload to send to the backend\n * @param callback - function(error, repsonse) which will be called with the response from the API\n * in the case of a success, otherwise response will be null and error will have a value. If both\n * error and response are null then the item was stopped by a predicate which did not consider this\n * to be an error condition, but nonetheless did not send the item to the API.\n * @param originalError - The original error before any transformations that is to be logged if any\n * @param originalItem - The original item before transforms, used in pendingItems queue\n */\n addItem(item, callback, originalError, originalItem) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {\n return;\n };\n }\n const data = item.data;\n const predicateResult = this._applyPredicates(data);\n if (predicateResult.stop) {\n this.removePendingItem(originalItem);\n callback(predicateResult.err);\n return;\n }\n this._maybeLog(data, originalError);\n this.removePendingItem(originalItem);\n if (!this.options.transmit) {\n callback(new Error('Transmit disabled'));\n return;\n }\n\n if (this.replay && data.body) {\n item.replayId = this.replay.capture(null, data.uuid, {\n type: 'occurrence',\n level: item.level,\n });\n\n if (item.replayId) {\n _.addItemAttributes(item.data, [\n { key: 'replay_id', value: item.replayId },\n ]);\n }\n }\n\n this.pendingRequests.push(data);\n try {\n this._makeApiRequest(data, (err, resp, headers) => {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers);\n }\n\n callback(err, resp);\n });\n } catch (err) {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay?.discard(item.replayId);\n }\n\n callback(err);\n }\n }\n\n /**\n * wait - Stop any further errors from being added to the queue, and get called back when all items\n * currently processing have finished sending to the backend.\n *\n * @param callback - function() called when all pending items have been sent\n */\n wait(callback) {\n if (!_.isFunction(callback)) {\n return;\n }\n this.waitCallback = callback;\n if (this._maybeCallWait()) {\n return;\n }\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitIntervalID = setInterval(() => {\n this._maybeCallWait();\n }, 500);\n }\n\n /**\n * Sequentially applies the predicates that have been added to the queue to the\n * given item with the currently configured options.\n *\n * @param item - An item in the queue\n * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue,\n * the error value should be passed up to a callbak if we are stopping.\n */\n _applyPredicates(item) {\n let p = null;\n for (let i = 0, len = this.predicates.length; i < len; i++) {\n p = this.predicates[i](item, this.options);\n if (!p || p.err !== undefined) {\n return { stop: true, err: p.err };\n }\n }\n return { stop: false, err: null };\n }\n\n /**\n * Send an item to Rollbar, callback when done, if there is an error make an\n * effort to retry if we are configured to do so.\n *\n * @param item - an item ready to send to the backend\n * @param callback - function(err, response)\n */\n _makeApiRequest(item, callback) {\n const rateLimitResponse = this.rateLimiter.shouldSend(item);\n if (rateLimitResponse.shouldSend) {\n this.api.postItem(item, (err, resp, headers) => {\n if (err) {\n this._maybeRetry(err, item, callback);\n } else {\n callback(err, resp, headers);\n }\n });\n } else if (rateLimitResponse.error) {\n callback(rateLimitResponse.error);\n } else {\n this.api.postItem(rateLimitResponse.payload, callback);\n }\n }\n\n // These are errors basically mean there is no internet connection\n static RETRIABLE_ERRORS = [\n 'ECONNRESET',\n 'ENOTFOUND',\n 'ESOCKETTIMEDOUT',\n 'ETIMEDOUT',\n 'ECONNREFUSED',\n 'EHOSTUNREACH',\n 'EPIPE',\n 'EAI_AGAIN',\n ];\n\n /**\n * Given the error returned by the API, decide if we should retry or just callback\n * with the error.\n *\n * @param err - an error returned by the API transport\n * @param item - the item that was trying to be sent when this error occured\n * @param callback - function(err, response)\n */\n _maybeRetry(err, item, callback) {\n let shouldRetry = false;\n if (this.options.retryInterval) {\n for (let i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) {\n if (err.code === Queue.RETRIABLE_ERRORS[i]) {\n shouldRetry = true;\n break;\n }\n }\n if (shouldRetry && _.isFiniteNumber(this.options.maxRetries)) {\n item.retries = item.retries ? item.retries + 1 : 1;\n if (item.retries > this.options.maxRetries) {\n shouldRetry = false;\n }\n }\n }\n if (shouldRetry) {\n this._retryApiRequest(item, callback);\n } else {\n callback(err);\n }\n }\n\n /**\n * Add an item and a callback to a queue and possibly start a timer to process\n * that queue based on the retryInterval in the options for this queue.\n *\n * @param item - an item that failed to send due to an error we deem retriable\n * @param callback - function(err, response)\n */\n _retryApiRequest(item, callback) {\n this.retryQueue.push({ item, callback });\n\n if (!this.retryHandle) {\n this.retryHandle = setInterval(() => {\n while (this.retryQueue.length) {\n const retryObject = this.retryQueue.shift();\n this._makeApiRequest(retryObject.item, retryObject.callback);\n }\n }, this.options.retryInterval);\n }\n }\n\n /**\n * Removes the item from the pending request queue, this queue is used to\n * enable to functionality of providing a callback that clients can pass to `wait` to be notified\n * when the pending request queue has been emptied. This must be called when the API finishes\n * processing this item. If a `wait` callback is configured, it is called by this function.\n *\n * @param item - the item previously added to the pending request queue\n */\n _dequeuePendingRequest(item) {\n const idx = this.pendingRequests.indexOf(item);\n if (idx !== -1) {\n this.pendingRequests.splice(idx, 1);\n this._maybeCallWait();\n }\n }\n\n _maybeLog(data, originalError) {\n if (this.logger && this.options.verbose) {\n let message =\n originalError ||\n _.get(data, 'body.trace.exception.message') ||\n _.get(data, 'body.trace_chain.0.exception.message');\n if (message) {\n this.logger.error(message);\n return;\n }\n message = _.get(data, 'body.message.body');\n if (message) {\n this.logger.log(message);\n }\n }\n }\n\n _maybeCallWait() {\n if (\n _.isFunction(this.waitCallback) &&\n this.pendingItems.length === 0 &&\n this.pendingRequests.length === 0\n ) {\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitCallback();\n return true;\n }\n return false;\n }\n}\n\nexport default Queue;\n","import * as _ from './utility.js';\n\n/*\n * Notifier - the internal object responsible for delegating between the client exposed API, the\n * chain of transforms necessary to turn an item into something that can be sent to Rollbar, and the\n * queue which handles the communcation with the Rollbar API servers.\n *\n * @param queue - an object that conforms to the interface: addItem(item, callback)\n * @param options - an object representing the options to be set for this notifier, this should have\n * any defaults already set by the caller\n */\nfunction Notifier(queue, options) {\n this.queue = queue;\n this.options = options;\n this.transforms = [];\n this.diagnostic = {};\n}\n\n/*\n * configure - updates the options for this notifier with the passed in object\n *\n * @param options - an object which gets merged with the current options set on this notifier\n * @returns this\n */\nNotifier.prototype.configure = function (options) {\n this.queue && this.queue.configure(options);\n var oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n return this;\n};\n\n/*\n * addTransform - adds a transform onto the end of the queue of transforms for this notifier\n *\n * @param transform - a function which takes three arguments:\n * * item: An Object representing the data to eventually be sent to Rollbar\n * * options: The current value of the options for this notifier\n * * callback: function(err: (Null|Error), item: (Null|Object)) the transform must call this\n * callback with a null value for error if it wants the processing chain to continue, otherwise\n * with an error to terminate the processing. The item should be the updated item after this\n * transform is finished modifying it.\n */\nNotifier.prototype.addTransform = function (transform) {\n if (_.isFunction(transform)) {\n this.transforms.push(transform);\n }\n return this;\n};\n\n/*\n * log - the internal log function which applies the configured transforms and then pushes onto the\n * queue to be sent to the backend.\n *\n * @param item - An object with the following structure:\n * message [String] - An optional string to be sent to rollbar\n * error [Error] - An optional error\n *\n * @param callback - A function of type function(err, resp) which will be called with exactly one\n * null argument and one non-null argument. The callback will be called once, either during the\n * transform stage if an error occurs inside a transform, or in response to the communication with\n * the backend. The second argument will be the response from the backend in case of success.\n */\nNotifier.prototype.log = function (item, callback) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n\n if (!this.options.enabled) {\n return callback(new Error('Rollbar is not enabled'));\n }\n\n this.queue.addPendingItem(item);\n var originalError = item.err;\n this._applyTransforms(\n item,\n function (err, i) {\n if (err) {\n this.queue.removePendingItem(item);\n return callback(err, null);\n }\n this.queue.addItem(i, callback, originalError, item);\n }.bind(this),\n );\n};\n\n/* Internal */\n\n/*\n * _applyTransforms - Applies the transforms that have been added to this notifier sequentially. See\n * `addTransform` for more information.\n *\n * @param item - An item to be transformed\n * @param callback - A function of type function(err, item) which will be called with a non-null\n * error and a null item in the case of a transform failure, or a null error and non-null item after\n * all transforms have been applied.\n */\nNotifier.prototype._applyTransforms = function (item, callback) {\n var transformIndex = -1;\n var transformsLength = this.transforms.length;\n var transforms = this.transforms;\n var options = this.options;\n\n var cb = function (err, i) {\n if (err) {\n callback(err, null);\n return;\n }\n\n transformIndex++;\n\n if (transformIndex === transformsLength) {\n callback(null, i);\n return;\n }\n\n transforms[transformIndex](i, options, cb);\n };\n\n cb(null, item);\n};\n\nexport default Notifier;\n","import RateLimiter from './rateLimiter.js';\nimport Queue from './queue.js';\nimport Notifier from './notifier.js';\nimport * as _ from './utility.js';\n\n/*\n * Rollbar - the interface to Rollbar\n *\n * @param options\n * @param api\n * @param logger\n */\nfunction Rollbar(options, api, logger, telemeter, tracing, replay, platform) {\n this.options = _.merge(options);\n this.logger = logger;\n Rollbar.rateLimiter.configureGlobal(this.options);\n Rollbar.rateLimiter.setPlatformOptions(platform, this.options);\n this.api = api;\n this.queue = new Queue(\n Rollbar.rateLimiter,\n api,\n logger,\n this.options,\n replay,\n );\n\n this.tracing = tracing;\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is created\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier = new Notifier(this.queue, this.options);\n this.telemeter = telemeter;\n setStackTraceLimit(options);\n this.lastError = null;\n this.lastErrorHash = 'none';\n}\n\nvar defaultOptions = {\n maxItems: 0,\n itemsPerMinute: 60,\n};\n\nRollbar.rateLimiter = new RateLimiter(defaultOptions);\n\nRollbar.prototype.global = function (options) {\n Rollbar.rateLimiter.configureGlobal(options);\n return this;\n};\n\nRollbar.prototype.configure = function (options, payloadData) {\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.merge(oldOptions, options, payload);\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is configured\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier && this.notifier.configure(this.options);\n this.telemeter && this.telemeter.configure(this.options);\n setStackTraceLimit(options);\n this.global(this.options);\n\n if (validateTracer(options.tracer)) {\n this.tracer = options.tracer;\n }\n\n return this;\n};\n\nRollbar.prototype.log = function (item) {\n var level = this._defaultLogLevel();\n return this._log(level, item);\n};\n\nRollbar.prototype.debug = function (item) {\n this._log('debug', item);\n};\n\nRollbar.prototype.info = function (item) {\n this._log('info', item);\n};\n\nRollbar.prototype.warn = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.warning = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.error = function (item) {\n this._log('error', item);\n};\n\nRollbar.prototype.critical = function (item) {\n this._log('critical', item);\n};\n\nRollbar.prototype.wait = function (callback) {\n this.queue.wait(callback);\n};\n\nRollbar.prototype.captureEvent = function (type, metadata, level) {\n return this.telemeter && this.telemeter.captureEvent(type, metadata, level);\n};\n\nRollbar.prototype.captureDomContentLoaded = function (ts) {\n return this.telemeter && this.telemeter.captureDomContentLoaded(ts);\n};\n\nRollbar.prototype.captureLoad = function (ts) {\n return this.telemeter && this.telemeter.captureLoad(ts);\n};\n\nRollbar.prototype.buildJsonPayload = function (item) {\n return this.api.buildJsonPayload(item);\n};\n\nRollbar.prototype.sendJsonPayload = function (jsonPayload) {\n this.api.postJsonPayload(jsonPayload);\n};\n\n/* Internal */\n\nRollbar.prototype._log = function (defaultLevel, item) {\n var callback;\n if (item.callback) {\n callback = item.callback;\n delete item.callback;\n }\n if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) {\n if (callback) {\n var error = new Error('ignored identical item');\n error.item = item;\n callback(error);\n }\n return;\n }\n try {\n item.level = item.level || defaultLevel;\n\n this._addTracingAttributes(item);\n\n // Legacy OpenTracing support\n this._addTracingInfo(item);\n\n const telemeter = this.telemeter;\n if (telemeter) {\n telemeter._captureRollbarItem(item);\n item.telemetryEvents = telemeter.copyEvents() || [];\n }\n\n this.notifier.log(item, callback);\n } catch (e) {\n if (callback) {\n callback(e);\n }\n this.logger.error(e);\n }\n};\n\nRollbar.prototype._addTracingAttributes = function (item) {\n const span = this.tracing?.getSpan();\n\n const attributes = [\n { key: 'session_id', value: this.tracing?.sessionId },\n { key: 'span_id', value: span?.spanId },\n { key: 'trace_id', value: span?.traceId },\n ];\n _.addItemAttributes(item.data, attributes);\n\n span?.addEvent('rollbar.occurrence', [\n { key: 'rollbar.occurrence.uuid', value: item.uuid },\n ]);\n};\n\nRollbar.prototype._defaultLogLevel = function () {\n return this.options.logLevel || 'debug';\n};\n\nRollbar.prototype._sameAsLastError = function (item) {\n if (!item._isUncaught) {\n return false;\n }\n var itemHash = generateItemHash(item);\n if (this.lastErrorHash === itemHash) {\n return true;\n }\n this.lastError = item.err;\n this.lastErrorHash = itemHash;\n return false;\n};\n\nRollbar.prototype._addTracingInfo = function (item) {\n // Tracer validation occurs in the constructor\n // or in the Rollbar.prototype.configure methods\n if (this.tracer) {\n // add rollbar occurrence uuid to span\n var span = this.tracer.scope().active();\n\n if (validateSpan(span)) {\n span.setTag('rollbar.error_uuid', item.uuid);\n span.setTag('rollbar.has_error', true);\n span.setTag('error', true);\n span.setTag(\n 'rollbar.item_url',\n `https://rollbar.com/item/uuid/?uuid=${item.uuid}`,\n );\n span.setTag(\n 'rollbar.occurrence_url',\n `https://rollbar.com/occurrence/uuid/?uuid=${item.uuid}`,\n );\n\n // add span ID & trace ID to occurrence\n var opentracingSpanId = span.context().toSpanId();\n var opentracingTraceId = span.context().toTraceId();\n\n if (item.custom) {\n item.custom.opentracing_span_id = opentracingSpanId;\n item.custom.opentracing_trace_id = opentracingTraceId;\n } else {\n item.custom = {\n opentracing_span_id: opentracingSpanId,\n opentracing_trace_id: opentracingTraceId,\n };\n }\n }\n }\n};\n\nfunction generateItemHash(item) {\n var message = item.message || '';\n var stack = (item.err || {}).stack || String(item.err);\n return message + '::' + stack;\n}\n\n// Node.js, Chrome, Safari, and some other browsers support this property\n// which globally sets the number of stack frames returned in an Error object.\n// If a browser can't use it, no harm done.\nfunction setStackTraceLimit(options) {\n if (options.stackTraceLimit) {\n Error.stackTraceLimit = options.stackTraceLimit;\n }\n}\n\n/**\n * Validate the Tracer object provided to the Client\n * is valid for our Opentracing use case.\n * @param {opentracer.Tracer} tracer\n */\nfunction validateTracer(tracer) {\n if (!tracer) {\n return false;\n }\n\n if (!tracer.scope || typeof tracer.scope !== 'function') {\n return false;\n }\n\n var scope = tracer.scope();\n\n if (!scope || !scope.active || typeof scope.active !== 'function') {\n return false;\n }\n\n return true;\n}\n\n/**\n * Validate the Span object provided\n * @param {opentracer.Span} span\n */\nfunction validateSpan(span) {\n if (!span || !span.context || typeof span.context !== 'function') {\n return false;\n }\n\n var spanContext = span.context();\n\n if (\n !spanContext ||\n !spanContext.toSpanId ||\n !spanContext.toTraceId ||\n typeof spanContext.toSpanId !== 'function' ||\n typeof spanContext.toTraceId !== 'function'\n ) {\n return false;\n }\n\n return true;\n}\n\nexport default Rollbar;\n","import * as _ from './utility.js';\n\nfunction buildPayload(data) {\n if (!_.isType(data.context, 'string')) {\n var contextResult = _.stringify(data.context);\n if (contextResult.error) {\n data.context = \"Error: could not serialize 'context'\";\n } else {\n data.context = contextResult.value || '';\n }\n if (data.context.length > 255) {\n data.context = data.context.substr(0, 255);\n }\n }\n return {\n data: data,\n };\n}\n\nfunction getTransportFromOptions(options, defaults, url) {\n var hostname = defaults.hostname;\n var protocol = defaults.protocol;\n var port = defaults.port;\n var path = defaults.path;\n var search = defaults.search;\n var timeout = options.timeout;\n var transport = detectTransport(options);\n\n var proxy = options.proxy;\n if (options.endpoint) {\n var opts = url.parse(options.endpoint);\n hostname = opts.hostname;\n protocol = opts.protocol;\n port = opts.port;\n path = opts.pathname;\n search = opts.search;\n }\n return {\n timeout: timeout,\n hostname: hostname,\n protocol: protocol,\n port: port,\n path: path,\n search: search,\n proxy: proxy,\n transport: transport,\n };\n}\n\nfunction detectTransport(options) {\n var gWindow =\n (typeof window != 'undefined' && window) ||\n (typeof self != 'undefined' && self);\n var transport = options.defaultTransport || 'xhr';\n if (typeof gWindow.fetch === 'undefined') transport = 'xhr';\n if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch';\n return transport;\n}\n\nfunction transportOptions(transport, method) {\n var protocol = transport.protocol || 'https:';\n var port =\n transport.port ||\n (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined);\n var hostname = transport.hostname;\n var path = transport.path;\n var timeout = transport.timeout;\n var transportAPI = transport.transport;\n if (transport.search) {\n path = path + transport.search;\n }\n if (transport.proxy) {\n path = protocol + '//' + hostname + path;\n hostname = transport.proxy.host || transport.proxy.hostname;\n port = transport.proxy.port;\n protocol = transport.proxy.protocol || protocol;\n }\n return {\n timeout: timeout,\n protocol: protocol,\n hostname: hostname,\n path: path,\n port: port,\n method: method,\n transport: transportAPI,\n };\n}\n\nfunction appendPathToPath(base, path) {\n var baseTrailingSlash = /\\/$/.test(base);\n var pathBeginningSlash = /^\\//.test(path);\n\n if (baseTrailingSlash && pathBeginningSlash) {\n path = path.substring(1);\n } else if (!baseTrailingSlash && !pathBeginningSlash) {\n path = '/' + path;\n }\n\n return base + path;\n}\n\nexport {\n buildPayload,\n getTransportFromOptions,\n transportOptions,\n appendPathToPath,\n};\n","import * as _ from './utility.js';\nimport * as helpers from './apiUtility.js';\n\nvar defaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/item/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\nvar OTLPDefaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/session/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\n/**\n * Api is an object that encapsulates methods of communicating with\n * the Rollbar API. It is a standard interface with some parts implemented\n * differently for server or browser contexts. It is an object that should\n * be instantiated when used so it can contain non-global options that may\n * be different for another instance of RollbarApi.\n *\n * @param options {\n * accessToken: the accessToken to use for posting items to rollbar\n * endpoint: an alternative endpoint to send errors to\n * must be a valid, fully qualified URL.\n * The default is: https://api.rollbar.com/api/1/item\n * proxy: if you wish to proxy requests provide an object\n * with the following keys:\n * host or hostname (required): foo.example.com\n * port (optional): 123\n * protocol (optional): https\n * }\n */\nfunction Api(options, transport, urllib, truncation) {\n this.options = options;\n this.transport = transport;\n this.url = urllib;\n this.truncation = truncation;\n this.accessToken = options.accessToken;\n this.transportOptions = _getTransport(options, urllib);\n this.OTLPTransportOptions = _getOTLPTransport(options, urllib);\n}\n\n/**\n * Wraps transport.post in a Promise to support async/await\n *\n * @param {Object} options - Options for the API request\n * @param {string} options.accessToken - The access token for authentication\n * @param {Object} options.transportOptions - Options for the transport\n * @param {Object} options.payload - The data payload to send\n * @returns {Promise} A promise that resolves with the response or rejects with an error\n * @private\n */\nApi.prototype._postPromise = function ({\n accessToken,\n options,\n payload,\n headers,\n}) {\n const self = this;\n return new Promise((resolve, reject) => {\n self.transport.post({\n accessToken,\n options,\n payload,\n headers,\n callback: (err, resp) => (err ? reject(err) : resolve(resp)),\n });\n });\n};\n\n/**\n *\n * @param data\n * @param callback\n */\nApi.prototype.postItem = function (data, callback) {\n const options = helpers.transportOptions(this.transportOptions, 'POST');\n const payload = helpers.buildPayload(data);\n const self = this;\n\n // ensure the network request is scheduled after the current tick.\n setTimeout(function () {\n self.transport.post({\n accessToken: self.accessToken,\n options,\n payload,\n callback,\n });\n }, 0);\n};\n\n/**\n * Posts spans to the Rollbar API using the session endpoint\n *\n * @param {Array} payload - The spans to send\n * @returns {Promise} A promise that resolves with the API response\n */\nApi.prototype.postSpans = async function (payload, headers = {}) {\n const options = helpers.transportOptions(this.OTLPTransportOptions, 'POST');\n\n return await this._postPromise({\n accessToken: this.accessToken,\n options,\n payload,\n headers,\n });\n};\n\n/**\n *\n * @param data\n * @param callback\n */\nApi.prototype.buildJsonPayload = function (data, callback) {\n var payload = helpers.buildPayload(data);\n\n var stringifyResult;\n if (this.truncation) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = _.stringify(payload);\n }\n\n if (stringifyResult.error) {\n if (callback) {\n callback(stringifyResult.error);\n }\n return null;\n }\n\n return stringifyResult.value;\n};\n\n/**\n *\n * @param jsonPayload\n * @param callback\n */\nApi.prototype.postJsonPayload = function (jsonPayload, callback) {\n var transportOptions = helpers.transportOptions(\n this.transportOptions,\n 'POST',\n );\n this.transport.postJsonPayload(\n this.accessToken,\n transportOptions,\n jsonPayload,\n callback,\n );\n};\n\nApi.prototype.configure = function (options) {\n var oldOptions = this.oldOptions;\n this.options = _.merge(oldOptions, options);\n this.transportOptions = _getTransport(this.options, this.url);\n this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url);\n if (this.options.accessToken !== undefined) {\n this.accessToken = this.options.accessToken;\n }\n return this;\n};\n\nfunction _getTransport(options, url) {\n return helpers.getTransportFromOptions(options, defaultOptions, url);\n}\n\nfunction _getOTLPTransport(options, url) {\n options = { ...options, endpoint: options.tracing?.endpoint };\n return helpers.getTransportFromOptions(options, OTLPDefaultOptions, url);\n}\n\nexport default Api;\n","let log = () => {};\n\nconst levels = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n disable: 4,\n};\n\nconst logger = {\n error: (...args) => log('error', args),\n warn: (...args) => log('warn', args),\n info: (...args) => log('info', args),\n debug: (...args) => log('debug', args),\n log: (...args) => log('info', args),\n init: ({ logLevel }) => {\n log = function (level, args) {\n if (levels[level] < levels[logLevel]) return;\n\n args.unshift('Rollbar:');\n\n console[level].apply(console, args);\n };\n },\n};\n\nexport default logger;\n","import logger from '../../logger.js';\nimport * as _ from '../../utility.js';\n\nfunction makeFetchRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n timeout,\n}) {\n var controller;\n var timeoutId;\n\n if (_.isFiniteNumber(timeout)) {\n controller = new AbortController();\n timeoutId = setTimeout(function () {\n controller.abort();\n }, timeout);\n }\n\n headers = {\n 'Content-Type': 'application/json',\n 'X-Rollbar-Access-Token': accessToken,\n signal: controller && controller.signal,\n ...headers,\n };\n\n fetch(url, {\n method,\n headers,\n body: payload,\n })\n .then(function (response) {\n if (timeoutId) clearTimeout(timeoutId);\n const respHeaders = response.headers;\n\n const isItemRoute = url.endsWith('/api/1/item/');\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': respHeaders.get('Rollbar-Replay-Enabled'),\n 'Rollbar-Replay-RateLimit-Remaining': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n\n const json = response.json();\n callback(null, json, headers);\n })\n .catch(function (error) {\n logger.error(error.message);\n callback(error);\n });\n}\n\nexport default makeFetchRequest;\n","/*global XDomainRequest*/\n\nimport * as _ from '../../utility.js';\nimport logger from '../../logger.js';\n\nfunction makeXhrRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n requestFactory,\n timeout,\n}) {\n var request;\n if (requestFactory) {\n request = requestFactory();\n } else {\n request = _createXMLHTTPObject();\n }\n if (!request) {\n // Give up, no way to send requests\n return callback(new Error('No way to send a request'));\n }\n try {\n try {\n var onreadystatechange = function () {\n try {\n if (onreadystatechange && request.readyState === 4) {\n onreadystatechange = undefined;\n\n var parseResponse = _.jsonParse(request.responseText);\n if (_isSuccess(request)) {\n const isItemRoute = url.endsWith('/api/1/item/');\n\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': request.getResponseHeader(\n 'Rollbar-Replay-Enabled',\n ),\n 'Rollbar-Replay-RateLimit-Remaining':\n request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n callback(parseResponse.error, parseResponse.value, headers);\n return;\n } else if (_isNormalFailure(request)) {\n if (request.status === 403) {\n // likely caused by using a server access token\n var message =\n parseResponse.value && parseResponse.value.message;\n logger.error(message);\n }\n // return valid http status codes\n callback(new Error(String(request.status)));\n } else {\n // IE will return a status 12000+ on some sort of connection failure,\n // so we return a blank error\n // http://msdn.microsoft.com/en-us/library/aa383770%28VS.85%29.aspx\n var msg =\n 'XHR response had no status code (likely connection failure)';\n callback(_newRetriableError(msg));\n }\n }\n } catch (ex) {\n //jquery source mentions firefox may error out while accessing the\n //request members if there is a network error\n //https://github.com/jquery/jquery/blob/a938d7b1282fc0e5c52502c225ae8f0cef219f0a/src/ajax/xhr.js#L111\n var exc;\n if (ex && ex.stack) {\n exc = ex;\n } else {\n exc = new Error(ex);\n }\n callback(exc);\n }\n };\n\n request.open(method, url, true);\n if (request.setRequestHeader) {\n request.setRequestHeader('Content-Type', 'application/json');\n request.setRequestHeader('X-Rollbar-Access-Token', accessToken);\n for (const [h, v] of Object.entries(headers ?? {})) {\n request.setRequestHeader(h, v);\n }\n }\n\n if (_.isFiniteNumber(timeout)) {\n request.timeout = timeout;\n }\n\n request.onreadystatechange = onreadystatechange;\n request.send(payload);\n } catch (e1) {\n // Sending using the normal xmlhttprequest object didn't work, try XDomainRequest\n if (typeof XDomainRequest !== 'undefined') {\n // Assume we are in a really old browser which has a bunch of limitations:\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n\n // Extreme paranoia: if we have XDomainRequest then we have a window, but just in case\n if (!window || !window.location) {\n return callback(\n new Error(\n 'No window available during request, unknown environment',\n ),\n );\n }\n\n // If the current page is http, try and send over http\n if (\n window.location.href.substring(0, 5) === 'http:' &&\n url.substring(0, 5) === 'https'\n ) {\n url = 'http' + url.substring(5);\n }\n\n var xdomainrequest = new XDomainRequest();\n xdomainrequest.onprogress = function () {};\n xdomainrequest.ontimeout = function () {\n var msg = 'Request timed out';\n var code = 'ETIMEDOUT';\n callback(_newRetriableError(msg, code));\n };\n xdomainrequest.onerror = function () {\n callback(new Error('Error during request'));\n };\n xdomainrequest.onload = function () {\n var parseResponse = _.jsonParse(xdomainrequest.responseText);\n callback(parseResponse.error, parseResponse.value);\n };\n xdomainrequest.open(method, url, true);\n xdomainrequest.send(payload);\n } else {\n callback(new Error('Cannot find a method to transport a request'));\n }\n }\n } catch (e2) {\n callback(e2);\n }\n}\n\nfunction _createXMLHTTPObject() {\n /* global ActiveXObject:false */\n\n var factories = [\n function () {\n return new XMLHttpRequest();\n },\n function () {\n return new ActiveXObject('Msxml2.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Msxml3.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Microsoft.XMLHTTP');\n },\n ];\n var xmlhttp;\n var i;\n var numFactories = factories.length;\n for (i = 0; i < numFactories; i++) {\n try {\n xmlhttp = factories[i]();\n break;\n } catch (e) {\n // pass\n }\n }\n return xmlhttp;\n}\n\nfunction _isSuccess(r) {\n return r && r.status && r.status === 200;\n}\n\nfunction _isNormalFailure(r) {\n return r && _.isType(r.status, 'number') && r.status >= 400 && r.status < 600;\n}\n\nfunction _newRetriableError(message, code) {\n var err = new Error(message);\n err.code = code || 'ENOTFOUND';\n return err;\n}\n\nexport default makeXhrRequest;\n","import * as _ from '../utility.js';\nimport makeFetchRequest from './transport/fetch.js';\nimport makeXhrRequest from './transport/xhr.js';\n\n/*\n * accessToken may be embedded in payload but that should not\n * be assumed\n *\n * options: {\n * hostname\n * protocol\n * path\n * port\n * method\n * transport ('xhr' | 'fetch')\n * }\n *\n * params is an object containing key/value pairs. These\n * will be appended to the path as 'key=value&key=value'\n *\n * payload is an unserialized object\n */\nfunction Transport(truncation) {\n this.truncation = truncation;\n}\n\nTransport.prototype.get = function (\n accessToken,\n options,\n params,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n _.addParamsAndAccessTokenToPath(accessToken, options, params);\n\n var method = 'GET';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.post = function ({\n accessToken,\n options,\n payload,\n headers,\n callback,\n requestFactory,\n}) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n\n if (!payload) {\n return callback(new Error('Cannot send empty request'));\n }\n\n var stringifyResult;\n // Check payload.body to ensure only items are truncated.\n if (this.truncation && payload.body) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = _.stringify(payload);\n }\n if (stringifyResult.error) {\n return callback(stringifyResult.error);\n }\n\n var payload = stringifyResult.value;\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.postJsonPayload = function (\n accessToken,\n options,\n payload,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\n// Wraps `_makeRequest` if zone.js is being used, ensuring that Rollbar\n// API calls are not intercepted by any child forked zones.\n// This is equivalent to `NgZone.runOutsideAngular` in Angular.\nTransport.prototype._makeZoneRequest = function () {\n var gWindow =\n (typeof window != 'undefined' && window) ||\n (typeof self != 'undefined' && self);\n // Whenever zone.js is loaded and `Zone` is exposed globally, access\n // the root zone to ensure that requests are always made within it.\n // This approach is framework-agnostic, regardless of which\n // framework zone.js is used with.\n var rootZone = gWindow && gWindow.Zone && gWindow.Zone.root;\n var args = Array.prototype.slice.call(arguments);\n\n if (rootZone) {\n var self = this;\n rootZone.run(function () {\n self._makeRequest.apply(undefined, args);\n });\n } else {\n this._makeRequest.apply(undefined, args);\n }\n};\n\nTransport.prototype._makeRequest = function (params) {\n const { payload, callback, transport } = params;\n if (typeof RollbarProxy !== 'undefined') {\n return _proxyRequest(payload, callback);\n }\n\n if (transport === 'fetch') {\n makeFetchRequest(params);\n } else {\n makeXhrRequest(params);\n }\n};\n\n/* global RollbarProxy */\nfunction _proxyRequest(json, callback) {\n var rollbarProxy = new RollbarProxy();\n rollbarProxy.sendJsonPayload(\n json,\n function (_msg) {\n /* do nothing */\n },\n function (err) {\n callback(new Error(err));\n },\n );\n}\n\nexport default Transport;\n","// See https://nodejs.org/docs/latest/api/url.html\nfunction parse(url) {\n var result = {\n protocol: null,\n auth: null,\n host: null,\n path: null,\n hash: null,\n href: url,\n hostname: null,\n port: null,\n pathname: null,\n search: null,\n query: null,\n };\n\n var i, last;\n i = url.indexOf('//');\n if (i !== -1) {\n result.protocol = url.substring(0, i);\n last = i + 2;\n } else {\n last = 0;\n }\n\n i = url.indexOf('@', last);\n if (i !== -1) {\n result.auth = url.substring(last, i);\n last = i + 1;\n }\n\n i = url.indexOf('/', last);\n if (i === -1) {\n i = url.indexOf('?', last);\n if (i === -1) {\n i = url.indexOf('#', last);\n if (i === -1) {\n result.host = url.substring(last);\n } else {\n result.host = url.substring(last, i);\n result.hash = url.substring(i);\n }\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n return result;\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n\n i = url.indexOf('#', last);\n if (i === -1) {\n result.path = url.substring(last);\n } else {\n result.path = url.substring(last, i);\n result.hash = url.substring(i);\n }\n\n if (result.path) {\n var pathParts = result.path.split('?');\n result.pathname = pathParts[0];\n result.query = pathParts[1];\n result.search = result.query ? '?' + result.query : null;\n }\n return result;\n}\n\nexport { parse };\n","const FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\nfunction parse(error, options) {\n if (typeof error.stacktrace !== \"undefined\" || typeof error[\"opera#sourceloc\"] !== \"undefined\")\n return parseOpera(error, options);\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIE(error, options);\n else if (error.stack)\n return parseFFOrSafari(error, options);\n else if (options?.allowEmpty)\n return [];\n else\n throw new Error(\"Cannot parse given Error object\");\n}\nfunction parseStack(stackString, options) {\n if (stackString.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIeString(stackString, options);\n else\n return parseFFOrSafariString(stackString, options);\n}\nfunction extractLocation(urlLike) {\n if (!urlLike.includes(\":\"))\n return [urlLike, undefined, undefined];\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n const parts = regExp.exec(urlLike.replace(/[()]/g, \"\"));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n}\nfunction applySlice(lines, options) {\n if (options && options.slice != null) {\n if (Array.isArray(options.slice))\n return lines.slice(options.slice[0], options.slice[1]);\n return lines.slice(0, options.slice);\n }\n return lines;\n}\nfunction parseV8OrIE(error, options) {\n return parseV8OrIeString(error.stack, options);\n}\nfunction parseV8OrIeString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\"(eval \")) {\n line = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(,.*$)/g, \"\");\n }\n let sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\").replace(/^.*?\\s+/, \"\");\n const location = sanitizedLine.match(/ (\\(.+\\)$)/);\n sanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n const locationParts = extractLocation(location ? location[1] : sanitizedLine);\n const functionName = location && sanitizedLine || undefined;\n const fileName = [\"eval\", \"\"].includes(locationParts[0]) ? undefined : locationParts[0];\n return {\n function: functionName,\n file: fileName,\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\nfunction parseFFOrSafari(error, options) {\n return parseFFOrSafariString(error.stack, options);\n}\nfunction parseFFOrSafariString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\" > eval\"))\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, \":$1\");\n if (!line.includes(\"@\") && !line.includes(\":\")) {\n return {\n function: line\n };\n } else {\n const functionNameRegex = /(([^\\n\\r\"\\u2028\\u2029]*\".[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*(?:@[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*)*(?:[\\n\\r\\u2028\\u2029][^@]*)?)?[^@]*)@/;\n const matches = line.match(functionNameRegex);\n const functionName = matches && matches[1] ? matches[1] : undefined;\n const locationParts = extractLocation(line.replace(functionNameRegex, \"\"));\n return {\n function: functionName,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n }\n });\n}\nfunction parseOpera(e, options) {\n if (!e.stacktrace || e.message.includes(\"\\n\") && e.message.split(\"\\n\").length > e.stacktrace.split(\"\\n\").length)\n return parseOpera9(e);\n else if (!e.stack)\n return parseOpera10(e);\n else\n return parseOpera11(e, options);\n}\nfunction parseOpera9(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n const lines = e.message.split(\"\\n\");\n const result = [];\n for (let i = 2, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n file: match[2],\n line: +match[1],\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera10(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n const lines = e.stacktrace.split(\"\\n\");\n const result = [];\n for (let i = 0, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n function: match[3] || undefined,\n file: match[2],\n line: match[1] ? +match[1] : undefined,\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera11(error, options) {\n const filtered = applySlice(\n // @ts-expect-error missing stack property\n error.stack.split(\"\\n\").filter((line) => {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }),\n options\n );\n return filtered.map((line) => {\n const tokens = line.split(\"@\");\n const locationParts = extractLocation(tokens.pop());\n const functionCall = tokens.shift() || \"\";\n const functionName = functionCall.replace(//, \"$2\").replace(/\\([^)]*\\)/g, \"\") || undefined;\n let argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/))\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, \"$1\");\n const args = argsRaw === undefined || argsRaw === \"[arguments not available]\" ? undefined : argsRaw.split(\",\");\n return {\n function: functionName,\n args,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\n\nexport { extractLocation, parse, parseFFOrSafari, parseFFOrSafariString, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseStack, parseV8OrIE, parseV8OrIeString };\n","import { parse as parse$1, parseV8OrIE as parseV8OrIE$1, parseFFOrSafari as parseFFOrSafari$1, parseOpera as parseOpera$1, parseOpera9 as parseOpera9$1, parseOpera10 as parseOpera10$1, parseOpera11 as parseOpera11$1 } from './lite.mjs';\nexport { extractLocation } from './lite.mjs';\n\nfunction stackframesLiteToStackframes(liteStackframes) {\n return liteStackframes.map((liteStackframe) => {\n return {\n functionName: liteStackframe.function,\n args: liteStackframe.args,\n fileName: liteStackframe.file,\n lineNumber: liteStackframe.line,\n columnNumber: liteStackframe.col,\n source: liteStackframe.raw\n };\n });\n}\nfunction parse(error, options) {\n return stackframesLiteToStackframes(parse$1(error, options));\n}\nfunction parseV8OrIE(error) {\n return stackframesLiteToStackframes(parseV8OrIE$1(error));\n}\nfunction parseFFOrSafari(error) {\n return stackframesLiteToStackframes(parseFFOrSafari$1(error));\n}\nfunction parseOpera(e) {\n return stackframesLiteToStackframes(parseOpera$1(e));\n}\nfunction parseOpera9(e) {\n return stackframesLiteToStackframes(parseOpera9$1(e));\n}\nfunction parseOpera10(e) {\n return stackframesLiteToStackframes(parseOpera10$1(e));\n}\nfunction parseOpera11(error) {\n return stackframesLiteToStackframes(parseOpera11$1(error));\n}\n\nexport { parse, parseFFOrSafari, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseV8OrIE };\n","import { parse as parseErrorStack } from 'error-stack-parser-es';\n\nvar UNKNOWN_FUNCTION = '?';\nvar ERR_CLASS_REGEXP = new RegExp(\n '^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): ',\n);\n\nfunction guessFunctionName() {\n return UNKNOWN_FUNCTION;\n}\n\nfunction gatherContext() {\n return null;\n}\n\nfunction Frame(stackFrame) {\n var data = {};\n\n data._stackFrame = stackFrame;\n\n data.url = stackFrame.fileName;\n data.line = stackFrame.lineNumber;\n data.func = stackFrame.functionName;\n data.column = stackFrame.columnNumber;\n data.args = stackFrame.args;\n\n data.context = gatherContext();\n\n return data;\n}\n\nfunction Stack(exception, skip) {\n function getStack() {\n var parserStack = [];\n\n skip = skip || 0;\n\n try {\n parserStack = parseErrorStack(exception);\n } catch (e) {\n parserStack = [];\n }\n\n var stack = [];\n\n for (var i = skip; i < parserStack.length; i++) {\n stack.push(new Frame(parserStack[i]));\n }\n\n return stack;\n }\n\n return {\n stack: getStack(),\n message: exception.message,\n name: _mostSpecificErrorName(exception),\n rawStack: exception.stack,\n rawException: exception,\n };\n}\n\nfunction parse(e, skip) {\n var err = e;\n\n if (err.nested || err.cause) {\n var traceChain = [];\n while (err) {\n traceChain.push(new Stack(err, skip));\n err = err.nested || err.cause;\n\n skip = 0; // Only apply skip value to primary error\n }\n\n // Return primary error with full trace chain attached.\n traceChain[0].traceChain = traceChain;\n return traceChain[0];\n } else {\n return new Stack(err, skip);\n }\n}\n\nfunction guessErrorClass(errMsg) {\n if (!errMsg || !errMsg.match) {\n return ['Unknown error. There was no error message to display.', ''];\n }\n var errClassMatch = errMsg.match(ERR_CLASS_REGEXP);\n var errClass = '(unknown)';\n\n if (errClassMatch) {\n errClass = errClassMatch[errClassMatch.length - 1];\n errMsg = errMsg.replace(\n (errClassMatch[errClassMatch.length - 2] || '') + errClass + ':',\n '',\n );\n errMsg = errMsg.replace(/(^[\\s]+|[\\s]+$)/g, '');\n }\n return [errClass, errMsg];\n}\n\n// * Prefers any value over an empty string\n// * Prefers any value over 'Error' where possible\n// * Prefers name over constructor.name when both are more specific than 'Error'\nfunction _mostSpecificErrorName(error) {\n var name = error.name && error.name.length && error.name;\n var constructorName =\n error.constructor.name &&\n error.constructor.name.length &&\n error.constructor.name;\n\n if (!name || !constructorName) {\n return name || constructorName;\n }\n\n if (name === 'Error') {\n return constructorName;\n }\n return name;\n}\n\nexport default {\n guessFunctionName,\n guessErrorClass,\n gatherContext,\n parse,\n Stack,\n Frame,\n};\n","import * as _ from '../utility.js';\nimport errorParser from '../errorParser.js';\nimport logger from '../logger.js';\n\nfunction handleDomException(item, options, callback) {\n if (item.err && errorParser.Stack(item.err).name === 'DOMException') {\n var originalError = new Error();\n originalError.name = item.err.name;\n originalError.message = item.err.message;\n originalError.stack = item.err.stack;\n originalError.nested = item.err;\n item.err = originalError;\n }\n callback(null, item);\n}\n\nfunction handleItemWithError(item, options, callback) {\n item.data = item.data || {};\n if (item.err) {\n try {\n item.stackInfo =\n item.err._savedStackTrace ||\n errorParser.parse(item.err, item.skipFrames);\n\n if (options.addErrorContext) {\n addErrorContext(item);\n }\n } catch (e) {\n logger.error('Error while parsing the error object.', e);\n try {\n item.message =\n item.err.message ||\n item.err.description ||\n item.message ||\n String(item.err);\n } catch (e2) {\n item.message = String(item.err) || String(e2);\n }\n delete item.err;\n }\n }\n callback(null, item);\n}\n\nfunction addErrorContext(item) {\n var chain = [];\n var err = item.err;\n\n chain.push(err);\n\n while (err.nested || err.cause) {\n err = err.nested || err.cause;\n chain.push(err);\n }\n\n _.addErrorContext(item, chain);\n}\n\nfunction ensureItemHasSomethingToSay(item, options, callback) {\n if (!item.message && !item.stackInfo && !item.custom) {\n callback(new Error('No message, stack info, or custom data'), null);\n }\n callback(null, item);\n}\n\nfunction addBaseInfo(item, options, callback) {\n var environment =\n (options.payload && options.payload.environment) || options.environment;\n item.data = _.merge(item.data, {\n environment: environment,\n level: item.level,\n endpoint: options.endpoint,\n platform: 'browser',\n framework: 'browser-js',\n language: 'javascript',\n server: {},\n uuid: item.uuid,\n notifier: {\n name: 'rollbar-browser-js',\n version: options.version,\n },\n custom: item.custom,\n });\n callback(null, item);\n}\n\nfunction addRequestInfo(window) {\n return function (item, options, callback) {\n var requestInfo = {};\n\n if (window && window.location) {\n requestInfo.url = window.location.href;\n requestInfo.query_string = window.location.search;\n }\n\n var remoteString = '$remote_ip';\n if (!options.captureIp) {\n remoteString = null;\n } else if (options.captureIp !== true) {\n remoteString += '_anonymize';\n }\n if (remoteString) requestInfo.user_ip = remoteString;\n\n if (Object.keys(requestInfo).length > 0) {\n _.set(item, 'data.request', requestInfo);\n }\n\n callback(null, item);\n };\n}\n\nfunction addClientInfo(window) {\n return function (item, options, callback) {\n if (!window) {\n return callback(null, item);\n }\n var nav = window.navigator || {};\n var scr = window.screen || {};\n _.set(item, 'data.client', {\n runtime_ms: item.timestamp - window._rollbarStartTime,\n timestamp: Math.round(item.timestamp / 1000),\n javascript: {\n browser: nav.userAgent,\n language: nav.language,\n cookie_enabled: nav.cookieEnabled,\n screen: {\n width: scr.width,\n height: scr.height,\n },\n },\n });\n callback(null, item);\n };\n}\n\nfunction addPluginInfo(window) {\n return function (item, options, callback) {\n if (!window || !window.navigator) {\n return callback(null, item);\n }\n var plugins = [];\n var navPlugins = window.navigator.plugins || [];\n var cur;\n for (var i = 0, l = navPlugins.length; i < l; ++i) {\n cur = navPlugins[i];\n plugins.push({ name: cur.name, description: cur.description });\n }\n _.set(item, 'data.client.javascript.plugins', plugins);\n callback(null, item);\n };\n}\n\nfunction addBody(item, options, callback) {\n if (item.stackInfo) {\n if (item.stackInfo.traceChain) {\n addBodyTraceChain(item, options, callback);\n } else {\n addBodyTrace(item, options, callback);\n }\n } else {\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction addBodyMessage(item, options, callback) {\n var message = item.message;\n var custom = item.custom;\n\n if (!message) {\n message = 'Item sent with null or missing arguments.';\n }\n var result = {\n body: message,\n };\n\n if (custom) {\n result.extra = _.merge(custom);\n }\n\n _.set(item, 'data.body', { message: result });\n callback(null, item);\n}\n\nfunction stackFromItem(item) {\n // Transform a TraceKit stackInfo object into a Rollbar trace\n var stack = item.stackInfo.stack;\n if (\n stack &&\n stack.length === 0 &&\n item._unhandledStackInfo &&\n item._unhandledStackInfo.stack\n ) {\n stack = item._unhandledStackInfo.stack;\n }\n return stack;\n}\n\nfunction addBodyTraceChain(item, options, callback) {\n var traceChain = item.stackInfo.traceChain;\n var traces = [];\n\n var traceChainLength = traceChain.length;\n for (var i = 0; i < traceChainLength; i++) {\n var trace = buildTrace(item, traceChain[i], options);\n traces.push(trace);\n }\n\n _.set(item, 'data.body', { trace_chain: traces });\n callback(null, item);\n}\n\nfunction addBodyTrace(item, options, callback) {\n var stack = stackFromItem(item);\n\n if (stack) {\n var trace = buildTrace(item, item.stackInfo, options);\n _.set(item, 'data.body', { trace: trace });\n callback(null, item);\n } else {\n var stackInfo = item.stackInfo;\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n\n item.message = className + ': ' + message;\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction buildTrace(item, stackInfo, options) {\n var description = item && item.data.description;\n var custom = item && item.custom;\n var stack = stackFromItem(item);\n\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n var trace = {\n exception: {\n class: className,\n message: message,\n },\n };\n\n if (description) {\n trace.exception.description = description;\n }\n\n if (stack) {\n if (stack.length === 0) {\n trace.exception.stack = stackInfo.rawStack;\n trace.exception.raw = String(stackInfo.rawException);\n }\n var stackFrame;\n var frame;\n var code;\n var pre;\n var post;\n var contextLength;\n var i, mid;\n\n trace.frames = [];\n for (i = 0; i < stack.length; ++i) {\n stackFrame = stack[i];\n frame = {\n filename: stackFrame.url ? _.sanitizeUrl(stackFrame.url) : '(unknown)',\n lineno: stackFrame.line || null,\n method:\n !stackFrame.func || stackFrame.func === '?'\n ? '[anonymous]'\n : stackFrame.func,\n colno: stackFrame.column,\n };\n if (options.sendFrameUrl) {\n frame.url = stackFrame.url;\n }\n if (\n frame.method &&\n frame.method.endsWith &&\n frame.method.endsWith('_rollbar_wrapped')\n ) {\n continue;\n }\n\n code = pre = post = null;\n contextLength = stackFrame.context ? stackFrame.context.length : 0;\n if (contextLength) {\n mid = Math.floor(contextLength / 2);\n pre = stackFrame.context.slice(0, mid);\n code = stackFrame.context[mid];\n post = stackFrame.context.slice(mid);\n }\n\n if (code) {\n frame.code = code;\n }\n\n if (pre || post) {\n frame.context = {};\n if (pre && pre.length) {\n frame.context.pre = pre;\n }\n if (post && post.length) {\n frame.context.post = post;\n }\n }\n\n if (stackFrame.args) {\n frame.args = stackFrame.args;\n }\n\n trace.frames.push(frame);\n }\n\n // NOTE(cory): reverse the frames since rollbar.com expects the most recent call last\n trace.frames.reverse();\n\n if (custom) {\n trace.extra = _.merge(custom);\n }\n }\n\n return trace;\n}\n\nfunction errorClass(stackInfo, guess, options) {\n if (stackInfo.name) {\n return stackInfo.name;\n } else if (options.guessErrorClass) {\n return guess;\n } else {\n return '(unknown)';\n }\n}\n\nfunction addScrubber(scrubFn) {\n return function (item, options, callback) {\n if (scrubFn) {\n var scrubFields = options.scrubFields || [];\n var scrubPaths = options.scrubPaths || [];\n item.data = scrubFn(item.data, scrubFields, scrubPaths);\n }\n callback(null, item);\n };\n}\n\nexport {\n handleDomException,\n handleItemWithError,\n ensureItemHasSomethingToSay,\n addBaseInfo,\n addRequestInfo,\n addClientInfo,\n addPluginInfo,\n addBody,\n addScrubber,\n};\n","import * as _ from './utility.js';\n\nfunction itemToPayload(item, options, callback) {\n if (item._isUncaught) {\n item.data._isUncaught = true;\n }\n if (item._originalArgs) {\n item.data._originalArgs = item._originalArgs;\n }\n callback(null, item);\n}\n\nfunction addPayloadOptions(item, options, callback) {\n var payloadOptions = options.payload || {};\n if (payloadOptions.body) {\n delete payloadOptions.body;\n }\n\n item.data = _.merge(item.data, payloadOptions);\n callback(null, item);\n}\n\nfunction addTelemetryData(item, options, callback) {\n if (item.telemetryEvents) {\n _.set(item, 'data.body.telemetry', item.telemetryEvents);\n }\n callback(null, item);\n}\n\nfunction addMessageWithError(item, options, callback) {\n if (!item.message) {\n callback(null, item);\n return;\n }\n var tracePath = 'data.body.trace_chain.0';\n var trace = _.get(item, tracePath);\n if (!trace) {\n tracePath = 'data.body.trace';\n trace = _.get(item, tracePath);\n }\n if (trace) {\n if (!(trace.exception && trace.exception.description)) {\n _.set(item, tracePath + '.exception.description', item.message);\n callback(null, item);\n return;\n }\n var extra = _.get(item, tracePath + '.extra') || {};\n var newExtra = _.merge(extra, { message: item.message });\n _.set(item, tracePath + '.extra', newExtra);\n }\n callback(null, item);\n}\n\nfunction userTransform(logger) {\n return function (item, options, callback) {\n var newItem = _.merge(item);\n var response = null;\n try {\n if (_.isFunction(options.transform)) {\n response = options.transform(newItem.data, item);\n }\n } catch (e) {\n options.transform = null;\n logger.error(\n 'Error while calling custom transform() function. Removing custom transform().',\n e,\n );\n callback(null, item);\n return;\n }\n if (_.isPromise(response)) {\n response.then(\n function (promisedItem) {\n if (promisedItem) {\n newItem.data = promisedItem;\n }\n callback(null, newItem);\n },\n function (error) {\n callback(error, item);\n },\n );\n } else {\n callback(null, newItem);\n }\n };\n}\n\nfunction addConfigToPayload(item, options, callback) {\n if (!options.sendConfig) {\n return callback(null, item);\n }\n var configKey = '_rollbarConfig';\n var custom = _.get(item, 'data.custom') || {};\n custom[configKey] = options;\n item.data.custom = custom;\n callback(null, item);\n}\n\nfunction addFunctionOption(options, name) {\n if (_.isFunction(options[name])) {\n options[name] = options[name].toString();\n }\n}\n\nfunction addConfiguredOptions(item, options, callback) {\n var configuredOptions = options._configuredOptions;\n\n // These must be stringified or they'll get dropped during serialization.\n addFunctionOption(configuredOptions, 'transform');\n addFunctionOption(configuredOptions, 'checkIgnore');\n addFunctionOption(configuredOptions, 'onSendCallback');\n\n delete configuredOptions.accessToken;\n item.data.notifier.configured_options = configuredOptions;\n callback(null, item);\n}\n\nfunction addDiagnosticKeys(item, options, callback) {\n var diagnostic = _.merge(\n item.notifier.client.notifier.diagnostic,\n item.diagnostic,\n );\n\n if (_.get(item, 'err._isAnonymous')) {\n diagnostic.is_anonymous = true;\n }\n\n if (item._isUncaught) {\n diagnostic.is_uncaught = item._isUncaught;\n }\n\n if (item.err) {\n try {\n diagnostic.raw_error = {\n message: item.err.message,\n name: item.err.name,\n constructor_name: item.err.constructor && item.err.constructor.name,\n filename: item.err.fileName,\n line: item.err.lineNumber,\n column: item.err.columnNumber,\n stack: item.err.stack,\n };\n } catch (e) {\n diagnostic.raw_error = { failed: String(e) };\n }\n }\n\n item.data.notifier.diagnostic = _.merge(\n item.data.notifier.diagnostic,\n diagnostic,\n );\n callback(null, item);\n}\n\nexport {\n itemToPayload,\n addPayloadOptions,\n addTelemetryData,\n addMessageWithError,\n userTransform,\n addConfigToPayload,\n addConfiguredOptions,\n addDiagnosticKeys,\n};\n","import * as _ from '../utility.js';\n\nfunction checkIgnore(item, settings) {\n if (_.get(settings, 'plugins.jquery.ignoreAjaxErrors')) {\n return !_.get(item, 'body.message.extra.isAjax');\n }\n return true;\n}\n\nexport { checkIgnore };\n","import * as _ from './utility.js';\n\nfunction checkLevel(item, settings) {\n var level = item.level;\n var levelVal = _.LEVELS[level] || 0;\n var reportLevel = settings.reportLevel;\n var reportLevelVal = _.LEVELS[reportLevel] || 0;\n\n if (levelVal < reportLevelVal) {\n return false;\n }\n return true;\n}\n\nfunction userCheckIgnore(logger) {\n return function (item, settings) {\n var isUncaught = !!item._isUncaught;\n delete item._isUncaught;\n var args = item._originalArgs;\n delete item._originalArgs;\n try {\n if (_.isFunction(settings.onSendCallback)) {\n settings.onSendCallback(isUncaught, args, item);\n }\n } catch (e) {\n settings.onSendCallback = null;\n logger.error('Error while calling onSendCallback, removing', e);\n }\n try {\n if (\n _.isFunction(settings.checkIgnore) &&\n settings.checkIgnore(isUncaught, args, item)\n ) {\n return false;\n }\n } catch (e) {\n settings.checkIgnore = null;\n logger.error('Error while calling custom checkIgnore(), removing', e);\n }\n return true;\n };\n}\n\nfunction urlIsNotBlockListed(logger) {\n return function (item, settings) {\n return !urlIsOnAList(item, settings, 'blocklist', logger);\n };\n}\n\nfunction urlIsSafeListed(logger) {\n return function (item, settings) {\n return urlIsOnAList(item, settings, 'safelist', logger);\n };\n}\n\nfunction matchFrames(trace, list, block) {\n if (!trace) {\n return !block;\n }\n\n var frames = trace.frames;\n\n if (!frames || frames.length === 0) {\n return !block;\n }\n\n var frame, filename, url, urlRegex;\n var listLength = list.length;\n var frameLength = frames.length;\n for (var i = 0; i < frameLength; i++) {\n frame = frames[i];\n filename = frame.filename;\n\n if (!_.isType(filename, 'string')) {\n return !block;\n }\n\n for (var j = 0; j < listLength; j++) {\n url = list[j];\n urlRegex = new RegExp(url);\n\n if (urlRegex.test(filename)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction urlIsOnAList(item, settings, safeOrBlock, logger) {\n // safelist is the default\n var block = false;\n if (safeOrBlock === 'blocklist') {\n block = true;\n }\n\n var list, traces;\n try {\n list = block ? settings.hostBlockList : settings.hostSafeList;\n traces = _.get(item, 'body.trace_chain') || [_.get(item, 'body.trace')];\n\n // These two checks are important to come first as they are defaults\n // in case the list is missing or the trace is missing or not well-formed\n if (!list || list.length === 0) {\n return !block;\n }\n if (traces.length === 0 || !traces[0]) {\n return !block;\n }\n\n var tracesLength = traces.length;\n for (var i = 0; i < tracesLength; i++) {\n if (matchFrames(traces[i], list, block)) {\n return true;\n }\n }\n } catch (\n e\n /* istanbul ignore next */\n ) {\n if (block) {\n settings.hostBlockList = null;\n } else {\n settings.hostSafeList = null;\n }\n var listName = block ? 'hostBlockList' : 'hostSafeList';\n logger.error(\n \"Error while reading your configuration's \" +\n listName +\n ' option. Removing custom ' +\n listName +\n '.',\n e,\n );\n return !block;\n }\n return false;\n}\n\nfunction messageIsIgnored(logger) {\n return function (item, settings) {\n var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages;\n\n try {\n messageIsIgnored = false;\n ignoredMessages = settings.ignoredMessages;\n\n if (!ignoredMessages || ignoredMessages.length === 0) {\n return true;\n }\n\n messages = messagesFromItem(item);\n\n if (messages.length === 0) {\n return true;\n }\n\n len = ignoredMessages.length;\n for (i = 0; i < len; i++) {\n rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi');\n\n for (j = 0; j < messages.length; j++) {\n messageIsIgnored = rIgnoredMessage.test(messages[j]);\n\n if (messageIsIgnored) {\n return false;\n }\n }\n }\n } catch (\n e\n /* istanbul ignore next */\n ) {\n settings.ignoredMessages = null;\n logger.error(\n \"Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages.\",\n );\n }\n\n return true;\n };\n}\n\nfunction messagesFromItem(item) {\n var body = item.body;\n var messages = [];\n\n // The payload schema only allows one of trace_chain, message, or trace.\n // However, existing test cases are based on having both trace and message present.\n // So here we preserve the ability to collect strings from any combination of these keys.\n if (body.trace_chain) {\n var traceChain = body.trace_chain;\n for (var i = 0; i < traceChain.length; i++) {\n var trace = traceChain[i];\n messages.push(_.get(trace, 'exception.message'));\n }\n }\n if (body.trace) {\n messages.push(_.get(body, 'trace.exception.message'));\n }\n if (body.message) {\n messages.push(_.get(body, 'message.body'));\n }\n return messages;\n}\n\nexport {\n checkLevel,\n userCheckIgnore,\n urlIsNotBlockListed,\n urlIsSafeListed,\n messageIsIgnored,\n};\n","/**\n * Default session replay recording options\n * See https://github.com/rrweb-io/rrweb/blob/master/guide.md#options for details\n */\nexport default {\n enabled: false, // Whether recording is enabled\n autoStart: true, // Start recording automatically when Rollbar initializes\n\n // defaults used by triggers that don't specify them\n triggerDefaults: {\n samplingRatio: 1.0,\n preDuration: 300,\n postDuration: 5,\n },\n triggers: [\n {\n type: 'occurrence',\n level: ['error', 'critical'],\n },\n ],\n\n debug: {\n logErrors: true, // Whether to log errors emitted by rrweb.\n logEmits: false, // Whether to log emitted events\n },\n\n // Recording options\n inlineStylesheet: true, // Whether to inline stylesheets to improve replay accuracy\n inlineImages: false, // Whether to record the image content\n collectFonts: true, // Whether to collect fonts in the website\n\n // Privacy options\n // Fine-grained control over which input types to mask\n // By default only password inputs are masked if maskInputs is true\n maskInputOptions: {\n password: true,\n email: false,\n tel: false,\n text: false,\n color: false,\n date: false,\n 'datetime-local': false,\n month: false,\n number: false,\n range: false,\n search: false,\n time: false,\n url: false,\n week: false,\n },\n\n // Mask all input values\n maskAllInputs: false,\n\n // Class names to block, mask, or ignore the content of elements.\n blockClass: 'rb-block',\n maskTextClass: 'rb-mask',\n ignoreClass: 'rb-ignore',\n\n // Remove unnecessary parts of the DOM\n // By default all removable elements are removed\n slimDOMOptions: {\n script: true, // Remove script elements\n comment: true, // Remove comments\n headFavicon: true, // Remove favicons in the head\n headWhitespace: true, // Remove whitespace in head\n headMetaDescKeywords: true, // Remove meta description and keywords\n headMetaSocial: true, // Remove social media meta tags\n headMetaRobots: true, // Remove robots meta directives\n headMetaHttpEquiv: true, // Remove http-equiv meta directives\n headMetaAuthorship: true, // Remove authorship meta directives\n headMetaVerification: true, // Remove verification meta directives\n },\n\n // Custom callbacks for advanced use cases\n // These are undefined by default and can be set programmatically\n // maskInputFn: undefined, // Custom function to mask input values\n // maskTextFn: undefined, // Custom function to mask text content\n // errorHandler: undefined, // Custom error handler for recording errors\n\n // Plugin system\n // plugins: [] // List of plugins to use (must be set programmatically)\n};\n","/**\n * Default options shared across platforms\n */\nexport const version = '3.0.0-rc.1';\nexport const endpoint = 'api.rollbar.com/api/1/item/';\nexport const logLevel = 'debug';\nexport const reportLevel = 'debug';\nexport const uncaughtErrorLevel = 'error';\nexport const maxItems = 0;\nexport const itemsPerMin = 60;\n\nexport const commonScrubFields = [\n 'pw',\n 'pass',\n 'passwd',\n 'password',\n 'secret',\n 'confirm_password',\n 'confirmPassword',\n 'password_confirmation',\n 'passwordConfirmation',\n 'access_token',\n 'accessToken',\n 'X-Rollbar-Access-Token',\n 'secret_key',\n 'secretKey',\n 'secretToken',\n];\n\nexport const apiScrubFields = [\n 'api_key',\n 'authenticity_token',\n 'oauth_token',\n 'token',\n 'user_session_secret',\n];\n\nexport const requestScrubFields = [\n 'request.session.csrf',\n 'request.session._csrf',\n 'request.params._csrf',\n 'request.cookie',\n 'request.cookies',\n];\n\nexport const commonScrubHeaders = [\n 'authorization',\n 'www-authorization',\n 'http_authorization',\n 'omniauth.auth',\n 'cookie',\n 'oauth-access-token',\n 'x-access-token',\n 'x_csrf_token',\n 'http_x_csrf_token',\n 'x-csrf-token',\n];\n\n// For backward compatibility with default export\nexport default {\n version,\n endpoint,\n logLevel,\n reportLevel,\n uncaughtErrorLevel,\n maxItems,\n itemsPerMin,\n};\n","/**\n * Default browser options\n */\nimport { commonScrubFields } from '../defaults.js';\n\nexport const scrubFields = [\n ...commonScrubFields,\n 'cc-number',\n 'card number',\n 'cardnumber',\n 'cardnum',\n 'ccnum',\n 'ccnumber',\n 'cc num',\n 'creditcardnumber',\n 'credit card number',\n 'newcreditcardnumber',\n 'new credit card',\n 'creditcardno',\n 'credit card no',\n 'card#',\n 'card #',\n 'cc-csc',\n 'cvc',\n 'cvc2',\n 'cvv2',\n 'ccv2',\n 'security code',\n 'card verification',\n 'name on credit card',\n 'name on card',\n 'nameoncard',\n 'cardholder',\n 'card holder',\n 'name des karteninhabers',\n 'ccname',\n 'card type',\n 'cardtype',\n 'cc type',\n 'cctype',\n 'payment type',\n 'expiration date',\n 'expirationdate',\n 'expdate',\n 'cc-exp',\n 'ccmonth',\n 'ccyear',\n];\n\n// For compatibility with existing code that expects default export with scrubFields property\nexport default { scrubFields };\n","import Client from '../rollbar.js';\nimport * as _ from '../utility.js';\nimport API from '../api.js';\nimport logger from '../logger.js';\nimport * as globals from './globalSetup.js';\n\nimport Transport from './transport.js';\nimport * as urllib from './url.js';\n\nimport * as transforms from './transforms.js';\nimport * as sharedTransforms from '../transforms.js';\nimport * as predicates from './predicates.js';\nimport * as sharedPredicates from '../predicates.js';\nimport errorParser from '../errorParser.js';\nimport replayDefaults from './replay/defaults.js';\nimport tracingDefaults from '../tracing/defaults.js';\n\n// Used to support global `Rollbar` instance.\nlet _instance = null;\n\nclass Rollbar {\n constructor(options, client) {\n logger.init({ logLevel: options.logLevel || 'error' });\n this.options = _.handleOptions(defaultOptions, options, null, logger);\n this.options._configuredOptions = options;\n this.components = this.components || {};\n const Telemeter = this.components.telemeter;\n const Instrumenter = this.components.instrumenter;\n this.wrapGlobals = this.components.wrapGlobals;\n this.scrub = this.components.scrub;\n const truncation = this.components.truncation;\n const Tracing = this.components.tracing;\n const Replay = this.components.replay;\n\n const transport = new Transport(truncation);\n const api = new API(this.options, transport, urllib, truncation);\n if (Tracing) {\n this.tracing = new Tracing(_gWindow(), api, this.options);\n this.tracing.initSession();\n }\n if (Telemeter) {\n this.telemeter = new Telemeter(this.options, this.tracing);\n }\n\n if (Replay && _.isBrowser()) {\n const replayOptions = this.options.replay;\n this.replay = new Replay({\n tracing: this.tracing,\n telemeter: this.telemeter,\n options: replayOptions,\n });\n\n if (replayOptions.enabled && replayOptions.autoStart) {\n this.replay.recorder.start();\n }\n }\n\n this.client =\n client ||\n new Client(\n this.options,\n api,\n logger,\n this.telemeter,\n this.tracing,\n this.replay,\n 'browser',\n );\n var gWindow = _gWindow();\n var gDocument = typeof document != 'undefined' && document;\n this.isChrome = gWindow.chrome && gWindow.chrome.runtime; // check .runtime to avoid Edge browsers\n this.anonymousErrorsPending = 0;\n addTransformsToNotifier(this.client.notifier, this, gWindow);\n addPredicatesToQueue(this.client.queue);\n this.setupUnhandledCapture();\n if (Instrumenter) {\n this.instrumenter = new Instrumenter(\n this.options,\n this.client.telemeter,\n this,\n gWindow,\n gDocument,\n );\n this.instrumenter.instrument();\n }\n\n this.setSessionAttributesFromOptions(options);\n\n // Used with rollbar-react for rollbar-react-native compatibility.\n this.rollbar = this;\n }\n\n static init(options, client) {\n if (_instance) {\n return _instance.global(options).configure(options);\n }\n _instance = new Rollbar(options, client);\n return _instance;\n }\n\n static setComponents(components) {\n Rollbar.prototype.components = components;\n }\n\n global(options) {\n this.client.global(options);\n return this;\n }\n\n configure(options, payloadData) {\n if (options.logLevel) {\n logger.init({ logLevel: options.logLevel });\n }\n this.setSessionAttributesFromOptions(options);\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.handleOptions(oldOptions, options, payload, logger);\n this.options._configuredOptions = _.handleOptions(\n oldOptions._configuredOptions,\n options,\n payload,\n );\n\n this.tracing?.configure(this.options);\n this.replay?.configure(this.options.replay);\n this.client.configure(this.options, payloadData);\n this.instrumenter?.configure(this.options);\n this.setupUnhandledCapture();\n return this;\n }\n\n lastError() {\n return this.client.lastError;\n }\n\n log() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.log(item);\n return { uuid: uuid };\n }\n\n debug() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.debug(item);\n return { uuid: uuid };\n }\n\n info() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.info(item);\n return { uuid: uuid };\n }\n\n warn() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warn(item);\n return { uuid: uuid };\n }\n\n warning() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warning(item);\n return { uuid: uuid };\n }\n\n error() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.error(item);\n return { uuid: uuid };\n }\n\n critical() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.critical(item);\n return { uuid: uuid };\n }\n\n buildJsonPayload(item) {\n return this.client.buildJsonPayload(item);\n }\n\n sendJsonPayload(jsonPayload) {\n return this.client.sendJsonPayload(jsonPayload);\n }\n\n triggerDirectReplay(context) {\n return this.triggerReplay({ type: 'direct', ...context });\n }\n\n triggerReplay(context) {\n if (!this.replay) return null;\n\n return this.replay.triggerReplay(context);\n }\n\n setupUnhandledCapture() {\n var gWindow = _gWindow();\n\n if (!this.unhandledExceptionsInitialized) {\n if (\n this.options.captureUncaught ||\n this.options.handleUncaughtExceptions\n ) {\n globals.captureUncaughtExceptions(gWindow, this);\n if (this.wrapGlobals && this.options.wrapGlobalEventHandlers) {\n this.wrapGlobals(gWindow, this);\n }\n this.unhandledExceptionsInitialized = true;\n }\n }\n if (!this.unhandledRejectionsInitialized) {\n if (\n this.options.captureUnhandledRejections ||\n this.options.handleUnhandledRejections\n ) {\n globals.captureUnhandledRejections(gWindow, this);\n this.unhandledRejectionsInitialized = true;\n }\n }\n }\n\n handleUncaughtException(message, url, lineno, colno, error, context) {\n if (\n !this.options.captureUncaught &&\n !this.options.handleUncaughtExceptions\n ) {\n return;\n }\n\n // Chrome will always send 5+ arguments and error will be valid or null, not undefined.\n // If error is undefined, we have a different caller.\n // Chrome also sends errors from web workers with null error, but does not invoke\n // prepareStackTrace() for these. Test for empty url to skip them.\n if (\n this.options.inspectAnonymousErrors &&\n this.isChrome &&\n error === null &&\n url === ''\n ) {\n return 'anonymous';\n }\n\n var item;\n var stackInfo = _.makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n 'onerror',\n 'uncaught exception',\n errorParser,\n );\n if (_.isError(error)) {\n item = this._createItem([message, error, context]);\n item._unhandledStackInfo = stackInfo;\n } else if (_.isError(url)) {\n item = this._createItem([message, url, context]);\n item._unhandledStackInfo = stackInfo;\n } else {\n item = this._createItem([message, context]);\n item.stackInfo = stackInfo;\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n this.client.log(item);\n }\n\n /**\n * Chrome only. Other browsers will ignore.\n *\n * Use Error.prepareStackTrace to extract information about errors that\n * do not have a valid error object in onerror().\n *\n * In tested version of Chrome, onerror is called first but has no way\n * to communicate with prepareStackTrace. Use a counter to let this\n * handler know which errors to send to Rollbar.\n *\n * In config options, set inspectAnonymousErrors to enable.\n */\n handleAnonymousErrors() {\n if (!this.options.inspectAnonymousErrors || !this.isChrome) {\n return;\n }\n\n var r = this;\n function prepareStackTrace(error, _stack) {\n if (r.options.inspectAnonymousErrors) {\n if (r.anonymousErrorsPending) {\n // This is the only known way to detect that onerror saw an anonymous error.\n // It depends on onerror reliably being called before Error.prepareStackTrace,\n // which so far holds true on tested versions of Chrome. If versions of Chrome\n // are tested that behave differently, this logic will need to be updated\n // accordingly.\n r.anonymousErrorsPending -= 1;\n\n if (!error) {\n // Not likely to get here, but calling handleUncaughtException from here\n // without an error object would throw off the anonymousErrorsPending counter,\n // so return now.\n return;\n }\n\n // Allow this to be tracked later.\n error._isAnonymous = true;\n\n // url, lineno, colno shouldn't be needed for these errors.\n // If that changes, update this accordingly, using the unused\n // _stack param as needed (rather than parse error.toString()).\n r.handleUncaughtException(error.message, null, null, null, error);\n }\n }\n\n // Workaround to ensure stack is preserved for normal errors.\n return error.stack;\n }\n\n // https://v8.dev/docs/stack-trace-api\n try {\n Error.prepareStackTrace = prepareStackTrace;\n } catch (e) {\n this.options.inspectAnonymousErrors = false;\n this.error('anonymous error handler failed', e);\n }\n }\n\n handleUnhandledRejection(reason, promise) {\n if (\n !this.options.captureUnhandledRejections &&\n !this.options.handleUnhandledRejections\n ) {\n return;\n }\n\n var message = 'unhandled rejection was null or undefined!';\n if (reason) {\n if (reason.message) {\n message = reason.message;\n } else {\n var reasonResult = _.stringify(reason);\n if (reasonResult.value) {\n message = reasonResult.value;\n }\n }\n }\n var context =\n (reason && reason._rollbarContext) ||\n (promise && promise._rollbarContext);\n\n var item;\n if (_.isError(reason)) {\n item = this._createItem([message, reason, context]);\n } else {\n item = this._createItem([message, reason, context]);\n item.stackInfo = _.makeUnhandledStackInfo(\n message,\n '',\n 0,\n 0,\n null,\n 'unhandledrejection',\n '',\n errorParser,\n );\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n item._originalArgs = item._originalArgs || [];\n item._originalArgs.push(promise);\n this.client.log(item);\n }\n\n wrap(f, context, _before) {\n try {\n var ctxFn;\n if (_.isFunction(context)) {\n ctxFn = context;\n } else {\n ctxFn = function () {\n return context || {};\n };\n }\n\n if (!_.isFunction(f)) {\n return f;\n }\n\n if (f._isWrap) {\n return f;\n }\n\n if (!f._rollbar_wrapped) {\n f._rollbar_wrapped = function () {\n if (_before && _.isFunction(_before)) {\n _before.apply(this, arguments);\n }\n try {\n return f.apply(this, arguments);\n } catch (exc) {\n var e = exc;\n if (e && window._rollbarWrappedError !== e) {\n if (_.isType(e, 'string')) {\n e = new String(e);\n }\n e._rollbarContext = ctxFn() || {};\n e._rollbarContext._wrappedSource = f.toString();\n\n window._rollbarWrappedError = e;\n }\n throw e;\n }\n };\n\n f._rollbar_wrapped._isWrap = true;\n\n if (f.hasOwnProperty) {\n for (var prop in f) {\n if (f.hasOwnProperty(prop) && prop !== '_rollbar_wrapped') {\n f._rollbar_wrapped[prop] = f[prop];\n }\n }\n }\n }\n\n return f._rollbar_wrapped;\n } catch (e) {\n // Return the original function if the wrap fails.\n return f;\n }\n }\n\n captureEvent() {\n var event = _.createTelemetryEvent(arguments);\n return this.client.captureEvent(event.type, event.metadata, event.level);\n }\n\n setSessionUser(user) {\n if (!this.tracing?.session) return;\n\n this.tracing.session.setUser(user);\n }\n\n setSessionAttributes(attrs) {\n if (!this.tracing?.session) return;\n\n attrs = { ...attrs };\n\n this.tracing.session.setAttributes(attrs);\n }\n\n setSessionAttributesFromOptions(options) {\n const person = options.person || options.payload?.person;\n if (person) {\n this.setSessionUser(person);\n }\n const code_version =\n options.client?.javascript?.code_version ||\n options.codeVersion ||\n options.code_version ||\n options.payload?.client?.javascript?.code_version ||\n options.payload?.code_version ||\n options.payload?.codeVersion;\n this.setSessionAttributes({\n 'rollbar.codeVersion': code_version,\n 'rollbar.notifier.name': 'rollbar-browser-js',\n 'rollbar.notifier.version': options.version,\n });\n }\n\n // The following two methods are used internally and are not meant for public use\n captureDomContentLoaded(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureDomContentLoaded(ts);\n }\n\n captureLoad(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureLoad(ts);\n }\n\n loadFull() {\n logger.info(\n 'Unexpected Rollbar.loadFull() called on a Notifier instance. This can happen when Rollbar is loaded multiple times.',\n );\n }\n\n _createItem(args) {\n return _.createItem(args, logger, this);\n }\n\n // Static version of instance methods support the legacy pattern of a\n // global `Rollbar` instance, where after calling `Rollbar.init()`,\n // `Rollbar` can be used as if it were an instance.\n // If support for this pattern is dropped, these static methods can be removed.\n static callInstance(method, args) {\n if (!_instance) {\n const message = 'Rollbar is not initialized';\n logger.error(message);\n const maybeCallback = _getFirstFunction(args);\n if (maybeCallback) {\n maybeCallback(new Error(message));\n }\n return;\n }\n return _instance[method].apply(_instance, args);\n }\n\n static global = (...args) => Rollbar.callInstance('global', args);\n static configure = (...args) => Rollbar.callInstance('configure', args);\n static lastError = (...args) => Rollbar.callInstance('lastError', args);\n static log = (...args) => Rollbar.callInstance('log', args);\n static debug = (...args) => Rollbar.callInstance('debug', args);\n static info = (...args) => Rollbar.callInstance('info', args);\n static warn = (...args) => Rollbar.callInstance('warn', args);\n static warning = (...args) => Rollbar.callInstance('warning', args);\n static error = (...args) => Rollbar.callInstance('error', args);\n static critical = (...args) => Rollbar.callInstance('critical', args);\n static buildJsonPayload = (...args) =>\n Rollbar.callInstance('buildJsonPayload', args);\n static sendJsonPayload = (...args) =>\n Rollbar.callInstance('sendJsonPayload', args);\n static wrap = (...args) => Rollbar.callInstance('wrap', args);\n static captureEvent = (...args) => Rollbar.callInstance('captureEvent', args);\n}\n\n/* Internal */\n\nfunction addTransformsToNotifier(notifier, rollbar, gWindow) {\n notifier\n .addTransform(transforms.handleDomException)\n .addTransform(transforms.handleItemWithError)\n .addTransform(transforms.ensureItemHasSomethingToSay)\n .addTransform(transforms.addBaseInfo)\n .addTransform(transforms.addRequestInfo(gWindow))\n .addTransform(transforms.addClientInfo(gWindow))\n .addTransform(transforms.addPluginInfo(gWindow))\n .addTransform(transforms.addBody)\n .addTransform(sharedTransforms.addMessageWithError)\n .addTransform(sharedTransforms.addTelemetryData)\n .addTransform(sharedTransforms.addConfigToPayload)\n .addTransform(transforms.addScrubber(rollbar.scrub))\n .addTransform(sharedTransforms.addPayloadOptions)\n .addTransform(sharedTransforms.userTransform(logger))\n .addTransform(sharedTransforms.addConfiguredOptions)\n .addTransform(sharedTransforms.addDiagnosticKeys)\n .addTransform(sharedTransforms.itemToPayload);\n}\n\nfunction addPredicatesToQueue(queue) {\n queue\n .addPredicate(sharedPredicates.checkLevel)\n .addPredicate(predicates.checkIgnore)\n .addPredicate(sharedPredicates.userCheckIgnore(logger))\n .addPredicate(sharedPredicates.urlIsNotBlockListed(logger))\n .addPredicate(sharedPredicates.urlIsSafeListed(logger))\n .addPredicate(sharedPredicates.messageIsIgnored(logger));\n}\n\nfunction _getFirstFunction(args) {\n for (var i = 0, len = args.length; i < len; ++i) {\n if (_.isFunction(args[i])) {\n return args[i];\n }\n }\n return undefined;\n}\n\nfunction _gWindow() {\n return (\n (typeof window != 'undefined' && window) ||\n (typeof self != 'undefined' && self)\n );\n}\n\nimport {\n version,\n logLevel,\n reportLevel,\n uncaughtErrorLevel,\n endpoint,\n} from '../defaults.js';\nimport browserDefaults from './defaults.js';\n\nconst defaultOptions = {\n environment: 'unknown',\n version: version,\n scrubFields: browserDefaults.scrubFields,\n logLevel: logLevel,\n reportLevel: reportLevel,\n uncaughtErrorLevel: uncaughtErrorLevel,\n endpoint: endpoint,\n verbose: false,\n enabled: true,\n transmit: true,\n sendConfig: false,\n includeItemsInTelemetry: true,\n captureIp: true,\n inspectAnonymousErrors: true,\n ignoreDuplicateErrors: true,\n wrapGlobalEventHandlers: false,\n replay: replayDefaults,\n tracing: tracingDefaults,\n};\n\nexport default Rollbar;\n","function captureUncaughtExceptions(window, handler, shim) {\n if (!window) {\n return;\n }\n var oldOnError;\n\n if (typeof handler._rollbarOldOnError === 'function') {\n oldOnError = handler._rollbarOldOnError;\n } else if (window.onerror) {\n oldOnError = window.onerror;\n while (oldOnError._rollbarOldOnError) {\n oldOnError = oldOnError._rollbarOldOnError;\n }\n handler._rollbarOldOnError = oldOnError;\n }\n\n handler.handleAnonymousErrors();\n\n var fn = function () {\n var args = Array.prototype.slice.call(arguments, 0);\n _rollbarWindowOnError(window, handler, oldOnError, args);\n };\n if (shim) {\n fn._rollbarOldOnError = oldOnError;\n }\n window.onerror = fn;\n}\n\nfunction _rollbarWindowOnError(window, r, old, args) {\n if (window._rollbarWrappedError) {\n if (!args[4]) {\n args[4] = window._rollbarWrappedError;\n }\n if (!args[5]) {\n args[5] = window._rollbarWrappedError._rollbarContext;\n }\n window._rollbarWrappedError = null;\n }\n\n var ret = r.handleUncaughtException.apply(r, args);\n\n if (old) {\n old.apply(window, args);\n }\n\n // Let other chained onerror handlers above run before setting this.\n // If an error is thrown and caught within a chained onerror handler,\n // Error.prepareStackTrace() will see that one before the one we want.\n if (ret === 'anonymous') {\n r.anonymousErrorsPending += 1; // See Rollbar.prototype.handleAnonymousErrors()\n }\n}\n\nfunction captureUnhandledRejections(window, handler, shim) {\n if (!window) {\n return;\n }\n\n if (\n typeof window._rollbarURH === 'function' &&\n window._rollbarURH.belongsToShim\n ) {\n window.removeEventListener('unhandledrejection', window._rollbarURH);\n }\n\n var rejectionHandler = function (evt) {\n var reason, promise, detail;\n try {\n reason = evt.reason;\n } catch (e) {\n reason = undefined;\n }\n try {\n promise = evt.promise;\n } catch (e) {\n promise = '[unhandledrejection] error getting `promise` from event';\n }\n try {\n detail = evt.detail;\n if (!reason && detail) {\n reason = detail.reason;\n promise = detail.promise;\n }\n } catch (e) {\n // Ignore\n }\n if (!reason) {\n reason = '[unhandledrejection] error getting `reason` from event';\n }\n\n if (handler && handler.handleUnhandledRejection) {\n handler.handleUnhandledRejection(reason, promise);\n }\n };\n rejectionHandler.belongsToShim = shim;\n window._rollbarURH = rejectionHandler;\n window.addEventListener('unhandledrejection', rejectionHandler);\n}\n\nexport { captureUncaughtExceptions, captureUnhandledRejections };\n","/**\n * Default tracing options\n */\nexport default {\n enabled: false,\n endpoint: 'api.rollbar.com/api/1/session/',\n};\n","import * as _ from './utility.js';\n\nconst MAX_EVENTS = 100;\n\n// Temporary workaround while solving commonjs -> esm issues in Node 18 - 20.\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\nclass Telemeter {\n constructor(options, tracing) {\n this.queue = [];\n this.options = _.merge(options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n this.tracing = tracing;\n this.telemetrySpan = this.tracing?.startSpan('rollbar-telemetry', {});\n }\n\n configure(options) {\n var oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n var newMaxEvents = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n var deleteCount = 0;\n if (this.queue.length > newMaxEvents) {\n deleteCount = this.queue.length - newMaxEvents;\n }\n this.maxQueueSize = newMaxEvents;\n this.queue.splice(0, deleteCount);\n }\n\n copyEvents() {\n var events = Array.prototype.slice.call(this.queue, 0);\n if (_.isFunction(this.options.filterTelemetry)) {\n try {\n var i = events.length;\n while (i--) {\n if (this.options.filterTelemetry(events[i])) {\n events.splice(i, 1);\n }\n }\n } catch (e) {\n this.options.filterTelemetry = null;\n }\n }\n\n // Filter until supported in legacy telemetry\n events = events.filter((e) => e.type !== 'connectivity');\n\n // Remove internal keys from output\n events = events.map(({ otelAttributes, ...event }) => event);\n\n return events;\n }\n\n exportTelemetrySpan(attributes = {}) {\n if (this.telemetrySpan) {\n this.telemetrySpan.end(attributes);\n this.telemetrySpan = this.tracing.startSpan('rollbar-telemetry', {});\n }\n }\n\n capture(\n type,\n metadata,\n level,\n rollbarUUID,\n timestamp = null,\n otelAttributes = null,\n ) {\n var e = {\n level: getLevel(type, level),\n type: type,\n timestamp_ms: timestamp || _.now(),\n body: metadata,\n source: 'client',\n };\n if (rollbarUUID) {\n e.uuid = rollbarUUID;\n }\n if (otelAttributes) {\n e.otelAttributes = otelAttributes;\n }\n\n try {\n if (\n _.isFunction(this.options.filterTelemetry) &&\n this.options.filterTelemetry(e)\n ) {\n return false;\n }\n } catch (exc) {\n this.options.filterTelemetry = null;\n }\n\n this.push(e);\n return e;\n }\n\n captureEvent(type, metadata, level, rollbarUUID) {\n return this.capture(type, metadata, level, rollbarUUID);\n }\n\n captureError(err, level, rollbarUUID, timestamp) {\n const message = err.message || String(err);\n var metadata = { message };\n if (err.stack) {\n metadata.stack = err.stack;\n }\n const otelAttributes = {\n message,\n level,\n type: 'error',\n uuid: rollbarUUID,\n };\n\n this.telemetrySpan?.addEvent(\n 'rollbar-occurrence-event',\n otelAttributes,\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'error',\n metadata,\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureLog(message, level, rollbarUUID, timestamp) {\n let otelAttributes = null;\n\n // If the uuid is present, this is a message occurrence.\n if (rollbarUUID) {\n ((otelAttributes = {\n message,\n level,\n type: 'message',\n uuid: rollbarUUID,\n }),\n this.telemetrySpan?.addEvent(\n 'rollbar-occurrence-event',\n otelAttributes,\n fromMillis(timestamp),\n ));\n } else {\n otelAttributes = { message, level };\n this.telemetrySpan?.addEvent(\n 'rollbar-log-event',\n otelAttributes,\n fromMillis(timestamp),\n );\n }\n\n return this.capture(\n 'log',\n { message },\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNetwork(metadata, subtype, rollbarUUID, requestData) {\n subtype = subtype || 'xhr';\n metadata.subtype = metadata.subtype || subtype;\n if (requestData) {\n metadata.request = requestData;\n }\n const level = this.levelFromStatus(metadata.status_code);\n const endTimeNano = (metadata.end_time_ms || 0) * 1e6;\n const otelAttributes = {\n type: metadata.subtype,\n method: metadata.method,\n url: metadata.url,\n statusCode: metadata.status_code,\n 'request.headers': JSON.stringify(metadata.request_headers || {}),\n 'response.headers': JSON.stringify(metadata.response?.headers || {}),\n 'response.timeUnixNano': endTimeNano.toString(),\n };\n\n this.telemetrySpan?.addEvent(\n 'rollbar-network-event',\n otelAttributes,\n fromMillis(metadata.start_time_ms),\n );\n\n return this.capture(\n 'network',\n metadata,\n level,\n rollbarUUID,\n metadata.start_time_ms,\n otelAttributes,\n );\n }\n\n levelFromStatus(statusCode) {\n if (statusCode >= 200 && statusCode < 400) {\n return 'info';\n }\n if (statusCode === 0 || statusCode >= 400) {\n return 'error';\n }\n return 'info';\n }\n\n captureDom(subtype, element, value, checked, rollbarUUID) {\n var metadata = {\n subtype: subtype,\n element: element,\n };\n if (value !== undefined) {\n metadata.value = value;\n }\n if (checked !== undefined) {\n metadata.checked = checked;\n }\n return this.capture('dom', metadata, 'info', rollbarUUID);\n }\n\n captureInput({ type, isSynthetic, element, value, timestamp }) {\n const name = 'rollbar-input-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n value,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n value,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureClick({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-click-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n _getRepeatedEvent(name, attributes) {\n const lastEvent = this._lastEvent(this.queue);\n\n if (\n lastEvent &&\n lastEvent.body.type === name &&\n lastEvent.otelAttributes.target === attributes.target\n ) {\n return lastEvent;\n }\n }\n\n _updateRepeatedEvent(event, attributes, timestamp) {\n const duration = Math.max(timestamp - event.timestamp_ms, 1);\n event.body.value = attributes.value;\n event.otelAttributes.value = attributes.value;\n event.otelAttributes.height = attributes.height;\n event.otelAttributes.width = attributes.width;\n event.otelAttributes.textZoomRatio = attributes.textZoomRatio;\n event.otelAttributes['endTimeUnixNano'] = fromMillis(timestamp);\n event.otelAttributes['durationUnixNano'] = fromMillis(duration);\n event.otelAttributes.count = (event.otelAttributes.count || 1) + 1;\n event.otelAttributes.rate = event.otelAttributes.count / (duration / 1000);\n }\n\n _lastEvent(list) {\n return list.length > 0 ? list[list.length - 1] : null;\n }\n\n captureFocus({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-focus-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureResize({\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n timestamp,\n }) {\n const name = 'rollbar-resize-event';\n const metadata = {\n type: name,\n subtype: type,\n width,\n height,\n textZoomRatio,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n };\n\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureDragDrop({\n type,\n isSynthetic,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n timestamp,\n }) {\n const name = 'rollbar-dragdrop-event';\n let metadata = {\n type: name,\n subtype: type,\n isSynthetic,\n };\n\n let otelAttributes = {\n type,\n isSynthetic,\n };\n\n if (type === 'dragstart') {\n metadata = { ...metadata, element, dropEffect, effectAllowed };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n };\n }\n\n if (type === 'drop') {\n metadata = {\n ...metadata,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNavigation(from, to, rollbarUUID, timestamp) {\n this.telemetrySpan?.addEvent(\n 'rollbar-navigation-event',\n { 'previous.url.full': from, 'url.full': to },\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'navigation',\n { from, to },\n 'info',\n rollbarUUID,\n timestamp,\n );\n }\n\n captureDomContentLoaded(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'DOMContentLoaded' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'DOMContentLoaded'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureLoad(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'load' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'load'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureConnectivityChange({ type, isSynthetic, timestamp }) {\n const name = 'rollbar-connectivity-event';\n const metadata = {\n type: name,\n subtype: type,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'connectivity',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n // Only intended to be used internally by the notifier\n _captureRollbarItem(item) {\n if (!this.options.includeItemsInTelemetry) {\n return;\n }\n if (item.err) {\n return this.captureError(item.err, item.level, item.uuid, item.timestamp);\n }\n if (item.message) {\n return this.captureLog(\n item.message,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n if (item.custom) {\n return this.capture(\n 'log',\n item.custom,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n }\n\n push(e) {\n this.queue.push(e);\n if (this.queue.length > this.maxQueueSize) {\n this.queue.shift();\n }\n }\n}\n\nfunction getLevel(type, level) {\n if (level) {\n return level;\n }\n var defaultLevel = {\n error: 'error',\n manual: 'info',\n };\n return defaultLevel[type] || 'info';\n}\n\nexport default Telemeter;\n","/*\n * headers - Detect when fetch Headers are undefined and use a partial polyfill.\n *\n * A full polyfill is not used in order to keep package size as small as possible.\n * Since this is only used internally and is not added to the window object,\n * the full interface doesn't need to be supported.\n *\n * This implementation is modified from whatwg-fetch:\n * https://github.com/github/fetch\n */\nfunction headers(headers) {\n if (typeof Headers === 'undefined') {\n return new FetchHeaders(headers);\n }\n\n return new Headers(headers);\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n return name.toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value;\n}\n\nfunction iteratorFor(items) {\n var iterator = {\n next: function () {\n var value = items.shift();\n return { done: value === undefined, value: value };\n },\n };\n\n return iterator;\n}\n\nfunction FetchHeaders(headers) {\n this.map = {};\n\n if (headers instanceof FetchHeaders) {\n headers.forEach(function (value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function (header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function (name) {\n this.append(name, headers[name]);\n }, this);\n }\n}\n\nFetchHeaders.prototype.append = function (name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n};\n\nFetchHeaders.prototype.get = function (name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null;\n};\n\nFetchHeaders.prototype.has = function (name) {\n return this.map.hasOwnProperty(normalizeName(name));\n};\n\nFetchHeaders.prototype.forEach = function (callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n};\n\nFetchHeaders.prototype.entries = function () {\n var items = [];\n this.forEach(function (value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items);\n};\n\nexport default headers;\n","function replace(obj, name, replacement, replacements, type) {\n var orig = obj[name];\n obj[name] = replacement(orig);\n if (replacements) {\n replacements[type].push([obj, name, orig]);\n }\n}\n\nexport default replace;\n","import * as _ from '../utility.js';\n\nfunction traverse(obj, func, seen) {\n var k, v, i;\n var isObj = _.isType(obj, 'object');\n var isArray = _.isType(obj, 'array');\n var keys = [];\n var seenIndex;\n\n // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11.\n seen = seen || { obj: [], mapped: [] };\n\n if (isObj) {\n seenIndex = seen.obj.indexOf(obj);\n\n if (isObj && seenIndex !== -1) {\n // Prefer the mapped object if there is one.\n return seen.mapped[seenIndex] || seen.obj[seenIndex];\n }\n\n seen.obj.push(obj);\n seenIndex = seen.obj.length - 1;\n }\n\n if (isObj) {\n for (k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k)) {\n keys.push(k);\n }\n }\n } else if (isArray) {\n for (i = 0; i < obj.length; ++i) {\n keys.push(i);\n }\n }\n\n var result = isObj ? {} : [];\n var same = true;\n for (i = 0; i < keys.length; ++i) {\n k = keys[i];\n v = obj[k];\n result[k] = func(k, v, seen);\n same = same && result[k] === obj[k];\n }\n\n if (isObj && !same) {\n seen.mapped[seenIndex] = result;\n }\n\n return !same ? result : obj;\n}\n\nexport default traverse;\n","import * as _ from './utility.js';\nimport traverse from './utility/traverse.js';\n\nfunction scrub(data, scrubFields, scrubPaths) {\n scrubFields = scrubFields || [];\n\n if (scrubPaths) {\n for (var i = 0; i < scrubPaths.length; ++i) {\n scrubPath(data, scrubPaths[i]);\n }\n }\n\n var paramRes = _getScrubFieldRegexs(scrubFields);\n var queryRes = _getScrubQueryParamRegexs(scrubFields);\n\n function redactQueryParam(dummy0, paramPart) {\n return paramPart + _.redact();\n }\n\n function paramScrubber(v) {\n var i;\n if (_.isType(v, 'string')) {\n for (i = 0; i < queryRes.length; ++i) {\n v = v.replace(queryRes[i], redactQueryParam);\n }\n }\n return v;\n }\n\n function valScrubber(k, v) {\n var i;\n for (i = 0; i < paramRes.length; ++i) {\n if (paramRes[i].test(k)) {\n v = _.redact();\n break;\n }\n }\n return v;\n }\n\n function scrubber(k, v, seen) {\n var tmpV = valScrubber(k, v);\n if (tmpV === v) {\n if (_.isType(v, 'object') || _.isType(v, 'array')) {\n return traverse(v, scrubber, seen);\n }\n return paramScrubber(tmpV);\n } else {\n return tmpV;\n }\n }\n\n return traverse(data, scrubber);\n}\n\nfunction scrubPath(obj, path) {\n var keys = path.split('.');\n var last = keys.length - 1;\n try {\n for (var i = 0; i <= last; ++i) {\n if (i < last) {\n obj = obj[keys[i]];\n } else {\n obj[keys[i]] = _.redact();\n }\n }\n } catch (e) {\n // Missing key is OK;\n }\n}\n\nfunction _getScrubFieldRegexs(scrubFields) {\n var ret = [];\n var pat;\n for (var i = 0; i < scrubFields.length; ++i) {\n pat = '^\\\\[?(%5[bB])?' + scrubFields[i] + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?$';\n ret.push(new RegExp(pat, 'i'));\n }\n return ret;\n}\n\nfunction _getScrubQueryParamRegexs(scrubFields) {\n var ret = [];\n var pat;\n for (var i = 0; i < scrubFields.length; ++i) {\n pat = '\\\\[?(%5[bB])?' + scrubFields[i] + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?';\n ret.push(new RegExp('(' + pat + '=)([^&\\\\n]+)', 'igm'));\n }\n return ret;\n}\n\nexport default scrub;\n","function getElementType(e) {\n return (e.getAttribute('type') || '').toLowerCase();\n}\n\nfunction isDescribedElement(element, type, subtypes) {\n if (element.tagName.toLowerCase() !== type.toLowerCase()) {\n return false;\n }\n if (!subtypes) {\n return true;\n }\n element = getElementType(element);\n for (var i = 0; i < subtypes.length; i++) {\n if (subtypes[i] === element) {\n return true;\n }\n }\n return false;\n}\n\nfunction getElementFromEvent(evt, doc) {\n if (evt.target) {\n return evt.target;\n }\n if (doc && doc.elementFromPoint) {\n return doc.elementFromPoint(evt.clientX, evt.clientY);\n }\n return undefined;\n}\n\nfunction treeToArray(elem) {\n var MAX_HEIGHT = 5;\n var out = [];\n var nextDescription;\n for (var height = 0; elem && height < MAX_HEIGHT; height++) {\n nextDescription = describeElement(elem);\n if (nextDescription.tagName === 'html') {\n break;\n }\n out.unshift(nextDescription);\n elem = elem.parentNode;\n }\n return out;\n}\n\nfunction elementArrayToString(a) {\n var MAX_LENGTH = 80;\n var separator = ' > ',\n separatorLength = separator.length;\n var out = [],\n len = 0,\n nextStr,\n totalLength;\n\n for (var i = a.length - 1; i >= 0; i--) {\n nextStr = descriptionToString(a[i]);\n totalLength = len + out.length * separatorLength + nextStr.length;\n if (i < a.length - 1 && totalLength >= MAX_LENGTH + 3) {\n out.unshift('...');\n break;\n }\n out.unshift(nextStr);\n len += nextStr.length;\n }\n return out.join(separator);\n}\n\nfunction elementString(elem) {\n return elementArrayToString(treeToArray(elem));\n}\n\nfunction descriptionToString(desc) {\n if (!desc || !desc.tagName) {\n return '';\n }\n var out = [desc.tagName];\n if (desc.id) {\n out.push('#' + desc.id);\n }\n if (desc.classes) {\n out.push('.' + desc.classes.join('.'));\n }\n for (var i = 0; i < desc.attributes.length; i++) {\n out.push(\n '[' + desc.attributes[i].key + '=\"' + desc.attributes[i].value + '\"]',\n );\n }\n\n return out.join('');\n}\n\n/**\n * Input: a dom element\n * Output: null if tagName is falsey or input is falsey, else\n * {\n * tagName: String,\n * id: String | undefined,\n * classes: [String] | undefined,\n * attributes: [\n * {\n * key: OneOf(type, name, title, alt),\n * value: String\n * }\n * ]\n * }\n */\nfunction describeElement(elem) {\n if (!elem || !elem.tagName) {\n return null;\n }\n var out = {},\n className,\n key,\n attr,\n i;\n out.tagName = elem.tagName.toLowerCase();\n if (elem.id) {\n out.id = elem.id;\n }\n className = elem.className;\n if (className && typeof className === 'string') {\n out.classes = className.split(/\\s+/);\n }\n var attributes = ['type', 'name', 'title', 'alt'];\n out.attributes = [];\n for (i = 0; i < attributes.length; i++) {\n key = attributes[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.attributes.push({ key: key, value: attr });\n }\n }\n return out;\n}\n\n/*\n * Detects if the given element matches any of the given class names (string or regex),\n * or CSS selectors.\n * @param {HTMLElement} element - The DOM element to check.\n * @param {Array} classes - An array of class names (string or regex) to match against.\n * @param {Array} selectors - An array of CSS selectors to match against.\n * @return {boolean} - True if the element matches any of the classes or selectors, false otherwise.\n */\nfunction isMatchingElement(element, classes, selectors) {\n try {\n for (const cls of classes) {\n if (typeof cls === 'string') {\n if (element.classList.contains(cls)) {\n return true;\n }\n } else {\n for (const c of element.classList) {\n if (cls.test(c)) {\n return true;\n }\n }\n }\n }\n for (const sel of selectors) {\n if (element.matches(sel)) {\n return true;\n }\n }\n } catch (e) {\n // ignore errors from invalid arguments\n }\n return false;\n}\n\nexport {\n describeElement,\n descriptionToString,\n elementArrayToString,\n elementString,\n treeToArray,\n getElementFromEvent,\n isDescribedElement,\n getElementType,\n isMatchingElement,\n};\n","import * as _ from '../utility.js';\nimport headers from '../utility/headers.js';\nimport replace from '../utility/replace.js';\nimport scrub from '../scrub.js';\nimport * as urlparser from './url.js';\nimport * as domUtil from './domUtility.js';\n\nconst defaults = {\n network: true,\n networkResponseHeaders: false,\n networkResponseBody: false,\n networkRequestHeaders: false,\n networkRequestBody: false,\n networkErrorOnHttp5xx: false,\n networkErrorOnHttp4xx: false,\n networkErrorOnHttp0: false,\n log: true,\n dom: true,\n navigation: true,\n connectivity: true,\n contentSecurityPolicy: true,\n errorOnContentSecurityPolicy: false,\n};\n\nfunction restore(replacements, type) {\n let b;\n while (replacements[type].length) {\n b = replacements[type].shift();\n b[0][b[1]] = b[2];\n }\n}\n\nfunction nameFromDescription(description) {\n if (!description || !description.attributes) {\n return null;\n }\n const attrs = description.attributes;\n for (const a of attrs) {\n if (a.key === 'name') {\n return a.value;\n }\n }\n return null;\n}\n\nfunction defaultValueScrubber(scrubFields) {\n const patterns = [];\n for (const field of scrubFields) {\n patterns.push(new RegExp(field, 'i'));\n }\n return function (description) {\n const name = nameFromDescription(description);\n if (!name) {\n return false;\n }\n for (const p of patterns) {\n if (p.test(name)) {\n return true;\n }\n }\n return false;\n };\n}\n\nclass Instrumenter {\n constructor(options, telemeter, rollbar, _window, _document) {\n this.options = options;\n let autoInstrument = options.autoInstrument;\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.telemeter = telemeter;\n this.rollbar = rollbar;\n this.diagnostic = rollbar.client.notifier.diagnostic;\n this._window = _window || {};\n this._document = _document || {};\n this.replacements = {\n network: [],\n log: [],\n navigation: [],\n connectivity: [],\n };\n this.eventRemovers = {\n dom: [],\n connectivity: [],\n contentsecuritypolicy: [],\n };\n\n this._location = this._window.location;\n this._lastHref = this._location && this._location.href;\n }\n\n configureScrubbing() {\n const options = this.options;\n this.scrubTelemetryInputs = !!(\n options.scrubTelemetryInputs ?? options.replay?.maskAllInputs\n );\n this.telemetryScrubber = options.telemetryScrubber;\n this.defaultValueScrubber = defaultValueScrubber(options.scrubFields);\n this.maskInputFn = options.replay?.maskInputFn;\n this.maskInputOptions = options.replay?.maskInputOptions || {};\n this.scrubClasses = [\n options.replay?.blockClass,\n options.replay?.ignoreClass,\n options.replay?.maskTextClass,\n ].filter(Boolean);\n this.scrubSelectors = [\n options.replay?.blockSelector,\n options.replay?.ignoreSelector,\n options.replay?.maskTextSelector,\n ].filter(Boolean);\n }\n\n configure(options) {\n this.options = _.merge(this.options, options);\n let autoInstrument = options.autoInstrument;\n const oldSettings = _.merge(this.autoInstrument);\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.instrument(oldSettings);\n }\n\n // eslint-disable-next-line complexity\n instrument(oldSettings) {\n if (this.autoInstrument.network && !(oldSettings && oldSettings.network)) {\n this.instrumentNetwork();\n } else if (\n !this.autoInstrument.network &&\n oldSettings &&\n oldSettings.network\n ) {\n this.deinstrumentNetwork();\n }\n\n if (this.autoInstrument.log && !(oldSettings && oldSettings.log)) {\n this.instrumentConsole();\n } else if (!this.autoInstrument.log && oldSettings && oldSettings.log) {\n this.deinstrumentConsole();\n }\n\n if (this.autoInstrument.dom && !(oldSettings && oldSettings.dom)) {\n this.instrumentDom();\n } else if (!this.autoInstrument.dom && oldSettings && oldSettings.dom) {\n this.deinstrumentDom();\n }\n\n if (\n this.autoInstrument.navigation &&\n !(oldSettings && oldSettings.navigation)\n ) {\n this.instrumentNavigation();\n } else if (\n !this.autoInstrument.navigation &&\n oldSettings &&\n oldSettings.navigation\n ) {\n this.deinstrumentNavigation();\n }\n\n if (\n this.autoInstrument.connectivity &&\n !(oldSettings && oldSettings.connectivity)\n ) {\n this.instrumentConnectivity();\n } else if (\n !this.autoInstrument.connectivity &&\n oldSettings &&\n oldSettings.connectivity\n ) {\n this.deinstrumentConnectivity();\n }\n\n if (\n this.autoInstrument.contentSecurityPolicy &&\n !(oldSettings && oldSettings.contentSecurityPolicy)\n ) {\n this.instrumentContentSecurityPolicy();\n } else if (\n !this.autoInstrument.contentSecurityPolicy &&\n oldSettings &&\n oldSettings.contentSecurityPolicy\n ) {\n this.deinstrumentContentSecurityPolicy();\n }\n }\n\n deinstrumentNetwork() {\n restore(this.replacements, 'network');\n }\n\n instrumentNetwork() {\n const self = this;\n\n function wrapProp(prop, xhr) {\n if (prop in xhr && _.isFunction(xhr[prop])) {\n replace(xhr, prop, function (orig) {\n return self.rollbar.wrap(orig);\n });\n }\n }\n\n if ('XMLHttpRequest' in this._window) {\n const xhrp = this._window.XMLHttpRequest.prototype;\n replace(\n xhrp,\n 'open',\n function (orig) {\n return function (method, url) {\n const isUrlObject = _isUrlObject(url);\n if (_.isType(url, 'string') || isUrlObject) {\n url = isUrlObject ? url.toString() : url;\n if (this.__rollbar_xhr) {\n this.__rollbar_xhr.method = method;\n this.__rollbar_xhr.url = url;\n this.__rollbar_xhr.status_code = null;\n this.__rollbar_xhr.start_time_ms = _.now();\n this.__rollbar_xhr.end_time_ms = null;\n } else {\n this.__rollbar_xhr = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'setRequestHeader',\n function (orig) {\n return function (header, value) {\n // If xhr.open is async, __rollbar_xhr may not be initialized yet.\n if (!this.__rollbar_xhr) {\n this.__rollbar_xhr = {};\n }\n if (_.isType(header, 'string') && _.isType(value, 'string')) {\n if (self.autoInstrument.networkRequestHeaders) {\n if (!this.__rollbar_xhr.request_headers) {\n this.__rollbar_xhr.request_headers = {};\n }\n this.__rollbar_xhr.request_headers[header] = value;\n }\n // We want the content type even if request header telemetry is off.\n if (header.toLowerCase() === 'content-type') {\n this.__rollbar_xhr.request_content_type = value;\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'send',\n function (orig) {\n return function (data) {\n const xhr = this;\n\n function onreadystatechangeHandler() {\n if (xhr.__rollbar_xhr) {\n if (xhr.__rollbar_xhr.status_code === null) {\n xhr.__rollbar_xhr.status_code = 0;\n if (self.autoInstrument.networkRequestBody) {\n xhr.__rollbar_xhr.request = data;\n }\n xhr.__rollbar_event = self.captureNetwork(\n xhr.__rollbar_xhr,\n 'xhr',\n undefined,\n );\n }\n if (xhr.readyState < 2) {\n xhr.__rollbar_xhr.start_time_ms = _.now();\n }\n if (xhr.readyState > 3) {\n const end_time_ms = _.now();\n xhr.__rollbar_xhr.end_time_ms = end_time_ms;\n\n let headers = null;\n xhr.__rollbar_xhr.response_content_type =\n xhr.getResponseHeader('Content-Type');\n if (self.autoInstrument.networkResponseHeaders) {\n const headersConfig =\n self.autoInstrument.networkResponseHeaders;\n headers = {};\n try {\n let header;\n if (headersConfig === true) {\n const allHeaders = xhr.getAllResponseHeaders();\n if (allHeaders) {\n const arr = allHeaders.trim().split(/[\\r\\n]+/);\n let parts, value;\n for (const h of arr) {\n parts = h.split(': ');\n header = parts.shift();\n value = parts.join(': ');\n headers[header] = value;\n }\n }\n } else {\n for (const h of headersConfig) {\n headers[h] = xhr.getResponseHeader(h);\n }\n }\n } catch (e) {\n /* we ignore the errors here that could come from different\n * browser issues with the xhr methods */\n }\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n try {\n body = xhr.responseText;\n } catch (e) {\n /* ignore errors from reading responseText */\n }\n }\n let response = null;\n if (body || headers) {\n response = {};\n if (body) {\n if (\n self.isJsonContentType(\n xhr.__rollbar_xhr.response_content_type,\n )\n ) {\n response.body = self.scrubJson(body);\n } else {\n response.body = body;\n }\n }\n if (headers) {\n response.headers = headers;\n }\n }\n if (response) {\n xhr.__rollbar_xhr.response = response;\n }\n try {\n let code = xhr.status;\n code = code === 1223 ? 204 : code;\n xhr.__rollbar_xhr.status_code = code;\n self.addOtelNetworkResponse(\n xhr.__rollbar_event,\n end_time_ms,\n code,\n );\n xhr.__rollbar_event.level =\n self.telemeter.levelFromStatus(code);\n self.errorOnHttpStatus(xhr.__rollbar_xhr);\n } catch (e) {\n /* ignore possible exception from xhr.status */\n }\n }\n }\n }\n\n wrapProp('onload', xhr);\n wrapProp('onerror', xhr);\n wrapProp('onprogress', xhr);\n\n if (\n 'onreadystatechange' in xhr &&\n _.isFunction(xhr.onreadystatechange)\n ) {\n replace(xhr, 'onreadystatechange', function (orig) {\n return self.rollbar.wrap(\n orig,\n undefined,\n onreadystatechangeHandler,\n );\n });\n } else {\n xhr.onreadystatechange = onreadystatechangeHandler;\n }\n if (xhr.__rollbar_xhr && self.trackHttpErrors()) {\n xhr.__rollbar_xhr.stack = new Error().stack;\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n }\n\n if ('fetch' in this._window) {\n replace(\n this._window,\n 'fetch',\n function (orig) {\n return function (fn, t) {\n const args = [...arguments];\n const input = args[0];\n let method = 'GET';\n let url;\n const isUrlObject = _isUrlObject(input);\n if (_.isType(input, 'string') || isUrlObject) {\n url = isUrlObject ? input.toString() : input;\n } else if (input) {\n url = input.url;\n if (input.method) {\n method = input.method;\n }\n }\n if (args[1] && args[1].method) {\n method = args[1].method;\n }\n const metadata = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n if (args[1] && args[1].headers) {\n // Argument may be a Headers object, or plain object. Ensure here that\n // we are working with a Headers object with case-insensitive keys.\n const reqHeaders = headers(args[1].headers);\n\n metadata.request_content_type = reqHeaders.get('Content-Type');\n\n if (self.autoInstrument.networkRequestHeaders) {\n metadata.request_headers = self.fetchHeaders(\n reqHeaders,\n self.autoInstrument.networkRequestHeaders,\n );\n }\n }\n\n if (self.autoInstrument.networkRequestBody) {\n if (args[1] && args[1].body) {\n metadata.request = args[1].body;\n } else if (\n args[0] &&\n !_.isType(args[0], 'string') &&\n args[0].body\n ) {\n metadata.request = args[0].body;\n }\n }\n const telemetryEvent = self.captureNetwork(\n metadata,\n 'fetch',\n undefined,\n );\n if (self.trackHttpErrors()) {\n metadata.stack = new Error().stack;\n }\n\n // Start our handler before returning the promise. This allows resp.clone()\n // to execute before other handlers touch the response.\n return orig.apply(this, args).then(function (resp) {\n const end_time_ms = _.now();\n metadata.end_time_ms = end_time_ms;\n metadata.status_code = resp.status;\n self.addOtelNetworkResponse(\n telemetryEvent,\n end_time_ms,\n resp.status,\n );\n\n metadata.response_content_type = resp.headers.get('Content-Type');\n let headers = null;\n if (self.autoInstrument.networkResponseHeaders) {\n headers = self.fetchHeaders(\n resp.headers,\n self.autoInstrument.networkResponseHeaders,\n );\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n if (typeof resp.text === 'function') {\n // Response.text() is not implemented on some platforms\n // The response must be cloned to prevent reading (and locking) the original stream.\n // This must be done before other handlers touch the response.\n body = resp.clone().text(); //returns a Promise\n }\n }\n if (headers || body) {\n metadata.response = {};\n if (body) {\n // Test to ensure body is a Promise, which it should always be.\n if (typeof body.then === 'function') {\n body.then(function (text) {\n if (\n text &&\n self.isJsonContentType(metadata.response_content_type)\n ) {\n metadata.response.body = self.scrubJson(text);\n } else {\n metadata.response.body = text;\n }\n });\n } else {\n metadata.response.body = body;\n }\n }\n if (headers) {\n metadata.response.headers = headers;\n }\n }\n self.errorOnHttpStatus(metadata);\n return resp;\n });\n };\n },\n this.replacements,\n 'network',\n );\n }\n }\n\n captureNetwork(metadata, subtype, rollbarUUID) {\n if (\n metadata.request &&\n this.isJsonContentType(metadata.request_content_type)\n ) {\n metadata.request = this.scrubJson(metadata.request);\n }\n return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID);\n }\n\n isJsonContentType(contentType) {\n return contentType &&\n _.isType(contentType, 'string') &&\n contentType.toLowerCase().includes('json')\n ? true\n : false;\n }\n\n addOtelNetworkResponse(event, endTimeMs, statusCode) {\n if (event.otelAttributes) {\n event.otelAttributes['response.timeUnixNano'] = (\n endTimeMs * 1e6\n ).toString();\n event.otelAttributes.statusCode = statusCode;\n }\n }\n\n scrubJson(json) {\n return JSON.stringify(scrub(JSON.parse(json), this.options.scrubFields));\n }\n\n fetchHeaders(inHeaders, headersConfig) {\n const outHeaders = {};\n try {\n if (headersConfig === true) {\n if (typeof inHeaders.entries === 'function') {\n // Headers.entries() is not implemented in IE\n const allHeaders = inHeaders.entries();\n let currentHeader = allHeaders.next();\n while (!currentHeader.done) {\n outHeaders[currentHeader.value[0]] = currentHeader.value[1];\n currentHeader = allHeaders.next();\n }\n }\n } else {\n for (const h of headersConfig) {\n outHeaders[h] = inHeaders.get(h);\n }\n }\n } catch (e) {\n /* ignore probable IE errors */\n }\n return outHeaders;\n }\n\n trackHttpErrors() {\n return (\n this.autoInstrument.networkErrorOnHttp5xx ||\n this.autoInstrument.networkErrorOnHttp4xx ||\n this.autoInstrument.networkErrorOnHttp0\n );\n }\n\n errorOnHttpStatus(metadata) {\n const status = metadata.status_code;\n\n if (\n (status >= 500 && this.autoInstrument.networkErrorOnHttp5xx) ||\n (status >= 400 && this.autoInstrument.networkErrorOnHttp4xx) ||\n (status === 0 && this.autoInstrument.networkErrorOnHttp0)\n ) {\n const error = new Error('HTTP request failed with Status ' + status);\n error.stack = metadata.stack;\n this.rollbar.error(error, { skipFrames: 1 });\n }\n }\n\n deinstrumentConsole() {\n let b;\n while (this.replacements['log'].length) {\n b = this.replacements['log'].shift();\n this._window.console[b[0]] = b[1];\n }\n }\n\n instrumentConsole() {\n if (!this._window?.console?.log) {\n return;\n }\n\n const self = this;\n const c = this._window.console;\n\n function wrapConsole(method) {\n 'use strict'; // See https://github.com/rollbar/rollbar.js/pull/778\n\n const orig = c[method];\n const origConsole = c;\n const level = method === 'warn' ? 'warning' : method;\n c[method] = function () {\n const args = Array.prototype.slice.call(arguments);\n const message = _.formatArgsAsString(args);\n self.telemeter.captureLog(message, level, null, _.now());\n if (orig) {\n Function.prototype.apply.call(orig, origConsole, args);\n }\n };\n self.replacements['log'].push([method, orig]);\n }\n const methods = ['debug', 'info', 'warn', 'error', 'log'];\n try {\n for (const m of methods) {\n wrapConsole(m);\n }\n } catch (e) {\n this.diagnostic.instrumentConsole = { error: e.message };\n }\n }\n\n deinstrumentDom() {\n this.removeListeners('dom');\n }\n\n instrumentDom() {\n const self = this;\n this.addListener(\n 'dom',\n this._window,\n ['click', 'dblclick', 'contextmenu'],\n (e) => this.handleEvent('click', e),\n );\n this.addListener(\n 'dom',\n this._window,\n ['dragstart', 'dragend', 'dragenter', 'dragleave', 'drop'],\n (e) => this.handleEvent('dragdrop', e),\n );\n this.addListener('dom', this._window, ['blur', 'focus'], (e) =>\n this.handleEvent('focus', e),\n );\n this.addListener('dom', this._window, ['submit', 'invalid'], (e) =>\n this.handleEvent('form', e),\n );\n this.addListener('dom', this._window, ['input', 'change'], (e) =>\n this.handleEvent('input', e),\n );\n this.addListener('dom', this._window, ['resize'], (e) =>\n this.handleEvent('resize', e),\n );\n this.addListener('dom', this._document, ['DOMContentLoaded'], (e) =>\n this.handleEvent('contentLoaded', e),\n );\n }\n\n handleEvent(name, evt) {\n try {\n return {\n click: this.handleClick,\n dragdrop: this.handleDrag,\n focus: this.handleFocus,\n form: this.handleForm,\n input: this.handleInput,\n resize: this.handleResize,\n contentLoaded: this.handleContentLoaded,\n }[name].call(this, evt);\n } catch (exc) {\n console.log(`${name} handler error`, evt, exc, exc.stack);\n }\n }\n\n handleContentLoaded(evt) {\n const replayId = this.rollbar.triggerReplay({\n type: 'navigation',\n path: new URL(this._location.href).pathname,\n });\n }\n\n handleClick(evt) {\n const tagName = evt.target?.tagName.toLowerCase();\n if (['input', 'select', 'textarea'].includes(tagName)) return;\n\n this.telemeter.captureClick({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n timestamp: _.now(),\n });\n }\n\n handleFocus(evt) {\n const type = evt.type;\n const element = evt.target?.window\n ? 'window'\n : domUtil.elementString(evt.target);\n\n this.telemeter.captureFocus({\n type: type,\n isSynthetic: !evt.isTrusted,\n element,\n timestamp: _.now(),\n });\n }\n\n handleForm(evt) {\n // TODO: implement form event handling\n const type = evt.type;\n const elementString = evt.target?.window\n ? 'window'\n : domUtil.elementString(evt.target);\n }\n\n handleResize(evt) {\n const textZoomRatio = window.screen.width / window.innerWidth;\n\n this.telemeter.captureResize({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n width: window.innerWidth,\n height: window.innerHeight,\n textZoomRatio: textZoomRatio,\n timestamp: _.now(),\n });\n }\n\n handleDrag(evt) {\n const type = evt.type;\n let kinds, mediaTypes, dropEffect, effectAllowed;\n\n if (type === 'drop') {\n kinds = [];\n mediaTypes = [];\n const objs = [...evt.dataTransfer.files, ...evt.dataTransfer.items];\n for (const o of objs) {\n if (o.kind && o.type) {\n kinds.push(o.kind);\n mediaTypes.push(o.type);\n }\n }\n }\n if (['drop', 'dragstart'].includes(type)) {\n dropEffect = evt.dataTransfer?.dropEffect;\n effectAllowed = evt.dataTransfer?.effectAllowed;\n }\n\n this.telemeter.captureDragDrop({\n type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n dropEffect: dropEffect,\n effectAllowed: effectAllowed,\n kinds: JSON.stringify(kinds),\n mediaTypes: JSON.stringify(mediaTypes),\n timestamp: _.now(),\n });\n }\n\n /*\n * Applies Rollbar telemetry scrubbing options to the dom input value.\n * When replay options are present, applies those as well.\n */\n scrubInputValue(value, element, tagName, inputType) {\n const mask = '******';\n\n if (inputType === 'password') {\n return mask;\n }\n\n if (this.scrubTelemetryInputs) {\n return mask;\n } else {\n const description = domUtil.describeElement(element);\n if (this.telemetryScrubber) {\n if (this.telemetryScrubber(description)) {\n return mask;\n }\n } else if (this.defaultValueScrubber(description)) {\n return mask;\n }\n }\n\n // Apply replay options regardless of other scrubbing\n if (\n domUtil.isMatchingElement(element, this.scrubClasses, this.scrubSelectors)\n ) {\n return mask;\n }\n\n // This check is last since maskInputFn returns a modified value rather\n // than a boolean, which would cause an early return even if the value\n // was not scrubbed.\n if (\n this.maskInputOptions[tagName.toLowerCase()] ||\n this.maskInputOptions[inputType]\n ) {\n if (this.maskInputFn) {\n return this.maskInputFn(value, element);\n } else {\n return mask;\n }\n }\n\n return value;\n }\n\n /*\n * Uses the `input` event for everything except radio and checkbox inputs.\n * For those, it uses the `change` event.\n */\n handleInput(evt) {\n const type = evt.type;\n const tagName = evt.target?.tagName.toLowerCase();\n let value = evt.target?.value;\n let inputType = evt.target?.attributes?.type?.value || evt.target?.type;\n\n if (value !== undefined) {\n value = this.scrubInputValue(value, evt.target, tagName, inputType);\n }\n\n switch (type) {\n case 'input':\n if (['radio', 'checkbox'].includes(inputType)) return;\n if (['select', 'textarea'].includes(tagName)) {\n inputType = tagName;\n }\n break;\n\n case 'change':\n if (!['radio', 'checkbox'].includes(inputType)) return;\n if (inputType === 'checkbox') {\n value = evt.target?.checked;\n }\n break;\n }\n\n this.telemeter.captureInput({\n type: inputType,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n value,\n timestamp: _.now(),\n });\n }\n\n deinstrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n restore(this.replacements, 'navigation');\n }\n\n instrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n const self = this;\n replace(\n this._window,\n 'onpopstate',\n function (orig) {\n return function () {\n const current = self._location.href;\n self.handleUrlChange(self._lastHref, current);\n if (orig) {\n orig.apply(this, arguments);\n }\n };\n },\n this.replacements,\n 'navigation',\n );\n\n replace(\n this._window.history,\n 'pushState',\n function (orig) {\n return function () {\n const url = arguments.length > 2 ? arguments[2] : undefined;\n if (url) {\n self.handleUrlChange(self._lastHref, url + '');\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'navigation',\n );\n }\n\n handleUrlChange(from, to) {\n const parsedHref = urlparser.parse(this._location.href);\n const parsedTo = urlparser.parse(to);\n const parsedFrom = urlparser.parse(from);\n this._lastHref = to;\n if (\n parsedHref.protocol === parsedTo.protocol &&\n parsedHref.host === parsedTo.host\n ) {\n to = parsedTo.path + (parsedTo.hash || '');\n }\n if (\n parsedHref.protocol === parsedFrom.protocol &&\n parsedHref.host === parsedFrom.host\n ) {\n from = parsedFrom.path + (parsedFrom.hash || '');\n }\n this.telemeter.captureNavigation(from, to, null, _.now());\n const replayId = this.rollbar.triggerReplay({\n type: 'navigation',\n path: to,\n });\n }\n\n deinstrumentConnectivity = function () {\n this.removeListeners('connectivity');\n };\n\n instrumentConnectivity() {\n const self = this;\n this.addListener(\n 'connectivity',\n this._window,\n ['online', 'offline'],\n (evt) => self.handleConnectivity(evt),\n );\n }\n\n handleConnectivity(evt) {\n const type = evt.type;\n\n this.telemeter.captureConnectivityChange({\n type,\n isSynthetic: !evt.isTrusted,\n timestamp: _.now(),\n });\n }\n\n handleCspEvent(cspEvent) {\n let message =\n 'Security Policy Violation: ' +\n 'blockedURI: ' +\n cspEvent.blockedURI +\n ', ' +\n 'violatedDirective: ' +\n cspEvent.violatedDirective +\n ', ' +\n 'effectiveDirective: ' +\n cspEvent.effectiveDirective +\n ', ';\n\n if (cspEvent.sourceFile) {\n message +=\n 'location: ' +\n cspEvent.sourceFile +\n ', ' +\n 'line: ' +\n cspEvent.lineNumber +\n ', ' +\n 'col: ' +\n cspEvent.columnNumber +\n ', ';\n }\n\n message += 'originalPolicy: ' + cspEvent.originalPolicy;\n\n this.telemeter.captureLog(message, 'error', null, _.now());\n this.handleCspError(message);\n }\n\n handleCspError(message) {\n if (this.autoInstrument.errorOnContentSecurityPolicy) {\n this.rollbar.error(message);\n }\n }\n\n deinstrumentContentSecurityPolicy() {\n this.removeListeners('contentsecuritypolicy');\n }\n\n instrumentContentSecurityPolicy() {\n if (!('addEventListener' in this._document)) {\n return;\n }\n\n const cspHandler = this.handleCspEvent.bind(this);\n this.addListener(\n 'contentsecuritypolicy',\n this._document,\n ['securitypolicyviolation'],\n cspHandler,\n );\n }\n\n addListener(section, obj, types, handler) {\n if (obj.addEventListener) {\n for (const t of types) {\n const options = { capture: true, passive: true };\n obj.addEventListener(t, handler, options, true);\n this.eventRemovers[section].push(function () {\n obj.removeEventListener(t, handler, options);\n });\n }\n }\n }\n\n removeListeners(section) {\n let r;\n while (this.eventRemovers[section].length) {\n r = this.eventRemovers[section].shift();\n r();\n }\n }\n}\n\nfunction _isUrlObject(input) {\n return typeof URL !== 'undefined' && input instanceof URL;\n}\n\nexport default Instrumenter;\n","function wrapGlobals(window, handler, shim) {\n if (!window) {\n return;\n }\n // Adapted from https://github.com/bugsnag/bugsnag-js\n var globals =\n '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'.split(\n ',',\n );\n var i, global;\n for (i = 0; i < globals.length; ++i) {\n global = globals[i];\n\n if (window[global] && window[global].prototype) {\n _extendListenerPrototype(handler, window[global].prototype, shim);\n }\n }\n}\n\nfunction _extendListenerPrototype(handler, prototype, shim) {\n if (\n prototype.hasOwnProperty &&\n prototype.hasOwnProperty('addEventListener')\n ) {\n var oldAddEventListener = prototype.addEventListener;\n while (\n oldAddEventListener._rollbarOldAdd &&\n oldAddEventListener.belongsToShim\n ) {\n oldAddEventListener = oldAddEventListener._rollbarOldAdd;\n }\n var addFn = function (event, callback, bubble) {\n oldAddEventListener.call(this, event, handler.wrap(callback), bubble);\n };\n addFn._rollbarOldAdd = oldAddEventListener;\n addFn.belongsToShim = shim;\n prototype.addEventListener = addFn;\n\n var oldRemoveEventListener = prototype.removeEventListener;\n while (\n oldRemoveEventListener._rollbarOldRemove &&\n oldRemoveEventListener.belongsToShim\n ) {\n oldRemoveEventListener = oldRemoveEventListener._rollbarOldRemove;\n }\n var removeFn = function (event, callback, bubble) {\n oldRemoveEventListener.call(\n this,\n event,\n (callback && callback._rollbar_wrapped) || callback,\n bubble,\n );\n };\n removeFn._rollbarOldRemove = oldRemoveEventListener;\n removeFn.belongsToShim = shim;\n prototype.removeEventListener = removeFn;\n }\n}\n\nexport default wrapGlobals;\n","import * as _ from './utility.js';\nimport traverse from './utility/traverse.js';\n\nfunction raw(payload, jsonBackup) {\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction selectFrames(frames, range) {\n var len = frames.length;\n if (len > range * 2) {\n return frames.slice(0, range).concat(frames.slice(len - range));\n }\n return frames;\n}\n\nfunction truncateFrames(payload, jsonBackup, range) {\n range = typeof range === 'undefined' ? 30 : range;\n var body = payload.data.body;\n var frames;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (var i = 0; i < chain.length; i++) {\n frames = chain[i].frames;\n frames = selectFrames(frames, range);\n chain[i].frames = frames;\n }\n } else if (body.trace) {\n frames = body.trace.frames;\n frames = selectFrames(frames, range);\n body.trace.frames = frames;\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction maybeTruncateValue(len, val) {\n if (!val) {\n return val;\n }\n if (val.length > len) {\n return val.slice(0, len - 3).concat('...');\n }\n return val;\n}\n\nfunction truncateStrings(len, payload, jsonBackup) {\n function truncator(k, v, seen) {\n switch (_.typeName(v)) {\n case 'string':\n return maybeTruncateValue(len, v);\n case 'object':\n case 'array':\n return traverse(v, truncator, seen);\n default:\n return v;\n }\n }\n payload = traverse(payload, truncator);\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction truncateTraceData(traceData) {\n if (traceData.exception) {\n delete traceData.exception.description;\n traceData.exception.message = maybeTruncateValue(\n 255,\n traceData.exception.message,\n );\n }\n traceData.frames = selectFrames(traceData.frames, 1);\n return traceData;\n}\n\nfunction minBody(payload, jsonBackup) {\n var body = payload.data.body;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (var i = 0; i < chain.length; i++) {\n chain[i] = truncateTraceData(chain[i]);\n }\n } else if (body.trace) {\n body.trace = truncateTraceData(body.trace);\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction needsTruncation(payload, maxSize) {\n return _.maxByteSize(payload) > maxSize;\n}\n\nfunction truncate(payload, jsonBackup, maxSize) {\n maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize;\n var strategies = [\n raw,\n truncateFrames,\n truncateStrings.bind(null, 1024),\n truncateStrings.bind(null, 512),\n truncateStrings.bind(null, 256),\n minBody,\n ];\n var strategy, results, result;\n\n while ((strategy = strategies.shift())) {\n results = strategy(payload, jsonBackup);\n payload = results[0];\n result = results[1];\n if (result.error || !needsTruncation(result.value, maxSize)) {\n return result;\n }\n }\n return result;\n}\n\nexport default {\n truncate,\n\n /* for testing */\n raw,\n truncateFrames,\n truncateStrings,\n maybeTruncateValue,\n};\n","export class Context {\n constructor(parentContext) {\n this._currentContext = parentContext ? new Map(parentContext) : new Map();\n }\n\n getValue(key) {\n return this._currentContext.get(key);\n }\n\n setValue(key, value) {\n const context = new Context(this._currentContext);\n context._currentContext.set(key, value);\n return context;\n }\n\n deleteValue(key) {\n const context = new Context(self._currentContext);\n context._currentContext.delete(key);\n return context;\n }\n}\n\nexport const ROOT_CONTEXT = new Context();\n","import { ROOT_CONTEXT } from './context.js';\n\nexport class ContextManager {\n constructor() {\n this.currentContext = ROOT_CONTEXT;\n }\n\n active() {\n return this.currentContext;\n }\n\n enterContext(context) {\n const previousContext = this.currentContext;\n this.currentContext = context || ROOT_CONTEXT;\n return previousContext;\n }\n\n exitContext(context) {\n this.currentContext = context;\n return this.currentContext;\n }\n\n with(context, fn, thisArg, ...args) {\n const previousContext = this.enterContext(context);\n try {\n return fn.call(thisArg, ...args);\n } finally {\n this.exitContext(previousContext);\n }\n }\n}\n\nexport function createContextKey(key) {\n // Use Symbol for OpenTelemetry compatibility.\n return Symbol.for(key);\n}\n","/**\n * Generate a random hexadecimal ID of specified byte length\n *\n * @param {number} bytes - Number of bytes for the ID (default: 16)\n * @returns {string} - Hexadecimal string representation\n */\nfunction gen(bytes = 16) {\n let randomBytes = new Uint8Array(bytes);\n crypto.getRandomValues(randomBytes);\n let randHex = Array.from(randomBytes, (byte) =>\n byte.toString(16).padStart(2, '0'),\n ).join('');\n return randHex;\n}\n\n/**\n * Tracing id generation utils\n *\n * @example\n * import id from './id.js';\n *\n * const spanId = id.gen(8); // => \"a1b2c3d4e5f6...\"\n */\nexport default { gen };\n","import id from './id.js';\n\nconst SESSION_KEY = 'RollbarSession';\n\nexport class Session {\n _attributes;\n\n constructor(tracing, options) {\n this.options = options;\n this.tracing = tracing;\n this.window = tracing.window;\n this.session = null;\n this._attributes = {};\n }\n\n init(attrs = {}) {\n if (this.session) {\n return this;\n }\n this.getSession() || this.createSession();\n\n this.initSessionAttributes(attrs);\n\n return this;\n }\n\n getSession() {\n try {\n const serializedSession = this.window.sessionStorage.getItem(SESSION_KEY);\n\n if (!serializedSession) {\n return null;\n }\n\n this.session = JSON.parse(serializedSession);\n } catch {\n return null;\n }\n return this;\n }\n\n createSession() {\n this.session = {\n id: id.gen(),\n createdAt: Date.now(),\n };\n\n return this.setSession(this.session);\n }\n\n setSession(session) {\n const sessionString = JSON.stringify(session);\n\n try {\n this.window.sessionStorage.setItem(SESSION_KEY, sessionString);\n } catch {\n return null;\n }\n return this;\n }\n\n get attributes() {\n return this._attributes;\n }\n\n setAttributes(attributes) {\n this._attributes = { ...this._attributes, ...attributes };\n return this;\n }\n\n setUser(user) {\n this.setAttributes({\n 'user.id': user?.id,\n 'user.email': user?.email,\n 'user.name': user?.name || user?.username,\n });\n return this;\n }\n\n initSessionAttributes(attrs) {\n this.setAttributes({\n 'session.id': this.session.id,\n 'browser.brands': navigator.userAgentData?.brands,\n 'browser.language': navigator.language,\n 'browser.mobile': navigator.userAgentData?.mobile,\n 'browser.platform': navigator.userAgentData?.platform,\n 'client.address': '$remote_ip', // updated at the API\n 'rollbar.notifier.framework': 'browser-js',\n 'user_agent.original': navigator.userAgent,\n ...attrs,\n });\n return this;\n }\n}\n","/**\n * @module hrtime\n *\n * @description Methods for handling OpenTelemetry hrtime.\n */\n\n/**\n * Convert a duration in milliseconds to an OpenTelemetry hrtime tuple.\n *\n * @param {number} millis - The duration in milliseconds.\n * @returns {[number, number]} An array where the first element is seconds\n * and the second is nanoseconds.\n */\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in milliseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in milliseconds.\n */\nfunction toMillis(hrtime) {\n return hrtime[0] * 1e3 + Math.round(hrtime[1] / 1e6);\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in nanoseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in nanoseconds.\n */\nfunction toNanos(hrtime) {\n return hrtime[0] * 1e9 + hrtime[1];\n}\n\n/**\n * Adds two OpenTelemetry hrtime tuples.\n *\n * @param {[number, number]} a - The first hrtime tuple [s, ns].\n * @param {[number, number]} b - The second hrtime tuple [s, ns].\n * @returns {[number, number]} Summed hrtime tuple, normalized.\n *\n */\nfunction add(a, b) {\n return [a[0] + b[0] + Math.trunc((a[1] + b[1]) / 1e9), (a[1] + b[1]) % 1e9];\n}\n\n/**\n * Get the current high-resolution time as an OpenTelemetry hrtime tuple.\n *\n * @param {boolean} usePerformance=false - If true, uses the Performance API (timeOrigin + now()).\n *\n * @returns {[number, number]} The current hrtime tuple [s, ns].\n */\nfunction now(usePerformance = false) {\n if (usePerformance) {\n return add(\n fromMillis(performance.timeOrigin),\n fromMillis(performance.now()),\n );\n }\n return fromMillis(Date.now());\n}\n\n/**\n * Check if a value is a valid OpenTelemetry hrtime tuple.\n *\n * An hrtime tuple is an Array of exactly two numbers:\n * [seconds, nanoseconds]\n *\n * @param {*} value – anything to test\n * @returns {boolean} true if `value` is a [number, number] array of length 2\n *\n * @example\n * isHrTime([ 1, 500 ]); // true\n * isHrTime([ 0, 1e9 ]); // true\n * isHrTime([ '1', 500 ]); // false\n * isHrTime({ 0: 1, 1: 500 }); // false\n */\nfunction isHrTime(value) {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number'\n );\n}\n\n/**\n * Methods for handling hrtime. OpenTelemetry uses the [seconds, nanoseconds]\n * format for hrtime in the `ReadableSpan` interface.\n *\n * @example\n * import hrtime from '@tracing/hrtime.js';\n *\n * hrtime.fromMillis(1000);\n * hrtime.toMillis([0, 1000]);\n * hrtime.add([0, 0], [0, 1000]);\n * hrtime.now();\n * hrtime.isHrTime([0, 1000]);\n */\nexport default { fromMillis, toMillis, toNanos, add, now, isHrTime };\n","import hrtime from './hrtime.js';\n\n/**\n * SpanExporter is responsible for exporting ReadableSpan objects\n * and transforming them into the OTLP-compatible format.\n */\nexport class SpanExporter {\n constructor(api, options = {}) {\n this.api = api;\n this.options = options;\n }\n\n /**\n * Export spans to the span export queue\n *\n * @param {Array} spans - Array of ReadableSpan objects to export\n * @param {Function} _resultCallback - Optional callback (not used)\n */\n export(spans, _resultCallback) {\n spanExportQueue.push(...spans);\n }\n\n /**\n * Transforms an array of ReadableSpan objects into the OTLP format payload\n * compatible with the Rollbar API. This follows the OpenTelemetry protocol\n * specification for traces.\n *\n * @returns {Object} OTLP format payload for API transmission\n */\n toPayload() {\n const spans = spanExportQueue.slice();\n spanExportQueue.length = 0;\n\n if (!spans || !spans.length) {\n return { resourceSpans: [] };\n }\n\n const resource = (spans[0] && spans[0].resource) || {};\n\n const scopeMap = new Map();\n\n for (const span of spans) {\n const scopeKey = span.instrumentationScope\n ? `${span.instrumentationScope.name}:${span.instrumentationScope.version}`\n : 'default:1.0.0';\n\n if (!scopeMap.has(scopeKey)) {\n scopeMap.set(scopeKey, {\n scope: span.instrumentationScope || {\n name: 'default',\n version: '1.0.0',\n attributes: [],\n },\n spans: [],\n });\n }\n\n scopeMap.get(scopeKey).spans.push(this._transformSpan(span));\n }\n\n return {\n resourceSpans: [\n {\n resource: this._transformResource(resource),\n scopeSpans: Array.from(scopeMap.values()).map((scopeData) => ({\n scope: this._transformInstrumentationScope(scopeData.scope),\n spans: scopeData.spans,\n })),\n },\n ],\n };\n }\n\n /**\n * Sends the given payload to the Rollbar API.\n *\n * @param {String} payload - Serialized OTLP format payload\n * @param {Object} headers - Optional request headers\n * @returns {Promise} Promise that resolves when the request completes\n */\n post(payload, headers = {}) {\n return this.api.postSpans(payload, headers);\n }\n\n /**\n * Transforms a ReadableSpan into the OTLP Span format\n *\n * @private\n * @param {Object} span - ReadableSpan object to transform\n * @returns {Object} OTLP Span format\n */\n _transformSpan(span) {\n const transformAttributes = (attributes) => {\n return Object.entries(attributes || {}).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n };\n\n const transformEvents = (events) => {\n return (events || []).map((event) => ({\n timeUnixNano: hrtime.toNanos(event.time),\n name: event.name,\n attributes: transformAttributes(event.attributes),\n }));\n };\n\n return {\n traceId: span.spanContext.traceId,\n spanId: span.spanContext.spanId,\n parentSpanId: span.parentSpanId || '',\n name: span.name,\n kind: span.kind || 1, // INTERNAL by default\n startTimeUnixNano: hrtime.toNanos(span.startTime),\n endTimeUnixNano: hrtime.toNanos(span.endTime),\n attributes: transformAttributes(span.attributes),\n events: transformEvents(span.events),\n };\n }\n\n /**\n * Transforms a resource object into OTLP Resource format\n *\n * @private\n * @param {Object} resource - Resource information\n * @returns {Object} OTLP Resource format\n */\n _transformResource(resource) {\n const attributes = resource.attributes || {};\n const keyValues = Object.entries(attributes).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n\n return {\n attributes: keyValues,\n };\n }\n\n /**\n * Transforms an instrumentation scope into OTLP InstrumentationScope format\n *\n * @private\n * @param {Object} scope - Instrumentation scope information\n * @returns {Object} OTLP InstrumentationScope format\n */\n _transformInstrumentationScope(scope) {\n return {\n name: scope.name || '',\n version: scope.version || '',\n attributes: (scope.attributes || []).map((attr) => ({\n key: attr.key,\n value: this._transformAnyValue(attr.value),\n })),\n };\n }\n\n /**\n * Transforms a JavaScript value into an OTLP AnyValue\n *\n * @private\n * @param {any} value - Value to transform\n * @returns {Object} OTLP AnyValue format\n */\n _transformAnyValue(value) {\n if (value === null || value === undefined) {\n return { stringValue: '' };\n }\n\n const type = typeof value;\n\n if (type === 'string') {\n return { stringValue: value };\n } else if (type === 'number') {\n if (Number.isInteger(value)) {\n return { intValue: value.toString() };\n } else {\n return { doubleValue: value };\n }\n } else if (type === 'boolean') {\n return { boolValue: value };\n } else if (Array.isArray(value)) {\n return {\n arrayValue: {\n values: value.map((v) => this._transformAnyValue(v)),\n },\n };\n } else if (type === 'object') {\n return {\n kvlistValue: {\n values: Object.entries(value).map(([k, v]) => ({\n key: k,\n value: this._transformAnyValue(v),\n })),\n },\n };\n }\n\n return { stringValue: String(value) };\n }\n}\n\nexport const spanExportQueue = [];\n","import logger from '../logger.js';\n\nexport class SpanProcessor {\n constructor(exporter, options = {}) {\n this.exporter = exporter;\n this.options = options;\n this.pendingSpans = new Map();\n this.transforms = [this.userTransform.bind(this)];\n }\n\n addTransform(transformFn) {\n this.transforms.unshift(transformFn);\n }\n\n userTransform(span) {\n if (this.options.transformSpan) {\n this.options.transformSpan({ span: span });\n }\n }\n\n applyTransforms(span) {\n for (const transform of this.transforms) {\n try {\n transform(span);\n } catch (e) {\n logger.error('Error running span transform callback', e);\n }\n }\n }\n\n onStart(span, _parentContext) {\n this.pendingSpans.set(span.span.spanContext.spanId, span);\n }\n\n onEnd(span) {\n this.applyTransforms(span.span);\n this.exporter.export([span.export()]);\n this.pendingSpans.delete(span.span.spanContext.spanId);\n }\n}\n","import hrtime from './hrtime.js';\n\nexport class Span {\n constructor(options) {\n this.usePerformance = options.usePerformance;\n this.initReadableSpan(options);\n\n this.spanProcessor = options.spanProcessor;\n this.spanProcessor.onStart(this, options.context);\n\n if (options.attributes) {\n this.setAttributes(options.attributes);\n }\n return this;\n }\n\n initReadableSpan(options) {\n this.span = {\n name: options.name,\n kind: options.kind,\n spanContext: options.spanContext,\n parentSpanId: options.parentSpanId,\n startTime: options.startTime || hrtime.now(options.usePerformance),\n endTime: [0, 0],\n status: { code: 0, message: '' },\n attributes: { 'session.id': options.session?.id },\n links: [],\n events: [],\n duration: 0,\n ended: false,\n resource: options.resource,\n instrumentationScope: options.scope,\n droppedAttributesCount: 0,\n droppedEventsCount: 0,\n droppedLinksCount: 0,\n };\n }\n\n spanContext() {\n return this.span.spanContext;\n }\n\n get spanId() {\n return this.span.spanContext.spanId;\n }\n\n get traceId() {\n return this.span.spanContext.traceId;\n }\n\n setAttribute(key, value) {\n if (value == null || this.span.ended) return this;\n if (key.length === 0) return this;\n\n this.span.attributes[key] = value;\n return this;\n }\n\n setAttributes(attributes) {\n for (const [k, v] of Object.entries(attributes)) {\n this.setAttribute(k, v);\n }\n return this;\n }\n\n addEvent(name, attributes = {}, time) {\n if (this.span.ended) return this;\n\n this.span.events.push({\n name,\n attributes,\n time: time || hrtime.now(),\n droppedAttributesCount: 0,\n });\n\n return this;\n }\n\n isRecording() {\n return this.span.ended === false;\n }\n\n end(attributes, time) {\n if (attributes) this.setAttributes(attributes);\n this.span.endTime = time || hrtime.now(this.usePerformance);\n this.span.ended = true;\n this.spanProcessor.onEnd(this);\n }\n\n export() {\n return this.span;\n }\n}\n","import { Span } from './span.js';\nimport id from './id.js';\n\nexport class Tracer {\n constructor(tracing, spanProcessor) {\n this.spanProcessor = spanProcessor;\n this.tracing = tracing;\n }\n\n startSpan(\n name,\n options = {},\n context = this.tracing.contextManager.active(),\n ) {\n const parentSpan = this.tracing.getSpan(context);\n const parentSpanContext = parentSpan?.spanContext();\n const spanId = id.gen(8);\n let traceId;\n let traceFlags = 0;\n let traceState = null;\n let parentSpanId;\n if (parentSpanContext) {\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n parentSpanId = parentSpanContext.spanId;\n } else {\n traceId = id.gen(16);\n }\n\n const kind = 0;\n const spanContext = { traceId, spanId, traceFlags, traceState };\n const resource = {\n attributes: {\n ...(this.tracing.resource?.attributes || {}),\n ...(options.resource?.attributes || {}),\n },\n };\n\n const span = new Span({\n resource: resource,\n scope: this.tracing.scope,\n session: this.tracing.session?.session,\n context,\n spanContext,\n name,\n kind,\n parentSpanId,\n spanProcessor: this.spanProcessor,\n startTime: options.startTime,\n usePerformance: options.usePerformance,\n });\n return span;\n }\n}\n","import { ContextManager, createContextKey } from './contextManager.js';\nimport { Session } from './session.js';\nimport { SpanExporter } from './exporter.js';\nimport { SpanProcessor } from './spanProcessor.js';\nimport { Tracer } from './tracer.js';\nimport id from './id.js';\n\nconst SPAN_KEY = createContextKey('Rollbar Context Key SPAN');\n\nexport default class Tracing {\n constructor(gWindow, api, options) {\n this.api = api;\n this.options = options;\n this.window = gWindow;\n\n if (this.window.sessionStorage) {\n this.session = new Session(this, options);\n }\n this.createTracer();\n }\n\n configure(options) {\n // Options merge happens before configure is called, so we can just replace.\n this.options = options;\n }\n\n initSession() {\n if (this.session) {\n this.session.init();\n }\n }\n\n get sessionId() {\n if (this.session) {\n return this.session.session.id;\n }\n return null;\n }\n\n get resource() {\n return {\n attributes: {\n ...(this.options.resource || {}),\n 'rollbar.environment':\n this.options.payload?.environment ?? this.options.environment,\n },\n };\n }\n\n get scope() {\n return {\n name: 'rollbar-browser-js',\n version: this.options.version,\n };\n }\n\n idGen(bytes = 16) {\n return id.gen(bytes);\n }\n\n createTracer() {\n this.contextManager = new ContextManager();\n this.exporter = new SpanExporter(this.api, this.options);\n this.spanProcessor = new SpanProcessor(this.exporter, this.options.tracing);\n this.tracer = new Tracer(this, this.spanProcessor);\n }\n\n getTracer() {\n return this.tracer;\n }\n\n addSpanTransform(transformFn) {\n this.spanProcessor.addTransform(transformFn);\n }\n\n getSpan(context = this.contextManager.active()) {\n return context.getValue(SPAN_KEY);\n }\n\n setSpan(context = this.contextManager.active(), span) {\n return context.setValue(SPAN_KEY, span);\n }\n\n startSpan(name, options = {}, context = this.contextManager.active()) {\n return this.tracer.startSpan(name, options, context);\n }\n\n with(context, fn, thisArg, ...args) {\n return this.contextManager.with(context, fn, thisArg, ...args);\n }\n\n withSpan(name, options, fn, thisArg) {\n const span = this.startSpan(name, options);\n return this.with(\n this.setSpan(this.contextManager.active(), span),\n fn,\n thisArg,\n span,\n );\n }\n}\n","import Rollbar from './core.js';\nimport Telemeter from '../telemetry.js';\nimport Instrumenter from './telemetry.js';\nimport wrapGlobals from './wrapGlobals.js';\nimport scrub from '../scrub.js';\nimport truncation from '../truncation.js';\nimport Tracing from '../tracing/tracing.js';\n\nRollbar.setComponents({\n telemeter: Telemeter,\n instrumenter: Instrumenter,\n wrapGlobals: wrapGlobals,\n scrub: scrub,\n truncation: truncation,\n tracing: Tracing,\n});\n\nexport default Rollbar;\n","import rollbar from '../rollbar.js';\n\nvar options = (typeof window !== 'undefined') && window._rollbarConfig;\nvar alias = options && options.globalAlias || 'Rollbar';\nvar shimRunning = (typeof window !== 'undefined') && window[alias] && typeof window[alias].shimId === 'function' && window[alias].shimId() !== undefined;\n\nif ((typeof window !== 'undefined') && !window._rollbarStartTime) {\n window._rollbarStartTime = (new Date()).getTime();\n}\n\nif (!shimRunning && options) {\n var Rollbar = new rollbar(options);\n window[alias] = Rollbar;\n} else if (typeof window !== 'undefined') {\n window.rollbar = rollbar;\n window._rollbarDidLoad = true;\n} else if (typeof self !== 'undefined') {\n self.rollbar = rollbar;\n self._rollbarDidLoad = true;\n}\n\nexport default rollbar;\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","hasOwn","toStr","toString","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","constructor","merge","i","src","copy","clone","name","result","create","current","length","arguments","isType","x","t","typeName","_typeof","Error","match","toLowerCase","isFunction","f","isObject","type","isFiniteNumber","n","Number","isFinite","isError","e","LEVELS","debug","info","warning","error","critical","sanitizeUrl","url","baseUrlParts","str","parseUriOptions","m","parser","strictMode","exec","uri","l","q","replace","$0","$1","$2","parseUri","anchor","source","query","strict","loose","formatUrl","u","protocol","port","hostname","path","stringify","backup","JSON","jsonError","backupError","jsonParse","s","parse","makeUnhandledStackInfo","message","lineno","colno","mode","backupMessage","errorParser","location","line","column","func","guessFunctionName","context","gatherContext","href","document","useragent","window","navigator","userAgent","String","stack","wrapCallback","logger","err","resp","nonCircularClone","seen","newSeen","includes","slice","push","createItem","args","notifier","requestKeys","lambdaContext","custom","callback","request","arg","extraArgs","argTypes","typ","DOMException","j","len","undefined","d","item","timestamp","now","diagnostic","uuid","c","r","Math","random","floor","data","level","skipFrames","setCustomItemKeys","_originalArgs","original_arg_types","TELEMETRY_TYPES","TELEMETRY_LEVELS","arrayIncludes","arr","val","k","addItemAttributes","itemData","attributes","_step","_iterator","_createForOfIteratorHelper","done","a","keys","split","set","setPrototypeOf","temp","replacement","Date","handleOptions","input","payload","options","hostWhiteList","hostSafeList","log","hostBlackList","hostBlockList","updateDeprecatedOptions","overwriteScrubFields","scrubFields","concat","RateLimiter","this","startTime","_","counter","perMinCounter","platform","platformOptions","configureGlobal","checkRate","limit","ignoreRateLimit","shouldSendValue","shouldSend","globalRateLimit","limitPerMin","perMinute","msg","environment","body","extra","maxItems","itemsPerMinute","language","version","framework","rateLimitPayload","globalSettings","elapsedTime","globalRateLimitPerMin","setPlatformOptions","Queue","rateLimiter","api","replay","_classCallCheck","predicates","pendingItems","pendingRequests","retryQueue","retryHandle","waitCallback","waitIntervalID","_this$api","configure","oldOptions","predicate","idx","indexOf","splice","originalError","originalItem","_this","predicateResult","_applyPredicates","stop","removePendingItem","_maybeLog","transmit","replayId","capture","_makeApiRequest","headers","_dequeuePendingRequest","sendOrDiscardReplay","_this$replay","discard","_this2","_maybeCallWait","clearInterval","setInterval","p","_this3","rateLimitResponse","postItem","_maybeRetry","shouldRetry","retryInterval","RETRIABLE_ERRORS","code","maxRetries","retries","_retryApiRequest","_this4","retryObject","shift","verbose","Notifier","queue","transforms","addTransform","transform","enabled","addPendingItem","_applyTransforms","addItem","bind","transformIndex","transformsLength","cb","Rollbar","telemeter","tracing","tracer","validateTracer","_configuredOptions","setStackTraceLimit","lastError","lastErrorHash","stackTraceLimit","scope","active","global","payloadData","_defaultLogLevel","_log","warn","wait","captureEvent","metadata","captureDomContentLoaded","ts","captureLoad","buildJsonPayload","sendJsonPayload","jsonPayload","postJsonPayload","defaultLevel","ignoreDuplicateErrors","_sameAsLastError","_addTracingAttributes","_addTracingInfo","_captureRollbarItem","telemetryEvents","copyEvents","_this$tracing","_this$tracing2","span","getSpan","sessionId","spanId","traceId","addEvent","logLevel","_isUncaught","itemHash","generateItemHash","spanContext","toSpanId","toTraceId","validateSpan","setTag","opentracingSpanId","opentracingTraceId","opentracing_span_id","opentracing_trace_id","buildPayload","contextResult","substr","getTransportFromOptions","defaults","search","timeout","transport","gWindow","self","defaultTransport","fetch","XMLHttpRequest","detectTransport","proxy","endpoint","opts","pathname","transportOptions","method","transportAPI","host","_regeneratorRuntime","iterator","asyncIterator","define","configurable","writable","wrap","Generator","Context","makeInvokeMethod","tryCatch","h","y","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","mark","__proto__","awrap","async","Promise","reverse","pop","prev","charAt","rval","handle","complete","finish","catch","delegateYield","asyncGeneratorStep","defaultOptions","OTLPDefaultOptions","Api","urllib","truncation","accessToken","_getTransport","OTLPTransportOptions","_getOTLPTransport","helpers","_options$tracing","_objectSpread","_postPromise","_ref","reject","post","setTimeout","postSpans","_ref2","_callee","_args","_context","apply","_next","_throw","_x","stringifyResult","truncate","levels","disable","_len","Array","_key","_len2","_key2","_len3","_key3","_len4","_key4","_len5","_key5","init","unshift","console","controller","timeoutId","AbortController","abort","signal","response","clearTimeout","respHeaders","endsWith","json","_newRetriableError","requestFactory","xmlhttp","factories","ActiveXObject","numFactories","_createXMLHTTPObject","onreadystatechange","readyState","parseResponse","responseText","status","_isSuccess","getResponseHeader","_isNormalFailure","ex","exc","open","setRequestHeader","_i","_Object$entries","entries","_Object$entries$_i","_slicedToArray","send","e1","XDomainRequest","substring","xdomainrequest","onprogress","ontimeout","onerror","onload","e2","Transport","params","access_token","paramsArray","join","sort","qs","_makeZoneRequest","rootZone","Zone","root","run","_makeRequest","RollbarProxy","_msg","_proxyRequest","makeFetchRequest","makeXhrRequest","last","auth","hash","parseInt","pathParts","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","stacktrace","lineRE","lines","file","raw","applySlice","parseOpera9","filtered","filter","map","argsRaw","tokens","locationParts","extractLocation","functionCall","functionName","function","col","parseOpera11","parseOpera10","parseOpera","parseV8OrIeString","parseV8OrIE","parseFFOrSafariString","parseFFOrSafari","allowEmpty","urlLike","parts","isArray","sanitizedLine","functionNameRegex","matches","stackframesLiteToStackframes","liteStackframes","liteStackframe","fileName","lineNumber","columnNumber","ERR_CLASS_REGEXP","RegExp","Frame","stackFrame","_stackFrame","Stack","exception","skip","parserStack","parse$1","parseErrorStack","getStack","_mostSpecificErrorName","rawStack","rawException","constructorName","guessErrorClass","errMsg","errClassMatch","errClass","nested","cause","traceChain","handleDomException","handleItemWithError","stackInfo","_savedStackTrace","addErrorContext","chain","errors","contextAdded","rollbarContext","error_context","description","ensureItemHasSomethingToSay","addBaseInfo","server","addBody","traces","traceChainLength","trace","buildTrace","trace_chain","addBodyTraceChain","stackFromItem","guess","className","errorClass","addBodyMessage","addBodyTrace","_unhandledStackInfo","class","frame","pre","contextLength","mid","frames","filename","sendFrameUrl","itemToPayload","addPayloadOptions","payloadOptions","addTelemetryData","addMessageWithError","tracePath","userTransform","newItem","promisedItem","addConfigToPayload","sendConfig","addFunctionOption","addConfiguredOptions","configuredOptions","configured_options","addDiagnosticKeys","client","is_anonymous","is_uncaught","raw_error","constructor_name","failed","checkIgnore","settings","checkLevel","levelVal","reportLevel","matchFrames","list","block","listLength","frameLength","test","urlIsOnAList","safeOrBlock","tracesLength","listName","messageIsIgnored","ignoredMessages","rIgnoredMessage","messages","messagesFromItem","uncaughtErrorLevel","_toConsumableArray","_instance","components","Telemeter","Instrumenter","instrumenter","wrapGlobals","scrub","Tracing","Replay","API","_gWindow","initSession","replayOptions","autoStart","recorder","start","Client","gDocument","isChrome","chrome","runtime","anonymousErrorsPending","rollbar","requestInfo","query_string","remoteString","captureIp","user_ip","nav","scr","screen","runtime_ms","_rollbarStartTime","round","javascript","browser","cookie_enabled","cookieEnabled","width","height","cur","plugins","navPlugins","sharedTransforms","scrubFn","scrubPaths","addTransformsToNotifier","addPredicate","sharedPredicates","isUncaught","onSendCallback","addPredicatesToQueue","setupUnhandledCapture","instrument","setSessionAttributesFromOptions","_createClass","_this$instrumenter","_createItem","triggerReplay","unhandledExceptionsInitialized","captureUncaught","handleUncaughtExceptions","handler","shim","oldOnError","_rollbarOldOnError","handleAnonymousErrors","fn","old","_rollbarWrappedError","_rollbarContext","ret","handleUncaughtException","_rollbarWindowOnError","globals","wrapGlobalEventHandlers","unhandledRejectionsInitialized","captureUnhandledRejections","handleUnhandledRejections","_rollbarURH","belongsToShim","removeEventListener","rejectionHandler","evt","reason","promise","detail","handleUnhandledRejection","addEventListener","inspectAnonymousErrors","prepareStackTrace","_stack","_isAnonymous","reasonResult","_before","ctxFn","_isWrap","_rollbar_wrapped","_wrappedSource","event","user","session","setUser","attrs","_this$tracing3","setAttributes","_options$payload","_options$client","_options$payload2","_options$payload3","_options$payload4","person","setSessionUser","code_version","codeVersion","setSessionAttributes","maybeCallback","_getFirstFunction","_Rollbar","_defineProperty","callInstance","_len6","_key6","_len7","_key7","_len8","_key8","_len9","_key9","_len10","_key10","_len11","_key11","_len12","_key12","_len13","_key13","_len14","_key14","browserDefaults","includeItemsInTelemetry","triggerDefaults","samplingRatio","preDuration","postDuration","triggers","logErrors","logEmits","inlineStylesheet","inlineImages","collectFonts","maskInputOptions","password","email","tel","text","color","date","month","number","range","time","week","maskAllInputs","blockClass","maskTextClass","ignoreClass","slimDOMOptions","script","comment","headFavicon","headWhitespace","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","MAX_EVENTS","fromMillis","millis","trunc","maxTelemetryEvents","maxQueueSize","max","min","telemetrySpan","startSpan","newMaxEvents","deleteCount","events","filterTelemetry","otelAttributes","_objectWithoutProperties","_excluded","end","rollbarUUID","getLevel","timestamp_ms","_this$telemetrySpan","_this$telemetrySpan2","_this$telemetrySpan3","subtype","requestData","_metadata$response","_this$telemetrySpan4","levelFromStatus","status_code","endTimeNano","end_time_ms","statusCode","request_headers","start_time_ms","element","checked","_this$telemetrySpan5","isSynthetic","endTimeUnixNano","_getRepeatedEvent","_updateRepeatedEvent","_ref3","_this$telemetrySpan6","lastEvent","_lastEvent","target","duration","textZoomRatio","count","rate","_ref4","_this$telemetrySpan7","_ref5","_this$telemetrySpan8","_ref6","_this$telemetrySpan9","dropEffect","effectAllowed","kinds","mediaTypes","from","to","_this$telemetrySpan10","getTime","_ref7","_this$telemetrySpan11","captureError","captureLog","manual","normalizeName","FetchHeaders","append","header","getOwnPropertyNames","normalizeValue","oldValue","has","thisArg","items","iteratorFor","Headers","replacements","orig","seenIndex","isObj","mapped","same","scrubPath","paramRes","pat","_getScrubFieldRegexs","queryRes","_getScrubQueryParamRegexs","redactQueryParam","dummy0","paramPart","traverse","scrubber","tmpV","valScrubber","paramScrubber","elementString","elem","nextStr","totalLength","out","descriptionToString","separator","MAX_LENGTH","elementArrayToString","nextDescription","describeElement","tagName","parentNode","treeToArray","desc","id","classes","attr","getAttribute","network","networkResponseHeaders","networkResponseBody","networkRequestHeaders","networkRequestBody","networkErrorOnHttp5xx","networkErrorOnHttp4xx","networkErrorOnHttp0","dom","navigation","connectivity","contentSecurityPolicy","errorOnContentSecurityPolicy","restore","b","defaultValueScrubber","_step2","patterns","_iterator2","field","nameFromDescription","_patterns","_window","_document","removeListeners","autoInstrument","configureScrubbing","eventRemovers","contentsecuritypolicy","_location","_lastHref","_options$scrubTelemet","_options$replay","_options$replay2","_options$replay3","_options$replay4","_options$replay5","_options$replay6","_options$replay7","_options$replay8","_options$replay9","scrubTelemetryInputs","telemetryScrubber","maskInputFn","scrubClasses","Boolean","scrubSelectors","blockSelector","ignoreSelector","maskTextSelector","oldSettings","deinstrumentNetwork","instrumentNetwork","deinstrumentConsole","instrumentConsole","deinstrumentDom","instrumentDom","deinstrumentNavigation","instrumentNavigation","deinstrumentConnectivity","instrumentConnectivity","deinstrumentContentSecurityPolicy","instrumentContentSecurityPolicy","wrapProp","xhr","xhrp","isUrlObject","_isUrlObject","__rollbar_xhr","request_content_type","onreadystatechangeHandler","__rollbar_event","captureNetwork","response_content_type","headersConfig","allHeaders","getAllResponseHeaders","_step3","_iterator3","trim","_step4","_iterator4","isJsonContentType","scrubJson","addOtelNetworkResponse","errorOnHttpStatus","trackHttpErrors","reqHeaders","fetchHeaders","telemetryEvent","contentType","endTimeMs","inHeaders","outHeaders","currentHeader","_step5","_iterator5","_this$_window","_i2","_methods","wrapConsole","origConsole","Function","addListener","handleEvent","click","handleClick","dragdrop","handleDrag","focus","handleFocus","form","handleForm","handleInput","resize","handleResize","contentLoaded","handleContentLoaded","URL","_evt$target","captureClick","isTrusted","domUtil","_evt$target2","captureFocus","_evt$target3","innerWidth","captureResize","innerHeight","_evt$dataTransfer","_evt$dataTransfer2","_step6","_iterator6","dataTransfer","files","kind","captureDragDrop","inputType","mask","selectors","cls","classList","contains","sel","_evt$target4","_evt$target5","_evt$target6","_evt$target7","scrubInputValue","_evt$target8","captureInput","app","history","pushState","handleUrlChange","parsedHref","urlparser","parsedTo","parsedFrom","captureNavigation","handleConnectivity","captureConnectivityChange","cspEvent","blockedURI","violatedDirective","effectiveDirective","sourceFile","originalPolicy","handleCspError","cspHandler","handleCspEvent","section","types","_step7","_iterator7","_loop","passive","_extendListenerPrototype","oldAddEventListener","_rollbarOldAdd","addFn","bubble","oldRemoveEventListener","_rollbarOldRemove","removeFn","jsonBackup","selectFrames","truncateFrames","maybeTruncateValue","truncateStrings","truncator","truncateTraceData","traceData","minBody","needsTruncation","maxSize","string","charCodeAt","strategy","results","strategies","parentContext","_currentContext","Map","delete","ROOT_CONTEXT","ContextManager","currentContext","previousContext","enterContext","exitContext","gen","randomBytes","Uint8Array","crypto","getRandomValues","byte","padStart","SESSION_KEY","Session","_attributes","getSession","createSession","initSessionAttributes","serializedSession","sessionStorage","getItem","_unused","createdAt","setSession","sessionString","setItem","_unused2","username","_navigator$userAgentD","_navigator$userAgentD2","_navigator$userAgentD3","userAgentData","brands","mobile","add","toMillis","hrtime","toNanos","performance","timeOrigin","isHrTime","SpanExporter","spans","_resultCallback","spanExportQueue","resourceSpans","resource","scopeMap","scopeKey","instrumentationScope","_transformSpan","_transformResource","scopeSpans","scopeData","_transformInstrumentationScope","transformAttributes","_transformAnyValue","parentSpanId","startTimeUnixNano","endTime","timeUnixNano","_this5","stringValue","isInteger","intValue","doubleValue","boolValue","arrayValue","kvlistValue","SpanProcessor","exporter","pendingSpans","transformFn","transformSpan","_parentContext","applyTransforms","export","Span","usePerformance","initReadableSpan","spanProcessor","onStart","_options$session","links","ended","droppedAttributesCount","droppedEventsCount","droppedLinksCount","setAttribute","onEnd","Tracer","_this$tracing$resourc","_options$resource","_this$tracing$session","contextManager","parentSpan","parentSpanContext","traceState","traceFlags","SPAN_KEY","for","createTracer","_this$options$payload","_this$options$payload2","bytes","getValue","setValue","_this$contextManager","with","setSpan","setComponents","_rollbarConfig","alias","globalAlias","shimRunning","shimId","_rollbarDidLoad"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"rollbar.min.js","mappings":"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","sources":["webpack://rollbar/webpack/bootstrap","webpack://rollbar/webpack/runtime/define property getters","webpack://rollbar/webpack/runtime/hasOwnProperty shorthand","webpack://rollbar/webpack/runtime/make namespace object","webpack://rollbar/./src/utility.js","webpack://rollbar/./src/utility/traverse.js","webpack://rollbar/./src/scrub.js","webpack://rollbar/./src/telemetry.js","webpack://rollbar/./src/tracing/context.js","webpack://rollbar/./src/tracing/contextManager.js","webpack://rollbar/./src/tracing/hrtime.js","webpack://rollbar/./src/tracing/exporter.js","webpack://rollbar/./src/tracing/id.js","webpack://rollbar/./src/tracing/session.js","webpack://rollbar/./src/logger.js","webpack://rollbar/./src/tracing/spanProcessor.js","webpack://rollbar/./src/tracing/span.js","webpack://rollbar/./src/tracing/tracer.js","webpack://rollbar/./src/tracing/tracing.js","webpack://rollbar/./src/truncation.js","webpack://rollbar/./src/apiUtility.js","webpack://rollbar/./src/api.js","webpack://rollbar/./src/defaults.js","webpack://rollbar/./node_modules/error-stack-parser-es/dist/lite.mjs","webpack://rollbar/./node_modules/error-stack-parser-es/dist/index.mjs","webpack://rollbar/./src/errorParser.js","webpack://rollbar/./src/predicates.js","webpack://rollbar/./src/notifier.js","webpack://rollbar/./src/queue.js","webpack://rollbar/./src/rateLimiter.js","webpack://rollbar/./src/rollbar.js","webpack://rollbar/./src/transforms.js","webpack://rollbar/./src/browser/defaults.js","webpack://rollbar/./src/browser/predicates.js","webpack://rollbar/./src/browser/transforms.js","webpack://rollbar/./src/browser/transport/fetch.js","webpack://rollbar/./src/browser/transport/xhr.js","webpack://rollbar/./src/browser/transport.js","webpack://rollbar/./src/browser/url.js","webpack://rollbar/./src/browser/core.js","webpack://rollbar/./src/browser/globalSetup.js","webpack://rollbar/./src/browser/replay/defaults.js","webpack://rollbar/./src/tracing/defaults.js","webpack://rollbar/./src/utility/headers.js","webpack://rollbar/./src/utility/replace.js","webpack://rollbar/./src/browser/domUtility.js","webpack://rollbar/./src/browser/telemetry.js","webpack://rollbar/./src/browser/wrapGlobals.js","webpack://rollbar/./src/browser/rollbar.js","webpack://rollbar/./src/browser/bundles/rollbar.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(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__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*\n * isType - Given a Javascript value and a string, returns true if the type of the value matches the\n * given string.\n *\n * @param x - any value\n * @param t - a lowercase string containing one of the following type names:\n * - undefined\n * - null\n * - error\n * - number\n * - boolean\n * - string\n * - symbol\n * - function\n * - object\n * - array\n * @returns true if x is of type t, otherwise false\n */\nfunction isType(x, t) {\n return t === typeName(x);\n}\n\n/*\n * typeName - Given a Javascript value, returns the type of the object as a string\n */\nfunction typeName(x) {\n var name = typeof x;\n if (name !== 'object') {\n return name;\n }\n if (!x) {\n return 'null';\n }\n if (x instanceof Error) {\n return 'error';\n }\n return {}.toString\n .call(x)\n .match(/\\s([a-zA-Z]+)/)[1]\n .toLowerCase();\n}\n\n/* isFunction - a convenience function for checking if a value is a function\n *\n * @param f - any value\n * @returns true if f is a function, otherwise false\n */\nfunction isFunction(f) {\n return isType(f, 'function');\n}\n\n/* isNativeFunction - a convenience function for checking if a value is a native JS function\n *\n * @param f - any value\n * @returns true if f is a native JS function, otherwise false\n */\nfunction isNativeFunction(f) {\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n var funcMatchString = Function.prototype.toString\n .call(Object.prototype.hasOwnProperty)\n .replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?');\n var reIsNative = RegExp('^' + funcMatchString + '$');\n return isObject(f) && reIsNative.test(f);\n}\n\n/* isObject - Checks if the argument is an object\n *\n * @param value - any value\n * @returns true is value is an object function is an object)\n */\nfunction isObject(value) {\n return (\n value != null && (typeof value == 'object' || typeof value == 'function')\n );\n}\n\n/* hasOwn - safe helper around Object.hasOwnProperty */\nfunction hasOwn(obj, prop) {\n if (obj == null) {\n return false;\n }\n if (Object.hasOwn) {\n return Object.hasOwn(obj, prop);\n }\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n/* isString - Checks if the argument is a string\n *\n * @param value - any value\n * @returns true if value is a string\n */\nfunction isString(value) {\n return typeof value === 'string' || value instanceof String;\n}\n\n/**\n * isFiniteNumber - determines whether the passed value is a finite number\n *\n * @param {*} n - any value\n * @returns true if value is a finite number\n */\nfunction isFiniteNumber(n) {\n return Number.isFinite(n);\n}\n\n/*\n * isIterable - convenience function for checking if a value can be iterated, essentially\n * whether it is an object or an array.\n *\n * @param i - any value\n * @returns true if i is an object or an array as determined by `typeName`\n */\nfunction isIterable(i) {\n var type = typeName(i);\n return type === 'object' || type === 'array';\n}\n\n/*\n * isError - convenience function for checking if a value is of an error type\n *\n * @param e - any value\n * @returns true if e is an error\n */\nfunction isError(e) {\n // Detect both Error and Firefox Exception type\n return isType(e, 'error') || isType(e, 'exception');\n}\n\n/* isPromise - a convenience function for checking if a value is a promise\n *\n * @param p - any value\n * @returns true if f is a function, otherwise false\n */\nfunction isPromise(p) {\n return isObject(p) && isType(p.then, 'function');\n}\n\n/**\n * isBrowser - a convenience function for checking if the code is running in a browser\n *\n * @returns true if the code is running in a browser environment\n */\nfunction isBrowser() {\n return typeof window !== 'undefined';\n}\n\nfunction redact() {\n return '********';\n}\n\n// from http://stackoverflow.com/a/8809472/1138191\nfunction uuid4() {\n var d = now();\n var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(\n /[xy]/g,\n function (c) {\n var r = ((d + Math.random() * 16) % 16) | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : (r & 0x7) | 0x8).toString(16);\n },\n );\n return uuid;\n}\n\nvar LEVELS = {\n debug: 0,\n info: 1,\n warning: 2,\n error: 3,\n critical: 4,\n};\n\nfunction sanitizeHref(url) {\n try {\n const urlObject = new URL(url);\n if (urlObject.password) {\n urlObject.password = redact();\n }\n if (urlObject.search) {\n urlObject.search = redact();\n }\n return urlObject.toString();\n } catch (_) {\n return url; // Return original URL if parsing fails\n }\n}\n\nfunction sanitizeUrl(url) {\n var baseUrlParts = parseUri(url);\n if (!baseUrlParts) {\n return '(unknown)';\n }\n\n // remove a trailing # if there is no anchor\n if (baseUrlParts.anchor === '') {\n baseUrlParts.source = baseUrlParts.source.replace('#', '');\n }\n\n url = baseUrlParts.source.replace('?' + baseUrlParts.query, '');\n return url;\n}\n\nvar parseUriOptions = {\n strictMode: false,\n key: [\n 'source',\n 'protocol',\n 'authority',\n 'userInfo',\n 'user',\n 'password',\n 'host',\n 'port',\n 'relative',\n 'path',\n 'directory',\n 'file',\n 'query',\n 'anchor',\n ],\n q: {\n name: 'queryKey',\n parser: /(?:^|&)([^&=]*)=?([^&]*)/g,\n },\n parser: {\n strict:\n /^(?:([^:/?#]+):)?(?:\\/\\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\\d*))?))?((((?:[^?#/]*\\/)*)([^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n loose:\n /^(?:(?![^:@]+:[^:@/]*@)([^:/?#.]+):)?(?:\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[?#]|$)))*\\/?)?([^?#/]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n },\n};\n\nfunction parseUri(str) {\n if (!isType(str, 'string')) {\n return undefined;\n }\n\n var o = parseUriOptions;\n var m = o.parser[o.strictMode ? 'strict' : 'loose'].exec(str);\n var uri = {};\n\n for (var i = 0, l = o.key.length; i < l; ++i) {\n uri[o.key[i]] = m[i] || '';\n }\n\n uri[o.q.name] = {};\n uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {\n if ($1) {\n uri[o.q.name][$1] = $2;\n }\n });\n\n return uri;\n}\n\nfunction addParamsAndAccessTokenToPath(accessToken, options, params) {\n params = params || {};\n params.access_token = accessToken;\n var paramsArray = [];\n var k;\n for (k in params) {\n if (Object.prototype.hasOwnProperty.call(params, k)) {\n paramsArray.push([k, params[k]].join('='));\n }\n }\n var query = '?' + paramsArray.sort().join('&');\n\n options = options || {};\n options.path = options.path || '';\n var qs = options.path.indexOf('?');\n var h = options.path.indexOf('#');\n var p;\n if (qs !== -1 && (h === -1 || h > qs)) {\n p = options.path;\n options.path = p.substring(0, qs) + query + '&' + p.substring(qs + 1);\n } else {\n if (h !== -1) {\n p = options.path;\n options.path = p.substring(0, h) + query + p.substring(h);\n } else {\n options.path = options.path + query;\n }\n }\n}\n\nfunction formatUrl(u, protocol) {\n protocol = protocol || u.protocol;\n if (!protocol && u.port) {\n if (u.port === 80) {\n protocol = 'http:';\n } else if (u.port === 443) {\n protocol = 'https:';\n }\n }\n protocol = protocol || 'https:';\n\n if (!u.hostname) {\n return null;\n }\n var result = protocol + '//' + u.hostname;\n if (u.port) {\n result = result + ':' + u.port;\n }\n if (u.path) {\n result = result + u.path;\n }\n return result;\n}\n\nfunction stringify(obj, backup) {\n var value, error;\n try {\n value = JSON.stringify(obj);\n } catch (jsonError) {\n if (backup && isFunction(backup)) {\n try {\n value = backup(obj);\n } catch (backupError) {\n error = backupError;\n }\n } else {\n error = jsonError;\n }\n }\n return { error: error, value: value };\n}\n\nfunction maxByteSize(string) {\n // The transport will use utf-8, so assume utf-8 encoding.\n //\n // This minimal implementation will accurately count bytes for all UCS-2 and\n // single code point UTF-16. If presented with multi code point UTF-16,\n // which should be rare, it will safely overcount, not undercount.\n //\n // While robust utf-8 encoders exist, this is far smaller and far more performant.\n // For quickly counting payload size for truncation, smaller is better.\n\n var count = 0;\n var length = string.length;\n\n for (var i = 0; i < length; i++) {\n var code = string.charCodeAt(i);\n if (code < 128) {\n // up to 7 bits\n count = count + 1;\n } else if (code < 2048) {\n // up to 11 bits\n count = count + 2;\n } else if (code < 65536) {\n // up to 16 bits\n count = count + 3;\n }\n }\n\n return count;\n}\n\nfunction jsonParse(s) {\n var value, error;\n try {\n value = JSON.parse(s);\n } catch (e) {\n error = e;\n }\n return { error, value };\n}\n\nfunction makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n mode,\n backupMessage,\n errorParser,\n) {\n var location = {\n url: url || '',\n line: lineno,\n column: colno,\n };\n location.func = errorParser.guessFunctionName(location.url, location.line);\n location.context = errorParser.gatherContext(location.url, location.line);\n var href =\n typeof document !== 'undefined' &&\n document &&\n document.location &&\n document.location.href;\n var useragent =\n typeof window !== 'undefined' &&\n window &&\n window.navigator &&\n window.navigator.userAgent;\n return {\n mode: mode,\n message: error ? String(error) : message || backupMessage,\n url: href,\n stack: [location],\n useragent: useragent,\n };\n}\n\nfunction wrapCallback(logger, f) {\n return function (err, resp) {\n try {\n f(err, resp);\n } catch (e) {\n logger.error(e);\n }\n };\n}\n\nfunction nonCircularClone(obj) {\n var seen = [obj];\n\n function clone(obj, seen) {\n var value,\n name,\n newSeen,\n result = {};\n\n try {\n for (name in obj) {\n value = obj[name];\n\n if (value && (isType(value, 'object') || isType(value, 'array'))) {\n if (seen.includes(value)) {\n result[name] = 'Removed circular reference: ' + typeName(value);\n } else {\n newSeen = seen.slice();\n newSeen.push(value);\n result[name] = clone(value, newSeen);\n }\n continue;\n }\n\n result[name] = value;\n }\n } catch (e) {\n result = 'Failed cloning custom data: ' + e.message;\n }\n return result;\n }\n return clone(obj, seen);\n}\n\nfunction createItem(args, logger, notifier, requestKeys, lambdaContext) {\n var message, err, custom, callback, request;\n var arg;\n var extraArgs = [];\n var diagnostic = {};\n var argTypes = [];\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n argTypes.push(typ);\n switch (typ) {\n case 'undefined':\n break;\n case 'string':\n if (message) {\n extraArgs.push(arg);\n } else {\n message = arg;\n }\n break;\n case 'function':\n callback = wrapCallback(logger, arg);\n break;\n case 'date':\n extraArgs.push(arg);\n break;\n case 'error':\n case 'domexception':\n case 'exception': // Firefox Exception type\n if (err) {\n extraArgs.push(arg);\n } else {\n err = arg;\n }\n break;\n case 'object':\n case 'array':\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n if (err) {\n extraArgs.push(arg);\n } else {\n err = arg;\n }\n break;\n }\n if (requestKeys && typ === 'object' && !request) {\n for (var j = 0, len = requestKeys.length; j < len; ++j) {\n if (arg[requestKeys[j]] !== undefined) {\n request = arg;\n break;\n }\n }\n if (request) {\n break;\n }\n }\n if (custom) {\n extraArgs.push(arg);\n } else {\n custom = arg;\n }\n break;\n default:\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n if (err) {\n extraArgs.push(arg);\n } else {\n err = arg;\n }\n break;\n }\n extraArgs.push(arg);\n }\n }\n\n // if custom is an array this turns it into an object with integer keys\n if (custom) custom = nonCircularClone(custom);\n\n if (extraArgs.length > 0) {\n if (!custom) custom = nonCircularClone({});\n custom.extraArgs = nonCircularClone(extraArgs);\n }\n\n var item = {\n message: message,\n err: err,\n custom: custom,\n timestamp: now(),\n callback: callback,\n notifier: notifier,\n diagnostic: diagnostic,\n uuid: uuid4(),\n };\n\n item.data = item.data || {};\n\n setCustomItemKeys(item, custom);\n\n if (requestKeys && request) {\n item.request = request;\n }\n if (lambdaContext) {\n item.lambdaContext = lambdaContext;\n }\n item._originalArgs = args;\n item.diagnostic.original_arg_types = argTypes;\n return item;\n}\n\nfunction setCustomItemKeys(item, custom) {\n if (custom && custom.level !== undefined) {\n item.level = custom.level;\n delete custom.level;\n }\n if (custom && custom.skipFrames !== undefined) {\n item.skipFrames = custom.skipFrames;\n delete custom.skipFrames;\n }\n}\n\nfunction addErrorContext(item, errors) {\n var custom = item.data.custom || {};\n var contextAdded = false;\n\n try {\n for (const error of errors) {\n if (hasOwn(error, 'rollbarContext')) {\n custom = merge(custom, nonCircularClone(error.rollbarContext));\n contextAdded = true;\n }\n }\n\n // Avoid adding an empty object to the data.\n if (contextAdded) {\n item.data.custom = custom;\n }\n } catch (e) {\n item.diagnostic.error_context = 'Failed: ' + e.message;\n }\n}\n\nvar TELEMETRY_TYPES = [\n 'log',\n 'network',\n 'dom',\n 'navigation',\n 'error',\n 'manual',\n];\nvar TELEMETRY_LEVELS = ['critical', 'error', 'warning', 'info', 'debug'];\n\nfunction arrayIncludes(arr, val) {\n for (const entry of arr) {\n if (entry === val) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction createTelemetryEvent(args) {\n var type, metadata, level;\n var arg;\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n switch (typ) {\n case 'string':\n if (!type && arrayIncludes(TELEMETRY_TYPES, arg)) {\n type = arg;\n } else if (!level && arrayIncludes(TELEMETRY_LEVELS, arg)) {\n level = arg;\n }\n break;\n case 'object':\n metadata = arg;\n break;\n default:\n break;\n }\n }\n var event = {\n type: type || 'manual',\n metadata: metadata || {},\n level: level,\n };\n\n return event;\n}\n\nfunction addItemAttributes(itemData, attributes) {\n itemData.attributes = itemData.attributes || [];\n for (const a of attributes) {\n if (a.value === undefined) {\n continue;\n }\n itemData.attributes.push(a);\n }\n}\n\n/*\n * get - given an obj/array and a keypath, return the value at that keypath or\n * undefined if not possible.\n *\n * @param obj - an object or array\n * @param path - a string of keys separated by '.' such as 'plugin.jquery.0.message'\n * which would correspond to 42 in `{plugin: {jquery: [{message: 42}]}}`\n */\nfunction get(obj, path) {\n if (!obj) {\n return undefined;\n }\n var keys = path.split('.');\n var result = obj;\n try {\n for (var i = 0, len = keys.length; i < len; ++i) {\n result = result[keys[i]];\n }\n } catch (_e) {\n result = undefined;\n }\n return result;\n}\n\nfunction set(obj, path, value) {\n if (!obj) {\n return;\n }\n\n // Prevent prototype pollution by setting the prototype to null.\n Object.setPrototypeOf(obj, null);\n\n var keys = path.split('.');\n var len = keys.length;\n if (len < 1) {\n return;\n }\n if (len === 1) {\n obj[keys[0]] = value;\n return;\n }\n try {\n var temp = obj[keys[0]] || {};\n var replacement = temp;\n for (var i = 1; i < len - 1; ++i) {\n temp[keys[i]] = temp[keys[i]] || {};\n temp = temp[keys[i]];\n }\n temp[keys[len - 1]] = value;\n obj[keys[0]] = replacement;\n } catch (_e) {\n return;\n }\n}\n\nfunction formatArgsAsString(args) {\n var i, len, arg;\n var result = [];\n for (i = 0, len = args.length; i < len; ++i) {\n arg = args[i];\n switch (typeName(arg)) {\n case 'object':\n arg = stringify(arg);\n arg = arg.error || arg.value;\n if (arg.length > 500) {\n arg = arg.substr(0, 497) + '...';\n }\n break;\n case 'null':\n arg = 'null';\n break;\n case 'undefined':\n arg = 'undefined';\n break;\n case 'symbol':\n arg = arg.toString();\n break;\n }\n result.push(arg);\n }\n return result.join(' ');\n}\n\nfunction now() {\n if (Date.now) {\n return Date.now();\n }\n return Number(new Date());\n}\n\nfunction filterIp(requestData, captureIp) {\n if (!requestData || !requestData['user_ip'] || captureIp === true) {\n return;\n }\n var newIp = requestData['user_ip'];\n if (!captureIp) {\n newIp = null;\n } else {\n try {\n var parts;\n if (newIp.indexOf('.') !== -1) {\n parts = newIp.split('.');\n parts.pop();\n parts.push('0');\n newIp = parts.join('.');\n } else if (newIp.indexOf(':') !== -1) {\n parts = newIp.split(':');\n if (parts.length > 2) {\n var beginning = parts.slice(0, 3);\n var slashIdx = beginning[2].indexOf('/');\n if (slashIdx !== -1) {\n beginning[2] = beginning[2].substring(0, slashIdx);\n }\n var terminal = '0000:0000:0000:0000:0000';\n newIp = beginning.concat(terminal).join(':');\n }\n } else {\n newIp = null;\n }\n } catch (_e) {\n newIp = null;\n }\n }\n requestData['user_ip'] = newIp;\n}\n\nfunction handleOptions(current, input, payload, logger) {\n var result = merge(current, input, payload);\n result = updateDeprecatedOptions(result, logger);\n if (!input || input.overwriteScrubFields) {\n return result;\n }\n if (input.scrubFields) {\n result.scrubFields = (current.scrubFields || []).concat(input.scrubFields);\n }\n return result;\n}\n\nfunction updateDeprecatedOptions(options, logger) {\n if (options.hostWhiteList && !options.hostSafeList) {\n options.hostSafeList = options.hostWhiteList;\n options.hostWhiteList = undefined;\n logger && logger.log('hostWhiteList is deprecated. Use hostSafeList.');\n }\n if (options.hostBlackList && !options.hostBlockList) {\n options.hostBlockList = options.hostBlackList;\n options.hostBlackList = undefined;\n logger && logger.log('hostBlackList is deprecated. Use hostBlockList.');\n }\n return options;\n}\n\nfunction merge() {\n function isPlainObject(obj) {\n if (!obj || Object.prototype.toString.call(obj) !== '[object Object]') {\n return false;\n }\n\n var hasOwnConstructor = hasOwn(obj, 'constructor');\n var hasIsPrototypeOf =\n obj.constructor &&\n obj.constructor.prototype &&\n hasOwn(obj.constructor.prototype, 'isPrototypeOf');\n // Not own constructor property must be Object\n if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n return false;\n }\n\n // Own properties are enumerated firstly, so to speed up,\n // if last one is own, then all properties are own.\n var key;\n for (key in obj) {\n /**/\n }\n\n return typeof key === 'undefined' || hasOwn(obj, key);\n }\n\n var i,\n src,\n copy,\n clone,\n name,\n result = Object.create(null), // no prototype pollution on Object\n current = null,\n length = arguments.length;\n\n for (i = 0; i < length; i++) {\n current = arguments[i];\n if (current === null || current === undefined) {\n continue;\n }\n\n for (name in current) {\n src = result[name];\n copy = current[name];\n if (result !== copy) {\n if (copy && isPlainObject(copy)) {\n clone = src && isPlainObject(src) ? src : {};\n result[name] = merge(clone, copy);\n } else if (typeof copy !== 'undefined') {\n result[name] = copy;\n }\n }\n }\n }\n return result;\n}\n\nexport {\n addParamsAndAccessTokenToPath,\n createItem,\n addErrorContext,\n createTelemetryEvent,\n addItemAttributes,\n filterIp,\n formatArgsAsString,\n formatUrl,\n get,\n handleOptions,\n isError,\n isFiniteNumber,\n isFunction,\n hasOwn,\n isIterable,\n isNativeFunction,\n isObject,\n isString,\n isType,\n isPromise,\n isBrowser,\n jsonParse,\n LEVELS,\n makeUnhandledStackInfo,\n merge,\n now,\n redact,\n sanitizeHref,\n sanitizeUrl,\n set,\n stringify,\n maxByteSize,\n typeName,\n uuid4,\n};\n","import * as _ from '../utility.js';\n\nfunction traverse(obj, func, seen) {\n var k, v, i;\n var isObj = _.isType(obj, 'object');\n var isArray = _.isType(obj, 'array');\n var keys = [];\n var seenIndex;\n\n // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11.\n seen = seen || { obj: [], mapped: [] };\n\n if (isObj) {\n seenIndex = seen.obj.indexOf(obj);\n\n if (isObj && seenIndex !== -1) {\n // Prefer the mapped object if there is one.\n return seen.mapped[seenIndex] || seen.obj[seenIndex];\n }\n\n seen.obj.push(obj);\n seenIndex = seen.obj.length - 1;\n }\n\n if (isObj) {\n for (k in obj) {\n if (_.hasOwn(obj, k)) {\n keys.push(k);\n }\n }\n } else if (isArray) {\n for (i = 0; i < obj.length; ++i) {\n keys.push(i);\n }\n }\n\n var result = isObj ? {} : [];\n var same = true;\n for (i = 0; i < keys.length; ++i) {\n k = keys[i];\n v = obj[k];\n result[k] = func(k, v, seen);\n same = same && result[k] === obj[k];\n }\n\n if (isObj && !same) {\n seen.mapped[seenIndex] = result;\n }\n\n return !same ? result : obj;\n}\n\nexport default traverse;\n","import traverse from './utility/traverse.js';\nimport * as _ from './utility.js';\n\nfunction scrub(data, scrubFields, scrubPaths) {\n scrubFields = scrubFields || [];\n\n if (scrubPaths) {\n for (const path of scrubPaths) {\n scrubPath(data, path);\n }\n }\n\n var paramRes = _getScrubFieldRegexs(scrubFields);\n var queryRes = _getScrubQueryParamRegexs(scrubFields);\n\n function redactQueryParam(dummy0, paramPart) {\n return paramPart + _.redact();\n }\n\n function paramScrubber(v) {\n if (_.isType(v, 'string')) {\n for (const regex of queryRes) {\n v = v.replace(regex, redactQueryParam);\n }\n }\n return v;\n }\n\n function valScrubber(k, v) {\n for (const regex of paramRes) {\n if (regex.test(k)) {\n v = _.redact();\n break;\n }\n }\n return v;\n }\n\n function scrubber(k, v, seen) {\n var tmpV = valScrubber(k, v);\n if (tmpV === v) {\n if (_.isType(v, 'object') || _.isType(v, 'array')) {\n return traverse(v, scrubber, seen);\n }\n return paramScrubber(tmpV);\n } else {\n return tmpV;\n }\n }\n\n return traverse(data, scrubber);\n}\n\nfunction scrubPath(obj, path) {\n var keys = path.split('.');\n var last = keys.length - 1;\n try {\n for (const [index, key] of keys.entries()) {\n if (index < last) {\n obj = obj[key];\n } else {\n obj[key] = _.redact();\n }\n }\n } catch (_e) {\n // Missing key is OK;\n }\n}\n\nfunction _getScrubFieldRegexs(scrubFields) {\n var ret = [];\n for (const field of scrubFields) {\n var pat = '^\\\\[?(%5[bB])?' + field + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?$';\n ret.push(new RegExp(pat, 'i'));\n }\n return ret;\n}\n\nfunction _getScrubQueryParamRegexs(scrubFields) {\n var ret = [];\n for (const field of scrubFields) {\n var pat = '\\\\[?(%5[bB])?' + field + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?';\n ret.push(new RegExp('(' + pat + '=)([^&\\\\n]+)', 'igm'));\n }\n return ret;\n}\n\nexport default scrub;\n","import * as _ from './utility.js';\n\nconst MAX_EVENTS = 100;\n\n// Temporary workaround while solving commonjs -> esm issues in Node 18 - 20.\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\nclass Telemeter {\n constructor(options, tracing) {\n this.queue = [];\n this.options = _.merge(options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n this.tracing = tracing;\n this.telemetrySpan = this.tracing?.startSpan('rollbar-telemetry', {});\n }\n\n configure(options) {\n var oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n var newMaxEvents = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n var deleteCount = 0;\n if (this.queue.length > newMaxEvents) {\n deleteCount = this.queue.length - newMaxEvents;\n }\n this.maxQueueSize = newMaxEvents;\n this.queue.splice(0, deleteCount);\n }\n\n copyEvents() {\n var events = Array.prototype.slice.call(this.queue, 0);\n if (_.isFunction(this.options.filterTelemetry)) {\n try {\n var i = events.length;\n while (i--) {\n if (this.options.filterTelemetry(events[i])) {\n events.splice(i, 1);\n }\n }\n } catch (_e) {\n this.options.filterTelemetry = null;\n }\n }\n\n // Filter until supported in legacy telemetry\n events = events.filter((e) => e.type !== 'connectivity');\n\n // Remove internal keys from output\n events = events.map(\n ({ otelAttributes: _otelAttributes, ...event }) => event,\n );\n\n return events;\n }\n\n exportTelemetrySpan(attributes = {}) {\n if (this.telemetrySpan) {\n this.telemetrySpan.end(attributes);\n this.telemetrySpan = this.tracing.startSpan('rollbar-telemetry', {});\n }\n }\n\n capture(\n type,\n metadata,\n level,\n rollbarUUID,\n timestamp = null,\n otelAttributes = null,\n ) {\n var e = {\n level: getLevel(type, level),\n type: type,\n timestamp_ms: timestamp || _.now(),\n body: metadata,\n source: 'client',\n };\n if (rollbarUUID) {\n e.uuid = rollbarUUID;\n }\n if (otelAttributes) {\n e.otelAttributes = otelAttributes;\n }\n\n try {\n if (\n _.isFunction(this.options.filterTelemetry) &&\n this.options.filterTelemetry(e)\n ) {\n return false;\n }\n } catch (_exc) {\n this.options.filterTelemetry = null;\n }\n\n this.push(e);\n return e;\n }\n\n captureEvent(type, metadata, level, rollbarUUID) {\n return this.capture(type, metadata, level, rollbarUUID);\n }\n\n captureError(err, level, rollbarUUID, timestamp) {\n const message = err.message || String(err);\n var metadata = { message };\n if (err.stack) {\n metadata.stack = err.stack;\n }\n const otelAttributes = {\n message,\n level,\n type: 'error',\n uuid: rollbarUUID,\n };\n\n this.telemetrySpan?.addEvent(\n 'rollbar-occurrence-event',\n otelAttributes,\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'error',\n metadata,\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureLog(message, level, rollbarUUID, timestamp) {\n const event = rollbarUUID\n ? 'rollbar-occurrence-event'\n : 'rollbar-log-event';\n const otelAttributes = {\n message,\n level,\n ...(rollbarUUID ? { type: 'message', uuid: rollbarUUID } : {}),\n };\n\n this.telemetrySpan?.addEvent(event, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'log',\n { message },\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNetwork(metadata, subtype, rollbarUUID, requestData) {\n subtype = subtype || 'xhr';\n metadata.subtype = metadata.subtype || subtype;\n if (requestData) {\n metadata.request = requestData;\n }\n const level = this.levelFromStatus(metadata.status_code);\n const endTimeNano = (metadata.end_time_ms || 0) * 1e6;\n const otelAttributes = {\n type: metadata.subtype,\n method: metadata.method,\n url: metadata.url,\n statusCode: metadata.status_code,\n 'request.headers': JSON.stringify(metadata.request_headers || {}),\n 'response.headers': JSON.stringify(metadata.response?.headers || {}),\n 'response.timeUnixNano': endTimeNano.toString(),\n };\n const requestBody = metadata.request;\n const responseBody = metadata.response?.body;\n if (requestBody) {\n otelAttributes['request.body'] = JSON.stringify(requestBody);\n }\n if (responseBody) {\n otelAttributes['response.body'] = JSON.stringify(responseBody);\n }\n\n this.telemetrySpan?.addEvent(\n 'rollbar-network-event',\n otelAttributes,\n fromMillis(metadata.start_time_ms),\n );\n\n return this.capture(\n 'network',\n metadata,\n level,\n rollbarUUID,\n metadata.start_time_ms,\n otelAttributes,\n );\n }\n\n levelFromStatus(statusCode) {\n if (statusCode >= 200 && statusCode < 400) {\n return 'info';\n }\n if (statusCode === 0 || statusCode >= 400) {\n return 'error';\n }\n return 'info';\n }\n\n captureDom(subtype, element, value, checked, rollbarUUID) {\n var metadata = {\n subtype: subtype,\n element: element,\n };\n if (value !== undefined) {\n metadata.value = value;\n }\n if (checked !== undefined) {\n metadata.checked = checked;\n }\n return this.capture('dom', metadata, 'info', rollbarUUID);\n }\n\n captureInput({ type, isSynthetic, element, value, timestamp }) {\n const name = 'rollbar-input-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n value,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n value,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureClick({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-click-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n _getRepeatedEvent(name, attributes) {\n const lastEvent = this._lastEvent(this.queue);\n\n if (\n lastEvent &&\n lastEvent.body.type === name &&\n lastEvent.otelAttributes.target === attributes.target\n ) {\n return lastEvent;\n }\n }\n\n _updateRepeatedEvent(event, attributes, timestamp) {\n const duration = Math.max(timestamp - event.timestamp_ms, 1);\n event.body.value = attributes.value;\n event.otelAttributes.value = attributes.value;\n event.otelAttributes.height = attributes.height;\n event.otelAttributes.width = attributes.width;\n event.otelAttributes.textZoomRatio = attributes.textZoomRatio;\n event.otelAttributes['endTimeUnixNano'] = fromMillis(timestamp);\n event.otelAttributes['durationUnixNano'] = fromMillis(duration);\n event.otelAttributes.count = (event.otelAttributes.count || 1) + 1;\n event.otelAttributes.rate = event.otelAttributes.count / (duration / 1000);\n }\n\n _lastEvent(list) {\n return list.length > 0 ? list[list.length - 1] : null;\n }\n\n captureFocus({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-focus-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureResize({\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n timestamp,\n }) {\n const name = 'rollbar-resize-event';\n const metadata = {\n type: name,\n subtype: type,\n width,\n height,\n textZoomRatio,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n };\n\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureDragDrop({\n type,\n isSynthetic,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n timestamp,\n }) {\n const name = 'rollbar-dragdrop-event';\n let metadata = {\n type: name,\n subtype: type,\n isSynthetic,\n };\n\n let otelAttributes = {\n type,\n isSynthetic,\n };\n\n if (type === 'dragstart') {\n metadata = { ...metadata, element, dropEffect, effectAllowed };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n };\n }\n\n if (type === 'drop') {\n metadata = {\n ...metadata,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNavigation(from, to, rollbarUUID, timestamp) {\n this.telemetrySpan?.addEvent(\n 'rollbar-navigation-event',\n { 'previous.url.full': from, 'url.full': to },\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'navigation',\n { from, to },\n 'info',\n rollbarUUID,\n timestamp,\n );\n }\n\n captureDomContentLoaded(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'DOMContentLoaded' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'DOMContentLoaded'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureLoad(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'load' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'load'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureConnectivityChange({ type, isSynthetic, timestamp }) {\n const name = 'rollbar-connectivity-event';\n const metadata = {\n type: name,\n subtype: type,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'connectivity',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n // Only intended to be used internally by the notifier\n _captureRollbarItem(item) {\n if (!this.options.includeItemsInTelemetry) {\n return;\n }\n if (item.err) {\n return this.captureError(item.err, item.level, item.uuid, item.timestamp);\n }\n if (item.message) {\n return this.captureLog(\n item.message,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n if (item.custom) {\n return this.capture(\n 'log',\n item.custom,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n }\n\n push(e) {\n this.queue.push(e);\n if (this.queue.length > this.maxQueueSize) {\n this.queue.shift();\n }\n }\n}\n\nfunction getLevel(type, level) {\n if (level) {\n return level;\n }\n var defaultLevel = {\n error: 'error',\n manual: 'info',\n };\n return defaultLevel[type] || 'info';\n}\n\nexport default Telemeter;\n","export class Context {\n constructor(parentContext) {\n this._currentContext = parentContext ? new Map(parentContext) : new Map();\n }\n\n getValue(key) {\n return this._currentContext.get(key);\n }\n\n setValue(key, value) {\n const context = new Context(this._currentContext);\n context._currentContext.set(key, value);\n return context;\n }\n\n deleteValue(key) {\n const context = new Context(self._currentContext);\n context._currentContext.delete(key);\n return context;\n }\n}\n\nexport const ROOT_CONTEXT = new Context();\n","import { ROOT_CONTEXT } from './context.js';\n\nexport class ContextManager {\n constructor() {\n this.currentContext = ROOT_CONTEXT;\n }\n\n active() {\n return this.currentContext;\n }\n\n enterContext(context) {\n const previousContext = this.currentContext;\n this.currentContext = context || ROOT_CONTEXT;\n return previousContext;\n }\n\n exitContext(context) {\n this.currentContext = context;\n return this.currentContext;\n }\n\n with(context, fn, thisArg, ...args) {\n const previousContext = this.enterContext(context);\n try {\n return fn.call(thisArg, ...args);\n } finally {\n this.exitContext(previousContext);\n }\n }\n}\n\nexport function createContextKey(key) {\n // Use Symbol for OpenTelemetry compatibility.\n return Symbol.for(key);\n}\n","/**\n * @module hrtime\n *\n * @description Methods for handling OpenTelemetry hrtime.\n */\n\n/**\n * Convert a duration in milliseconds to an OpenTelemetry hrtime tuple.\n *\n * @param {number} millis - The duration in milliseconds.\n * @returns {[number, number]} An array where the first element is seconds\n * and the second is nanoseconds.\n */\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in milliseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in milliseconds.\n */\nfunction toMillis(hrtime) {\n return hrtime[0] * 1e3 + Math.round(hrtime[1] / 1e6);\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in nanoseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in nanoseconds.\n */\nfunction toNanos(hrtime) {\n return hrtime[0] * 1e9 + hrtime[1];\n}\n\n/**\n * Adds two OpenTelemetry hrtime tuples.\n *\n * @param {[number, number]} a - The first hrtime tuple [s, ns].\n * @param {[number, number]} b - The second hrtime tuple [s, ns].\n * @returns {[number, number]} Summed hrtime tuple, normalized.\n *\n */\nfunction add(a, b) {\n return [a[0] + b[0] + Math.trunc((a[1] + b[1]) / 1e9), (a[1] + b[1]) % 1e9];\n}\n\n/**\n * Get the current high-resolution time as an OpenTelemetry hrtime tuple.\n *\n * @param {boolean} usePerformance=false - If true, uses the Performance API (timeOrigin + now()).\n *\n * @returns {[number, number]} The current hrtime tuple [s, ns].\n */\nfunction now(usePerformance = false) {\n if (usePerformance) {\n return add(\n fromMillis(performance.timeOrigin),\n fromMillis(performance.now()),\n );\n }\n return fromMillis(Date.now());\n}\n\n/**\n * Check if a value is a valid OpenTelemetry hrtime tuple.\n *\n * An hrtime tuple is an Array of exactly two numbers:\n * [seconds, nanoseconds]\n *\n * @param {*} value – anything to test\n * @returns {boolean} true if `value` is a [number, number] array of length 2\n *\n * @example\n * isHrTime([ 1, 500 ]); // true\n * isHrTime([ 0, 1e9 ]); // true\n * isHrTime([ '1', 500 ]); // false\n * isHrTime({ 0: 1, 1: 500 }); // false\n */\nfunction isHrTime(value) {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number'\n );\n}\n\n/**\n * Methods for handling hrtime. OpenTelemetry uses the [seconds, nanoseconds]\n * format for hrtime in the `ReadableSpan` interface.\n *\n * @example\n * import hrtime from '@tracing/hrtime.js';\n *\n * hrtime.fromMillis(1000);\n * hrtime.toMillis([0, 1000]);\n * hrtime.add([0, 0], [0, 1000]);\n * hrtime.now();\n * hrtime.isHrTime([0, 1000]);\n */\nexport default { fromMillis, toMillis, toNanos, add, now, isHrTime };\n","import hrtime from './hrtime.js';\n\n/**\n * SpanExporter is responsible for exporting ReadableSpan objects\n * and transforming them into the OTLP-compatible format.\n */\nexport class SpanExporter {\n constructor(api, options = {}) {\n this.api = api;\n this.options = options;\n }\n\n /**\n * Export spans to the span export queue\n *\n * @param {Array} spans - Array of ReadableSpan objects to export\n * @param {Function} _resultCallback - Optional callback (not used)\n */\n export(spans, _resultCallback) {\n spanExportQueue.push(...spans);\n }\n\n /**\n * Transforms an array of ReadableSpan objects into the OTLP format payload\n * compatible with the Rollbar API. This follows the OpenTelemetry protocol\n * specification for traces.\n *\n * @returns {Object} OTLP format payload for API transmission\n */\n toPayload() {\n const spans = spanExportQueue.slice();\n spanExportQueue.length = 0;\n\n if (!spans || !spans.length) {\n return { resourceSpans: [] };\n }\n\n const resource = (spans[0] && spans[0].resource) || {};\n\n const scopeMap = new Map();\n\n for (const span of spans) {\n const scopeKey = span.instrumentationScope\n ? `${span.instrumentationScope.name}:${span.instrumentationScope.version}`\n : 'default:1.0.0';\n\n if (!scopeMap.has(scopeKey)) {\n scopeMap.set(scopeKey, {\n scope: span.instrumentationScope || {\n name: 'default',\n version: '1.0.0',\n attributes: [],\n },\n spans: [],\n });\n }\n\n scopeMap.get(scopeKey).spans.push(this._transformSpan(span));\n }\n\n return {\n resourceSpans: [\n {\n resource: this._transformResource(resource),\n scopeSpans: Array.from(scopeMap.values()).map((scopeData) => ({\n scope: this._transformInstrumentationScope(scopeData.scope),\n spans: scopeData.spans,\n })),\n },\n ],\n };\n }\n\n /**\n * Sends the given payload to the Rollbar API.\n *\n * @param {String} payload - Serialized OTLP format payload\n * @param {Object} headers - Optional request headers\n * @returns {Promise} Promise that resolves when the request completes\n */\n post(payload, headers = {}) {\n return this.api.postSpans(payload, headers);\n }\n\n /**\n * Transforms a ReadableSpan into the OTLP Span format\n *\n * @private\n * @param {Object} span - ReadableSpan object to transform\n * @returns {Object} OTLP Span format\n */\n _transformSpan(span) {\n const transformAttributes = (attributes) => {\n return Object.entries(attributes || {}).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n };\n\n const transformEvents = (events) => {\n return (events || []).map((event) => ({\n timeUnixNano: hrtime.toNanos(event.time),\n name: event.name,\n attributes: transformAttributes(event.attributes),\n }));\n };\n\n return {\n traceId: span.spanContext.traceId,\n spanId: span.spanContext.spanId,\n parentSpanId: span.parentSpanId || '',\n name: span.name,\n kind: span.kind || 1, // INTERNAL by default\n startTimeUnixNano: hrtime.toNanos(span.startTime),\n endTimeUnixNano: hrtime.toNanos(span.endTime),\n attributes: transformAttributes(span.attributes),\n events: transformEvents(span.events),\n };\n }\n\n /**\n * Transforms a resource object into OTLP Resource format\n *\n * @private\n * @param {Object} resource - Resource information\n * @returns {Object} OTLP Resource format\n */\n _transformResource(resource) {\n const attributes = resource.attributes || {};\n const keyValues = Object.entries(attributes).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n\n return {\n attributes: keyValues,\n };\n }\n\n /**\n * Transforms an instrumentation scope into OTLP InstrumentationScope format\n *\n * @private\n * @param {Object} scope - Instrumentation scope information\n * @returns {Object} OTLP InstrumentationScope format\n */\n _transformInstrumentationScope(scope) {\n return {\n name: scope.name || '',\n version: scope.version || '',\n attributes: (scope.attributes || []).map((attr) => ({\n key: attr.key,\n value: this._transformAnyValue(attr.value),\n })),\n };\n }\n\n /**\n * Transforms a JavaScript value into an OTLP AnyValue\n *\n * @private\n * @param {any} value - Value to transform\n * @returns {Object} OTLP AnyValue format\n */\n _transformAnyValue(value) {\n if (value === null || value === undefined) {\n return { stringValue: '' };\n }\n\n const type = typeof value;\n\n if (type === 'string') {\n return { stringValue: value };\n } else if (type === 'number') {\n if (Number.isInteger(value)) {\n return { intValue: value.toString() };\n } else {\n return { doubleValue: value };\n }\n } else if (type === 'boolean') {\n return { boolValue: value };\n } else if (Array.isArray(value)) {\n return {\n arrayValue: {\n values: value.map((v) => this._transformAnyValue(v)),\n },\n };\n } else if (type === 'object') {\n return {\n kvlistValue: {\n values: Object.entries(value).map(([k, v]) => ({\n key: k,\n value: this._transformAnyValue(v),\n })),\n },\n };\n }\n\n return { stringValue: String(value) };\n }\n}\n\nexport const spanExportQueue = [];\n","/**\n * Generate a random hexadecimal ID of specified byte length\n *\n * @param {number} bytes - Number of bytes for the ID (default: 16)\n * @returns {string} - Hexadecimal string representation\n */\nfunction gen(bytes = 16) {\n let randomBytes = new Uint8Array(bytes);\n crypto.getRandomValues(randomBytes);\n let randHex = Array.from(randomBytes, (byte) =>\n byte.toString(16).padStart(2, '0'),\n ).join('');\n return randHex;\n}\n\n/**\n * Tracing id generation utils\n *\n * @example\n * import id from './id.js';\n *\n * const spanId = id.gen(8); // => \"a1b2c3d4e5f6...\"\n */\nexport default { gen };\n","import id from './id.js';\n\nconst SESSION_KEY = 'RollbarSession';\n\nexport class Session {\n _attributes;\n\n constructor(tracing, options) {\n this.options = options;\n this.tracing = tracing;\n this.window = tracing.window;\n this.session = null;\n this._attributes = {};\n }\n\n init(attrs = {}) {\n if (this.session) {\n return this;\n }\n this.getSession() || this.createSession();\n\n this.initSessionAttributes(attrs);\n\n return this;\n }\n\n getSession() {\n try {\n const serializedSession = this.window.sessionStorage.getItem(SESSION_KEY);\n\n if (!serializedSession) {\n return null;\n }\n\n this.session = JSON.parse(serializedSession);\n } catch {\n return null;\n }\n return this;\n }\n\n createSession() {\n this.session = {\n id: id.gen(),\n createdAt: Date.now(),\n };\n\n return this.setSession(this.session);\n }\n\n setSession(session) {\n const sessionString = JSON.stringify(session);\n\n try {\n this.window.sessionStorage.setItem(SESSION_KEY, sessionString);\n } catch {\n return null;\n }\n return this;\n }\n\n get attributes() {\n return this._attributes;\n }\n\n setAttributes(attributes) {\n this._attributes = { ...this._attributes, ...attributes };\n return this;\n }\n\n setUser(user) {\n this.setAttributes({\n 'user.id': user?.id,\n 'user.email': user?.email,\n 'user.name': user?.name || user?.username,\n });\n return this;\n }\n\n initSessionAttributes(attrs) {\n this.setAttributes({\n 'session.id': this.session.id,\n 'browser.brands': navigator.userAgentData?.brands,\n 'browser.language': navigator.language,\n 'browser.mobile': navigator.userAgentData?.mobile,\n 'browser.platform': navigator.userAgentData?.platform,\n 'client.address': '$remote_ip', // updated at the API\n 'rollbar.notifier.framework': 'browser-js',\n 'user_agent.original': navigator.userAgent,\n ...attrs,\n });\n return this;\n }\n}\n","let log = () => {};\n\nconst levels = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n disable: 4,\n};\n\nconst logger = {\n error: (...args) => log('error', args),\n warn: (...args) => log('warn', args),\n info: (...args) => log('info', args),\n debug: (...args) => log('debug', args),\n log: (...args) => log('info', args),\n init: ({ logLevel }) => {\n log = function (level, args) {\n if (levels[level] < levels[logLevel]) return;\n\n args.unshift('Rollbar:');\n\n // eslint-disable-next-line no-console\n console[level].apply(console, args);\n };\n },\n};\n\nexport default logger;\n","import logger from '../logger.js';\n\nexport class SpanProcessor {\n constructor(exporter, options = {}) {\n this.exporter = exporter;\n this.options = options;\n this.pendingSpans = new Map();\n this.transforms = [this.userTransform.bind(this)];\n }\n\n addTransform(transformFn) {\n this.transforms.unshift(transformFn);\n }\n\n userTransform(span) {\n if (this.options.transformSpan) {\n this.options.transformSpan({ span: span });\n }\n }\n\n applyTransforms(span) {\n for (const transform of this.transforms) {\n try {\n transform(span);\n } catch (e) {\n logger.error('Error running span transform callback', e);\n }\n }\n }\n\n onStart(span, _parentContext) {\n this.pendingSpans.set(span.span.spanContext.spanId, span);\n }\n\n onEnd(span) {\n this.applyTransforms(span.span);\n this.exporter.export([span.export()]);\n this.pendingSpans.delete(span.span.spanContext.spanId);\n }\n}\n","import hrtime from './hrtime.js';\n\nexport class Span {\n constructor(options) {\n this.usePerformance = options.usePerformance;\n this.initReadableSpan(options);\n\n this.spanProcessor = options.spanProcessor;\n this.spanProcessor.onStart(this, options.context);\n\n if (options.attributes) {\n this.setAttributes(options.attributes);\n }\n return this;\n }\n\n initReadableSpan(options) {\n this.span = {\n name: options.name,\n kind: options.kind,\n spanContext: options.spanContext,\n parentSpanId: options.parentSpanId,\n startTime: options.startTime || hrtime.now(options.usePerformance),\n endTime: [0, 0],\n status: { code: 0, message: '' },\n attributes: { 'session.id': options.session?.id },\n links: [],\n events: [],\n duration: 0,\n ended: false,\n resource: options.resource,\n instrumentationScope: options.scope,\n droppedAttributesCount: 0,\n droppedEventsCount: 0,\n droppedLinksCount: 0,\n };\n }\n\n spanContext() {\n return this.span.spanContext;\n }\n\n get spanId() {\n return this.span.spanContext.spanId;\n }\n\n get traceId() {\n return this.span.spanContext.traceId;\n }\n\n setAttribute(key, value) {\n if (value == null || this.span.ended) return this;\n if (key.length === 0) return this;\n\n this.span.attributes[key] = value;\n return this;\n }\n\n setAttributes(attributes) {\n for (const [k, v] of Object.entries(attributes)) {\n this.setAttribute(k, v);\n }\n return this;\n }\n\n addEvent(name, attributes = {}, time) {\n if (this.span.ended) return this;\n\n this.span.events.push({\n name,\n attributes,\n time: time || hrtime.now(),\n droppedAttributesCount: 0,\n });\n\n return this;\n }\n\n isRecording() {\n return this.span.ended === false;\n }\n\n end(attributes, time) {\n if (attributes) this.setAttributes(attributes);\n this.span.endTime = time || hrtime.now(this.usePerformance);\n this.span.ended = true;\n this.spanProcessor.onEnd(this);\n }\n\n export() {\n return this.span;\n }\n}\n","import id from './id.js';\nimport { Span } from './span.js';\n\nexport class Tracer {\n constructor(tracing, spanProcessor) {\n this.spanProcessor = spanProcessor;\n this.tracing = tracing;\n }\n\n startSpan(\n name,\n options = {},\n context = this.tracing.contextManager.active(),\n ) {\n const parentSpan = this.tracing.getSpan(context);\n const parentSpanContext = parentSpan?.spanContext();\n const spanId = id.gen(8);\n let traceId;\n let traceFlags = 0;\n let traceState = null;\n let parentSpanId;\n if (parentSpanContext) {\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n parentSpanId = parentSpanContext.spanId;\n } else {\n traceId = id.gen(16);\n }\n\n const kind = 0;\n const spanContext = { traceId, spanId, traceFlags, traceState };\n const resource = {\n attributes: {\n ...(this.tracing.resource?.attributes || {}),\n ...(options.resource?.attributes || {}),\n },\n };\n\n const span = new Span({\n resource: resource,\n scope: this.tracing.scope,\n session: this.tracing.session?.session,\n context,\n spanContext,\n name,\n kind,\n parentSpanId,\n spanProcessor: this.spanProcessor,\n startTime: options.startTime,\n usePerformance: options.usePerformance,\n });\n return span;\n }\n}\n","import { ContextManager, createContextKey } from './contextManager.js';\nimport { SpanExporter } from './exporter.js';\nimport id from './id.js';\nimport { Session } from './session.js';\nimport { SpanProcessor } from './spanProcessor.js';\nimport { Tracer } from './tracer.js';\n\nconst SPAN_KEY = createContextKey('Rollbar Context Key SPAN');\n\nexport default class Tracing {\n constructor(gWindow, api, options) {\n this.api = api;\n this.options = options;\n this.window = gWindow;\n\n if (this.window.sessionStorage) {\n this.session = new Session(this, options);\n }\n this.createTracer();\n }\n\n configure(options) {\n // Options merge happens before configure is called, so we can just replace.\n this.options = options;\n }\n\n initSession() {\n if (this.session) {\n this.session.init();\n }\n }\n\n get sessionId() {\n if (this.session) {\n return this.session.session.id;\n }\n return null;\n }\n\n get resource() {\n return {\n attributes: {\n ...(this.options.resource || {}),\n 'rollbar.environment':\n this.options.payload?.environment ?? this.options.environment,\n },\n };\n }\n\n get scope() {\n return {\n name: 'rollbar-browser-js',\n version: this.options.version,\n };\n }\n\n idGen(bytes = 16) {\n return id.gen(bytes);\n }\n\n createTracer() {\n this.contextManager = new ContextManager();\n this.exporter = new SpanExporter(this.api, this.options);\n this.spanProcessor = new SpanProcessor(this.exporter, this.options.tracing);\n this.tracer = new Tracer(this, this.spanProcessor);\n }\n\n getTracer() {\n return this.tracer;\n }\n\n addSpanTransform(transformFn) {\n this.spanProcessor.addTransform(transformFn);\n }\n\n getSpan(context = this.contextManager.active()) {\n return context.getValue(SPAN_KEY);\n }\n\n setSpan(context = this.contextManager.active(), span) {\n return context.setValue(SPAN_KEY, span);\n }\n\n startSpan(name, options = {}, context = this.contextManager.active()) {\n return this.tracer.startSpan(name, options, context);\n }\n\n with(context, fn, thisArg, ...args) {\n return this.contextManager.with(context, fn, thisArg, ...args);\n }\n\n withSpan(name, options, fn, thisArg) {\n const span = this.startSpan(name, options);\n return this.with(\n this.setSpan(this.contextManager.active(), span),\n fn,\n thisArg,\n span,\n );\n }\n}\n","import traverse from './utility/traverse.js';\nimport * as _ from './utility.js';\n\nfunction raw(payload, jsonBackup) {\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction selectFrames(frames, range) {\n var len = frames.length;\n if (len > range * 2) {\n return frames.slice(0, range).concat(frames.slice(len - range));\n }\n return frames;\n}\n\nfunction truncateFrames(payload, jsonBackup, range) {\n range = typeof range === 'undefined' ? 30 : range;\n var body = payload.data.body;\n var frames;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (const trace of chain) {\n frames = trace.frames;\n frames = selectFrames(frames, range);\n trace.frames = frames;\n }\n } else if (body.trace) {\n frames = body.trace.frames;\n frames = selectFrames(frames, range);\n body.trace.frames = frames;\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction maybeTruncateValue(len, val) {\n if (!val) {\n return val;\n }\n if (val.length > len) {\n return val.slice(0, len - 3).concat('...');\n }\n return val;\n}\n\nfunction truncateStrings(len, payload, jsonBackup) {\n function truncator(k, v, seen) {\n switch (_.typeName(v)) {\n case 'string':\n return maybeTruncateValue(len, v);\n case 'object':\n case 'array':\n return traverse(v, truncator, seen);\n default:\n return v;\n }\n }\n payload = traverse(payload, truncator);\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction truncateTraceData(traceData) {\n if (traceData.exception) {\n delete traceData.exception.description;\n traceData.exception.message = maybeTruncateValue(\n 255,\n traceData.exception.message,\n );\n }\n traceData.frames = selectFrames(traceData.frames, 1);\n return traceData;\n}\n\nfunction minBody(payload, jsonBackup) {\n var body = payload.data.body;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (const [index, trace] of chain.entries()) {\n chain[index] = truncateTraceData(trace);\n }\n } else if (body.trace) {\n body.trace = truncateTraceData(body.trace);\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction needsTruncation(payload, maxSize) {\n return _.maxByteSize(payload) > maxSize;\n}\n\nfunction truncate(payload, jsonBackup, maxSize) {\n maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize;\n var strategies = [\n raw,\n truncateFrames,\n truncateStrings.bind(null, 1024),\n truncateStrings.bind(null, 512),\n truncateStrings.bind(null, 256),\n minBody,\n ];\n var strategy, results, result;\n\n while ((strategy = strategies.shift())) {\n results = strategy(payload, jsonBackup);\n payload = results[0];\n result = results[1];\n if (result.error || !needsTruncation(result.value, maxSize)) {\n return result;\n }\n }\n return result;\n}\n\nexport default {\n truncate,\n\n /* for testing */\n raw,\n truncateFrames,\n truncateStrings,\n maybeTruncateValue,\n};\n","import * as _ from './utility.js';\n\nfunction buildPayload(data) {\n if (!_.isType(data.context, 'string')) {\n var contextResult = _.stringify(data.context);\n if (contextResult.error) {\n data.context = \"Error: could not serialize 'context'\";\n } else {\n data.context = contextResult.value || '';\n }\n if (data.context.length > 255) {\n data.context = data.context.substr(0, 255);\n }\n }\n return {\n data: data,\n };\n}\n\nfunction getTransportFromOptions(options, defaults, url) {\n var hostname = defaults.hostname;\n var protocol = defaults.protocol;\n var port = defaults.port;\n var path = defaults.path;\n var search = defaults.search;\n var timeout = options.timeout;\n var transport = detectTransport(options);\n\n var proxy = options.proxy;\n if (options.endpoint) {\n var opts = url.parse(options.endpoint);\n hostname = opts.hostname;\n protocol = opts.protocol;\n port = opts.port;\n path = opts.pathname;\n search = opts.search;\n }\n return {\n timeout: timeout,\n hostname: hostname,\n protocol: protocol,\n port: port,\n path: path,\n search: search,\n proxy: proxy,\n transport: transport,\n };\n}\n\nfunction detectTransport(options) {\n var gWindow =\n (typeof window !== 'undefined' && window) ||\n (typeof self !== 'undefined' && self);\n var transport = options.defaultTransport || 'xhr';\n if (typeof gWindow.fetch === 'undefined') transport = 'xhr';\n if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch';\n return transport;\n}\n\nfunction transportOptions(transport, method) {\n var protocol = transport.protocol || 'https:';\n var port =\n transport.port ||\n (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined);\n var hostname = transport.hostname;\n var path = transport.path;\n var timeout = transport.timeout;\n var transportAPI = transport.transport;\n if (transport.search) {\n path = path + transport.search;\n }\n if (transport.proxy) {\n path = protocol + '//' + hostname + path;\n hostname = transport.proxy.host || transport.proxy.hostname;\n port = transport.proxy.port;\n protocol = transport.proxy.protocol || protocol;\n }\n return {\n timeout: timeout,\n protocol: protocol,\n hostname: hostname,\n path: path,\n port: port,\n method: method,\n transport: transportAPI,\n };\n}\n\nfunction appendPathToPath(base, path) {\n var baseTrailingSlash = /\\/$/.test(base);\n var pathBeginningSlash = /^\\//.test(path);\n\n if (baseTrailingSlash && pathBeginningSlash) {\n path = path.substring(1);\n } else if (!baseTrailingSlash && !pathBeginningSlash) {\n path = '/' + path;\n }\n\n return base + path;\n}\n\nexport {\n buildPayload,\n getTransportFromOptions,\n transportOptions,\n appendPathToPath,\n};\n","import * as helpers from './apiUtility.js';\nimport { stringify, merge } from './utility.js';\n\nconst defaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/item/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\nconst OTLPDefaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/session/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\n/**\n * Api encapsulates methods of communicating with the Rollbar API. It is a\n * standard interface with some parts implemented differently for server or\n * browser contexts. It is an object that should be instantiated when used so\n * it can contain non-global options that may be different for another instance\n * of RollbarApi.\n */\nclass Api {\n /**\n * @param {Object} options - Configuration supplied from the parent Rollbar instance.\n * @param {string} options.accessToken - Token used to authenticate API calls.\n * @param {string} [options.endpoint] - Optional fully qualified URL overriding\n * the default `https://api.rollbar.com/api/1/item`.\n * @param {Object} [options.proxy] - Optional proxy descriptor containing:\n * `host`/`hostname` (required), `port`, and `protocol`.\n * @param {Object} transport - Adapter implementing `post` and `postJsonPayload`.\n * @param {Object} urllib - Minimal URL helper used for option normalization.\n * @param {Object} truncation - Optional truncation helper for payload size enforcement.\n */\n constructor(options, transport, urllib, truncation) {\n this.options = options;\n this.transport = transport;\n this.url = urllib;\n this.truncation = truncation;\n this.accessToken = options.accessToken;\n this.transportOptions = _getTransport(options, urllib);\n this.OTLPTransportOptions = _getOTLPTransport(options, urllib);\n }\n\n /**\n * Wraps transport.post in a Promise to support async/await\n *\n * @param {Object} options - Options for the API request\n * @param {string} options.accessToken - The access token for authentication\n * @param {Object} options.transportOptions - Options for the transport\n * @param {Object} options.payload - The data payload to send\n * @returns {Promise} A promise that resolves with the response or rejects with an error\n * @private\n */\n _postPromise({ accessToken, options, payload, headers }) {\n return new Promise((resolve, reject) => {\n this.transport.post({\n accessToken,\n options,\n payload,\n headers,\n callback: (err, resp) => (err ? reject(err) : resolve(resp)),\n });\n });\n }\n\n /**\n *\n * @param data\n * @param callback\n */\n postItem(data, callback) {\n const options = helpers.transportOptions(this.transportOptions, 'POST');\n const payload = helpers.buildPayload(data);\n\n // ensure the network request is scheduled after the current tick.\n setTimeout(() => {\n this.transport.post({\n accessToken: this.accessToken,\n options,\n payload,\n callback,\n });\n }, 0);\n }\n\n /**\n * Posts spans to the Rollbar API using the session endpoint\n *\n * @param {Array} payload - The spans to send\n * @returns {Promise} A promise that resolves with the API response\n */\n async postSpans(payload, headers = {}) {\n const options = helpers.transportOptions(this.OTLPTransportOptions, 'POST');\n\n return this._postPromise({\n accessToken: this.accessToken,\n options,\n payload,\n headers,\n });\n }\n\n /**\n *\n * @param data\n * @param callback\n */\n buildJsonPayload(data, callback) {\n const payload = helpers.buildPayload(data);\n\n let stringifyResult;\n if (this.truncation) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = stringify(payload);\n }\n\n if (stringifyResult.error) {\n if (callback) {\n callback(stringifyResult.error);\n }\n return null;\n }\n\n return stringifyResult.value;\n }\n\n /**\n *\n * @param jsonPayload\n * @param callback\n */\n postJsonPayload(jsonPayload, callback) {\n const transportOptions = helpers.transportOptions(\n this.transportOptions,\n 'POST',\n );\n this.transport.postJsonPayload(\n this.accessToken,\n transportOptions,\n jsonPayload,\n callback,\n );\n }\n\n configure(options) {\n const oldOptions = this.options;\n this.options = merge(oldOptions, options);\n this.transportOptions = _getTransport(this.options, this.url);\n this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url);\n if (this.options.accessToken !== undefined) {\n this.accessToken = this.options.accessToken;\n }\n return this;\n }\n}\n\nfunction _getTransport(options, url) {\n return helpers.getTransportFromOptions(options, defaultOptions, url);\n}\n\nfunction _getOTLPTransport(options, url) {\n options = { ...options, endpoint: options.tracing?.endpoint };\n return helpers.getTransportFromOptions(options, OTLPDefaultOptions, url);\n}\n\nexport default Api;\n","/**\n * Default options shared across platforms\n */\nexport const version = '3.0.0';\nexport const endpoint = 'api.rollbar.com/api/1/item/';\nexport const logLevel = 'debug';\nexport const reportLevel = 'debug';\nexport const uncaughtErrorLevel = 'error';\nexport const maxItems = 0;\nexport const itemsPerMin = 60;\n\nexport const commonScrubFields = [\n 'pw',\n 'pass',\n 'passwd',\n 'password',\n 'secret',\n 'confirm_password',\n 'confirmPassword',\n 'password_confirmation',\n 'passwordConfirmation',\n 'access_token',\n 'accessToken',\n 'X-Rollbar-Access-Token',\n 'secret_key',\n 'secretKey',\n 'secretToken',\n];\n\nexport const apiScrubFields = [\n 'api_key',\n 'authenticity_token',\n 'oauth_token',\n 'token',\n 'user_session_secret',\n];\n\nexport const requestScrubFields = [\n 'request.session.csrf',\n 'request.session._csrf',\n 'request.params._csrf',\n 'request.cookie',\n 'request.cookies',\n];\n\nexport const commonScrubHeaders = [\n 'authorization',\n 'www-authorization',\n 'http_authorization',\n 'omniauth.auth',\n 'cookie',\n 'oauth-access-token',\n 'x-access-token',\n 'x_csrf_token',\n 'http_x_csrf_token',\n 'x-csrf-token',\n];\n\n// For backward compatibility with default export\nexport default {\n version,\n endpoint,\n logLevel,\n reportLevel,\n uncaughtErrorLevel,\n maxItems,\n itemsPerMin,\n};\n","const FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\nfunction parse(error, options) {\n if (typeof error.stacktrace !== \"undefined\" || typeof error[\"opera#sourceloc\"] !== \"undefined\")\n return parseOpera(error, options);\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIE(error, options);\n else if (error.stack)\n return parseFFOrSafari(error, options);\n else if (options?.allowEmpty)\n return [];\n else\n throw new Error(\"Cannot parse given Error object\");\n}\nfunction parseStack(stackString, options) {\n if (stackString.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIeString(stackString, options);\n else\n return parseFFOrSafariString(stackString, options);\n}\nfunction extractLocation(urlLike) {\n if (!urlLike.includes(\":\"))\n return [urlLike, undefined, undefined];\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n const parts = regExp.exec(urlLike.replace(/[()]/g, \"\"));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n}\nfunction applySlice(lines, options) {\n if (options && options.slice != null) {\n if (Array.isArray(options.slice))\n return lines.slice(options.slice[0], options.slice[1]);\n return lines.slice(0, options.slice);\n }\n return lines;\n}\nfunction parseV8OrIE(error, options) {\n return parseV8OrIeString(error.stack, options);\n}\nfunction parseV8OrIeString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\"(eval \")) {\n line = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(,.*$)/g, \"\");\n }\n let sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\").replace(/^.*?\\s+/, \"\");\n const location = sanitizedLine.match(/ (\\(.+\\)$)/);\n sanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n const locationParts = extractLocation(location ? location[1] : sanitizedLine);\n const functionName = location && sanitizedLine || undefined;\n const fileName = [\"eval\", \"\"].includes(locationParts[0]) ? undefined : locationParts[0];\n return {\n function: functionName,\n file: fileName,\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\nfunction parseFFOrSafari(error, options) {\n return parseFFOrSafariString(error.stack, options);\n}\nfunction parseFFOrSafariString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\" > eval\"))\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, \":$1\");\n if (!line.includes(\"@\") && !line.includes(\":\")) {\n return {\n function: line\n };\n } else {\n const functionNameRegex = /(([^\\n\\r\"\\u2028\\u2029]*\".[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*(?:@[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*)*(?:[\\n\\r\\u2028\\u2029][^@]*)?)?[^@]*)@/;\n const matches = line.match(functionNameRegex);\n const functionName = matches && matches[1] ? matches[1] : undefined;\n const locationParts = extractLocation(line.replace(functionNameRegex, \"\"));\n return {\n function: functionName,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n }\n });\n}\nfunction parseOpera(e, options) {\n if (!e.stacktrace || e.message.includes(\"\\n\") && e.message.split(\"\\n\").length > e.stacktrace.split(\"\\n\").length)\n return parseOpera9(e);\n else if (!e.stack)\n return parseOpera10(e);\n else\n return parseOpera11(e, options);\n}\nfunction parseOpera9(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n const lines = e.message.split(\"\\n\");\n const result = [];\n for (let i = 2, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n file: match[2],\n line: +match[1],\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera10(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n const lines = e.stacktrace.split(\"\\n\");\n const result = [];\n for (let i = 0, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n function: match[3] || undefined,\n file: match[2],\n line: match[1] ? +match[1] : undefined,\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera11(error, options) {\n const filtered = applySlice(\n // @ts-expect-error missing stack property\n error.stack.split(\"\\n\").filter((line) => {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }),\n options\n );\n return filtered.map((line) => {\n const tokens = line.split(\"@\");\n const locationParts = extractLocation(tokens.pop());\n const functionCall = tokens.shift() || \"\";\n const functionName = functionCall.replace(//, \"$2\").replace(/\\([^)]*\\)/g, \"\") || undefined;\n let argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/))\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, \"$1\");\n const args = argsRaw === undefined || argsRaw === \"[arguments not available]\" ? undefined : argsRaw.split(\",\");\n return {\n function: functionName,\n args,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\n\nexport { extractLocation, parse, parseFFOrSafari, parseFFOrSafariString, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseStack, parseV8OrIE, parseV8OrIeString };\n","import { parse as parse$1, parseV8OrIE as parseV8OrIE$1, parseFFOrSafari as parseFFOrSafari$1, parseOpera as parseOpera$1, parseOpera9 as parseOpera9$1, parseOpera10 as parseOpera10$1, parseOpera11 as parseOpera11$1 } from './lite.mjs';\nexport { extractLocation } from './lite.mjs';\n\nfunction stackframesLiteToStackframes(liteStackframes) {\n return liteStackframes.map((liteStackframe) => {\n return {\n functionName: liteStackframe.function,\n args: liteStackframe.args,\n fileName: liteStackframe.file,\n lineNumber: liteStackframe.line,\n columnNumber: liteStackframe.col,\n source: liteStackframe.raw\n };\n });\n}\nfunction parse(error, options) {\n return stackframesLiteToStackframes(parse$1(error, options));\n}\nfunction parseV8OrIE(error) {\n return stackframesLiteToStackframes(parseV8OrIE$1(error));\n}\nfunction parseFFOrSafari(error) {\n return stackframesLiteToStackframes(parseFFOrSafari$1(error));\n}\nfunction parseOpera(e) {\n return stackframesLiteToStackframes(parseOpera$1(e));\n}\nfunction parseOpera9(e) {\n return stackframesLiteToStackframes(parseOpera9$1(e));\n}\nfunction parseOpera10(e) {\n return stackframesLiteToStackframes(parseOpera10$1(e));\n}\nfunction parseOpera11(error) {\n return stackframesLiteToStackframes(parseOpera11$1(error));\n}\n\nexport { parse, parseFFOrSafari, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseV8OrIE };\n","import { parse as parseErrorStack } from 'error-stack-parser-es';\n\nvar UNKNOWN_FUNCTION = '?';\nvar ERR_CLASS_REGEXP = new RegExp(\n '^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): ',\n);\n\nfunction guessFunctionName() {\n return UNKNOWN_FUNCTION;\n}\n\nfunction gatherContext() {\n return null;\n}\n\nfunction Frame(stackFrame) {\n var data = {};\n\n data._stackFrame = stackFrame;\n\n data.url = stackFrame.fileName;\n data.line = stackFrame.lineNumber;\n data.func = stackFrame.functionName;\n data.column = stackFrame.columnNumber;\n data.args = stackFrame.args;\n\n data.context = gatherContext();\n\n return data;\n}\n\nfunction Stack(exception, skip) {\n function getStack() {\n var parserStack = [];\n\n skip = skip || 0;\n\n try {\n parserStack = parseErrorStack(exception);\n } catch (_e) {\n parserStack = [];\n }\n\n var stack = [];\n\n for (var i = skip; i < parserStack.length; i++) {\n stack.push(new Frame(parserStack[i]));\n }\n\n return stack;\n }\n\n return {\n stack: getStack(),\n message: exception.message,\n name: _mostSpecificErrorName(exception),\n rawStack: exception.stack,\n rawException: exception,\n };\n}\n\nfunction parse(e, skip) {\n var err = e;\n\n if (err.nested || err.cause) {\n var traceChain = [];\n while (err) {\n traceChain.push(new Stack(err, skip));\n err = err.nested || err.cause;\n\n skip = 0; // Only apply skip value to primary error\n }\n\n // Return primary error with full trace chain attached.\n traceChain[0].traceChain = traceChain;\n return traceChain[0];\n } else {\n return new Stack(err, skip);\n }\n}\n\nfunction guessErrorClass(errMsg) {\n if (!errMsg || !errMsg.match) {\n return ['Unknown error. There was no error message to display.', ''];\n }\n var errClassMatch = errMsg.match(ERR_CLASS_REGEXP);\n var errClass = '(unknown)';\n\n if (errClassMatch) {\n errClass = errClassMatch[errClassMatch.length - 1];\n errMsg = errMsg.replace(\n (errClassMatch[errClassMatch.length - 2] || '') + errClass + ':',\n '',\n );\n errMsg = errMsg.replace(/(^[\\s]+|[\\s]+$)/g, '');\n }\n return [errClass, errMsg];\n}\n\n// * Prefers any value over an empty string\n// * Prefers any value over 'Error' where possible\n// * Prefers name over constructor.name when both are more specific than 'Error'\nfunction _mostSpecificErrorName(error) {\n var name = error.name && error.name.length && error.name;\n var constructorName =\n error.constructor.name &&\n error.constructor.name.length &&\n error.constructor.name;\n\n if (!name || !constructorName) {\n return name || constructorName;\n }\n\n if (name === 'Error') {\n return constructorName;\n }\n return name;\n}\n\nexport default {\n guessFunctionName,\n guessErrorClass,\n gatherContext,\n parse,\n Stack,\n Frame,\n};\n","import * as _ from './utility.js';\n\nfunction checkLevel(item, settings) {\n var level = item.level;\n var levelVal = _.LEVELS[level] || 0;\n var reportLevel = settings.reportLevel;\n var reportLevelVal = _.LEVELS[reportLevel] || 0;\n\n if (levelVal < reportLevelVal) {\n return false;\n }\n return true;\n}\n\nfunction userCheckIgnore(logger) {\n return function (item, settings) {\n var isUncaught = Boolean(item._isUncaught);\n delete item._isUncaught;\n var args = item._originalArgs;\n delete item._originalArgs;\n try {\n if (_.isFunction(settings.onSendCallback)) {\n settings.onSendCallback(isUncaught, args, item);\n }\n } catch (e) {\n settings.onSendCallback = null;\n logger.error('Error while calling onSendCallback, removing', e);\n }\n try {\n if (\n _.isFunction(settings.checkIgnore) &&\n settings.checkIgnore(isUncaught, args, item)\n ) {\n return false;\n }\n } catch (e) {\n settings.checkIgnore = null;\n logger.error('Error while calling custom checkIgnore(), removing', e);\n }\n return true;\n };\n}\n\nfunction urlIsNotBlockListed(logger) {\n return function (item, settings) {\n return !urlIsOnAList(item, settings, 'blocklist', logger);\n };\n}\n\nfunction urlIsSafeListed(logger) {\n return function (item, settings) {\n return urlIsOnAList(item, settings, 'safelist', logger);\n };\n}\n\nfunction matchFrames(trace, list, block) {\n if (!trace) {\n return !block;\n }\n\n var frames = trace.frames;\n\n if (!frames || frames.length === 0) {\n return !block;\n }\n\n var frame, filename, url, urlRegex;\n var listLength = list.length;\n var frameLength = frames.length;\n for (var i = 0; i < frameLength; i++) {\n frame = frames[i];\n filename = frame.filename;\n\n if (!_.isType(filename, 'string')) {\n return !block;\n }\n\n for (var j = 0; j < listLength; j++) {\n url = list[j];\n urlRegex = new RegExp(url);\n\n if (urlRegex.test(filename)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction urlIsOnAList(item, settings, safeOrBlock, logger) {\n // safelist is the default\n var block = false;\n if (safeOrBlock === 'blocklist') {\n block = true;\n }\n\n var list, traces;\n try {\n list = block ? settings.hostBlockList : settings.hostSafeList;\n traces = _.get(item, 'body.trace_chain') || [_.get(item, 'body.trace')];\n\n // These two checks are important to come first as they are defaults\n // in case the list is missing or the trace is missing or not well-formed\n if (!list || list.length === 0) {\n return !block;\n }\n if (traces.length === 0 || !traces[0]) {\n return !block;\n }\n\n var tracesLength = traces.length;\n for (var i = 0; i < tracesLength; i++) {\n if (matchFrames(traces[i], list, block)) {\n return true;\n }\n }\n } catch (\n e\n /* istanbul ignore next */\n ) {\n if (block) {\n settings.hostBlockList = null;\n } else {\n settings.hostSafeList = null;\n }\n var listName = block ? 'hostBlockList' : 'hostSafeList';\n logger.error(\n \"Error while reading your configuration's \" +\n listName +\n ' option. Removing custom ' +\n listName +\n '.',\n e,\n );\n return !block;\n }\n return false;\n}\n\nfunction messageIsIgnored(logger) {\n return function (item, settings) {\n var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages;\n\n try {\n messageIsIgnored = false;\n ignoredMessages = settings.ignoredMessages;\n\n if (!ignoredMessages || ignoredMessages.length === 0) {\n return true;\n }\n\n messages = messagesFromItem(item);\n\n if (messages.length === 0) {\n return true;\n }\n\n len = ignoredMessages.length;\n for (i = 0; i < len; i++) {\n rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi');\n\n for (j = 0; j < messages.length; j++) {\n messageIsIgnored = rIgnoredMessage.test(messages[j]);\n\n if (messageIsIgnored) {\n return false;\n }\n }\n }\n } catch (\n _e\n /* istanbul ignore next */\n ) {\n settings.ignoredMessages = null;\n logger.error(\n \"Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages.\",\n );\n }\n\n return true;\n };\n}\n\nfunction messagesFromItem(item) {\n var body = item.body;\n var messages = [];\n\n // The payload schema only allows one of trace_chain, message, or trace.\n // However, existing test cases are based on having both trace and message present.\n // So here we preserve the ability to collect strings from any combination of these keys.\n if (body.trace_chain) {\n var traceChain = body.trace_chain;\n for (const trace of traceChain) {\n messages.push(_.get(trace, 'exception.message'));\n }\n }\n if (body.trace) {\n messages.push(_.get(body, 'trace.exception.message'));\n }\n if (body.message) {\n messages.push(_.get(body, 'message.body'));\n }\n return messages;\n}\n\nexport {\n checkLevel,\n userCheckIgnore,\n urlIsNotBlockListed,\n urlIsSafeListed,\n messageIsIgnored,\n};\n","import { merge, isFunction } from './utility.js';\n\n/*\n * Notifier - delegates between the client exposed API, the chain of transforms\n * necessary to turn an item into something that can be sent to Rollbar, and the\n * queue which handles the communcation with the Rollbar API servers.\n */\nexport default class Notifier {\n /**\n *\n * @param {Object} queue - an object that conforms to the interface:\n * `addItem(item, callback)`\n * @param {Object} options - an object representing the options to be set for\n * this notifier, this should have any defaults already set by the caller\n */\n constructor(queue, options) {\n this.queue = queue;\n this.options = options;\n this.transforms = [];\n this.diagnostic = {};\n }\n\n /**\n * configure - updates the options for this notifier with the passed in object\n *\n * @param {Object} options - an object which gets merged with the current\n * options set on this notifier\n * @returns this\n */\n configure(options) {\n this.queue?.configure(options);\n const oldOptions = this.options;\n this.options = merge(oldOptions, options);\n return this;\n }\n\n /**\n * Adds a transform onto the end of the queue of transforms for this notifier\n *\n * @param {Function} transform - a function which takes three arguments:\n * - item: An Object representing the data to eventually be sent to Rollbar\n * - options: The current value of the options for this notifier\n * - callback: `function(err: (Null|Error), item: (Null|Object))` the\n * transform must call this callback with a null value for error if it\n * wants the processing chain to continue, otherwise with an error to\n * terminate the processing. The item should be the updated item after\n * this transform is finished modifying it.\n */\n addTransform(transform) {\n if (isFunction(transform)) {\n this.transforms.push(transform);\n }\n return this;\n }\n\n /**\n * The internal log function which applies the configured transforms and then\n * pushes onto the queue to be sent to the backend.\n *\n * @param {Object} item - An object with the following structure:\n * - message [String] - An optional string to be sent to rollbar\n * - error [Error] - An optional error\n * @param {Function} callback - A function of type `function(err, resp)` which\n * will be called with exactly one null argument and one non-null argument.\n * The callback will be called once, either during the transform stage if\n * an error occurs inside a transform, or in response to the communication\n * with the backend. The second argument will be the response from the\n * backend in case of success.\n */\n log(item, callback) {\n callback = isFunction(callback) ? callback : () => {};\n\n if (!this.options.enabled) {\n return callback(new Error('Rollbar is not enabled'), null);\n }\n\n this.queue.addPendingItem(item);\n const originalError = item.err;\n this._applyTransforms(item, (err, i) => {\n if (err) {\n this.queue.removePendingItem(item);\n return callback(err, null);\n }\n this.queue.addItem(i, callback, originalError, item);\n });\n }\n\n /* Internal */\n\n /**\n * Applies the transforms that have been added to this notifier sequentially.\n * See `addTransform` for more information.\n *\n * @param {Object} item - An item to be transformed\n * @param {Function} callback - A function of type `function(err, item)` which\n * will be called with a non-null error and a null item in the case of a\n * transform failure, or a null error and non-null item after all\n * transforms have been applied.\n */\n _applyTransforms(item, callback) {\n let transformIndex = -1;\n const transformsLength = this.transforms.length;\n const transforms = this.transforms;\n const options = this.options;\n\n const next = (err, i) => {\n if (err) {\n callback(err, null);\n return;\n }\n\n transformIndex++;\n\n if (transformIndex === transformsLength) {\n callback(null, i);\n return;\n }\n\n transforms[transformIndex](i, options, next);\n };\n\n next(null, item);\n }\n}\n","import * as _ from './utility.js';\n\n/**\n * Queue - an object which handles which handles a queue of items to be sent to Rollbar.\n * This object handles rate limiting via a passed in rate limiter, retries based on connection\n * errors, and filtering of items based on a set of configurable predicates. The communication to\n * the backend is performed via a given API object.\n */\nclass Queue {\n /**\n * @param rateLimiter - An object which conforms to the interface\n * `rateLimiter.shouldSend(item) -> bool`\n * @param api - An object which conforms to the interface\n * `api.postItem(payload, function(err, response))`\n * @param logger - An object used to log verbose messages if desired\n * @param options - see `Queue.prototype.configure`\n * @param replay - Optional `Replay` for coordinating session replay with error occurrences\n */\n constructor(rateLimiter, api, logger, options, replay) {\n this.rateLimiter = rateLimiter;\n this.api = api;\n this.logger = logger;\n this.options = options;\n this.replay = replay;\n this.predicates = [];\n this.pendingItems = [];\n this.pendingRequests = [];\n this.retryQueue = [];\n this.retryHandle = null;\n this.waitCallback = null;\n this.waitIntervalID = null;\n }\n\n /**\n * configure - updates the options this queue uses\n *\n * @param options\n */\n configure(options) {\n this.api?.configure(options);\n const oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n return this;\n }\n\n /**\n * addPredicate - adds a predicate to the end of the list of predicates for this queue\n *\n * @param predicate - function(item, options) -> (bool|{err: Error})\n * Returning true means that this predicate passes and the item is okay to go on the queue\n * Returning false means do not add the item to the queue, but it is not an error\n * Returning {err: Error} means do not add the item to the queue, and the given error explains why\n * Returning {err: undefined} is equivalent to returning true but don't do that\n */\n addPredicate(predicate) {\n if (_.isFunction(predicate)) {\n this.predicates.push(predicate);\n }\n return this;\n }\n\n addPendingItem(item) {\n this.pendingItems.push(item);\n }\n\n removePendingItem(item) {\n const idx = this.pendingItems.indexOf(item);\n if (idx !== -1) {\n this.pendingItems.splice(idx, 1);\n }\n }\n\n /**\n * addItem - Send an item to the Rollbar API if all of the predicates are satisfied\n *\n * @param item - Item instance with the payload to send to the backend\n * @param callback - function(error, repsonse) which will be called with the response from the API\n * in the case of a success, otherwise response will be null and error will have a value. If both\n * error and response are null then the item was stopped by a predicate which did not consider this\n * to be an error condition, but nonetheless did not send the item to the API.\n * @param originalError - The original error before any transformations that is to be logged if any\n * @param originalItem - The original item before transforms, used in pendingItems queue\n */\n addItem(item, callback, originalError, originalItem) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {\n return;\n };\n }\n const data = item.data;\n const predicateResult = this._applyPredicates(data);\n if (predicateResult.stop) {\n this.removePendingItem(originalItem);\n callback(predicateResult.err);\n return;\n }\n this._maybeLog(data, originalError);\n this.removePendingItem(originalItem);\n if (!this.options.transmit) {\n callback(new Error('Transmit disabled'));\n return;\n }\n\n if (this.replay && data.body) {\n item.replayId = this.replay.capture(null, data.uuid, {\n type: 'occurrence',\n level: item.level,\n });\n\n if (item.replayId) {\n _.addItemAttributes(item.data, [\n { key: 'replay_id', value: item.replayId },\n ]);\n }\n }\n\n this.pendingRequests.push(data);\n try {\n this._makeApiRequest(data, (err, resp, headers) => {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers);\n }\n\n callback(err, resp);\n });\n } catch (err) {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay?.discard(item.replayId);\n }\n\n callback(err);\n }\n }\n\n /**\n * wait - Stop any further errors from being added to the queue, and get called back when all items\n * currently processing have finished sending to the backend.\n *\n * @param callback - function() called when all pending items have been sent\n */\n wait(callback) {\n if (!_.isFunction(callback)) {\n return;\n }\n this.waitCallback = callback;\n if (this._maybeCallWait()) {\n return;\n }\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitIntervalID = setInterval(() => {\n this._maybeCallWait();\n }, 500);\n }\n\n /**\n * Sequentially applies the predicates that have been added to the queue to the\n * given item with the currently configured options.\n *\n * @param item - An item in the queue\n * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue,\n * the error value should be passed up to a callbak if we are stopping.\n */\n _applyPredicates(item) {\n let p = null;\n for (let i = 0, len = this.predicates.length; i < len; i++) {\n p = this.predicates[i](item, this.options);\n if (!p || p.err !== undefined) {\n return { stop: true, err: p.err };\n }\n }\n return { stop: false, err: null };\n }\n\n /**\n * Send an item to Rollbar, callback when done, if there is an error make an\n * effort to retry if we are configured to do so.\n *\n * @param item - an item ready to send to the backend\n * @param callback - function(err, response)\n */\n _makeApiRequest(item, callback) {\n const rateLimitResponse = this.rateLimiter.shouldSend(item);\n if (rateLimitResponse.shouldSend) {\n this.api.postItem(item, (err, resp, headers) => {\n if (err) {\n this._maybeRetry(err, item, callback);\n } else {\n callback(err, resp, headers);\n }\n });\n } else if (rateLimitResponse.error) {\n callback(rateLimitResponse.error);\n } else {\n this.api.postItem(rateLimitResponse.payload, callback);\n }\n }\n\n // These are errors basically mean there is no internet connection\n static RETRIABLE_ERRORS = [\n 'ECONNRESET',\n 'ENOTFOUND',\n 'ESOCKETTIMEDOUT',\n 'ETIMEDOUT',\n 'ECONNREFUSED',\n 'EHOSTUNREACH',\n 'EPIPE',\n 'EAI_AGAIN',\n ];\n\n /**\n * Given the error returned by the API, decide if we should retry or just callback\n * with the error.\n *\n * @param err - an error returned by the API transport\n * @param item - the item that was trying to be sent when this error occured\n * @param callback - function(err, response)\n */\n _maybeRetry(err, item, callback) {\n let shouldRetry = false;\n if (this.options.retryInterval) {\n for (let i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) {\n if (err.code === Queue.RETRIABLE_ERRORS[i]) {\n shouldRetry = true;\n break;\n }\n }\n if (shouldRetry && _.isFiniteNumber(this.options.maxRetries)) {\n item.retries = item.retries ? item.retries + 1 : 1;\n if (item.retries > this.options.maxRetries) {\n shouldRetry = false;\n }\n }\n }\n if (shouldRetry) {\n this._retryApiRequest(item, callback);\n } else {\n callback(err);\n }\n }\n\n /**\n * Add an item and a callback to a queue and possibly start a timer to process\n * that queue based on the retryInterval in the options for this queue.\n *\n * @param item - an item that failed to send due to an error we deem retriable\n * @param callback - function(err, response)\n */\n _retryApiRequest(item, callback) {\n this.retryQueue.push({ item, callback });\n\n if (!this.retryHandle) {\n this.retryHandle = setInterval(() => {\n while (this.retryQueue.length) {\n const retryObject = this.retryQueue.shift();\n this._makeApiRequest(retryObject.item, retryObject.callback);\n }\n }, this.options.retryInterval);\n }\n }\n\n /**\n * Removes the item from the pending request queue, this queue is used to\n * enable to functionality of providing a callback that clients can pass to `wait` to be notified\n * when the pending request queue has been emptied. This must be called when the API finishes\n * processing this item. If a `wait` callback is configured, it is called by this function.\n *\n * @param item - the item previously added to the pending request queue\n */\n _dequeuePendingRequest(item) {\n const idx = this.pendingRequests.indexOf(item);\n if (idx !== -1) {\n this.pendingRequests.splice(idx, 1);\n this._maybeCallWait();\n }\n }\n\n _maybeLog(data, originalError) {\n if (this.logger && this.options.verbose) {\n let message =\n originalError ||\n _.get(data, 'body.trace.exception.message') ||\n _.get(data, 'body.trace_chain.0.exception.message');\n if (message) {\n this.logger.error(message);\n return;\n }\n message = _.get(data, 'body.message.body');\n if (message) {\n this.logger.log(message);\n }\n }\n }\n\n _maybeCallWait() {\n if (\n _.isFunction(this.waitCallback) &&\n this.pendingItems.length === 0 &&\n this.pendingRequests.length === 0\n ) {\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitCallback();\n return true;\n }\n return false;\n }\n}\n\nexport default Queue;\n","/*\n * RateLimiter - encapsulates the logic for counting items sent to Rollbar.\n *\n * @param options - the same options that are accepted by configureGlobal offered as a convenience\n */\nclass RateLimiter {\n static globalSettings = {\n startTime: Date.now(),\n maxItems: undefined,\n itemsPerMinute: undefined,\n };\n\n constructor(options = {}) {\n this.startTime = Date.now();\n this.counter = 0;\n this.perMinCounter = 0;\n this.platform = null;\n this.platformOptions = {};\n this.configureGlobal(options);\n }\n\n /*\n * configureGlobal - set the global rate limiter options\n *\n * @param options - Only the following values are recognized:\n * startTime: a timestamp of the form returned by (new Date()).getTime()\n * maxItems: the maximum items\n * itemsPerMinute: the max number of items to send in a given minute\n */\n configureGlobal(options = {}) {\n const { startTime, maxItems, itemsPerMinute } = options;\n\n if (startTime !== undefined) {\n RateLimiter.globalSettings.startTime = startTime;\n }\n if (maxItems !== undefined) {\n RateLimiter.globalSettings.maxItems = maxItems;\n }\n if (itemsPerMinute !== undefined) {\n RateLimiter.globalSettings.itemsPerMinute = itemsPerMinute;\n }\n }\n\n /*\n * shouldSend - determine if we should send a given item based on rate limit settings\n *\n * @param item - the item we are about to send\n * @returns An object with the following structure:\n * error: (Error|null)\n * shouldSend: bool\n * payload: (Object|null)\n * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and\n * exactly one of error or payload will be non-null. If error is non-null, the returned Error will\n * describe the situation, but it means that we were already over a rate limit (either globally or\n * per minute) when this item was checked. If error is null, and therefore payload is non-null, it\n * means this item put us over the global rate limit and the payload should be sent to Rollbar in\n * place of the passed in item.\n */\n shouldSend(item, now = Date.now()) {\n const elapsedTime = now - this.startTime;\n if (elapsedTime < 0 || elapsedTime >= 60000) {\n this.startTime = now;\n this.perMinCounter = 0;\n }\n\n const globalRateLimit = RateLimiter.globalSettings.maxItems;\n const globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute;\n\n if (checkRate(item, globalRateLimit, this.counter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n `${globalRateLimit} max items reached`,\n false,\n );\n }\n\n if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n `${globalRateLimitPerMin} items per minute reached`,\n false,\n );\n }\n\n this.counter += 1;\n this.perMinCounter += 1;\n\n const underGlobalLimit = !checkRate(item, globalRateLimit, this.counter);\n const perMinute = underGlobalLimit;\n const shouldSend =\n underGlobalLimit &&\n !checkRate(item, globalRateLimitPerMin, this.perMinCounter);\n\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n null,\n shouldSend,\n globalRateLimit,\n globalRateLimitPerMin,\n perMinute,\n );\n }\n\n setPlatformOptions(platform, options) {\n this.platform = platform;\n this.platformOptions = options;\n }\n}\n\n/* Helpers */\n\nfunction checkRate(item, limit, counter) {\n return !item.ignoreRateLimit && limit >= 1 && counter > limit;\n}\n\nfunction shouldSendValue(\n platform,\n options,\n error,\n shouldSend,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n let payload = null;\n const errorResult = error ? new Error(error) : null;\n\n if (!errorResult && !shouldSend) {\n payload = rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n );\n }\n\n return { error: errorResult, shouldSend, payload };\n}\n\nfunction rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n const environment =\n options.environment || (options.payload && options.payload.environment);\n const msg = perMinute\n ? 'item per minute limit reached, ignoring errors until timeout'\n : 'maxItems has been hit, ignoring errors until reset.';\n const item = {\n body: {\n message: {\n body: msg,\n extra: {\n maxItems: globalRateLimit,\n itemsPerMinute: limitPerMin,\n },\n },\n },\n language: 'javascript',\n environment: environment,\n notifier: {\n version:\n (options.notifier && options.notifier.version) || options.version,\n },\n };\n if (platform === 'browser') {\n item.platform = 'browser';\n item.framework = 'browser-js';\n item.notifier.name = 'rollbar-browser-js';\n } else if (platform === 'server') {\n item.framework = options.framework || 'node-js';\n item.notifier.name = options.notifier.name;\n } else if (platform === 'react-native') {\n item.framework = options.framework || 'react-native';\n item.notifier.name = options.notifier.name;\n }\n return item;\n}\n\nexport default RateLimiter;\n","import Notifier from './notifier.js';\nimport Queue from './queue.js';\nimport RateLimiter from './rateLimiter.js';\nimport * as _ from './utility.js';\n\n/*\n * Rollbar - the interface to Rollbar\n *\n * @param options\n * @param api\n * @param logger\n */\nfunction Rollbar(options, api, logger, telemeter, tracing, replay, platform) {\n this.options = _.merge(options);\n this.logger = logger;\n Rollbar.rateLimiter.configureGlobal(this.options);\n Rollbar.rateLimiter.setPlatformOptions(platform, this.options);\n this.api = api;\n this.queue = new Queue(\n Rollbar.rateLimiter,\n api,\n logger,\n this.options,\n replay,\n );\n\n this.tracing = tracing;\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is created\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier = new Notifier(this.queue, this.options);\n this.telemeter = telemeter;\n setStackTraceLimit(options);\n this.lastError = null;\n this.lastErrorHash = 'none';\n}\n\nvar defaultOptions = {\n maxItems: 0,\n itemsPerMinute: 60,\n};\n\nRollbar.rateLimiter = new RateLimiter(defaultOptions);\n\nRollbar.prototype.global = function (options) {\n Rollbar.rateLimiter.configureGlobal(options);\n return this;\n};\n\nRollbar.prototype.configure = function (options, payloadData) {\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.merge(oldOptions, options, payload);\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is configured\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier && this.notifier.configure(this.options);\n this.telemeter && this.telemeter.configure(this.options);\n setStackTraceLimit(options);\n this.global(this.options);\n\n if (validateTracer(options.tracer)) {\n this.tracer = options.tracer;\n }\n\n return this;\n};\n\nRollbar.prototype.log = function (item) {\n var level = this._defaultLogLevel();\n return this._log(level, item);\n};\n\nRollbar.prototype.debug = function (item) {\n this._log('debug', item);\n};\n\nRollbar.prototype.info = function (item) {\n this._log('info', item);\n};\n\nRollbar.prototype.warn = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.warning = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.error = function (item) {\n this._log('error', item);\n};\n\nRollbar.prototype.critical = function (item) {\n this._log('critical', item);\n};\n\nRollbar.prototype.wait = function (callback) {\n this.queue.wait(callback);\n};\n\nRollbar.prototype.captureEvent = function (type, metadata, level) {\n return this.telemeter && this.telemeter.captureEvent(type, metadata, level);\n};\n\nRollbar.prototype.captureDomContentLoaded = function (ts) {\n return this.telemeter && this.telemeter.captureDomContentLoaded(ts);\n};\n\nRollbar.prototype.captureLoad = function (ts) {\n return this.telemeter && this.telemeter.captureLoad(ts);\n};\n\nRollbar.prototype.buildJsonPayload = function (item) {\n return this.api.buildJsonPayload(item);\n};\n\nRollbar.prototype.sendJsonPayload = function (jsonPayload) {\n this.api.postJsonPayload(jsonPayload);\n};\n\n/* Internal */\n\nRollbar.prototype._log = function (defaultLevel, item) {\n var callback;\n if (item.callback) {\n callback = item.callback;\n delete item.callback;\n }\n if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) {\n if (callback) {\n var error = new Error('ignored identical item');\n error.item = item;\n callback(error);\n }\n return;\n }\n try {\n item.level = item.level || defaultLevel;\n\n this._addItemAttributes(item);\n\n // Legacy OpenTracing support\n this._addTracingInfo(item);\n\n const telemeter = this.telemeter;\n if (telemeter) {\n telemeter._captureRollbarItem(item);\n item.telemetryEvents = telemeter.copyEvents() || [];\n }\n\n this.notifier.log(item, callback);\n } catch (e) {\n if (callback) {\n callback(e);\n }\n this.logger.error(e);\n }\n};\n\nRollbar.prototype._addItemAttributes = function (item) {\n const span = this.tracing?.getSpan();\n\n const attributes = [\n { key: 'session_id', value: this.tracing?.sessionId },\n { key: 'span_id', value: span?.spanId },\n { key: 'trace_id', value: span?.traceId },\n ];\n if (item._isUncaught) {\n attributes.push({ key: 'is_uncaught', value: 'true' });\n }\n _.addItemAttributes(item.data, attributes);\n\n span?.addEvent('rollbar.occurrence', [\n { key: 'rollbar.occurrence.uuid', value: item.uuid },\n ]);\n};\n\nRollbar.prototype._defaultLogLevel = function () {\n return this.options.logLevel || 'debug';\n};\n\nRollbar.prototype._sameAsLastError = function (item) {\n if (!item._isUncaught) {\n return false;\n }\n var itemHash = generateItemHash(item);\n if (this.lastErrorHash === itemHash) {\n return true;\n }\n this.lastError = item.err;\n this.lastErrorHash = itemHash;\n return false;\n};\n\nRollbar.prototype._addTracingInfo = function (item) {\n // Tracer validation occurs in the constructor\n // or in the Rollbar.prototype.configure methods\n if (this.tracer) {\n // add rollbar occurrence uuid to span\n var span = this.tracer.scope().active();\n\n if (validateSpan(span)) {\n span.setTag('rollbar.error_uuid', item.uuid);\n span.setTag('rollbar.has_error', true);\n span.setTag('error', true);\n span.setTag(\n 'rollbar.item_url',\n `https://rollbar.com/item/uuid/?uuid=${item.uuid}`,\n );\n span.setTag(\n 'rollbar.occurrence_url',\n `https://rollbar.com/occurrence/uuid/?uuid=${item.uuid}`,\n );\n\n // add span ID & trace ID to occurrence\n var opentracingSpanId = span.context().toSpanId();\n var opentracingTraceId = span.context().toTraceId();\n\n if (item.custom) {\n item.custom.opentracing_span_id = opentracingSpanId;\n item.custom.opentracing_trace_id = opentracingTraceId;\n } else {\n item.custom = {\n opentracing_span_id: opentracingSpanId,\n opentracing_trace_id: opentracingTraceId,\n };\n }\n }\n }\n};\n\nfunction generateItemHash(item) {\n var message = item.message || '';\n var stack = (item.err || {}).stack || String(item.err);\n return message + '::' + stack;\n}\n\n// Node.js, Chrome, Safari, and some other browsers support this property\n// which globally sets the number of stack frames returned in an Error object.\n// If a browser can't use it, no harm done.\nfunction setStackTraceLimit(options) {\n if (options.stackTraceLimit) {\n Error.stackTraceLimit = options.stackTraceLimit;\n }\n}\n\n/**\n * Validate the Tracer object provided to the Client\n * is valid for our Opentracing use case.\n * @param {opentracer.Tracer} tracer\n */\nfunction validateTracer(tracer) {\n if (!tracer) {\n return false;\n }\n\n if (!tracer.scope || typeof tracer.scope !== 'function') {\n return false;\n }\n\n var scope = tracer.scope();\n\n if (!scope || !scope.active || typeof scope.active !== 'function') {\n return false;\n }\n\n return true;\n}\n\n/**\n * Validate the Span object provided\n * @param {opentracer.Span} span\n */\nfunction validateSpan(span) {\n if (!span || !span.context || typeof span.context !== 'function') {\n return false;\n }\n\n var spanContext = span.context();\n\n if (\n !spanContext ||\n !spanContext.toSpanId ||\n !spanContext.toTraceId ||\n typeof spanContext.toSpanId !== 'function' ||\n typeof spanContext.toTraceId !== 'function'\n ) {\n return false;\n }\n\n return true;\n}\n\nexport default Rollbar;\n","import * as _ from './utility.js';\n\nfunction itemToPayload(item, options, callback) {\n if (item._isUncaught) {\n item.data._isUncaught = true;\n }\n if (item._originalArgs) {\n item.data._originalArgs = item._originalArgs;\n }\n callback(null, item);\n}\n\nfunction addPayloadOptions(item, options, callback) {\n var payloadOptions = options.payload || {};\n if (payloadOptions.body) {\n delete payloadOptions.body;\n }\n\n item.data = _.merge(item.data, payloadOptions);\n callback(null, item);\n}\n\nfunction addTelemetryData(item, options, callback) {\n if (item.telemetryEvents) {\n _.set(item, 'data.body.telemetry', item.telemetryEvents);\n }\n callback(null, item);\n}\n\nfunction addMessageWithError(item, options, callback) {\n if (!item.message) {\n callback(null, item);\n return;\n }\n var tracePath = 'data.body.trace_chain.0';\n var trace = _.get(item, tracePath);\n if (!trace) {\n tracePath = 'data.body.trace';\n trace = _.get(item, tracePath);\n }\n if (trace) {\n if (!(trace.exception && trace.exception.description)) {\n _.set(item, tracePath + '.exception.description', item.message);\n callback(null, item);\n return;\n }\n var extra = _.get(item, tracePath + '.extra') || {};\n var newExtra = _.merge(extra, { message: item.message });\n _.set(item, tracePath + '.extra', newExtra);\n }\n callback(null, item);\n}\n\nfunction userTransform(logger) {\n return function (item, options, callback) {\n var newItem = _.merge(item);\n var response = null;\n try {\n if (_.isFunction(options.transform)) {\n response = options.transform(newItem.data, item);\n }\n } catch (e) {\n options.transform = null;\n logger.error(\n 'Error while calling custom transform() function. Removing custom transform().',\n e,\n );\n callback(null, item);\n return;\n }\n if (_.isPromise(response)) {\n response.then(\n function (promisedItem) {\n if (promisedItem) {\n newItem.data = promisedItem;\n }\n callback(null, newItem);\n },\n function (error) {\n callback(error, item);\n },\n );\n } else {\n callback(null, newItem);\n }\n };\n}\n\nfunction addConfigToPayload(item, options, callback) {\n if (!options.sendConfig) {\n return callback(null, item);\n }\n var configKey = '_rollbarConfig';\n var custom = _.get(item, 'data.custom') || {};\n custom[configKey] = options;\n item.data.custom = custom;\n callback(null, item);\n}\n\nfunction addFunctionOption(options, name) {\n if (_.isFunction(options[name])) {\n options[name] = options[name].toString();\n }\n}\n\nfunction addConfiguredOptions(item, options, callback) {\n var configuredOptions = options._configuredOptions;\n\n // These must be stringified or they'll get dropped during serialization.\n addFunctionOption(configuredOptions, 'transform');\n addFunctionOption(configuredOptions, 'checkIgnore');\n addFunctionOption(configuredOptions, 'onSendCallback');\n\n delete configuredOptions.accessToken;\n item.data.notifier.configured_options = configuredOptions;\n callback(null, item);\n}\n\nfunction addDiagnosticKeys(item, options, callback) {\n var diagnostic = _.merge(\n item.notifier.client.notifier.diagnostic,\n item.diagnostic,\n );\n\n if (_.get(item, 'err._isAnonymous')) {\n diagnostic.is_anonymous = true;\n }\n\n if (item._isUncaught) {\n diagnostic.is_uncaught = item._isUncaught;\n }\n\n if (item.err) {\n try {\n diagnostic.raw_error = {\n message: item.err.message,\n name: item.err.name,\n constructor_name: item.err.constructor && item.err.constructor.name,\n filename: item.err.fileName,\n line: item.err.lineNumber,\n column: item.err.columnNumber,\n stack: item.err.stack,\n };\n } catch (e) {\n diagnostic.raw_error = { failed: String(e) };\n }\n }\n\n item.data.notifier.diagnostic = _.merge(\n item.data.notifier.diagnostic,\n diagnostic,\n );\n callback(null, item);\n}\n\nexport {\n itemToPayload,\n addPayloadOptions,\n addTelemetryData,\n addMessageWithError,\n userTransform,\n addConfigToPayload,\n addConfiguredOptions,\n addDiagnosticKeys,\n};\n","/**\n * Default browser options\n */\nimport { commonScrubFields } from '../defaults.js';\n\nexport const scrubFields = [\n ...commonScrubFields,\n 'cc-number',\n 'card number',\n 'cardnumber',\n 'cardnum',\n 'ccnum',\n 'ccnumber',\n 'cc num',\n 'creditcardnumber',\n 'credit card number',\n 'newcreditcardnumber',\n 'new credit card',\n 'creditcardno',\n 'credit card no',\n 'card#',\n 'card #',\n 'cc-csc',\n 'cvc',\n 'cvc2',\n 'cvv2',\n 'ccv2',\n 'security code',\n 'card verification',\n 'name on credit card',\n 'name on card',\n 'nameoncard',\n 'cardholder',\n 'card holder',\n 'name des karteninhabers',\n 'ccname',\n 'card type',\n 'cardtype',\n 'cc type',\n 'cctype',\n 'payment type',\n 'expiration date',\n 'expirationdate',\n 'expdate',\n 'cc-exp',\n 'ccmonth',\n 'ccyear',\n];\n\n// For compatibility with existing code that expects default export with scrubFields property\nexport default { scrubFields };\n","import * as _ from '../utility.js';\n\nfunction checkIgnore(item, settings) {\n if (_.get(settings, 'plugins.jquery.ignoreAjaxErrors')) {\n return !_.get(item, 'body.message.extra.isAjax');\n }\n return true;\n}\n\nexport { checkIgnore };\n","import errorParser from '../errorParser.js';\nimport logger from '../logger.js';\nimport * as _ from '../utility.js';\n\nfunction handleDomException(item, options, callback) {\n if (item.err && errorParser.Stack(item.err).name === 'DOMException') {\n var originalError = new Error();\n originalError.name = item.err.name;\n originalError.message = item.err.message;\n originalError.stack = item.err.stack;\n originalError.nested = item.err;\n item.err = originalError;\n }\n callback(null, item);\n}\n\nfunction handleItemWithError(item, options, callback) {\n item.data = item.data || {};\n if (item.err) {\n try {\n item.stackInfo =\n item.err._savedStackTrace ||\n errorParser.parse(item.err, item.skipFrames);\n\n if (options.addErrorContext) {\n addErrorContext(item);\n }\n } catch (e) {\n logger.error('Error while parsing the error object.', e);\n try {\n item.message =\n item.err.message ||\n item.err.description ||\n item.message ||\n String(item.err);\n } catch (e2) {\n item.message = String(item.err) || String(e2);\n }\n delete item.err;\n }\n }\n callback(null, item);\n}\n\nfunction addErrorContext(item) {\n var chain = [];\n var err = item.err;\n\n chain.push(err);\n\n while (err.nested || err.cause) {\n err = err.nested || err.cause;\n chain.push(err);\n }\n\n _.addErrorContext(item, chain);\n}\n\nfunction ensureItemHasSomethingToSay(item, options, callback) {\n if (!item.message && !item.stackInfo && !item.custom) {\n callback(new Error('No message, stack info, or custom data'), null);\n }\n callback(null, item);\n}\n\nfunction addBaseInfo(item, options, callback) {\n var environment =\n (options.payload && options.payload.environment) || options.environment;\n item.data = _.merge(item.data, {\n environment: environment,\n level: item.level,\n endpoint: options.endpoint,\n platform: 'browser',\n framework: 'browser-js',\n language: 'javascript',\n server: {},\n uuid: item.uuid,\n notifier: {\n name: 'rollbar-browser-js',\n version: options.version,\n },\n custom: item.custom,\n });\n callback(null, item);\n}\n\nfunction addRequestInfo(window) {\n return function (item, options, callback) {\n var requestInfo = {};\n\n if (window && window.location) {\n requestInfo.url = window.location.href;\n requestInfo.query_string = window.location.search;\n }\n\n var remoteString = '$remote_ip';\n if (!options.captureIp) {\n remoteString = null;\n } else if (options.captureIp !== true) {\n remoteString += '_anonymize';\n }\n if (remoteString) requestInfo.user_ip = remoteString;\n\n if (Object.keys(requestInfo).length > 0) {\n _.set(item, 'data.request', requestInfo);\n }\n\n callback(null, item);\n };\n}\n\nfunction addClientInfo(window) {\n return function (item, options, callback) {\n if (!window) {\n return callback(null, item);\n }\n var nav = window.navigator || {};\n var scr = window.screen || {};\n _.set(item, 'data.client', {\n runtime_ms: item.timestamp - window._rollbarStartTime,\n timestamp: Math.round(item.timestamp / 1000),\n javascript: {\n browser: nav.userAgent,\n language: nav.language,\n cookie_enabled: nav.cookieEnabled,\n screen: {\n width: scr.width,\n height: scr.height,\n },\n },\n });\n callback(null, item);\n };\n}\n\nfunction addPluginInfo(window) {\n return function (item, options, callback) {\n if (!window || !window.navigator) {\n return callback(null, item);\n }\n var plugins = [];\n var navPlugins = window.navigator.plugins || [];\n var cur;\n for (var i = 0, l = navPlugins.length; i < l; ++i) {\n cur = navPlugins[i];\n plugins.push({ name: cur.name, description: cur.description });\n }\n _.set(item, 'data.client.javascript.plugins', plugins);\n callback(null, item);\n };\n}\n\nfunction addBody(item, options, callback) {\n if (item.stackInfo) {\n if (item.stackInfo.traceChain) {\n addBodyTraceChain(item, options, callback);\n } else {\n addBodyTrace(item, options, callback);\n }\n } else {\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction addBodyMessage(item, options, callback) {\n var message = item.message;\n var custom = item.custom;\n\n if (!message) {\n message = 'Item sent with null or missing arguments.';\n }\n var result = {\n body: message,\n };\n\n if (custom) {\n result.extra = _.merge(custom);\n }\n\n _.set(item, 'data.body', { message: result });\n callback(null, item);\n}\n\nfunction stackFromItem(item, stackInfo = null) {\n // Transform a TraceKit stackInfo object into a Rollbar trace\n let stack = (stackInfo || item.stackInfo).stack;\n if (\n stack &&\n stack.length === 0 &&\n item._unhandledStackInfo &&\n item._unhandledStackInfo.stack\n ) {\n stack = item._unhandledStackInfo.stack;\n }\n return stack;\n}\n\nfunction addBodyTraceChain(item, options, callback) {\n var traceChain = item.stackInfo.traceChain;\n var traces = [];\n\n var traceChainLength = traceChain.length;\n for (var i = 0; i < traceChainLength; i++) {\n var trace = buildTrace(item, traceChain[i], options);\n traces.push(trace);\n }\n\n _.set(item, 'data.body', { trace_chain: traces });\n callback(null, item);\n}\n\nfunction addBodyTrace(item, options, callback) {\n var stack = stackFromItem(item);\n\n if (stack) {\n var trace = buildTrace(item, item.stackInfo, options);\n _.set(item, 'data.body', { trace: trace });\n callback(null, item);\n } else {\n var stackInfo = item.stackInfo;\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n\n item.message = className + ': ' + message;\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction buildTrace(item, stackInfo, options) {\n var description = item && item.data.description;\n var custom = item && item.custom;\n var stack = stackFromItem(item, stackInfo);\n\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n var trace = {\n exception: {\n class: className,\n message: message,\n },\n };\n\n if (description) {\n trace.exception.description = description;\n }\n\n if (stack) {\n if (stack.length === 0) {\n trace.exception.stack = stackInfo.rawStack;\n trace.exception.raw = String(stackInfo.rawException);\n }\n var stackFrame;\n var frame;\n var code;\n var pre;\n var post;\n var contextLength;\n var i, mid;\n\n trace.frames = [];\n for (i = 0; i < stack.length; ++i) {\n stackFrame = stack[i];\n frame = {\n filename: stackFrame.url ? _.sanitizeUrl(stackFrame.url) : '(unknown)',\n lineno: stackFrame.line || null,\n method:\n !stackFrame.func || stackFrame.func === '?'\n ? '[anonymous]'\n : stackFrame.func,\n colno: stackFrame.column,\n };\n if (options.sendFrameUrl) {\n frame.url = stackFrame.url;\n }\n if (\n frame.method &&\n frame.method.endsWith &&\n frame.method.endsWith('_rollbar_wrapped')\n ) {\n continue;\n }\n\n code = pre = post = null;\n contextLength = stackFrame.context ? stackFrame.context.length : 0;\n if (contextLength) {\n mid = Math.floor(contextLength / 2);\n pre = stackFrame.context.slice(0, mid);\n code = stackFrame.context[mid];\n post = stackFrame.context.slice(mid);\n }\n\n if (code) {\n frame.code = code;\n }\n\n if (pre || post) {\n frame.context = {};\n if (pre && pre.length) {\n frame.context.pre = pre;\n }\n if (post && post.length) {\n frame.context.post = post;\n }\n }\n\n if (stackFrame.args) {\n frame.args = stackFrame.args;\n }\n\n trace.frames.push(frame);\n }\n\n // NOTE(cory): reverse the frames since rollbar.com expects the most recent call last\n trace.frames.reverse();\n\n if (custom) {\n trace.extra = _.merge(custom);\n }\n }\n\n return trace;\n}\n\nfunction errorClass(stackInfo, guess, options) {\n if (stackInfo.name) {\n return stackInfo.name;\n } else if (options.guessErrorClass) {\n return guess;\n } else {\n return '(unknown)';\n }\n}\n\nfunction addScrubber(scrubFn) {\n return function (item, options, callback) {\n if (scrubFn) {\n var scrubFields = options.scrubFields || [];\n var scrubPaths = options.scrubPaths || [];\n item.data = scrubFn(item.data, scrubFields, scrubPaths);\n }\n callback(null, item);\n };\n}\n\nexport {\n handleDomException,\n handleItemWithError,\n ensureItemHasSomethingToSay,\n addBaseInfo,\n addRequestInfo,\n addClientInfo,\n addPluginInfo,\n addBody,\n addScrubber,\n};\n","import logger from '../../logger.js';\nimport * as _ from '../../utility.js';\n\nfunction makeFetchRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n timeout,\n}) {\n var controller;\n var timeoutId;\n\n if (_.isFiniteNumber(timeout)) {\n controller = new AbortController();\n timeoutId = setTimeout(function () {\n controller.abort();\n }, timeout);\n }\n\n headers = {\n 'Content-Type': 'application/json',\n 'X-Rollbar-Access-Token': accessToken,\n signal: controller && controller.signal,\n ...headers,\n };\n\n fetch(url, {\n method,\n headers,\n body: payload,\n })\n .then(function (response) {\n if (timeoutId) clearTimeout(timeoutId);\n const respHeaders = response.headers;\n\n const isItemRoute = url.endsWith('/api/1/item/');\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': respHeaders.get('Rollbar-Replay-Enabled'),\n 'Rollbar-Replay-RateLimit-Remaining': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n\n const json = response.json();\n callback(null, json, headers);\n })\n .catch(function (error) {\n logger.error(error.message);\n callback(error);\n });\n}\n\nexport default makeFetchRequest;\n","/*global XDomainRequest*/\n\nimport logger from '../../logger.js';\nimport * as _ from '../../utility.js';\n\nfunction makeXhrRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n requestFactory,\n timeout,\n}) {\n var request;\n if (requestFactory) {\n request = requestFactory();\n } else {\n request = _createXMLHTTPObject();\n }\n if (!request) {\n // Give up, no way to send requests\n return callback(new Error('No way to send a request'));\n }\n try {\n try {\n var onreadystatechange = function () {\n try {\n if (onreadystatechange && request.readyState === 4) {\n onreadystatechange = undefined;\n\n var parseResponse = _.jsonParse(request.responseText);\n if (_isSuccess(request)) {\n const isItemRoute = url.endsWith('/api/1/item/');\n\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': request.getResponseHeader(\n 'Rollbar-Replay-Enabled',\n ),\n 'Rollbar-Replay-RateLimit-Remaining':\n request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n callback(parseResponse.error, parseResponse.value, headers);\n return;\n } else if (_isNormalFailure(request)) {\n if (request.status === 403) {\n // likely caused by using a server access token\n var message =\n parseResponse.value && parseResponse.value.message;\n logger.error(message);\n }\n // return valid http status codes\n callback(new Error(String(request.status)));\n } else {\n // IE will return a status 12000+ on some sort of connection failure,\n // so we return a blank error\n // http://msdn.microsoft.com/en-us/library/aa383770%28VS.85%29.aspx\n var msg =\n 'XHR response had no status code (likely connection failure)';\n callback(_newRetriableError(msg));\n }\n }\n } catch (ex) {\n //jquery source mentions firefox may error out while accessing the\n //request members if there is a network error\n //https://github.com/jquery/jquery/blob/a938d7b1282fc0e5c52502c225ae8f0cef219f0a/src/ajax/xhr.js#L111\n var exc;\n if (ex && ex.stack) {\n exc = ex;\n } else {\n exc = new Error(ex);\n }\n callback(exc);\n }\n };\n\n request.open(method, url, true);\n if (request.setRequestHeader) {\n request.setRequestHeader('Content-Type', 'application/json');\n request.setRequestHeader('X-Rollbar-Access-Token', accessToken);\n for (const [h, v] of Object.entries(headers ?? {})) {\n request.setRequestHeader(h, v);\n }\n }\n\n if (_.isFiniteNumber(timeout)) {\n request.timeout = timeout;\n }\n\n request.onreadystatechange = onreadystatechange;\n request.send(payload);\n } catch (_e1) {\n // Sending using the normal xmlhttprequest object didn't work, try XDomainRequest\n if (typeof XDomainRequest !== 'undefined') {\n // Assume we are in a really old browser which has a bunch of limitations:\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n\n // Extreme paranoia: if we have XDomainRequest then we have a window, but just in case\n if (!window || !window.location) {\n return callback(\n new Error(\n 'No window available during request, unknown environment',\n ),\n );\n }\n\n // If the current page is http, try and send over http\n if (\n window.location.href.substring(0, 5) === 'http:' &&\n url.substring(0, 5) === 'https'\n ) {\n url = 'http' + url.substring(5);\n }\n\n var xdomainrequest = new XDomainRequest();\n xdomainrequest.onprogress = () => {};\n xdomainrequest.ontimeout = function () {\n var msg = 'Request timed out';\n var code = 'ETIMEDOUT';\n callback(_newRetriableError(msg, code));\n };\n xdomainrequest.onerror = function () {\n callback(new Error('Error during request'));\n };\n xdomainrequest.onload = function () {\n var parseResponse = _.jsonParse(xdomainrequest.responseText);\n callback(parseResponse.error, parseResponse.value);\n };\n xdomainrequest.open(method, url, true);\n xdomainrequest.send(payload);\n } else {\n callback(new Error('Cannot find a method to transport a request'));\n }\n }\n } catch (e2) {\n callback(e2);\n }\n}\n\nfunction _createXMLHTTPObject() {\n /* global ActiveXObject:false */\n\n var factories = [\n function () {\n return new XMLHttpRequest();\n },\n function () {\n return new ActiveXObject('Msxml2.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Msxml3.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Microsoft.XMLHTTP');\n },\n ];\n var xmlhttp;\n var i;\n var numFactories = factories.length;\n for (i = 0; i < numFactories; i++) {\n try {\n xmlhttp = factories[i]();\n break;\n } catch (_e) {\n // pass\n }\n }\n return xmlhttp;\n}\n\nfunction _isSuccess(r) {\n return r && r.status && r.status === 200;\n}\n\nfunction _isNormalFailure(r) {\n return r && _.isType(r.status, 'number') && r.status >= 400 && r.status < 600;\n}\n\nfunction _newRetriableError(message, code) {\n var err = new Error(message);\n err.code = code || 'ENOTFOUND';\n return err;\n}\n\nexport default makeXhrRequest;\n","import * as _ from '../utility.js';\n\nimport makeFetchRequest from './transport/fetch.js';\nimport makeXhrRequest from './transport/xhr.js';\n\n/*\n * accessToken may be embedded in payload but that should not\n * be assumed\n *\n * options: {\n * hostname\n * protocol\n * path\n * port\n * method\n * transport ('xhr' | 'fetch')\n * }\n *\n * params is an object containing key/value pairs. These\n * will be appended to the path as 'key=value&key=value'\n *\n * payload is an unserialized object\n */\nfunction Transport(truncation) {\n this.truncation = truncation;\n}\n\nTransport.prototype.get = function (\n accessToken,\n options,\n params,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = () => {};\n }\n _.addParamsAndAccessTokenToPath(accessToken, options, params);\n\n var method = 'GET';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.post = function ({\n accessToken,\n options,\n payload,\n headers,\n callback,\n requestFactory,\n}) {\n if (!callback || !_.isFunction(callback)) {\n callback = () => {};\n }\n\n if (!payload) {\n return callback(new Error('Cannot send empty request'));\n }\n\n var stringifyResult;\n // Check payload.body to ensure only items are truncated.\n if (this.truncation && payload.body) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = _.stringify(payload);\n }\n if (stringifyResult.error) {\n return callback(stringifyResult.error);\n }\n\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload: stringifyResult.value,\n headers,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.postJsonPayload = function (\n accessToken,\n options,\n payload,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = () => {};\n }\n\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\n// Wraps `_makeRequest` if zone.js is being used, ensuring that Rollbar\n// API calls are not intercepted by any child forked zones.\n// This is equivalent to `NgZone.runOutsideAngular` in Angular.\nTransport.prototype._makeZoneRequest = function () {\n var gWindow =\n (typeof window !== 'undefined' && window) ||\n (typeof self !== 'undefined' && self);\n // Whenever zone.js is loaded and `Zone` is exposed globally, access\n // the root zone to ensure that requests are always made within it.\n // This approach is framework-agnostic, regardless of which\n // framework zone.js is used with.\n var rootZone = gWindow && gWindow.Zone && gWindow.Zone.root;\n var args = Array.prototype.slice.call(arguments);\n\n if (rootZone) {\n rootZone.run(() => {\n this._makeRequest.apply(undefined, args);\n });\n } else {\n this._makeRequest.apply(undefined, args);\n }\n};\n\nTransport.prototype._makeRequest = function (params) {\n const { payload, callback, transport } = params;\n if (typeof RollbarProxy !== 'undefined') {\n return _proxyRequest(payload, callback);\n }\n\n if (transport === 'fetch') {\n makeFetchRequest(params);\n } else {\n makeXhrRequest(params);\n }\n};\n\n/* global RollbarProxy */\nfunction _proxyRequest(json, callback) {\n var rollbarProxy = new RollbarProxy();\n rollbarProxy.sendJsonPayload(\n json,\n function (_msg) {\n /* do nothing */\n },\n function (err) {\n callback(new Error(err));\n },\n );\n}\n\nexport default Transport;\n","// See https://nodejs.org/docs/latest/api/url.html\nfunction parse(url) {\n var result = {\n protocol: null,\n auth: null,\n host: null,\n path: null,\n hash: null,\n href: url,\n hostname: null,\n port: null,\n pathname: null,\n search: null,\n query: null,\n };\n\n var i, last;\n i = url.indexOf('//');\n if (i !== -1) {\n result.protocol = url.substring(0, i);\n last = i + 2;\n } else {\n last = 0;\n }\n\n i = url.indexOf('@', last);\n if (i !== -1) {\n result.auth = url.substring(last, i);\n last = i + 1;\n }\n\n i = url.indexOf('/', last);\n if (i === -1) {\n i = url.indexOf('?', last);\n if (i === -1) {\n i = url.indexOf('#', last);\n if (i === -1) {\n result.host = url.substring(last);\n } else {\n result.host = url.substring(last, i);\n result.hash = url.substring(i);\n }\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n return result;\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n\n i = url.indexOf('#', last);\n if (i === -1) {\n result.path = url.substring(last);\n } else {\n result.path = url.substring(last, i);\n result.hash = url.substring(i);\n }\n\n if (result.path) {\n var pathParts = result.path.split('?');\n result.pathname = pathParts[0];\n result.query = pathParts[1];\n result.search = result.query ? '?' + result.query : null;\n }\n return result;\n}\n\nexport { parse };\n","import API from '../api.js';\nimport defaults from '../defaults.js';\nimport errorParser from '../errorParser.js';\nimport logger from '../logger.js';\nimport * as sharedPredicates from '../predicates.js';\nimport Client from '../rollbar.js';\nimport tracingDefaults from '../tracing/defaults.js';\nimport * as sharedTransforms from '../transforms.js';\nimport * as _ from '../utility.js';\n\nimport browserDefaults from './defaults.js';\nimport * as globals from './globalSetup.js';\nimport * as predicates from './predicates.js';\nimport replayDefaults from './replay/defaults.js';\nimport * as transforms from './transforms.js';\nimport Transport from './transport.js';\nimport * as urllib from './url.js';\n\n// Used to support global `Rollbar` instance.\nlet _instance = null;\n\nclass Rollbar {\n constructor(options, client) {\n logger.init({ logLevel: options.logLevel || 'error' });\n this.options = _.handleOptions(defaultOptions, options, null, logger);\n this.options._configuredOptions = options;\n this.components = this.components || {};\n const Telemeter = this.components.telemeter;\n const Instrumenter = this.components.instrumenter;\n this.wrapGlobals = this.components.wrapGlobals;\n this.scrub = this.components.scrub;\n const truncation = this.components.truncation;\n const Tracing = this.components.tracing;\n const Replay = this.components.replay;\n\n const transport = new Transport(truncation);\n const api = new API(this.options, transport, urllib, truncation);\n if (Tracing) {\n this.tracing = new Tracing(_gWindow(), api, this.options);\n this.tracing.initSession();\n }\n if (Telemeter) {\n this.telemeter = new Telemeter(this.options, this.tracing);\n }\n\n if (Replay && _.isBrowser()) {\n const replayOptions = this.options.replay;\n this.replay = new Replay({\n tracing: this.tracing,\n telemeter: this.telemeter,\n options: replayOptions,\n });\n\n if (replayOptions.enabled && replayOptions.autoStart) {\n this.replay.recorder.start();\n }\n }\n\n this.client =\n client ||\n new Client(\n this.options,\n api,\n logger,\n this.telemeter,\n this.tracing,\n this.replay,\n 'browser',\n );\n var gWindow = _gWindow();\n var gDocument = typeof document !== 'undefined' && document;\n this.isChrome = gWindow.chrome && gWindow.chrome.runtime; // check .runtime to avoid Edge browsers\n this.anonymousErrorsPending = 0;\n addTransformsToNotifier(this.client.notifier, this, gWindow);\n addPredicatesToQueue(this.client.queue);\n this.setupUnhandledCapture();\n if (Instrumenter) {\n this.instrumenter = new Instrumenter(\n this.options,\n this.client.telemeter,\n this,\n gWindow,\n gDocument,\n );\n this.instrumenter.instrument();\n }\n\n this.setSessionAttributesFromOptions(options);\n\n // Used with rollbar-react for rollbar-react-native compatibility.\n this.rollbar = this;\n }\n\n static init(options, client) {\n if (_instance) {\n return _instance.global(options).configure(options);\n }\n _instance = new Rollbar(options, client);\n return _instance;\n }\n\n static setComponents(components) {\n Rollbar.prototype.components = components;\n }\n\n global(options) {\n this.client.global(options);\n return this;\n }\n\n configure(options, payloadData) {\n if (options.logLevel) {\n logger.init({ logLevel: options.logLevel });\n }\n this.setSessionAttributesFromOptions(options);\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.handleOptions(oldOptions, options, payload, logger);\n this.options._configuredOptions = _.handleOptions(\n oldOptions._configuredOptions,\n options,\n payload,\n );\n\n this.tracing?.configure(this.options);\n this.replay?.configure(this.options.replay);\n this.client.configure(this.options, payloadData);\n this.instrumenter?.configure(this.options);\n this.setupUnhandledCapture();\n return this;\n }\n\n lastError() {\n return this.client.lastError;\n }\n\n log() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.log(item);\n return { uuid: uuid };\n }\n\n debug() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.debug(item);\n return { uuid: uuid };\n }\n\n info() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.info(item);\n return { uuid: uuid };\n }\n\n warn() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warn(item);\n return { uuid: uuid };\n }\n\n warning() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warning(item);\n return { uuid: uuid };\n }\n\n error() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.error(item);\n return { uuid: uuid };\n }\n\n critical() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.critical(item);\n return { uuid: uuid };\n }\n\n buildJsonPayload(item) {\n return this.client.buildJsonPayload(item);\n }\n\n sendJsonPayload(jsonPayload) {\n return this.client.sendJsonPayload(jsonPayload);\n }\n\n triggerDirectReplay(context) {\n return this.triggerReplay({ type: 'direct', ...context });\n }\n\n triggerReplay(context) {\n if (!this.replay) return null;\n\n return this.replay.triggerReplay(context);\n }\n\n setupUnhandledCapture() {\n var gWindow = _gWindow();\n\n if (!this.unhandledExceptionsInitialized) {\n if (\n this.options.captureUncaught ||\n this.options.handleUncaughtExceptions\n ) {\n globals.captureUncaughtExceptions(gWindow, this);\n if (this.wrapGlobals && this.options.wrapGlobalEventHandlers) {\n this.wrapGlobals(gWindow, this);\n }\n this.unhandledExceptionsInitialized = true;\n }\n }\n if (!this.unhandledRejectionsInitialized) {\n if (\n this.options.captureUnhandledRejections ||\n this.options.handleUnhandledRejections\n ) {\n globals.captureUnhandledRejections(gWindow, this);\n this.unhandledRejectionsInitialized = true;\n }\n }\n }\n\n handleUncaughtException(message, url, lineno, colno, error, context) {\n if (\n !this.options.captureUncaught &&\n !this.options.handleUncaughtExceptions\n ) {\n return;\n }\n\n // Chrome will always send 5+ arguments and error will be valid or null, not undefined.\n // If error is undefined, we have a different caller.\n // Chrome also sends errors from web workers with null error, but does not invoke\n // prepareStackTrace() for these. Test for empty url to skip them.\n if (\n this.options.inspectAnonymousErrors &&\n this.isChrome &&\n error === null &&\n url === ''\n ) {\n return 'anonymous';\n }\n\n var item;\n var stackInfo = _.makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n 'onerror',\n 'uncaught exception',\n errorParser,\n );\n if (_.isError(error)) {\n item = this._createItem([message, error, context]);\n item._unhandledStackInfo = stackInfo;\n } else if (_.isError(url)) {\n item = this._createItem([message, url, context]);\n item._unhandledStackInfo = stackInfo;\n } else {\n item = this._createItem([message, context]);\n item.stackInfo = stackInfo;\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n this.client.log(item);\n }\n\n /**\n * Chrome only. Other browsers will ignore.\n *\n * Use Error.prepareStackTrace to extract information about errors that\n * do not have a valid error object in onerror().\n *\n * In tested version of Chrome, onerror is called first but has no way\n * to communicate with prepareStackTrace. Use a counter to let this\n * handler know which errors to send to Rollbar.\n *\n * In config options, set inspectAnonymousErrors to enable.\n */\n handleAnonymousErrors() {\n if (!this.options.inspectAnonymousErrors || !this.isChrome) {\n return;\n }\n\n const prepareStackTrace = (error, _stack) => {\n if (this.options.inspectAnonymousErrors) {\n if (this.anonymousErrorsPending) {\n // This is the only known way to detect that onerror saw an anonymous error.\n // It depends on onerror reliably being called before Error.prepareStackTrace,\n // which so far holds true on tested versions of Chrome. If versions of Chrome\n // are tested that behave differently, this logic will need to be updated\n // accordingly.\n this.anonymousErrorsPending -= 1;\n\n if (!error) {\n // Not likely to get here, but calling handleUncaughtException from here\n // without an error object would throw off the anonymousErrorsPending counter,\n // so return now.\n return;\n }\n\n // Allow this to be tracked later.\n error._isAnonymous = true;\n\n // url, lineno, colno shouldn't be needed for these errors.\n // If that changes, update this accordingly, using the unused\n // _stack param as needed (rather than parse error.toString()).\n this.handleUncaughtException(error.message, null, null, null, error);\n }\n }\n\n // Workaround to ensure stack is preserved for normal errors.\n return error.stack;\n };\n\n // https://v8.dev/docs/stack-trace-api\n try {\n Error.prepareStackTrace = prepareStackTrace;\n } catch (e) {\n this.options.inspectAnonymousErrors = false;\n this.error('anonymous error handler failed', e);\n }\n }\n\n handleUnhandledRejection(reason, promise) {\n if (\n !this.options.captureUnhandledRejections &&\n !this.options.handleUnhandledRejections\n ) {\n return;\n }\n\n var message = 'unhandled rejection was null or undefined!';\n if (reason) {\n if (reason.message) {\n message = reason.message;\n } else {\n var reasonResult = _.stringify(reason);\n if (reasonResult.value) {\n message = reasonResult.value;\n }\n }\n }\n var context =\n (reason && reason._rollbarContext) ||\n (promise && promise._rollbarContext);\n\n var item;\n if (_.isError(reason)) {\n item = this._createItem([message, reason, context]);\n } else {\n item = this._createItem([message, reason, context]);\n item.stackInfo = _.makeUnhandledStackInfo(\n message,\n '',\n 0,\n 0,\n null,\n 'unhandledrejection',\n '',\n errorParser,\n );\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n item._originalArgs = item._originalArgs || [];\n item._originalArgs.push(promise);\n this.client.log(item);\n }\n\n wrap(f, context, _before) {\n try {\n var ctxFn;\n if (_.isFunction(context)) {\n ctxFn = context;\n } else {\n ctxFn = function () {\n return context || {};\n };\n }\n\n if (!_.isFunction(f)) {\n return f;\n }\n\n if (f._isWrap) {\n return f;\n }\n\n if (!f._rollbar_wrapped) {\n f._rollbar_wrapped = function () {\n if (_before && _.isFunction(_before)) {\n _before.apply(this, arguments);\n }\n try {\n return f.apply(this, arguments);\n } catch (exc) {\n var e = exc;\n if (e && window._rollbarWrappedError !== e) {\n if (_.isType(e, 'string')) {\n e = new String(e);\n }\n e._rollbarContext = ctxFn() || {};\n e._rollbarContext._wrappedSource = f.toString();\n\n window._rollbarWrappedError = e;\n }\n throw e;\n }\n };\n\n f._rollbar_wrapped._isWrap = true;\n\n for (var prop in f) {\n if (_.hasOwn(f, prop) && prop !== '_rollbar_wrapped') {\n f._rollbar_wrapped[prop] = f[prop];\n }\n }\n }\n\n return f._rollbar_wrapped;\n } catch (_e) {\n // Return the original function if the wrap fails.\n return f;\n }\n }\n\n captureEvent() {\n var event = _.createTelemetryEvent(arguments);\n return this.client.captureEvent(event.type, event.metadata, event.level);\n }\n\n setSessionUser(user) {\n if (!this.tracing?.session) return;\n\n this.tracing.session.setUser(user);\n }\n\n setSessionAttributes(attrs) {\n if (!this.tracing?.session) return;\n\n attrs = { ...attrs };\n\n this.tracing.session.setAttributes(attrs);\n }\n\n setSessionAttributesFromOptions(options) {\n const person = options.person || options.payload?.person;\n if (person) {\n this.setSessionUser(person);\n }\n const code_version =\n options.client?.javascript?.code_version ||\n options.codeVersion ||\n options.code_version ||\n options.payload?.client?.javascript?.code_version ||\n options.payload?.code_version ||\n options.payload?.codeVersion;\n this.setSessionAttributes({\n 'rollbar.codeVersion': code_version,\n 'rollbar.notifier.name': 'rollbar-browser-js',\n 'rollbar.notifier.version': options.version,\n });\n }\n\n // The following two methods are used internally and are not meant for public use\n captureDomContentLoaded(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureDomContentLoaded(ts);\n }\n\n captureLoad(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureLoad(ts);\n }\n\n loadFull() {\n logger.info(\n 'Unexpected Rollbar.loadFull() called on a Notifier instance. This can happen when Rollbar is loaded multiple times.',\n );\n }\n\n _createItem(args) {\n return _.createItem(args, logger, this);\n }\n\n // Static version of instance methods support the legacy pattern of a\n // global `Rollbar` instance, where after calling `Rollbar.init()`,\n // `Rollbar` can be used as if it were an instance.\n // If support for this pattern is dropped, these static methods can be removed.\n static callInstance(method, args) {\n if (!_instance) {\n const message = 'Rollbar is not initialized';\n logger.error(message);\n const maybeCallback = _getFirstFunction(args);\n if (maybeCallback) {\n maybeCallback(new Error(message));\n }\n return;\n }\n return _instance[method].apply(_instance, args);\n }\n\n static global = (...args) => Rollbar.callInstance('global', args);\n static configure = (...args) => Rollbar.callInstance('configure', args);\n static lastError = (...args) => Rollbar.callInstance('lastError', args);\n static log = (...args) => Rollbar.callInstance('log', args);\n static debug = (...args) => Rollbar.callInstance('debug', args);\n static info = (...args) => Rollbar.callInstance('info', args);\n static warn = (...args) => Rollbar.callInstance('warn', args);\n static warning = (...args) => Rollbar.callInstance('warning', args);\n static error = (...args) => Rollbar.callInstance('error', args);\n static critical = (...args) => Rollbar.callInstance('critical', args);\n static buildJsonPayload = (...args) =>\n Rollbar.callInstance('buildJsonPayload', args);\n static sendJsonPayload = (...args) =>\n Rollbar.callInstance('sendJsonPayload', args);\n static wrap = (...args) => Rollbar.callInstance('wrap', args);\n static captureEvent = (...args) => Rollbar.callInstance('captureEvent', args);\n}\n\n/* Internal */\n\nfunction addTransformsToNotifier(notifier, rollbar, gWindow) {\n notifier\n .addTransform(transforms.handleDomException)\n .addTransform(transforms.handleItemWithError)\n .addTransform(transforms.ensureItemHasSomethingToSay)\n .addTransform(transforms.addBaseInfo)\n .addTransform(transforms.addRequestInfo(gWindow))\n .addTransform(transforms.addClientInfo(gWindow))\n .addTransform(transforms.addPluginInfo(gWindow))\n .addTransform(transforms.addBody)\n .addTransform(sharedTransforms.addMessageWithError)\n .addTransform(sharedTransforms.addTelemetryData)\n .addTransform(sharedTransforms.addConfigToPayload)\n .addTransform(transforms.addScrubber(rollbar.scrub))\n .addTransform(sharedTransforms.addPayloadOptions)\n .addTransform(sharedTransforms.userTransform(logger))\n .addTransform(sharedTransforms.addConfiguredOptions)\n .addTransform(sharedTransforms.addDiagnosticKeys)\n .addTransform(sharedTransforms.itemToPayload);\n}\n\nfunction addPredicatesToQueue(queue) {\n queue\n .addPredicate(sharedPredicates.checkLevel)\n .addPredicate(predicates.checkIgnore)\n .addPredicate(sharedPredicates.userCheckIgnore(logger))\n .addPredicate(sharedPredicates.urlIsNotBlockListed(logger))\n .addPredicate(sharedPredicates.urlIsSafeListed(logger))\n .addPredicate(sharedPredicates.messageIsIgnored(logger));\n}\n\nfunction _getFirstFunction(args) {\n for (var i = 0, len = args.length; i < len; ++i) {\n if (_.isFunction(args[i])) {\n return args[i];\n }\n }\n return undefined;\n}\n\nfunction _gWindow() {\n return (\n (typeof window !== 'undefined' && window) ||\n (typeof self !== 'undefined' && self)\n );\n}\n\nconst defaultOptions = {\n environment: 'unknown',\n version: defaults.version,\n scrubFields: browserDefaults.scrubFields,\n logLevel: defaults.logLevel,\n reportLevel: defaults.reportLevel,\n uncaughtErrorLevel: defaults.uncaughtErrorLevel,\n endpoint: defaults.endpoint,\n verbose: false,\n enabled: true,\n transmit: true,\n sendConfig: false,\n includeItemsInTelemetry: true,\n captureIp: true,\n inspectAnonymousErrors: true,\n ignoreDuplicateErrors: true,\n wrapGlobalEventHandlers: false,\n replay: replayDefaults,\n tracing: tracingDefaults,\n};\n\nexport default Rollbar;\n","function captureUncaughtExceptions(window, handler, shim) {\n if (!window) {\n return;\n }\n var oldOnError;\n\n if (typeof handler._rollbarOldOnError === 'function') {\n oldOnError = handler._rollbarOldOnError;\n } else if (window.onerror) {\n oldOnError = window.onerror;\n while (oldOnError._rollbarOldOnError) {\n oldOnError = oldOnError._rollbarOldOnError;\n }\n handler._rollbarOldOnError = oldOnError;\n }\n\n handler.handleAnonymousErrors();\n\n var fn = function () {\n var args = Array.prototype.slice.call(arguments, 0);\n _rollbarWindowOnError(window, handler, oldOnError, args);\n };\n if (shim) {\n fn._rollbarOldOnError = oldOnError;\n }\n window.onerror = fn;\n}\n\nfunction _rollbarWindowOnError(window, r, old, args) {\n if (window._rollbarWrappedError) {\n if (!args[4]) {\n args[4] = window._rollbarWrappedError;\n }\n if (!args[5]) {\n args[5] = window._rollbarWrappedError._rollbarContext;\n }\n window._rollbarWrappedError = null;\n }\n\n var ret = r.handleUncaughtException.apply(r, args);\n\n if (old) {\n old.apply(window, args);\n }\n\n // Let other chained onerror handlers above run before setting this.\n // If an error is thrown and caught within a chained onerror handler,\n // Error.prepareStackTrace() will see that one before the one we want.\n if (ret === 'anonymous') {\n r.anonymousErrorsPending += 1; // See Rollbar.prototype.handleAnonymousErrors()\n }\n}\n\nfunction captureUnhandledRejections(window, handler, shim) {\n if (!window) {\n return;\n }\n\n if (\n typeof window._rollbarURH === 'function' &&\n window._rollbarURH.belongsToShim\n ) {\n window.removeEventListener('unhandledrejection', window._rollbarURH);\n }\n\n var rejectionHandler = function (evt) {\n var reason, promise, detail;\n try {\n reason = evt.reason;\n } catch (_e) {\n reason = undefined;\n }\n try {\n promise = evt.promise;\n } catch (_e) {\n promise = '[unhandledrejection] error getting `promise` from event';\n }\n try {\n detail = evt.detail;\n if (!reason && detail) {\n reason = detail.reason;\n promise = detail.promise;\n }\n } catch (_e) {\n // Ignore\n }\n if (!reason) {\n reason = '[unhandledrejection] error getting `reason` from event';\n }\n\n if (handler && handler.handleUnhandledRejection) {\n handler.handleUnhandledRejection(reason, promise);\n }\n };\n rejectionHandler.belongsToShim = shim;\n window._rollbarURH = rejectionHandler;\n window.addEventListener('unhandledrejection', rejectionHandler);\n}\n\nexport { captureUncaughtExceptions, captureUnhandledRejections };\n","/**\n * Default session replay recording options\n * See https://github.com/rrweb-io/rrweb/blob/master/guide.md#options for details\n */\nexport default {\n enabled: false, // Whether recording is enabled\n autoStart: true, // Start recording automatically when Rollbar initializes\n\n // defaults used by triggers that don't specify them\n triggerDefaults: {\n samplingRatio: 1.0,\n preDuration: 300,\n postDuration: 5,\n },\n triggers: [\n {\n type: 'occurrence',\n level: ['error', 'critical'],\n },\n ],\n\n debug: {\n logErrors: true, // Whether to log errors emitted by rrweb.\n logEmits: false, // Whether to log emitted events\n },\n\n // Recording options\n inlineStylesheet: true, // Whether to inline stylesheets to improve replay accuracy\n inlineImages: false, // Whether to record the image content\n collectFonts: true, // Whether to collect fonts in the website\n\n // Privacy options\n // Fine-grained control over which input types to mask\n // By default only password inputs are masked if maskInputs is true\n maskInputOptions: {\n password: true,\n email: false,\n tel: false,\n text: false,\n color: false,\n date: false,\n 'datetime-local': false,\n month: false,\n number: false,\n range: false,\n search: false,\n time: false,\n url: false,\n week: false,\n },\n\n // Mask all input values\n maskAllInputs: false,\n\n // Class names to block, mask, or ignore the content of elements.\n blockClass: 'rb-block',\n maskTextClass: 'rb-mask',\n ignoreClass: 'rb-ignore',\n\n // Remove unnecessary parts of the DOM\n // By default all removable elements are removed\n slimDOMOptions: {\n script: true, // Remove script elements\n comment: true, // Remove comments\n headFavicon: true, // Remove favicons in the head\n headWhitespace: true, // Remove whitespace in head\n headMetaDescKeywords: true, // Remove meta description and keywords\n headMetaSocial: true, // Remove social media meta tags\n headMetaRobots: true, // Remove robots meta directives\n headMetaHttpEquiv: true, // Remove http-equiv meta directives\n headMetaAuthorship: true, // Remove authorship meta directives\n headMetaVerification: true, // Remove verification meta directives\n },\n\n // Custom callbacks for advanced use cases\n // These are undefined by default and can be set programmatically\n // maskInputFn: undefined, // Custom function to mask input values\n // maskTextFn: undefined, // Custom function to mask text content\n // errorHandler: undefined, // Custom error handler for recording errors\n\n // Plugin system\n // plugins: [] // List of plugins to use (must be set programmatically)\n};\n","/**\n * Default tracing options\n */\nexport default {\n enabled: false,\n endpoint: 'api.rollbar.com/api/1/session/',\n};\n","import { hasOwn } from '../utility.js';\n\n/*\n * headers - Detect when fetch Headers are undefined and use a partial polyfill.\n *\n * A full polyfill is not used in order to keep package size as small as possible.\n * Since this is only used internally and is not added to the window object,\n * the full interface doesn't need to be supported.\n *\n * This implementation is modified from whatwg-fetch:\n * https://github.com/github/fetch\n */\nfunction headers(headers) {\n if (typeof Headers === 'undefined') {\n return new FetchHeaders(headers);\n }\n\n return new Headers(headers);\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n return name.toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value;\n}\n\nfunction iteratorFor(items) {\n var iterator = {\n next: function () {\n var value = items.shift();\n return { done: value === undefined, value: value };\n },\n };\n\n return iterator;\n}\n\nfunction FetchHeaders(headers) {\n this.map = {};\n\n if (headers instanceof FetchHeaders) {\n headers.forEach(function (value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function (header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function (name) {\n this.append(name, headers[name]);\n }, this);\n }\n}\n\nFetchHeaders.prototype.append = function (name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n};\n\nFetchHeaders.prototype.get = function (name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null;\n};\n\nFetchHeaders.prototype.has = function (name) {\n return hasOwn(this.map, normalizeName(name));\n};\n\nFetchHeaders.prototype.forEach = function (callback, thisArg) {\n for (var name in this.map) {\n if (hasOwn(this.map, name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n};\n\nFetchHeaders.prototype.entries = function () {\n var items = [];\n this.forEach(function (value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items);\n};\n\nexport default headers;\n","function replace(obj, name, replacement, replacements, type) {\n var orig = obj[name];\n obj[name] = replacement(orig);\n if (replacements) {\n replacements[type].push([obj, name, orig]);\n }\n}\n\nexport default replace;\n","function getElementType(e) {\n return (e.getAttribute('type') || '').toLowerCase();\n}\n\nfunction isDescribedElement(element, type, subtypes) {\n if (element.tagName.toLowerCase() !== type.toLowerCase()) {\n return false;\n }\n if (!subtypes) {\n return true;\n }\n const elementType = getElementType(element);\n for (const subtype of subtypes) {\n if (subtype === elementType) {\n return true;\n }\n }\n return false;\n}\n\nfunction getElementFromEvent(evt, doc) {\n if (evt.target) {\n return evt.target;\n }\n if (doc && doc.elementFromPoint) {\n return doc.elementFromPoint(evt.clientX, evt.clientY);\n }\n return undefined;\n}\n\nfunction treeToArray(elem) {\n var MAX_HEIGHT = 5;\n var out = [];\n var nextDescription;\n for (var height = 0; elem && height < MAX_HEIGHT; height++) {\n nextDescription = describeElement(elem);\n if (!nextDescription || nextDescription.tagName === 'html') {\n break;\n }\n out.unshift(nextDescription);\n elem = elem.parentNode;\n }\n return out;\n}\n\nfunction elementArrayToString(a) {\n var MAX_LENGTH = 80;\n var separator = ' > ',\n separatorLength = separator.length;\n var out = [],\n len = 0,\n nextStr,\n totalLength;\n\n for (var i = a.length - 1; i >= 0; i--) {\n nextStr = descriptionToString(a[i]);\n totalLength = len + out.length * separatorLength + nextStr.length;\n if (i < a.length - 1 && totalLength >= MAX_LENGTH + 3) {\n out.unshift('...');\n break;\n }\n out.unshift(nextStr);\n len += nextStr.length;\n }\n return out.join(separator);\n}\n\nfunction elementString(elem) {\n return elementArrayToString(treeToArray(elem));\n}\n\nfunction descriptionToString(desc) {\n if (!desc || !desc.tagName) {\n return '';\n }\n var out = [desc.tagName];\n if (desc.id) {\n out.push('#' + desc.id);\n }\n if (desc.classes) {\n out.push('.' + desc.classes.join('.'));\n }\n for (const attribute of desc.attributes) {\n out.push('[' + attribute.key + '=\"' + attribute.value + '\"]');\n }\n\n return out.join('');\n}\n\n/**\n * Input: a dom element\n * Output: null if tagName is falsey or input is falsey, else\n * {\n * tagName: String,\n * id: String | undefined,\n * classes: [String] | undefined,\n * attributes: [\n * {\n * key: OneOf(type, name, title, alt),\n * value: String\n * }\n * ]\n * }\n */\nfunction describeElement(elem) {\n if (!elem || !elem.tagName) {\n return null;\n }\n var out = {},\n className;\n out.tagName = elem.tagName.toLowerCase();\n if (elem.id) {\n out.id = elem.id;\n }\n className = elem.className;\n if (className && typeof className === 'string') {\n out.classes = className.split(/\\s+/);\n }\n var attributes = ['type', 'name', 'title', 'alt'];\n out.attributes = [];\n for (const attribute of attributes) {\n const attr = elem.getAttribute(attribute);\n if (attr) {\n out.attributes.push({ key: attribute, value: attr });\n }\n }\n return out;\n}\n\n/*\n * Detects if the given element matches any of the given class names (string or regex),\n * or CSS selectors.\n * @param {HTMLElement} element - The DOM element to check.\n * @param {Array} classes - An array of class names (string or regex) to match against.\n * @param {Array} selectors - An array of CSS selectors to match against.\n * @return {boolean} - True if the element matches any of the classes or selectors, false otherwise.\n */\nfunction isMatchingElement(element, classes, selectors) {\n try {\n for (const cls of classes) {\n if (typeof cls === 'string') {\n if (element.classList.contains(cls)) {\n return true;\n }\n } else {\n for (const c of element.classList) {\n if (cls.test(c)) {\n return true;\n }\n }\n }\n }\n for (const sel of selectors) {\n if (element.matches(sel)) {\n return true;\n }\n }\n } catch (_e) {\n // ignore errors from invalid arguments\n }\n return false;\n}\n\nexport {\n describeElement,\n descriptionToString,\n elementArrayToString,\n elementString,\n treeToArray,\n getElementFromEvent,\n isDescribedElement,\n getElementType,\n isMatchingElement,\n};\n","/* eslint-disable @typescript-eslint/no-this-alias */\n// TODO(matux): refactor to remove no-this-alias disable\n\nimport logger from '../logger.js';\nimport scrub from '../scrub.js';\nimport headers from '../utility/headers.js';\nimport replace from '../utility/replace.js';\nimport * as _ from '../utility.js';\n\nimport * as domUtil from './domUtility.js';\nimport * as urlparser from './url.js';\n\nconst defaults = {\n network: true,\n networkResponseHeaders: false,\n networkResponseBody: false,\n networkRequestHeaders: false,\n networkRequestBody: false,\n networkErrorOnHttp5xx: false,\n networkErrorOnHttp4xx: false,\n networkErrorOnHttp0: false,\n log: true,\n dom: true,\n navigation: true,\n connectivity: true,\n contentSecurityPolicy: true,\n errorOnContentSecurityPolicy: false,\n};\n\nfunction restore(replacements, type) {\n let b;\n while (replacements[type].length) {\n b = replacements[type].shift();\n b[0][b[1]] = b[2];\n }\n}\n\nfunction nameFromDescription(description) {\n if (!description || !description.attributes) {\n return null;\n }\n const attrs = description.attributes;\n for (const a of attrs) {\n if (a.key === 'name') {\n return a.value;\n }\n }\n return null;\n}\n\nfunction defaultValueScrubber(scrubFields) {\n const patterns = [];\n for (const field of scrubFields) {\n patterns.push(new RegExp(field, 'i'));\n }\n return function (description) {\n const name = nameFromDescription(description);\n if (!name) {\n return false;\n }\n for (const p of patterns) {\n if (p.test(name)) {\n return true;\n }\n }\n return false;\n };\n}\n\nclass Instrumenter {\n constructor(options, telemeter, rollbar, _window, _document) {\n this.options = options;\n let autoInstrument = options.autoInstrument;\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.telemeter = telemeter;\n this.rollbar = rollbar;\n this.diagnostic = rollbar.client.notifier.diagnostic;\n this._window = _window || {};\n this._document = _document || {};\n this.replacements = {\n network: [],\n log: [],\n navigation: [],\n connectivity: [],\n };\n this.eventRemovers = {\n dom: [],\n connectivity: [],\n contentsecuritypolicy: [],\n };\n\n this._location = this._window.location;\n this._lastHref = this._location && this._location.href;\n }\n\n configureScrubbing() {\n const options = this.options;\n this.scrubTelemetryInputs = Boolean(\n options.scrubTelemetryInputs ?? options.replay?.maskAllInputs,\n );\n this.telemetryScrubber = options.telemetryScrubber;\n this.defaultValueScrubber = defaultValueScrubber(options.scrubFields);\n this.maskInputFn = options.replay?.maskInputFn;\n this.maskInputOptions = options.replay?.maskInputOptions || {};\n this.scrubClasses = [\n options.replay?.blockClass,\n options.replay?.ignoreClass,\n options.replay?.maskTextClass,\n ].filter(Boolean);\n this.scrubSelectors = [\n options.replay?.blockSelector,\n options.replay?.ignoreSelector,\n options.replay?.maskTextSelector,\n ].filter(Boolean);\n }\n\n configure(options) {\n this.options = _.merge(this.options, options);\n let autoInstrument = options.autoInstrument;\n const oldSettings = _.merge(this.autoInstrument);\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.instrument(oldSettings);\n }\n\n // eslint-disable-next-line complexity\n instrument(oldSettings) {\n if (this.autoInstrument.network && !(oldSettings && oldSettings.network)) {\n this.instrumentNetwork();\n } else if (\n !this.autoInstrument.network &&\n oldSettings &&\n oldSettings.network\n ) {\n this.deinstrumentNetwork();\n }\n\n if (this.autoInstrument.log && !(oldSettings && oldSettings.log)) {\n this.instrumentConsole();\n } else if (!this.autoInstrument.log && oldSettings && oldSettings.log) {\n this.deinstrumentConsole();\n }\n\n if (this.autoInstrument.dom && !(oldSettings && oldSettings.dom)) {\n this.instrumentDom();\n } else if (!this.autoInstrument.dom && oldSettings && oldSettings.dom) {\n this.deinstrumentDom();\n }\n\n if (\n this.autoInstrument.navigation &&\n !(oldSettings && oldSettings.navigation)\n ) {\n this.instrumentNavigation();\n } else if (\n !this.autoInstrument.navigation &&\n oldSettings &&\n oldSettings.navigation\n ) {\n this.deinstrumentNavigation();\n }\n\n if (\n this.autoInstrument.connectivity &&\n !(oldSettings && oldSettings.connectivity)\n ) {\n this.instrumentConnectivity();\n } else if (\n !this.autoInstrument.connectivity &&\n oldSettings &&\n oldSettings.connectivity\n ) {\n this.deinstrumentConnectivity();\n }\n\n if (\n this.autoInstrument.contentSecurityPolicy &&\n !(oldSettings && oldSettings.contentSecurityPolicy)\n ) {\n this.instrumentContentSecurityPolicy();\n } else if (\n !this.autoInstrument.contentSecurityPolicy &&\n oldSettings &&\n oldSettings.contentSecurityPolicy\n ) {\n this.deinstrumentContentSecurityPolicy();\n }\n }\n\n deinstrumentNetwork() {\n restore(this.replacements, 'network');\n }\n\n instrumentNetwork() {\n const self = this;\n\n function wrapProp(prop, xhr) {\n if (prop in xhr && _.isFunction(xhr[prop])) {\n replace(xhr, prop, function (orig) {\n return self.rollbar.wrap(orig);\n });\n }\n }\n\n if ('XMLHttpRequest' in this._window) {\n const xhrp = this._window.XMLHttpRequest.prototype;\n replace(\n xhrp,\n 'open',\n function (orig) {\n return function (method, url) {\n const isUrlObject = _isUrlObject(url);\n if (_.isType(url, 'string') || isUrlObject) {\n url = isUrlObject ? url.toString() : url;\n if (this.__rollbar_xhr) {\n this.__rollbar_xhr.method = method;\n this.__rollbar_xhr.url = url;\n this.__rollbar_xhr.status_code = null;\n this.__rollbar_xhr.start_time_ms = _.now();\n this.__rollbar_xhr.end_time_ms = null;\n } else {\n this.__rollbar_xhr = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'setRequestHeader',\n function (orig) {\n return function (header, value) {\n // If xhr.open is async, __rollbar_xhr may not be initialized yet.\n if (!this.__rollbar_xhr) {\n this.__rollbar_xhr = {};\n }\n if (_.isType(header, 'string') && _.isType(value, 'string')) {\n if (self.autoInstrument.networkRequestHeaders) {\n if (!this.__rollbar_xhr.request_headers) {\n this.__rollbar_xhr.request_headers = {};\n }\n this.__rollbar_xhr.request_headers[header] = value;\n }\n // We want the content type even if request header telemetry is off.\n if (header.toLowerCase() === 'content-type') {\n this.__rollbar_xhr.request_content_type = value;\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'send',\n function (orig) {\n return function (data) {\n const xhr = this;\n\n function onreadystatechangeHandler() {\n if (xhr.__rollbar_xhr) {\n if (xhr.__rollbar_xhr.status_code === null) {\n xhr.__rollbar_xhr.status_code = 0;\n if (self.autoInstrument.networkRequestBody) {\n xhr.__rollbar_xhr.request = data;\n }\n xhr.__rollbar_event = self.captureNetwork(\n xhr.__rollbar_xhr,\n 'xhr',\n undefined,\n );\n }\n if (xhr.readyState < 2) {\n xhr.__rollbar_xhr.start_time_ms = _.now();\n }\n if (xhr.readyState > 3) {\n const end_time_ms = _.now();\n xhr.__rollbar_xhr.end_time_ms = end_time_ms;\n\n let headers = null;\n xhr.__rollbar_xhr.response_content_type =\n xhr.getResponseHeader('Content-Type');\n if (self.autoInstrument.networkResponseHeaders) {\n const headersConfig =\n self.autoInstrument.networkResponseHeaders;\n headers = {};\n try {\n let header;\n if (headersConfig === true) {\n const allHeaders = xhr.getAllResponseHeaders();\n if (allHeaders) {\n const arr = allHeaders.trim().split(/[\\r\\n]+/);\n let parts, value;\n for (const h of arr) {\n parts = h.split(': ');\n header = parts.shift();\n value = parts.join(': ');\n headers[header] = value;\n }\n }\n } else {\n for (const h of headersConfig) {\n headers[h] = xhr.getResponseHeader(h);\n }\n }\n } catch (_e) {\n /* we ignore the errors here that could come from different\n * browser issues with the xhr methods */\n }\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n try {\n body = xhr.responseText;\n } catch (_e) {\n /* ignore errors from reading responseText */\n }\n }\n let response = null;\n if (body || headers) {\n response = {};\n if (body) {\n if (\n self.isJsonContentType(\n xhr.__rollbar_xhr.response_content_type,\n )\n ) {\n response.body = self.scrubJson(body);\n } else {\n response.body = body;\n }\n }\n if (headers) {\n response.headers = headers;\n }\n }\n if (response) {\n xhr.__rollbar_xhr.response = response;\n }\n try {\n let code = xhr.status;\n code = code === 1223 ? 204 : code;\n xhr.__rollbar_xhr.status_code = code;\n self.addOtelNetworkResponse(\n xhr.__rollbar_event,\n end_time_ms,\n code,\n );\n xhr.__rollbar_event.level =\n self.telemeter.levelFromStatus(code);\n self.errorOnHttpStatus(xhr.__rollbar_xhr);\n } catch (_e) {\n /* ignore possible exception from xhr.status */\n }\n }\n }\n }\n\n wrapProp('onload', xhr);\n wrapProp('onerror', xhr);\n wrapProp('onprogress', xhr);\n\n if (\n 'onreadystatechange' in xhr &&\n _.isFunction(xhr.onreadystatechange)\n ) {\n replace(xhr, 'onreadystatechange', function (orig) {\n return self.rollbar.wrap(\n orig,\n undefined,\n onreadystatechangeHandler,\n );\n });\n } else {\n xhr.onreadystatechange = onreadystatechangeHandler;\n }\n if (xhr.__rollbar_xhr && self.trackHttpErrors()) {\n xhr.__rollbar_xhr.stack = new Error().stack;\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n }\n\n if ('fetch' in this._window) {\n replace(\n this._window,\n 'fetch',\n function (orig) {\n return function (_fn, _t) {\n const args = [...arguments];\n const input = args[0];\n let method = 'GET';\n let url;\n const isUrlObject = _isUrlObject(input);\n if (_.isType(input, 'string') || isUrlObject) {\n url = isUrlObject ? input.toString() : input;\n } else if (input) {\n url = input.url;\n if (input.method) {\n method = input.method;\n }\n }\n if (args[1] && args[1].method) {\n method = args[1].method;\n }\n const metadata = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n if (args[1] && args[1].headers) {\n // Argument may be a Headers object, or plain object. Ensure here that\n // we are working with a Headers object with case-insensitive keys.\n const reqHeaders = headers(args[1].headers);\n\n metadata.request_content_type = reqHeaders.get('Content-Type');\n\n if (self.autoInstrument.networkRequestHeaders) {\n metadata.request_headers = self.fetchHeaders(\n reqHeaders,\n self.autoInstrument.networkRequestHeaders,\n );\n }\n }\n\n if (self.autoInstrument.networkRequestBody) {\n if (args[1] && args[1].body) {\n metadata.request = args[1].body;\n } else if (\n args[0] &&\n !_.isType(args[0], 'string') &&\n args[0].body\n ) {\n metadata.request = args[0].body;\n }\n }\n const telemetryEvent = self.captureNetwork(\n metadata,\n 'fetch',\n undefined,\n );\n if (self.trackHttpErrors()) {\n metadata.stack = new Error().stack;\n }\n\n // Start our handler before returning the promise. This allows resp.clone()\n // to execute before other handlers touch the response.\n return orig.apply(this, args).then(function (resp) {\n const end_time_ms = _.now();\n metadata.end_time_ms = end_time_ms;\n metadata.status_code = resp.status;\n self.addOtelNetworkResponse(\n telemetryEvent,\n end_time_ms,\n resp.status,\n );\n\n metadata.response_content_type = resp.headers.get('Content-Type');\n let headers = null;\n if (self.autoInstrument.networkResponseHeaders) {\n headers = self.fetchHeaders(\n resp.headers,\n self.autoInstrument.networkResponseHeaders,\n );\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n if (typeof resp.text === 'function') {\n // Response.text() is not implemented on some platforms\n // The response must be cloned to prevent reading (and locking) the original stream.\n // This must be done before other handlers touch the response.\n body = resp.clone().text(); //returns a Promise\n }\n }\n if (headers || body) {\n metadata.response = {};\n if (body) {\n // Test to ensure body is a Promise, which it should always be.\n if (typeof body.then === 'function') {\n body.then(function (text) {\n if (\n text &&\n self.isJsonContentType(metadata.response_content_type)\n ) {\n metadata.response.body = self.scrubJson(text);\n } else {\n metadata.response.body = text;\n }\n });\n } else {\n metadata.response.body = body;\n }\n }\n if (headers) {\n metadata.response.headers = headers;\n }\n }\n self.errorOnHttpStatus(metadata);\n return resp;\n });\n };\n },\n this.replacements,\n 'network',\n );\n }\n }\n\n captureNetwork(metadata, subtype, rollbarUUID) {\n if (\n metadata.request &&\n this.isJsonContentType(metadata.request_content_type)\n ) {\n metadata.request = this.scrubJson(metadata.request);\n }\n return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID);\n }\n\n isJsonContentType(contentType) {\n return contentType &&\n _.isType(contentType, 'string') &&\n contentType.toLowerCase().includes('json')\n ? true\n : false;\n }\n\n addOtelNetworkResponse(event, endTimeMs, statusCode) {\n if (event.otelAttributes) {\n event.otelAttributes['response.timeUnixNano'] = (\n endTimeMs * 1e6\n ).toString();\n event.otelAttributes.statusCode = statusCode;\n }\n }\n\n scrubJson(json) {\n return JSON.stringify(scrub(JSON.parse(json), this.options.scrubFields));\n }\n\n fetchHeaders(inHeaders, headersConfig) {\n const outHeaders = {};\n try {\n if (headersConfig === true) {\n if (typeof inHeaders.entries === 'function') {\n // Headers.entries() is not implemented in IE\n const allHeaders = inHeaders.entries();\n let currentHeader = allHeaders.next();\n while (!currentHeader.done) {\n outHeaders[currentHeader.value[0]] = currentHeader.value[1];\n currentHeader = allHeaders.next();\n }\n }\n } else {\n for (const h of headersConfig) {\n outHeaders[h] = inHeaders.get(h);\n }\n }\n } catch (_e) {\n /* ignore probable IE errors */\n }\n return outHeaders;\n }\n\n trackHttpErrors() {\n return (\n this.autoInstrument.networkErrorOnHttp5xx ||\n this.autoInstrument.networkErrorOnHttp4xx ||\n this.autoInstrument.networkErrorOnHttp0\n );\n }\n\n errorOnHttpStatus(metadata) {\n const status = metadata.status_code;\n\n if (\n (status >= 500 && this.autoInstrument.networkErrorOnHttp5xx) ||\n (status >= 400 && this.autoInstrument.networkErrorOnHttp4xx) ||\n (status === 0 && this.autoInstrument.networkErrorOnHttp0)\n ) {\n const error = new Error('HTTP request failed with Status ' + status);\n error.stack = metadata.stack;\n this.rollbar.error(error, { skipFrames: 1 });\n }\n }\n\n deinstrumentConsole() {\n let b;\n while (this.replacements['log'].length) {\n b = this.replacements['log'].shift();\n this._window.console[b[0]] = b[1];\n }\n }\n\n instrumentConsole() {\n if (!this._window?.console?.log) {\n return;\n }\n\n const self = this;\n const c = this._window.console;\n\n function wrapConsole(method) {\n // eslint-disable-next-line strict\n 'use strict'; // See https://github.com/rollbar/rollbar.js/pull/778\n\n const orig = c[method];\n const origConsole = c;\n const level = method === 'warn' ? 'warning' : method;\n c[method] = function () {\n const args = Array.prototype.slice.call(arguments);\n const message = _.formatArgsAsString(args);\n self.telemeter.captureLog(message, level, null, _.now());\n if (orig) {\n Function.prototype.apply.call(orig, origConsole, args);\n }\n };\n self.replacements['log'].push([method, orig]);\n }\n const methods = ['debug', 'info', 'warn', 'error', 'log'];\n try {\n for (const m of methods) {\n wrapConsole(m);\n }\n } catch (e) {\n this.diagnostic.instrumentConsole = { error: e.message };\n }\n }\n\n deinstrumentDom() {\n this.removeListeners('dom');\n }\n\n instrumentDom() {\n this.addListener(\n 'dom',\n this._window,\n ['click', 'dblclick', 'contextmenu'],\n (e) => this.handleEvent('click', e),\n );\n this.addListener(\n 'dom',\n this._window,\n ['dragstart', 'dragend', 'dragenter', 'dragleave', 'drop'],\n (e) => this.handleEvent('dragdrop', e),\n );\n this.addListener('dom', this._window, ['blur', 'focus'], (e) =>\n this.handleEvent('focus', e),\n );\n this.addListener('dom', this._window, ['submit', 'invalid'], (e) =>\n this.handleEvent('form', e),\n );\n this.addListener('dom', this._window, ['input', 'change'], (e) =>\n this.handleEvent('input', e),\n );\n this.addListener('dom', this._window, ['resize'], (e) =>\n this.handleEvent('resize', e),\n );\n this.addListener('dom', this._document, ['DOMContentLoaded'], (e) =>\n this.handleEvent('contentLoaded', e),\n );\n }\n\n handleEvent(name, evt) {\n try {\n return {\n click: this.handleClick,\n dragdrop: this.handleDrag,\n focus: this.handleFocus,\n form: this.handleForm,\n input: this.handleInput,\n resize: this.handleResize,\n contentLoaded: this.handleContentLoaded,\n }[name].call(this, evt);\n } catch (exc) {\n logger.log(`${name} handler error`, evt, exc, exc.stack);\n }\n }\n\n handleContentLoaded(_evt) {\n this.rollbar.triggerReplay({\n type: 'navigation',\n path: new URL(this._location.href).pathname,\n });\n }\n\n handleClick(evt) {\n const tagName = evt.target?.tagName.toLowerCase();\n if (['input', 'select', 'textarea'].includes(tagName)) return;\n\n this.telemeter.captureClick({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n timestamp: _.now(),\n });\n }\n\n handleFocus(evt) {\n const type = evt.type;\n const element = evt.target?.window\n ? 'window'\n : domUtil.elementString(evt.target);\n\n this.telemeter.captureFocus({\n type: type,\n isSynthetic: !evt.isTrusted,\n element,\n timestamp: _.now(),\n });\n }\n\n handleForm(_evt) {\n // TODO: implement form event handling\n //const type = evt.type;\n //const elementString = evt.target?.window\n // ? 'window'\n // : domUtil.elementString(evt.target);\n }\n\n handleResize(evt) {\n const textZoomRatio = window.screen.width / window.innerWidth;\n\n this.telemeter.captureResize({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n width: window.innerWidth,\n height: window.innerHeight,\n textZoomRatio: textZoomRatio,\n timestamp: _.now(),\n });\n }\n\n handleDrag(evt) {\n const type = evt.type;\n let kinds, mediaTypes, dropEffect, effectAllowed;\n\n if (type === 'drop') {\n kinds = [];\n mediaTypes = [];\n const objs = [...evt.dataTransfer.files, ...evt.dataTransfer.items];\n for (const o of objs) {\n if (o.kind && o.type) {\n kinds.push(o.kind);\n mediaTypes.push(o.type);\n }\n }\n }\n if (['drop', 'dragstart'].includes(type)) {\n dropEffect = evt.dataTransfer?.dropEffect;\n effectAllowed = evt.dataTransfer?.effectAllowed;\n }\n\n this.telemeter.captureDragDrop({\n type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n dropEffect: dropEffect,\n effectAllowed: effectAllowed,\n kinds: JSON.stringify(kinds),\n mediaTypes: JSON.stringify(mediaTypes),\n timestamp: _.now(),\n });\n }\n\n /*\n * Applies Rollbar telemetry scrubbing options to the dom input value.\n * When replay options are present, applies those as well.\n */\n scrubInputValue(value, element, tagName, inputType) {\n const mask = '******';\n\n if (inputType === 'password') {\n return mask;\n }\n\n if (this.scrubTelemetryInputs) {\n return mask;\n } else {\n const description = domUtil.describeElement(element);\n if (this.telemetryScrubber) {\n if (this.telemetryScrubber(description)) {\n return mask;\n }\n } else if (this.defaultValueScrubber(description)) {\n return mask;\n }\n }\n\n // Apply replay options regardless of other scrubbing\n if (\n domUtil.isMatchingElement(element, this.scrubClasses, this.scrubSelectors)\n ) {\n return mask;\n }\n\n // This check is last since maskInputFn returns a modified value rather\n // than a boolean, which would cause an early return even if the value\n // was not scrubbed.\n if (\n this.maskInputOptions[tagName.toLowerCase()] ||\n this.maskInputOptions[inputType]\n ) {\n if (this.maskInputFn) {\n return this.maskInputFn(value, element);\n } else {\n return mask;\n }\n }\n\n return value;\n }\n\n /*\n * Uses the `input` event for everything except radio and checkbox inputs.\n * For those, it uses the `change` event.\n */\n handleInput(evt) {\n const type = evt.type;\n const tagName = evt.target?.tagName.toLowerCase();\n let value = evt.target?.value;\n let inputType = evt.target?.attributes?.type?.value || evt.target?.type;\n\n if (value !== undefined) {\n value = this.scrubInputValue(value, evt.target, tagName, inputType);\n }\n\n switch (type) {\n case 'input':\n if (['radio', 'checkbox'].includes(inputType)) return;\n if (['select', 'textarea'].includes(tagName)) {\n inputType = tagName;\n }\n break;\n\n case 'change':\n if (!['radio', 'checkbox'].includes(inputType)) return;\n if (inputType === 'checkbox') {\n value = evt.target?.checked;\n }\n break;\n }\n\n this.telemeter.captureInput({\n type: inputType,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n value,\n timestamp: _.now(),\n });\n }\n\n deinstrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n restore(this.replacements, 'navigation');\n }\n\n instrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n const self = this;\n replace(\n this._window,\n 'onpopstate',\n function (orig) {\n return function () {\n const current = self._location.href;\n self.handleUrlChange(self._lastHref, current);\n if (orig) {\n orig.apply(this, arguments);\n }\n };\n },\n this.replacements,\n 'navigation',\n );\n\n replace(\n this._window.history,\n 'pushState',\n function (orig) {\n return function () {\n const url = arguments.length > 2 ? arguments[2] : undefined;\n if (url) {\n self.handleUrlChange(self._lastHref, String(url));\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'navigation',\n );\n }\n\n handleUrlChange(from, to) {\n const parsedHref = urlparser.parse(this._location.href);\n const parsedTo = urlparser.parse(to);\n const parsedFrom = urlparser.parse(from);\n this._lastHref = to;\n if (\n parsedHref.protocol === parsedTo.protocol &&\n parsedHref.host === parsedTo.host\n ) {\n to = parsedTo.path + (parsedTo.hash || '');\n }\n if (\n parsedHref.protocol === parsedFrom.protocol &&\n parsedHref.host === parsedFrom.host\n ) {\n from = parsedFrom.path + (parsedFrom.hash || '');\n }\n this.telemeter.captureNavigation(from, to, null, _.now());\n this.rollbar.triggerReplay({\n type: 'navigation',\n path: to,\n });\n }\n\n deinstrumentConnectivity = function () {\n this.removeListeners('connectivity');\n };\n\n instrumentConnectivity() {\n const self = this;\n this.addListener(\n 'connectivity',\n this._window,\n ['online', 'offline'],\n (evt) => self.handleConnectivity(evt),\n );\n }\n\n handleConnectivity(evt) {\n const type = evt.type;\n\n this.telemeter.captureConnectivityChange({\n type,\n isSynthetic: !evt.isTrusted,\n timestamp: _.now(),\n });\n }\n\n handleCspEvent(cspEvent) {\n let message =\n 'Security Policy Violation: ' +\n 'blockedURI: ' +\n cspEvent.blockedURI +\n ', ' +\n 'violatedDirective: ' +\n cspEvent.violatedDirective +\n ', ' +\n 'effectiveDirective: ' +\n cspEvent.effectiveDirective +\n ', ';\n\n if (cspEvent.sourceFile) {\n message +=\n 'location: ' +\n cspEvent.sourceFile +\n ', ' +\n 'line: ' +\n cspEvent.lineNumber +\n ', ' +\n 'col: ' +\n cspEvent.columnNumber +\n ', ';\n }\n\n message += 'originalPolicy: ' + cspEvent.originalPolicy;\n\n this.telemeter.captureLog(message, 'error', null, _.now());\n this.handleCspError(message);\n }\n\n handleCspError(message) {\n if (this.autoInstrument.errorOnContentSecurityPolicy) {\n this.rollbar.error(message);\n }\n }\n\n deinstrumentContentSecurityPolicy() {\n this.removeListeners('contentsecuritypolicy');\n }\n\n instrumentContentSecurityPolicy() {\n if (!('addEventListener' in this._document)) {\n return;\n }\n\n const cspHandler = this.handleCspEvent.bind(this);\n this.addListener(\n 'contentsecuritypolicy',\n this._document,\n ['securitypolicyviolation'],\n cspHandler,\n );\n }\n\n addListener(section, obj, types, handler) {\n if (obj.addEventListener) {\n for (const t of types) {\n const options = { capture: true, passive: true };\n obj.addEventListener(t, handler, options, true);\n this.eventRemovers[section].push(function () {\n obj.removeEventListener(t, handler, options);\n });\n }\n }\n }\n\n removeListeners(section) {\n let r;\n while (this.eventRemovers[section].length) {\n r = this.eventRemovers[section].shift();\n r();\n }\n }\n}\n\nfunction _isUrlObject(input) {\n return typeof URL !== 'undefined' && input instanceof URL;\n}\n\nexport default Instrumenter;\n","import { hasOwn } from '../utility.js';\n\nfunction wrapGlobals(window, handler, shim) {\n if (!window) {\n return;\n }\n // Adapted from https://github.com/bugsnag/bugsnag-js\n var globals =\n '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'.split(\n ',',\n );\n var i, global;\n for (i = 0; i < globals.length; ++i) {\n global = globals[i];\n\n if (window[global] && window[global].prototype) {\n _extendListenerPrototype(handler, window[global].prototype, shim);\n }\n }\n}\n\nfunction _extendListenerPrototype(handler, prototype, shim) {\n if (hasOwn(prototype, 'addEventListener')) {\n var oldAddEventListener = prototype.addEventListener;\n while (\n oldAddEventListener._rollbarOldAdd &&\n oldAddEventListener.belongsToShim\n ) {\n oldAddEventListener = oldAddEventListener._rollbarOldAdd;\n }\n var addFn = function (event, callback, bubble) {\n oldAddEventListener.call(this, event, handler.wrap(callback), bubble);\n };\n addFn._rollbarOldAdd = oldAddEventListener;\n addFn.belongsToShim = shim;\n prototype.addEventListener = addFn;\n\n var oldRemoveEventListener = prototype.removeEventListener;\n while (\n oldRemoveEventListener._rollbarOldRemove &&\n oldRemoveEventListener.belongsToShim\n ) {\n oldRemoveEventListener = oldRemoveEventListener._rollbarOldRemove;\n }\n var removeFn = function (event, callback, bubble) {\n oldRemoveEventListener.call(\n this,\n event,\n (callback && callback._rollbar_wrapped) || callback,\n bubble,\n );\n };\n removeFn._rollbarOldRemove = oldRemoveEventListener;\n removeFn.belongsToShim = shim;\n prototype.removeEventListener = removeFn;\n }\n}\n\nexport default wrapGlobals;\n","import scrub from '../scrub.js';\nimport Telemeter from '../telemetry.js';\nimport Tracing from '../tracing/tracing.js';\nimport truncation from '../truncation.js';\n\nimport Rollbar from './core.js';\nimport Instrumenter from './telemetry.js';\nimport wrapGlobals from './wrapGlobals.js';\n\nRollbar.setComponents({\n telemeter: Telemeter,\n instrumenter: Instrumenter,\n wrapGlobals: wrapGlobals,\n scrub: scrub,\n truncation: truncation,\n tracing: Tracing,\n});\n\nexport default Rollbar;\n","import rollbar from '../rollbar.js';\n\nvar options = (typeof window !== 'undefined') && window._rollbarConfig;\nvar alias = options && options.globalAlias || 'Rollbar';\nvar shimRunning = (typeof window !== 'undefined') && window[alias] && typeof window[alias].shimId === 'function' && window[alias].shimId() !== undefined;\n\nif ((typeof window !== 'undefined') && !window._rollbarStartTime) {\n window._rollbarStartTime = (new Date()).getTime();\n}\n\nif (!shimRunning && options) {\n var Rollbar = new rollbar(options);\n window[alias] = Rollbar;\n} else if (typeof window !== 'undefined') {\n window.rollbar = rollbar;\n window._rollbarDidLoad = true;\n} else if (typeof self !== 'undefined') {\n self.rollbar = rollbar;\n self._rollbarDidLoad = true;\n}\n\nexport default rollbar;\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","isType","x","t","typeName","name","_typeof","Error","toString","match","toLowerCase","isFunction","f","isObject","hasOwn","isFiniteNumber","n","Number","isFinite","isError","e","redact","LEVELS","debug","info","warning","error","critical","sanitizeUrl","url","baseUrlParts","str","parseUriOptions","m","parser","strictMode","exec","uri","i","l","length","q","replace","$0","$1","$2","parseUri","anchor","source","query","strict","loose","formatUrl","u","protocol","port","hostname","result","path","stringify","backup","JSON","jsonError","backupError","jsonParse","s","parse","makeUnhandledStackInfo","message","lineno","colno","mode","backupMessage","errorParser","location","line","column","func","guessFunctionName","context","gatherContext","href","document","useragent","window","navigator","userAgent","String","stack","wrapCallback","logger","err","resp","nonCircularClone","clone","seen","newSeen","includes","slice","push","createItem","args","notifier","requestKeys","lambdaContext","custom","callback","request","arg","extraArgs","argTypes","typ","DOMException","j","len","undefined","d","item","timestamp","now","diagnostic","uuid","c","r","Math","random","floor","data","level","skipFrames","setCustomItemKeys","_originalArgs","original_arg_types","TELEMETRY_TYPES","TELEMETRY_LEVELS","arrayIncludes","arr","val","_step2","_iterator2","_createForOfIteratorHelper","done","addItemAttributes","itemData","attributes","_step3","_iterator3","a","keys","split","_e","set","setPrototypeOf","temp","replacement","Date","handleOptions","current","input","payload","merge","options","hostWhiteList","hostSafeList","log","hostBlackList","hostBlockList","updateDeprecatedOptions","overwriteScrubFields","scrubFields","concat","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","constructor","src","copy","create","arguments","k","v","seenIndex","isObj","_","isArray","mapped","indexOf","same","scrubPath","last","_step4","_iterator4","entries","_step4$value","_slicedToArray","index","scrubPaths","_step","_iterator","paramRes","_step5","ret","_iterator5","pat","RegExp","_getScrubFieldRegexs","queryRes","_step6","_iterator6","_getScrubQueryParamRegexs","redactQueryParam","dummy0","paramPart","traverse","scrubber","tmpV","test","valScrubber","regex","paramScrubber","MAX_EVENTS","fromMillis","millis","trunc","round","Telemeter","tracing","_this$tracing","_classCallCheck","this","queue","maxTelemetryEvents","maxQueueSize","max","min","telemetrySpan","startSpan","oldOptions","newMaxEvents","deleteCount","splice","events","Array","filterTelemetry","filter","type","map","_ref","otelAttributes","event","_objectWithoutProperties","_excluded","end","metadata","rollbarUUID","getLevel","timestamp_ms","body","_exc","capture","_this$telemetrySpan","addEvent","_this$telemetrySpan2","_objectSpread","subtype","requestData","_metadata$response","_metadata$response2","_this$telemetrySpan3","levelFromStatus","status_code","endTimeNano","end_time_ms","method","statusCode","request_headers","response","headers","requestBody","responseBody","start_time_ms","element","checked","_ref2","_this$telemetrySpan4","isSynthetic","endTimeUnixNano","_getRepeatedEvent","_updateRepeatedEvent","_ref3","_this$telemetrySpan5","lastEvent","_lastEvent","target","duration","height","width","textZoomRatio","count","rate","list","_ref4","_this$telemetrySpan6","_ref5","_this$telemetrySpan7","_ref6","_this$telemetrySpan8","dropEffect","effectAllowed","kinds","mediaTypes","from","to","_this$telemetrySpan9","ts","getTime","_ref7","_this$telemetrySpan0","includeItemsInTelemetry","captureError","captureLog","shift","manual","Context","parentContext","_currentContext","Map","self","delete","ROOT_CONTEXT","ContextManager","currentContext","previousContext","fn","thisArg","enterContext","_len","_key","apply","exitContext","add","b","toMillis","hrtime","toNanos","performance","timeOrigin","isHrTime","SpanExporter","api","spans","_resultCallback","spanExportQueue","_toConsumableArray","_this","resourceSpans","resource","scopeMap","span","scopeKey","instrumentationScope","version","has","scope","_transformSpan","_transformResource","scopeSpans","values","scopeData","_transformInstrumentationScope","postSpans","_this2","transformAttributes","_transformAnyValue","traceId","spanContext","spanId","parentSpanId","kind","startTimeUnixNano","startTime","endTime","timeUnixNano","time","_this3","_this4","attr","_this5","stringValue","isInteger","intValue","doubleValue","boolValue","arrayValue","kvlistValue","gen","randomBytes","Uint8Array","crypto","getRandomValues","byte","padStart","join","SESSION_KEY","Session","_defineProperty","session","_attributes","attrs","getSession","createSession","initSessionAttributes","serializedSession","sessionStorage","getItem","_unused","id","createdAt","setSession","sessionString","setItem","_unused2","user","setAttributes","email","username","_navigator$userAgentD","_navigator$userAgentD2","_navigator$userAgentD3","userAgentData","brands","language","mobile","platform","levels","warn","disable","_len2","_key2","_len3","_key3","_len4","_key4","_len5","_key5","init","logLevel","unshift","console","SpanProcessor","exporter","pendingSpans","transforms","userTransform","bind","transformFn","transformSpan","transform","_parentContext","applyTransforms","export","Span","usePerformance","initReadableSpan","spanProcessor","onStart","_options$session","status","code","links","ended","droppedAttributesCount","droppedEventsCount","droppedLinksCount","_i","_Object$entries","_Object$entries$_i","setAttribute","onEnd","Tracer","_this$tracing$resourc","_options$resource","_this$tracing$session","contextManager","active","parentSpan","getSpan","parentSpanContext","traceState","traceFlags","SPAN_KEY","for","Tracing","gWindow","createTracer","_this$options$payload","_this$options$payload2","environment","bytes","tracer","addTransform","getValue","setValue","_this$contextManager","with","setSpan","raw","jsonBackup","selectFrames","frames","range","truncateFrames","trace_chain","trace","maybeTruncateValue","truncateStrings","truncator","truncateTraceData","traceData","exception","description","minBody","chain","_step2$value","needsTruncation","maxSize","string","charCodeAt","truncate","strategy","results","strategies","buildPayload","contextResult","substr","getTransportFromOptions","defaults","search","timeout","transport","defaultTransport","fetch","XMLHttpRequest","detectTransport","proxy","endpoint","opts","pathname","transportOptions","transportAPI","host","iterator","Generator","_regeneratorDefine2","p","y","G","TypeError","return","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","__proto__","displayName","_regenerator","w","_invoke","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_defineProperties","_toPropertyKey","toPrimitive","_toPrimitive","defaultOptions","OTLPDefaultOptions","Api","urllib","truncation","accessToken","_getTransport","OTLPTransportOptions","_getOTLPTransport","reject","post","helpers","setTimeout","_callee","_args","_context","_postPromise","_postSpans","_next","_throw","_x","stringifyResult","jsonPayload","postJsonPayload","_options$tracing","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","stacktrace","lineRE","lines","file","applySlice","parseOpera9","filtered","argsRaw","tokens","locationParts","extractLocation","pop","functionCall","functionName","function","col","parseOpera11","parseOpera10","parseOpera","parseV8OrIeString","parseV8OrIE","parseFFOrSafariString","parseFFOrSafari","allowEmpty","urlLike","parts","sanitizedLine","functionNameRegex","matches","stackframesLiteToStackframes","liteStackframes","liteStackframe","fileName","lineNumber","columnNumber","ERR_CLASS_REGEXP","Frame","stackFrame","_stackFrame","Stack","skip","parserStack","parse$1","parseErrorStack","getStack","_mostSpecificErrorName","rawStack","rawException","constructorName","guessErrorClass","errMsg","errClassMatch","errClass","nested","cause","traceChain","checkLevel","settings","levelVal","reportLevel","matchFrames","block","filename","listLength","frameLength","urlIsOnAList","safeOrBlock","traces","tracesLength","listName","messageIsIgnored","ignoredMessages","rIgnoredMessage","messages","messagesFromItem","Notifier","_this$queue","configure","enabled","addPendingItem","originalError","_applyTransforms","removePendingItem","addItem","transformIndex","transformsLength","next","Queue","rateLimiter","replay","predicates","pendingItems","pendingRequests","retryQueue","retryHandle","waitCallback","waitIntervalID","_this$api","predicate","idx","originalItem","predicateResult","_applyPredicates","stop","_maybeLog","transmit","replayId","_makeApiRequest","_dequeuePendingRequest","sendOrDiscardReplay","_this$replay","discard","_maybeCallWait","clearInterval","setInterval","rateLimitResponse","shouldSend","postItem","_maybeRetry","shouldRetry","retryInterval","RETRIABLE_ERRORS","maxRetries","retries","_retryApiRequest","retryObject","verbose","RateLimiter","counter","perMinCounter","platformOptions","configureGlobal","_createClass","maxItems","itemsPerMinute","globalSettings","elapsedTime","globalRateLimit","globalRateLimitPerMin","checkRate","shouldSendValue","underGlobalLimit","perMinute","limit","ignoreRateLimit","limitPerMin","errorResult","msg","extra","framework","rateLimitPayload","Rollbar","telemeter","setPlatformOptions","validateTracer","_configuredOptions","setStackTraceLimit","lastError","lastErrorHash","stackTraceLimit","global","payloadData","_defaultLogLevel","_log","wait","captureEvent","captureDomContentLoaded","captureLoad","buildJsonPayload","sendJsonPayload","defaultLevel","ignoreDuplicateErrors","_sameAsLastError","_addItemAttributes","_addTracingInfo","_captureRollbarItem","telemetryEvents","copyEvents","_this$tracing2","sessionId","_isUncaught","itemHash","generateItemHash","toSpanId","toTraceId","validateSpan","setTag","opentracingSpanId","opentracingTraceId","opentracing_span_id","opentracing_trace_id","itemToPayload","addPayloadOptions","payloadOptions","addTelemetryData","addMessageWithError","tracePath","newItem","promisedItem","addConfigToPayload","sendConfig","addFunctionOption","addConfiguredOptions","configuredOptions","configured_options","addDiagnosticKeys","client","is_anonymous","is_uncaught","raw_error","constructor_name","failed","checkIgnore","handleDomException","handleItemWithError","stackInfo","_savedStackTrace","addErrorContext","errors","contextAdded","rollbarContext","error_context","e2","ensureItemHasSomethingToSay","addBaseInfo","server","addBody","traceChainLength","buildTrace","addBodyTraceChain","stackFromItem","guess","className","errorClass","addBodyMessage","addBodyTrace","_unhandledStackInfo","class","frame","pre","contextLength","mid","sendFrameUrl","endsWith","reverse","controller","timeoutId","AbortController","abort","signal","clearTimeout","respHeaders","json","catch","_newRetriableError","requestFactory","xmlhttp","factories","ActiveXObject","numFactories","_createXMLHTTPObject","onreadystatechange","readyState","parseResponse","responseText","_isSuccess","getResponseHeader","_isNormalFailure","ex","exc","open","setRequestHeader","h","send","_e1","XDomainRequest","substring","xdomainrequest","onprogress","ontimeout","onerror","onload","Transport","params","access_token","paramsArray","sort","qs","_makeZoneRequest","rootZone","Zone","root","run","_makeRequest","RollbarProxy","_msg","_proxyRequest","makeFetchRequest","makeXhrRequest","auth","hash","parseInt","pathParts","_instance","components","Instrumenter","instrumenter","wrapGlobals","scrub","Replay","API","_gWindow","initSession","replayOptions","autoStart","recorder","start","Client","gDocument","isChrome","chrome","runtime","anonymousErrorsPending","rollbar","requestInfo","query_string","remoteString","captureIp","user_ip","nav","scr","screen","runtime_ms","_rollbarStartTime","javascript","browser","cookie_enabled","cookieEnabled","cur","plugins","navPlugins","sharedTransforms","scrubFn","addTransformsToNotifier","addPredicate","sharedPredicates","isUncaught","Boolean","onSendCallback","addPredicatesToQueue","setupUnhandledCapture","instrument","setSessionAttributesFromOptions","_this$instrumenter","_createItem","triggerReplay","unhandledExceptionsInitialized","captureUncaught","handleUncaughtExceptions","handler","shim","oldOnError","_rollbarOldOnError","handleAnonymousErrors","old","_rollbarWrappedError","_rollbarContext","handleUncaughtException","_rollbarWindowOnError","globals","wrapGlobalEventHandlers","unhandledRejectionsInitialized","captureUnhandledRejections","handleUnhandledRejections","_rollbarURH","belongsToShim","removeEventListener","rejectionHandler","evt","reason","promise","detail","handleUnhandledRejection","addEventListener","inspectAnonymousErrors","uncaughtErrorLevel","prepareStackTrace","_stack","_isAnonymous","reasonResult","_before","ctxFn","_isWrap","_rollbar_wrapped","_wrappedSource","setUser","_this$tracing3","_options$payload","_options$client","_options$payload2","_options$payload3","_options$payload4","person","setSessionUser","code_version","codeVersion","setSessionAttributes","maybeCallback","_getFirstFunction","_Rollbar","callInstance","_len6","_key6","_len7","_key7","_len8","_key8","_len9","_key9","_len0","_key0","_len1","_key1","_len10","_key10","_len11","_key11","_len12","_key12","browserDefaults","triggerDefaults","samplingRatio","preDuration","postDuration","triggers","logErrors","logEmits","inlineStylesheet","inlineImages","collectFonts","maskInputOptions","password","tel","text","color","date","month","number","week","maskAllInputs","blockClass","maskTextClass","ignoreClass","slimDOMOptions","script","comment","headFavicon","headWhitespace","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","normalizeName","FetchHeaders","forEach","append","header","getOwnPropertyNames","normalizeValue","oldValue","items","iteratorFor","Headers","replacements","orig","elementString","elem","nextStr","totalLength","out","descriptionToString","separator","MAX_LENGTH","elementArrayToString","nextDescription","describeElement","tagName","parentNode","treeToArray","desc","classes","attribute","getAttribute","network","networkResponseHeaders","networkResponseBody","networkRequestHeaders","networkRequestBody","networkErrorOnHttp5xx","networkErrorOnHttp4xx","networkErrorOnHttp0","dom","navigation","connectivity","contentSecurityPolicy","errorOnContentSecurityPolicy","restore","defaultValueScrubber","patterns","field","nameFromDescription","_patterns","_window","_document","removeListeners","autoInstrument","configureScrubbing","eventRemovers","contentsecuritypolicy","_location","_lastHref","_options$scrubTelemet","_options$replay","_options$replay2","_options$replay3","_options$replay4","_options$replay5","_options$replay6","_options$replay7","_options$replay8","_options$replay9","scrubTelemetryInputs","telemetryScrubber","maskInputFn","scrubClasses","scrubSelectors","blockSelector","ignoreSelector","maskTextSelector","oldSettings","deinstrumentNetwork","instrumentNetwork","deinstrumentConsole","instrumentConsole","deinstrumentDom","instrumentDom","deinstrumentNavigation","instrumentNavigation","deinstrumentConnectivity","instrumentConnectivity","deinstrumentContentSecurityPolicy","instrumentContentSecurityPolicy","wrapProp","xhr","wrap","xhrp","isUrlObject","_isUrlObject","__rollbar_xhr","request_content_type","onreadystatechangeHandler","__rollbar_event","captureNetwork","response_content_type","headersConfig","allHeaders","getAllResponseHeaders","trim","isJsonContentType","scrubJson","addOtelNetworkResponse","errorOnHttpStatus","trackHttpErrors","_fn","_t","reqHeaders","fetchHeaders","telemetryEvent","contentType","endTimeMs","inHeaders","outHeaders","currentHeader","_this$_window","_i2","_methods","wrapConsole","origConsole","Function","addListener","handleEvent","click","handleClick","dragdrop","handleDrag","focus","handleFocus","form","handleForm","handleInput","resize","handleResize","contentLoaded","handleContentLoaded","_evt","URL","_evt$target","captureClick","isTrusted","domUtil","_evt$target2","captureFocus","innerWidth","captureResize","innerHeight","_evt$dataTransfer","_evt$dataTransfer2","dataTransfer","files","captureDragDrop","inputType","mask","selectors","cls","classList","contains","sel","_evt$target3","_evt$target4","_evt$target5","_evt$target6","scrubInputValue","_evt$target7","captureInput","app","history","pushState","handleUrlChange","parsedHref","urlparser","parsedTo","parsedFrom","captureNavigation","handleConnectivity","captureConnectivityChange","cspEvent","blockedURI","violatedDirective","effectiveDirective","sourceFile","originalPolicy","handleCspError","cspHandler","handleCspEvent","section","types","_step7","_iterator7","_loop","passive","_extendListenerPrototype","oldAddEventListener","_rollbarOldAdd","addFn","bubble","oldRemoveEventListener","_rollbarOldRemove","removeFn","setComponents","_rollbarConfig","alias","globalAlias","shimRunning","shimId","_rollbarDidLoad"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/rollbar.named-amd.js b/dist/rollbar.named-amd.js index 92e7c67b7..6927723ea 100644 --- a/dist/rollbar.named-amd.js +++ b/dist/rollbar.named-amd.js @@ -44,69 +44,14 @@ __webpack_require__.d(__webpack_exports__, { var url_namespaceObject = {}; __webpack_require__.r(url_namespaceObject); __webpack_require__.d(url_namespaceObject, { - parse: function() { return parse; } + parse: function() { return url_parse; } }); -;// ./src/merge.js -var hasOwn = Object.prototype.hasOwnProperty; -var toStr = Object.prototype.toString; -var isPlainObject = function isPlainObject(obj) { - if (!obj || toStr.call(obj) !== '[object Object]') { - return false; - } - var hasOwnConstructor = hasOwn.call(obj, 'constructor'); - var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); - // Not own constructor property must be Object - if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - var key; - for (key in obj) { - /**/ - } - return typeof key === 'undefined' || hasOwn.call(obj, key); -}; -function merge() { - var i, - src, - copy, - clone, - name, - result = Object.create(null), - // no prototype pollution on Object - current = null, - length = arguments.length; - for (i = 0; i < length; i++) { - current = arguments[i]; - if (current == null) { - continue; - } - for (name in current) { - src = result[name]; - copy = current[name]; - if (result !== copy) { - if (copy && isPlainObject(copy)) { - clone = src && isPlainObject(src) ? src : {}; - result[name] = merge(clone, copy); - } else if (typeof copy !== 'undefined') { - result[name] = copy; - } - } - } - } - return result; -} -/* harmony default export */ var src_merge = (merge); ;// ./src/utility.js function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } - - /* * isType - Given a Javascript value and a string, returns true if the type of the value matches the * given string. @@ -173,8 +118,18 @@ function isNativeFunction(f) { * @returns true is value is an object function is an object) */ function isObject(value) { - var type = _typeof(value); - return value != null && (type == 'object' || type == 'function'); + return value != null && (_typeof(value) == 'object' || typeof value == 'function'); +} + +/* hasOwn - safe helper around Object.hasOwnProperty */ +function hasOwn(obj, prop) { + if (obj == null) { + return false; + } + if (Object.hasOwn) { + return Object.hasOwn(obj, prop); + } + return Object.prototype.hasOwnProperty.call(obj, prop); } /* isString - Checks if the argument is a string @@ -196,16 +151,6 @@ function isFiniteNumber(n) { return Number.isFinite(n); } -/* - * isDefined - a convenience function for checking if a value is not equal to undefined - * - * @param u - any value - * @returns true if u is anything other than undefined - */ -function isDefined(u) { - return !isType(u, 'undefined'); -} - /* * isIterable - convenience function for checking if a value can be iterated, essentially * whether it is an object or an array. @@ -252,7 +197,7 @@ function redact() { // from http://stackoverflow.com/a/8809472/1138191 function uuid4() { - var d = utility_now(); + var d = now(); var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = (d + Math.random() * 16) % 16 | 0; d = Math.floor(d / 16); @@ -302,8 +247,8 @@ var parseUriOptions = { parser: /(?:^|&)([^&=]*)=?([^&]*)/g }, parser: { - strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, - loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ + strict: /^(?:([^:/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\d*))?))?((((?:[^?#/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, + loose: /^(?:(?![^:@]+:[^:@/]*@)([^:/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#/]*\.[^?#/.]+(?:[?#]|$)))*\/?)?([^?#/]*))(?:\?([^#]*))?(?:#(.*))?)/ } }; function parseUri(str) { @@ -503,7 +448,11 @@ function createItem(args, logger, notifier, requestKeys, lambdaContext) { case 'undefined': break; case 'string': - message ? extraArgs.push(arg) : message = arg; + if (message) { + extraArgs.push(arg); + } else { + message = arg; + } break; case 'function': callback = wrapCallback(logger, arg); @@ -515,12 +464,20 @@ function createItem(args, logger, notifier, requestKeys, lambdaContext) { case 'domexception': case 'exception': // Firefox Exception type - err ? extraArgs.push(arg) : err = arg; + if (err) { + extraArgs.push(arg); + } else { + err = arg; + } break; case 'object': case 'array': if (arg instanceof Error || typeof DOMException !== 'undefined' && arg instanceof DOMException) { - err ? extraArgs.push(arg) : err = arg; + if (err) { + extraArgs.push(arg); + } else { + err = arg; + } break; } if (requestKeys && typ === 'object' && !request) { @@ -534,11 +491,19 @@ function createItem(args, logger, notifier, requestKeys, lambdaContext) { break; } } - custom ? extraArgs.push(arg) : custom = arg; + if (custom) { + extraArgs.push(arg); + } else { + custom = arg; + } break; default: if (arg instanceof Error || typeof DOMException !== 'undefined' && arg instanceof DOMException) { - err ? extraArgs.push(arg) : err = arg; + if (err) { + extraArgs.push(arg); + } else { + err = arg; + } break; } extraArgs.push(arg); @@ -555,7 +520,7 @@ function createItem(args, logger, notifier, requestKeys, lambdaContext) { message: message, err: err, custom: custom, - timestamp: utility_now(), + timestamp: now(), callback: callback, notifier: notifier, diagnostic: diagnostic, @@ -587,14 +552,23 @@ function addErrorContext(item, errors) { var custom = item.data.custom || {}; var contextAdded = false; try { - for (var i = 0; i < errors.length; ++i) { - if (errors[i].hasOwnProperty('rollbarContext')) { - custom = src_merge(custom, nonCircularClone(errors[i].rollbarContext)); - contextAdded = true; + var _iterator = _createForOfIteratorHelper(errors), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var error = _step.value; + if (hasOwn(error, 'rollbarContext')) { + custom = merge(custom, nonCircularClone(error.rollbarContext)); + contextAdded = true; + } } - } - // Avoid adding an empty object to the data. + // Avoid adding an empty object to the data. + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } if (contextAdded) { item.data.custom = custom; } @@ -605,10 +579,19 @@ function addErrorContext(item, errors) { var TELEMETRY_TYPES = ['log', 'network', 'dom', 'navigation', 'error', 'manual']; var TELEMETRY_LEVELS = ['critical', 'error', 'warning', 'info', 'debug']; function arrayIncludes(arr, val) { - for (var k = 0; k < arr.length; ++k) { - if (arr[k] === val) { - return true; + var _iterator2 = _createForOfIteratorHelper(arr), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var entry = _step2.value; + if (entry === val) { + return true; + } } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); } return false; } @@ -642,20 +625,20 @@ function createTelemetryEvent(args) { } function addItemAttributes(itemData, attributes) { itemData.attributes = itemData.attributes || []; - var _iterator = _createForOfIteratorHelper(attributes), - _step; + var _iterator3 = _createForOfIteratorHelper(attributes), + _step3; try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var a = _step.value; + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var a = _step3.value; if (a.value === undefined) { continue; } itemData.attributes.push(a); } } catch (err) { - _iterator.e(err); + _iterator3.e(err); } finally { - _iterator.f(); + _iterator3.f(); } } @@ -677,7 +660,7 @@ function get(obj, path) { for (var i = 0, len = keys.length; i < len; ++i) { result = result[keys[i]]; } - } catch (e) { + } catch (_e) { result = undefined; } return result; @@ -707,7 +690,7 @@ function set(obj, path, value) { } temp[keys[len - 1]] = value; obj[keys[0]] = replacement; - } catch (e) { + } catch (_e) { return; } } @@ -738,11 +721,11 @@ function formatArgsAsString(args) { } return result.join(' '); } -function utility_now() { +function now() { if (Date.now) { - return +Date.now(); + return Date.now(); } - return +new Date(); + return Number(new Date()); } function filterIp(requestData, captureIp) { if (!requestData || !requestData['user_ip'] || captureIp === true) { @@ -773,14 +756,14 @@ function filterIp(requestData, captureIp) { } else { newIp = null; } - } catch (e) { + } catch (_e) { newIp = null; } } requestData['user_ip'] = newIp; } function handleOptions(current, input, payload, logger) { - var result = src_merge(current, input, payload); + var result = merge(current, input, payload); result = updateDeprecatedOptions(result, logger); if (!input || input.overwriteScrubFields) { return result; @@ -803,2710 +786,2205 @@ function updateDeprecatedOptions(options, logger) { } return options; } +function merge() { + function isPlainObject(obj) { + if (!obj || Object.prototype.toString.call(obj) !== '[object Object]') { + return false; + } + var hasOwnConstructor = hasOwn(obj, 'constructor'); + var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn(obj.constructor.prototype, 'isPrototypeOf'); + // Not own constructor property must be Object + if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { + return false; + } -;// ./src/rateLimiter.js + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + var key; + for (key in obj) { + /**/ + } + return typeof key === 'undefined' || hasOwn(obj, key); + } + var i, + src, + copy, + clone, + name, + result = Object.create(null), + // no prototype pollution on Object + current = null, + length = arguments.length; + for (i = 0; i < length; i++) { + current = arguments[i]; + if (current === null || current === undefined) { + continue; + } + for (name in current) { + src = result[name]; + copy = current[name]; + if (result !== copy) { + if (copy && isPlainObject(copy)) { + clone = src && isPlainObject(src) ? src : {}; + result[name] = merge(clone, copy); + } else if (typeof copy !== 'undefined') { + result[name] = copy; + } + } + } + } + return result; +} +;// ./src/utility/traverse.js -/* - * RateLimiter - an object that encapsulates the logic for counting items sent to Rollbar - * - * @param options - the same options that are accepted by configureGlobal offered as a convenience - */ -function RateLimiter(options) { - this.startTime = utility_now(); - this.counter = 0; - this.perMinCounter = 0; - this.platform = null; - this.platformOptions = {}; - this.configureGlobal(options); -} -RateLimiter.globalSettings = { - startTime: utility_now(), - maxItems: undefined, - itemsPerMinute: undefined -}; +function traverse(obj, func, seen) { + var k, v, i; + var isObj = isType(obj, 'object'); + var isArray = isType(obj, 'array'); + var keys = []; + var seenIndex; -/* - * configureGlobal - set the global rate limiter options - * - * @param options - Only the following values are recognized: - * startTime: a timestamp of the form returned by (new Date()).getTime() - * maxItems: the maximum items - * itemsPerMinute: the max number of items to send in a given minute - */ -RateLimiter.prototype.configureGlobal = function (options) { - if (options.startTime !== undefined) { - RateLimiter.globalSettings.startTime = options.startTime; + // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11. + seen = seen || { + obj: [], + mapped: [] + }; + if (isObj) { + seenIndex = seen.obj.indexOf(obj); + if (isObj && seenIndex !== -1) { + // Prefer the mapped object if there is one. + return seen.mapped[seenIndex] || seen.obj[seenIndex]; + } + seen.obj.push(obj); + seenIndex = seen.obj.length - 1; } - if (options.maxItems !== undefined) { - RateLimiter.globalSettings.maxItems = options.maxItems; + if (isObj) { + for (k in obj) { + if (hasOwn(obj, k)) { + keys.push(k); + } + } + } else if (isArray) { + for (i = 0; i < obj.length; ++i) { + keys.push(i); + } } - if (options.itemsPerMinute !== undefined) { - RateLimiter.globalSettings.itemsPerMinute = options.itemsPerMinute; + var result = isObj ? {} : []; + var same = true; + for (i = 0; i < keys.length; ++i) { + k = keys[i]; + v = obj[k]; + result[k] = func(k, v, seen); + same = same && result[k] === obj[k]; } -}; - -/* - * shouldSend - determine if we should send a given item based on rate limit settings - * - * @param item - the item we are about to send - * @returns An object with the following structure: - * error: (Error|null) - * shouldSend: bool - * payload: (Object|null) - * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and - * exactly one of error or payload will be non-null. If error is non-null, the returned Error will - * describe the situation, but it means that we were already over a rate limit (either globally or - * per minute) when this item was checked. If error is null, and therefore payload is non-null, it - * means this item put us over the global rate limit and the payload should be sent to Rollbar in - * place of the passed in item. - */ -RateLimiter.prototype.shouldSend = function (item, now) { - now = now || utility_now(); - var elapsedTime = now - this.startTime; - if (elapsedTime < 0 || elapsedTime >= 60000) { - this.startTime = now; - this.perMinCounter = 0; + if (isObj && !same) { + seen.mapped[seenIndex] = result; } - var globalRateLimit = RateLimiter.globalSettings.maxItems; - var globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute; - if (checkRate(item, globalRateLimit, this.counter)) { - return shouldSendValue(this.platform, this.platformOptions, globalRateLimit + ' max items reached', false); - } else if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) { - return shouldSendValue(this.platform, this.platformOptions, globalRateLimitPerMin + ' items per minute reached', false); - } - this.counter++; - this.perMinCounter++; - var shouldSend = !checkRate(item, globalRateLimit, this.counter); - var perMinute = shouldSend; - shouldSend = shouldSend && !checkRate(item, globalRateLimitPerMin, this.perMinCounter); - return shouldSendValue(this.platform, this.platformOptions, null, shouldSend, globalRateLimit, globalRateLimitPerMin, perMinute); -}; -RateLimiter.prototype.setPlatformOptions = function (platform, options) { - this.platform = platform; - this.platformOptions = options; -}; + return !same ? result : obj; +} +/* harmony default export */ var utility_traverse = (traverse); +;// ./src/scrub.js +function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || scrub_unsupportedIterableToArray(r, e) || _nonIterableRest(); } +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } +function scrub_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = scrub_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function scrub_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return scrub_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? scrub_arrayLikeToArray(r, a) : void 0; } } +function scrub_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -/* Helpers */ -function checkRate(item, limit, counter) { - return !item.ignoreRateLimit && limit >= 1 && counter > limit; -} -function shouldSendValue(platform, options, error, shouldSend, globalRateLimit, limitPerMin, perMinute) { - var payload = null; - if (error) { - error = new Error(error); - } - if (!error && !shouldSend) { - payload = rateLimitPayload(platform, options, globalRateLimit, limitPerMin, perMinute); +function scrub(data, scrubFields, scrubPaths) { + scrubFields = scrubFields || []; + if (scrubPaths) { + var _iterator = scrub_createForOfIteratorHelper(scrubPaths), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var path = _step.value; + scrubPath(data, path); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } } - return { - error: error, - shouldSend: shouldSend, - payload: payload - }; -} -function rateLimitPayload(platform, options, globalRateLimit, limitPerMin, perMinute) { - var environment = options.environment || options.payload && options.payload.environment; - var msg; - if (perMinute) { - msg = 'item per minute limit reached, ignoring errors until timeout'; - } else { - msg = 'maxItems has been hit, ignoring errors until reset.'; + var paramRes = _getScrubFieldRegexs(scrubFields); + var queryRes = _getScrubQueryParamRegexs(scrubFields); + function redactQueryParam(dummy0, paramPart) { + return paramPart + redact(); } - var item = { - body: { - message: { - body: msg, - extra: { - maxItems: globalRateLimit, - itemsPerMinute: limitPerMin + function paramScrubber(v) { + if (isType(v, 'string')) { + var _iterator2 = scrub_createForOfIteratorHelper(queryRes), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var regex = _step2.value; + v = v.replace(regex, redactQueryParam); } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); } - }, - language: 'javascript', - environment: environment, - notifier: { - version: options.notifier && options.notifier.version || options.version } - }; - if (platform === 'browser') { - item.platform = 'browser'; - item.framework = 'browser-js'; - item.notifier.name = 'rollbar-browser-js'; - } else if (platform === 'server') { - item.framework = options.framework || 'node-js'; - item.notifier.name = options.notifier.name; - } else if (platform === 'react-native') { - item.framework = options.framework || 'react-native'; - item.notifier.name = options.notifier.name; + return v; } - return item; -} -/* harmony default export */ var rateLimiter = (RateLimiter); -;// ./src/queue.js -function queue_typeof(o) { "@babel/helpers - typeof"; return queue_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, queue_typeof(o); } -function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } + function valScrubber(k, v) { + var _iterator3 = scrub_createForOfIteratorHelper(paramRes), + _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var regex = _step3.value; + if (regex.test(k)) { + v = redact(); + break; + } + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + return v; + } + function scrubber(k, v, seen) { + var tmpV = valScrubber(k, v); + if (tmpV === v) { + if (isType(v, 'object') || isType(v, 'array')) { + return utility_traverse(v, scrubber, seen); + } + return paramScrubber(tmpV); + } else { + return tmpV; + } + } + return utility_traverse(data, scrubber); +} +function scrubPath(obj, path) { + var keys = path.split('.'); + var last = keys.length - 1; + try { + var _iterator4 = scrub_createForOfIteratorHelper(keys.entries()), + _step4; + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + var _step4$value = _slicedToArray(_step4.value, 2), + index = _step4$value[0], + key = _step4$value[1]; + if (index < last) { + obj = obj[key]; + } else { + obj[key] = redact(); + } + } + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); + } + } catch (_e) { + // Missing key is OK; + } +} +function _getScrubFieldRegexs(scrubFields) { + var ret = []; + var _iterator5 = scrub_createForOfIteratorHelper(scrubFields), + _step5; + try { + for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { + var field = _step5.value; + var pat = '^\\[?(%5[bB])?' + field + '\\[?(%5[bB])?\\]?(%5[dD])?$'; + ret.push(new RegExp(pat, 'i')); + } + } catch (err) { + _iterator5.e(err); + } finally { + _iterator5.f(); + } + return ret; +} +function _getScrubQueryParamRegexs(scrubFields) { + var ret = []; + var _iterator6 = scrub_createForOfIteratorHelper(scrubFields), + _step6; + try { + for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { + var field = _step6.value; + var pat = '\\[?(%5[bB])?' + field + '\\[?(%5[bB])?\\]?(%5[dD])?'; + ret.push(new RegExp('(' + pat + '=)([^&\\n]+)', 'igm')); + } + } catch (err) { + _iterator6.e(err); + } finally { + _iterator6.f(); + } + return ret; +} +/* harmony default export */ var src_scrub = (scrub); +;// ./src/telemetry.js +var _excluded = ["otelAttributes"]; +function telemetry_typeof(o) { "@babel/helpers - typeof"; return telemetry_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, telemetry_typeof(o); } +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } +function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == queue_typeof(i) ? i : i + ""; } -function _toPrimitive(t, r) { if ("object" != queue_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != queue_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == telemetry_typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != telemetry_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != telemetry_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +var MAX_EVENTS = 100; -/** - * Queue - an object which handles which handles a queue of items to be sent to Rollbar. - * This object handles rate limiting via a passed in rate limiter, retries based on connection - * errors, and filtering of items based on a set of configurable predicates. The communication to - * the backend is performed via a given API object. - */ -var Queue = /*#__PURE__*/function () { - /** - * @param rateLimiter - An object which conforms to the interface - * `rateLimiter.shouldSend(item) -> bool` - * @param api - An object which conforms to the interface - * `api.postItem(payload, function(err, response))` - * @param logger - An object used to log verbose messages if desired - * @param options - see `Queue.prototype.configure` - * @param replay - Optional `Replay` for coordinating session replay with error occurrences - */ - function Queue(rateLimiter, api, logger, options, replay) { - _classCallCheck(this, Queue); - this.rateLimiter = rateLimiter; - this.api = api; - this.logger = logger; - this.options = options; - this.replay = replay; - this.predicates = []; - this.pendingItems = []; - this.pendingRequests = []; - this.retryQueue = []; - this.retryHandle = null; - this.waitCallback = null; - this.waitIntervalID = null; +// Temporary workaround while solving commonjs -> esm issues in Node 18 - 20. +function fromMillis(millis) { + return [Math.trunc(millis / 1000), Math.round(millis % 1000 * 1e6)]; +} +var Telemeter = /*#__PURE__*/function () { + function Telemeter(options, tracing) { + var _this$tracing; + _classCallCheck(this, Telemeter); + this.queue = []; + this.options = merge(options); + var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS; + this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS)); + this.tracing = tracing; + this.telemetrySpan = (_this$tracing = this.tracing) === null || _this$tracing === void 0 ? void 0 : _this$tracing.startSpan('rollbar-telemetry', {}); } - - /** - * configure - updates the options this queue uses - * - * @param options - */ - return _createClass(Queue, [{ + return _createClass(Telemeter, [{ key: "configure", value: function configure(options) { - var _this$api; - (_this$api = this.api) === null || _this$api === void 0 || _this$api.configure(options); var oldOptions = this.options; - this.options = src_merge(oldOptions, options); - return this; - } - - /** - * addPredicate - adds a predicate to the end of the list of predicates for this queue - * - * @param predicate - function(item, options) -> (bool|{err: Error}) - * Returning true means that this predicate passes and the item is okay to go on the queue - * Returning false means do not add the item to the queue, but it is not an error - * Returning {err: Error} means do not add the item to the queue, and the given error explains why - * Returning {err: undefined} is equivalent to returning true but don't do that - */ - }, { - key: "addPredicate", - value: function addPredicate(predicate) { - if (isFunction(predicate)) { - this.predicates.push(predicate); + this.options = merge(oldOptions, options); + var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS; + var newMaxEvents = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS)); + var deleteCount = 0; + if (this.queue.length > newMaxEvents) { + deleteCount = this.queue.length - newMaxEvents; } - return this; + this.maxQueueSize = newMaxEvents; + this.queue.splice(0, deleteCount); } }, { - key: "addPendingItem", - value: function addPendingItem(item) { - this.pendingItems.push(item); + key: "copyEvents", + value: function copyEvents() { + var events = Array.prototype.slice.call(this.queue, 0); + if (isFunction(this.options.filterTelemetry)) { + try { + var i = events.length; + while (i--) { + if (this.options.filterTelemetry(events[i])) { + events.splice(i, 1); + } + } + } catch (_e) { + this.options.filterTelemetry = null; + } + } + + // Filter until supported in legacy telemetry + events = events.filter(function (e) { + return e.type !== 'connectivity'; + }); + + // Remove internal keys from output + events = events.map(function (_ref) { + var _otelAttributes = _ref.otelAttributes, + event = _objectWithoutProperties(_ref, _excluded); + return event; + }); + return events; } }, { - key: "removePendingItem", - value: function removePendingItem(item) { - var idx = this.pendingItems.indexOf(item); - if (idx !== -1) { - this.pendingItems.splice(idx, 1); + key: "exportTelemetrySpan", + value: function exportTelemetrySpan() { + var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + if (this.telemetrySpan) { + this.telemetrySpan.end(attributes); + this.telemetrySpan = this.tracing.startSpan('rollbar-telemetry', {}); } } - - /** - * addItem - Send an item to the Rollbar API if all of the predicates are satisfied - * - * @param item - Item instance with the payload to send to the backend - * @param callback - function(error, repsonse) which will be called with the response from the API - * in the case of a success, otherwise response will be null and error will have a value. If both - * error and response are null then the item was stopped by a predicate which did not consider this - * to be an error condition, but nonetheless did not send the item to the API. - * @param originalError - The original error before any transformations that is to be logged if any - * @param originalItem - The original item before transforms, used in pendingItems queue - */ }, { - key: "addItem", - value: function addItem(item, callback, originalError, originalItem) { - var _this = this; - if (!callback || !isFunction(callback)) { - callback = function callback() { - return; - }; - } - var data = item.data; - var predicateResult = this._applyPredicates(data); - if (predicateResult.stop) { - this.removePendingItem(originalItem); - callback(predicateResult.err); - return; - } - this._maybeLog(data, originalError); - this.removePendingItem(originalItem); - if (!this.options.transmit) { - callback(new Error('Transmit disabled')); - return; + key: "capture", + value: function capture(type, metadata, level, rollbarUUID) { + var timestamp = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null; + var otelAttributes = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null; + var e = { + level: getLevel(type, level), + type: type, + timestamp_ms: timestamp || now(), + body: metadata, + source: 'client' + }; + if (rollbarUUID) { + e.uuid = rollbarUUID; } - if (this.replay && data.body) { - item.replayId = this.replay.capture(null, data.uuid, { - type: 'occurrence', - level: item.level - }); - if (item.replayId) { - addItemAttributes(item.data, [{ - key: 'replay_id', - value: item.replayId - }]); - } + if (otelAttributes) { + e.otelAttributes = otelAttributes; } - this.pendingRequests.push(data); try { - this._makeApiRequest(data, function (err, resp, headers) { - _this._dequeuePendingRequest(data); - if (item.replayId) { - _this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers); - } - callback(err, resp); - }); - } catch (err) { - this._dequeuePendingRequest(data); - if (item.replayId) { - var _this$replay; - (_this$replay = this.replay) === null || _this$replay === void 0 || _this$replay.discard(item.replayId); + if (isFunction(this.options.filterTelemetry) && this.options.filterTelemetry(e)) { + return false; } - callback(err); + } catch (_exc) { + this.options.filterTelemetry = null; } + this.push(e); + return e; } - - /** - * wait - Stop any further errors from being added to the queue, and get called back when all items - * currently processing have finished sending to the backend. - * - * @param callback - function() called when all pending items have been sent - */ }, { - key: "wait", - value: function wait(callback) { - var _this2 = this; - if (!isFunction(callback)) { - return; - } - this.waitCallback = callback; - if (this._maybeCallWait()) { - return; - } - if (this.waitIntervalID) { - this.waitIntervalID = clearInterval(this.waitIntervalID); - } - this.waitIntervalID = setInterval(function () { - _this2._maybeCallWait(); - }, 500); + key: "captureEvent", + value: function captureEvent(type, metadata, level, rollbarUUID) { + return this.capture(type, metadata, level, rollbarUUID); } - - /** - * Sequentially applies the predicates that have been added to the queue to the - * given item with the currently configured options. - * - * @param item - An item in the queue - * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue, - * the error value should be passed up to a callbak if we are stopping. - */ }, { - key: "_applyPredicates", - value: function _applyPredicates(item) { - var p = null; - for (var i = 0, len = this.predicates.length; i < len; i++) { - p = this.predicates[i](item, this.options); - if (!p || p.err !== undefined) { - return { - stop: true, - err: p.err - }; - } + key: "captureError", + value: function captureError(err, level, rollbarUUID, timestamp) { + var _this$telemetrySpan; + var message = err.message || String(err); + var metadata = { + message: message + }; + if (err.stack) { + metadata.stack = err.stack; } - return { - stop: false, - err: null + var otelAttributes = { + message: message, + level: level, + type: 'error', + uuid: rollbarUUID }; + (_this$telemetrySpan = this.telemetrySpan) === null || _this$telemetrySpan === void 0 || _this$telemetrySpan.addEvent('rollbar-occurrence-event', otelAttributes, fromMillis(timestamp)); + return this.capture('error', metadata, level, rollbarUUID, timestamp, otelAttributes); } - - /** - * Send an item to Rollbar, callback when done, if there is an error make an - * effort to retry if we are configured to do so. - * - * @param item - an item ready to send to the backend - * @param callback - function(err, response) - */ }, { - key: "_makeApiRequest", - value: function _makeApiRequest(item, callback) { - var _this3 = this; - var rateLimitResponse = this.rateLimiter.shouldSend(item); - if (rateLimitResponse.shouldSend) { - this.api.postItem(item, function (err, resp, headers) { - if (err) { - _this3._maybeRetry(err, item, callback); - } else { - callback(err, resp, headers); - } - }); - } else if (rateLimitResponse.error) { - callback(rateLimitResponse.error); - } else { - this.api.postItem(rateLimitResponse.payload, callback); - } + key: "captureLog", + value: function captureLog(message, level, rollbarUUID, timestamp) { + var _this$telemetrySpan2; + var event = rollbarUUID ? 'rollbar-occurrence-event' : 'rollbar-log-event'; + var otelAttributes = _objectSpread({ + message: message, + level: level + }, rollbarUUID ? { + type: 'message', + uuid: rollbarUUID + } : {}); + (_this$telemetrySpan2 = this.telemetrySpan) === null || _this$telemetrySpan2 === void 0 || _this$telemetrySpan2.addEvent(event, otelAttributes, fromMillis(timestamp)); + return this.capture('log', { + message: message + }, level, rollbarUUID, timestamp, otelAttributes); } - - // These are errors basically mean there is no internet connection }, { - key: "_maybeRetry", - value: - /** - * Given the error returned by the API, decide if we should retry or just callback - * with the error. - * - * @param err - an error returned by the API transport - * @param item - the item that was trying to be sent when this error occured - * @param callback - function(err, response) - */ - function _maybeRetry(err, item, callback) { - var shouldRetry = false; - if (this.options.retryInterval) { - for (var i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) { - if (err.code === Queue.RETRIABLE_ERRORS[i]) { - shouldRetry = true; - break; - } - } - if (shouldRetry && isFiniteNumber(this.options.maxRetries)) { - item.retries = item.retries ? item.retries + 1 : 1; - if (item.retries > this.options.maxRetries) { - shouldRetry = false; - } - } + key: "captureNetwork", + value: function captureNetwork(metadata, subtype, rollbarUUID, requestData) { + var _metadata$response, _metadata$response2, _this$telemetrySpan3; + subtype = subtype || 'xhr'; + metadata.subtype = metadata.subtype || subtype; + if (requestData) { + metadata.request = requestData; } - if (shouldRetry) { - this._retryApiRequest(item, callback); - } else { - callback(err); + var level = this.levelFromStatus(metadata.status_code); + var endTimeNano = (metadata.end_time_ms || 0) * 1e6; + var otelAttributes = { + type: metadata.subtype, + method: metadata.method, + url: metadata.url, + statusCode: metadata.status_code, + 'request.headers': JSON.stringify(metadata.request_headers || {}), + 'response.headers': JSON.stringify(((_metadata$response = metadata.response) === null || _metadata$response === void 0 ? void 0 : _metadata$response.headers) || {}), + 'response.timeUnixNano': endTimeNano.toString() + }; + var requestBody = metadata.request; + var responseBody = (_metadata$response2 = metadata.response) === null || _metadata$response2 === void 0 ? void 0 : _metadata$response2.body; + if (requestBody) { + otelAttributes['request.body'] = JSON.stringify(requestBody); } - } - - /** - * Add an item and a callback to a queue and possibly start a timer to process - * that queue based on the retryInterval in the options for this queue. - * - * @param item - an item that failed to send due to an error we deem retriable - * @param callback - function(err, response) - */ - }, { - key: "_retryApiRequest", - value: function _retryApiRequest(item, callback) { - var _this4 = this; - this.retryQueue.push({ - item: item, - callback: callback - }); - if (!this.retryHandle) { - this.retryHandle = setInterval(function () { - while (_this4.retryQueue.length) { - var retryObject = _this4.retryQueue.shift(); - _this4._makeApiRequest(retryObject.item, retryObject.callback); - } - }, this.options.retryInterval); + if (responseBody) { + otelAttributes['response.body'] = JSON.stringify(responseBody); } + (_this$telemetrySpan3 = this.telemetrySpan) === null || _this$telemetrySpan3 === void 0 || _this$telemetrySpan3.addEvent('rollbar-network-event', otelAttributes, fromMillis(metadata.start_time_ms)); + return this.capture('network', metadata, level, rollbarUUID, metadata.start_time_ms, otelAttributes); } - - /** - * Removes the item from the pending request queue, this queue is used to - * enable to functionality of providing a callback that clients can pass to `wait` to be notified - * when the pending request queue has been emptied. This must be called when the API finishes - * processing this item. If a `wait` callback is configured, it is called by this function. - * - * @param item - the item previously added to the pending request queue - */ }, { - key: "_dequeuePendingRequest", - value: function _dequeuePendingRequest(item) { - var idx = this.pendingRequests.indexOf(item); - if (idx !== -1) { - this.pendingRequests.splice(idx, 1); - this._maybeCallWait(); + key: "levelFromStatus", + value: function levelFromStatus(statusCode) { + if (statusCode >= 200 && statusCode < 400) { + return 'info'; + } + if (statusCode === 0 || statusCode >= 400) { + return 'error'; } + return 'info'; } }, { - key: "_maybeLog", - value: function _maybeLog(data, originalError) { - if (this.logger && this.options.verbose) { - var message = originalError || get(data, 'body.trace.exception.message') || get(data, 'body.trace_chain.0.exception.message'); - if (message) { - this.logger.error(message); - return; - } - message = get(data, 'body.message.body'); - if (message) { - this.logger.log(message); - } + key: "captureDom", + value: function captureDom(subtype, element, value, checked, rollbarUUID) { + var metadata = { + subtype: subtype, + element: element + }; + if (value !== undefined) { + metadata.value = value; + } + if (checked !== undefined) { + metadata.checked = checked; } + return this.capture('dom', metadata, 'info', rollbarUUID); } }, { - key: "_maybeCallWait", - value: function _maybeCallWait() { - if (isFunction(this.waitCallback) && this.pendingItems.length === 0 && this.pendingRequests.length === 0) { - if (this.waitIntervalID) { - this.waitIntervalID = clearInterval(this.waitIntervalID); - } - this.waitCallback(); - return true; + key: "captureInput", + value: function captureInput(_ref2) { + var _this$telemetrySpan4; + var type = _ref2.type, + isSynthetic = _ref2.isSynthetic, + element = _ref2.element, + value = _ref2.value, + timestamp = _ref2.timestamp; + var name = 'rollbar-input-event'; + var metadata = { + type: name, + subtype: type, + element: element, + value: value + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic, + element: element, + value: value, + endTimeUnixNano: fromMillis(timestamp) + }; + var event = this._getRepeatedEvent(name, otelAttributes); + if (event) { + return this._updateRepeatedEvent(event, otelAttributes, timestamp); } - return false; + (_this$telemetrySpan4 = this.telemetrySpan) === null || _this$telemetrySpan4 === void 0 || _this$telemetrySpan4.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); } - }]); -}(); -_defineProperty(Queue, "RETRIABLE_ERRORS", ['ECONNRESET', 'ENOTFOUND', 'ESOCKETTIMEDOUT', 'ETIMEDOUT', 'ECONNREFUSED', 'EHOSTUNREACH', 'EPIPE', 'EAI_AGAIN']); -/* harmony default export */ var queue = (Queue); -;// ./src/notifier.js - - -/* - * Notifier - the internal object responsible for delegating between the client exposed API, the - * chain of transforms necessary to turn an item into something that can be sent to Rollbar, and the - * queue which handles the communcation with the Rollbar API servers. - * - * @param queue - an object that conforms to the interface: addItem(item, callback) - * @param options - an object representing the options to be set for this notifier, this should have - * any defaults already set by the caller - */ -function Notifier(queue, options) { - this.queue = queue; - this.options = options; - this.transforms = []; - this.diagnostic = {}; -} - -/* - * configure - updates the options for this notifier with the passed in object - * - * @param options - an object which gets merged with the current options set on this notifier - * @returns this - */ -Notifier.prototype.configure = function (options) { - this.queue && this.queue.configure(options); - var oldOptions = this.options; - this.options = src_merge(oldOptions, options); - return this; -}; - -/* - * addTransform - adds a transform onto the end of the queue of transforms for this notifier - * - * @param transform - a function which takes three arguments: - * * item: An Object representing the data to eventually be sent to Rollbar - * * options: The current value of the options for this notifier - * * callback: function(err: (Null|Error), item: (Null|Object)) the transform must call this - * callback with a null value for error if it wants the processing chain to continue, otherwise - * with an error to terminate the processing. The item should be the updated item after this - * transform is finished modifying it. - */ -Notifier.prototype.addTransform = function (transform) { - if (isFunction(transform)) { - this.transforms.push(transform); - } - return this; -}; - -/* - * log - the internal log function which applies the configured transforms and then pushes onto the - * queue to be sent to the backend. - * - * @param item - An object with the following structure: - * message [String] - An optional string to be sent to rollbar - * error [Error] - An optional error - * - * @param callback - A function of type function(err, resp) which will be called with exactly one - * null argument and one non-null argument. The callback will be called once, either during the - * transform stage if an error occurs inside a transform, or in response to the communication with - * the backend. The second argument will be the response from the backend in case of success. - */ -Notifier.prototype.log = function (item, callback) { - if (!callback || !isFunction(callback)) { - callback = function callback() {}; - } - if (!this.options.enabled) { - return callback(new Error('Rollbar is not enabled')); - } - this.queue.addPendingItem(item); - var originalError = item.err; - this._applyTransforms(item, function (err, i) { - if (err) { - this.queue.removePendingItem(item); - return callback(err, null); - } - this.queue.addItem(i, callback, originalError, item); - }.bind(this)); -}; - -/* Internal */ - -/* - * _applyTransforms - Applies the transforms that have been added to this notifier sequentially. See - * `addTransform` for more information. - * - * @param item - An item to be transformed - * @param callback - A function of type function(err, item) which will be called with a non-null - * error and a null item in the case of a transform failure, or a null error and non-null item after - * all transforms have been applied. - */ -Notifier.prototype._applyTransforms = function (item, callback) { - var transformIndex = -1; - var transformsLength = this.transforms.length; - var transforms = this.transforms; - var options = this.options; - var _cb = function cb(err, i) { - if (err) { - callback(err, null); - return; - } - transformIndex++; - if (transformIndex === transformsLength) { - callback(null, i); - return; - } - transforms[transformIndex](i, options, _cb); - }; - _cb(null, item); -}; -/* harmony default export */ var notifier = (Notifier); -;// ./src/rollbar.js - - - - - -/* - * Rollbar - the interface to Rollbar - * - * @param options - * @param api - * @param logger - */ -function Rollbar(options, api, logger, telemeter, tracing, replay, platform) { - this.options = src_merge(options); - this.logger = logger; - Rollbar.rateLimiter.configureGlobal(this.options); - Rollbar.rateLimiter.setPlatformOptions(platform, this.options); - this.api = api; - this.queue = new queue(Rollbar.rateLimiter, api, logger, this.options, replay); - this.tracing = tracing; - - // Legacy OpenTracing support - // This must happen before the Notifier is created - var tracer = this.options.tracer || null; - if (validateTracer(tracer)) { - this.tracer = tracer; - // set to a string for api response serialization - this.options.tracer = 'opentracing-tracer-enabled'; - this.options._configuredOptions.tracer = 'opentracing-tracer-enabled'; - } else { - this.tracer = null; - } - this.notifier = new notifier(this.queue, this.options); - this.telemeter = telemeter; - setStackTraceLimit(options); - this.lastError = null; - this.lastErrorHash = 'none'; -} -var defaultOptions = { - maxItems: 0, - itemsPerMinute: 60 -}; -Rollbar.rateLimiter = new rateLimiter(defaultOptions); -Rollbar.prototype.global = function (options) { - Rollbar.rateLimiter.configureGlobal(options); - return this; -}; -Rollbar.prototype.configure = function (options, payloadData) { - var oldOptions = this.options; - var payload = {}; - if (payloadData) { - payload = { - payload: payloadData - }; - } - this.options = src_merge(oldOptions, options, payload); - - // Legacy OpenTracing support - // This must happen before the Notifier is configured - var tracer = this.options.tracer || null; - if (validateTracer(tracer)) { - this.tracer = tracer; - // set to a string for api response serialization - this.options.tracer = 'opentracing-tracer-enabled'; - this.options._configuredOptions.tracer = 'opentracing-tracer-enabled'; - } else { - this.tracer = null; - } - this.notifier && this.notifier.configure(this.options); - this.telemeter && this.telemeter.configure(this.options); - setStackTraceLimit(options); - this.global(this.options); - if (validateTracer(options.tracer)) { - this.tracer = options.tracer; - } - return this; -}; -Rollbar.prototype.log = function (item) { - var level = this._defaultLogLevel(); - return this._log(level, item); -}; -Rollbar.prototype.debug = function (item) { - this._log('debug', item); -}; -Rollbar.prototype.info = function (item) { - this._log('info', item); -}; -Rollbar.prototype.warn = function (item) { - this._log('warning', item); -}; -Rollbar.prototype.warning = function (item) { - this._log('warning', item); -}; -Rollbar.prototype.error = function (item) { - this._log('error', item); -}; -Rollbar.prototype.critical = function (item) { - this._log('critical', item); -}; -Rollbar.prototype.wait = function (callback) { - this.queue.wait(callback); -}; -Rollbar.prototype.captureEvent = function (type, metadata, level) { - return this.telemeter && this.telemeter.captureEvent(type, metadata, level); -}; -Rollbar.prototype.captureDomContentLoaded = function (ts) { - return this.telemeter && this.telemeter.captureDomContentLoaded(ts); -}; -Rollbar.prototype.captureLoad = function (ts) { - return this.telemeter && this.telemeter.captureLoad(ts); -}; -Rollbar.prototype.buildJsonPayload = function (item) { - return this.api.buildJsonPayload(item); -}; -Rollbar.prototype.sendJsonPayload = function (jsonPayload) { - this.api.postJsonPayload(jsonPayload); -}; - -/* Internal */ - -Rollbar.prototype._log = function (defaultLevel, item) { - var callback; - if (item.callback) { - callback = item.callback; - delete item.callback; - } - if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) { - if (callback) { - var error = new Error('ignored identical item'); - error.item = item; - callback(error); + }, { + key: "captureClick", + value: function captureClick(_ref3) { + var _this$telemetrySpan5; + var type = _ref3.type, + isSynthetic = _ref3.isSynthetic, + element = _ref3.element, + timestamp = _ref3.timestamp; + var name = 'rollbar-click-event'; + var metadata = { + type: name, + subtype: type, + element: element + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic, + element: element, + endTimeUnixNano: fromMillis(timestamp) + }; + var event = this._getRepeatedEvent(name, otelAttributes); + if (event) { + return this._updateRepeatedEvent(event, otelAttributes, timestamp); + } + (_this$telemetrySpan5 = this.telemetrySpan) === null || _this$telemetrySpan5 === void 0 || _this$telemetrySpan5.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); } - return; - } - try { - item.level = item.level || defaultLevel; - this._addTracingAttributes(item); - - // Legacy OpenTracing support - this._addTracingInfo(item); - var telemeter = this.telemeter; - if (telemeter) { - telemeter._captureRollbarItem(item); - item.telemetryEvents = telemeter.copyEvents() || []; + }, { + key: "_getRepeatedEvent", + value: function _getRepeatedEvent(name, attributes) { + var lastEvent = this._lastEvent(this.queue); + if (lastEvent && lastEvent.body.type === name && lastEvent.otelAttributes.target === attributes.target) { + return lastEvent; + } } - this.notifier.log(item, callback); - } catch (e) { - if (callback) { - callback(e); + }, { + key: "_updateRepeatedEvent", + value: function _updateRepeatedEvent(event, attributes, timestamp) { + var duration = Math.max(timestamp - event.timestamp_ms, 1); + event.body.value = attributes.value; + event.otelAttributes.value = attributes.value; + event.otelAttributes.height = attributes.height; + event.otelAttributes.width = attributes.width; + event.otelAttributes.textZoomRatio = attributes.textZoomRatio; + event.otelAttributes['endTimeUnixNano'] = fromMillis(timestamp); + event.otelAttributes['durationUnixNano'] = fromMillis(duration); + event.otelAttributes.count = (event.otelAttributes.count || 1) + 1; + event.otelAttributes.rate = event.otelAttributes.count / (duration / 1000); } - this.logger.error(e); - } -}; -Rollbar.prototype._addTracingAttributes = function (item) { - var _this$tracing, _this$tracing2; - var span = (_this$tracing = this.tracing) === null || _this$tracing === void 0 ? void 0 : _this$tracing.getSpan(); - var attributes = [{ - key: 'session_id', - value: (_this$tracing2 = this.tracing) === null || _this$tracing2 === void 0 ? void 0 : _this$tracing2.sessionId }, { - key: 'span_id', - value: span === null || span === void 0 ? void 0 : span.spanId + key: "_lastEvent", + value: function _lastEvent(list) { + return list.length > 0 ? list[list.length - 1] : null; + } }, { - key: 'trace_id', - value: span === null || span === void 0 ? void 0 : span.traceId - }]; - addItemAttributes(item.data, attributes); - span === null || span === void 0 || span.addEvent('rollbar.occurrence', [{ - key: 'rollbar.occurrence.uuid', - value: item.uuid - }]); -}; -Rollbar.prototype._defaultLogLevel = function () { - return this.options.logLevel || 'debug'; -}; -Rollbar.prototype._sameAsLastError = function (item) { - if (!item._isUncaught) { - return false; - } - var itemHash = generateItemHash(item); - if (this.lastErrorHash === itemHash) { - return true; - } - this.lastError = item.err; - this.lastErrorHash = itemHash; - return false; -}; -Rollbar.prototype._addTracingInfo = function (item) { - // Tracer validation occurs in the constructor - // or in the Rollbar.prototype.configure methods - if (this.tracer) { - // add rollbar occurrence uuid to span - var span = this.tracer.scope().active(); - if (validateSpan(span)) { - span.setTag('rollbar.error_uuid', item.uuid); - span.setTag('rollbar.has_error', true); - span.setTag('error', true); - span.setTag('rollbar.item_url', "https://rollbar.com/item/uuid/?uuid=".concat(item.uuid)); - span.setTag('rollbar.occurrence_url', "https://rollbar.com/occurrence/uuid/?uuid=".concat(item.uuid)); + key: "captureFocus", + value: function captureFocus(_ref4) { + var _this$telemetrySpan6; + var type = _ref4.type, + isSynthetic = _ref4.isSynthetic, + element = _ref4.element, + timestamp = _ref4.timestamp; + var name = 'rollbar-focus-event'; + var metadata = { + type: name, + subtype: type, + element: element + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic, + element: element + }; + (_this$telemetrySpan6 = this.telemetrySpan) === null || _this$telemetrySpan6 === void 0 || _this$telemetrySpan6.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + } + }, { + key: "captureResize", + value: function captureResize(_ref5) { + var _this$telemetrySpan7; + var type = _ref5.type, + isSynthetic = _ref5.isSynthetic, + width = _ref5.width, + height = _ref5.height, + textZoomRatio = _ref5.textZoomRatio, + timestamp = _ref5.timestamp; + var name = 'rollbar-resize-event'; + var metadata = { + type: name, + subtype: type, + width: width, + height: height, + textZoomRatio: textZoomRatio + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic, + width: width, + height: height, + textZoomRatio: textZoomRatio + }; + var event = this._getRepeatedEvent(name, otelAttributes); + if (event) { + return this._updateRepeatedEvent(event, otelAttributes, timestamp); + } + (_this$telemetrySpan7 = this.telemetrySpan) === null || _this$telemetrySpan7 === void 0 || _this$telemetrySpan7.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + } + }, { + key: "captureDragDrop", + value: function captureDragDrop(_ref6) { + var _this$telemetrySpan8; + var type = _ref6.type, + isSynthetic = _ref6.isSynthetic, + element = _ref6.element, + dropEffect = _ref6.dropEffect, + effectAllowed = _ref6.effectAllowed, + kinds = _ref6.kinds, + mediaTypes = _ref6.mediaTypes, + timestamp = _ref6.timestamp; + var name = 'rollbar-dragdrop-event'; + var metadata = { + type: name, + subtype: type, + isSynthetic: isSynthetic + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic + }; + if (type === 'dragstart') { + metadata = _objectSpread(_objectSpread({}, metadata), {}, { + element: element, + dropEffect: dropEffect, + effectAllowed: effectAllowed + }); + otelAttributes = _objectSpread(_objectSpread({}, otelAttributes), {}, { + element: element, + dropEffect: dropEffect, + effectAllowed: effectAllowed + }); + } + if (type === 'drop') { + metadata = _objectSpread(_objectSpread({}, metadata), {}, { + element: element, + dropEffect: dropEffect, + effectAllowed: effectAllowed, + kinds: kinds, + mediaTypes: mediaTypes + }); + otelAttributes = _objectSpread(_objectSpread({}, otelAttributes), {}, { + element: element, + dropEffect: dropEffect, + effectAllowed: effectAllowed, + kinds: kinds, + mediaTypes: mediaTypes + }); + } + (_this$telemetrySpan8 = this.telemetrySpan) === null || _this$telemetrySpan8 === void 0 || _this$telemetrySpan8.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + } + }, { + key: "captureNavigation", + value: function captureNavigation(from, to, rollbarUUID, timestamp) { + var _this$telemetrySpan9; + (_this$telemetrySpan9 = this.telemetrySpan) === null || _this$telemetrySpan9 === void 0 || _this$telemetrySpan9.addEvent('rollbar-navigation-event', { + 'previous.url.full': from, + 'url.full': to + }, fromMillis(timestamp)); + return this.capture('navigation', { + from: from, + to: to + }, 'info', rollbarUUID, timestamp); + } + }, { + key: "captureDomContentLoaded", + value: function captureDomContentLoaded(ts) { + return this.capture('navigation', { + subtype: 'DOMContentLoaded' + }, 'info', undefined, ts && ts.getTime()); + /** + * If we decide to make this a dom event instead, then use the line below: + return this.capture('dom', {subtype: 'DOMContentLoaded'}, 'info', undefined, ts && ts.getTime()); + */ + } + }, { + key: "captureLoad", + value: function captureLoad(ts) { + return this.capture('navigation', { + subtype: 'load' + }, 'info', undefined, ts && ts.getTime()); + /** + * If we decide to make this a dom event instead, then use the line below: + return this.capture('dom', {subtype: 'load'}, 'info', undefined, ts && ts.getTime()); + */ + } + }, { + key: "captureConnectivityChange", + value: function captureConnectivityChange(_ref7) { + var _this$telemetrySpan0; + var type = _ref7.type, + isSynthetic = _ref7.isSynthetic, + timestamp = _ref7.timestamp; + var name = 'rollbar-connectivity-event'; + var metadata = { + type: name, + subtype: type + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic + }; + (_this$telemetrySpan0 = this.telemetrySpan) === null || _this$telemetrySpan0 === void 0 || _this$telemetrySpan0.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('connectivity', metadata, 'info', null, timestamp, otelAttributes); + } - // add span ID & trace ID to occurrence - var opentracingSpanId = span.context().toSpanId(); - var opentracingTraceId = span.context().toTraceId(); + // Only intended to be used internally by the notifier + }, { + key: "_captureRollbarItem", + value: function _captureRollbarItem(item) { + if (!this.options.includeItemsInTelemetry) { + return; + } + if (item.err) { + return this.captureError(item.err, item.level, item.uuid, item.timestamp); + } + if (item.message) { + return this.captureLog(item.message, item.level, item.uuid, item.timestamp); + } if (item.custom) { - item.custom.opentracing_span_id = opentracingSpanId; - item.custom.opentracing_trace_id = opentracingTraceId; - } else { - item.custom = { - opentracing_span_id: opentracingSpanId, - opentracing_trace_id: opentracingTraceId - }; + return this.capture('log', item.custom, item.level, item.uuid, item.timestamp); } } + }, { + key: "push", + value: function push(e) { + this.queue.push(e); + if (this.queue.length > this.maxQueueSize) { + this.queue.shift(); + } + } + }]); +}(); +function getLevel(type, level) { + if (level) { + return level; } -}; -function generateItemHash(item) { - var message = item.message || ''; - var stack = (item.err || {}).stack || String(item.err); - return message + '::' + stack; -} - -// Node.js, Chrome, Safari, and some other browsers support this property -// which globally sets the number of stack frames returned in an Error object. -// If a browser can't use it, no harm done. -function setStackTraceLimit(options) { - if (options.stackTraceLimit) { - Error.stackTraceLimit = options.stackTraceLimit; - } + var defaultLevel = { + error: 'error', + manual: 'info' + }; + return defaultLevel[type] || 'info'; } - -/** - * Validate the Tracer object provided to the Client - * is valid for our Opentracing use case. - * @param {opentracer.Tracer} tracer - */ -function validateTracer(tracer) { - if (!tracer) { - return false; +/* harmony default export */ var telemetry = (Telemeter); +;// ./src/tracing/context.js +function context_typeof(o) { "@babel/helpers - typeof"; return context_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, context_typeof(o); } +function context_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function context_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, context_toPropertyKey(o.key), o); } } +function context_createClass(e, r, t) { return r && context_defineProperties(e.prototype, r), t && context_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function context_toPropertyKey(t) { var i = context_toPrimitive(t, "string"); return "symbol" == context_typeof(i) ? i : i + ""; } +function context_toPrimitive(t, r) { if ("object" != context_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != context_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +var Context = /*#__PURE__*/function () { + function Context(parentContext) { + context_classCallCheck(this, Context); + this._currentContext = parentContext ? new Map(parentContext) : new Map(); } - if (!tracer.scope || typeof tracer.scope !== 'function') { - return false; - } - var scope = tracer.scope(); - if (!scope || !scope.active || typeof scope.active !== 'function') { - return false; - } - return true; -} + return context_createClass(Context, [{ + key: "getValue", + value: function getValue(key) { + return this._currentContext.get(key); + } + }, { + key: "setValue", + value: function setValue(key, value) { + var context = new Context(this._currentContext); + context._currentContext.set(key, value); + return context; + } + }, { + key: "deleteValue", + value: function deleteValue(key) { + var context = new Context(self._currentContext); + context._currentContext.delete(key); + return context; + } + }]); +}(); +var ROOT_CONTEXT = new Context(); +;// ./src/tracing/contextManager.js +function contextManager_typeof(o) { "@babel/helpers - typeof"; return contextManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, contextManager_typeof(o); } +function contextManager_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function contextManager_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, contextManager_toPropertyKey(o.key), o); } } +function contextManager_createClass(e, r, t) { return r && contextManager_defineProperties(e.prototype, r), t && contextManager_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function contextManager_toPropertyKey(t) { var i = contextManager_toPrimitive(t, "string"); return "symbol" == contextManager_typeof(i) ? i : i + ""; } +function contextManager_toPrimitive(t, r) { if ("object" != contextManager_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != contextManager_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -/** - * Validate the Span object provided - * @param {opentracer.Span} span - */ -function validateSpan(span) { - if (!span || !span.context || typeof span.context !== 'function') { - return false; - } - var spanContext = span.context(); - if (!spanContext || !spanContext.toSpanId || !spanContext.toTraceId || typeof spanContext.toSpanId !== 'function' || typeof spanContext.toTraceId !== 'function') { - return false; +var ContextManager = /*#__PURE__*/function () { + function ContextManager() { + contextManager_classCallCheck(this, ContextManager); + this.currentContext = ROOT_CONTEXT; } - return true; -} -/* harmony default export */ var rollbar = (Rollbar); -;// ./src/apiUtility.js - -function buildPayload(data) { - if (!isType(data.context, 'string')) { - var contextResult = stringify(data.context); - if (contextResult.error) { - data.context = "Error: could not serialize 'context'"; - } else { - data.context = contextResult.value || ''; + return contextManager_createClass(ContextManager, [{ + key: "active", + value: function active() { + return this.currentContext; } - if (data.context.length > 255) { - data.context = data.context.substr(0, 255); + }, { + key: "enterContext", + value: function enterContext(context) { + var previousContext = this.currentContext; + this.currentContext = context || ROOT_CONTEXT; + return previousContext; } - } - return { - data: data - }; -} -function getTransportFromOptions(options, defaults, url) { - var hostname = defaults.hostname; - var protocol = defaults.protocol; - var port = defaults.port; - var path = defaults.path; - var search = defaults.search; - var timeout = options.timeout; - var transport = detectTransport(options); - var proxy = options.proxy; - if (options.endpoint) { - var opts = url.parse(options.endpoint); - hostname = opts.hostname; - protocol = opts.protocol; - port = opts.port; - path = opts.pathname; - search = opts.search; - } - return { - timeout: timeout, - hostname: hostname, - protocol: protocol, - port: port, - path: path, - search: search, - proxy: proxy, - transport: transport - }; -} -function detectTransport(options) { - var gWindow = typeof window != 'undefined' && window || typeof self != 'undefined' && self; - var transport = options.defaultTransport || 'xhr'; - if (typeof gWindow.fetch === 'undefined') transport = 'xhr'; - if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch'; - return transport; -} -function apiUtility_transportOptions(transport, method) { - var protocol = transport.protocol || 'https:'; - var port = transport.port || (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined); - var hostname = transport.hostname; - var path = transport.path; - var timeout = transport.timeout; - var transportAPI = transport.transport; - if (transport.search) { - path = path + transport.search; - } - if (transport.proxy) { - path = protocol + '//' + hostname + path; - hostname = transport.proxy.host || transport.proxy.hostname; - port = transport.proxy.port; - protocol = transport.proxy.protocol || protocol; - } - return { - timeout: timeout, - protocol: protocol, - hostname: hostname, - path: path, - port: port, - method: method, - transport: transportAPI - }; -} -function appendPathToPath(base, path) { - var baseTrailingSlash = /\/$/.test(base); - var pathBeginningSlash = /^\//.test(path); - if (baseTrailingSlash && pathBeginningSlash) { - path = path.substring(1); - } else if (!baseTrailingSlash && !pathBeginningSlash) { - path = '/' + path; - } - return base + path; + }, { + key: "exitContext", + value: function exitContext(context) { + this.currentContext = context; + return this.currentContext; + } + }, { + key: "with", + value: function _with(context, fn, thisArg) { + var previousContext = this.enterContext(context); + try { + for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { + args[_key - 3] = arguments[_key]; + } + return fn.call.apply(fn, [thisArg].concat(args)); + } finally { + this.exitContext(previousContext); + } + } + }]); +}(); +function createContextKey(key) { + // Use Symbol for OpenTelemetry compatibility. + return Symbol.for(key); } - -;// ./src/api.js -function api_typeof(o) { "@babel/helpers - typeof"; return api_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, api_typeof(o); } -function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { api_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function api_defineProperty(e, r, t) { return (r = api_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function api_toPropertyKey(t) { var i = api_toPrimitive(t, "string"); return "symbol" == api_typeof(i) ? i : i + ""; } -function api_toPrimitive(t, r) { if ("object" != api_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != api_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == api_typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(api_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } -function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } -function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } - - -var api_defaultOptions = { - hostname: 'api.rollbar.com', - path: '/api/1/item/', - search: null, - version: '1', - protocol: 'https:', - port: 443 -}; -var OTLPDefaultOptions = { - hostname: 'api.rollbar.com', - path: '/api/1/session/', - search: null, - version: '1', - protocol: 'https:', - port: 443 -}; +;// ./src/tracing/hrtime.js +/** + * @module hrtime + * + * @description Methods for handling OpenTelemetry hrtime. + */ /** - * Api is an object that encapsulates methods of communicating with - * the Rollbar API. It is a standard interface with some parts implemented - * differently for server or browser contexts. It is an object that should - * be instantiated when used so it can contain non-global options that may - * be different for another instance of RollbarApi. + * Convert a duration in milliseconds to an OpenTelemetry hrtime tuple. * - * @param options { - * accessToken: the accessToken to use for posting items to rollbar - * endpoint: an alternative endpoint to send errors to - * must be a valid, fully qualified URL. - * The default is: https://api.rollbar.com/api/1/item - * proxy: if you wish to proxy requests provide an object - * with the following keys: - * host or hostname (required): foo.example.com - * port (optional): 123 - * protocol (optional): https - * } + * @param {number} millis - The duration in milliseconds. + * @returns {[number, number]} An array where the first element is seconds + * and the second is nanoseconds. */ -function Api(options, transport, urllib, truncation) { - this.options = options; - this.transport = transport; - this.url = urllib; - this.truncation = truncation; - this.accessToken = options.accessToken; - this.transportOptions = _getTransport(options, urllib); - this.OTLPTransportOptions = _getOTLPTransport(options, urllib); +function hrtime_fromMillis(millis) { + return [Math.trunc(millis / 1000), Math.round(millis % 1000 * 1e6)]; } /** - * Wraps transport.post in a Promise to support async/await + * Convert an OpenTelemetry hrtime tuple back to a duration in milliseconds. * - * @param {Object} options - Options for the API request - * @param {string} options.accessToken - The access token for authentication - * @param {Object} options.transportOptions - Options for the transport - * @param {Object} options.payload - The data payload to send - * @returns {Promise} A promise that resolves with the response or rejects with an error - * @private + * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds]. + * @returns {number} The total duration in milliseconds. */ -Api.prototype._postPromise = function (_ref) { - var accessToken = _ref.accessToken, - options = _ref.options, - payload = _ref.payload, - headers = _ref.headers; - var self = this; - return new Promise(function (resolve, reject) { - self.transport.post({ - accessToken: accessToken, - options: options, - payload: payload, - headers: headers, - callback: function callback(err, resp) { - return err ? reject(err) : resolve(resp); - } - }); - }); -}; +function toMillis(hrtime) { + return hrtime[0] * 1e3 + Math.round(hrtime[1] / 1e6); +} /** + * Convert an OpenTelemetry hrtime tuple back to a duration in nanoseconds. * - * @param data - * @param callback + * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds]. + * @returns {number} The total duration in nanoseconds. */ -Api.prototype.postItem = function (data, callback) { - var options = apiUtility_transportOptions(this.transportOptions, 'POST'); - var payload = buildPayload(data); - var self = this; - - // ensure the network request is scheduled after the current tick. - setTimeout(function () { - self.transport.post({ - accessToken: self.accessToken, - options: options, - payload: payload, - callback: callback - }); - }, 0); -}; +function toNanos(hrtime) { + return hrtime[0] * 1e9 + hrtime[1]; +} /** - * Posts spans to the Rollbar API using the session endpoint + * Adds two OpenTelemetry hrtime tuples. + * + * @param {[number, number]} a - The first hrtime tuple [s, ns]. + * @param {[number, number]} b - The second hrtime tuple [s, ns]. + * @returns {[number, number]} Summed hrtime tuple, normalized. * - * @param {Array} payload - The spans to send - * @returns {Promise} A promise that resolves with the API response */ -Api.prototype.postSpans = /*#__PURE__*/function () { - var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(payload) { - var headers, - options, - _args = arguments; - return _regeneratorRuntime().wrap(function _callee$(_context) { - while (1) switch (_context.prev = _context.next) { - case 0: - headers = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; - options = apiUtility_transportOptions(this.OTLPTransportOptions, 'POST'); - _context.next = 4; - return this._postPromise({ - accessToken: this.accessToken, - options: options, - payload: payload, - headers: headers - }); - case 4: - return _context.abrupt("return", _context.sent); - case 5: - case "end": - return _context.stop(); - } - }, _callee, this); - })); - return function (_x) { - return _ref2.apply(this, arguments); - }; -}(); +function add(a, b) { + return [a[0] + b[0] + Math.trunc((a[1] + b[1]) / 1e9), (a[1] + b[1]) % 1e9]; +} /** + * Get the current high-resolution time as an OpenTelemetry hrtime tuple. * - * @param data - * @param callback + * @param {boolean} usePerformance=false - If true, uses the Performance API (timeOrigin + now()). + * + * @returns {[number, number]} The current hrtime tuple [s, ns]. */ -Api.prototype.buildJsonPayload = function (data, callback) { - var payload = buildPayload(data); - var stringifyResult; - if (this.truncation) { - stringifyResult = this.truncation.truncate(payload); - } else { - stringifyResult = stringify(payload); - } - if (stringifyResult.error) { - if (callback) { - callback(stringifyResult.error); - } - return null; +function hrtime_now() { + var usePerformance = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + if (usePerformance) { + return add(hrtime_fromMillis(performance.timeOrigin), hrtime_fromMillis(performance.now())); } - return stringifyResult.value; -}; + return hrtime_fromMillis(Date.now()); +} /** + * Check if a value is a valid OpenTelemetry hrtime tuple. + * + * An hrtime tuple is an Array of exactly two numbers: + * [seconds, nanoseconds] + * + * @param {*} value – anything to test + * @returns {boolean} true if `value` is a [number, number] array of length 2 * - * @param jsonPayload - * @param callback + * @example + * isHrTime([ 1, 500 ]); // true + * isHrTime([ 0, 1e9 ]); // true + * isHrTime([ '1', 500 ]); // false + * isHrTime({ 0: 1, 1: 500 }); // false */ -Api.prototype.postJsonPayload = function (jsonPayload, callback) { - var transportOptions = apiUtility_transportOptions(this.transportOptions, 'POST'); - this.transport.postJsonPayload(this.accessToken, transportOptions, jsonPayload, callback); -}; -Api.prototype.configure = function (options) { - var oldOptions = this.oldOptions; - this.options = src_merge(oldOptions, options); - this.transportOptions = _getTransport(this.options, this.url); - this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url); - if (this.options.accessToken !== undefined) { - this.accessToken = this.options.accessToken; - } - return this; -}; -function _getTransport(options, url) { - return getTransportFromOptions(options, api_defaultOptions, url); -} -function _getOTLPTransport(options, url) { - var _options$tracing; - options = _objectSpread(_objectSpread({}, options), {}, { - endpoint: (_options$tracing = options.tracing) === null || _options$tracing === void 0 ? void 0 : _options$tracing.endpoint - }); - return getTransportFromOptions(options, OTLPDefaultOptions, url); +function isHrTime(value) { + return Array.isArray(value) && value.length === 2 && typeof value[0] === 'number' && typeof value[1] === 'number'; } -/* harmony default export */ var src_api = (Api); -;// ./src/logger.js -var _log = function log() {}; -var levels = { - debug: 0, - info: 1, - warn: 2, - error: 3, - disable: 4 -}; -var logger = { - error: function error() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - return _log('error', args); - }, - warn: function warn() { - for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - return _log('warn', args); - }, - info: function info() { - for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } - return _log('info', args); - }, - debug: function debug() { - for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; - } - return _log('debug', args); - }, - log: function log() { - for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { - args[_key5] = arguments[_key5]; - } - return _log('info', args); - }, - init: function init(_ref) { - var logLevel = _ref.logLevel; - _log = function _log(level, args) { - if (levels[level] < levels[logLevel]) return; - args.unshift('Rollbar:'); - console[level].apply(console, args); - }; - } -}; -/* harmony default export */ var src_logger = (logger); -;// ./src/browser/globalSetup.js -function captureUncaughtExceptions(window, handler, shim) { - if (!window) { - return; + +/** + * Methods for handling hrtime. OpenTelemetry uses the [seconds, nanoseconds] + * format for hrtime in the `ReadableSpan` interface. + * + * @example + * import hrtime from '@tracing/hrtime.js'; + * + * hrtime.fromMillis(1000); + * hrtime.toMillis([0, 1000]); + * hrtime.add([0, 0], [0, 1000]); + * hrtime.now(); + * hrtime.isHrTime([0, 1000]); + */ +/* harmony default export */ var hrtime = ({ + fromMillis: hrtime_fromMillis, + toMillis: toMillis, + toNanos: toNanos, + add: add, + now: hrtime_now, + isHrTime: isHrTime +}); +;// ./src/tracing/exporter.js +function exporter_typeof(o) { "@babel/helpers - typeof"; return exporter_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, exporter_typeof(o); } +function exporter_slicedToArray(r, e) { return exporter_arrayWithHoles(r) || exporter_iterableToArrayLimit(r, e) || exporter_unsupportedIterableToArray(r, e) || exporter_nonIterableRest(); } +function exporter_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function exporter_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function exporter_arrayWithHoles(r) { if (Array.isArray(r)) return r; } +function exporter_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = exporter_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || exporter_unsupportedIterableToArray(r) || _nonIterableSpread(); } +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function exporter_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return exporter_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? exporter_arrayLikeToArray(r, a) : void 0; } } +function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } +function _arrayWithoutHoles(r) { if (Array.isArray(r)) return exporter_arrayLikeToArray(r); } +function exporter_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function exporter_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function exporter_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, exporter_toPropertyKey(o.key), o); } } +function exporter_createClass(e, r, t) { return r && exporter_defineProperties(e.prototype, r), t && exporter_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function exporter_toPropertyKey(t) { var i = exporter_toPrimitive(t, "string"); return "symbol" == exporter_typeof(i) ? i : i + ""; } +function exporter_toPrimitive(t, r) { if ("object" != exporter_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != exporter_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + + +/** + * SpanExporter is responsible for exporting ReadableSpan objects + * and transforming them into the OTLP-compatible format. + */ +var SpanExporter = /*#__PURE__*/function () { + function SpanExporter(api) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + exporter_classCallCheck(this, SpanExporter); + this.api = api; + this.options = options; } - var oldOnError; - if (typeof handler._rollbarOldOnError === 'function') { - oldOnError = handler._rollbarOldOnError; - } else if (window.onerror) { - oldOnError = window.onerror; - while (oldOnError._rollbarOldOnError) { - oldOnError = oldOnError._rollbarOldOnError; + + /** + * Export spans to the span export queue + * + * @param {Array} spans - Array of ReadableSpan objects to export + * @param {Function} _resultCallback - Optional callback (not used) + */ + return exporter_createClass(SpanExporter, [{ + key: "export", + value: function _export(spans, _resultCallback) { + spanExportQueue.push.apply(spanExportQueue, _toConsumableArray(spans)); } - handler._rollbarOldOnError = oldOnError; - } - handler.handleAnonymousErrors(); - var fn = function fn() { - var args = Array.prototype.slice.call(arguments, 0); - _rollbarWindowOnError(window, handler, oldOnError, args); - }; - if (shim) { - fn._rollbarOldOnError = oldOnError; - } - window.onerror = fn; -} -function _rollbarWindowOnError(window, r, old, args) { - if (window._rollbarWrappedError) { - if (!args[4]) { - args[4] = window._rollbarWrappedError; + + /** + * Transforms an array of ReadableSpan objects into the OTLP format payload + * compatible with the Rollbar API. This follows the OpenTelemetry protocol + * specification for traces. + * + * @returns {Object} OTLP format payload for API transmission + */ + }, { + key: "toPayload", + value: function toPayload() { + var _this = this; + var spans = spanExportQueue.slice(); + spanExportQueue.length = 0; + if (!spans || !spans.length) { + return { + resourceSpans: [] + }; + } + var resource = spans[0] && spans[0].resource || {}; + var scopeMap = new Map(); + var _iterator = exporter_createForOfIteratorHelper(spans), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var span = _step.value; + var scopeKey = span.instrumentationScope ? "".concat(span.instrumentationScope.name, ":").concat(span.instrumentationScope.version) : 'default:1.0.0'; + if (!scopeMap.has(scopeKey)) { + scopeMap.set(scopeKey, { + scope: span.instrumentationScope || { + name: 'default', + version: '1.0.0', + attributes: [] + }, + spans: [] + }); + } + scopeMap.get(scopeKey).spans.push(this._transformSpan(span)); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return { + resourceSpans: [{ + resource: this._transformResource(resource), + scopeSpans: Array.from(scopeMap.values()).map(function (scopeData) { + return { + scope: _this._transformInstrumentationScope(scopeData.scope), + spans: scopeData.spans + }; + }) + }] + }; } - if (!args[5]) { - args[5] = window._rollbarWrappedError._rollbarContext; + + /** + * Sends the given payload to the Rollbar API. + * + * @param {String} payload - Serialized OTLP format payload + * @param {Object} headers - Optional request headers + * @returns {Promise} Promise that resolves when the request completes + */ + }, { + key: "post", + value: function post(payload) { + var headers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return this.api.postSpans(payload, headers); } - window._rollbarWrappedError = null; - } - var ret = r.handleUncaughtException.apply(r, args); - if (old) { - old.apply(window, args); - } - // Let other chained onerror handlers above run before setting this. - // If an error is thrown and caught within a chained onerror handler, - // Error.prepareStackTrace() will see that one before the one we want. - if (ret === 'anonymous') { - r.anonymousErrorsPending += 1; // See Rollbar.prototype.handleAnonymousErrors() - } -} -function captureUnhandledRejections(window, handler, shim) { - if (!window) { - return; - } - if (typeof window._rollbarURH === 'function' && window._rollbarURH.belongsToShim) { - window.removeEventListener('unhandledrejection', window._rollbarURH); - } - var rejectionHandler = function rejectionHandler(evt) { - var reason, promise, detail; - try { - reason = evt.reason; - } catch (e) { - reason = undefined; - } - try { - promise = evt.promise; - } catch (e) { - promise = '[unhandledrejection] error getting `promise` from event'; + /** + * Transforms a ReadableSpan into the OTLP Span format + * + * @private + * @param {Object} span - ReadableSpan object to transform + * @returns {Object} OTLP Span format + */ + }, { + key: "_transformSpan", + value: function _transformSpan(span) { + var _this2 = this; + var transformAttributes = function transformAttributes(attributes) { + return Object.entries(attributes || {}).map(function (_ref) { + var _ref2 = exporter_slicedToArray(_ref, 2), + key = _ref2[0], + value = _ref2[1]; + return { + key: key, + value: _this2._transformAnyValue(value) + }; + }); + }; + var transformEvents = function transformEvents(events) { + return (events || []).map(function (event) { + return { + timeUnixNano: hrtime.toNanos(event.time), + name: event.name, + attributes: transformAttributes(event.attributes) + }; + }); + }; + return { + traceId: span.spanContext.traceId, + spanId: span.spanContext.spanId, + parentSpanId: span.parentSpanId || '', + name: span.name, + kind: span.kind || 1, + // INTERNAL by default + startTimeUnixNano: hrtime.toNanos(span.startTime), + endTimeUnixNano: hrtime.toNanos(span.endTime), + attributes: transformAttributes(span.attributes), + events: transformEvents(span.events) + }; } - try { - detail = evt.detail; - if (!reason && detail) { - reason = detail.reason; - promise = detail.promise; - } - } catch (e) { - // Ignore + + /** + * Transforms a resource object into OTLP Resource format + * + * @private + * @param {Object} resource - Resource information + * @returns {Object} OTLP Resource format + */ + }, { + key: "_transformResource", + value: function _transformResource(resource) { + var _this3 = this; + var attributes = resource.attributes || {}; + var keyValues = Object.entries(attributes).map(function (_ref3) { + var _ref4 = exporter_slicedToArray(_ref3, 2), + key = _ref4[0], + value = _ref4[1]; + return { + key: key, + value: _this3._transformAnyValue(value) + }; + }); + return { + attributes: keyValues + }; } - if (!reason) { - reason = '[unhandledrejection] error getting `reason` from event'; + + /** + * Transforms an instrumentation scope into OTLP InstrumentationScope format + * + * @private + * @param {Object} scope - Instrumentation scope information + * @returns {Object} OTLP InstrumentationScope format + */ + }, { + key: "_transformInstrumentationScope", + value: function _transformInstrumentationScope(scope) { + var _this4 = this; + return { + name: scope.name || '', + version: scope.version || '', + attributes: (scope.attributes || []).map(function (attr) { + return { + key: attr.key, + value: _this4._transformAnyValue(attr.value) + }; + }) + }; } - if (handler && handler.handleUnhandledRejection) { - handler.handleUnhandledRejection(reason, promise); + + /** + * Transforms a JavaScript value into an OTLP AnyValue + * + * @private + * @param {any} value - Value to transform + * @returns {Object} OTLP AnyValue format + */ + }, { + key: "_transformAnyValue", + value: function _transformAnyValue(value) { + var _this5 = this; + if (value === null || value === undefined) { + return { + stringValue: '' + }; + } + var type = exporter_typeof(value); + if (type === 'string') { + return { + stringValue: value + }; + } else if (type === 'number') { + if (Number.isInteger(value)) { + return { + intValue: value.toString() + }; + } else { + return { + doubleValue: value + }; + } + } else if (type === 'boolean') { + return { + boolValue: value + }; + } else if (Array.isArray(value)) { + return { + arrayValue: { + values: value.map(function (v) { + return _this5._transformAnyValue(v); + }) + } + }; + } else if (type === 'object') { + return { + kvlistValue: { + values: Object.entries(value).map(function (_ref5) { + var _ref6 = exporter_slicedToArray(_ref5, 2), + k = _ref6[0], + v = _ref6[1]; + return { + key: k, + value: _this5._transformAnyValue(v) + }; + }) + } + }; + } + return { + stringValue: String(value) + }; } - }; - rejectionHandler.belongsToShim = shim; - window._rollbarURH = rejectionHandler; - window.addEventListener('unhandledrejection', rejectionHandler); + }]); +}(); +var spanExportQueue = []; +;// ./src/tracing/id.js +/** + * Generate a random hexadecimal ID of specified byte length + * + * @param {number} bytes - Number of bytes for the ID (default: 16) + * @returns {string} - Hexadecimal string representation + */ +function gen() { + var bytes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16; + var randomBytes = new Uint8Array(bytes); + crypto.getRandomValues(randomBytes); + var randHex = Array.from(randomBytes, function (byte) { + return byte.toString(16).padStart(2, '0'); + }).join(''); + return randHex; } -;// ./src/browser/transport/fetch.js -function fetch_typeof(o) { "@babel/helpers - typeof"; return fetch_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, fetch_typeof(o); } -function fetch_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function fetch_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? fetch_ownKeys(Object(t), !0).forEach(function (r) { fetch_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : fetch_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function fetch_defineProperty(e, r, t) { return (r = fetch_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function fetch_toPropertyKey(t) { var i = fetch_toPrimitive(t, "string"); return "symbol" == fetch_typeof(i) ? i : i + ""; } -function fetch_toPrimitive(t, r) { if ("object" != fetch_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != fetch_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - +/** + * Tracing id generation utils + * + * @example + * import id from './id.js'; + * + * const spanId = id.gen(8); // => "a1b2c3d4e5f6..." + */ +/* harmony default export */ var id = ({ + gen: gen +}); +;// ./src/tracing/session.js +function session_typeof(o) { "@babel/helpers - typeof"; return session_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, session_typeof(o); } +function session_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function session_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? session_ownKeys(Object(t), !0).forEach(function (r) { session_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : session_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function session_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function session_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, session_toPropertyKey(o.key), o); } } +function session_createClass(e, r, t) { return r && session_defineProperties(e.prototype, r), t && session_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function session_defineProperty(e, r, t) { return (r = session_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function session_toPropertyKey(t) { var i = session_toPrimitive(t, "string"); return "symbol" == session_typeof(i) ? i : i + ""; } +function session_toPrimitive(t, r) { if ("object" != session_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != session_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -function makeFetchRequest(_ref) { - var accessToken = _ref.accessToken, - url = _ref.url, - method = _ref.method, - payload = _ref.payload, - headers = _ref.headers, - callback = _ref.callback, - timeout = _ref.timeout; - var controller; - var timeoutId; - if (isFiniteNumber(timeout)) { - controller = new AbortController(); - timeoutId = setTimeout(function () { - controller.abort(); - }, timeout); - } - headers = fetch_objectSpread({ - 'Content-Type': 'application/json', - 'X-Rollbar-Access-Token': accessToken, - signal: controller && controller.signal - }, headers); - fetch(url, { - method: method, - headers: headers, - body: payload - }).then(function (response) { - if (timeoutId) clearTimeout(timeoutId); - var respHeaders = response.headers; - var isItemRoute = url.endsWith('/api/1/item/'); - var headers = isItemRoute ? { - 'Rollbar-Replay-Enabled': respHeaders.get('Rollbar-Replay-Enabled'), - 'Rollbar-Replay-RateLimit-Remaining': respHeaders.get('Rollbar-Replay-RateLimit-Remaining'), - 'Rollbar-Replay-RateLimit-Reset': respHeaders.get('Rollbar-Replay-RateLimit-Reset') - } : {}; - var json = response.json(); - callback(null, json, headers); - }).catch(function (error) { - src_logger.error(error.message); - callback(error); - }); -} -/* harmony default export */ var transport_fetch = (makeFetchRequest); -;// ./src/browser/transport/xhr.js -function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || xhr_unsupportedIterableToArray(r, e) || _nonIterableRest(); } -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function xhr_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return xhr_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? xhr_arrayLikeToArray(r, a) : void 0; } } -function xhr_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } -/*global XDomainRequest*/ - - - -function makeXhrRequest(_ref) { - var accessToken = _ref.accessToken, - url = _ref.url, - method = _ref.method, - payload = _ref.payload, - headers = _ref.headers, - callback = _ref.callback, - requestFactory = _ref.requestFactory, - timeout = _ref.timeout; - var request; - if (requestFactory) { - request = requestFactory(); - } else { - request = _createXMLHTTPObject(); - } - if (!request) { - // Give up, no way to send requests - return callback(new Error('No way to send a request')); +var SESSION_KEY = 'RollbarSession'; +var Session = /*#__PURE__*/function () { + function Session(tracing, options) { + session_classCallCheck(this, Session); + session_defineProperty(this, "_attributes", void 0); + this.options = options; + this.tracing = tracing; + this.window = tracing.window; + this.session = null; + this._attributes = {}; } - try { - try { - var _onreadystatechange = function onreadystatechange() { - try { - if (_onreadystatechange && request.readyState === 4) { - _onreadystatechange = undefined; - var parseResponse = jsonParse(request.responseText); - if (_isSuccess(request)) { - var isItemRoute = url.endsWith('/api/1/item/'); - var _headers = isItemRoute ? { - 'Rollbar-Replay-Enabled': request.getResponseHeader('Rollbar-Replay-Enabled'), - 'Rollbar-Replay-RateLimit-Remaining': request.getResponseHeader('Rollbar-Replay-RateLimit-Remaining'), - 'Rollbar-Replay-RateLimit-Reset': request.getResponseHeader('Rollbar-Replay-RateLimit-Reset') - } : {}; - callback(parseResponse.error, parseResponse.value, _headers); - return; - } else if (_isNormalFailure(request)) { - if (request.status === 403) { - // likely caused by using a server access token - var message = parseResponse.value && parseResponse.value.message; - src_logger.error(message); - } - // return valid http status codes - callback(new Error(String(request.status))); - } else { - // IE will return a status 12000+ on some sort of connection failure, - // so we return a blank error - // http://msdn.microsoft.com/en-us/library/aa383770%28VS.85%29.aspx - var msg = 'XHR response had no status code (likely connection failure)'; - callback(_newRetriableError(msg)); - } - } - } catch (ex) { - //jquery source mentions firefox may error out while accessing the - //request members if there is a network error - //https://github.com/jquery/jquery/blob/a938d7b1282fc0e5c52502c225ae8f0cef219f0a/src/ajax/xhr.js#L111 - var exc; - if (ex && ex.stack) { - exc = ex; - } else { - exc = new Error(ex); - } - callback(exc); - } - }; - request.open(method, url, true); - if (request.setRequestHeader) { - request.setRequestHeader('Content-Type', 'application/json'); - request.setRequestHeader('X-Rollbar-Access-Token', accessToken); - for (var _i = 0, _Object$entries = Object.entries(headers !== null && headers !== void 0 ? headers : {}); _i < _Object$entries.length; _i++) { - var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2), - h = _Object$entries$_i[0], - v = _Object$entries$_i[1]; - request.setRequestHeader(h, v); - } - } - if (isFiniteNumber(timeout)) { - request.timeout = timeout; + return session_createClass(Session, [{ + key: "init", + value: function init() { + var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + if (this.session) { + return this; } - request.onreadystatechange = _onreadystatechange; - request.send(payload); - } catch (e1) { - // Sending using the normal xmlhttprequest object didn't work, try XDomainRequest - if (typeof XDomainRequest !== 'undefined') { - // Assume we are in a really old browser which has a bunch of limitations: - // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx - - // Extreme paranoia: if we have XDomainRequest then we have a window, but just in case - if (!window || !window.location) { - return callback(new Error('No window available during request, unknown environment')); - } - - // If the current page is http, try and send over http - if (window.location.href.substring(0, 5) === 'http:' && url.substring(0, 5) === 'https') { - url = 'http' + url.substring(5); + this.getSession() || this.createSession(); + this.initSessionAttributes(attrs); + return this; + } + }, { + key: "getSession", + value: function getSession() { + try { + var serializedSession = this.window.sessionStorage.getItem(SESSION_KEY); + if (!serializedSession) { + return null; } - var xdomainrequest = new XDomainRequest(); - xdomainrequest.onprogress = function () {}; - xdomainrequest.ontimeout = function () { - var msg = 'Request timed out'; - var code = 'ETIMEDOUT'; - callback(_newRetriableError(msg, code)); - }; - xdomainrequest.onerror = function () { - callback(new Error('Error during request')); - }; - xdomainrequest.onload = function () { - var parseResponse = jsonParse(xdomainrequest.responseText); - callback(parseResponse.error, parseResponse.value); - }; - xdomainrequest.open(method, url, true); - xdomainrequest.send(payload); - } else { - callback(new Error('Cannot find a method to transport a request')); + this.session = JSON.parse(serializedSession); + } catch (_unused) { + return null; } + return this; } - } catch (e2) { - callback(e2); - } -} -function _createXMLHTTPObject() { - /* global ActiveXObject:false */ - - var factories = [function () { - return new XMLHttpRequest(); - }, function () { - return new ActiveXObject('Msxml2.XMLHTTP'); - }, function () { - return new ActiveXObject('Msxml3.XMLHTTP'); - }, function () { - return new ActiveXObject('Microsoft.XMLHTTP'); - }]; - var xmlhttp; - var i; - var numFactories = factories.length; - for (i = 0; i < numFactories; i++) { - try { - xmlhttp = factories[i](); - break; - } catch (e) { - // pass + }, { + key: "createSession", + value: function createSession() { + this.session = { + id: id.gen(), + createdAt: Date.now() + }; + return this.setSession(this.session); } - } - return xmlhttp; -} -function _isSuccess(r) { - return r && r.status && r.status === 200; -} -function _isNormalFailure(r) { - return r && isType(r.status, 'number') && r.status >= 400 && r.status < 600; -} -function _newRetriableError(message, code) { - var err = new Error(message); - err.code = code || 'ENOTFOUND'; - return err; -} -/* harmony default export */ var xhr = (makeXhrRequest); -;// ./src/browser/transport.js - - - - -/* - * accessToken may be embedded in payload but that should not - * be assumed - * - * options: { - * hostname - * protocol - * path - * port - * method - * transport ('xhr' | 'fetch') - * } - * - * params is an object containing key/value pairs. These - * will be appended to the path as 'key=value&key=value' - * - * payload is an unserialized object - */ -function Transport(truncation) { - this.truncation = truncation; -} -Transport.prototype.get = function (accessToken, options, params, callback, requestFactory) { - if (!callback || !isFunction(callback)) { - callback = function callback() {}; - } - addParamsAndAccessTokenToPath(accessToken, options, params); - var method = 'GET'; - var url = formatUrl(options); - this._makeZoneRequest({ - accessToken: accessToken, - url: url, - method: method, - callback: callback, - requestFactory: requestFactory, - timeout: options.timeout, - transport: options.transport - }); -}; -Transport.prototype.post = function (_ref) { - var _this = this; - var accessToken = _ref.accessToken, - options = _ref.options, - payload = _ref.payload, - headers = _ref.headers, - callback = _ref.callback, - requestFactory = _ref.requestFactory; - return function (payload) { - if (!callback || !isFunction(callback)) { - callback = function callback() {}; + }, { + key: "setSession", + value: function setSession(session) { + var sessionString = JSON.stringify(session); + try { + this.window.sessionStorage.setItem(SESSION_KEY, sessionString); + } catch (_unused2) { + return null; + } + return this; } - if (!payload) { - return callback(new Error('Cannot send empty request')); + }, { + key: "attributes", + get: function get() { + return this._attributes; } - var stringifyResult; - // Check payload.body to ensure only items are truncated. - if (_this.truncation && payload.body) { - stringifyResult = _this.truncation.truncate(payload); - } else { - stringifyResult = stringify(payload); - } - if (stringifyResult.error) { - return callback(stringifyResult.error); - } - var payload = stringifyResult.value; - var method = 'POST'; - var url = formatUrl(options); - _this._makeZoneRequest({ - accessToken: accessToken, - url: url, - method: method, - payload: payload, - headers: headers, - callback: callback, - requestFactory: requestFactory, - timeout: options.timeout, - transport: options.transport - }); - }(payload); -}; -Transport.prototype.postJsonPayload = function (accessToken, options, payload, callback, requestFactory) { - if (!callback || !isFunction(callback)) { - callback = function callback() {}; - } - var method = 'POST'; - var url = formatUrl(options); - this._makeZoneRequest({ - accessToken: accessToken, - url: url, - method: method, - payload: payload, - callback: callback, - requestFactory: requestFactory, - timeout: options.timeout, - transport: options.transport - }); + }, { + key: "setAttributes", + value: function setAttributes(attributes) { + this._attributes = session_objectSpread(session_objectSpread({}, this._attributes), attributes); + return this; + } + }, { + key: "setUser", + value: function setUser(user) { + this.setAttributes({ + 'user.id': user === null || user === void 0 ? void 0 : user.id, + 'user.email': user === null || user === void 0 ? void 0 : user.email, + 'user.name': (user === null || user === void 0 ? void 0 : user.name) || (user === null || user === void 0 ? void 0 : user.username) + }); + return this; + } + }, { + key: "initSessionAttributes", + value: function initSessionAttributes(attrs) { + var _navigator$userAgentD, _navigator$userAgentD2, _navigator$userAgentD3; + this.setAttributes(session_objectSpread({ + 'session.id': this.session.id, + 'browser.brands': (_navigator$userAgentD = navigator.userAgentData) === null || _navigator$userAgentD === void 0 ? void 0 : _navigator$userAgentD.brands, + 'browser.language': navigator.language, + 'browser.mobile': (_navigator$userAgentD2 = navigator.userAgentData) === null || _navigator$userAgentD2 === void 0 ? void 0 : _navigator$userAgentD2.mobile, + 'browser.platform': (_navigator$userAgentD3 = navigator.userAgentData) === null || _navigator$userAgentD3 === void 0 ? void 0 : _navigator$userAgentD3.platform, + 'client.address': '$remote_ip', + // updated at the API + 'rollbar.notifier.framework': 'browser-js', + 'user_agent.original': navigator.userAgent + }, attrs)); + return this; + } + }]); +}(); +;// ./src/logger.js +var _log = function log() {}; +var levels = { + debug: 0, + info: 1, + warn: 2, + error: 3, + disable: 4 }; +var logger = { + error: function error() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + return _log('error', args); + }, + warn: function warn() { + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + return _log('warn', args); + }, + info: function info() { + for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; + } + return _log('info', args); + }, + debug: function debug() { + for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { + args[_key4] = arguments[_key4]; + } + return _log('debug', args); + }, + log: function log() { + for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { + args[_key5] = arguments[_key5]; + } + return _log('info', args); + }, + init: function init(_ref) { + var logLevel = _ref.logLevel; + _log = function _log(level, args) { + if (levels[level] < levels[logLevel]) return; + args.unshift('Rollbar:'); -// Wraps `_makeRequest` if zone.js is being used, ensuring that Rollbar -// API calls are not intercepted by any child forked zones. -// This is equivalent to `NgZone.runOutsideAngular` in Angular. -Transport.prototype._makeZoneRequest = function () { - var gWindow = typeof window != 'undefined' && window || typeof self != 'undefined' && self; - // Whenever zone.js is loaded and `Zone` is exposed globally, access - // the root zone to ensure that requests are always made within it. - // This approach is framework-agnostic, regardless of which - // framework zone.js is used with. - var rootZone = gWindow && gWindow.Zone && gWindow.Zone.root; - var args = Array.prototype.slice.call(arguments); - if (rootZone) { - var self = this; - rootZone.run(function () { - self._makeRequest.apply(undefined, args); - }); - } else { - this._makeRequest.apply(undefined, args); - } -}; -Transport.prototype._makeRequest = function (params) { - var payload = params.payload, - callback = params.callback, - transport = params.transport; - if (typeof RollbarProxy !== 'undefined') { - return _proxyRequest(payload, callback); - } - if (transport === 'fetch') { - transport_fetch(params); - } else { - xhr(params); + // eslint-disable-next-line no-console + console[level].apply(console, args); + }; } }; +/* harmony default export */ var src_logger = (logger); +;// ./src/tracing/spanProcessor.js +function spanProcessor_typeof(o) { "@babel/helpers - typeof"; return spanProcessor_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, spanProcessor_typeof(o); } +function spanProcessor_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = spanProcessor_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function spanProcessor_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return spanProcessor_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? spanProcessor_arrayLikeToArray(r, a) : void 0; } } +function spanProcessor_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function spanProcessor_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function spanProcessor_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, spanProcessor_toPropertyKey(o.key), o); } } +function spanProcessor_createClass(e, r, t) { return r && spanProcessor_defineProperties(e.prototype, r), t && spanProcessor_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function spanProcessor_toPropertyKey(t) { var i = spanProcessor_toPrimitive(t, "string"); return "symbol" == spanProcessor_typeof(i) ? i : i + ""; } +function spanProcessor_toPrimitive(t, r) { if ("object" != spanProcessor_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != spanProcessor_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -/* global RollbarProxy */ -function _proxyRequest(json, callback) { - var rollbarProxy = new RollbarProxy(); - rollbarProxy.sendJsonPayload(json, function (_msg) { - /* do nothing */ - }, function (err) { - callback(new Error(err)); - }); -} -/* harmony default export */ var browser_transport = (Transport); -;// ./src/browser/url.js -// See https://nodejs.org/docs/latest/api/url.html -function parse(url) { - var result = { - protocol: null, - auth: null, - host: null, - path: null, - hash: null, - href: url, - hostname: null, - port: null, - pathname: null, - search: null, - query: null - }; - var i, last; - i = url.indexOf('//'); - if (i !== -1) { - result.protocol = url.substring(0, i); - last = i + 2; - } else { - last = 0; - } - i = url.indexOf('@', last); - if (i !== -1) { - result.auth = url.substring(last, i); - last = i + 1; +var SpanProcessor = /*#__PURE__*/function () { + function SpanProcessor(exporter) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + spanProcessor_classCallCheck(this, SpanProcessor); + this.exporter = exporter; + this.options = options; + this.pendingSpans = new Map(); + this.transforms = [this.userTransform.bind(this)]; } - i = url.indexOf('/', last); - if (i === -1) { - i = url.indexOf('?', last); - if (i === -1) { - i = url.indexOf('#', last); - if (i === -1) { - result.host = url.substring(last); - } else { - result.host = url.substring(last, i); - result.hash = url.substring(i); - } - result.hostname = result.host.split(':')[0]; - result.port = result.host.split(':')[1]; - if (result.port) { - result.port = parseInt(result.port, 10); - } - return result; - } else { - result.host = url.substring(last, i); - result.hostname = result.host.split(':')[0]; - result.port = result.host.split(':')[1]; - if (result.port) { - result.port = parseInt(result.port, 10); - } - last = i; + return spanProcessor_createClass(SpanProcessor, [{ + key: "addTransform", + value: function addTransform(transformFn) { + this.transforms.unshift(transformFn); } - } else { - result.host = url.substring(last, i); - result.hostname = result.host.split(':')[0]; - result.port = result.host.split(':')[1]; - if (result.port) { - result.port = parseInt(result.port, 10); + }, { + key: "userTransform", + value: function userTransform(span) { + if (this.options.transformSpan) { + this.options.transformSpan({ + span: span + }); + } } - last = i; - } - i = url.indexOf('#', last); - if (i === -1) { - result.path = url.substring(last); - } else { - result.path = url.substring(last, i); - result.hash = url.substring(i); - } - if (result.path) { - var pathParts = result.path.split('?'); - result.pathname = pathParts[0]; - result.query = pathParts[1]; - result.search = result.query ? '?' + result.query : null; - } - return result; -} + }, { + key: "applyTransforms", + value: function applyTransforms(span) { + var _iterator = spanProcessor_createForOfIteratorHelper(this.transforms), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var transform = _step.value; + try { + transform(span); + } catch (e) { + src_logger.error('Error running span transform callback', e); + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + } + }, { + key: "onStart", + value: function onStart(span, _parentContext) { + this.pendingSpans.set(span.span.spanContext.spanId, span); + } + }, { + key: "onEnd", + value: function onEnd(span) { + this.applyTransforms(span.span); + this.exporter.export([span.export()]); + this.pendingSpans.delete(span.span.spanContext.spanId); + } + }]); +}(); +;// ./src/tracing/span.js +function span_typeof(o) { "@babel/helpers - typeof"; return span_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, span_typeof(o); } +function span_slicedToArray(r, e) { return span_arrayWithHoles(r) || span_iterableToArrayLimit(r, e) || span_unsupportedIterableToArray(r, e) || span_nonIterableRest(); } +function span_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function span_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return span_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? span_arrayLikeToArray(r, a) : void 0; } } +function span_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function span_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function span_arrayWithHoles(r) { if (Array.isArray(r)) return r; } +function span_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function span_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, span_toPropertyKey(o.key), o); } } +function span_createClass(e, r, t) { return r && span_defineProperties(e.prototype, r), t && span_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function span_toPropertyKey(t) { var i = span_toPrimitive(t, "string"); return "symbol" == span_typeof(i) ? i : i + ""; } +function span_toPrimitive(t, r) { if ("object" != span_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != span_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -;// ./node_modules/error-stack-parser-es/dist/lite.mjs -var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\S+:\d+/; -var CHROME_IE_STACK_REGEXP = /^\s*at .*(\S+:\d+|\(native\))/m; -var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\[native code\])?$/; -function lite_parse(error, options) { - if (typeof error.stacktrace !== "undefined" || typeof error["opera#sourceloc"] !== "undefined") return parseOpera(error, options);else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) return parseV8OrIE(error, options);else if (error.stack) return parseFFOrSafari(error, options);else if (options !== null && options !== void 0 && options.allowEmpty) return [];else throw new Error("Cannot parse given Error object"); -} -function parseStack(stackString, options) { - if (stackString.match(CHROME_IE_STACK_REGEXP)) return parseV8OrIeString(stackString, options);else return parseFFOrSafariString(stackString, options); -} -function extractLocation(urlLike) { - if (!urlLike.includes(":")) return [urlLike, undefined, undefined]; - var regExp = /(.+?)(?::(\d+))?(?::(\d+))?$/; - var parts = regExp.exec(urlLike.replace(/[()]/g, "")); - return [parts[1], parts[2] || undefined, parts[3] || undefined]; -} -function applySlice(lines, options) { - if (options && options.slice != null) { - if (Array.isArray(options.slice)) return lines.slice(options.slice[0], options.slice[1]); - return lines.slice(0, options.slice); - } - return lines; -} -function parseV8OrIE(error, options) { - return parseV8OrIeString(error.stack, options); -} -function parseV8OrIeString(stack, options) { - var filtered = applySlice(stack.split("\n").filter(function (line) { - return !!line.match(CHROME_IE_STACK_REGEXP); - }), options); - return filtered.map(function (line) { - if (line.includes("(eval ")) { - line = line.replace(/eval code/g, "eval").replace(/(\(eval at [^()]*)|(,.*$)/g, ""); +var Span = /*#__PURE__*/function () { + function Span(options) { + span_classCallCheck(this, Span); + this.usePerformance = options.usePerformance; + this.initReadableSpan(options); + this.spanProcessor = options.spanProcessor; + this.spanProcessor.onStart(this, options.context); + if (options.attributes) { + this.setAttributes(options.attributes); } - var sanitizedLine = line.replace(/^\s+/, "").replace(/\(eval code/g, "(").replace(/^.*?\s+/, ""); - var location = sanitizedLine.match(/ (\(.+\)$)/); - sanitizedLine = location ? sanitizedLine.replace(location[0], "") : sanitizedLine; - var locationParts = extractLocation(location ? location[1] : sanitizedLine); - var functionName = location && sanitizedLine || undefined; - var fileName = ["eval", ""].includes(locationParts[0]) ? undefined : locationParts[0]; - return { - function: functionName, - file: fileName, - line: locationParts[1] ? +locationParts[1] : undefined, - col: locationParts[2] ? +locationParts[2] : undefined, - raw: line - }; - }); -} -function parseFFOrSafari(error, options) { - return parseFFOrSafariString(error.stack, options); -} -function parseFFOrSafariString(stack, options) { - var filtered = applySlice(stack.split("\n").filter(function (line) { - return !line.match(SAFARI_NATIVE_CODE_REGEXP); - }), options); - return filtered.map(function (line) { - if (line.includes(" > eval")) line = line.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g, ":$1"); - if (!line.includes("@") && !line.includes(":")) { - return { - function: line - }; - } else { - var functionNameRegex = /(([^\n\r"\u2028\u2029]*".[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*(?:@[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*)*(?:[\n\r\u2028\u2029][^@]*)?)?[^@]*)@/; - var matches = line.match(functionNameRegex); - var functionName = matches && matches[1] ? matches[1] : undefined; - var locationParts = extractLocation(line.replace(functionNameRegex, "")); - return { - function: functionName, - file: locationParts[0], - line: locationParts[1] ? +locationParts[1] : undefined, - col: locationParts[2] ? +locationParts[2] : undefined, - raw: line + return this; + } + return span_createClass(Span, [{ + key: "initReadableSpan", + value: function initReadableSpan(options) { + var _options$session; + this.span = { + name: options.name, + kind: options.kind, + spanContext: options.spanContext, + parentSpanId: options.parentSpanId, + startTime: options.startTime || hrtime.now(options.usePerformance), + endTime: [0, 0], + status: { + code: 0, + message: '' + }, + attributes: { + 'session.id': (_options$session = options.session) === null || _options$session === void 0 ? void 0 : _options$session.id + }, + links: [], + events: [], + duration: 0, + ended: false, + resource: options.resource, + instrumentationScope: options.scope, + droppedAttributesCount: 0, + droppedEventsCount: 0, + droppedLinksCount: 0 }; } - }); -} -function parseOpera(e, options) { - if (!e.stacktrace || e.message.includes("\n") && e.message.split("\n").length > e.stacktrace.split("\n").length) return parseOpera9(e);else if (!e.stack) return parseOpera10(e);else return parseOpera11(e, options); -} -function parseOpera9(e, options) { - var lineRE = /Line (\d+).*script (?:in )?(\S+)/i; - var lines = e.message.split("\n"); - var result = []; - for (var i = 2, len = lines.length; i < len; i += 2) { - var match = lineRE.exec(lines[i]); - if (match) { - result.push({ - file: match[2], - line: +match[1], - raw: lines[i] - }); + }, { + key: "spanContext", + value: function spanContext() { + return this.span.spanContext; } - } - return applySlice(result, options); -} -function parseOpera10(e, options) { - var lineRE = /Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i; - var lines = e.stacktrace.split("\n"); - var result = []; - for (var i = 0, len = lines.length; i < len; i += 2) { - var match = lineRE.exec(lines[i]); - if (match) { - result.push({ - function: match[3] || undefined, - file: match[2], - line: match[1] ? +match[1] : undefined, - raw: lines[i] + }, { + key: "spanId", + get: function get() { + return this.span.spanContext.spanId; + } + }, { + key: "traceId", + get: function get() { + return this.span.spanContext.traceId; + } + }, { + key: "setAttribute", + value: function setAttribute(key, value) { + if (value == null || this.span.ended) return this; + if (key.length === 0) return this; + this.span.attributes[key] = value; + return this; + } + }, { + key: "setAttributes", + value: function setAttributes(attributes) { + for (var _i = 0, _Object$entries = Object.entries(attributes); _i < _Object$entries.length; _i++) { + var _Object$entries$_i = span_slicedToArray(_Object$entries[_i], 2), + k = _Object$entries$_i[0], + v = _Object$entries$_i[1]; + this.setAttribute(k, v); + } + return this; + } + }, { + key: "addEvent", + value: function addEvent(name) { + var attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var time = arguments.length > 2 ? arguments[2] : undefined; + if (this.span.ended) return this; + this.span.events.push({ + name: name, + attributes: attributes, + time: time || hrtime.now(), + droppedAttributesCount: 0 }); + return this; } - } - return applySlice(result, options); -} -function parseOpera11(error, options) { - var filtered = applySlice( - // @ts-expect-error missing stack property - error.stack.split("\n").filter(function (line) { - return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/); - }), options); - return filtered.map(function (line) { - var tokens = line.split("@"); - var locationParts = extractLocation(tokens.pop()); - var functionCall = tokens.shift() || ""; - var functionName = functionCall.replace(//, "$2").replace(/\([^)]*\)/g, "") || undefined; - var argsRaw; - if (functionCall.match(/\(([^)]*)\)/)) argsRaw = functionCall.replace(/^[^(]+\(([^)]*)\)$/, "$1"); - var args = argsRaw === undefined || argsRaw === "[arguments not available]" ? undefined : argsRaw.split(","); - return { - function: functionName, - args: args, - file: locationParts[0], - line: locationParts[1] ? +locationParts[1] : undefined, - col: locationParts[2] ? +locationParts[2] : undefined, - raw: line - }; - }); -} - -;// ./node_modules/error-stack-parser-es/dist/index.mjs - - -function stackframesLiteToStackframes(liteStackframes) { - return liteStackframes.map(function (liteStackframe) { - return { - functionName: liteStackframe.function, - args: liteStackframe.args, - fileName: liteStackframe.file, - lineNumber: liteStackframe.line, - columnNumber: liteStackframe.col, - source: liteStackframe.raw - }; - }); -} -function dist_parse(error, options) { - return stackframesLiteToStackframes(lite_parse(error, options)); -} -function dist_parseV8OrIE(error) { - return stackframesLiteToStackframes(parseV8OrIE$1(error)); -} -function dist_parseFFOrSafari(error) { - return stackframesLiteToStackframes(parseFFOrSafari$1(error)); -} -function dist_parseOpera(e) { - return stackframesLiteToStackframes(parseOpera$1(e)); -} -function dist_parseOpera9(e) { - return stackframesLiteToStackframes(parseOpera9$1(e)); -} -function dist_parseOpera10(e) { - return stackframesLiteToStackframes(parseOpera10$1(e)); -} -function dist_parseOpera11(error) { - return stackframesLiteToStackframes(parseOpera11$1(error)); -} - -;// ./src/errorParser.js - -var UNKNOWN_FUNCTION = '?'; -var ERR_CLASS_REGEXP = new RegExp('^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): '); -function guessFunctionName() { - return UNKNOWN_FUNCTION; -} -function gatherContext() { - return null; -} -function Frame(stackFrame) { - var data = {}; - data._stackFrame = stackFrame; - data.url = stackFrame.fileName; - data.line = stackFrame.lineNumber; - data.func = stackFrame.functionName; - data.column = stackFrame.columnNumber; - data.args = stackFrame.args; - data.context = gatherContext(); - return data; -} -function Stack(exception, skip) { - function getStack() { - var parserStack = []; - skip = skip || 0; - try { - parserStack = dist_parse(exception); - } catch (e) { - parserStack = []; + }, { + key: "isRecording", + value: function isRecording() { + return this.span.ended === false; } - var stack = []; - for (var i = skip; i < parserStack.length; i++) { - stack.push(new Frame(parserStack[i])); + }, { + key: "end", + value: function end(attributes, time) { + if (attributes) this.setAttributes(attributes); + this.span.endTime = time || hrtime.now(this.usePerformance); + this.span.ended = true; + this.spanProcessor.onEnd(this); } - return stack; - } - return { - stack: getStack(), - message: exception.message, - name: _mostSpecificErrorName(exception), - rawStack: exception.stack, - rawException: exception - }; -} -function errorParser_parse(e, skip) { - var err = e; - if (err.nested || err.cause) { - var traceChain = []; - while (err) { - traceChain.push(new Stack(err, skip)); - err = err.nested || err.cause; - skip = 0; // Only apply skip value to primary error + }, { + key: "export", + value: function _export() { + return this.span; } + }]); +}(); +;// ./src/tracing/tracer.js +function tracer_typeof(o) { "@babel/helpers - typeof"; return tracer_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, tracer_typeof(o); } +function tracer_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function tracer_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? tracer_ownKeys(Object(t), !0).forEach(function (r) { tracer_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : tracer_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function tracer_defineProperty(e, r, t) { return (r = tracer_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function tracer_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function tracer_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, tracer_toPropertyKey(o.key), o); } } +function tracer_createClass(e, r, t) { return r && tracer_defineProperties(e.prototype, r), t && tracer_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function tracer_toPropertyKey(t) { var i = tracer_toPrimitive(t, "string"); return "symbol" == tracer_typeof(i) ? i : i + ""; } +function tracer_toPrimitive(t, r) { if ("object" != tracer_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != tracer_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - // Return primary error with full trace chain attached. - traceChain[0].traceChain = traceChain; - return traceChain[0]; - } else { - return new Stack(err, skip); - } -} -function guessErrorClass(errMsg) { - if (!errMsg || !errMsg.match) { - return ['Unknown error. There was no error message to display.', '']; - } - var errClassMatch = errMsg.match(ERR_CLASS_REGEXP); - var errClass = '(unknown)'; - if (errClassMatch) { - errClass = errClassMatch[errClassMatch.length - 1]; - errMsg = errMsg.replace((errClassMatch[errClassMatch.length - 2] || '') + errClass + ':', ''); - errMsg = errMsg.replace(/(^[\s]+|[\s]+$)/g, ''); - } - return [errClass, errMsg]; -} -// * Prefers any value over an empty string -// * Prefers any value over 'Error' where possible -// * Prefers name over constructor.name when both are more specific than 'Error' -function _mostSpecificErrorName(error) { - var name = error.name && error.name.length && error.name; - var constructorName = error.constructor.name && error.constructor.name.length && error.constructor.name; - if (!name || !constructorName) { - return name || constructorName; - } - if (name === 'Error') { - return constructorName; +var Tracer = /*#__PURE__*/function () { + function Tracer(tracing, spanProcessor) { + tracer_classCallCheck(this, Tracer); + this.spanProcessor = spanProcessor; + this.tracing = tracing; } - return name; -} -/* harmony default export */ var errorParser = ({ - guessFunctionName: guessFunctionName, - guessErrorClass: guessErrorClass, - gatherContext: gatherContext, - parse: errorParser_parse, - Stack: Stack, - Frame: Frame -}); -;// ./src/browser/transforms.js + return tracer_createClass(Tracer, [{ + key: "startSpan", + value: function startSpan(name) { + var _this$tracing$resourc, _options$resource, _this$tracing$session; + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.tracing.contextManager.active(); + var parentSpan = this.tracing.getSpan(context); + var parentSpanContext = parentSpan === null || parentSpan === void 0 ? void 0 : parentSpan.spanContext(); + var spanId = id.gen(8); + var traceId; + var traceFlags = 0; + var traceState = null; + var parentSpanId; + if (parentSpanContext) { + traceId = parentSpanContext.traceId; + traceState = parentSpanContext.traceState; + parentSpanId = parentSpanContext.spanId; + } else { + traceId = id.gen(16); + } + var kind = 0; + var spanContext = { + traceId: traceId, + spanId: spanId, + traceFlags: traceFlags, + traceState: traceState + }; + var resource = { + attributes: tracer_objectSpread(tracer_objectSpread({}, ((_this$tracing$resourc = this.tracing.resource) === null || _this$tracing$resourc === void 0 ? void 0 : _this$tracing$resourc.attributes) || {}), ((_options$resource = options.resource) === null || _options$resource === void 0 ? void 0 : _options$resource.attributes) || {}) + }; + var span = new Span({ + resource: resource, + scope: this.tracing.scope, + session: (_this$tracing$session = this.tracing.session) === null || _this$tracing$session === void 0 ? void 0 : _this$tracing$session.session, + context: context, + spanContext: spanContext, + name: name, + kind: kind, + parentSpanId: parentSpanId, + spanProcessor: this.spanProcessor, + startTime: options.startTime, + usePerformance: options.usePerformance + }); + return span; + } + }]); +}(); +;// ./src/tracing/tracing.js +function tracing_typeof(o) { "@babel/helpers - typeof"; return tracing_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, tracing_typeof(o); } +function tracing_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function tracing_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? tracing_ownKeys(Object(t), !0).forEach(function (r) { tracing_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : tracing_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function tracing_defineProperty(e, r, t) { return (r = tracing_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function tracing_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function tracing_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, tracing_toPropertyKey(o.key), o); } } +function tracing_createClass(e, r, t) { return r && tracing_defineProperties(e.prototype, r), t && tracing_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function tracing_toPropertyKey(t) { var i = tracing_toPrimitive(t, "string"); return "symbol" == tracing_typeof(i) ? i : i + ""; } +function tracing_toPrimitive(t, r) { if ("object" != tracing_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != tracing_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -function handleDomException(item, options, callback) { - if (item.err && errorParser.Stack(item.err).name === 'DOMException') { - var originalError = new Error(); - originalError.name = item.err.name; - originalError.message = item.err.message; - originalError.stack = item.err.stack; - originalError.nested = item.err; - item.err = originalError; + + + +var SPAN_KEY = createContextKey('Rollbar Context Key SPAN'); +var Tracing = /*#__PURE__*/function () { + function Tracing(gWindow, api, options) { + tracing_classCallCheck(this, Tracing); + this.api = api; + this.options = options; + this.window = gWindow; + if (this.window.sessionStorage) { + this.session = new Session(this, options); + } + this.createTracer(); } - callback(null, item); -} -function handleItemWithError(item, options, callback) { - item.data = item.data || {}; - if (item.err) { - try { - item.stackInfo = item.err._savedStackTrace || errorParser.parse(item.err, item.skipFrames); - if (options.addErrorContext) { - transforms_addErrorContext(item); + return tracing_createClass(Tracing, [{ + key: "configure", + value: function configure(options) { + // Options merge happens before configure is called, so we can just replace. + this.options = options; + } + }, { + key: "initSession", + value: function initSession() { + if (this.session) { + this.session.init(); } - } catch (e) { - src_logger.error('Error while parsing the error object.', e); - try { - item.message = item.err.message || item.err.description || item.message || String(item.err); - } catch (e2) { - item.message = String(item.err) || String(e2); + } + }, { + key: "sessionId", + get: function get() { + if (this.session) { + return this.session.session.id; } - delete item.err; + return null; } - } - callback(null, item); -} -function transforms_addErrorContext(item) { - var chain = []; - var err = item.err; - chain.push(err); - while (err.nested || err.cause) { - err = err.nested || err.cause; - chain.push(err); - } - addErrorContext(item, chain); -} -function ensureItemHasSomethingToSay(item, options, callback) { - if (!item.message && !item.stackInfo && !item.custom) { - callback(new Error('No message, stack info, or custom data'), null); - } - callback(null, item); -} -function addBaseInfo(item, options, callback) { - var environment = options.payload && options.payload.environment || options.environment; - item.data = src_merge(item.data, { - environment: environment, - level: item.level, - endpoint: options.endpoint, - platform: 'browser', - framework: 'browser-js', - language: 'javascript', - server: {}, - uuid: item.uuid, - notifier: { - name: 'rollbar-browser-js', - version: options.version - }, - custom: item.custom - }); - callback(null, item); -} -function addRequestInfo(window) { - return function (item, options, callback) { - var requestInfo = {}; - if (window && window.location) { - requestInfo.url = window.location.href; - requestInfo.query_string = window.location.search; + }, { + key: "resource", + get: function get() { + var _this$options$payload, _this$options$payload2; + return { + attributes: tracing_objectSpread(tracing_objectSpread({}, this.options.resource || {}), {}, { + 'rollbar.environment': (_this$options$payload = (_this$options$payload2 = this.options.payload) === null || _this$options$payload2 === void 0 ? void 0 : _this$options$payload2.environment) !== null && _this$options$payload !== void 0 ? _this$options$payload : this.options.environment + }) + }; } - var remoteString = '$remote_ip'; - if (!options.captureIp) { - remoteString = null; - } else if (options.captureIp !== true) { - remoteString += '_anonymize'; + }, { + key: "scope", + get: function get() { + return { + name: 'rollbar-browser-js', + version: this.options.version + }; } - if (remoteString) requestInfo.user_ip = remoteString; - if (Object.keys(requestInfo).length > 0) { - set(item, 'data.request', requestInfo); + }, { + key: "idGen", + value: function idGen() { + var bytes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16; + return id.gen(bytes); } - callback(null, item); - }; -} -function addClientInfo(window) { - return function (item, options, callback) { - if (!window) { - return callback(null, item); + }, { + key: "createTracer", + value: function createTracer() { + this.contextManager = new ContextManager(); + this.exporter = new SpanExporter(this.api, this.options); + this.spanProcessor = new SpanProcessor(this.exporter, this.options.tracing); + this.tracer = new Tracer(this, this.spanProcessor); } - var nav = window.navigator || {}; - var scr = window.screen || {}; - set(item, 'data.client', { - runtime_ms: item.timestamp - window._rollbarStartTime, - timestamp: Math.round(item.timestamp / 1000), - javascript: { - browser: nav.userAgent, - language: nav.language, - cookie_enabled: nav.cookieEnabled, - screen: { - width: scr.width, - height: scr.height - } + }, { + key: "getTracer", + value: function getTracer() { + return this.tracer; + } + }, { + key: "addSpanTransform", + value: function addSpanTransform(transformFn) { + this.spanProcessor.addTransform(transformFn); + } + }, { + key: "getSpan", + value: function getSpan() { + var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.contextManager.active(); + return context.getValue(SPAN_KEY); + } + }, { + key: "setSpan", + value: function setSpan() { + var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.contextManager.active(); + var span = arguments.length > 1 ? arguments[1] : undefined; + return context.setValue(SPAN_KEY, span); + } + }, { + key: "startSpan", + value: function startSpan(name) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.contextManager.active(); + return this.tracer.startSpan(name, options, context); + } + }, { + key: "with", + value: function _with(context, fn, thisArg) { + var _this$contextManager; + for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { + args[_key - 3] = arguments[_key]; } - }); - callback(null, item); - }; -} -function addPluginInfo(window) { - return function (item, options, callback) { - if (!window || !window.navigator) { - return callback(null, item); + return (_this$contextManager = this.contextManager).with.apply(_this$contextManager, [context, fn, thisArg].concat(args)); } - var plugins = []; - var navPlugins = window.navigator.plugins || []; - var cur; - for (var i = 0, l = navPlugins.length; i < l; ++i) { - cur = navPlugins[i]; - plugins.push({ - name: cur.name, - description: cur.description - }); + }, { + key: "withSpan", + value: function withSpan(name, options, fn, thisArg) { + var span = this.startSpan(name, options); + return this.with(this.setSpan(this.contextManager.active(), span), fn, thisArg, span); } - set(item, 'data.client.javascript.plugins', plugins); - callback(null, item); - }; + }]); +}(); + +;// ./src/truncation.js +function truncation_slicedToArray(r, e) { return truncation_arrayWithHoles(r) || truncation_iterableToArrayLimit(r, e) || truncation_unsupportedIterableToArray(r, e) || truncation_nonIterableRest(); } +function truncation_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function truncation_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function truncation_arrayWithHoles(r) { if (Array.isArray(r)) return r; } +function truncation_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = truncation_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function truncation_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return truncation_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? truncation_arrayLikeToArray(r, a) : void 0; } } +function truncation_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } + + +function raw(payload, jsonBackup) { + return [payload, stringify(payload, jsonBackup)]; } -function addBody(item, options, callback) { - if (item.stackInfo) { - if (item.stackInfo.traceChain) { - addBodyTraceChain(item, options, callback); - } else { - addBodyTrace(item, options, callback); +function selectFrames(frames, range) { + var len = frames.length; + if (len > range * 2) { + return frames.slice(0, range).concat(frames.slice(len - range)); + } + return frames; +} +function truncateFrames(payload, jsonBackup, range) { + range = typeof range === 'undefined' ? 30 : range; + var body = payload.data.body; + var frames; + if (body.trace_chain) { + var chain = body.trace_chain; + var _iterator = truncation_createForOfIteratorHelper(chain), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var trace = _step.value; + frames = trace.frames; + frames = selectFrames(frames, range); + trace.frames = frames; + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); } - } else { - addBodyMessage(item, options, callback); + } else if (body.trace) { + frames = body.trace.frames; + frames = selectFrames(frames, range); + body.trace.frames = frames; } + return [payload, stringify(payload, jsonBackup)]; } -function addBodyMessage(item, options, callback) { - var message = item.message; - var custom = item.custom; - if (!message) { - message = 'Item sent with null or missing arguments.'; +function maybeTruncateValue(len, val) { + if (!val) { + return val; } - var result = { - body: message - }; - if (custom) { - result.extra = src_merge(custom); + if (val.length > len) { + return val.slice(0, len - 3).concat('...'); } - set(item, 'data.body', { - message: result - }); - callback(null, item); + return val; } -function stackFromItem(item) { - // Transform a TraceKit stackInfo object into a Rollbar trace - var stack = item.stackInfo.stack; - if (stack && stack.length === 0 && item._unhandledStackInfo && item._unhandledStackInfo.stack) { - stack = item._unhandledStackInfo.stack; - } - return stack; -} -function addBodyTraceChain(item, options, callback) { - var traceChain = item.stackInfo.traceChain; - var traces = []; - var traceChainLength = traceChain.length; - for (var i = 0; i < traceChainLength; i++) { - var trace = buildTrace(item, traceChain[i], options); - traces.push(trace); +function truncateStrings(len, payload, jsonBackup) { + function truncator(k, v, seen) { + switch (typeName(v)) { + case 'string': + return maybeTruncateValue(len, v); + case 'object': + case 'array': + return utility_traverse(v, truncator, seen); + default: + return v; + } } - set(item, 'data.body', { - trace_chain: traces - }); - callback(null, item); + payload = utility_traverse(payload, truncator); + return [payload, stringify(payload, jsonBackup)]; } -function addBodyTrace(item, options, callback) { - var stack = stackFromItem(item); - if (stack) { - var trace = buildTrace(item, item.stackInfo, options); - set(item, 'data.body', { - trace: trace - }); - callback(null, item); - } else { - var stackInfo = item.stackInfo; - var guess = errorParser.guessErrorClass(stackInfo.message); - var className = errorClass(stackInfo, guess[0], options); - var message = guess[1]; - item.message = className + ': ' + message; - addBodyMessage(item, options, callback); +function truncateTraceData(traceData) { + if (traceData.exception) { + delete traceData.exception.description; + traceData.exception.message = maybeTruncateValue(255, traceData.exception.message); } + traceData.frames = selectFrames(traceData.frames, 1); + return traceData; } -function buildTrace(item, stackInfo, options) { - var description = item && item.data.description; - var custom = item && item.custom; - var stack = stackFromItem(item); - var guess = errorParser.guessErrorClass(stackInfo.message); - var className = errorClass(stackInfo, guess[0], options); - var message = guess[1]; - var trace = { - exception: { - class: className, - message: message - } - }; - if (description) { - trace.exception.description = description; - } - if (stack) { - if (stack.length === 0) { - trace.exception.stack = stackInfo.rawStack; - trace.exception.raw = String(stackInfo.rawException); - } - var stackFrame; - var frame; - var code; - var pre; - var post; - var contextLength; - var i, mid; - trace.frames = []; - for (i = 0; i < stack.length; ++i) { - stackFrame = stack[i]; - frame = { - filename: stackFrame.url ? sanitizeUrl(stackFrame.url) : '(unknown)', - lineno: stackFrame.line || null, - method: !stackFrame.func || stackFrame.func === '?' ? '[anonymous]' : stackFrame.func, - colno: stackFrame.column - }; - if (options.sendFrameUrl) { - frame.url = stackFrame.url; - } - if (frame.method && frame.method.endsWith && frame.method.endsWith('_rollbar_wrapped')) { - continue; - } - code = pre = post = null; - contextLength = stackFrame.context ? stackFrame.context.length : 0; - if (contextLength) { - mid = Math.floor(contextLength / 2); - pre = stackFrame.context.slice(0, mid); - code = stackFrame.context[mid]; - post = stackFrame.context.slice(mid); - } - if (code) { - frame.code = code; - } - if (pre || post) { - frame.context = {}; - if (pre && pre.length) { - frame.context.pre = pre; - } - if (post && post.length) { - frame.context.post = post; - } - } - if (stackFrame.args) { - frame.args = stackFrame.args; +function minBody(payload, jsonBackup) { + var body = payload.data.body; + if (body.trace_chain) { + var chain = body.trace_chain; + var _iterator2 = truncation_createForOfIteratorHelper(chain.entries()), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var _step2$value = truncation_slicedToArray(_step2.value, 2), + index = _step2$value[0], + trace = _step2$value[1]; + chain[index] = truncateTraceData(trace); } - trace.frames.push(frame); - } - - // NOTE(cory): reverse the frames since rollbar.com expects the most recent call last - trace.frames.reverse(); - if (custom) { - trace.extra = src_merge(custom); + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); } + } else if (body.trace) { + body.trace = truncateTraceData(body.trace); } - return trace; + return [payload, stringify(payload, jsonBackup)]; } -function errorClass(stackInfo, guess, options) { - if (stackInfo.name) { - return stackInfo.name; - } else if (options.guessErrorClass) { - return guess; - } else { - return '(unknown)'; - } +function needsTruncation(payload, maxSize) { + return maxByteSize(payload) > maxSize; } -function addScrubber(scrubFn) { - return function (item, options, callback) { - if (scrubFn) { - var scrubFields = options.scrubFields || []; - var scrubPaths = options.scrubPaths || []; - item.data = scrubFn(item.data, scrubFields, scrubPaths); +function truncate(payload, jsonBackup, maxSize) { + maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize; + var strategies = [raw, truncateFrames, truncateStrings.bind(null, 1024), truncateStrings.bind(null, 512), truncateStrings.bind(null, 256), minBody]; + var strategy, results, result; + while (strategy = strategies.shift()) { + results = strategy(payload, jsonBackup); + payload = results[0]; + result = results[1]; + if (result.error || !needsTruncation(result.value, maxSize)) { + return result; } - callback(null, item); - }; + } + return result; } +/* harmony default export */ var truncation = ({ + truncate: truncate, + /* for testing */ + raw: raw, + truncateFrames: truncateFrames, + truncateStrings: truncateStrings, + maybeTruncateValue: maybeTruncateValue +}); +;// ./src/apiUtility.js -;// ./src/transforms.js - -function itemToPayload(item, options, callback) { - if (item._isUncaught) { - item.data._isUncaught = true; - } - if (item._originalArgs) { - item.data._originalArgs = item._originalArgs; +function buildPayload(data) { + if (!isType(data.context, 'string')) { + var contextResult = stringify(data.context); + if (contextResult.error) { + data.context = "Error: could not serialize 'context'"; + } else { + data.context = contextResult.value || ''; + } + if (data.context.length > 255) { + data.context = data.context.substr(0, 255); + } } - callback(null, item); + return { + data: data + }; } -function addPayloadOptions(item, options, callback) { - var payloadOptions = options.payload || {}; - if (payloadOptions.body) { - delete payloadOptions.body; +function getTransportFromOptions(options, defaults, url) { + var hostname = defaults.hostname; + var protocol = defaults.protocol; + var port = defaults.port; + var path = defaults.path; + var search = defaults.search; + var timeout = options.timeout; + var transport = detectTransport(options); + var proxy = options.proxy; + if (options.endpoint) { + var opts = url.parse(options.endpoint); + hostname = opts.hostname; + protocol = opts.protocol; + port = opts.port; + path = opts.pathname; + search = opts.search; } - item.data = src_merge(item.data, payloadOptions); - callback(null, item); + return { + timeout: timeout, + hostname: hostname, + protocol: protocol, + port: port, + path: path, + search: search, + proxy: proxy, + transport: transport + }; } -function addTelemetryData(item, options, callback) { - if (item.telemetryEvents) { - set(item, 'data.body.telemetry', item.telemetryEvents); - } - callback(null, item); +function detectTransport(options) { + var gWindow = typeof window !== 'undefined' && window || typeof self !== 'undefined' && self; + var transport = options.defaultTransport || 'xhr'; + if (typeof gWindow.fetch === 'undefined') transport = 'xhr'; + if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch'; + return transport; } -function addMessageWithError(item, options, callback) { - if (!item.message) { - callback(null, item); - return; +function apiUtility_transportOptions(transport, method) { + var protocol = transport.protocol || 'https:'; + var port = transport.port || (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined); + var hostname = transport.hostname; + var path = transport.path; + var timeout = transport.timeout; + var transportAPI = transport.transport; + if (transport.search) { + path = path + transport.search; } - var tracePath = 'data.body.trace_chain.0'; - var trace = get(item, tracePath); - if (!trace) { - tracePath = 'data.body.trace'; - trace = get(item, tracePath); - } - if (trace) { - if (!(trace.exception && trace.exception.description)) { - set(item, tracePath + '.exception.description', item.message); - callback(null, item); - return; - } - var extra = get(item, tracePath + '.extra') || {}; - var newExtra = src_merge(extra, { - message: item.message - }); - set(item, tracePath + '.extra', newExtra); + if (transport.proxy) { + path = protocol + '//' + hostname + path; + hostname = transport.proxy.host || transport.proxy.hostname; + port = transport.proxy.port; + protocol = transport.proxy.protocol || protocol; } - callback(null, item); -} -function userTransform(logger) { - return function (item, options, callback) { - var newItem = src_merge(item); - var response = null; - try { - if (isFunction(options.transform)) { - response = options.transform(newItem.data, item); - } - } catch (e) { - options.transform = null; - logger.error('Error while calling custom transform() function. Removing custom transform().', e); - callback(null, item); - return; - } - if (isPromise(response)) { - response.then(function (promisedItem) { - if (promisedItem) { - newItem.data = promisedItem; - } - callback(null, newItem); - }, function (error) { - callback(error, item); - }); - } else { - callback(null, newItem); - } + return { + timeout: timeout, + protocol: protocol, + hostname: hostname, + path: path, + port: port, + method: method, + transport: transportAPI }; } -function addConfigToPayload(item, options, callback) { - if (!options.sendConfig) { - return callback(null, item); - } - var configKey = '_rollbarConfig'; - var custom = get(item, 'data.custom') || {}; - custom[configKey] = options; - item.data.custom = custom; - callback(null, item); -} -function addFunctionOption(options, name) { - if (isFunction(options[name])) { - options[name] = options[name].toString(); +function appendPathToPath(base, path) { + var baseTrailingSlash = /\/$/.test(base); + var pathBeginningSlash = /^\//.test(path); + if (baseTrailingSlash && pathBeginningSlash) { + path = path.substring(1); + } else if (!baseTrailingSlash && !pathBeginningSlash) { + path = '/' + path; } + return base + path; } -function addConfiguredOptions(item, options, callback) { - var configuredOptions = options._configuredOptions; - // These must be stringified or they'll get dropped during serialization. - addFunctionOption(configuredOptions, 'transform'); - addFunctionOption(configuredOptions, 'checkIgnore'); - addFunctionOption(configuredOptions, 'onSendCallback'); - delete configuredOptions.accessToken; - item.data.notifier.configured_options = configuredOptions; - callback(null, item); -} -function addDiagnosticKeys(item, options, callback) { - var diagnostic = src_merge(item.notifier.client.notifier.diagnostic, item.diagnostic); - if (get(item, 'err._isAnonymous')) { - diagnostic.is_anonymous = true; - } - if (item._isUncaught) { - diagnostic.is_uncaught = item._isUncaught; - } - if (item.err) { - try { - diagnostic.raw_error = { - message: item.err.message, - name: item.err.name, - constructor_name: item.err.constructor && item.err.constructor.name, - filename: item.err.fileName, - line: item.err.lineNumber, - column: item.err.columnNumber, - stack: item.err.stack - }; - } catch (e) { - diagnostic.raw_error = { - failed: String(e) - }; - } - } - item.data.notifier.diagnostic = src_merge(item.data.notifier.diagnostic, diagnostic); - callback(null, item); -} +;// ./src/api.js +function api_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function api_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? api_ownKeys(Object(t), !0).forEach(function (r) { api_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : api_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function api_defineProperty(e, r, t) { return (r = api_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function api_typeof(o) { "@babel/helpers - typeof"; return api_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, api_typeof(o); } +function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); } +function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); } +function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } +function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } +function api_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function api_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, api_toPropertyKey(o.key), o); } } +function api_createClass(e, r, t) { return r && api_defineProperties(e.prototype, r), t && api_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function api_toPropertyKey(t) { var i = api_toPrimitive(t, "string"); return "symbol" == api_typeof(i) ? i : i + ""; } +function api_toPrimitive(t, r) { if ("object" != api_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != api_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -;// ./src/browser/predicates.js -function checkIgnore(item, settings) { - if (get(settings, 'plugins.jquery.ignoreAjaxErrors')) { - return !get(item, 'body.message.extra.isAjax'); +var defaultOptions = { + hostname: 'api.rollbar.com', + path: '/api/1/item/', + search: null, + version: '1', + protocol: 'https:', + port: 443 +}; +var OTLPDefaultOptions = { + hostname: 'api.rollbar.com', + path: '/api/1/session/', + search: null, + version: '1', + protocol: 'https:', + port: 443 +}; + +/** + * Api encapsulates methods of communicating with the Rollbar API. It is a + * standard interface with some parts implemented differently for server or + * browser contexts. It is an object that should be instantiated when used so + * it can contain non-global options that may be different for another instance + * of RollbarApi. + */ +var Api = /*#__PURE__*/function () { + /** + * @param {Object} options - Configuration supplied from the parent Rollbar instance. + * @param {string} options.accessToken - Token used to authenticate API calls. + * @param {string} [options.endpoint] - Optional fully qualified URL overriding + * the default `https://api.rollbar.com/api/1/item`. + * @param {Object} [options.proxy] - Optional proxy descriptor containing: + * `host`/`hostname` (required), `port`, and `protocol`. + * @param {Object} transport - Adapter implementing `post` and `postJsonPayload`. + * @param {Object} urllib - Minimal URL helper used for option normalization. + * @param {Object} truncation - Optional truncation helper for payload size enforcement. + */ + function Api(options, transport, urllib, truncation) { + api_classCallCheck(this, Api); + this.options = options; + this.transport = transport; + this.url = urllib; + this.truncation = truncation; + this.accessToken = options.accessToken; + this.transportOptions = _getTransport(options, urllib); + this.OTLPTransportOptions = _getOTLPTransport(options, urllib); } - return true; -} -;// ./src/predicates.js + /** + * Wraps transport.post in a Promise to support async/await + * + * @param {Object} options - Options for the API request + * @param {string} options.accessToken - The access token for authentication + * @param {Object} options.transportOptions - Options for the transport + * @param {Object} options.payload - The data payload to send + * @returns {Promise} A promise that resolves with the response or rejects with an error + * @private + */ + return api_createClass(Api, [{ + key: "_postPromise", + value: function _postPromise(_ref) { + var _this = this; + var accessToken = _ref.accessToken, + options = _ref.options, + payload = _ref.payload, + headers = _ref.headers; + return new Promise(function (resolve, reject) { + _this.transport.post({ + accessToken: accessToken, + options: options, + payload: payload, + headers: headers, + callback: function callback(err, resp) { + return err ? reject(err) : resolve(resp); + } + }); + }); + } -function checkLevel(item, settings) { - var level = item.level; - var levelVal = LEVELS[level] || 0; - var reportLevel = settings.reportLevel; - var reportLevelVal = LEVELS[reportLevel] || 0; - if (levelVal < reportLevelVal) { - return false; - } - return true; -} -function userCheckIgnore(logger) { - return function (item, settings) { - var isUncaught = !!item._isUncaught; - delete item._isUncaught; - var args = item._originalArgs; - delete item._originalArgs; - try { - if (isFunction(settings.onSendCallback)) { - settings.onSendCallback(isUncaught, args, item); - } - } catch (e) { - settings.onSendCallback = null; - logger.error('Error while calling onSendCallback, removing', e); + /** + * + * @param data + * @param callback + */ + }, { + key: "postItem", + value: function postItem(data, callback) { + var _this2 = this; + var options = apiUtility_transportOptions(this.transportOptions, 'POST'); + var payload = buildPayload(data); + + // ensure the network request is scheduled after the current tick. + setTimeout(function () { + _this2.transport.post({ + accessToken: _this2.accessToken, + options: options, + payload: payload, + callback: callback + }); + }, 0); } - try { - if (isFunction(settings.checkIgnore) && settings.checkIgnore(isUncaught, args, item)) { - return false; + + /** + * Posts spans to the Rollbar API using the session endpoint + * + * @param {Array} payload - The spans to send + * @returns {Promise} A promise that resolves with the API response + */ + }, { + key: "postSpans", + value: (function () { + var _postSpans = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(payload) { + var headers, + options, + _args = arguments; + return _regenerator().w(function (_context) { + while (1) switch (_context.n) { + case 0: + headers = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; + options = apiUtility_transportOptions(this.OTLPTransportOptions, 'POST'); + return _context.a(2, this._postPromise({ + accessToken: this.accessToken, + options: options, + payload: payload, + headers: headers + })); + } + }, _callee, this); + })); + function postSpans(_x) { + return _postSpans.apply(this, arguments); } - } catch (e) { - settings.checkIgnore = null; - logger.error('Error while calling custom checkIgnore(), removing', e); + return postSpans; + }() + /** + * + * @param data + * @param callback + */ + ) + }, { + key: "buildJsonPayload", + value: function buildJsonPayload(data, callback) { + var payload = buildPayload(data); + var stringifyResult; + if (this.truncation) { + stringifyResult = this.truncation.truncate(payload); + } else { + stringifyResult = stringify(payload); + } + if (stringifyResult.error) { + if (callback) { + callback(stringifyResult.error); + } + return null; + } + return stringifyResult.value; } - return true; - }; -} -function urlIsNotBlockListed(logger) { - return function (item, settings) { - return !urlIsOnAList(item, settings, 'blocklist', logger); - }; -} -function urlIsSafeListed(logger) { - return function (item, settings) { - return urlIsOnAList(item, settings, 'safelist', logger); - }; -} -function matchFrames(trace, list, block) { - if (!trace) { - return !block; - } - var frames = trace.frames; - if (!frames || frames.length === 0) { - return !block; - } - var frame, filename, url, urlRegex; - var listLength = list.length; - var frameLength = frames.length; - for (var i = 0; i < frameLength; i++) { - frame = frames[i]; - filename = frame.filename; - if (!isType(filename, 'string')) { - return !block; + + /** + * + * @param jsonPayload + * @param callback + */ + }, { + key: "postJsonPayload", + value: function postJsonPayload(jsonPayload, callback) { + var transportOptions = apiUtility_transportOptions(this.transportOptions, 'POST'); + this.transport.postJsonPayload(this.accessToken, transportOptions, jsonPayload, callback); } - for (var j = 0; j < listLength; j++) { - url = list[j]; - urlRegex = new RegExp(url); - if (urlRegex.test(filename)) { - return true; + }, { + key: "configure", + value: function configure(options) { + var oldOptions = this.options; + this.options = merge(oldOptions, options); + this.transportOptions = _getTransport(this.options, this.url); + this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url); + if (this.options.accessToken !== undefined) { + this.accessToken = this.options.accessToken; } + return this; } - } - return false; + }]); +}(); +function _getTransport(options, url) { + return getTransportFromOptions(options, defaultOptions, url); } -function urlIsOnAList(item, settings, safeOrBlock, logger) { - // safelist is the default - var block = false; - if (safeOrBlock === 'blocklist') { - block = true; - } - var list, traces; - try { - list = block ? settings.hostBlockList : settings.hostSafeList; - traces = get(item, 'body.trace_chain') || [get(item, 'body.trace')]; - - // These two checks are important to come first as they are defaults - // in case the list is missing or the trace is missing or not well-formed - if (!list || list.length === 0) { - return !block; - } - if (traces.length === 0 || !traces[0]) { - return !block; - } - var tracesLength = traces.length; - for (var i = 0; i < tracesLength; i++) { - if (matchFrames(traces[i], list, block)) { - return true; - } - } - } catch (e - /* istanbul ignore next */) { - if (block) { - settings.hostBlockList = null; - } else { - settings.hostSafeList = null; - } - var listName = block ? 'hostBlockList' : 'hostSafeList'; - logger.error("Error while reading your configuration's " + listName + ' option. Removing custom ' + listName + '.', e); - return !block; - } - return false; -} -function messageIsIgnored(logger) { - return function (item, settings) { - var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages; - try { - messageIsIgnored = false; - ignoredMessages = settings.ignoredMessages; - if (!ignoredMessages || ignoredMessages.length === 0) { - return true; - } - messages = messagesFromItem(item); - if (messages.length === 0) { - return true; - } - len = ignoredMessages.length; - for (i = 0; i < len; i++) { - rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi'); - for (j = 0; j < messages.length; j++) { - messageIsIgnored = rIgnoredMessage.test(messages[j]); - if (messageIsIgnored) { - return false; - } - } - } - } catch (e - /* istanbul ignore next */) { - settings.ignoredMessages = null; - logger.error("Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages."); - } - return true; - }; -} -function messagesFromItem(item) { - var body = item.body; - var messages = []; - - // The payload schema only allows one of trace_chain, message, or trace. - // However, existing test cases are based on having both trace and message present. - // So here we preserve the ability to collect strings from any combination of these keys. - if (body.trace_chain) { - var traceChain = body.trace_chain; - for (var i = 0; i < traceChain.length; i++) { - var trace = traceChain[i]; - messages.push(get(trace, 'exception.message')); - } - } - if (body.trace) { - messages.push(get(body, 'trace.exception.message')); - } - if (body.message) { - messages.push(get(body, 'message.body')); - } - return messages; +function _getOTLPTransport(options, url) { + var _options$tracing; + options = api_objectSpread(api_objectSpread({}, options), {}, { + endpoint: (_options$tracing = options.tracing) === null || _options$tracing === void 0 ? void 0 : _options$tracing.endpoint + }); + return getTransportFromOptions(options, OTLPDefaultOptions, url); } - -;// ./src/browser/replay/defaults.js -/** - * Default session replay recording options - * See https://github.com/rrweb-io/rrweb/blob/master/guide.md#options for details - */ -/* harmony default export */ var defaults = ({ - enabled: false, - // Whether recording is enabled - autoStart: true, - // Start recording automatically when Rollbar initializes - - // defaults used by triggers that don't specify them - triggerDefaults: { - samplingRatio: 1.0, - preDuration: 300, - postDuration: 5 - }, - triggers: [{ - type: 'occurrence', - level: ['error', 'critical'] - }], - debug: { - logErrors: true, - // Whether to log errors emitted by rrweb. - logEmits: false // Whether to log emitted events - }, - // Recording options - inlineStylesheet: true, - // Whether to inline stylesheets to improve replay accuracy - inlineImages: false, - // Whether to record the image content - collectFonts: true, - // Whether to collect fonts in the website - - // Privacy options - // Fine-grained control over which input types to mask - // By default only password inputs are masked if maskInputs is true - maskInputOptions: { - password: true, - email: false, - tel: false, - text: false, - color: false, - date: false, - 'datetime-local': false, - month: false, - number: false, - range: false, - search: false, - time: false, - url: false, - week: false - }, - // Mask all input values - maskAllInputs: false, - // Class names to block, mask, or ignore the content of elements. - blockClass: 'rb-block', - maskTextClass: 'rb-mask', - ignoreClass: 'rb-ignore', - // Remove unnecessary parts of the DOM - // By default all removable elements are removed - slimDOMOptions: { - script: true, - // Remove script elements - comment: true, - // Remove comments - headFavicon: true, - // Remove favicons in the head - headWhitespace: true, - // Remove whitespace in head - headMetaDescKeywords: true, - // Remove meta description and keywords - headMetaSocial: true, - // Remove social media meta tags - headMetaRobots: true, - // Remove robots meta directives - headMetaHttpEquiv: true, - // Remove http-equiv meta directives - headMetaAuthorship: true, - // Remove authorship meta directives - headMetaVerification: true // Remove verification meta directives - } - - // Custom callbacks for advanced use cases - // These are undefined by default and can be set programmatically - // maskInputFn: undefined, // Custom function to mask input values - // maskTextFn: undefined, // Custom function to mask text content - // errorHandler: undefined, // Custom error handler for recording errors - - // Plugin system - // plugins: [] // List of plugins to use (must be set programmatically) -}); -;// ./src/tracing/defaults.js -/** - * Default tracing options - */ -/* harmony default export */ var tracing_defaults = ({ - enabled: false, - endpoint: 'api.rollbar.com/api/1/session/' -}); +/* harmony default export */ var src_api = (Api); ;// ./src/defaults.js /** * Default options shared across platforms */ -var version = '3.0.0-rc.1'; +var version = '3.0.0'; var endpoint = 'api.rollbar.com/api/1/item/'; var logLevel = 'debug'; var reportLevel = 'debug'; @@ -3519,7 +2997,7 @@ var requestScrubFields = (/* unused pure expression or super */ null && (['reque var commonScrubHeaders = (/* unused pure expression or super */ null && (['authorization', 'www-authorization', 'http_authorization', 'omniauth.auth', 'cookie', 'oauth-access-token', 'x-access-token', 'x_csrf_token', 'http_x_csrf_token', 'x-csrf-token'])); // For backward compatibility with default export -/* harmony default export */ var src_defaults = ({ +/* harmony default export */ var defaults = ({ version: version, endpoint: endpoint, logLevel: logLevel, @@ -3528,3663 +3006,4397 @@ var commonScrubHeaders = (/* unused pure expression or super */ null && (['autho maxItems: maxItems, itemsPerMin: itemsPerMin }); -;// ./src/browser/defaults.js -function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || defaults_unsupportedIterableToArray(r) || _nonIterableSpread(); } -function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function defaults_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return defaults_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? defaults_arrayLikeToArray(r, a) : void 0; } } -function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } -function _arrayWithoutHoles(r) { if (Array.isArray(r)) return defaults_arrayLikeToArray(r); } -function defaults_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -/** - * Default browser options - */ - -var scrubFields = [].concat(_toConsumableArray(commonScrubFields), ['cc-number', 'card number', 'cardnumber', 'cardnum', 'ccnum', 'ccnumber', 'cc num', 'creditcardnumber', 'credit card number', 'newcreditcardnumber', 'new credit card', 'creditcardno', 'credit card no', 'card#', 'card #', 'cc-csc', 'cvc', 'cvc2', 'cvv2', 'ccv2', 'security code', 'card verification', 'name on credit card', 'name on card', 'nameoncard', 'cardholder', 'card holder', 'name des karteninhabers', 'ccname', 'card type', 'cardtype', 'cc type', 'cctype', 'payment type', 'expiration date', 'expirationdate', 'expdate', 'cc-exp', 'ccmonth', 'ccyear']); - -// For compatibility with existing code that expects default export with scrubFields property -/* harmony default export */ var browser_defaults = ({ - scrubFields: scrubFields -}); -;// ./src/browser/core.js -var _Rollbar; -function core_typeof(o) { "@babel/helpers - typeof"; return core_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, core_typeof(o); } -function core_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function core_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? core_ownKeys(Object(t), !0).forEach(function (r) { core_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : core_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function core_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function core_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, core_toPropertyKey(o.key), o); } } -function core_createClass(e, r, t) { return r && core_defineProperties(e.prototype, r), t && core_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function core_defineProperty(e, r, t) { return (r = core_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function core_toPropertyKey(t) { var i = core_toPrimitive(t, "string"); return "symbol" == core_typeof(i) ? i : i + ""; } -function core_toPrimitive(t, r) { if ("object" != core_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != core_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - - - - - - - - - - - - - - - -// Used to support global `Rollbar` instance. -var _instance = null; -var core_Rollbar = /*#__PURE__*/function () { - function Rollbar(options, client) { - core_classCallCheck(this, Rollbar); - src_logger.init({ - logLevel: options.logLevel || 'error' - }); - this.options = handleOptions(core_defaultOptions, options, null, src_logger); - this.options._configuredOptions = options; - this.components = this.components || {}; - var Telemeter = this.components.telemeter; - var Instrumenter = this.components.instrumenter; - this.wrapGlobals = this.components.wrapGlobals; - this.scrub = this.components.scrub; - var truncation = this.components.truncation; - var Tracing = this.components.tracing; - var Replay = this.components.replay; - var transport = new browser_transport(truncation); - var api = new src_api(this.options, transport, url_namespaceObject, truncation); - if (Tracing) { - this.tracing = new Tracing(_gWindow(), api, this.options); - this.tracing.initSession(); - } - if (Telemeter) { - this.telemeter = new Telemeter(this.options, this.tracing); - } - if (Replay && isBrowser()) { - var replayOptions = this.options.replay; - this.replay = new Replay({ - tracing: this.tracing, - telemeter: this.telemeter, - options: replayOptions - }); - if (replayOptions.enabled && replayOptions.autoStart) { - this.replay.recorder.start(); - } - } - this.client = client || new rollbar(this.options, api, src_logger, this.telemeter, this.tracing, this.replay, 'browser'); - var gWindow = _gWindow(); - var gDocument = typeof document != 'undefined' && document; - this.isChrome = gWindow.chrome && gWindow.chrome.runtime; // check .runtime to avoid Edge browsers - this.anonymousErrorsPending = 0; - addTransformsToNotifier(this.client.notifier, this, gWindow); - addPredicatesToQueue(this.client.queue); - this.setupUnhandledCapture(); - if (Instrumenter) { - this.instrumenter = new Instrumenter(this.options, this.client.telemeter, this, gWindow, gDocument); - this.instrumenter.instrument(); - } - this.setSessionAttributesFromOptions(options); - - // Used with rollbar-react for rollbar-react-native compatibility. - this.rollbar = this; +;// ./node_modules/error-stack-parser-es/dist/lite.mjs +var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\S+:\d+/; +var CHROME_IE_STACK_REGEXP = /^\s*at .*(\S+:\d+|\(native\))/m; +var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\[native code\])?$/; +function parse(error, options) { + if (typeof error.stacktrace !== "undefined" || typeof error["opera#sourceloc"] !== "undefined") return parseOpera(error, options);else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) return parseV8OrIE(error, options);else if (error.stack) return parseFFOrSafari(error, options);else if (options !== null && options !== void 0 && options.allowEmpty) return [];else throw new Error("Cannot parse given Error object"); +} +function parseStack(stackString, options) { + if (stackString.match(CHROME_IE_STACK_REGEXP)) return parseV8OrIeString(stackString, options);else return parseFFOrSafariString(stackString, options); +} +function extractLocation(urlLike) { + if (!urlLike.includes(":")) return [urlLike, undefined, undefined]; + var regExp = /(.+?)(?::(\d+))?(?::(\d+))?$/; + var parts = regExp.exec(urlLike.replace(/[()]/g, "")); + return [parts[1], parts[2] || undefined, parts[3] || undefined]; +} +function applySlice(lines, options) { + if (options && options.slice != null) { + if (Array.isArray(options.slice)) return lines.slice(options.slice[0], options.slice[1]); + return lines.slice(0, options.slice); } - return core_createClass(Rollbar, [{ - key: "global", - value: function global(options) { - this.client.global(options); - return this; - } - }, { - key: "configure", - value: function configure(options, payloadData) { - var _this$tracing, _this$replay, _this$instrumenter; - if (options.logLevel) { - src_logger.init({ - logLevel: options.logLevel - }); - } - this.setSessionAttributesFromOptions(options); - var oldOptions = this.options; - var payload = {}; - if (payloadData) { - payload = { - payload: payloadData - }; - } - this.options = handleOptions(oldOptions, options, payload, src_logger); - this.options._configuredOptions = handleOptions(oldOptions._configuredOptions, options, payload); - (_this$tracing = this.tracing) === null || _this$tracing === void 0 || _this$tracing.configure(this.options); - (_this$replay = this.replay) === null || _this$replay === void 0 || _this$replay.configure(this.options.replay); - this.client.configure(this.options, payloadData); - (_this$instrumenter = this.instrumenter) === null || _this$instrumenter === void 0 || _this$instrumenter.configure(this.options); - this.setupUnhandledCapture(); - return this; - } - }, { - key: "lastError", - value: function lastError() { - return this.client.lastError; - } - }, { - key: "log", - value: function log() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.log(item); - return { - uuid: uuid - }; - } - }, { - key: "debug", - value: function debug() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.debug(item); - return { - uuid: uuid - }; - } - }, { - key: "info", - value: function info() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.info(item); - return { - uuid: uuid - }; - } - }, { - key: "warn", - value: function warn() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.warn(item); - return { - uuid: uuid - }; - } - }, { - key: "warning", - value: function warning() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.warning(item); - return { - uuid: uuid - }; + return lines; +} +function parseV8OrIE(error, options) { + return parseV8OrIeString(error.stack, options); +} +function parseV8OrIeString(stack, options) { + var filtered = applySlice(stack.split("\n").filter(function (line) { + return !!line.match(CHROME_IE_STACK_REGEXP); + }), options); + return filtered.map(function (line) { + if (line.includes("(eval ")) { + line = line.replace(/eval code/g, "eval").replace(/(\(eval at [^()]*)|(,.*$)/g, ""); } - }, { - key: "error", - value: function error() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.error(item); + var sanitizedLine = line.replace(/^\s+/, "").replace(/\(eval code/g, "(").replace(/^.*?\s+/, ""); + var location = sanitizedLine.match(/ (\(.+\)$)/); + sanitizedLine = location ? sanitizedLine.replace(location[0], "") : sanitizedLine; + var locationParts = extractLocation(location ? location[1] : sanitizedLine); + var functionName = location && sanitizedLine || undefined; + var fileName = ["eval", ""].includes(locationParts[0]) ? undefined : locationParts[0]; + return { + function: functionName, + file: fileName, + line: locationParts[1] ? +locationParts[1] : undefined, + col: locationParts[2] ? +locationParts[2] : undefined, + raw: line + }; + }); +} +function parseFFOrSafari(error, options) { + return parseFFOrSafariString(error.stack, options); +} +function parseFFOrSafariString(stack, options) { + var filtered = applySlice(stack.split("\n").filter(function (line) { + return !line.match(SAFARI_NATIVE_CODE_REGEXP); + }), options); + return filtered.map(function (line) { + if (line.includes(" > eval")) line = line.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g, ":$1"); + if (!line.includes("@") && !line.includes(":")) { return { - uuid: uuid + function: line }; - } - }, { - key: "critical", - value: function critical() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.critical(item); + } else { + var functionNameRegex = /(([^\n\r"\u2028\u2029]*".[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*(?:@[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*)*(?:[\n\r\u2028\u2029][^@]*)?)?[^@]*)@/; + var matches = line.match(functionNameRegex); + var functionName = matches && matches[1] ? matches[1] : undefined; + var locationParts = extractLocation(line.replace(functionNameRegex, "")); return { - uuid: uuid + function: functionName, + file: locationParts[0], + line: locationParts[1] ? +locationParts[1] : undefined, + col: locationParts[2] ? +locationParts[2] : undefined, + raw: line }; } - }, { - key: "buildJsonPayload", - value: function buildJsonPayload(item) { - return this.client.buildJsonPayload(item); - } - }, { - key: "sendJsonPayload", - value: function sendJsonPayload(jsonPayload) { - return this.client.sendJsonPayload(jsonPayload); - } - }, { - key: "triggerDirectReplay", - value: function triggerDirectReplay(context) { - return this.triggerReplay(core_objectSpread({ - type: 'direct' - }, context)); + }); +} +function parseOpera(e, options) { + if (!e.stacktrace || e.message.includes("\n") && e.message.split("\n").length > e.stacktrace.split("\n").length) return parseOpera9(e);else if (!e.stack) return parseOpera10(e);else return parseOpera11(e, options); +} +function parseOpera9(e, options) { + var lineRE = /Line (\d+).*script (?:in )?(\S+)/i; + var lines = e.message.split("\n"); + var result = []; + for (var i = 2, len = lines.length; i < len; i += 2) { + var match = lineRE.exec(lines[i]); + if (match) { + result.push({ + file: match[2], + line: +match[1], + raw: lines[i] + }); } - }, { - key: "triggerReplay", - value: function triggerReplay(context) { - if (!this.replay) return null; - return this.replay.triggerReplay(context); - } - }, { - key: "setupUnhandledCapture", - value: function setupUnhandledCapture() { - var gWindow = _gWindow(); - if (!this.unhandledExceptionsInitialized) { - if (this.options.captureUncaught || this.options.handleUncaughtExceptions) { - captureUncaughtExceptions(gWindow, this); - if (this.wrapGlobals && this.options.wrapGlobalEventHandlers) { - this.wrapGlobals(gWindow, this); - } - this.unhandledExceptionsInitialized = true; - } - } - if (!this.unhandledRejectionsInitialized) { - if (this.options.captureUnhandledRejections || this.options.handleUnhandledRejections) { - captureUnhandledRejections(gWindow, this); - this.unhandledRejectionsInitialized = true; - } - } - } - }, { - key: "handleUncaughtException", - value: function handleUncaughtException(message, url, lineno, colno, error, context) { - if (!this.options.captureUncaught && !this.options.handleUncaughtExceptions) { - return; - } - - // Chrome will always send 5+ arguments and error will be valid or null, not undefined. - // If error is undefined, we have a different caller. - // Chrome also sends errors from web workers with null error, but does not invoke - // prepareStackTrace() for these. Test for empty url to skip them. - if (this.options.inspectAnonymousErrors && this.isChrome && error === null && url === '') { - return 'anonymous'; - } - var item; - var stackInfo = makeUnhandledStackInfo(message, url, lineno, colno, error, 'onerror', 'uncaught exception', errorParser); - if (isError(error)) { - item = this._createItem([message, error, context]); - item._unhandledStackInfo = stackInfo; - } else if (isError(url)) { - item = this._createItem([message, url, context]); - item._unhandledStackInfo = stackInfo; - } else { - item = this._createItem([message, context]); - item.stackInfo = stackInfo; - } - item.level = this.options.uncaughtErrorLevel; - item._isUncaught = true; - this.client.log(item); + } + return applySlice(result, options); +} +function parseOpera10(e, options) { + var lineRE = /Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i; + var lines = e.stacktrace.split("\n"); + var result = []; + for (var i = 0, len = lines.length; i < len; i += 2) { + var match = lineRE.exec(lines[i]); + if (match) { + result.push({ + function: match[3] || undefined, + file: match[2], + line: match[1] ? +match[1] : undefined, + raw: lines[i] + }); } + } + return applySlice(result, options); +} +function parseOpera11(error, options) { + var filtered = applySlice( + // @ts-expect-error missing stack property + error.stack.split("\n").filter(function (line) { + return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/); + }), options); + return filtered.map(function (line) { + var tokens = line.split("@"); + var locationParts = extractLocation(tokens.pop()); + var functionCall = tokens.shift() || ""; + var functionName = functionCall.replace(//, "$2").replace(/\([^)]*\)/g, "") || undefined; + var argsRaw; + if (functionCall.match(/\(([^)]*)\)/)) argsRaw = functionCall.replace(/^[^(]+\(([^)]*)\)$/, "$1"); + var args = argsRaw === undefined || argsRaw === "[arguments not available]" ? undefined : argsRaw.split(","); + return { + function: functionName, + args: args, + file: locationParts[0], + line: locationParts[1] ? +locationParts[1] : undefined, + col: locationParts[2] ? +locationParts[2] : undefined, + raw: line + }; + }); +} - /** - * Chrome only. Other browsers will ignore. - * - * Use Error.prepareStackTrace to extract information about errors that - * do not have a valid error object in onerror(). - * - * In tested version of Chrome, onerror is called first but has no way - * to communicate with prepareStackTrace. Use a counter to let this - * handler know which errors to send to Rollbar. - * - * In config options, set inspectAnonymousErrors to enable. - */ - }, { - key: "handleAnonymousErrors", - value: function handleAnonymousErrors() { - if (!this.options.inspectAnonymousErrors || !this.isChrome) { - return; - } - var r = this; - function prepareStackTrace(error, _stack) { - if (r.options.inspectAnonymousErrors) { - if (r.anonymousErrorsPending) { - // This is the only known way to detect that onerror saw an anonymous error. - // It depends on onerror reliably being called before Error.prepareStackTrace, - // which so far holds true on tested versions of Chrome. If versions of Chrome - // are tested that behave differently, this logic will need to be updated - // accordingly. - r.anonymousErrorsPending -= 1; - if (!error) { - // Not likely to get here, but calling handleUncaughtException from here - // without an error object would throw off the anonymousErrorsPending counter, - // so return now. - return; - } +;// ./node_modules/error-stack-parser-es/dist/index.mjs +/* unused harmony import specifier */ var parseV8OrIE$1; +/* unused harmony import specifier */ var parseFFOrSafari$1; +/* unused harmony import specifier */ var parseOpera$1; +/* unused harmony import specifier */ var parseOpera9$1; +/* unused harmony import specifier */ var parseOpera10$1; +/* unused harmony import specifier */ var parseOpera11$1; - // Allow this to be tracked later. - error._isAnonymous = true; - // url, lineno, colno shouldn't be needed for these errors. - // If that changes, update this accordingly, using the unused - // _stack param as needed (rather than parse error.toString()). - r.handleUncaughtException(error.message, null, null, null, error); - } - } +function stackframesLiteToStackframes(liteStackframes) { + return liteStackframes.map(function (liteStackframe) { + return { + functionName: liteStackframe.function, + args: liteStackframe.args, + fileName: liteStackframe.file, + lineNumber: liteStackframe.line, + columnNumber: liteStackframe.col, + source: liteStackframe.raw + }; + }); +} +function dist_parse(error, options) { + return stackframesLiteToStackframes(parse(error, options)); +} +function dist_parseV8OrIE(error) { + return stackframesLiteToStackframes(parseV8OrIE$1(error)); +} +function dist_parseFFOrSafari(error) { + return stackframesLiteToStackframes(parseFFOrSafari$1(error)); +} +function dist_parseOpera(e) { + return stackframesLiteToStackframes(parseOpera$1(e)); +} +function dist_parseOpera9(e) { + return stackframesLiteToStackframes(parseOpera9$1(e)); +} +function dist_parseOpera10(e) { + return stackframesLiteToStackframes(parseOpera10$1(e)); +} +function dist_parseOpera11(error) { + return stackframesLiteToStackframes(parseOpera11$1(error)); +} - // Workaround to ensure stack is preserved for normal errors. - return error.stack; - } +;// ./src/errorParser.js - // https://v8.dev/docs/stack-trace-api - try { - Error.prepareStackTrace = prepareStackTrace; - } catch (e) { - this.options.inspectAnonymousErrors = false; - this.error('anonymous error handler failed', e); - } +var UNKNOWN_FUNCTION = '?'; +var ERR_CLASS_REGEXP = new RegExp('^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): '); +function guessFunctionName() { + return UNKNOWN_FUNCTION; +} +function gatherContext() { + return null; +} +function Frame(stackFrame) { + var data = {}; + data._stackFrame = stackFrame; + data.url = stackFrame.fileName; + data.line = stackFrame.lineNumber; + data.func = stackFrame.functionName; + data.column = stackFrame.columnNumber; + data.args = stackFrame.args; + data.context = gatherContext(); + return data; +} +function Stack(exception, skip) { + function getStack() { + var parserStack = []; + skip = skip || 0; + try { + parserStack = dist_parse(exception); + } catch (_e) { + parserStack = []; } - }, { - key: "handleUnhandledRejection", - value: function handleUnhandledRejection(reason, promise) { - if (!this.options.captureUnhandledRejections && !this.options.handleUnhandledRejections) { - return; - } - var message = 'unhandled rejection was null or undefined!'; - if (reason) { - if (reason.message) { - message = reason.message; - } else { - var reasonResult = stringify(reason); - if (reasonResult.value) { - message = reasonResult.value; - } - } - } - var context = reason && reason._rollbarContext || promise && promise._rollbarContext; - var item; - if (isError(reason)) { - item = this._createItem([message, reason, context]); - } else { - item = this._createItem([message, reason, context]); - item.stackInfo = makeUnhandledStackInfo(message, '', 0, 0, null, 'unhandledrejection', '', errorParser); - } - item.level = this.options.uncaughtErrorLevel; - item._isUncaught = true; - item._originalArgs = item._originalArgs || []; - item._originalArgs.push(promise); - this.client.log(item); + var stack = []; + for (var i = skip; i < parserStack.length; i++) { + stack.push(new Frame(parserStack[i])); } - }, { - key: "wrap", - value: function wrap(f, context, _before) { - try { - var ctxFn; - if (isFunction(context)) { - ctxFn = context; - } else { - ctxFn = function ctxFn() { - return context || {}; - }; - } - if (!isFunction(f)) { - return f; - } - if (f._isWrap) { - return f; - } - if (!f._rollbar_wrapped) { - f._rollbar_wrapped = function () { - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } - try { - return f.apply(this, arguments); - } catch (exc) { - var e = exc; - if (e && window._rollbarWrappedError !== e) { - if (isType(e, 'string')) { - e = new String(e); - } - e._rollbarContext = ctxFn() || {}; - e._rollbarContext._wrappedSource = f.toString(); - window._rollbarWrappedError = e; - } - throw e; - } - }; - f._rollbar_wrapped._isWrap = true; - if (f.hasOwnProperty) { - for (var prop in f) { - if (f.hasOwnProperty(prop) && prop !== '_rollbar_wrapped') { - f._rollbar_wrapped[prop] = f[prop]; - } - } - } - } - return f._rollbar_wrapped; - } catch (e) { - // Return the original function if the wrap fails. - return f; - } - } - }, { - key: "captureEvent", - value: function captureEvent() { - var event = createTelemetryEvent(arguments); - return this.client.captureEvent(event.type, event.metadata, event.level); - } - }, { - key: "setSessionUser", - value: function setSessionUser(user) { - var _this$tracing2; - if (!((_this$tracing2 = this.tracing) !== null && _this$tracing2 !== void 0 && _this$tracing2.session)) return; - this.tracing.session.setUser(user); - } - }, { - key: "setSessionAttributes", - value: function setSessionAttributes(attrs) { - var _this$tracing3; - if (!((_this$tracing3 = this.tracing) !== null && _this$tracing3 !== void 0 && _this$tracing3.session)) return; - attrs = core_objectSpread({}, attrs); - this.tracing.session.setAttributes(attrs); - } - }, { - key: "setSessionAttributesFromOptions", - value: function setSessionAttributesFromOptions(options) { - var _options$payload, _options$client, _options$payload2, _options$payload3, _options$payload4; - var person = options.person || ((_options$payload = options.payload) === null || _options$payload === void 0 ? void 0 : _options$payload.person); - if (person) { - this.setSessionUser(person); - } - var code_version = ((_options$client = options.client) === null || _options$client === void 0 || (_options$client = _options$client.javascript) === null || _options$client === void 0 ? void 0 : _options$client.code_version) || options.codeVersion || options.code_version || ((_options$payload2 = options.payload) === null || _options$payload2 === void 0 || (_options$payload2 = _options$payload2.client) === null || _options$payload2 === void 0 || (_options$payload2 = _options$payload2.javascript) === null || _options$payload2 === void 0 ? void 0 : _options$payload2.code_version) || ((_options$payload3 = options.payload) === null || _options$payload3 === void 0 ? void 0 : _options$payload3.code_version) || ((_options$payload4 = options.payload) === null || _options$payload4 === void 0 ? void 0 : _options$payload4.codeVersion); - this.setSessionAttributes({ - 'rollbar.codeVersion': code_version, - 'rollbar.notifier.name': 'rollbar-browser-js', - 'rollbar.notifier.version': options.version - }); + return stack; + } + return { + stack: getStack(), + message: exception.message, + name: _mostSpecificErrorName(exception), + rawStack: exception.stack, + rawException: exception + }; +} +function errorParser_parse(e, skip) { + var err = e; + if (err.nested || err.cause) { + var traceChain = []; + while (err) { + traceChain.push(new Stack(err, skip)); + err = err.nested || err.cause; + skip = 0; // Only apply skip value to primary error } - // The following two methods are used internally and are not meant for public use - }, { - key: "captureDomContentLoaded", - value: function captureDomContentLoaded(e, ts) { - if (!ts) { - ts = new Date(); + // Return primary error with full trace chain attached. + traceChain[0].traceChain = traceChain; + return traceChain[0]; + } else { + return new Stack(err, skip); + } +} +function guessErrorClass(errMsg) { + if (!errMsg || !errMsg.match) { + return ['Unknown error. There was no error message to display.', '']; + } + var errClassMatch = errMsg.match(ERR_CLASS_REGEXP); + var errClass = '(unknown)'; + if (errClassMatch) { + errClass = errClassMatch[errClassMatch.length - 1]; + errMsg = errMsg.replace((errClassMatch[errClassMatch.length - 2] || '') + errClass + ':', ''); + errMsg = errMsg.replace(/(^[\s]+|[\s]+$)/g, ''); + } + return [errClass, errMsg]; +} + +// * Prefers any value over an empty string +// * Prefers any value over 'Error' where possible +// * Prefers name over constructor.name when both are more specific than 'Error' +function _mostSpecificErrorName(error) { + var name = error.name && error.name.length && error.name; + var constructorName = error.constructor.name && error.constructor.name.length && error.constructor.name; + if (!name || !constructorName) { + return name || constructorName; + } + if (name === 'Error') { + return constructorName; + } + return name; +} +/* harmony default export */ var errorParser = ({ + guessFunctionName: guessFunctionName, + guessErrorClass: guessErrorClass, + gatherContext: gatherContext, + parse: errorParser_parse, + Stack: Stack, + Frame: Frame +}); +;// ./src/predicates.js +function predicates_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = predicates_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function predicates_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return predicates_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? predicates_arrayLikeToArray(r, a) : void 0; } } +function predicates_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } + +function checkLevel(item, settings) { + var level = item.level; + var levelVal = LEVELS[level] || 0; + var reportLevel = settings.reportLevel; + var reportLevelVal = LEVELS[reportLevel] || 0; + if (levelVal < reportLevelVal) { + return false; + } + return true; +} +function userCheckIgnore(logger) { + return function (item, settings) { + var isUncaught = Boolean(item._isUncaught); + delete item._isUncaught; + var args = item._originalArgs; + delete item._originalArgs; + try { + if (isFunction(settings.onSendCallback)) { + settings.onSendCallback(isUncaught, args, item); } - return this.client.captureDomContentLoaded(ts); + } catch (e) { + settings.onSendCallback = null; + logger.error('Error while calling onSendCallback, removing', e); } - }, { - key: "captureLoad", - value: function captureLoad(e, ts) { - if (!ts) { - ts = new Date(); + try { + if (isFunction(settings.checkIgnore) && settings.checkIgnore(isUncaught, args, item)) { + return false; } - return this.client.captureLoad(ts); + } catch (e) { + settings.checkIgnore = null; + logger.error('Error while calling custom checkIgnore(), removing', e); } - }, { - key: "loadFull", - value: function loadFull() { - src_logger.info('Unexpected Rollbar.loadFull() called on a Notifier instance. This can happen when Rollbar is loaded multiple times.'); + return true; + }; +} +function urlIsNotBlockListed(logger) { + return function (item, settings) { + return !urlIsOnAList(item, settings, 'blocklist', logger); + }; +} +function urlIsSafeListed(logger) { + return function (item, settings) { + return urlIsOnAList(item, settings, 'safelist', logger); + }; +} +function matchFrames(trace, list, block) { + if (!trace) { + return !block; + } + var frames = trace.frames; + if (!frames || frames.length === 0) { + return !block; + } + var frame, filename, url, urlRegex; + var listLength = list.length; + var frameLength = frames.length; + for (var i = 0; i < frameLength; i++) { + frame = frames[i]; + filename = frame.filename; + if (!isType(filename, 'string')) { + return !block; } - }, { - key: "_createItem", - value: function _createItem(args) { - return createItem(args, src_logger, this); + for (var j = 0; j < listLength; j++) { + url = list[j]; + urlRegex = new RegExp(url); + if (urlRegex.test(filename)) { + return true; + } } + } + return false; +} +function urlIsOnAList(item, settings, safeOrBlock, logger) { + // safelist is the default + var block = false; + if (safeOrBlock === 'blocklist') { + block = true; + } + var list, traces; + try { + list = block ? settings.hostBlockList : settings.hostSafeList; + traces = get(item, 'body.trace_chain') || [get(item, 'body.trace')]; - // Static version of instance methods support the legacy pattern of a - // global `Rollbar` instance, where after calling `Rollbar.init()`, - // `Rollbar` can be used as if it were an instance. - // If support for this pattern is dropped, these static methods can be removed. - }], [{ - key: "init", - value: function init(options, client) { - if (_instance) { - return _instance.global(options).configure(options); - } - _instance = new Rollbar(options, client); - return _instance; + // These two checks are important to come first as they are defaults + // in case the list is missing or the trace is missing or not well-formed + if (!list || list.length === 0) { + return !block; } - }, { - key: "setComponents", - value: function setComponents(components) { - Rollbar.prototype.components = components; + if (traces.length === 0 || !traces[0]) { + return !block; } - }, { - key: "callInstance", - value: function callInstance(method, args) { - if (!_instance) { - var message = 'Rollbar is not initialized'; - src_logger.error(message); - var maybeCallback = _getFirstFunction(args); - if (maybeCallback) { - maybeCallback(new Error(message)); - } - return; + var tracesLength = traces.length; + for (var i = 0; i < tracesLength; i++) { + if (matchFrames(traces[i], list, block)) { + return true; } - return _instance[method].apply(_instance, args); } - }]); -}(); -/* Internal */ -_Rollbar = core_Rollbar; -core_defineProperty(core_Rollbar, "global", function () { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; + } catch (e + /* istanbul ignore next */) { + if (block) { + settings.hostBlockList = null; + } else { + settings.hostSafeList = null; + } + var listName = block ? 'hostBlockList' : 'hostSafeList'; + logger.error("Error while reading your configuration's " + listName + ' option. Removing custom ' + listName + '.', e); + return !block; } - return _Rollbar.callInstance('global', args); -}); -core_defineProperty(core_Rollbar, "configure", function () { - for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - return _Rollbar.callInstance('configure', args); -}); -core_defineProperty(core_Rollbar, "lastError", function () { - for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } - return _Rollbar.callInstance('lastError', args); -}); -core_defineProperty(core_Rollbar, "log", function () { - for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; - } - return _Rollbar.callInstance('log', args); -}); -core_defineProperty(core_Rollbar, "debug", function () { - for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { - args[_key5] = arguments[_key5]; - } - return _Rollbar.callInstance('debug', args); -}); -core_defineProperty(core_Rollbar, "info", function () { - for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { - args[_key6] = arguments[_key6]; - } - return _Rollbar.callInstance('info', args); -}); -core_defineProperty(core_Rollbar, "warn", function () { - for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { - args[_key7] = arguments[_key7]; - } - return _Rollbar.callInstance('warn', args); -}); -core_defineProperty(core_Rollbar, "warning", function () { - for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { - args[_key8] = arguments[_key8]; - } - return _Rollbar.callInstance('warning', args); -}); -core_defineProperty(core_Rollbar, "error", function () { - for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) { - args[_key9] = arguments[_key9]; - } - return _Rollbar.callInstance('error', args); -}); -core_defineProperty(core_Rollbar, "critical", function () { - for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) { - args[_key10] = arguments[_key10]; - } - return _Rollbar.callInstance('critical', args); -}); -core_defineProperty(core_Rollbar, "buildJsonPayload", function () { - for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) { - args[_key11] = arguments[_key11]; - } - return _Rollbar.callInstance('buildJsonPayload', args); -}); -core_defineProperty(core_Rollbar, "sendJsonPayload", function () { - for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) { - args[_key12] = arguments[_key12]; - } - return _Rollbar.callInstance('sendJsonPayload', args); -}); -core_defineProperty(core_Rollbar, "wrap", function () { - for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) { - args[_key13] = arguments[_key13]; - } - return _Rollbar.callInstance('wrap', args); -}); -core_defineProperty(core_Rollbar, "captureEvent", function () { - for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) { - args[_key14] = arguments[_key14]; - } - return _Rollbar.callInstance('captureEvent', args); -}); -function addTransformsToNotifier(notifier, rollbar, gWindow) { - notifier.addTransform(handleDomException).addTransform(handleItemWithError).addTransform(ensureItemHasSomethingToSay).addTransform(addBaseInfo).addTransform(addRequestInfo(gWindow)).addTransform(addClientInfo(gWindow)).addTransform(addPluginInfo(gWindow)).addTransform(addBody).addTransform(addMessageWithError).addTransform(addTelemetryData).addTransform(addConfigToPayload).addTransform(addScrubber(rollbar.scrub)).addTransform(addPayloadOptions).addTransform(userTransform(src_logger)).addTransform(addConfiguredOptions).addTransform(addDiagnosticKeys).addTransform(itemToPayload); + return false; } -function addPredicatesToQueue(queue) { - queue.addPredicate(checkLevel).addPredicate(checkIgnore).addPredicate(userCheckIgnore(src_logger)).addPredicate(urlIsNotBlockListed(src_logger)).addPredicate(urlIsSafeListed(src_logger)).addPredicate(messageIsIgnored(src_logger)); +function messageIsIgnored(logger) { + return function (item, settings) { + var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages; + try { + messageIsIgnored = false; + ignoredMessages = settings.ignoredMessages; + if (!ignoredMessages || ignoredMessages.length === 0) { + return true; + } + messages = messagesFromItem(item); + if (messages.length === 0) { + return true; + } + len = ignoredMessages.length; + for (i = 0; i < len; i++) { + rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi'); + for (j = 0; j < messages.length; j++) { + messageIsIgnored = rIgnoredMessage.test(messages[j]); + if (messageIsIgnored) { + return false; + } + } + } + } catch (_e + /* istanbul ignore next */) { + settings.ignoredMessages = null; + logger.error("Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages."); + } + return true; + }; } -function _getFirstFunction(args) { - for (var i = 0, len = args.length; i < len; ++i) { - if (isFunction(args[i])) { - return args[i]; +function messagesFromItem(item) { + var body = item.body; + var messages = []; + + // The payload schema only allows one of trace_chain, message, or trace. + // However, existing test cases are based on having both trace and message present. + // So here we preserve the ability to collect strings from any combination of these keys. + if (body.trace_chain) { + var traceChain = body.trace_chain; + var _iterator = predicates_createForOfIteratorHelper(traceChain), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var trace = _step.value; + messages.push(get(trace, 'exception.message')); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); } } - return undefined; -} -function _gWindow() { - return typeof window != 'undefined' && window || typeof self != 'undefined' && self; + if (body.trace) { + messages.push(get(body, 'trace.exception.message')); + } + if (body.message) { + messages.push(get(body, 'message.body')); + } + return messages; } +;// ./src/notifier.js +function notifier_typeof(o) { "@babel/helpers - typeof"; return notifier_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, notifier_typeof(o); } +function notifier_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function notifier_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, notifier_toPropertyKey(o.key), o); } } +function notifier_createClass(e, r, t) { return r && notifier_defineProperties(e.prototype, r), t && notifier_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function notifier_toPropertyKey(t) { var i = notifier_toPrimitive(t, "string"); return "symbol" == notifier_typeof(i) ? i : i + ""; } +function notifier_toPrimitive(t, r) { if ("object" != notifier_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != notifier_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -var core_defaultOptions = { - environment: 'unknown', - version: version, - scrubFields: browser_defaults.scrubFields, - logLevel: logLevel, - reportLevel: reportLevel, - uncaughtErrorLevel: uncaughtErrorLevel, - endpoint: endpoint, - verbose: false, - enabled: true, - transmit: true, - sendConfig: false, - includeItemsInTelemetry: true, - captureIp: true, - inspectAnonymousErrors: true, - ignoreDuplicateErrors: true, - wrapGlobalEventHandlers: false, - replay: defaults, - tracing: tracing_defaults -}; -/* harmony default export */ var core = (core_Rollbar); -;// ./src/telemetry.js -var _excluded = ["otelAttributes"]; -function telemetry_typeof(o) { "@babel/helpers - typeof"; return telemetry_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, telemetry_typeof(o); } -function telemetry_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function telemetry_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? telemetry_ownKeys(Object(t), !0).forEach(function (r) { telemetry_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : telemetry_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function telemetry_defineProperty(e, r, t) { return (r = telemetry_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } -function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } -function telemetry_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function telemetry_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, telemetry_toPropertyKey(o.key), o); } } -function telemetry_createClass(e, r, t) { return r && telemetry_defineProperties(e.prototype, r), t && telemetry_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function telemetry_toPropertyKey(t) { var i = telemetry_toPrimitive(t, "string"); return "symbol" == telemetry_typeof(i) ? i : i + ""; } -function telemetry_toPrimitive(t, r) { if ("object" != telemetry_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != telemetry_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - -var MAX_EVENTS = 100; -// Temporary workaround while solving commonjs -> esm issues in Node 18 - 20. -function fromMillis(millis) { - return [Math.trunc(millis / 1000), Math.round(millis % 1000 * 1e6)]; -} -var Telemeter = /*#__PURE__*/function () { - function Telemeter(options, tracing) { - var _this$tracing; - telemetry_classCallCheck(this, Telemeter); - this.queue = []; - this.options = src_merge(options); - var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS; - this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS)); - this.tracing = tracing; - this.telemetrySpan = (_this$tracing = this.tracing) === null || _this$tracing === void 0 ? void 0 : _this$tracing.startSpan('rollbar-telemetry', {}); +/* + * Notifier - delegates between the client exposed API, the chain of transforms + * necessary to turn an item into something that can be sent to Rollbar, and the + * queue which handles the communcation with the Rollbar API servers. + */ +var Notifier = /*#__PURE__*/function () { + /** + * + * @param {Object} queue - an object that conforms to the interface: + * `addItem(item, callback)` + * @param {Object} options - an object representing the options to be set for + * this notifier, this should have any defaults already set by the caller + */ + function Notifier(queue, options) { + notifier_classCallCheck(this, Notifier); + this.queue = queue; + this.options = options; + this.transforms = []; + this.diagnostic = {}; } - return telemetry_createClass(Telemeter, [{ + + /** + * configure - updates the options for this notifier with the passed in object + * + * @param {Object} options - an object which gets merged with the current + * options set on this notifier + * @returns this + */ + return notifier_createClass(Notifier, [{ key: "configure", value: function configure(options) { + var _this$queue; + (_this$queue = this.queue) === null || _this$queue === void 0 || _this$queue.configure(options); var oldOptions = this.options; - this.options = src_merge(oldOptions, options); - var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS; - var newMaxEvents = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS)); - var deleteCount = 0; - if (this.queue.length > newMaxEvents) { - deleteCount = this.queue.length - newMaxEvents; - } - this.maxQueueSize = newMaxEvents; - this.queue.splice(0, deleteCount); + this.options = merge(oldOptions, options); + return this; } + + /** + * Adds a transform onto the end of the queue of transforms for this notifier + * + * @param {Function} transform - a function which takes three arguments: + * - item: An Object representing the data to eventually be sent to Rollbar + * - options: The current value of the options for this notifier + * - callback: `function(err: (Null|Error), item: (Null|Object))` the + * transform must call this callback with a null value for error if it + * wants the processing chain to continue, otherwise with an error to + * terminate the processing. The item should be the updated item after + * this transform is finished modifying it. + */ }, { - key: "copyEvents", - value: function copyEvents() { - var events = Array.prototype.slice.call(this.queue, 0); - if (isFunction(this.options.filterTelemetry)) { - try { - var i = events.length; - while (i--) { - if (this.options.filterTelemetry(events[i])) { - events.splice(i, 1); - } - } - } catch (e) { - this.options.filterTelemetry = null; - } + key: "addTransform", + value: function addTransform(transform) { + if (isFunction(transform)) { + this.transforms.push(transform); } - - // Filter until supported in legacy telemetry - events = events.filter(function (e) { - return e.type !== 'connectivity'; - }); - - // Remove internal keys from output - events = events.map(function (_ref) { - var otelAttributes = _ref.otelAttributes, - event = _objectWithoutProperties(_ref, _excluded); - return event; - }); - return events; + return this; } + + /** + * The internal log function which applies the configured transforms and then + * pushes onto the queue to be sent to the backend. + * + * @param {Object} item - An object with the following structure: + * - message [String] - An optional string to be sent to rollbar + * - error [Error] - An optional error + * @param {Function} callback - A function of type `function(err, resp)` which + * will be called with exactly one null argument and one non-null argument. + * The callback will be called once, either during the transform stage if + * an error occurs inside a transform, or in response to the communication + * with the backend. The second argument will be the response from the + * backend in case of success. + */ }, { - key: "exportTelemetrySpan", - value: function exportTelemetrySpan() { - var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - if (this.telemetrySpan) { - this.telemetrySpan.end(attributes); - this.telemetrySpan = this.tracing.startSpan('rollbar-telemetry', {}); - } + key: "log", + value: function log(item, callback) { + var _this = this; + callback = isFunction(callback) ? callback : function () {}; + if (!this.options.enabled) { + return callback(new Error('Rollbar is not enabled'), null); + } + this.queue.addPendingItem(item); + var originalError = item.err; + this._applyTransforms(item, function (err, i) { + if (err) { + _this.queue.removePendingItem(item); + return callback(err, null); + } + _this.queue.addItem(i, callback, originalError, item); + }); } + + /* Internal */ + + /** + * Applies the transforms that have been added to this notifier sequentially. + * See `addTransform` for more information. + * + * @param {Object} item - An item to be transformed + * @param {Function} callback - A function of type `function(err, item)` which + * will be called with a non-null error and a null item in the case of a + * transform failure, or a null error and non-null item after all + * transforms have been applied. + */ }, { - key: "capture", - value: function capture(type, metadata, level, rollbarUUID) { - var timestamp = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null; - var otelAttributes = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null; - var e = { - level: getLevel(type, level), - type: type, - timestamp_ms: timestamp || utility_now(), - body: metadata, - source: 'client' - }; - if (rollbarUUID) { - e.uuid = rollbarUUID; - } - if (otelAttributes) { - e.otelAttributes = otelAttributes; - } - try { - if (isFunction(this.options.filterTelemetry) && this.options.filterTelemetry(e)) { - return false; + key: "_applyTransforms", + value: function _applyTransforms(item, callback) { + var transformIndex = -1; + var transformsLength = this.transforms.length; + var transforms = this.transforms; + var options = this.options; + var _next = function next(err, i) { + if (err) { + callback(err, null); + return; } - } catch (exc) { - this.options.filterTelemetry = null; - } - this.push(e); - return e; + transformIndex++; + if (transformIndex === transformsLength) { + callback(null, i); + return; + } + transforms[transformIndex](i, options, _next); + }; + _next(null, item); } - }, { - key: "captureEvent", - value: function captureEvent(type, metadata, level, rollbarUUID) { - return this.capture(type, metadata, level, rollbarUUID); + }]); +}(); + +;// ./src/queue.js +function queue_typeof(o) { "@babel/helpers - typeof"; return queue_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, queue_typeof(o); } +function queue_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function queue_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, queue_toPropertyKey(o.key), o); } } +function queue_createClass(e, r, t) { return r && queue_defineProperties(e.prototype, r), t && queue_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function queue_defineProperty(e, r, t) { return (r = queue_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function queue_toPropertyKey(t) { var i = queue_toPrimitive(t, "string"); return "symbol" == queue_typeof(i) ? i : i + ""; } +function queue_toPrimitive(t, r) { if ("object" != queue_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != queue_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + + +/** + * Queue - an object which handles which handles a queue of items to be sent to Rollbar. + * This object handles rate limiting via a passed in rate limiter, retries based on connection + * errors, and filtering of items based on a set of configurable predicates. The communication to + * the backend is performed via a given API object. + */ +var Queue = /*#__PURE__*/function () { + /** + * @param rateLimiter - An object which conforms to the interface + * `rateLimiter.shouldSend(item) -> bool` + * @param api - An object which conforms to the interface + * `api.postItem(payload, function(err, response))` + * @param logger - An object used to log verbose messages if desired + * @param options - see `Queue.prototype.configure` + * @param replay - Optional `Replay` for coordinating session replay with error occurrences + */ + function Queue(rateLimiter, api, logger, options, replay) { + queue_classCallCheck(this, Queue); + this.rateLimiter = rateLimiter; + this.api = api; + this.logger = logger; + this.options = options; + this.replay = replay; + this.predicates = []; + this.pendingItems = []; + this.pendingRequests = []; + this.retryQueue = []; + this.retryHandle = null; + this.waitCallback = null; + this.waitIntervalID = null; + } + + /** + * configure - updates the options this queue uses + * + * @param options + */ + return queue_createClass(Queue, [{ + key: "configure", + value: function configure(options) { + var _this$api; + (_this$api = this.api) === null || _this$api === void 0 || _this$api.configure(options); + var oldOptions = this.options; + this.options = merge(oldOptions, options); + return this; } + + /** + * addPredicate - adds a predicate to the end of the list of predicates for this queue + * + * @param predicate - function(item, options) -> (bool|{err: Error}) + * Returning true means that this predicate passes and the item is okay to go on the queue + * Returning false means do not add the item to the queue, but it is not an error + * Returning {err: Error} means do not add the item to the queue, and the given error explains why + * Returning {err: undefined} is equivalent to returning true but don't do that + */ }, { - key: "captureError", - value: function captureError(err, level, rollbarUUID, timestamp) { - var _this$telemetrySpan; - var message = err.message || String(err); - var metadata = { - message: message - }; - if (err.stack) { - metadata.stack = err.stack; + key: "addPredicate", + value: function addPredicate(predicate) { + if (isFunction(predicate)) { + this.predicates.push(predicate); } - var otelAttributes = { - message: message, - level: level, - type: 'error', - uuid: rollbarUUID - }; - (_this$telemetrySpan = this.telemetrySpan) === null || _this$telemetrySpan === void 0 || _this$telemetrySpan.addEvent('rollbar-occurrence-event', otelAttributes, fromMillis(timestamp)); - return this.capture('error', metadata, level, rollbarUUID, timestamp, otelAttributes); + return this; } }, { - key: "captureLog", - value: function captureLog(message, level, rollbarUUID, timestamp) { - var otelAttributes = null; - - // If the uuid is present, this is a message occurrence. - if (rollbarUUID) { - var _this$telemetrySpan2; - otelAttributes = { - message: message, - level: level, - type: 'message', - uuid: rollbarUUID - }, (_this$telemetrySpan2 = this.telemetrySpan) === null || _this$telemetrySpan2 === void 0 ? void 0 : _this$telemetrySpan2.addEvent('rollbar-occurrence-event', otelAttributes, fromMillis(timestamp)); - } else { - var _this$telemetrySpan3; - otelAttributes = { - message: message, - level: level - }; - (_this$telemetrySpan3 = this.telemetrySpan) === null || _this$telemetrySpan3 === void 0 || _this$telemetrySpan3.addEvent('rollbar-log-event', otelAttributes, fromMillis(timestamp)); - } - return this.capture('log', { - message: message - }, level, rollbarUUID, timestamp, otelAttributes); + key: "addPendingItem", + value: function addPendingItem(item) { + this.pendingItems.push(item); } }, { - key: "captureNetwork", - value: function captureNetwork(metadata, subtype, rollbarUUID, requestData) { - var _metadata$response, _this$telemetrySpan4; - subtype = subtype || 'xhr'; - metadata.subtype = metadata.subtype || subtype; - if (requestData) { - metadata.request = requestData; + key: "removePendingItem", + value: function removePendingItem(item) { + var idx = this.pendingItems.indexOf(item); + if (idx !== -1) { + this.pendingItems.splice(idx, 1); } - var level = this.levelFromStatus(metadata.status_code); - var endTimeNano = (metadata.end_time_ms || 0) * 1e6; - var otelAttributes = { - type: metadata.subtype, - method: metadata.method, - url: metadata.url, - statusCode: metadata.status_code, - 'request.headers': JSON.stringify(metadata.request_headers || {}), - 'response.headers': JSON.stringify(((_metadata$response = metadata.response) === null || _metadata$response === void 0 ? void 0 : _metadata$response.headers) || {}), - 'response.timeUnixNano': endTimeNano.toString() - }; - (_this$telemetrySpan4 = this.telemetrySpan) === null || _this$telemetrySpan4 === void 0 || _this$telemetrySpan4.addEvent('rollbar-network-event', otelAttributes, fromMillis(metadata.start_time_ms)); - return this.capture('network', metadata, level, rollbarUUID, metadata.start_time_ms, otelAttributes); } + + /** + * addItem - Send an item to the Rollbar API if all of the predicates are satisfied + * + * @param item - Item instance with the payload to send to the backend + * @param callback - function(error, repsonse) which will be called with the response from the API + * in the case of a success, otherwise response will be null and error will have a value. If both + * error and response are null then the item was stopped by a predicate which did not consider this + * to be an error condition, but nonetheless did not send the item to the API. + * @param originalError - The original error before any transformations that is to be logged if any + * @param originalItem - The original item before transforms, used in pendingItems queue + */ }, { - key: "levelFromStatus", - value: function levelFromStatus(statusCode) { - if (statusCode >= 200 && statusCode < 400) { - return 'info'; + key: "addItem", + value: function addItem(item, callback, originalError, originalItem) { + var _this = this; + if (!callback || !isFunction(callback)) { + callback = function callback() { + return; + }; } - if (statusCode === 0 || statusCode >= 400) { - return 'error'; + var data = item.data; + var predicateResult = this._applyPredicates(data); + if (predicateResult.stop) { + this.removePendingItem(originalItem); + callback(predicateResult.err); + return; + } + this._maybeLog(data, originalError); + this.removePendingItem(originalItem); + if (!this.options.transmit) { + callback(new Error('Transmit disabled')); + return; + } + if (this.replay && data.body) { + item.replayId = this.replay.capture(null, data.uuid, { + type: 'occurrence', + level: item.level + }); + if (item.replayId) { + addItemAttributes(item.data, [{ + key: 'replay_id', + value: item.replayId + }]); + } + } + this.pendingRequests.push(data); + try { + this._makeApiRequest(data, function (err, resp, headers) { + _this._dequeuePendingRequest(data); + if (item.replayId) { + _this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers); + } + callback(err, resp); + }); + } catch (err) { + this._dequeuePendingRequest(data); + if (item.replayId) { + var _this$replay; + (_this$replay = this.replay) === null || _this$replay === void 0 || _this$replay.discard(item.replayId); + } + callback(err); } - return 'info'; } + + /** + * wait - Stop any further errors from being added to the queue, and get called back when all items + * currently processing have finished sending to the backend. + * + * @param callback - function() called when all pending items have been sent + */ }, { - key: "captureDom", - value: function captureDom(subtype, element, value, checked, rollbarUUID) { - var metadata = { - subtype: subtype, - element: element - }; - if (value !== undefined) { - metadata.value = value; + key: "wait", + value: function wait(callback) { + var _this2 = this; + if (!isFunction(callback)) { + return; } - if (checked !== undefined) { - metadata.checked = checked; + this.waitCallback = callback; + if (this._maybeCallWait()) { + return; } - return this.capture('dom', metadata, 'info', rollbarUUID); + if (this.waitIntervalID) { + this.waitIntervalID = clearInterval(this.waitIntervalID); + } + this.waitIntervalID = setInterval(function () { + _this2._maybeCallWait(); + }, 500); } + + /** + * Sequentially applies the predicates that have been added to the queue to the + * given item with the currently configured options. + * + * @param item - An item in the queue + * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue, + * the error value should be passed up to a callbak if we are stopping. + */ }, { - key: "captureInput", - value: function captureInput(_ref2) { - var _this$telemetrySpan5; - var type = _ref2.type, - isSynthetic = _ref2.isSynthetic, - element = _ref2.element, - value = _ref2.value, - timestamp = _ref2.timestamp; - var name = 'rollbar-input-event'; - var metadata = { - type: name, - subtype: type, - element: element, - value: value - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic, - element: element, - value: value, - endTimeUnixNano: fromMillis(timestamp) - }; - var event = this._getRepeatedEvent(name, otelAttributes); - if (event) { - return this._updateRepeatedEvent(event, otelAttributes, timestamp); + key: "_applyPredicates", + value: function _applyPredicates(item) { + var p = null; + for (var i = 0, len = this.predicates.length; i < len; i++) { + p = this.predicates[i](item, this.options); + if (!p || p.err !== undefined) { + return { + stop: true, + err: p.err + }; + } } - (_this$telemetrySpan5 = this.telemetrySpan) === null || _this$telemetrySpan5 === void 0 || _this$telemetrySpan5.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + return { + stop: false, + err: null + }; } + + /** + * Send an item to Rollbar, callback when done, if there is an error make an + * effort to retry if we are configured to do so. + * + * @param item - an item ready to send to the backend + * @param callback - function(err, response) + */ }, { - key: "captureClick", - value: function captureClick(_ref3) { - var _this$telemetrySpan6; - var type = _ref3.type, - isSynthetic = _ref3.isSynthetic, - element = _ref3.element, - timestamp = _ref3.timestamp; - var name = 'rollbar-click-event'; - var metadata = { - type: name, - subtype: type, - element: element - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic, - element: element, - endTimeUnixNano: fromMillis(timestamp) - }; - var event = this._getRepeatedEvent(name, otelAttributes); - if (event) { - return this._updateRepeatedEvent(event, otelAttributes, timestamp); + key: "_makeApiRequest", + value: function _makeApiRequest(item, callback) { + var _this3 = this; + var rateLimitResponse = this.rateLimiter.shouldSend(item); + if (rateLimitResponse.shouldSend) { + this.api.postItem(item, function (err, resp, headers) { + if (err) { + _this3._maybeRetry(err, item, callback); + } else { + callback(err, resp, headers); + } + }); + } else if (rateLimitResponse.error) { + callback(rateLimitResponse.error); + } else { + this.api.postItem(rateLimitResponse.payload, callback); } - (_this$telemetrySpan6 = this.telemetrySpan) === null || _this$telemetrySpan6 === void 0 || _this$telemetrySpan6.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); } + + // These are errors basically mean there is no internet connection }, { - key: "_getRepeatedEvent", - value: function _getRepeatedEvent(name, attributes) { - var lastEvent = this._lastEvent(this.queue); - if (lastEvent && lastEvent.body.type === name && lastEvent.otelAttributes.target === attributes.target) { - return lastEvent; + key: "_maybeRetry", + value: + /** + * Given the error returned by the API, decide if we should retry or just callback + * with the error. + * + * @param err - an error returned by the API transport + * @param item - the item that was trying to be sent when this error occured + * @param callback - function(err, response) + */ + function _maybeRetry(err, item, callback) { + var shouldRetry = false; + if (this.options.retryInterval) { + for (var i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) { + if (err.code === Queue.RETRIABLE_ERRORS[i]) { + shouldRetry = true; + break; + } + } + if (shouldRetry && isFiniteNumber(this.options.maxRetries)) { + item.retries = item.retries ? item.retries + 1 : 1; + if (item.retries > this.options.maxRetries) { + shouldRetry = false; + } + } + } + if (shouldRetry) { + this._retryApiRequest(item, callback); + } else { + callback(err); } } + + /** + * Add an item and a callback to a queue and possibly start a timer to process + * that queue based on the retryInterval in the options for this queue. + * + * @param item - an item that failed to send due to an error we deem retriable + * @param callback - function(err, response) + */ }, { - key: "_updateRepeatedEvent", - value: function _updateRepeatedEvent(event, attributes, timestamp) { - var duration = Math.max(timestamp - event.timestamp_ms, 1); - event.body.value = attributes.value; - event.otelAttributes.value = attributes.value; - event.otelAttributes.height = attributes.height; - event.otelAttributes.width = attributes.width; - event.otelAttributes.textZoomRatio = attributes.textZoomRatio; - event.otelAttributes['endTimeUnixNano'] = fromMillis(timestamp); - event.otelAttributes['durationUnixNano'] = fromMillis(duration); - event.otelAttributes.count = (event.otelAttributes.count || 1) + 1; - event.otelAttributes.rate = event.otelAttributes.count / (duration / 1000); + key: "_retryApiRequest", + value: function _retryApiRequest(item, callback) { + var _this4 = this; + this.retryQueue.push({ + item: item, + callback: callback + }); + if (!this.retryHandle) { + this.retryHandle = setInterval(function () { + while (_this4.retryQueue.length) { + var retryObject = _this4.retryQueue.shift(); + _this4._makeApiRequest(retryObject.item, retryObject.callback); + } + }, this.options.retryInterval); + } } + + /** + * Removes the item from the pending request queue, this queue is used to + * enable to functionality of providing a callback that clients can pass to `wait` to be notified + * when the pending request queue has been emptied. This must be called when the API finishes + * processing this item. If a `wait` callback is configured, it is called by this function. + * + * @param item - the item previously added to the pending request queue + */ }, { - key: "_lastEvent", - value: function _lastEvent(list) { - return list.length > 0 ? list[list.length - 1] : null; + key: "_dequeuePendingRequest", + value: function _dequeuePendingRequest(item) { + var idx = this.pendingRequests.indexOf(item); + if (idx !== -1) { + this.pendingRequests.splice(idx, 1); + this._maybeCallWait(); + } } }, { - key: "captureFocus", - value: function captureFocus(_ref4) { - var _this$telemetrySpan7; - var type = _ref4.type, - isSynthetic = _ref4.isSynthetic, - element = _ref4.element, - timestamp = _ref4.timestamp; - var name = 'rollbar-focus-event'; - var metadata = { - type: name, - subtype: type, - element: element - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic, - element: element - }; - (_this$telemetrySpan7 = this.telemetrySpan) === null || _this$telemetrySpan7 === void 0 || _this$telemetrySpan7.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + key: "_maybeLog", + value: function _maybeLog(data, originalError) { + if (this.logger && this.options.verbose) { + var message = originalError || get(data, 'body.trace.exception.message') || get(data, 'body.trace_chain.0.exception.message'); + if (message) { + this.logger.error(message); + return; + } + message = get(data, 'body.message.body'); + if (message) { + this.logger.log(message); + } + } } }, { - key: "captureResize", - value: function captureResize(_ref5) { - var _this$telemetrySpan8; - var type = _ref5.type, - isSynthetic = _ref5.isSynthetic, - width = _ref5.width, - height = _ref5.height, - textZoomRatio = _ref5.textZoomRatio, - timestamp = _ref5.timestamp; - var name = 'rollbar-resize-event'; - var metadata = { - type: name, - subtype: type, - width: width, - height: height, - textZoomRatio: textZoomRatio - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic, - width: width, - height: height, - textZoomRatio: textZoomRatio - }; - var event = this._getRepeatedEvent(name, otelAttributes); - if (event) { - return this._updateRepeatedEvent(event, otelAttributes, timestamp); + key: "_maybeCallWait", + value: function _maybeCallWait() { + if (isFunction(this.waitCallback) && this.pendingItems.length === 0 && this.pendingRequests.length === 0) { + if (this.waitIntervalID) { + this.waitIntervalID = clearInterval(this.waitIntervalID); + } + this.waitCallback(); + return true; } - (_this$telemetrySpan8 = this.telemetrySpan) === null || _this$telemetrySpan8 === void 0 || _this$telemetrySpan8.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + return false; } - }, { - key: "captureDragDrop", - value: function captureDragDrop(_ref6) { - var _this$telemetrySpan9; - var type = _ref6.type, - isSynthetic = _ref6.isSynthetic, - element = _ref6.element, - dropEffect = _ref6.dropEffect, - effectAllowed = _ref6.effectAllowed, - kinds = _ref6.kinds, - mediaTypes = _ref6.mediaTypes, - timestamp = _ref6.timestamp; - var name = 'rollbar-dragdrop-event'; - var metadata = { - type: name, - subtype: type, - isSynthetic: isSynthetic - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic - }; - if (type === 'dragstart') { - metadata = telemetry_objectSpread(telemetry_objectSpread({}, metadata), {}, { - element: element, - dropEffect: dropEffect, - effectAllowed: effectAllowed - }); - otelAttributes = telemetry_objectSpread(telemetry_objectSpread({}, otelAttributes), {}, { - element: element, - dropEffect: dropEffect, - effectAllowed: effectAllowed - }); + }]); +}(); +queue_defineProperty(Queue, "RETRIABLE_ERRORS", ['ECONNRESET', 'ENOTFOUND', 'ESOCKETTIMEDOUT', 'ETIMEDOUT', 'ECONNREFUSED', 'EHOSTUNREACH', 'EPIPE', 'EAI_AGAIN']); +/* harmony default export */ var queue = (Queue); +;// ./src/rateLimiter.js +function rateLimiter_typeof(o) { "@babel/helpers - typeof"; return rateLimiter_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, rateLimiter_typeof(o); } +function _readOnlyError(r) { throw new TypeError('"' + r + '" is read-only'); } +function rateLimiter_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function rateLimiter_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, rateLimiter_toPropertyKey(o.key), o); } } +function rateLimiter_createClass(e, r, t) { return r && rateLimiter_defineProperties(e.prototype, r), t && rateLimiter_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function rateLimiter_defineProperty(e, r, t) { return (r = rateLimiter_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function rateLimiter_toPropertyKey(t) { var i = rateLimiter_toPrimitive(t, "string"); return "symbol" == rateLimiter_typeof(i) ? i : i + ""; } +function rateLimiter_toPrimitive(t, r) { if ("object" != rateLimiter_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != rateLimiter_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +/* + * RateLimiter - encapsulates the logic for counting items sent to Rollbar. + * + * @param options - the same options that are accepted by configureGlobal offered as a convenience + */ +var RateLimiter = /*#__PURE__*/function () { + function RateLimiter() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + rateLimiter_classCallCheck(this, RateLimiter); + this.startTime = Date.now(); + this.counter = 0; + this.perMinCounter = 0; + this.platform = null; + this.platformOptions = {}; + this.configureGlobal(options); + } + + /* + * configureGlobal - set the global rate limiter options + * + * @param options - Only the following values are recognized: + * startTime: a timestamp of the form returned by (new Date()).getTime() + * maxItems: the maximum items + * itemsPerMinute: the max number of items to send in a given minute + */ + return rateLimiter_createClass(RateLimiter, [{ + key: "configureGlobal", + value: function configureGlobal() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var startTime = options.startTime, + maxItems = options.maxItems, + itemsPerMinute = options.itemsPerMinute; + if (startTime !== undefined) { + RateLimiter.globalSettings.startTime = startTime; } - if (type === 'drop') { - metadata = telemetry_objectSpread(telemetry_objectSpread({}, metadata), {}, { - element: element, - dropEffect: dropEffect, - effectAllowed: effectAllowed, - kinds: kinds, - mediaTypes: mediaTypes - }); - otelAttributes = telemetry_objectSpread(telemetry_objectSpread({}, otelAttributes), {}, { - element: element, - dropEffect: dropEffect, - effectAllowed: effectAllowed, - kinds: kinds, - mediaTypes: mediaTypes - }); + if (maxItems !== undefined) { + RateLimiter.globalSettings.maxItems = maxItems; + } + if (itemsPerMinute !== undefined) { + RateLimiter.globalSettings.itemsPerMinute = itemsPerMinute; } - (_this$telemetrySpan9 = this.telemetrySpan) === null || _this$telemetrySpan9 === void 0 || _this$telemetrySpan9.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); - } - }, { - key: "captureNavigation", - value: function captureNavigation(from, to, rollbarUUID, timestamp) { - var _this$telemetrySpan10; - (_this$telemetrySpan10 = this.telemetrySpan) === null || _this$telemetrySpan10 === void 0 || _this$telemetrySpan10.addEvent('rollbar-navigation-event', { - 'previous.url.full': from, - 'url.full': to - }, fromMillis(timestamp)); - return this.capture('navigation', { - from: from, - to: to - }, 'info', rollbarUUID, timestamp); - } - }, { - key: "captureDomContentLoaded", - value: function captureDomContentLoaded(ts) { - return this.capture('navigation', { - subtype: 'DOMContentLoaded' - }, 'info', undefined, ts && ts.getTime()); - /** - * If we decide to make this a dom event instead, then use the line below: - return this.capture('dom', {subtype: 'DOMContentLoaded'}, 'info', undefined, ts && ts.getTime()); - */ - } - }, { - key: "captureLoad", - value: function captureLoad(ts) { - return this.capture('navigation', { - subtype: 'load' - }, 'info', undefined, ts && ts.getTime()); - /** - * If we decide to make this a dom event instead, then use the line below: - return this.capture('dom', {subtype: 'load'}, 'info', undefined, ts && ts.getTime()); - */ - } - }, { - key: "captureConnectivityChange", - value: function captureConnectivityChange(_ref7) { - var _this$telemetrySpan11; - var type = _ref7.type, - isSynthetic = _ref7.isSynthetic, - timestamp = _ref7.timestamp; - var name = 'rollbar-connectivity-event'; - var metadata = { - type: name, - subtype: type - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic - }; - (_this$telemetrySpan11 = this.telemetrySpan) === null || _this$telemetrySpan11 === void 0 || _this$telemetrySpan11.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('connectivity', metadata, 'info', null, timestamp, otelAttributes); } - // Only intended to be used internally by the notifier + /* + * shouldSend - determine if we should send a given item based on rate limit settings + * + * @param item - the item we are about to send + * @returns An object with the following structure: + * error: (Error|null) + * shouldSend: bool + * payload: (Object|null) + * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and + * exactly one of error or payload will be non-null. If error is non-null, the returned Error will + * describe the situation, but it means that we were already over a rate limit (either globally or + * per minute) when this item was checked. If error is null, and therefore payload is non-null, it + * means this item put us over the global rate limit and the payload should be sent to Rollbar in + * place of the passed in item. + */ }, { - key: "_captureRollbarItem", - value: function _captureRollbarItem(item) { - if (!this.options.includeItemsInTelemetry) { - return; + key: "shouldSend", + value: function shouldSend(item) { + var now = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Date.now(); + var elapsedTime = now - this.startTime; + if (elapsedTime < 0 || elapsedTime >= 60000) { + this.startTime = now; + this.perMinCounter = 0; } - if (item.err) { - return this.captureError(item.err, item.level, item.uuid, item.timestamp); - } - if (item.message) { - return this.captureLog(item.message, item.level, item.uuid, item.timestamp); + var globalRateLimit = RateLimiter.globalSettings.maxItems; + var globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute; + if (checkRate(item, globalRateLimit, this.counter)) { + return shouldSendValue(this.platform, this.platformOptions, "".concat(globalRateLimit, " max items reached"), false); } - if (item.custom) { - return this.capture('log', item.custom, item.level, item.uuid, item.timestamp); + if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) { + return shouldSendValue(this.platform, this.platformOptions, "".concat(globalRateLimitPerMin, " items per minute reached"), false); } + this.counter += 1; + this.perMinCounter += 1; + var underGlobalLimit = !checkRate(item, globalRateLimit, this.counter); + var perMinute = underGlobalLimit; + var shouldSend = underGlobalLimit && !checkRate(item, globalRateLimitPerMin, this.perMinCounter); + return shouldSendValue(this.platform, this.platformOptions, null, shouldSend, globalRateLimit, globalRateLimitPerMin, perMinute); } }, { - key: "push", - value: function push(e) { - this.queue.push(e); - if (this.queue.length > this.maxQueueSize) { - this.queue.shift(); - } + key: "setPlatformOptions", + value: function setPlatformOptions(platform, options) { + this.platform = platform; + this.platformOptions = options; } }]); }(); -function getLevel(type, level) { - if (level) { - return level; +/* Helpers */ +rateLimiter_defineProperty(RateLimiter, "globalSettings", { + startTime: Date.now(), + maxItems: undefined, + itemsPerMinute: undefined +}); +function checkRate(item, limit, counter) { + return !item.ignoreRateLimit && limit >= 1 && counter > limit; +} +function shouldSendValue(platform, options, error, shouldSend, globalRateLimit, limitPerMin, perMinute) { + var payload = null; + var errorResult = error ? new Error(error) : null; + if (!errorResult && !shouldSend) { + payload = rateLimitPayload(platform, options, globalRateLimit, limitPerMin, perMinute); } - var defaultLevel = { - error: 'error', - manual: 'info' + return { + error: errorResult, + shouldSend: shouldSend, + payload: payload }; - return defaultLevel[type] || 'info'; } -/* harmony default export */ var telemetry = (Telemeter); -;// ./src/utility/headers.js +function rateLimitPayload(platform, options, globalRateLimit, limitPerMin, perMinute) { + var environment = options.environment || options.payload && options.payload.environment; + var msg = perMinute ? 'item per minute limit reached, ignoring errors until timeout' : 'maxItems has been hit, ignoring errors until reset.'; + var item = { + body: { + message: { + body: msg, + extra: { + maxItems: globalRateLimit, + itemsPerMinute: limitPerMin + } + } + }, + language: 'javascript', + environment: environment, + notifier: { + version: options.notifier && options.notifier.version || options.version + } + }; + if (platform === 'browser') { + item.platform = 'browser'; + item.framework = 'browser-js'; + item.notifier.name = 'rollbar-browser-js'; + } else if (platform === 'server') { + item.framework = options.framework || 'node-js'; + item.notifier.name = options.notifier.name; + } else if (platform === 'react-native') { + item.framework = options.framework || 'react-native'; + item.notifier.name = options.notifier.name; + } + return item; +} +/* harmony default export */ var rateLimiter = (RateLimiter); +;// ./src/rollbar.js + + + + + /* - * headers - Detect when fetch Headers are undefined and use a partial polyfill. - * - * A full polyfill is not used in order to keep package size as small as possible. - * Since this is only used internally and is not added to the window object, - * the full interface doesn't need to be supported. + * Rollbar - the interface to Rollbar * - * This implementation is modified from whatwg-fetch: - * https://github.com/github/fetch + * @param options + * @param api + * @param logger */ -function headers(headers) { - if (typeof Headers === 'undefined') { - return new FetchHeaders(headers); +function Rollbar(options, api, logger, telemeter, tracing, replay, platform) { + this.options = merge(options); + this.logger = logger; + Rollbar.rateLimiter.configureGlobal(this.options); + Rollbar.rateLimiter.setPlatformOptions(platform, this.options); + this.api = api; + this.queue = new queue(Rollbar.rateLimiter, api, logger, this.options, replay); + this.tracing = tracing; + + // Legacy OpenTracing support + // This must happen before the Notifier is created + var tracer = this.options.tracer || null; + if (validateTracer(tracer)) { + this.tracer = tracer; + // set to a string for api response serialization + this.options.tracer = 'opentracing-tracer-enabled'; + this.options._configuredOptions.tracer = 'opentracing-tracer-enabled'; + } else { + this.tracer = null; } - return new Headers(headers); + this.notifier = new Notifier(this.queue, this.options); + this.telemeter = telemeter; + setStackTraceLimit(options); + this.lastError = null; + this.lastErrorHash = 'none'; } -function normalizeName(name) { - if (typeof name !== 'string') { - name = String(name); +var rollbar_defaultOptions = { + maxItems: 0, + itemsPerMinute: 60 +}; +Rollbar.rateLimiter = new rateLimiter(rollbar_defaultOptions); +Rollbar.prototype.global = function (options) { + Rollbar.rateLimiter.configureGlobal(options); + return this; +}; +Rollbar.prototype.configure = function (options, payloadData) { + var oldOptions = this.options; + var payload = {}; + if (payloadData) { + payload = { + payload: payloadData + }; } - return name.toLowerCase(); -} -function normalizeValue(value) { - if (typeof value !== 'string') { - value = String(value); + this.options = merge(oldOptions, options, payload); + + // Legacy OpenTracing support + // This must happen before the Notifier is configured + var tracer = this.options.tracer || null; + if (validateTracer(tracer)) { + this.tracer = tracer; + // set to a string for api response serialization + this.options.tracer = 'opentracing-tracer-enabled'; + this.options._configuredOptions.tracer = 'opentracing-tracer-enabled'; + } else { + this.tracer = null; } - return value; -} -function iteratorFor(items) { - var iterator = { - next: function next() { - var value = items.shift(); - return { - done: value === undefined, - value: value - }; - } - }; - return iterator; -} -function FetchHeaders(headers) { - this.map = {}; - if (headers instanceof FetchHeaders) { - headers.forEach(function (value, name) { - this.append(name, value); - }, this); - } else if (Array.isArray(headers)) { - headers.forEach(function (header) { - this.append(header[0], header[1]); - }, this); - } else if (headers) { - Object.getOwnPropertyNames(headers).forEach(function (name) { - this.append(name, headers[name]); - }, this); + this.notifier && this.notifier.configure(this.options); + this.telemeter && this.telemeter.configure(this.options); + setStackTraceLimit(options); + this.global(this.options); + if (validateTracer(options.tracer)) { + this.tracer = options.tracer; } -} -FetchHeaders.prototype.append = function (name, value) { - name = normalizeName(name); - value = normalizeValue(value); - var oldValue = this.map[name]; - this.map[name] = oldValue ? oldValue + ', ' + value : value; + return this; }; -FetchHeaders.prototype.get = function (name) { - name = normalizeName(name); - return this.has(name) ? this.map[name] : null; +Rollbar.prototype.log = function (item) { + var level = this._defaultLogLevel(); + return this._log(level, item); }; -FetchHeaders.prototype.has = function (name) { - return this.map.hasOwnProperty(normalizeName(name)); +Rollbar.prototype.debug = function (item) { + this._log('debug', item); }; -FetchHeaders.prototype.forEach = function (callback, thisArg) { - for (var name in this.map) { - if (this.map.hasOwnProperty(name)) { - callback.call(thisArg, this.map[name], name, this); - } - } +Rollbar.prototype.info = function (item) { + this._log('info', item); }; -FetchHeaders.prototype.entries = function () { - var items = []; - this.forEach(function (value, name) { - items.push([name, value]); - }); - return iteratorFor(items); +Rollbar.prototype.warn = function (item) { + this._log('warning', item); +}; +Rollbar.prototype.warning = function (item) { + this._log('warning', item); +}; +Rollbar.prototype.error = function (item) { + this._log('error', item); +}; +Rollbar.prototype.critical = function (item) { + this._log('critical', item); +}; +Rollbar.prototype.wait = function (callback) { + this.queue.wait(callback); +}; +Rollbar.prototype.captureEvent = function (type, metadata, level) { + return this.telemeter && this.telemeter.captureEvent(type, metadata, level); +}; +Rollbar.prototype.captureDomContentLoaded = function (ts) { + return this.telemeter && this.telemeter.captureDomContentLoaded(ts); +}; +Rollbar.prototype.captureLoad = function (ts) { + return this.telemeter && this.telemeter.captureLoad(ts); +}; +Rollbar.prototype.buildJsonPayload = function (item) { + return this.api.buildJsonPayload(item); +}; +Rollbar.prototype.sendJsonPayload = function (jsonPayload) { + this.api.postJsonPayload(jsonPayload); }; -/* harmony default export */ var utility_headers = (headers); -;// ./src/utility/replace.js -function replace(obj, name, replacement, replacements, type) { - var orig = obj[name]; - obj[name] = replacement(orig); - if (replacements) { - replacements[type].push([obj, name, orig]); - } -} -/* harmony default export */ var utility_replace = (replace); -;// ./src/utility/traverse.js -function traverse(obj, func, seen) { - var k, v, i; - var isObj = isType(obj, 'object'); - var isArray = isType(obj, 'array'); - var keys = []; - var seenIndex; +/* Internal */ - // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11. - seen = seen || { - obj: [], - mapped: [] - }; - if (isObj) { - seenIndex = seen.obj.indexOf(obj); - if (isObj && seenIndex !== -1) { - // Prefer the mapped object if there is one. - return seen.mapped[seenIndex] || seen.obj[seenIndex]; - } - seen.obj.push(obj); - seenIndex = seen.obj.length - 1; +Rollbar.prototype._log = function (defaultLevel, item) { + var callback; + if (item.callback) { + callback = item.callback; + delete item.callback; } - if (isObj) { - for (k in obj) { - if (Object.prototype.hasOwnProperty.call(obj, k)) { - keys.push(k); - } - } - } else if (isArray) { - for (i = 0; i < obj.length; ++i) { - keys.push(i); + if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) { + if (callback) { + var error = new Error('ignored identical item'); + error.item = item; + callback(error); } + return; } - var result = isObj ? {} : []; - var same = true; - for (i = 0; i < keys.length; ++i) { - k = keys[i]; - v = obj[k]; - result[k] = func(k, v, seen); - same = same && result[k] === obj[k]; - } - if (isObj && !same) { - seen.mapped[seenIndex] = result; - } - return !same ? result : obj; -} -/* harmony default export */ var utility_traverse = (traverse); -;// ./src/scrub.js - + try { + item.level = item.level || defaultLevel; + this._addItemAttributes(item); -function scrub(data, scrubFields, scrubPaths) { - scrubFields = scrubFields || []; - if (scrubPaths) { - for (var i = 0; i < scrubPaths.length; ++i) { - scrubPath(data, scrubPaths[i]); + // Legacy OpenTracing support + this._addTracingInfo(item); + var telemeter = this.telemeter; + if (telemeter) { + telemeter._captureRollbarItem(item); + item.telemetryEvents = telemeter.copyEvents() || []; } + this.notifier.log(item, callback); + } catch (e) { + if (callback) { + callback(e); + } + this.logger.error(e); } - var paramRes = _getScrubFieldRegexs(scrubFields); - var queryRes = _getScrubQueryParamRegexs(scrubFields); - function redactQueryParam(dummy0, paramPart) { - return paramPart + redact(); +}; +Rollbar.prototype._addItemAttributes = function (item) { + var _this$tracing, _this$tracing2; + var span = (_this$tracing = this.tracing) === null || _this$tracing === void 0 ? void 0 : _this$tracing.getSpan(); + var attributes = [{ + key: 'session_id', + value: (_this$tracing2 = this.tracing) === null || _this$tracing2 === void 0 ? void 0 : _this$tracing2.sessionId + }, { + key: 'span_id', + value: span === null || span === void 0 ? void 0 : span.spanId + }, { + key: 'trace_id', + value: span === null || span === void 0 ? void 0 : span.traceId + }]; + if (item._isUncaught) { + attributes.push({ + key: 'is_uncaught', + value: 'true' + }); } - function paramScrubber(v) { - var i; - if (isType(v, 'string')) { - for (i = 0; i < queryRes.length; ++i) { - v = v.replace(queryRes[i], redactQueryParam); - } - } - return v; + addItemAttributes(item.data, attributes); + span === null || span === void 0 || span.addEvent('rollbar.occurrence', [{ + key: 'rollbar.occurrence.uuid', + value: item.uuid + }]); +}; +Rollbar.prototype._defaultLogLevel = function () { + return this.options.logLevel || 'debug'; +}; +Rollbar.prototype._sameAsLastError = function (item) { + if (!item._isUncaught) { + return false; } - function valScrubber(k, v) { - var i; - for (i = 0; i < paramRes.length; ++i) { - if (paramRes[i].test(k)) { - v = redact(); - break; - } - } - return v; + var itemHash = generateItemHash(item); + if (this.lastErrorHash === itemHash) { + return true; } - function scrubber(k, v, seen) { - var tmpV = valScrubber(k, v); - if (tmpV === v) { - if (isType(v, 'object') || isType(v, 'array')) { - return utility_traverse(v, scrubber, seen); + this.lastError = item.err; + this.lastErrorHash = itemHash; + return false; +}; +Rollbar.prototype._addTracingInfo = function (item) { + // Tracer validation occurs in the constructor + // or in the Rollbar.prototype.configure methods + if (this.tracer) { + // add rollbar occurrence uuid to span + var span = this.tracer.scope().active(); + if (validateSpan(span)) { + span.setTag('rollbar.error_uuid', item.uuid); + span.setTag('rollbar.has_error', true); + span.setTag('error', true); + span.setTag('rollbar.item_url', "https://rollbar.com/item/uuid/?uuid=".concat(item.uuid)); + span.setTag('rollbar.occurrence_url', "https://rollbar.com/occurrence/uuid/?uuid=".concat(item.uuid)); + + // add span ID & trace ID to occurrence + var opentracingSpanId = span.context().toSpanId(); + var opentracingTraceId = span.context().toTraceId(); + if (item.custom) { + item.custom.opentracing_span_id = opentracingSpanId; + item.custom.opentracing_trace_id = opentracingTraceId; + } else { + item.custom = { + opentracing_span_id: opentracingSpanId, + opentracing_trace_id: opentracingTraceId + }; } - return paramScrubber(tmpV); - } else { - return tmpV; } } - return utility_traverse(data, scrubber); -} -function scrubPath(obj, path) { - var keys = path.split('.'); - var last = keys.length - 1; - try { - for (var i = 0; i <= last; ++i) { - if (i < last) { - obj = obj[keys[i]]; - } else { - obj[keys[i]] = redact(); - } - } - } catch (e) { - // Missing key is OK; - } +}; +function generateItemHash(item) { + var message = item.message || ''; + var stack = (item.err || {}).stack || String(item.err); + return message + '::' + stack; } -function _getScrubFieldRegexs(scrubFields) { - var ret = []; - var pat; - for (var i = 0; i < scrubFields.length; ++i) { - pat = '^\\[?(%5[bB])?' + scrubFields[i] + '\\[?(%5[bB])?\\]?(%5[dD])?$'; - ret.push(new RegExp(pat, 'i')); + +// Node.js, Chrome, Safari, and some other browsers support this property +// which globally sets the number of stack frames returned in an Error object. +// If a browser can't use it, no harm done. +function setStackTraceLimit(options) { + if (options.stackTraceLimit) { + Error.stackTraceLimit = options.stackTraceLimit; } - return ret; } -function _getScrubQueryParamRegexs(scrubFields) { - var ret = []; - var pat; - for (var i = 0; i < scrubFields.length; ++i) { - pat = '\\[?(%5[bB])?' + scrubFields[i] + '\\[?(%5[bB])?\\]?(%5[dD])?'; - ret.push(new RegExp('(' + pat + '=)([^&\\n]+)', 'igm')); + +/** + * Validate the Tracer object provided to the Client + * is valid for our Opentracing use case. + * @param {opentracer.Tracer} tracer + */ +function validateTracer(tracer) { + if (!tracer) { + return false; } - return ret; -} -/* harmony default export */ var src_scrub = (scrub); -;// ./src/browser/domUtility.js -function domUtility_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = domUtility_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } -function domUtility_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return domUtility_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? domUtility_arrayLikeToArray(r, a) : void 0; } } -function domUtility_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function getElementType(e) { - return (e.getAttribute('type') || '').toLowerCase(); + if (!tracer.scope || typeof tracer.scope !== 'function') { + return false; + } + var scope = tracer.scope(); + if (!scope || !scope.active || typeof scope.active !== 'function') { + return false; + } + return true; } -function isDescribedElement(element, type, subtypes) { - if (element.tagName.toLowerCase() !== type.toLowerCase()) { + +/** + * Validate the Span object provided + * @param {opentracer.Span} span + */ +function validateSpan(span) { + if (!span || !span.context || typeof span.context !== 'function') { return false; } - if (!subtypes) { - return true; + var spanContext = span.context(); + if (!spanContext || !spanContext.toSpanId || !spanContext.toTraceId || typeof spanContext.toSpanId !== 'function' || typeof spanContext.toTraceId !== 'function') { + return false; } - element = getElementType(element); - for (var i = 0; i < subtypes.length; i++) { - if (subtypes[i] === element) { - return true; - } + return true; +} +/* harmony default export */ var rollbar = (Rollbar); +;// ./src/tracing/defaults.js +/** + * Default tracing options + */ +/* harmony default export */ var tracing_defaults = ({ + enabled: false, + endpoint: 'api.rollbar.com/api/1/session/' +}); +;// ./src/transforms.js + +function itemToPayload(item, options, callback) { + if (item._isUncaught) { + item.data._isUncaught = true; } - return false; + if (item._originalArgs) { + item.data._originalArgs = item._originalArgs; + } + callback(null, item); } -function getElementFromEvent(evt, doc) { - if (evt.target) { - return evt.target; +function addPayloadOptions(item, options, callback) { + var payloadOptions = options.payload || {}; + if (payloadOptions.body) { + delete payloadOptions.body; } - if (doc && doc.elementFromPoint) { - return doc.elementFromPoint(evt.clientX, evt.clientY); + item.data = merge(item.data, payloadOptions); + callback(null, item); +} +function addTelemetryData(item, options, callback) { + if (item.telemetryEvents) { + set(item, 'data.body.telemetry', item.telemetryEvents); } - return undefined; + callback(null, item); } -function treeToArray(elem) { - var MAX_HEIGHT = 5; - var out = []; - var nextDescription; - for (var height = 0; elem && height < MAX_HEIGHT; height++) { - nextDescription = describeElement(elem); - if (nextDescription.tagName === 'html') { - break; +function addMessageWithError(item, options, callback) { + if (!item.message) { + callback(null, item); + return; + } + var tracePath = 'data.body.trace_chain.0'; + var trace = get(item, tracePath); + if (!trace) { + tracePath = 'data.body.trace'; + trace = get(item, tracePath); + } + if (trace) { + if (!(trace.exception && trace.exception.description)) { + set(item, tracePath + '.exception.description', item.message); + callback(null, item); + return; } - out.unshift(nextDescription); - elem = elem.parentNode; + var extra = get(item, tracePath + '.extra') || {}; + var newExtra = merge(extra, { + message: item.message + }); + set(item, tracePath + '.extra', newExtra); } - return out; + callback(null, item); } -function elementArrayToString(a) { - var MAX_LENGTH = 80; - var separator = ' > ', - separatorLength = separator.length; - var out = [], - len = 0, - nextStr, - totalLength; - for (var i = a.length - 1; i >= 0; i--) { - nextStr = descriptionToString(a[i]); - totalLength = len + out.length * separatorLength + nextStr.length; - if (i < a.length - 1 && totalLength >= MAX_LENGTH + 3) { - out.unshift('...'); - break; +function userTransform(logger) { + return function (item, options, callback) { + var newItem = merge(item); + var response = null; + try { + if (isFunction(options.transform)) { + response = options.transform(newItem.data, item); + } + } catch (e) { + options.transform = null; + logger.error('Error while calling custom transform() function. Removing custom transform().', e); + callback(null, item); + return; } - out.unshift(nextStr); - len += nextStr.length; - } - return out.join(separator); + if (isPromise(response)) { + response.then(function (promisedItem) { + if (promisedItem) { + newItem.data = promisedItem; + } + callback(null, newItem); + }, function (error) { + callback(error, item); + }); + } else { + callback(null, newItem); + } + }; } -function domUtility_elementString(elem) { - return elementArrayToString(treeToArray(elem)); +function addConfigToPayload(item, options, callback) { + if (!options.sendConfig) { + return callback(null, item); + } + var configKey = '_rollbarConfig'; + var custom = get(item, 'data.custom') || {}; + custom[configKey] = options; + item.data.custom = custom; + callback(null, item); } -function descriptionToString(desc) { - if (!desc || !desc.tagName) { - return ''; +function addFunctionOption(options, name) { + if (isFunction(options[name])) { + options[name] = options[name].toString(); } - var out = [desc.tagName]; - if (desc.id) { - out.push('#' + desc.id); +} +function addConfiguredOptions(item, options, callback) { + var configuredOptions = options._configuredOptions; + + // These must be stringified or they'll get dropped during serialization. + addFunctionOption(configuredOptions, 'transform'); + addFunctionOption(configuredOptions, 'checkIgnore'); + addFunctionOption(configuredOptions, 'onSendCallback'); + delete configuredOptions.accessToken; + item.data.notifier.configured_options = configuredOptions; + callback(null, item); +} +function addDiagnosticKeys(item, options, callback) { + var diagnostic = merge(item.notifier.client.notifier.diagnostic, item.diagnostic); + if (get(item, 'err._isAnonymous')) { + diagnostic.is_anonymous = true; } - if (desc.classes) { - out.push('.' + desc.classes.join('.')); + if (item._isUncaught) { + diagnostic.is_uncaught = item._isUncaught; } - for (var i = 0; i < desc.attributes.length; i++) { - out.push('[' + desc.attributes[i].key + '="' + desc.attributes[i].value + '"]'); + if (item.err) { + try { + diagnostic.raw_error = { + message: item.err.message, + name: item.err.name, + constructor_name: item.err.constructor && item.err.constructor.name, + filename: item.err.fileName, + line: item.err.lineNumber, + column: item.err.columnNumber, + stack: item.err.stack + }; + } catch (e) { + diagnostic.raw_error = { + failed: String(e) + }; + } } - return out.join(''); + item.data.notifier.diagnostic = merge(item.data.notifier.diagnostic, diagnostic); + callback(null, item); } +;// ./src/browser/defaults.js +function defaults_toConsumableArray(r) { return defaults_arrayWithoutHoles(r) || defaults_iterableToArray(r) || defaults_unsupportedIterableToArray(r) || defaults_nonIterableSpread(); } +function defaults_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function defaults_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return defaults_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? defaults_arrayLikeToArray(r, a) : void 0; } } +function defaults_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } +function defaults_arrayWithoutHoles(r) { if (Array.isArray(r)) return defaults_arrayLikeToArray(r); } +function defaults_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } /** - * Input: a dom element - * Output: null if tagName is falsey or input is falsey, else - * { - * tagName: String, - * id: String | undefined, - * classes: [String] | undefined, - * attributes: [ - * { - * key: OneOf(type, name, title, alt), - * value: String - * } - * ] - * } + * Default browser options */ -function describeElement(elem) { - if (!elem || !elem.tagName) { - return null; - } - var out = {}, - className, - key, - attr, - i; - out.tagName = elem.tagName.toLowerCase(); - if (elem.id) { - out.id = elem.id; - } - className = elem.className; - if (className && typeof className === 'string') { - out.classes = className.split(/\s+/); + +var scrubFields = [].concat(defaults_toConsumableArray(commonScrubFields), ['cc-number', 'card number', 'cardnumber', 'cardnum', 'ccnum', 'ccnumber', 'cc num', 'creditcardnumber', 'credit card number', 'newcreditcardnumber', 'new credit card', 'creditcardno', 'credit card no', 'card#', 'card #', 'cc-csc', 'cvc', 'cvc2', 'cvv2', 'ccv2', 'security code', 'card verification', 'name on credit card', 'name on card', 'nameoncard', 'cardholder', 'card holder', 'name des karteninhabers', 'ccname', 'card type', 'cardtype', 'cc type', 'cctype', 'payment type', 'expiration date', 'expirationdate', 'expdate', 'cc-exp', 'ccmonth', 'ccyear']); + +// For compatibility with existing code that expects default export with scrubFields property +/* harmony default export */ var browser_defaults = ({ + scrubFields: scrubFields +}); +;// ./src/browser/globalSetup.js +function captureUncaughtExceptions(window, handler, shim) { + if (!window) { + return; } - var attributes = ['type', 'name', 'title', 'alt']; - out.attributes = []; - for (i = 0; i < attributes.length; i++) { - key = attributes[i]; - attr = elem.getAttribute(key); - if (attr) { - out.attributes.push({ - key: key, - value: attr - }); + var oldOnError; + if (typeof handler._rollbarOldOnError === 'function') { + oldOnError = handler._rollbarOldOnError; + } else if (window.onerror) { + oldOnError = window.onerror; + while (oldOnError._rollbarOldOnError) { + oldOnError = oldOnError._rollbarOldOnError; } + handler._rollbarOldOnError = oldOnError; } - return out; + handler.handleAnonymousErrors(); + var fn = function fn() { + var args = Array.prototype.slice.call(arguments, 0); + _rollbarWindowOnError(window, handler, oldOnError, args); + }; + if (shim) { + fn._rollbarOldOnError = oldOnError; + } + window.onerror = fn; } - -/* - * Detects if the given element matches any of the given class names (string or regex), - * or CSS selectors. - * @param {HTMLElement} element - The DOM element to check. - * @param {Array} classes - An array of class names (string or regex) to match against. - * @param {Array} selectors - An array of CSS selectors to match against. - * @return {boolean} - True if the element matches any of the classes or selectors, false otherwise. - */ -function isMatchingElement(element, classes, selectors) { - try { - var _iterator = domUtility_createForOfIteratorHelper(classes), - _step; - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var cls = _step.value; - if (typeof cls === 'string') { - if (element.classList.contains(cls)) { - return true; - } - } else { - var _iterator3 = domUtility_createForOfIteratorHelper(element.classList), - _step3; - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var c = _step3.value; - if (cls.test(c)) { - return true; - } - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); +function _rollbarWindowOnError(window, r, old, args) { + if (window._rollbarWrappedError) { + if (!args[4]) { + args[4] = window._rollbarWrappedError; } - var _iterator2 = domUtility_createForOfIteratorHelper(selectors), - _step2; - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var sel = _step2.value; - if (element.matches(sel)) { - return true; - } - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); + if (!args[5]) { + args[5] = window._rollbarWrappedError._rollbarContext; } - } catch (e) { - // ignore errors from invalid arguments + window._rollbarWrappedError = null; + } + var ret = r.handleUncaughtException.apply(r, args); + if (old) { + old.apply(window, args); } - return false; -} - -;// ./src/browser/telemetry.js -function browser_telemetry_typeof(o) { "@babel/helpers - typeof"; return browser_telemetry_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, browser_telemetry_typeof(o); } -function telemetry_toConsumableArray(r) { return telemetry_arrayWithoutHoles(r) || telemetry_iterableToArray(r) || telemetry_unsupportedIterableToArray(r) || telemetry_nonIterableSpread(); } -function telemetry_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function telemetry_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } -function telemetry_arrayWithoutHoles(r) { if (Array.isArray(r)) return telemetry_arrayLikeToArray(r); } -function browser_telemetry_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function browser_telemetry_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, browser_telemetry_toPropertyKey(o.key), o); } } -function browser_telemetry_createClass(e, r, t) { return r && browser_telemetry_defineProperties(e.prototype, r), t && browser_telemetry_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function browser_telemetry_defineProperty(e, r, t) { return (r = browser_telemetry_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function browser_telemetry_toPropertyKey(t) { var i = browser_telemetry_toPrimitive(t, "string"); return "symbol" == browser_telemetry_typeof(i) ? i : i + ""; } -function browser_telemetry_toPrimitive(t, r) { if ("object" != browser_telemetry_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != browser_telemetry_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -function telemetry_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = telemetry_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } -function telemetry_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return telemetry_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? telemetry_arrayLikeToArray(r, a) : void 0; } } -function telemetry_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } - - - - - -var telemetry_defaults = { - network: true, - networkResponseHeaders: false, - networkResponseBody: false, - networkRequestHeaders: false, - networkRequestBody: false, - networkErrorOnHttp5xx: false, - networkErrorOnHttp4xx: false, - networkErrorOnHttp0: false, - log: true, - dom: true, - navigation: true, - connectivity: true, - contentSecurityPolicy: true, - errorOnContentSecurityPolicy: false -}; -function restore(replacements, type) { - var b; - while (replacements[type].length) { - b = replacements[type].shift(); - b[0][b[1]] = b[2]; + // Let other chained onerror handlers above run before setting this. + // If an error is thrown and caught within a chained onerror handler, + // Error.prepareStackTrace() will see that one before the one we want. + if (ret === 'anonymous') { + r.anonymousErrorsPending += 1; // See Rollbar.prototype.handleAnonymousErrors() } } -function nameFromDescription(description) { - if (!description || !description.attributes) { - return null; +function captureUnhandledRejections(window, handler, shim) { + if (!window) { + return; } - var attrs = description.attributes; - var _iterator = telemetry_createForOfIteratorHelper(attrs), - _step; - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var a = _step.value; - if (a.key === 'name') { - return a.value; - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); + if (typeof window._rollbarURH === 'function' && window._rollbarURH.belongsToShim) { + window.removeEventListener('unhandledrejection', window._rollbarURH); } - return null; -} -function defaultValueScrubber(scrubFields) { - var patterns = []; - var _iterator2 = telemetry_createForOfIteratorHelper(scrubFields), - _step2; - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var field = _step2.value; - patterns.push(new RegExp(field, 'i')); + var rejectionHandler = function rejectionHandler(evt) { + var reason, promise, detail; + try { + reason = evt.reason; + } catch (_e) { + reason = undefined; } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - return function (description) { - var name = nameFromDescription(description); - if (!name) { - return false; + try { + promise = evt.promise; + } catch (_e) { + promise = '[unhandledrejection] error getting `promise` from event'; } - for (var _i = 0, _patterns = patterns; _i < _patterns.length; _i++) { - var p = _patterns[_i]; - if (p.test(name)) { - return true; + try { + detail = evt.detail; + if (!reason && detail) { + reason = detail.reason; + promise = detail.promise; } + } catch (_e) { + // Ignore + } + if (!reason) { + reason = '[unhandledrejection] error getting `reason` from event'; + } + if (handler && handler.handleUnhandledRejection) { + handler.handleUnhandledRejection(reason, promise); } - return false; }; + rejectionHandler.belongsToShim = shim; + window._rollbarURH = rejectionHandler; + window.addEventListener('unhandledrejection', rejectionHandler); } -var Instrumenter = /*#__PURE__*/function () { - function Instrumenter(options, telemeter, rollbar, _window, _document) { - browser_telemetry_classCallCheck(this, Instrumenter); - browser_telemetry_defineProperty(this, "deinstrumentConnectivity", function () { - this.removeListeners('connectivity'); - }); - this.options = options; - var autoInstrument = options.autoInstrument; - if (options.enabled === false || autoInstrument === false) { - this.autoInstrument = {}; - } else { - if (!isType(autoInstrument, 'object')) { - autoInstrument = telemetry_defaults; - } - this.autoInstrument = src_merge(telemetry_defaults, autoInstrument); - } - this.configureScrubbing(); - this.telemeter = telemeter; - this.rollbar = rollbar; - this.diagnostic = rollbar.client.notifier.diagnostic; - this._window = _window || {}; - this._document = _document || {}; - this.replacements = { - network: [], - log: [], - navigation: [], - connectivity: [] - }; - this.eventRemovers = { - dom: [], - connectivity: [], - contentsecuritypolicy: [] - }; - this._location = this._window.location; - this._lastHref = this._location && this._location.href; + +;// ./src/browser/predicates.js + +function checkIgnore(item, settings) { + if (get(settings, 'plugins.jquery.ignoreAjaxErrors')) { + return !get(item, 'body.message.extra.isAjax'); } - return browser_telemetry_createClass(Instrumenter, [{ - key: "configureScrubbing", - value: function configureScrubbing() { - var _options$scrubTelemet, _options$replay, _options$replay2, _options$replay3, _options$replay4, _options$replay5, _options$replay6, _options$replay7, _options$replay8, _options$replay9; - var options = this.options; - this.scrubTelemetryInputs = !!((_options$scrubTelemet = options.scrubTelemetryInputs) !== null && _options$scrubTelemet !== void 0 ? _options$scrubTelemet : (_options$replay = options.replay) === null || _options$replay === void 0 ? void 0 : _options$replay.maskAllInputs); - this.telemetryScrubber = options.telemetryScrubber; - this.defaultValueScrubber = defaultValueScrubber(options.scrubFields); - this.maskInputFn = (_options$replay2 = options.replay) === null || _options$replay2 === void 0 ? void 0 : _options$replay2.maskInputFn; - this.maskInputOptions = ((_options$replay3 = options.replay) === null || _options$replay3 === void 0 ? void 0 : _options$replay3.maskInputOptions) || {}; - this.scrubClasses = [(_options$replay4 = options.replay) === null || _options$replay4 === void 0 ? void 0 : _options$replay4.blockClass, (_options$replay5 = options.replay) === null || _options$replay5 === void 0 ? void 0 : _options$replay5.ignoreClass, (_options$replay6 = options.replay) === null || _options$replay6 === void 0 ? void 0 : _options$replay6.maskTextClass].filter(Boolean); - this.scrubSelectors = [(_options$replay7 = options.replay) === null || _options$replay7 === void 0 ? void 0 : _options$replay7.blockSelector, (_options$replay8 = options.replay) === null || _options$replay8 === void 0 ? void 0 : _options$replay8.ignoreSelector, (_options$replay9 = options.replay) === null || _options$replay9 === void 0 ? void 0 : _options$replay9.maskTextSelector].filter(Boolean); - } - }, { - key: "configure", - value: function configure(options) { - this.options = src_merge(this.options, options); - var autoInstrument = options.autoInstrument; - var oldSettings = src_merge(this.autoInstrument); - if (options.enabled === false || autoInstrument === false) { - this.autoInstrument = {}; - } else { - if (!isType(autoInstrument, 'object')) { - autoInstrument = telemetry_defaults; - } - this.autoInstrument = src_merge(telemetry_defaults, autoInstrument); - } - this.configureScrubbing(); - this.instrument(oldSettings); - } + return true; +} - // eslint-disable-next-line complexity - }, { - key: "instrument", - value: function instrument(oldSettings) { - if (this.autoInstrument.network && !(oldSettings && oldSettings.network)) { - this.instrumentNetwork(); - } else if (!this.autoInstrument.network && oldSettings && oldSettings.network) { - this.deinstrumentNetwork(); - } - if (this.autoInstrument.log && !(oldSettings && oldSettings.log)) { - this.instrumentConsole(); - } else if (!this.autoInstrument.log && oldSettings && oldSettings.log) { - this.deinstrumentConsole(); - } - if (this.autoInstrument.dom && !(oldSettings && oldSettings.dom)) { - this.instrumentDom(); - } else if (!this.autoInstrument.dom && oldSettings && oldSettings.dom) { - this.deinstrumentDom(); - } - if (this.autoInstrument.navigation && !(oldSettings && oldSettings.navigation)) { - this.instrumentNavigation(); - } else if (!this.autoInstrument.navigation && oldSettings && oldSettings.navigation) { - this.deinstrumentNavigation(); - } - if (this.autoInstrument.connectivity && !(oldSettings && oldSettings.connectivity)) { - this.instrumentConnectivity(); - } else if (!this.autoInstrument.connectivity && oldSettings && oldSettings.connectivity) { - this.deinstrumentConnectivity(); +;// ./src/browser/replay/defaults.js +/** + * Default session replay recording options + * See https://github.com/rrweb-io/rrweb/blob/master/guide.md#options for details + */ +/* harmony default export */ var replay_defaults = ({ + enabled: false, + // Whether recording is enabled + autoStart: true, + // Start recording automatically when Rollbar initializes + + // defaults used by triggers that don't specify them + triggerDefaults: { + samplingRatio: 1.0, + preDuration: 300, + postDuration: 5 + }, + triggers: [{ + type: 'occurrence', + level: ['error', 'critical'] + }], + debug: { + logErrors: true, + // Whether to log errors emitted by rrweb. + logEmits: false // Whether to log emitted events + }, + // Recording options + inlineStylesheet: true, + // Whether to inline stylesheets to improve replay accuracy + inlineImages: false, + // Whether to record the image content + collectFonts: true, + // Whether to collect fonts in the website + + // Privacy options + // Fine-grained control over which input types to mask + // By default only password inputs are masked if maskInputs is true + maskInputOptions: { + password: true, + email: false, + tel: false, + text: false, + color: false, + date: false, + 'datetime-local': false, + month: false, + number: false, + range: false, + search: false, + time: false, + url: false, + week: false + }, + // Mask all input values + maskAllInputs: false, + // Class names to block, mask, or ignore the content of elements. + blockClass: 'rb-block', + maskTextClass: 'rb-mask', + ignoreClass: 'rb-ignore', + // Remove unnecessary parts of the DOM + // By default all removable elements are removed + slimDOMOptions: { + script: true, + // Remove script elements + comment: true, + // Remove comments + headFavicon: true, + // Remove favicons in the head + headWhitespace: true, + // Remove whitespace in head + headMetaDescKeywords: true, + // Remove meta description and keywords + headMetaSocial: true, + // Remove social media meta tags + headMetaRobots: true, + // Remove robots meta directives + headMetaHttpEquiv: true, + // Remove http-equiv meta directives + headMetaAuthorship: true, + // Remove authorship meta directives + headMetaVerification: true // Remove verification meta directives + } + + // Custom callbacks for advanced use cases + // These are undefined by default and can be set programmatically + // maskInputFn: undefined, // Custom function to mask input values + // maskTextFn: undefined, // Custom function to mask text content + // errorHandler: undefined, // Custom error handler for recording errors + + // Plugin system + // plugins: [] // List of plugins to use (must be set programmatically) +}); +;// ./src/browser/transforms.js + + + +function handleDomException(item, options, callback) { + if (item.err && errorParser.Stack(item.err).name === 'DOMException') { + var originalError = new Error(); + originalError.name = item.err.name; + originalError.message = item.err.message; + originalError.stack = item.err.stack; + originalError.nested = item.err; + item.err = originalError; + } + callback(null, item); +} +function handleItemWithError(item, options, callback) { + item.data = item.data || {}; + if (item.err) { + try { + item.stackInfo = item.err._savedStackTrace || errorParser.parse(item.err, item.skipFrames); + if (options.addErrorContext) { + transforms_addErrorContext(item); } - if (this.autoInstrument.contentSecurityPolicy && !(oldSettings && oldSettings.contentSecurityPolicy)) { - this.instrumentContentSecurityPolicy(); - } else if (!this.autoInstrument.contentSecurityPolicy && oldSettings && oldSettings.contentSecurityPolicy) { - this.deinstrumentContentSecurityPolicy(); + } catch (e) { + src_logger.error('Error while parsing the error object.', e); + try { + item.message = item.err.message || item.err.description || item.message || String(item.err); + } catch (e2) { + item.message = String(item.err) || String(e2); } + delete item.err; } - }, { - key: "deinstrumentNetwork", - value: function deinstrumentNetwork() { - restore(this.replacements, 'network'); + } + callback(null, item); +} +function transforms_addErrorContext(item) { + var chain = []; + var err = item.err; + chain.push(err); + while (err.nested || err.cause) { + err = err.nested || err.cause; + chain.push(err); + } + addErrorContext(item, chain); +} +function ensureItemHasSomethingToSay(item, options, callback) { + if (!item.message && !item.stackInfo && !item.custom) { + callback(new Error('No message, stack info, or custom data'), null); + } + callback(null, item); +} +function addBaseInfo(item, options, callback) { + var environment = options.payload && options.payload.environment || options.environment; + item.data = merge(item.data, { + environment: environment, + level: item.level, + endpoint: options.endpoint, + platform: 'browser', + framework: 'browser-js', + language: 'javascript', + server: {}, + uuid: item.uuid, + notifier: { + name: 'rollbar-browser-js', + version: options.version + }, + custom: item.custom + }); + callback(null, item); +} +function addRequestInfo(window) { + return function (item, options, callback) { + var requestInfo = {}; + if (window && window.location) { + requestInfo.url = window.location.href; + requestInfo.query_string = window.location.search; } - }, { - key: "instrumentNetwork", - value: function instrumentNetwork() { - var self = this; - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - utility_replace(xhr, prop, function (orig) { - return self.rollbar.wrap(orig); - }); - } - } - if ('XMLHttpRequest' in this._window) { - var xhrp = this._window.XMLHttpRequest.prototype; - utility_replace(xhrp, 'open', function (orig) { - return function (method, url) { - var isUrlObject = _isUrlObject(url); - if (isType(url, 'string') || isUrlObject) { - url = isUrlObject ? url.toString() : url; - if (this.__rollbar_xhr) { - this.__rollbar_xhr.method = method; - this.__rollbar_xhr.url = url; - this.__rollbar_xhr.status_code = null; - this.__rollbar_xhr.start_time_ms = utility_now(); - this.__rollbar_xhr.end_time_ms = null; - } else { - this.__rollbar_xhr = { - method: method, - url: url, - status_code: null, - start_time_ms: utility_now(), - end_time_ms: null - }; - } - } - return orig.apply(this, arguments); - }; - }, this.replacements, 'network'); - utility_replace(xhrp, 'setRequestHeader', function (orig) { - return function (header, value) { - // If xhr.open is async, __rollbar_xhr may not be initialized yet. - if (!this.__rollbar_xhr) { - this.__rollbar_xhr = {}; - } - if (isType(header, 'string') && isType(value, 'string')) { - if (self.autoInstrument.networkRequestHeaders) { - if (!this.__rollbar_xhr.request_headers) { - this.__rollbar_xhr.request_headers = {}; - } - this.__rollbar_xhr.request_headers[header] = value; - } - // We want the content type even if request header telemetry is off. - if (header.toLowerCase() === 'content-type') { - this.__rollbar_xhr.request_content_type = value; - } - } - return orig.apply(this, arguments); - }; - }, this.replacements, 'network'); - utility_replace(xhrp, 'send', function (orig) { - return function (data) { - var xhr = this; - function onreadystatechangeHandler() { - if (xhr.__rollbar_xhr) { - if (xhr.__rollbar_xhr.status_code === null) { - xhr.__rollbar_xhr.status_code = 0; - if (self.autoInstrument.networkRequestBody) { - xhr.__rollbar_xhr.request = data; - } - xhr.__rollbar_event = self.captureNetwork(xhr.__rollbar_xhr, 'xhr', undefined); - } - if (xhr.readyState < 2) { - xhr.__rollbar_xhr.start_time_ms = utility_now(); - } - if (xhr.readyState > 3) { - var end_time_ms = utility_now(); - xhr.__rollbar_xhr.end_time_ms = end_time_ms; - var _headers = null; - xhr.__rollbar_xhr.response_content_type = xhr.getResponseHeader('Content-Type'); - if (self.autoInstrument.networkResponseHeaders) { - var headersConfig = self.autoInstrument.networkResponseHeaders; - _headers = {}; - try { - var header; - if (headersConfig === true) { - var allHeaders = xhr.getAllResponseHeaders(); - if (allHeaders) { - var arr = allHeaders.trim().split(/[\r\n]+/); - var parts, value; - var _iterator3 = telemetry_createForOfIteratorHelper(arr), - _step3; - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var h = _step3.value; - parts = h.split(': '); - header = parts.shift(); - value = parts.join(': '); - _headers[header] = value; - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - } - } else { - var _iterator4 = telemetry_createForOfIteratorHelper(headersConfig), - _step4; - try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { - var _h = _step4.value; - _headers[_h] = xhr.getResponseHeader(_h); - } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); - } - } - } catch (e) { - /* we ignore the errors here that could come from different - * browser issues with the xhr methods */ - } - } - var body = null; - if (self.autoInstrument.networkResponseBody) { - try { - body = xhr.responseText; - } catch (e) { - /* ignore errors from reading responseText */ - } - } - var response = null; - if (body || _headers) { - response = {}; - if (body) { - if (self.isJsonContentType(xhr.__rollbar_xhr.response_content_type)) { - response.body = self.scrubJson(body); - } else { - response.body = body; - } - } - if (_headers) { - response.headers = _headers; - } - } - if (response) { - xhr.__rollbar_xhr.response = response; - } - try { - var code = xhr.status; - code = code === 1223 ? 204 : code; - xhr.__rollbar_xhr.status_code = code; - self.addOtelNetworkResponse(xhr.__rollbar_event, end_time_ms, code); - xhr.__rollbar_event.level = self.telemeter.levelFromStatus(code); - self.errorOnHttpStatus(xhr.__rollbar_xhr); - } catch (e) { - /* ignore possible exception from xhr.status */ - } - } + var remoteString = '$remote_ip'; + if (!options.captureIp) { + remoteString = null; + } else if (options.captureIp !== true) { + remoteString += '_anonymize'; + } + if (remoteString) requestInfo.user_ip = remoteString; + if (Object.keys(requestInfo).length > 0) { + set(item, 'data.request', requestInfo); + } + callback(null, item); + }; +} +function addClientInfo(window) { + return function (item, options, callback) { + if (!window) { + return callback(null, item); + } + var nav = window.navigator || {}; + var scr = window.screen || {}; + set(item, 'data.client', { + runtime_ms: item.timestamp - window._rollbarStartTime, + timestamp: Math.round(item.timestamp / 1000), + javascript: { + browser: nav.userAgent, + language: nav.language, + cookie_enabled: nav.cookieEnabled, + screen: { + width: scr.width, + height: scr.height + } + } + }); + callback(null, item); + }; +} +function addPluginInfo(window) { + return function (item, options, callback) { + if (!window || !window.navigator) { + return callback(null, item); + } + var plugins = []; + var navPlugins = window.navigator.plugins || []; + var cur; + for (var i = 0, l = navPlugins.length; i < l; ++i) { + cur = navPlugins[i]; + plugins.push({ + name: cur.name, + description: cur.description + }); + } + set(item, 'data.client.javascript.plugins', plugins); + callback(null, item); + }; +} +function addBody(item, options, callback) { + if (item.stackInfo) { + if (item.stackInfo.traceChain) { + addBodyTraceChain(item, options, callback); + } else { + addBodyTrace(item, options, callback); + } + } else { + addBodyMessage(item, options, callback); + } +} +function addBodyMessage(item, options, callback) { + var message = item.message; + var custom = item.custom; + if (!message) { + message = 'Item sent with null or missing arguments.'; + } + var result = { + body: message + }; + if (custom) { + result.extra = merge(custom); + } + set(item, 'data.body', { + message: result + }); + callback(null, item); +} +function stackFromItem(item) { + var stackInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + // Transform a TraceKit stackInfo object into a Rollbar trace + var stack = (stackInfo || item.stackInfo).stack; + if (stack && stack.length === 0 && item._unhandledStackInfo && item._unhandledStackInfo.stack) { + stack = item._unhandledStackInfo.stack; + } + return stack; +} +function addBodyTraceChain(item, options, callback) { + var traceChain = item.stackInfo.traceChain; + var traces = []; + var traceChainLength = traceChain.length; + for (var i = 0; i < traceChainLength; i++) { + var trace = buildTrace(item, traceChain[i], options); + traces.push(trace); + } + set(item, 'data.body', { + trace_chain: traces + }); + callback(null, item); +} +function addBodyTrace(item, options, callback) { + var stack = stackFromItem(item); + if (stack) { + var trace = buildTrace(item, item.stackInfo, options); + set(item, 'data.body', { + trace: trace + }); + callback(null, item); + } else { + var stackInfo = item.stackInfo; + var guess = errorParser.guessErrorClass(stackInfo.message); + var className = errorClass(stackInfo, guess[0], options); + var message = guess[1]; + item.message = className + ': ' + message; + addBodyMessage(item, options, callback); + } +} +function buildTrace(item, stackInfo, options) { + var description = item && item.data.description; + var custom = item && item.custom; + var stack = stackFromItem(item, stackInfo); + var guess = errorParser.guessErrorClass(stackInfo.message); + var className = errorClass(stackInfo, guess[0], options); + var message = guess[1]; + var trace = { + exception: { + class: className, + message: message + } + }; + if (description) { + trace.exception.description = description; + } + if (stack) { + if (stack.length === 0) { + trace.exception.stack = stackInfo.rawStack; + trace.exception.raw = String(stackInfo.rawException); + } + var stackFrame; + var frame; + var code; + var pre; + var post; + var contextLength; + var i, mid; + trace.frames = []; + for (i = 0; i < stack.length; ++i) { + stackFrame = stack[i]; + frame = { + filename: stackFrame.url ? sanitizeUrl(stackFrame.url) : '(unknown)', + lineno: stackFrame.line || null, + method: !stackFrame.func || stackFrame.func === '?' ? '[anonymous]' : stackFrame.func, + colno: stackFrame.column + }; + if (options.sendFrameUrl) { + frame.url = stackFrame.url; + } + if (frame.method && frame.method.endsWith && frame.method.endsWith('_rollbar_wrapped')) { + continue; + } + code = pre = post = null; + contextLength = stackFrame.context ? stackFrame.context.length : 0; + if (contextLength) { + mid = Math.floor(contextLength / 2); + pre = stackFrame.context.slice(0, mid); + code = stackFrame.context[mid]; + post = stackFrame.context.slice(mid); + } + if (code) { + frame.code = code; + } + if (pre || post) { + frame.context = {}; + if (pre && pre.length) { + frame.context.pre = pre; + } + if (post && post.length) { + frame.context.post = post; + } + } + if (stackFrame.args) { + frame.args = stackFrame.args; + } + trace.frames.push(frame); + } + + // NOTE(cory): reverse the frames since rollbar.com expects the most recent call last + trace.frames.reverse(); + if (custom) { + trace.extra = merge(custom); + } + } + return trace; +} +function errorClass(stackInfo, guess, options) { + if (stackInfo.name) { + return stackInfo.name; + } else if (options.guessErrorClass) { + return guess; + } else { + return '(unknown)'; + } +} +function addScrubber(scrubFn) { + return function (item, options, callback) { + if (scrubFn) { + var scrubFields = options.scrubFields || []; + var scrubPaths = options.scrubPaths || []; + item.data = scrubFn(item.data, scrubFields, scrubPaths); + } + callback(null, item); + }; +} + +;// ./src/browser/transport/fetch.js +function fetch_typeof(o) { "@babel/helpers - typeof"; return fetch_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, fetch_typeof(o); } +function fetch_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function fetch_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? fetch_ownKeys(Object(t), !0).forEach(function (r) { fetch_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : fetch_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function fetch_defineProperty(e, r, t) { return (r = fetch_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function fetch_toPropertyKey(t) { var i = fetch_toPrimitive(t, "string"); return "symbol" == fetch_typeof(i) ? i : i + ""; } +function fetch_toPrimitive(t, r) { if ("object" != fetch_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != fetch_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + + +function makeFetchRequest(_ref) { + var accessToken = _ref.accessToken, + url = _ref.url, + method = _ref.method, + payload = _ref.payload, + headers = _ref.headers, + callback = _ref.callback, + timeout = _ref.timeout; + var controller; + var timeoutId; + if (isFiniteNumber(timeout)) { + controller = new AbortController(); + timeoutId = setTimeout(function () { + controller.abort(); + }, timeout); + } + headers = fetch_objectSpread({ + 'Content-Type': 'application/json', + 'X-Rollbar-Access-Token': accessToken, + signal: controller && controller.signal + }, headers); + fetch(url, { + method: method, + headers: headers, + body: payload + }).then(function (response) { + if (timeoutId) clearTimeout(timeoutId); + var respHeaders = response.headers; + var isItemRoute = url.endsWith('/api/1/item/'); + var headers = isItemRoute ? { + 'Rollbar-Replay-Enabled': respHeaders.get('Rollbar-Replay-Enabled'), + 'Rollbar-Replay-RateLimit-Remaining': respHeaders.get('Rollbar-Replay-RateLimit-Remaining'), + 'Rollbar-Replay-RateLimit-Reset': respHeaders.get('Rollbar-Replay-RateLimit-Reset') + } : {}; + var json = response.json(); + callback(null, json, headers); + }).catch(function (error) { + src_logger.error(error.message); + callback(error); + }); +} +/* harmony default export */ var transport_fetch = (makeFetchRequest); +;// ./src/browser/transport/xhr.js +function xhr_slicedToArray(r, e) { return xhr_arrayWithHoles(r) || xhr_iterableToArrayLimit(r, e) || xhr_unsupportedIterableToArray(r, e) || xhr_nonIterableRest(); } +function xhr_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function xhr_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return xhr_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? xhr_arrayLikeToArray(r, a) : void 0; } } +function xhr_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function xhr_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function xhr_arrayWithHoles(r) { if (Array.isArray(r)) return r; } +/*global XDomainRequest*/ + + + +function makeXhrRequest(_ref) { + var accessToken = _ref.accessToken, + url = _ref.url, + method = _ref.method, + payload = _ref.payload, + headers = _ref.headers, + callback = _ref.callback, + requestFactory = _ref.requestFactory, + timeout = _ref.timeout; + var request; + if (requestFactory) { + request = requestFactory(); + } else { + request = _createXMLHTTPObject(); + } + if (!request) { + // Give up, no way to send requests + return callback(new Error('No way to send a request')); + } + try { + try { + var _onreadystatechange = function onreadystatechange() { + try { + if (_onreadystatechange && request.readyState === 4) { + _onreadystatechange = undefined; + var parseResponse = jsonParse(request.responseText); + if (_isSuccess(request)) { + var isItemRoute = url.endsWith('/api/1/item/'); + var _headers = isItemRoute ? { + 'Rollbar-Replay-Enabled': request.getResponseHeader('Rollbar-Replay-Enabled'), + 'Rollbar-Replay-RateLimit-Remaining': request.getResponseHeader('Rollbar-Replay-RateLimit-Remaining'), + 'Rollbar-Replay-RateLimit-Reset': request.getResponseHeader('Rollbar-Replay-RateLimit-Reset') + } : {}; + callback(parseResponse.error, parseResponse.value, _headers); + return; + } else if (_isNormalFailure(request)) { + if (request.status === 403) { + // likely caused by using a server access token + var message = parseResponse.value && parseResponse.value.message; + src_logger.error(message); } - } - wrapProp('onload', xhr); - wrapProp('onerror', xhr); - wrapProp('onprogress', xhr); - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - utility_replace(xhr, 'onreadystatechange', function (orig) { - return self.rollbar.wrap(orig, undefined, onreadystatechangeHandler); - }); + // return valid http status codes + callback(new Error(String(request.status))); } else { - xhr.onreadystatechange = onreadystatechangeHandler; - } - if (xhr.__rollbar_xhr && self.trackHttpErrors()) { - xhr.__rollbar_xhr.stack = new Error().stack; + // IE will return a status 12000+ on some sort of connection failure, + // so we return a blank error + // http://msdn.microsoft.com/en-us/library/aa383770%28VS.85%29.aspx + var msg = 'XHR response had no status code (likely connection failure)'; + callback(_newRetriableError(msg)); } - return orig.apply(this, arguments); - }; - }, this.replacements, 'network'); + } + } catch (ex) { + //jquery source mentions firefox may error out while accessing the + //request members if there is a network error + //https://github.com/jquery/jquery/blob/a938d7b1282fc0e5c52502c225ae8f0cef219f0a/src/ajax/xhr.js#L111 + var exc; + if (ex && ex.stack) { + exc = ex; + } else { + exc = new Error(ex); + } + callback(exc); + } + }; + request.open(method, url, true); + if (request.setRequestHeader) { + request.setRequestHeader('Content-Type', 'application/json'); + request.setRequestHeader('X-Rollbar-Access-Token', accessToken); + for (var _i = 0, _Object$entries = Object.entries(headers !== null && headers !== void 0 ? headers : {}); _i < _Object$entries.length; _i++) { + var _Object$entries$_i = xhr_slicedToArray(_Object$entries[_i], 2), + h = _Object$entries$_i[0], + v = _Object$entries$_i[1]; + request.setRequestHeader(h, v); + } } - if ('fetch' in this._window) { - utility_replace(this._window, 'fetch', function (orig) { - return function (fn, t) { - var args = Array.prototype.slice.call(arguments); - var input = args[0]; - var method = 'GET'; - var url; - var isUrlObject = _isUrlObject(input); - if (isType(input, 'string') || isUrlObject) { - url = isUrlObject ? input.toString() : input; - } else if (input) { - url = input.url; - if (input.method) { - method = input.method; - } - } - if (args[1] && args[1].method) { - method = args[1].method; - } - var metadata = { - method: method, - url: url, - status_code: null, - start_time_ms: utility_now(), - end_time_ms: null - }; - if (args[1] && args[1].headers) { - // Argument may be a Headers object, or plain object. Ensure here that - // we are working with a Headers object with case-insensitive keys. - var reqHeaders = utility_headers(args[1].headers); - metadata.request_content_type = reqHeaders.get('Content-Type'); - if (self.autoInstrument.networkRequestHeaders) { - metadata.request_headers = self.fetchHeaders(reqHeaders, self.autoInstrument.networkRequestHeaders); - } - } - if (self.autoInstrument.networkRequestBody) { - if (args[1] && args[1].body) { - metadata.request = args[1].body; - } else if (args[0] && !isType(args[0], 'string') && args[0].body) { - metadata.request = args[0].body; - } - } - var telemetryEvent = self.captureNetwork(metadata, 'fetch', undefined); - if (self.trackHttpErrors()) { - metadata.stack = new Error().stack; - } + if (isFiniteNumber(timeout)) { + request.timeout = timeout; + } + request.onreadystatechange = _onreadystatechange; + request.send(payload); + } catch (_e1) { + // Sending using the normal xmlhttprequest object didn't work, try XDomainRequest + if (typeof XDomainRequest !== 'undefined') { + // Assume we are in a really old browser which has a bunch of limitations: + // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx + + // Extreme paranoia: if we have XDomainRequest then we have a window, but just in case + if (!window || !window.location) { + return callback(new Error('No window available during request, unknown environment')); + } - // Start our handler before returning the promise. This allows resp.clone() - // to execute before other handlers touch the response. - return orig.apply(this, args).then(function (resp) { - var end_time_ms = utility_now(); - metadata.end_time_ms = end_time_ms; - metadata.status_code = resp.status; - self.addOtelNetworkResponse(telemetryEvent, end_time_ms, resp.status); - metadata.response_content_type = resp.headers.get('Content-Type'); - var headers = null; - if (self.autoInstrument.networkResponseHeaders) { - headers = self.fetchHeaders(resp.headers, self.autoInstrument.networkResponseHeaders); - } - var body = null; - if (self.autoInstrument.networkResponseBody) { - if (typeof resp.text === 'function') { - // Response.text() is not implemented on some platforms - // The response must be cloned to prevent reading (and locking) the original stream. - // This must be done before other handlers touch the response. - body = resp.clone().text(); //returns a Promise - } - } - if (headers || body) { - metadata.response = {}; - if (body) { - // Test to ensure body is a Promise, which it should always be. - if (typeof body.then === 'function') { - body.then(function (text) { - if (text && self.isJsonContentType(metadata.response_content_type)) { - metadata.response.body = self.scrubJson(text); - } else { - metadata.response.body = text; - } - }); - } else { - metadata.response.body = body; - } - } - if (headers) { - metadata.response.headers = headers; - } - } - self.errorOnHttpStatus(metadata); - return resp; - }); - }; - }, this.replacements, 'network'); + // If the current page is http, try and send over http + if (window.location.href.substring(0, 5) === 'http:' && url.substring(0, 5) === 'https') { + url = 'http' + url.substring(5); + } + var xdomainrequest = new XDomainRequest(); + xdomainrequest.onprogress = function () {}; + xdomainrequest.ontimeout = function () { + var msg = 'Request timed out'; + var code = 'ETIMEDOUT'; + callback(_newRetriableError(msg, code)); + }; + xdomainrequest.onerror = function () { + callback(new Error('Error during request')); + }; + xdomainrequest.onload = function () { + var parseResponse = jsonParse(xdomainrequest.responseText); + callback(parseResponse.error, parseResponse.value); + }; + xdomainrequest.open(method, url, true); + xdomainrequest.send(payload); + } else { + callback(new Error('Cannot find a method to transport a request')); + } + } + } catch (e2) { + callback(e2); + } +} +function _createXMLHTTPObject() { + /* global ActiveXObject:false */ + + var factories = [function () { + return new XMLHttpRequest(); + }, function () { + return new ActiveXObject('Msxml2.XMLHTTP'); + }, function () { + return new ActiveXObject('Msxml3.XMLHTTP'); + }, function () { + return new ActiveXObject('Microsoft.XMLHTTP'); + }]; + var xmlhttp; + var i; + var numFactories = factories.length; + for (i = 0; i < numFactories; i++) { + try { + xmlhttp = factories[i](); + break; + } catch (_e) { + // pass + } + } + return xmlhttp; +} +function _isSuccess(r) { + return r && r.status && r.status === 200; +} +function _isNormalFailure(r) { + return r && isType(r.status, 'number') && r.status >= 400 && r.status < 600; +} +function _newRetriableError(message, code) { + var err = new Error(message); + err.code = code || 'ENOTFOUND'; + return err; +} +/* harmony default export */ var xhr = (makeXhrRequest); +;// ./src/browser/transport.js + + + + +/* + * accessToken may be embedded in payload but that should not + * be assumed + * + * options: { + * hostname + * protocol + * path + * port + * method + * transport ('xhr' | 'fetch') + * } + * + * params is an object containing key/value pairs. These + * will be appended to the path as 'key=value&key=value' + * + * payload is an unserialized object + */ +function Transport(truncation) { + this.truncation = truncation; +} +Transport.prototype.get = function (accessToken, options, params, callback, requestFactory) { + if (!callback || !isFunction(callback)) { + callback = function callback() {}; + } + addParamsAndAccessTokenToPath(accessToken, options, params); + var method = 'GET'; + var url = formatUrl(options); + this._makeZoneRequest({ + accessToken: accessToken, + url: url, + method: method, + callback: callback, + requestFactory: requestFactory, + timeout: options.timeout, + transport: options.transport + }); +}; +Transport.prototype.post = function (_ref) { + var accessToken = _ref.accessToken, + options = _ref.options, + payload = _ref.payload, + headers = _ref.headers, + callback = _ref.callback, + requestFactory = _ref.requestFactory; + if (!callback || !isFunction(callback)) { + callback = function callback() {}; + } + if (!payload) { + return callback(new Error('Cannot send empty request')); + } + var stringifyResult; + // Check payload.body to ensure only items are truncated. + if (this.truncation && payload.body) { + stringifyResult = this.truncation.truncate(payload); + } else { + stringifyResult = stringify(payload); + } + if (stringifyResult.error) { + return callback(stringifyResult.error); + } + var method = 'POST'; + var url = formatUrl(options); + this._makeZoneRequest({ + accessToken: accessToken, + url: url, + method: method, + payload: stringifyResult.value, + headers: headers, + callback: callback, + requestFactory: requestFactory, + timeout: options.timeout, + transport: options.transport + }); +}; +Transport.prototype.postJsonPayload = function (accessToken, options, payload, callback, requestFactory) { + if (!callback || !isFunction(callback)) { + callback = function callback() {}; + } + var method = 'POST'; + var url = formatUrl(options); + this._makeZoneRequest({ + accessToken: accessToken, + url: url, + method: method, + payload: payload, + callback: callback, + requestFactory: requestFactory, + timeout: options.timeout, + transport: options.transport + }); +}; + +// Wraps `_makeRequest` if zone.js is being used, ensuring that Rollbar +// API calls are not intercepted by any child forked zones. +// This is equivalent to `NgZone.runOutsideAngular` in Angular. +Transport.prototype._makeZoneRequest = function () { + var _this = this; + var gWindow = typeof window !== 'undefined' && window || typeof self !== 'undefined' && self; + // Whenever zone.js is loaded and `Zone` is exposed globally, access + // the root zone to ensure that requests are always made within it. + // This approach is framework-agnostic, regardless of which + // framework zone.js is used with. + var rootZone = gWindow && gWindow.Zone && gWindow.Zone.root; + var args = Array.prototype.slice.call(arguments); + if (rootZone) { + rootZone.run(function () { + _this._makeRequest.apply(undefined, args); + }); + } else { + this._makeRequest.apply(undefined, args); + } +}; +Transport.prototype._makeRequest = function (params) { + var payload = params.payload, + callback = params.callback, + transport = params.transport; + if (typeof RollbarProxy !== 'undefined') { + return _proxyRequest(payload, callback); + } + if (transport === 'fetch') { + transport_fetch(params); + } else { + xhr(params); + } +}; + +/* global RollbarProxy */ +function _proxyRequest(json, callback) { + var rollbarProxy = new RollbarProxy(); + rollbarProxy.sendJsonPayload(json, function (_msg) { + /* do nothing */ + }, function (err) { + callback(new Error(err)); + }); +} +/* harmony default export */ var browser_transport = (Transport); +;// ./src/browser/url.js +// See https://nodejs.org/docs/latest/api/url.html +function url_parse(url) { + var result = { + protocol: null, + auth: null, + host: null, + path: null, + hash: null, + href: url, + hostname: null, + port: null, + pathname: null, + search: null, + query: null + }; + var i, last; + i = url.indexOf('//'); + if (i !== -1) { + result.protocol = url.substring(0, i); + last = i + 2; + } else { + last = 0; + } + i = url.indexOf('@', last); + if (i !== -1) { + result.auth = url.substring(last, i); + last = i + 1; + } + i = url.indexOf('/', last); + if (i === -1) { + i = url.indexOf('?', last); + if (i === -1) { + i = url.indexOf('#', last); + if (i === -1) { + result.host = url.substring(last); + } else { + result.host = url.substring(last, i); + result.hash = url.substring(i); } - } - }, { - key: "captureNetwork", - value: function captureNetwork(metadata, subtype, rollbarUUID) { - if (metadata.request && this.isJsonContentType(metadata.request_content_type)) { - metadata.request = this.scrubJson(metadata.request); + result.hostname = result.host.split(':')[0]; + result.port = result.host.split(':')[1]; + if (result.port) { + result.port = parseInt(result.port, 10); } - return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID); - } - }, { - key: "isJsonContentType", - value: function isJsonContentType(contentType) { - return contentType && isType(contentType, 'string') && contentType.toLowerCase().includes('json') ? true : false; - } - }, { - key: "addOtelNetworkResponse", - value: function addOtelNetworkResponse(event, endTimeMs, statusCode) { - if (event.otelAttributes) { - event.otelAttributes['response.timeUnixNano'] = (endTimeMs * 1e6).toString(); - event.otelAttributes.statusCode = statusCode; + return result; + } else { + result.host = url.substring(last, i); + result.hostname = result.host.split(':')[0]; + result.port = result.host.split(':')[1]; + if (result.port) { + result.port = parseInt(result.port, 10); } + last = i; } - }, { - key: "scrubJson", - value: function scrubJson(json) { - return JSON.stringify(src_scrub(JSON.parse(json), this.options.scrubFields)); + } else { + result.host = url.substring(last, i); + result.hostname = result.host.split(':')[0]; + result.port = result.host.split(':')[1]; + if (result.port) { + result.port = parseInt(result.port, 10); } - }, { - key: "fetchHeaders", - value: function fetchHeaders(inHeaders, headersConfig) { - var outHeaders = {}; - try { - if (headersConfig === true) { - if (typeof inHeaders.entries === 'function') { - // Headers.entries() is not implemented in IE - var allHeaders = inHeaders.entries(); - var currentHeader = allHeaders.next(); - while (!currentHeader.done) { - outHeaders[currentHeader.value[0]] = currentHeader.value[1]; - currentHeader = allHeaders.next(); - } - } - } else { - var _iterator5 = telemetry_createForOfIteratorHelper(headersConfig), - _step5; - try { - for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { - var h = _step5.value; - outHeaders[h] = inHeaders.get(h); - } - } catch (err) { - _iterator5.e(err); - } finally { - _iterator5.f(); - } - } - } catch (e) { - /* ignore probable IE errors */ - } - return outHeaders; + last = i; + } + i = url.indexOf('#', last); + if (i === -1) { + result.path = url.substring(last); + } else { + result.path = url.substring(last, i); + result.hash = url.substring(i); + } + if (result.path) { + var pathParts = result.path.split('?'); + result.pathname = pathParts[0]; + result.query = pathParts[1]; + result.search = result.query ? '?' + result.query : null; + } + return result; +} + +;// ./src/browser/core.js +var _Rollbar; +function core_typeof(o) { "@babel/helpers - typeof"; return core_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, core_typeof(o); } +function core_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function core_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? core_ownKeys(Object(t), !0).forEach(function (r) { core_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : core_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function core_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function core_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, core_toPropertyKey(o.key), o); } } +function core_createClass(e, r, t) { return r && core_defineProperties(e.prototype, r), t && core_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function core_defineProperty(e, r, t) { return (r = core_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function core_toPropertyKey(t) { var i = core_toPrimitive(t, "string"); return "symbol" == core_typeof(i) ? i : i + ""; } +function core_toPrimitive(t, r) { if ("object" != core_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != core_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + + + + + + + + + + + + + + + + + +// Used to support global `Rollbar` instance. +var _instance = null; +var core_Rollbar = /*#__PURE__*/function () { + function Rollbar(options, client) { + core_classCallCheck(this, Rollbar); + src_logger.init({ + logLevel: options.logLevel || 'error' + }); + this.options = handleOptions(core_defaultOptions, options, null, src_logger); + this.options._configuredOptions = options; + this.components = this.components || {}; + var Telemeter = this.components.telemeter; + var Instrumenter = this.components.instrumenter; + this.wrapGlobals = this.components.wrapGlobals; + this.scrub = this.components.scrub; + var truncation = this.components.truncation; + var Tracing = this.components.tracing; + var Replay = this.components.replay; + var transport = new browser_transport(truncation); + var api = new src_api(this.options, transport, url_namespaceObject, truncation); + if (Tracing) { + this.tracing = new Tracing(_gWindow(), api, this.options); + this.tracing.initSession(); } - }, { - key: "trackHttpErrors", - value: function trackHttpErrors() { - return this.autoInstrument.networkErrorOnHttp5xx || this.autoInstrument.networkErrorOnHttp4xx || this.autoInstrument.networkErrorOnHttp0; + if (Telemeter) { + this.telemeter = new Telemeter(this.options, this.tracing); } - }, { - key: "errorOnHttpStatus", - value: function errorOnHttpStatus(metadata) { - var status = metadata.status_code; - if (status >= 500 && this.autoInstrument.networkErrorOnHttp5xx || status >= 400 && this.autoInstrument.networkErrorOnHttp4xx || status === 0 && this.autoInstrument.networkErrorOnHttp0) { - var error = new Error('HTTP request failed with Status ' + status); - error.stack = metadata.stack; - this.rollbar.error(error, { - skipFrames: 1 - }); + if (Replay && isBrowser()) { + var replayOptions = this.options.replay; + this.replay = new Replay({ + tracing: this.tracing, + telemeter: this.telemeter, + options: replayOptions + }); + if (replayOptions.enabled && replayOptions.autoStart) { + this.replay.recorder.start(); } } - }, { - key: "deinstrumentConsole", - value: function deinstrumentConsole() { - var b; - while (this.replacements['log'].length) { - b = this.replacements['log'].shift(); - this._window.console[b[0]] = b[1]; - } + this.client = client || new rollbar(this.options, api, src_logger, this.telemeter, this.tracing, this.replay, 'browser'); + var gWindow = _gWindow(); + var gDocument = typeof document !== 'undefined' && document; + this.isChrome = gWindow.chrome && gWindow.chrome.runtime; // check .runtime to avoid Edge browsers + this.anonymousErrorsPending = 0; + addTransformsToNotifier(this.client.notifier, this, gWindow); + addPredicatesToQueue(this.client.queue); + this.setupUnhandledCapture(); + if (Instrumenter) { + this.instrumenter = new Instrumenter(this.options, this.client.telemeter, this, gWindow, gDocument); + this.instrumenter.instrument(); } - }, { - key: "instrumentConsole", - value: function instrumentConsole() { - var _this$_window; - if (!((_this$_window = this._window) !== null && _this$_window !== void 0 && (_this$_window = _this$_window.console) !== null && _this$_window !== void 0 && _this$_window.log)) { - return; - } - var self = this; - var c = this._window.console; - function wrapConsole(method) { - 'use strict'; + this.setSessionAttributesFromOptions(options); - // See https://github.com/rollbar/rollbar.js/pull/778 - var orig = c[method]; - var origConsole = c; - var level = method === 'warn' ? 'warning' : method; - c[method] = function () { - var args = Array.prototype.slice.call(arguments); - var message = formatArgsAsString(args); - self.telemeter.captureLog(message, level, null, utility_now()); - if (orig) { - Function.prototype.apply.call(orig, origConsole, args); - } - }; - self.replacements['log'].push([method, orig]); - } - var methods = ['debug', 'info', 'warn', 'error', 'log']; - try { - for (var _i2 = 0, _methods = methods; _i2 < _methods.length; _i2++) { - var m = _methods[_i2]; - wrapConsole(m); - } - } catch (e) { - this.diagnostic.instrumentConsole = { - error: e.message + // Used with rollbar-react for rollbar-react-native compatibility. + this.rollbar = this; + } + return core_createClass(Rollbar, [{ + key: "global", + value: function global(options) { + this.client.global(options); + return this; + } + }, { + key: "configure", + value: function configure(options, payloadData) { + var _this$tracing, _this$replay, _this$instrumenter; + if (options.logLevel) { + src_logger.init({ + logLevel: options.logLevel + }); + } + this.setSessionAttributesFromOptions(options); + var oldOptions = this.options; + var payload = {}; + if (payloadData) { + payload = { + payload: payloadData }; } + this.options = handleOptions(oldOptions, options, payload, src_logger); + this.options._configuredOptions = handleOptions(oldOptions._configuredOptions, options, payload); + (_this$tracing = this.tracing) === null || _this$tracing === void 0 || _this$tracing.configure(this.options); + (_this$replay = this.replay) === null || _this$replay === void 0 || _this$replay.configure(this.options.replay); + this.client.configure(this.options, payloadData); + (_this$instrumenter = this.instrumenter) === null || _this$instrumenter === void 0 || _this$instrumenter.configure(this.options); + this.setupUnhandledCapture(); + return this; } }, { - key: "deinstrumentDom", - value: function deinstrumentDom() { - this.removeListeners('dom'); + key: "lastError", + value: function lastError() { + return this.client.lastError; } }, { - key: "instrumentDom", - value: function instrumentDom() { - var _this = this; - var self = this; - this.addListener('dom', this._window, ['click', 'dblclick', 'contextmenu'], function (e) { - return _this.handleEvent('click', e); - }); - this.addListener('dom', this._window, ['dragstart', 'dragend', 'dragenter', 'dragleave', 'drop'], function (e) { - return _this.handleEvent('dragdrop', e); - }); - this.addListener('dom', this._window, ['blur', 'focus'], function (e) { - return _this.handleEvent('focus', e); - }); - this.addListener('dom', this._window, ['submit', 'invalid'], function (e) { - return _this.handleEvent('form', e); - }); - this.addListener('dom', this._window, ['input', 'change'], function (e) { - return _this.handleEvent('input', e); - }); - this.addListener('dom', this._window, ['resize'], function (e) { - return _this.handleEvent('resize', e); - }); - this.addListener('dom', this._document, ['DOMContentLoaded'], function (e) { - return _this.handleEvent('contentLoaded', e); - }); + key: "log", + value: function log() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.log(item); + return { + uuid: uuid + }; } }, { - key: "handleEvent", - value: function handleEvent(name, evt) { - try { - return { - click: this.handleClick, - dragdrop: this.handleDrag, - focus: this.handleFocus, - form: this.handleForm, - input: this.handleInput, - resize: this.handleResize, - contentLoaded: this.handleContentLoaded - }[name].call(this, evt); - } catch (exc) { - console.log("".concat(name, " handler error"), evt, exc, exc.stack); - } + key: "debug", + value: function debug() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.debug(item); + return { + uuid: uuid + }; } }, { - key: "handleContentLoaded", - value: function handleContentLoaded(evt) { - var replayId = this.rollbar.triggerReplay({ - type: 'navigation', - path: new URL(this._location.href).pathname - }); + key: "info", + value: function info() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.info(item); + return { + uuid: uuid + }; } }, { - key: "handleClick", - value: function handleClick(evt) { - var _evt$target; - var tagName = (_evt$target = evt.target) === null || _evt$target === void 0 ? void 0 : _evt$target.tagName.toLowerCase(); - if (['input', 'select', 'textarea'].includes(tagName)) return; - this.telemeter.captureClick({ - type: evt.type, - isSynthetic: !evt.isTrusted, - element: domUtility_elementString(evt.target), - timestamp: utility_now() - }); + key: "warn", + value: function warn() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.warn(item); + return { + uuid: uuid + }; } }, { - key: "handleFocus", - value: function handleFocus(evt) { - var _evt$target2; - var type = evt.type; - var element = (_evt$target2 = evt.target) !== null && _evt$target2 !== void 0 && _evt$target2.window ? 'window' : domUtility_elementString(evt.target); - this.telemeter.captureFocus({ - type: type, - isSynthetic: !evt.isTrusted, - element: element, - timestamp: utility_now() - }); + key: "warning", + value: function warning() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.warning(item); + return { + uuid: uuid + }; } }, { - key: "handleForm", - value: function handleForm(evt) { - var _evt$target3; - // TODO: implement form event handling - var type = evt.type; - var elementString = (_evt$target3 = evt.target) !== null && _evt$target3 !== void 0 && _evt$target3.window ? 'window' : domUtility_elementString(evt.target); + key: "error", + value: function error() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.error(item); + return { + uuid: uuid + }; } }, { - key: "handleResize", - value: function handleResize(evt) { - var textZoomRatio = window.screen.width / window.innerWidth; - this.telemeter.captureResize({ - type: evt.type, - isSynthetic: !evt.isTrusted, - width: window.innerWidth, - height: window.innerHeight, - textZoomRatio: textZoomRatio, - timestamp: utility_now() - }); + key: "critical", + value: function critical() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.critical(item); + return { + uuid: uuid + }; } }, { - key: "handleDrag", - value: function handleDrag(evt) { - var type = evt.type; - var kinds, mediaTypes, dropEffect, effectAllowed; - if (type === 'drop') { - kinds = []; - mediaTypes = []; - var objs = [].concat(telemetry_toConsumableArray(evt.dataTransfer.files), telemetry_toConsumableArray(evt.dataTransfer.items)); - var _iterator6 = telemetry_createForOfIteratorHelper(objs), - _step6; - try { - for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { - var o = _step6.value; - if (o.kind && o.type) { - kinds.push(o.kind); - mediaTypes.push(o.type); - } + key: "buildJsonPayload", + value: function buildJsonPayload(item) { + return this.client.buildJsonPayload(item); + } + }, { + key: "sendJsonPayload", + value: function sendJsonPayload(jsonPayload) { + return this.client.sendJsonPayload(jsonPayload); + } + }, { + key: "triggerDirectReplay", + value: function triggerDirectReplay(context) { + return this.triggerReplay(core_objectSpread({ + type: 'direct' + }, context)); + } + }, { + key: "triggerReplay", + value: function triggerReplay(context) { + if (!this.replay) return null; + return this.replay.triggerReplay(context); + } + }, { + key: "setupUnhandledCapture", + value: function setupUnhandledCapture() { + var gWindow = _gWindow(); + if (!this.unhandledExceptionsInitialized) { + if (this.options.captureUncaught || this.options.handleUncaughtExceptions) { + captureUncaughtExceptions(gWindow, this); + if (this.wrapGlobals && this.options.wrapGlobalEventHandlers) { + this.wrapGlobals(gWindow, this); } - } catch (err) { - _iterator6.e(err); - } finally { - _iterator6.f(); + this.unhandledExceptionsInitialized = true; } } - if (['drop', 'dragstart'].includes(type)) { - var _evt$dataTransfer, _evt$dataTransfer2; - dropEffect = (_evt$dataTransfer = evt.dataTransfer) === null || _evt$dataTransfer === void 0 ? void 0 : _evt$dataTransfer.dropEffect; - effectAllowed = (_evt$dataTransfer2 = evt.dataTransfer) === null || _evt$dataTransfer2 === void 0 ? void 0 : _evt$dataTransfer2.effectAllowed; + if (!this.unhandledRejectionsInitialized) { + if (this.options.captureUnhandledRejections || this.options.handleUnhandledRejections) { + captureUnhandledRejections(gWindow, this); + this.unhandledRejectionsInitialized = true; + } } - this.telemeter.captureDragDrop({ - type: type, - isSynthetic: !evt.isTrusted, - element: domUtility_elementString(evt.target), - dropEffect: dropEffect, - effectAllowed: effectAllowed, - kinds: JSON.stringify(kinds), - mediaTypes: JSON.stringify(mediaTypes), - timestamp: utility_now() - }); + } + }, { + key: "handleUncaughtException", + value: function handleUncaughtException(message, url, lineno, colno, error, context) { + if (!this.options.captureUncaught && !this.options.handleUncaughtExceptions) { + return; + } + + // Chrome will always send 5+ arguments and error will be valid or null, not undefined. + // If error is undefined, we have a different caller. + // Chrome also sends errors from web workers with null error, but does not invoke + // prepareStackTrace() for these. Test for empty url to skip them. + if (this.options.inspectAnonymousErrors && this.isChrome && error === null && url === '') { + return 'anonymous'; + } + var item; + var stackInfo = makeUnhandledStackInfo(message, url, lineno, colno, error, 'onerror', 'uncaught exception', errorParser); + if (isError(error)) { + item = this._createItem([message, error, context]); + item._unhandledStackInfo = stackInfo; + } else if (isError(url)) { + item = this._createItem([message, url, context]); + item._unhandledStackInfo = stackInfo; + } else { + item = this._createItem([message, context]); + item.stackInfo = stackInfo; + } + item.level = this.options.uncaughtErrorLevel; + item._isUncaught = true; + this.client.log(item); } - /* - * Applies Rollbar telemetry scrubbing options to the dom input value. - * When replay options are present, applies those as well. + /** + * Chrome only. Other browsers will ignore. + * + * Use Error.prepareStackTrace to extract information about errors that + * do not have a valid error object in onerror(). + * + * In tested version of Chrome, onerror is called first but has no way + * to communicate with prepareStackTrace. Use a counter to let this + * handler know which errors to send to Rollbar. + * + * In config options, set inspectAnonymousErrors to enable. */ }, { - key: "scrubInputValue", - value: function scrubInputValue(value, element, tagName, inputType) { - var mask = '******'; - if (inputType === 'password') { - return mask; + key: "handleAnonymousErrors", + value: function handleAnonymousErrors() { + var _this = this; + if (!this.options.inspectAnonymousErrors || !this.isChrome) { + return; } - if (this.scrubTelemetryInputs) { - return mask; - } else { - var description = describeElement(element); - if (this.telemetryScrubber) { - if (this.telemetryScrubber(description)) { - return mask; + var prepareStackTrace = function prepareStackTrace(error, _stack) { + if (_this.options.inspectAnonymousErrors) { + if (_this.anonymousErrorsPending) { + // This is the only known way to detect that onerror saw an anonymous error. + // It depends on onerror reliably being called before Error.prepareStackTrace, + // which so far holds true on tested versions of Chrome. If versions of Chrome + // are tested that behave differently, this logic will need to be updated + // accordingly. + _this.anonymousErrorsPending -= 1; + if (!error) { + // Not likely to get here, but calling handleUncaughtException from here + // without an error object would throw off the anonymousErrorsPending counter, + // so return now. + return; + } + + // Allow this to be tracked later. + error._isAnonymous = true; + + // url, lineno, colno shouldn't be needed for these errors. + // If that changes, update this accordingly, using the unused + // _stack param as needed (rather than parse error.toString()). + _this.handleUncaughtException(error.message, null, null, null, error); } - } else if (this.defaultValueScrubber(description)) { - return mask; } - } - // Apply replay options regardless of other scrubbing - if (isMatchingElement(element, this.scrubClasses, this.scrubSelectors)) { - return mask; - } + // Workaround to ensure stack is preserved for normal errors. + return error.stack; + }; - // This check is last since maskInputFn returns a modified value rather - // than a boolean, which would cause an early return even if the value - // was not scrubbed. - if (this.maskInputOptions[tagName.toLowerCase()] || this.maskInputOptions[inputType]) { - if (this.maskInputFn) { - return this.maskInputFn(value, element); - } else { - return mask; - } + // https://v8.dev/docs/stack-trace-api + try { + Error.prepareStackTrace = prepareStackTrace; + } catch (e) { + this.options.inspectAnonymousErrors = false; + this.error('anonymous error handler failed', e); } - return value; } - - /* - * Uses the `input` event for everything except radio and checkbox inputs. - * For those, it uses the `change` event. - */ }, { - key: "handleInput", - value: function handleInput(evt) { - var _evt$target4, _evt$target5, _evt$target6, _evt$target7; - var type = evt.type; - var tagName = (_evt$target4 = evt.target) === null || _evt$target4 === void 0 ? void 0 : _evt$target4.tagName.toLowerCase(); - var value = (_evt$target5 = evt.target) === null || _evt$target5 === void 0 ? void 0 : _evt$target5.value; - var inputType = ((_evt$target6 = evt.target) === null || _evt$target6 === void 0 || (_evt$target6 = _evt$target6.attributes) === null || _evt$target6 === void 0 || (_evt$target6 = _evt$target6.type) === null || _evt$target6 === void 0 ? void 0 : _evt$target6.value) || ((_evt$target7 = evt.target) === null || _evt$target7 === void 0 ? void 0 : _evt$target7.type); - if (value !== undefined) { - value = this.scrubInputValue(value, evt.target, tagName, inputType); + key: "handleUnhandledRejection", + value: function handleUnhandledRejection(reason, promise) { + if (!this.options.captureUnhandledRejections && !this.options.handleUnhandledRejections) { + return; } - switch (type) { - case 'input': - if (['radio', 'checkbox'].includes(inputType)) return; - if (['select', 'textarea'].includes(tagName)) { - inputType = tagName; - } - break; - case 'change': - if (!['radio', 'checkbox'].includes(inputType)) return; - if (inputType === 'checkbox') { - var _evt$target8; - value = (_evt$target8 = evt.target) === null || _evt$target8 === void 0 ? void 0 : _evt$target8.checked; + var message = 'unhandled rejection was null or undefined!'; + if (reason) { + if (reason.message) { + message = reason.message; + } else { + var reasonResult = stringify(reason); + if (reasonResult.value) { + message = reasonResult.value; } - break; + } } - this.telemeter.captureInput({ - type: inputType, - isSynthetic: !evt.isTrusted, - element: domUtility_elementString(evt.target), - value: value, - timestamp: utility_now() - }); + var context = reason && reason._rollbarContext || promise && promise._rollbarContext; + var item; + if (isError(reason)) { + item = this._createItem([message, reason, context]); + } else { + item = this._createItem([message, reason, context]); + item.stackInfo = makeUnhandledStackInfo(message, '', 0, 0, null, 'unhandledrejection', '', errorParser); + } + item.level = this.options.uncaughtErrorLevel; + item._isUncaught = true; + item._originalArgs = item._originalArgs || []; + item._originalArgs.push(promise); + this.client.log(item); } }, { - key: "deinstrumentNavigation", - value: function deinstrumentNavigation() { - var chrome = this._window.chrome; - var chromePackagedApp = chrome && chrome.app && chrome.app.runtime; - // See https://github.com/angular/angular.js/pull/13945/files - var hasPushState = !chromePackagedApp && this._window.history && this._window.history.pushState; - if (!hasPushState) { - return; + key: "wrap", + value: function wrap(f, context, _before) { + try { + var ctxFn; + if (isFunction(context)) { + ctxFn = context; + } else { + ctxFn = function ctxFn() { + return context || {}; + }; + } + if (!isFunction(f)) { + return f; + } + if (f._isWrap) { + return f; + } + if (!f._rollbar_wrapped) { + f._rollbar_wrapped = function () { + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } + try { + return f.apply(this, arguments); + } catch (exc) { + var e = exc; + if (e && window._rollbarWrappedError !== e) { + if (isType(e, 'string')) { + e = new String(e); + } + e._rollbarContext = ctxFn() || {}; + e._rollbarContext._wrappedSource = f.toString(); + window._rollbarWrappedError = e; + } + throw e; + } + }; + f._rollbar_wrapped._isWrap = true; + for (var prop in f) { + if (hasOwn(f, prop) && prop !== '_rollbar_wrapped') { + f._rollbar_wrapped[prop] = f[prop]; + } + } + } + return f._rollbar_wrapped; + } catch (_e) { + // Return the original function if the wrap fails. + return f; } - restore(this.replacements, 'navigation'); } }, { - key: "instrumentNavigation", - value: function instrumentNavigation() { - var chrome = this._window.chrome; - var chromePackagedApp = chrome && chrome.app && chrome.app.runtime; - // See https://github.com/angular/angular.js/pull/13945/files - var hasPushState = !chromePackagedApp && this._window.history && this._window.history.pushState; - if (!hasPushState) { - return; - } - var self = this; - utility_replace(this._window, 'onpopstate', function (orig) { - return function () { - var current = self._location.href; - self.handleUrlChange(self._lastHref, current); - if (orig) { - orig.apply(this, arguments); - } - }; - }, this.replacements, 'navigation'); - utility_replace(this._window.history, 'pushState', function (orig) { - return function () { - var url = arguments.length > 2 ? arguments[2] : undefined; - if (url) { - self.handleUrlChange(self._lastHref, url + ''); - } - return orig.apply(this, arguments); - }; - }, this.replacements, 'navigation'); + key: "captureEvent", + value: function captureEvent() { + var event = createTelemetryEvent(arguments); + return this.client.captureEvent(event.type, event.metadata, event.level); } }, { - key: "handleUrlChange", - value: function handleUrlChange(from, to) { - var parsedHref = parse(this._location.href); - var parsedTo = parse(to); - var parsedFrom = parse(from); - this._lastHref = to; - if (parsedHref.protocol === parsedTo.protocol && parsedHref.host === parsedTo.host) { - to = parsedTo.path + (parsedTo.hash || ''); - } - if (parsedHref.protocol === parsedFrom.protocol && parsedHref.host === parsedFrom.host) { - from = parsedFrom.path + (parsedFrom.hash || ''); - } - this.telemeter.captureNavigation(from, to, null, utility_now()); - var replayId = this.rollbar.triggerReplay({ - type: 'navigation', - path: to - }); + key: "setSessionUser", + value: function setSessionUser(user) { + var _this$tracing2; + if (!((_this$tracing2 = this.tracing) !== null && _this$tracing2 !== void 0 && _this$tracing2.session)) return; + this.tracing.session.setUser(user); } }, { - key: "instrumentConnectivity", - value: function instrumentConnectivity() { - var self = this; - this.addListener('connectivity', this._window, ['online', 'offline'], function (evt) { - return self.handleConnectivity(evt); - }); + key: "setSessionAttributes", + value: function setSessionAttributes(attrs) { + var _this$tracing3; + if (!((_this$tracing3 = this.tracing) !== null && _this$tracing3 !== void 0 && _this$tracing3.session)) return; + attrs = core_objectSpread({}, attrs); + this.tracing.session.setAttributes(attrs); } }, { - key: "handleConnectivity", - value: function handleConnectivity(evt) { - var type = evt.type; - this.telemeter.captureConnectivityChange({ - type: type, - isSynthetic: !evt.isTrusted, - timestamp: utility_now() + key: "setSessionAttributesFromOptions", + value: function setSessionAttributesFromOptions(options) { + var _options$payload, _options$client, _options$payload2, _options$payload3, _options$payload4; + var person = options.person || ((_options$payload = options.payload) === null || _options$payload === void 0 ? void 0 : _options$payload.person); + if (person) { + this.setSessionUser(person); + } + var code_version = ((_options$client = options.client) === null || _options$client === void 0 || (_options$client = _options$client.javascript) === null || _options$client === void 0 ? void 0 : _options$client.code_version) || options.codeVersion || options.code_version || ((_options$payload2 = options.payload) === null || _options$payload2 === void 0 || (_options$payload2 = _options$payload2.client) === null || _options$payload2 === void 0 || (_options$payload2 = _options$payload2.javascript) === null || _options$payload2 === void 0 ? void 0 : _options$payload2.code_version) || ((_options$payload3 = options.payload) === null || _options$payload3 === void 0 ? void 0 : _options$payload3.code_version) || ((_options$payload4 = options.payload) === null || _options$payload4 === void 0 ? void 0 : _options$payload4.codeVersion); + this.setSessionAttributes({ + 'rollbar.codeVersion': code_version, + 'rollbar.notifier.name': 'rollbar-browser-js', + 'rollbar.notifier.version': options.version }); } + + // The following two methods are used internally and are not meant for public use }, { - key: "handleCspEvent", - value: function handleCspEvent(cspEvent) { - var message = 'Security Policy Violation: ' + 'blockedURI: ' + cspEvent.blockedURI + ', ' + 'violatedDirective: ' + cspEvent.violatedDirective + ', ' + 'effectiveDirective: ' + cspEvent.effectiveDirective + ', '; - if (cspEvent.sourceFile) { - message += 'location: ' + cspEvent.sourceFile + ', ' + 'line: ' + cspEvent.lineNumber + ', ' + 'col: ' + cspEvent.columnNumber + ', '; + key: "captureDomContentLoaded", + value: function captureDomContentLoaded(e, ts) { + if (!ts) { + ts = new Date(); } - message += 'originalPolicy: ' + cspEvent.originalPolicy; - this.telemeter.captureLog(message, 'error', null, utility_now()); - this.handleCspError(message); + return this.client.captureDomContentLoaded(ts); } }, { - key: "handleCspError", - value: function handleCspError(message) { - if (this.autoInstrument.errorOnContentSecurityPolicy) { - this.rollbar.error(message); + key: "captureLoad", + value: function captureLoad(e, ts) { + if (!ts) { + ts = new Date(); } + return this.client.captureLoad(ts); } }, { - key: "deinstrumentContentSecurityPolicy", - value: function deinstrumentContentSecurityPolicy() { - this.removeListeners('contentsecuritypolicy'); + key: "loadFull", + value: function loadFull() { + src_logger.info('Unexpected Rollbar.loadFull() called on a Notifier instance. This can happen when Rollbar is loaded multiple times.'); } }, { - key: "instrumentContentSecurityPolicy", - value: function instrumentContentSecurityPolicy() { - if (!('addEventListener' in this._document)) { - return; + key: "_createItem", + value: function _createItem(args) { + return createItem(args, src_logger, this); + } + + // Static version of instance methods support the legacy pattern of a + // global `Rollbar` instance, where after calling `Rollbar.init()`, + // `Rollbar` can be used as if it were an instance. + // If support for this pattern is dropped, these static methods can be removed. + }], [{ + key: "init", + value: function init(options, client) { + if (_instance) { + return _instance.global(options).configure(options); } - var cspHandler = this.handleCspEvent.bind(this); - this.addListener('contentsecuritypolicy', this._document, ['securitypolicyviolation'], cspHandler); + _instance = new Rollbar(options, client); + return _instance; } }, { - key: "addListener", - value: function addListener(section, obj, types, handler) { - var _this2 = this; - if (obj.addEventListener) { - var _iterator7 = telemetry_createForOfIteratorHelper(types), - _step7; - try { - var _loop = function _loop() { - var t = _step7.value; - var options = { - capture: true, - passive: true - }; - obj.addEventListener(t, handler, options, true); - _this2.eventRemovers[section].push(function () { - obj.removeEventListener(t, handler, options); - }); - }; - for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { - _loop(); - } - } catch (err) { - _iterator7.e(err); - } finally { - _iterator7.f(); - } - } + key: "setComponents", + value: function setComponents(components) { + Rollbar.prototype.components = components; } }, { - key: "removeListeners", - value: function removeListeners(section) { - var r; - while (this.eventRemovers[section].length) { - r = this.eventRemovers[section].shift(); - r(); + key: "callInstance", + value: function callInstance(method, args) { + if (!_instance) { + var message = 'Rollbar is not initialized'; + src_logger.error(message); + var maybeCallback = _getFirstFunction(args); + if (maybeCallback) { + maybeCallback(new Error(message)); + } + return; } + return _instance[method].apply(_instance, args); } }]); }(); -function _isUrlObject(input) { - return typeof URL !== 'undefined' && input instanceof URL; -} -/* harmony default export */ var browser_telemetry = (Instrumenter); -;// ./src/browser/wrapGlobals.js -function wrapGlobals(window, handler, shim) { - if (!window) { - return; +/* Internal */ +_Rollbar = core_Rollbar; +core_defineProperty(core_Rollbar, "global", function () { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; } - // Adapted from https://github.com/bugsnag/bugsnag-js - var globals = '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'.split(','); - var i, global; - for (i = 0; i < globals.length; ++i) { - global = globals[i]; - if (window[global] && window[global].prototype) { - _extendListenerPrototype(handler, window[global].prototype, shim); - } + return _Rollbar.callInstance('global', args); +}); +core_defineProperty(core_Rollbar, "configure", function () { + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; } + return _Rollbar.callInstance('configure', args); +}); +core_defineProperty(core_Rollbar, "lastError", function () { + for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; + } + return _Rollbar.callInstance('lastError', args); +}); +core_defineProperty(core_Rollbar, "log", function () { + for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { + args[_key4] = arguments[_key4]; + } + return _Rollbar.callInstance('log', args); +}); +core_defineProperty(core_Rollbar, "debug", function () { + for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { + args[_key5] = arguments[_key5]; + } + return _Rollbar.callInstance('debug', args); +}); +core_defineProperty(core_Rollbar, "info", function () { + for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { + args[_key6] = arguments[_key6]; + } + return _Rollbar.callInstance('info', args); +}); +core_defineProperty(core_Rollbar, "warn", function () { + for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { + args[_key7] = arguments[_key7]; + } + return _Rollbar.callInstance('warn', args); +}); +core_defineProperty(core_Rollbar, "warning", function () { + for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { + args[_key8] = arguments[_key8]; + } + return _Rollbar.callInstance('warning', args); +}); +core_defineProperty(core_Rollbar, "error", function () { + for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) { + args[_key9] = arguments[_key9]; + } + return _Rollbar.callInstance('error', args); +}); +core_defineProperty(core_Rollbar, "critical", function () { + for (var _len0 = arguments.length, args = new Array(_len0), _key0 = 0; _key0 < _len0; _key0++) { + args[_key0] = arguments[_key0]; + } + return _Rollbar.callInstance('critical', args); +}); +core_defineProperty(core_Rollbar, "buildJsonPayload", function () { + for (var _len1 = arguments.length, args = new Array(_len1), _key1 = 0; _key1 < _len1; _key1++) { + args[_key1] = arguments[_key1]; + } + return _Rollbar.callInstance('buildJsonPayload', args); +}); +core_defineProperty(core_Rollbar, "sendJsonPayload", function () { + for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) { + args[_key10] = arguments[_key10]; + } + return _Rollbar.callInstance('sendJsonPayload', args); +}); +core_defineProperty(core_Rollbar, "wrap", function () { + for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) { + args[_key11] = arguments[_key11]; + } + return _Rollbar.callInstance('wrap', args); +}); +core_defineProperty(core_Rollbar, "captureEvent", function () { + for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) { + args[_key12] = arguments[_key12]; + } + return _Rollbar.callInstance('captureEvent', args); +}); +function addTransformsToNotifier(notifier, rollbar, gWindow) { + notifier.addTransform(handleDomException).addTransform(handleItemWithError).addTransform(ensureItemHasSomethingToSay).addTransform(addBaseInfo).addTransform(addRequestInfo(gWindow)).addTransform(addClientInfo(gWindow)).addTransform(addPluginInfo(gWindow)).addTransform(addBody).addTransform(addMessageWithError).addTransform(addTelemetryData).addTransform(addConfigToPayload).addTransform(addScrubber(rollbar.scrub)).addTransform(addPayloadOptions).addTransform(userTransform(src_logger)).addTransform(addConfiguredOptions).addTransform(addDiagnosticKeys).addTransform(itemToPayload); } -function _extendListenerPrototype(handler, prototype, shim) { - if (prototype.hasOwnProperty && prototype.hasOwnProperty('addEventListener')) { - var oldAddEventListener = prototype.addEventListener; - while (oldAddEventListener._rollbarOldAdd && oldAddEventListener.belongsToShim) { - oldAddEventListener = oldAddEventListener._rollbarOldAdd; - } - var addFn = function addFn(event, callback, bubble) { - oldAddEventListener.call(this, event, handler.wrap(callback), bubble); - }; - addFn._rollbarOldAdd = oldAddEventListener; - addFn.belongsToShim = shim; - prototype.addEventListener = addFn; - var oldRemoveEventListener = prototype.removeEventListener; - while (oldRemoveEventListener._rollbarOldRemove && oldRemoveEventListener.belongsToShim) { - oldRemoveEventListener = oldRemoveEventListener._rollbarOldRemove; +function addPredicatesToQueue(queue) { + queue.addPredicate(checkLevel).addPredicate(checkIgnore).addPredicate(userCheckIgnore(src_logger)).addPredicate(urlIsNotBlockListed(src_logger)).addPredicate(urlIsSafeListed(src_logger)).addPredicate(messageIsIgnored(src_logger)); +} +function _getFirstFunction(args) { + for (var i = 0, len = args.length; i < len; ++i) { + if (isFunction(args[i])) { + return args[i]; } - var removeFn = function removeFn(event, callback, bubble) { - oldRemoveEventListener.call(this, event, callback && callback._rollbar_wrapped || callback, bubble); - }; - removeFn._rollbarOldRemove = oldRemoveEventListener; - removeFn.belongsToShim = shim; - prototype.removeEventListener = removeFn; } + return undefined; } -/* harmony default export */ var browser_wrapGlobals = (wrapGlobals); -;// ./src/truncation.js +function _gWindow() { + return typeof window !== 'undefined' && window || typeof self !== 'undefined' && self; +} +var core_defaultOptions = { + environment: 'unknown', + version: defaults.version, + scrubFields: browser_defaults.scrubFields, + logLevel: defaults.logLevel, + reportLevel: defaults.reportLevel, + uncaughtErrorLevel: defaults.uncaughtErrorLevel, + endpoint: defaults.endpoint, + verbose: false, + enabled: true, + transmit: true, + sendConfig: false, + includeItemsInTelemetry: true, + captureIp: true, + inspectAnonymousErrors: true, + ignoreDuplicateErrors: true, + wrapGlobalEventHandlers: false, + replay: replay_defaults, + tracing: tracing_defaults +}; +/* harmony default export */ var core = (core_Rollbar); +;// ./src/utility/headers.js -function raw(payload, jsonBackup) { - return [payload, stringify(payload, jsonBackup)]; -} -function selectFrames(frames, range) { - var len = frames.length; - if (len > range * 2) { - return frames.slice(0, range).concat(frames.slice(len - range)); +/* + * headers - Detect when fetch Headers are undefined and use a partial polyfill. + * + * A full polyfill is not used in order to keep package size as small as possible. + * Since this is only used internally and is not added to the window object, + * the full interface doesn't need to be supported. + * + * This implementation is modified from whatwg-fetch: + * https://github.com/github/fetch + */ +function headers(headers) { + if (typeof Headers === 'undefined') { + return new FetchHeaders(headers); } - return frames; + return new Headers(headers); } -function truncateFrames(payload, jsonBackup, range) { - range = typeof range === 'undefined' ? 30 : range; - var body = payload.data.body; - var frames; - if (body.trace_chain) { - var chain = body.trace_chain; - for (var i = 0; i < chain.length; i++) { - frames = chain[i].frames; - frames = selectFrames(frames, range); - chain[i].frames = frames; - } - } else if (body.trace) { - frames = body.trace.frames; - frames = selectFrames(frames, range); - body.trace.frames = frames; +function normalizeName(name) { + if (typeof name !== 'string') { + name = String(name); } - return [payload, stringify(payload, jsonBackup)]; + return name.toLowerCase(); } -function maybeTruncateValue(len, val) { - if (!val) { - return val; - } - if (val.length > len) { - return val.slice(0, len - 3).concat('...'); +function normalizeValue(value) { + if (typeof value !== 'string') { + value = String(value); } - return val; + return value; } -function truncateStrings(len, payload, jsonBackup) { - function truncator(k, v, seen) { - switch (typeName(v)) { - case 'string': - return maybeTruncateValue(len, v); - case 'object': - case 'array': - return utility_traverse(v, truncator, seen); - default: - return v; +function iteratorFor(items) { + var iterator = { + next: function next() { + var value = items.shift(); + return { + done: value === undefined, + value: value + }; } - } - payload = utility_traverse(payload, truncator); - return [payload, stringify(payload, jsonBackup)]; + }; + return iterator; } -function truncateTraceData(traceData) { - if (traceData.exception) { - delete traceData.exception.description; - traceData.exception.message = maybeTruncateValue(255, traceData.exception.message); +function FetchHeaders(headers) { + this.map = {}; + if (headers instanceof FetchHeaders) { + headers.forEach(function (value, name) { + this.append(name, value); + }, this); + } else if (Array.isArray(headers)) { + headers.forEach(function (header) { + this.append(header[0], header[1]); + }, this); + } else if (headers) { + Object.getOwnPropertyNames(headers).forEach(function (name) { + this.append(name, headers[name]); + }, this); } - traceData.frames = selectFrames(traceData.frames, 1); - return traceData; } -function minBody(payload, jsonBackup) { - var body = payload.data.body; - if (body.trace_chain) { - var chain = body.trace_chain; - for (var i = 0; i < chain.length; i++) { - chain[i] = truncateTraceData(chain[i]); +FetchHeaders.prototype.append = function (name, value) { + name = normalizeName(name); + value = normalizeValue(value); + var oldValue = this.map[name]; + this.map[name] = oldValue ? oldValue + ', ' + value : value; +}; +FetchHeaders.prototype.get = function (name) { + name = normalizeName(name); + return this.has(name) ? this.map[name] : null; +}; +FetchHeaders.prototype.has = function (name) { + return hasOwn(this.map, normalizeName(name)); +}; +FetchHeaders.prototype.forEach = function (callback, thisArg) { + for (var name in this.map) { + if (hasOwn(this.map, name)) { + callback.call(thisArg, this.map[name], name, this); } - } else if (body.trace) { - body.trace = truncateTraceData(body.trace); } - return [payload, stringify(payload, jsonBackup)]; +}; +FetchHeaders.prototype.entries = function () { + var items = []; + this.forEach(function (value, name) { + items.push([name, value]); + }); + return iteratorFor(items); +}; +/* harmony default export */ var utility_headers = (headers); +;// ./src/utility/replace.js +function replace(obj, name, replacement, replacements, type) { + var orig = obj[name]; + obj[name] = replacement(orig); + if (replacements) { + replacements[type].push([obj, name, orig]); + } } -function needsTruncation(payload, maxSize) { - return maxByteSize(payload) > maxSize; +/* harmony default export */ var utility_replace = (replace); +;// ./src/browser/domUtility.js +function domUtility_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = domUtility_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function domUtility_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return domUtility_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? domUtility_arrayLikeToArray(r, a) : void 0; } } +function domUtility_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function getElementType(e) { + return (e.getAttribute('type') || '').toLowerCase(); } -function truncate(payload, jsonBackup, maxSize) { - maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize; - var strategies = [raw, truncateFrames, truncateStrings.bind(null, 1024), truncateStrings.bind(null, 512), truncateStrings.bind(null, 256), minBody]; - var strategy, results, result; - while (strategy = strategies.shift()) { - results = strategy(payload, jsonBackup); - payload = results[0]; - result = results[1]; - if (result.error || !needsTruncation(result.value, maxSize)) { - return result; +function isDescribedElement(element, type, subtypes) { + if (element.tagName.toLowerCase() !== type.toLowerCase()) { + return false; + } + if (!subtypes) { + return true; + } + var elementType = getElementType(element); + var _iterator = domUtility_createForOfIteratorHelper(subtypes), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var subtype = _step.value; + if (subtype === elementType) { + return true; + } } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); } - return result; + return false; } -/* harmony default export */ var truncation = ({ - truncate: truncate, - /* for testing */ - raw: raw, - truncateFrames: truncateFrames, - truncateStrings: truncateStrings, - maybeTruncateValue: maybeTruncateValue -}); -;// ./src/tracing/context.js -function context_typeof(o) { "@babel/helpers - typeof"; return context_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, context_typeof(o); } -function context_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function context_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, context_toPropertyKey(o.key), o); } } -function context_createClass(e, r, t) { return r && context_defineProperties(e.prototype, r), t && context_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function context_toPropertyKey(t) { var i = context_toPrimitive(t, "string"); return "symbol" == context_typeof(i) ? i : i + ""; } -function context_toPrimitive(t, r) { if ("object" != context_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != context_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -var Context = /*#__PURE__*/function () { - function Context(parentContext) { - context_classCallCheck(this, Context); - this._currentContext = parentContext ? new Map(parentContext) : new Map(); +function getElementFromEvent(evt, doc) { + if (evt.target) { + return evt.target; } - return context_createClass(Context, [{ - key: "getValue", - value: function getValue(key) { - return this._currentContext.get(key); - } - }, { - key: "setValue", - value: function setValue(key, value) { - var context = new Context(this._currentContext); - context._currentContext.set(key, value); - return context; - } - }, { - key: "deleteValue", - value: function deleteValue(key) { - var context = new Context(self._currentContext); - context._currentContext.delete(key); - return context; - } - }]); -}(); -var ROOT_CONTEXT = new Context(); -;// ./src/tracing/contextManager.js -function contextManager_typeof(o) { "@babel/helpers - typeof"; return contextManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, contextManager_typeof(o); } -function contextManager_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function contextManager_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, contextManager_toPropertyKey(o.key), o); } } -function contextManager_createClass(e, r, t) { return r && contextManager_defineProperties(e.prototype, r), t && contextManager_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function contextManager_toPropertyKey(t) { var i = contextManager_toPrimitive(t, "string"); return "symbol" == contextManager_typeof(i) ? i : i + ""; } -function contextManager_toPrimitive(t, r) { if ("object" != contextManager_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != contextManager_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - -var ContextManager = /*#__PURE__*/function () { - function ContextManager() { - contextManager_classCallCheck(this, ContextManager); - this.currentContext = ROOT_CONTEXT; + if (doc && doc.elementFromPoint) { + return doc.elementFromPoint(evt.clientX, evt.clientY); } - return contextManager_createClass(ContextManager, [{ - key: "active", - value: function active() { - return this.currentContext; - } - }, { - key: "enterContext", - value: function enterContext(context) { - var previousContext = this.currentContext; - this.currentContext = context || ROOT_CONTEXT; - return previousContext; - } - }, { - key: "exitContext", - value: function exitContext(context) { - this.currentContext = context; - return this.currentContext; + return undefined; +} +function treeToArray(elem) { + var MAX_HEIGHT = 5; + var out = []; + var nextDescription; + for (var height = 0; elem && height < MAX_HEIGHT; height++) { + nextDescription = describeElement(elem); + if (!nextDescription || nextDescription.tagName === 'html') { + break; } - }, { - key: "with", - value: function _with(context, fn, thisArg) { - var previousContext = this.enterContext(context); - try { - for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { - args[_key - 3] = arguments[_key]; - } - return fn.call.apply(fn, [thisArg].concat(args)); - } finally { - this.exitContext(previousContext); - } + out.unshift(nextDescription); + elem = elem.parentNode; + } + return out; +} +function elementArrayToString(a) { + var MAX_LENGTH = 80; + var separator = ' > ', + separatorLength = separator.length; + var out = [], + len = 0, + nextStr, + totalLength; + for (var i = a.length - 1; i >= 0; i--) { + nextStr = descriptionToString(a[i]); + totalLength = len + out.length * separatorLength + nextStr.length; + if (i < a.length - 1 && totalLength >= MAX_LENGTH + 3) { + out.unshift('...'); + break; } - }]); -}(); -function createContextKey(key) { - // Use Symbol for OpenTelemetry compatibility. - return Symbol.for(key); + out.unshift(nextStr); + len += nextStr.length; + } + return out.join(separator); } -;// ./src/tracing/id.js -/** - * Generate a random hexadecimal ID of specified byte length - * - * @param {number} bytes - Number of bytes for the ID (default: 16) - * @returns {string} - Hexadecimal string representation - */ -function gen() { - var bytes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16; - var randomBytes = new Uint8Array(bytes); - crypto.getRandomValues(randomBytes); - var randHex = Array.from(randomBytes, function (byte) { - return byte.toString(16).padStart(2, '0'); - }).join(''); - return randHex; +function elementString(elem) { + return elementArrayToString(treeToArray(elem)); +} +function descriptionToString(desc) { + if (!desc || !desc.tagName) { + return ''; + } + var out = [desc.tagName]; + if (desc.id) { + out.push('#' + desc.id); + } + if (desc.classes) { + out.push('.' + desc.classes.join('.')); + } + var _iterator2 = domUtility_createForOfIteratorHelper(desc.attributes), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var attribute = _step2.value; + out.push('[' + attribute.key + '="' + attribute.value + '"]'); + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + return out.join(''); } /** - * Tracing id generation utils - * - * @example - * import id from './id.js'; - * - * const spanId = id.gen(8); // => "a1b2c3d4e5f6..." + * Input: a dom element + * Output: null if tagName is falsey or input is falsey, else + * { + * tagName: String, + * id: String | undefined, + * classes: [String] | undefined, + * attributes: [ + * { + * key: OneOf(type, name, title, alt), + * value: String + * } + * ] + * } */ -/* harmony default export */ var id = ({ - gen: gen -}); -;// ./src/tracing/session.js -function session_typeof(o) { "@babel/helpers - typeof"; return session_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, session_typeof(o); } -function session_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function session_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? session_ownKeys(Object(t), !0).forEach(function (r) { session_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : session_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function session_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function session_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, session_toPropertyKey(o.key), o); } } -function session_createClass(e, r, t) { return r && session_defineProperties(e.prototype, r), t && session_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function session_defineProperty(e, r, t) { return (r = session_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function session_toPropertyKey(t) { var i = session_toPrimitive(t, "string"); return "symbol" == session_typeof(i) ? i : i + ""; } -function session_toPrimitive(t, r) { if ("object" != session_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != session_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - -var SESSION_KEY = 'RollbarSession'; -var Session = /*#__PURE__*/function () { - function Session(tracing, options) { - session_classCallCheck(this, Session); - session_defineProperty(this, "_attributes", void 0); - this.options = options; - this.tracing = tracing; - this.window = tracing.window; - this.session = null; - this._attributes = {}; +function describeElement(elem) { + if (!elem || !elem.tagName) { + return null; } - return session_createClass(Session, [{ - key: "init", - value: function init() { - var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - if (this.session) { - return this; - } - this.getSession() || this.createSession(); - this.initSessionAttributes(attrs); - return this; - } - }, { - key: "getSession", - value: function getSession() { - try { - var serializedSession = this.window.sessionStorage.getItem(SESSION_KEY); - if (!serializedSession) { - return null; - } - this.session = JSON.parse(serializedSession); - } catch (_unused) { - return null; - } - return this; - } - }, { - key: "createSession", - value: function createSession() { - this.session = { - id: id.gen(), - createdAt: Date.now() - }; - return this.setSession(this.session); - } - }, { - key: "setSession", - value: function setSession(session) { - var sessionString = JSON.stringify(session); - try { - this.window.sessionStorage.setItem(SESSION_KEY, sessionString); - } catch (_unused2) { - return null; - } - return this; - } - }, { - key: "attributes", - get: function get() { - return this._attributes; - } - }, { - key: "setAttributes", - value: function setAttributes(attributes) { - this._attributes = session_objectSpread(session_objectSpread({}, this._attributes), attributes); - return this; - } - }, { - key: "setUser", - value: function setUser(user) { - this.setAttributes({ - 'user.id': user === null || user === void 0 ? void 0 : user.id, - 'user.email': user === null || user === void 0 ? void 0 : user.email, - 'user.name': (user === null || user === void 0 ? void 0 : user.name) || (user === null || user === void 0 ? void 0 : user.username) + var out = {}, + className; + out.tagName = elem.tagName.toLowerCase(); + if (elem.id) { + out.id = elem.id; + } + className = elem.className; + if (className && typeof className === 'string') { + out.classes = className.split(/\s+/); + } + var attributes = ['type', 'name', 'title', 'alt']; + out.attributes = []; + for (var _i = 0, _attributes = attributes; _i < _attributes.length; _i++) { + var attribute = _attributes[_i]; + var attr = elem.getAttribute(attribute); + if (attr) { + out.attributes.push({ + key: attribute, + value: attr }); - return this; - } - }, { - key: "initSessionAttributes", - value: function initSessionAttributes(attrs) { - var _navigator$userAgentD, _navigator$userAgentD2, _navigator$userAgentD3; - this.setAttributes(session_objectSpread({ - 'session.id': this.session.id, - 'browser.brands': (_navigator$userAgentD = navigator.userAgentData) === null || _navigator$userAgentD === void 0 ? void 0 : _navigator$userAgentD.brands, - 'browser.language': navigator.language, - 'browser.mobile': (_navigator$userAgentD2 = navigator.userAgentData) === null || _navigator$userAgentD2 === void 0 ? void 0 : _navigator$userAgentD2.mobile, - 'browser.platform': (_navigator$userAgentD3 = navigator.userAgentData) === null || _navigator$userAgentD3 === void 0 ? void 0 : _navigator$userAgentD3.platform, - 'client.address': '$remote_ip', - // updated at the API - 'rollbar.notifier.framework': 'browser-js', - 'user_agent.original': navigator.userAgent - }, attrs)); - return this; } - }]); -}(); -;// ./src/tracing/hrtime.js -/** - * @module hrtime - * - * @description Methods for handling OpenTelemetry hrtime. - */ + } + return out; +} -/** - * Convert a duration in milliseconds to an OpenTelemetry hrtime tuple. - * - * @param {number} millis - The duration in milliseconds. - * @returns {[number, number]} An array where the first element is seconds - * and the second is nanoseconds. +/* + * Detects if the given element matches any of the given class names (string or regex), + * or CSS selectors. + * @param {HTMLElement} element - The DOM element to check. + * @param {Array} classes - An array of class names (string or regex) to match against. + * @param {Array} selectors - An array of CSS selectors to match against. + * @return {boolean} - True if the element matches any of the classes or selectors, false otherwise. */ -function hrtime_fromMillis(millis) { - return [Math.trunc(millis / 1000), Math.round(millis % 1000 * 1e6)]; +function isMatchingElement(element, classes, selectors) { + try { + var _iterator3 = domUtility_createForOfIteratorHelper(classes), + _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var cls = _step3.value; + if (typeof cls === 'string') { + if (element.classList.contains(cls)) { + return true; + } + } else { + var _iterator5 = domUtility_createForOfIteratorHelper(element.classList), + _step5; + try { + for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { + var c = _step5.value; + if (cls.test(c)) { + return true; + } + } + } catch (err) { + _iterator5.e(err); + } finally { + _iterator5.f(); + } + } + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + var _iterator4 = domUtility_createForOfIteratorHelper(selectors), + _step4; + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + var sel = _step4.value; + if (element.matches(sel)) { + return true; + } + } + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); + } + } catch (_e) { + // ignore errors from invalid arguments + } + return false; } -/** - * Convert an OpenTelemetry hrtime tuple back to a duration in milliseconds. - * - * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds]. - * @returns {number} The total duration in milliseconds. - */ -function toMillis(hrtime) { - return hrtime[0] * 1e3 + Math.round(hrtime[1] / 1e6); -} +;// ./src/browser/telemetry.js +function browser_telemetry_typeof(o) { "@babel/helpers - typeof"; return browser_telemetry_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, browser_telemetry_typeof(o); } +function telemetry_toConsumableArray(r) { return telemetry_arrayWithoutHoles(r) || telemetry_iterableToArray(r) || telemetry_unsupportedIterableToArray(r) || telemetry_nonIterableSpread(); } +function telemetry_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function telemetry_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } +function telemetry_arrayWithoutHoles(r) { if (Array.isArray(r)) return telemetry_arrayLikeToArray(r); } +function telemetry_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function telemetry_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, telemetry_toPropertyKey(o.key), o); } } +function telemetry_createClass(e, r, t) { return r && telemetry_defineProperties(e.prototype, r), t && telemetry_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function telemetry_defineProperty(e, r, t) { return (r = telemetry_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function telemetry_toPropertyKey(t) { var i = telemetry_toPrimitive(t, "string"); return "symbol" == browser_telemetry_typeof(i) ? i : i + ""; } +function telemetry_toPrimitive(t, r) { if ("object" != browser_telemetry_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != browser_telemetry_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function telemetry_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = telemetry_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function telemetry_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return telemetry_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? telemetry_arrayLikeToArray(r, a) : void 0; } } +function telemetry_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +/* eslint-disable @typescript-eslint/no-this-alias */ +// TODO(matux): refactor to remove no-this-alias disable -/** - * Convert an OpenTelemetry hrtime tuple back to a duration in nanoseconds. - * - * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds]. - * @returns {number} The total duration in nanoseconds. - */ -function toNanos(hrtime) { - return hrtime[0] * 1e9 + hrtime[1]; -} -/** - * Adds two OpenTelemetry hrtime tuples. - * - * @param {[number, number]} a - The first hrtime tuple [s, ns]. - * @param {[number, number]} b - The second hrtime tuple [s, ns]. - * @returns {[number, number]} Summed hrtime tuple, normalized. - * - */ -function add(a, b) { - return [a[0] + b[0] + Math.trunc((a[1] + b[1]) / 1e9), (a[1] + b[1]) % 1e9]; -} -/** - * Get the current high-resolution time as an OpenTelemetry hrtime tuple. - * - * @param {boolean} usePerformance=false - If true, uses the Performance API (timeOrigin + now()). - * - * @returns {[number, number]} The current hrtime tuple [s, ns]. - */ -function now() { - var usePerformance = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - if (usePerformance) { - return add(hrtime_fromMillis(performance.timeOrigin), hrtime_fromMillis(performance.now())); - } - return hrtime_fromMillis(Date.now()); -} -/** - * Check if a value is a valid OpenTelemetry hrtime tuple. - * - * An hrtime tuple is an Array of exactly two numbers: - * [seconds, nanoseconds] - * - * @param {*} value – anything to test - * @returns {boolean} true if `value` is a [number, number] array of length 2 - * - * @example - * isHrTime([ 1, 500 ]); // true - * isHrTime([ 0, 1e9 ]); // true - * isHrTime([ '1', 500 ]); // false - * isHrTime({ 0: 1, 1: 500 }); // false - */ -function isHrTime(value) { - return Array.isArray(value) && value.length === 2 && typeof value[0] === 'number' && typeof value[1] === 'number'; -} -/** - * Methods for handling hrtime. OpenTelemetry uses the [seconds, nanoseconds] - * format for hrtime in the `ReadableSpan` interface. - * - * @example - * import hrtime from '@tracing/hrtime.js'; - * - * hrtime.fromMillis(1000); - * hrtime.toMillis([0, 1000]); - * hrtime.add([0, 0], [0, 1000]); - * hrtime.now(); - * hrtime.isHrTime([0, 1000]); - */ -/* harmony default export */ var hrtime = ({ - fromMillis: hrtime_fromMillis, - toMillis: toMillis, - toNanos: toNanos, - add: add, - now: now, - isHrTime: isHrTime -}); -;// ./src/tracing/exporter.js -function exporter_typeof(o) { "@babel/helpers - typeof"; return exporter_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, exporter_typeof(o); } -function exporter_slicedToArray(r, e) { return exporter_arrayWithHoles(r) || exporter_iterableToArrayLimit(r, e) || exporter_unsupportedIterableToArray(r, e) || exporter_nonIterableRest(); } -function exporter_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function exporter_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function exporter_arrayWithHoles(r) { if (Array.isArray(r)) return r; } -function exporter_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = exporter_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } -function exporter_toConsumableArray(r) { return exporter_arrayWithoutHoles(r) || exporter_iterableToArray(r) || exporter_unsupportedIterableToArray(r) || exporter_nonIterableSpread(); } -function exporter_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function exporter_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return exporter_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? exporter_arrayLikeToArray(r, a) : void 0; } } -function exporter_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } -function exporter_arrayWithoutHoles(r) { if (Array.isArray(r)) return exporter_arrayLikeToArray(r); } -function exporter_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function exporter_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function exporter_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, exporter_toPropertyKey(o.key), o); } } -function exporter_createClass(e, r, t) { return r && exporter_defineProperties(e.prototype, r), t && exporter_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function exporter_toPropertyKey(t) { var i = exporter_toPrimitive(t, "string"); return "symbol" == exporter_typeof(i) ? i : i + ""; } -function exporter_toPrimitive(t, r) { if ("object" != exporter_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != exporter_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -/** - * SpanExporter is responsible for exporting ReadableSpan objects - * and transforming them into the OTLP-compatible format. - */ -var SpanExporter = /*#__PURE__*/function () { - function SpanExporter(api) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - exporter_classCallCheck(this, SpanExporter); - this.api = api; + +var telemetry_defaults = { + network: true, + networkResponseHeaders: false, + networkResponseBody: false, + networkRequestHeaders: false, + networkRequestBody: false, + networkErrorOnHttp5xx: false, + networkErrorOnHttp4xx: false, + networkErrorOnHttp0: false, + log: true, + dom: true, + navigation: true, + connectivity: true, + contentSecurityPolicy: true, + errorOnContentSecurityPolicy: false +}; +function restore(replacements, type) { + var b; + while (replacements[type].length) { + b = replacements[type].shift(); + b[0][b[1]] = b[2]; + } +} +function nameFromDescription(description) { + if (!description || !description.attributes) { + return null; + } + var attrs = description.attributes; + var _iterator = telemetry_createForOfIteratorHelper(attrs), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var a = _step.value; + if (a.key === 'name') { + return a.value; + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return null; +} +function defaultValueScrubber(scrubFields) { + var patterns = []; + var _iterator2 = telemetry_createForOfIteratorHelper(scrubFields), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var field = _step2.value; + patterns.push(new RegExp(field, 'i')); + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + return function (description) { + var name = nameFromDescription(description); + if (!name) { + return false; + } + for (var _i = 0, _patterns = patterns; _i < _patterns.length; _i++) { + var p = _patterns[_i]; + if (p.test(name)) { + return true; + } + } + return false; + }; +} +var Instrumenter = /*#__PURE__*/function () { + function Instrumenter(options, telemeter, rollbar, _window, _document) { + telemetry_classCallCheck(this, Instrumenter); + telemetry_defineProperty(this, "deinstrumentConnectivity", function () { + this.removeListeners('connectivity'); + }); this.options = options; + var autoInstrument = options.autoInstrument; + if (options.enabled === false || autoInstrument === false) { + this.autoInstrument = {}; + } else { + if (!isType(autoInstrument, 'object')) { + autoInstrument = telemetry_defaults; + } + this.autoInstrument = merge(telemetry_defaults, autoInstrument); + } + this.configureScrubbing(); + this.telemeter = telemeter; + this.rollbar = rollbar; + this.diagnostic = rollbar.client.notifier.diagnostic; + this._window = _window || {}; + this._document = _document || {}; + this.replacements = { + network: [], + log: [], + navigation: [], + connectivity: [] + }; + this.eventRemovers = { + dom: [], + connectivity: [], + contentsecuritypolicy: [] + }; + this._location = this._window.location; + this._lastHref = this._location && this._location.href; } - - /** - * Export spans to the span export queue - * - * @param {Array} spans - Array of ReadableSpan objects to export - * @param {Function} _resultCallback - Optional callback (not used) - */ - return exporter_createClass(SpanExporter, [{ - key: "export", - value: function _export(spans, _resultCallback) { - spanExportQueue.push.apply(spanExportQueue, exporter_toConsumableArray(spans)); + return telemetry_createClass(Instrumenter, [{ + key: "configureScrubbing", + value: function configureScrubbing() { + var _options$scrubTelemet, _options$replay, _options$replay2, _options$replay3, _options$replay4, _options$replay5, _options$replay6, _options$replay7, _options$replay8, _options$replay9; + var options = this.options; + this.scrubTelemetryInputs = Boolean((_options$scrubTelemet = options.scrubTelemetryInputs) !== null && _options$scrubTelemet !== void 0 ? _options$scrubTelemet : (_options$replay = options.replay) === null || _options$replay === void 0 ? void 0 : _options$replay.maskAllInputs); + this.telemetryScrubber = options.telemetryScrubber; + this.defaultValueScrubber = defaultValueScrubber(options.scrubFields); + this.maskInputFn = (_options$replay2 = options.replay) === null || _options$replay2 === void 0 ? void 0 : _options$replay2.maskInputFn; + this.maskInputOptions = ((_options$replay3 = options.replay) === null || _options$replay3 === void 0 ? void 0 : _options$replay3.maskInputOptions) || {}; + this.scrubClasses = [(_options$replay4 = options.replay) === null || _options$replay4 === void 0 ? void 0 : _options$replay4.blockClass, (_options$replay5 = options.replay) === null || _options$replay5 === void 0 ? void 0 : _options$replay5.ignoreClass, (_options$replay6 = options.replay) === null || _options$replay6 === void 0 ? void 0 : _options$replay6.maskTextClass].filter(Boolean); + this.scrubSelectors = [(_options$replay7 = options.replay) === null || _options$replay7 === void 0 ? void 0 : _options$replay7.blockSelector, (_options$replay8 = options.replay) === null || _options$replay8 === void 0 ? void 0 : _options$replay8.ignoreSelector, (_options$replay9 = options.replay) === null || _options$replay9 === void 0 ? void 0 : _options$replay9.maskTextSelector].filter(Boolean); + } + }, { + key: "configure", + value: function configure(options) { + this.options = merge(this.options, options); + var autoInstrument = options.autoInstrument; + var oldSettings = merge(this.autoInstrument); + if (options.enabled === false || autoInstrument === false) { + this.autoInstrument = {}; + } else { + if (!isType(autoInstrument, 'object')) { + autoInstrument = telemetry_defaults; + } + this.autoInstrument = merge(telemetry_defaults, autoInstrument); + } + this.configureScrubbing(); + this.instrument(oldSettings); } - /** - * Transforms an array of ReadableSpan objects into the OTLP format payload - * compatible with the Rollbar API. This follows the OpenTelemetry protocol - * specification for traces. - * - * @returns {Object} OTLP format payload for API transmission - */ + // eslint-disable-next-line complexity }, { - key: "toPayload", - value: function toPayload() { - var _this = this; - var spans = spanExportQueue.slice(); - spanExportQueue.length = 0; - if (!spans || !spans.length) { - return { - resourceSpans: [] - }; + key: "instrument", + value: function instrument(oldSettings) { + if (this.autoInstrument.network && !(oldSettings && oldSettings.network)) { + this.instrumentNetwork(); + } else if (!this.autoInstrument.network && oldSettings && oldSettings.network) { + this.deinstrumentNetwork(); } - var resource = spans[0] && spans[0].resource || {}; - var scopeMap = new Map(); - var _iterator = exporter_createForOfIteratorHelper(spans), - _step; - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var span = _step.value; - var scopeKey = span.instrumentationScope ? "".concat(span.instrumentationScope.name, ":").concat(span.instrumentationScope.version) : 'default:1.0.0'; - if (!scopeMap.has(scopeKey)) { - scopeMap.set(scopeKey, { - scope: span.instrumentationScope || { - name: 'default', - version: '1.0.0', - attributes: [] - }, - spans: [] - }); - } - scopeMap.get(scopeKey).spans.push(this._transformSpan(span)); + if (this.autoInstrument.log && !(oldSettings && oldSettings.log)) { + this.instrumentConsole(); + } else if (!this.autoInstrument.log && oldSettings && oldSettings.log) { + this.deinstrumentConsole(); + } + if (this.autoInstrument.dom && !(oldSettings && oldSettings.dom)) { + this.instrumentDom(); + } else if (!this.autoInstrument.dom && oldSettings && oldSettings.dom) { + this.deinstrumentDom(); + } + if (this.autoInstrument.navigation && !(oldSettings && oldSettings.navigation)) { + this.instrumentNavigation(); + } else if (!this.autoInstrument.navigation && oldSettings && oldSettings.navigation) { + this.deinstrumentNavigation(); + } + if (this.autoInstrument.connectivity && !(oldSettings && oldSettings.connectivity)) { + this.instrumentConnectivity(); + } else if (!this.autoInstrument.connectivity && oldSettings && oldSettings.connectivity) { + this.deinstrumentConnectivity(); + } + if (this.autoInstrument.contentSecurityPolicy && !(oldSettings && oldSettings.contentSecurityPolicy)) { + this.instrumentContentSecurityPolicy(); + } else if (!this.autoInstrument.contentSecurityPolicy && oldSettings && oldSettings.contentSecurityPolicy) { + this.deinstrumentContentSecurityPolicy(); + } + } + }, { + key: "deinstrumentNetwork", + value: function deinstrumentNetwork() { + restore(this.replacements, 'network'); + } + }, { + key: "instrumentNetwork", + value: function instrumentNetwork() { + var self = this; + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + utility_replace(xhr, prop, function (orig) { + return self.rollbar.wrap(orig); + }); } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); } - return { - resourceSpans: [{ - resource: this._transformResource(resource), - scopeSpans: Array.from(scopeMap.values()).map(function (scopeData) { - return { - scope: _this._transformInstrumentationScope(scopeData.scope), - spans: scopeData.spans + if ('XMLHttpRequest' in this._window) { + var xhrp = this._window.XMLHttpRequest.prototype; + utility_replace(xhrp, 'open', function (orig) { + return function (method, url) { + var isUrlObject = _isUrlObject(url); + if (isType(url, 'string') || isUrlObject) { + url = isUrlObject ? url.toString() : url; + if (this.__rollbar_xhr) { + this.__rollbar_xhr.method = method; + this.__rollbar_xhr.url = url; + this.__rollbar_xhr.status_code = null; + this.__rollbar_xhr.start_time_ms = now(); + this.__rollbar_xhr.end_time_ms = null; + } else { + this.__rollbar_xhr = { + method: method, + url: url, + status_code: null, + start_time_ms: now(), + end_time_ms: null + }; + } + } + return orig.apply(this, arguments); + }; + }, this.replacements, 'network'); + utility_replace(xhrp, 'setRequestHeader', function (orig) { + return function (header, value) { + // If xhr.open is async, __rollbar_xhr may not be initialized yet. + if (!this.__rollbar_xhr) { + this.__rollbar_xhr = {}; + } + if (isType(header, 'string') && isType(value, 'string')) { + if (self.autoInstrument.networkRequestHeaders) { + if (!this.__rollbar_xhr.request_headers) { + this.__rollbar_xhr.request_headers = {}; + } + this.__rollbar_xhr.request_headers[header] = value; + } + // We want the content type even if request header telemetry is off. + if (header.toLowerCase() === 'content-type') { + this.__rollbar_xhr.request_content_type = value; + } + } + return orig.apply(this, arguments); + }; + }, this.replacements, 'network'); + utility_replace(xhrp, 'send', function (orig) { + return function (data) { + var xhr = this; + function onreadystatechangeHandler() { + if (xhr.__rollbar_xhr) { + if (xhr.__rollbar_xhr.status_code === null) { + xhr.__rollbar_xhr.status_code = 0; + if (self.autoInstrument.networkRequestBody) { + xhr.__rollbar_xhr.request = data; + } + xhr.__rollbar_event = self.captureNetwork(xhr.__rollbar_xhr, 'xhr', undefined); + } + if (xhr.readyState < 2) { + xhr.__rollbar_xhr.start_time_ms = now(); + } + if (xhr.readyState > 3) { + var end_time_ms = now(); + xhr.__rollbar_xhr.end_time_ms = end_time_ms; + var _headers = null; + xhr.__rollbar_xhr.response_content_type = xhr.getResponseHeader('Content-Type'); + if (self.autoInstrument.networkResponseHeaders) { + var headersConfig = self.autoInstrument.networkResponseHeaders; + _headers = {}; + try { + var header; + if (headersConfig === true) { + var allHeaders = xhr.getAllResponseHeaders(); + if (allHeaders) { + var arr = allHeaders.trim().split(/[\r\n]+/); + var parts, value; + var _iterator3 = telemetry_createForOfIteratorHelper(arr), + _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var h = _step3.value; + parts = h.split(': '); + header = parts.shift(); + value = parts.join(': '); + _headers[header] = value; + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + } + } else { + var _iterator4 = telemetry_createForOfIteratorHelper(headersConfig), + _step4; + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + var _h = _step4.value; + _headers[_h] = xhr.getResponseHeader(_h); + } + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); + } + } + } catch (_e) { + /* we ignore the errors here that could come from different + * browser issues with the xhr methods */ + } + } + var body = null; + if (self.autoInstrument.networkResponseBody) { + try { + body = xhr.responseText; + } catch (_e) { + /* ignore errors from reading responseText */ + } + } + var response = null; + if (body || _headers) { + response = {}; + if (body) { + if (self.isJsonContentType(xhr.__rollbar_xhr.response_content_type)) { + response.body = self.scrubJson(body); + } else { + response.body = body; + } + } + if (_headers) { + response.headers = _headers; + } + } + if (response) { + xhr.__rollbar_xhr.response = response; + } + try { + var code = xhr.status; + code = code === 1223 ? 204 : code; + xhr.__rollbar_xhr.status_code = code; + self.addOtelNetworkResponse(xhr.__rollbar_event, end_time_ms, code); + xhr.__rollbar_event.level = self.telemeter.levelFromStatus(code); + self.errorOnHttpStatus(xhr.__rollbar_xhr); + } catch (_e) { + /* ignore possible exception from xhr.status */ + } + } + } + } + wrapProp('onload', xhr); + wrapProp('onerror', xhr); + wrapProp('onprogress', xhr); + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + utility_replace(xhr, 'onreadystatechange', function (orig) { + return self.rollbar.wrap(orig, undefined, onreadystatechangeHandler); + }); + } else { + xhr.onreadystatechange = onreadystatechangeHandler; + } + if (xhr.__rollbar_xhr && self.trackHttpErrors()) { + xhr.__rollbar_xhr.stack = new Error().stack; + } + return orig.apply(this, arguments); + }; + }, this.replacements, 'network'); + } + if ('fetch' in this._window) { + utility_replace(this._window, 'fetch', function (orig) { + return function (_fn, _t) { + var args = Array.prototype.slice.call(arguments); + var input = args[0]; + var method = 'GET'; + var url; + var isUrlObject = _isUrlObject(input); + if (isType(input, 'string') || isUrlObject) { + url = isUrlObject ? input.toString() : input; + } else if (input) { + url = input.url; + if (input.method) { + method = input.method; + } + } + if (args[1] && args[1].method) { + method = args[1].method; + } + var metadata = { + method: method, + url: url, + status_code: null, + start_time_ms: now(), + end_time_ms: null }; - }) - }] - }; - } - - /** - * Sends the given payload to the Rollbar API. - * - * @param {String} payload - Serialized OTLP format payload - * @param {Object} headers - Optional request headers - * @returns {Promise} Promise that resolves when the request completes - */ - }, { - key: "post", - value: function post(payload) { - var headers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - return this.api.postSpans(payload, headers); - } - - /** - * Transforms a ReadableSpan into the OTLP Span format - * - * @private - * @param {Object} span - ReadableSpan object to transform - * @returns {Object} OTLP Span format - */ - }, { - key: "_transformSpan", - value: function _transformSpan(span) { - var _this2 = this; - var transformAttributes = function transformAttributes(attributes) { - return Object.entries(attributes || {}).map(function (_ref) { - var _ref2 = exporter_slicedToArray(_ref, 2), - key = _ref2[0], - value = _ref2[1]; - return { - key: key, - value: _this2._transformAnyValue(value) - }; - }); - }; - var transformEvents = function transformEvents(events) { - return (events || []).map(function (event) { - return { - timeUnixNano: hrtime.toNanos(event.time), - name: event.name, - attributes: transformAttributes(event.attributes) - }; - }); - }; - return { - traceId: span.spanContext.traceId, - spanId: span.spanContext.spanId, - parentSpanId: span.parentSpanId || '', - name: span.name, - kind: span.kind || 1, - // INTERNAL by default - startTimeUnixNano: hrtime.toNanos(span.startTime), - endTimeUnixNano: hrtime.toNanos(span.endTime), - attributes: transformAttributes(span.attributes), - events: transformEvents(span.events) - }; - } - - /** - * Transforms a resource object into OTLP Resource format - * - * @private - * @param {Object} resource - Resource information - * @returns {Object} OTLP Resource format - */ - }, { - key: "_transformResource", - value: function _transformResource(resource) { - var _this3 = this; - var attributes = resource.attributes || {}; - var keyValues = Object.entries(attributes).map(function (_ref3) { - var _ref4 = exporter_slicedToArray(_ref3, 2), - key = _ref4[0], - value = _ref4[1]; - return { - key: key, - value: _this3._transformAnyValue(value) - }; - }); - return { - attributes: keyValues - }; - } - - /** - * Transforms an instrumentation scope into OTLP InstrumentationScope format - * - * @private - * @param {Object} scope - Instrumentation scope information - * @returns {Object} OTLP InstrumentationScope format - */ - }, { - key: "_transformInstrumentationScope", - value: function _transformInstrumentationScope(scope) { - var _this4 = this; - return { - name: scope.name || '', - version: scope.version || '', - attributes: (scope.attributes || []).map(function (attr) { - return { - key: attr.key, - value: _this4._transformAnyValue(attr.value) - }; - }) - }; - } + if (args[1] && args[1].headers) { + // Argument may be a Headers object, or plain object. Ensure here that + // we are working with a Headers object with case-insensitive keys. + var reqHeaders = utility_headers(args[1].headers); + metadata.request_content_type = reqHeaders.get('Content-Type'); + if (self.autoInstrument.networkRequestHeaders) { + metadata.request_headers = self.fetchHeaders(reqHeaders, self.autoInstrument.networkRequestHeaders); + } + } + if (self.autoInstrument.networkRequestBody) { + if (args[1] && args[1].body) { + metadata.request = args[1].body; + } else if (args[0] && !isType(args[0], 'string') && args[0].body) { + metadata.request = args[0].body; + } + } + var telemetryEvent = self.captureNetwork(metadata, 'fetch', undefined); + if (self.trackHttpErrors()) { + metadata.stack = new Error().stack; + } - /** - * Transforms a JavaScript value into an OTLP AnyValue - * - * @private - * @param {any} value - Value to transform - * @returns {Object} OTLP AnyValue format - */ - }, { - key: "_transformAnyValue", - value: function _transformAnyValue(value) { - var _this5 = this; - if (value === null || value === undefined) { - return { - stringValue: '' - }; - } - var type = exporter_typeof(value); - if (type === 'string') { - return { - stringValue: value - }; - } else if (type === 'number') { - if (Number.isInteger(value)) { - return { - intValue: value.toString() - }; - } else { - return { - doubleValue: value - }; - } - } else if (type === 'boolean') { - return { - boolValue: value - }; - } else if (Array.isArray(value)) { - return { - arrayValue: { - values: value.map(function (v) { - return _this5._transformAnyValue(v); - }) - } - }; - } else if (type === 'object') { - return { - kvlistValue: { - values: Object.entries(value).map(function (_ref5) { - var _ref6 = exporter_slicedToArray(_ref5, 2), - k = _ref6[0], - v = _ref6[1]; - return { - key: k, - value: _this5._transformAnyValue(v) - }; - }) - } - }; + // Start our handler before returning the promise. This allows resp.clone() + // to execute before other handlers touch the response. + return orig.apply(this, args).then(function (resp) { + var end_time_ms = now(); + metadata.end_time_ms = end_time_ms; + metadata.status_code = resp.status; + self.addOtelNetworkResponse(telemetryEvent, end_time_ms, resp.status); + metadata.response_content_type = resp.headers.get('Content-Type'); + var headers = null; + if (self.autoInstrument.networkResponseHeaders) { + headers = self.fetchHeaders(resp.headers, self.autoInstrument.networkResponseHeaders); + } + var body = null; + if (self.autoInstrument.networkResponseBody) { + if (typeof resp.text === 'function') { + // Response.text() is not implemented on some platforms + // The response must be cloned to prevent reading (and locking) the original stream. + // This must be done before other handlers touch the response. + body = resp.clone().text(); //returns a Promise + } + } + if (headers || body) { + metadata.response = {}; + if (body) { + // Test to ensure body is a Promise, which it should always be. + if (typeof body.then === 'function') { + body.then(function (text) { + if (text && self.isJsonContentType(metadata.response_content_type)) { + metadata.response.body = self.scrubJson(text); + } else { + metadata.response.body = text; + } + }); + } else { + metadata.response.body = body; + } + } + if (headers) { + metadata.response.headers = headers; + } + } + self.errorOnHttpStatus(metadata); + return resp; + }); + }; + }, this.replacements, 'network'); } - return { - stringValue: String(value) - }; } - }]); -}(); -var spanExportQueue = []; -;// ./src/tracing/spanProcessor.js -function spanProcessor_typeof(o) { "@babel/helpers - typeof"; return spanProcessor_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, spanProcessor_typeof(o); } -function spanProcessor_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = spanProcessor_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } -function spanProcessor_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return spanProcessor_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? spanProcessor_arrayLikeToArray(r, a) : void 0; } } -function spanProcessor_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function spanProcessor_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function spanProcessor_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, spanProcessor_toPropertyKey(o.key), o); } } -function spanProcessor_createClass(e, r, t) { return r && spanProcessor_defineProperties(e.prototype, r), t && spanProcessor_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function spanProcessor_toPropertyKey(t) { var i = spanProcessor_toPrimitive(t, "string"); return "symbol" == spanProcessor_typeof(i) ? i : i + ""; } -function spanProcessor_toPrimitive(t, r) { if ("object" != spanProcessor_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != spanProcessor_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - -var SpanProcessor = /*#__PURE__*/function () { - function SpanProcessor(exporter) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - spanProcessor_classCallCheck(this, SpanProcessor); - this.exporter = exporter; - this.options = options; - this.pendingSpans = new Map(); - this.transforms = [this.userTransform.bind(this)]; - } - return spanProcessor_createClass(SpanProcessor, [{ - key: "addTransform", - value: function addTransform(transformFn) { - this.transforms.unshift(transformFn); + }, { + key: "captureNetwork", + value: function captureNetwork(metadata, subtype, rollbarUUID) { + if (metadata.request && this.isJsonContentType(metadata.request_content_type)) { + metadata.request = this.scrubJson(metadata.request); + } + return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID); } }, { - key: "userTransform", - value: function userTransform(span) { - if (this.options.transformSpan) { - this.options.transformSpan({ - span: span - }); + key: "isJsonContentType", + value: function isJsonContentType(contentType) { + return contentType && isType(contentType, 'string') && contentType.toLowerCase().includes('json') ? true : false; + } + }, { + key: "addOtelNetworkResponse", + value: function addOtelNetworkResponse(event, endTimeMs, statusCode) { + if (event.otelAttributes) { + event.otelAttributes['response.timeUnixNano'] = (endTimeMs * 1e6).toString(); + event.otelAttributes.statusCode = statusCode; } } }, { - key: "applyTransforms", - value: function applyTransforms(span) { - var _iterator = spanProcessor_createForOfIteratorHelper(this.transforms), - _step; + key: "scrubJson", + value: function scrubJson(json) { + return JSON.stringify(src_scrub(JSON.parse(json), this.options.scrubFields)); + } + }, { + key: "fetchHeaders", + value: function fetchHeaders(inHeaders, headersConfig) { + var outHeaders = {}; try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var transform = _step.value; + if (headersConfig === true) { + if (typeof inHeaders.entries === 'function') { + // Headers.entries() is not implemented in IE + var allHeaders = inHeaders.entries(); + var currentHeader = allHeaders.next(); + while (!currentHeader.done) { + outHeaders[currentHeader.value[0]] = currentHeader.value[1]; + currentHeader = allHeaders.next(); + } + } + } else { + var _iterator5 = telemetry_createForOfIteratorHelper(headersConfig), + _step5; try { - transform(span); - } catch (e) { - src_logger.error('Error running span transform callback', e); + for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { + var h = _step5.value; + outHeaders[h] = inHeaders.get(h); + } + } catch (err) { + _iterator5.e(err); + } finally { + _iterator5.f(); } } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); + } catch (_e) { + /* ignore probable IE errors */ } + return outHeaders; } }, { - key: "onStart", - value: function onStart(span, _parentContext) { - this.pendingSpans.set(span.span.spanContext.spanId, span); + key: "trackHttpErrors", + value: function trackHttpErrors() { + return this.autoInstrument.networkErrorOnHttp5xx || this.autoInstrument.networkErrorOnHttp4xx || this.autoInstrument.networkErrorOnHttp0; } }, { - key: "onEnd", - value: function onEnd(span) { - this.applyTransforms(span.span); - this.exporter.export([span.export()]); - this.pendingSpans.delete(span.span.spanContext.spanId); + key: "errorOnHttpStatus", + value: function errorOnHttpStatus(metadata) { + var status = metadata.status_code; + if (status >= 500 && this.autoInstrument.networkErrorOnHttp5xx || status >= 400 && this.autoInstrument.networkErrorOnHttp4xx || status === 0 && this.autoInstrument.networkErrorOnHttp0) { + var error = new Error('HTTP request failed with Status ' + status); + error.stack = metadata.stack; + this.rollbar.error(error, { + skipFrames: 1 + }); + } } - }]); -}(); -;// ./src/tracing/span.js -function span_typeof(o) { "@babel/helpers - typeof"; return span_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, span_typeof(o); } -function span_slicedToArray(r, e) { return span_arrayWithHoles(r) || span_iterableToArrayLimit(r, e) || span_unsupportedIterableToArray(r, e) || span_nonIterableRest(); } -function span_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function span_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return span_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? span_arrayLikeToArray(r, a) : void 0; } } -function span_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function span_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function span_arrayWithHoles(r) { if (Array.isArray(r)) return r; } -function span_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function span_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, span_toPropertyKey(o.key), o); } } -function span_createClass(e, r, t) { return r && span_defineProperties(e.prototype, r), t && span_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function span_toPropertyKey(t) { var i = span_toPrimitive(t, "string"); return "symbol" == span_typeof(i) ? i : i + ""; } -function span_toPrimitive(t, r) { if ("object" != span_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != span_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - -var Span = /*#__PURE__*/function () { - function Span(options) { - span_classCallCheck(this, Span); - this.usePerformance = options.usePerformance; - this.initReadableSpan(options); - this.spanProcessor = options.spanProcessor; - this.spanProcessor.onStart(this, options.context); - if (options.attributes) { - this.setAttributes(options.attributes); + }, { + key: "deinstrumentConsole", + value: function deinstrumentConsole() { + var b; + while (this.replacements['log'].length) { + b = this.replacements['log'].shift(); + this._window.console[b[0]] = b[1]; + } } - return this; - } - return span_createClass(Span, [{ - key: "initReadableSpan", - value: function initReadableSpan(options) { - var _options$session; - this.span = { - name: options.name, - kind: options.kind, - spanContext: options.spanContext, - parentSpanId: options.parentSpanId, - startTime: options.startTime || hrtime.now(options.usePerformance), - endTime: [0, 0], - status: { - code: 0, - message: '' - }, - attributes: { - 'session.id': (_options$session = options.session) === null || _options$session === void 0 ? void 0 : _options$session.id - }, - links: [], - events: [], - duration: 0, - ended: false, - resource: options.resource, - instrumentationScope: options.scope, - droppedAttributesCount: 0, - droppedEventsCount: 0, - droppedLinksCount: 0 - }; + }, { + key: "instrumentConsole", + value: function instrumentConsole() { + var _this$_window; + if (!((_this$_window = this._window) !== null && _this$_window !== void 0 && (_this$_window = _this$_window.console) !== null && _this$_window !== void 0 && _this$_window.log)) { + return; + } + var self = this; + var c = this._window.console; + function wrapConsole(method) { + // eslint-disable-next-line strict + 'use strict'; + + // See https://github.com/rollbar/rollbar.js/pull/778 + var orig = c[method]; + var origConsole = c; + var level = method === 'warn' ? 'warning' : method; + c[method] = function () { + var args = Array.prototype.slice.call(arguments); + var message = formatArgsAsString(args); + self.telemeter.captureLog(message, level, null, now()); + if (orig) { + Function.prototype.apply.call(orig, origConsole, args); + } + }; + self.replacements['log'].push([method, orig]); + } + var methods = ['debug', 'info', 'warn', 'error', 'log']; + try { + for (var _i2 = 0, _methods = methods; _i2 < _methods.length; _i2++) { + var m = _methods[_i2]; + wrapConsole(m); + } + } catch (e) { + this.diagnostic.instrumentConsole = { + error: e.message + }; + } } }, { - key: "spanContext", - value: function spanContext() { - return this.span.spanContext; + key: "deinstrumentDom", + value: function deinstrumentDom() { + this.removeListeners('dom'); } }, { - key: "spanId", - get: function get() { - return this.span.spanContext.spanId; + key: "instrumentDom", + value: function instrumentDom() { + var _this = this; + this.addListener('dom', this._window, ['click', 'dblclick', 'contextmenu'], function (e) { + return _this.handleEvent('click', e); + }); + this.addListener('dom', this._window, ['dragstart', 'dragend', 'dragenter', 'dragleave', 'drop'], function (e) { + return _this.handleEvent('dragdrop', e); + }); + this.addListener('dom', this._window, ['blur', 'focus'], function (e) { + return _this.handleEvent('focus', e); + }); + this.addListener('dom', this._window, ['submit', 'invalid'], function (e) { + return _this.handleEvent('form', e); + }); + this.addListener('dom', this._window, ['input', 'change'], function (e) { + return _this.handleEvent('input', e); + }); + this.addListener('dom', this._window, ['resize'], function (e) { + return _this.handleEvent('resize', e); + }); + this.addListener('dom', this._document, ['DOMContentLoaded'], function (e) { + return _this.handleEvent('contentLoaded', e); + }); } }, { - key: "traceId", - get: function get() { - return this.span.spanContext.traceId; + key: "handleEvent", + value: function handleEvent(name, evt) { + try { + return { + click: this.handleClick, + dragdrop: this.handleDrag, + focus: this.handleFocus, + form: this.handleForm, + input: this.handleInput, + resize: this.handleResize, + contentLoaded: this.handleContentLoaded + }[name].call(this, evt); + } catch (exc) { + src_logger.log("".concat(name, " handler error"), evt, exc, exc.stack); + } } }, { - key: "setAttribute", - value: function setAttribute(key, value) { - if (value == null || this.span.ended) return this; - if (key.length === 0) return this; - this.span.attributes[key] = value; - return this; + key: "handleContentLoaded", + value: function handleContentLoaded(_evt) { + this.rollbar.triggerReplay({ + type: 'navigation', + path: new URL(this._location.href).pathname + }); } }, { - key: "setAttributes", - value: function setAttributes(attributes) { - for (var _i = 0, _Object$entries = Object.entries(attributes); _i < _Object$entries.length; _i++) { - var _Object$entries$_i = span_slicedToArray(_Object$entries[_i], 2), - k = _Object$entries$_i[0], - v = _Object$entries$_i[1]; - this.setAttribute(k, v); - } - return this; + key: "handleClick", + value: function handleClick(evt) { + var _evt$target; + var tagName = (_evt$target = evt.target) === null || _evt$target === void 0 ? void 0 : _evt$target.tagName.toLowerCase(); + if (['input', 'select', 'textarea'].includes(tagName)) return; + this.telemeter.captureClick({ + type: evt.type, + isSynthetic: !evt.isTrusted, + element: elementString(evt.target), + timestamp: now() + }); } }, { - key: "addEvent", - value: function addEvent(name) { - var attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var time = arguments.length > 2 ? arguments[2] : undefined; - if (this.span.ended) return this; - this.span.events.push({ - name: name, - attributes: attributes, - time: time || hrtime.now(), - droppedAttributesCount: 0 + key: "handleFocus", + value: function handleFocus(evt) { + var _evt$target2; + var type = evt.type; + var element = (_evt$target2 = evt.target) !== null && _evt$target2 !== void 0 && _evt$target2.window ? 'window' : elementString(evt.target); + this.telemeter.captureFocus({ + type: type, + isSynthetic: !evt.isTrusted, + element: element, + timestamp: now() }); - return this; } }, { - key: "isRecording", - value: function isRecording() { - return this.span.ended === false; + key: "handleForm", + value: function handleForm(_evt) { + // TODO: implement form event handling + //const type = evt.type; + //const elementString = evt.target?.window + // ? 'window' + // : domUtil.elementString(evt.target); } }, { - key: "end", - value: function end(attributes, time) { - if (attributes) this.setAttributes(attributes); - this.span.endTime = time || hrtime.now(this.usePerformance); - this.span.ended = true; - this.spanProcessor.onEnd(this); + key: "handleResize", + value: function handleResize(evt) { + var textZoomRatio = window.screen.width / window.innerWidth; + this.telemeter.captureResize({ + type: evt.type, + isSynthetic: !evt.isTrusted, + width: window.innerWidth, + height: window.innerHeight, + textZoomRatio: textZoomRatio, + timestamp: now() + }); } }, { - key: "export", - value: function _export() { - return this.span; - } - }]); -}(); -;// ./src/tracing/tracer.js -function tracer_typeof(o) { "@babel/helpers - typeof"; return tracer_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, tracer_typeof(o); } -function tracer_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function tracer_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? tracer_ownKeys(Object(t), !0).forEach(function (r) { tracer_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : tracer_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function tracer_defineProperty(e, r, t) { return (r = tracer_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function tracer_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function tracer_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, tracer_toPropertyKey(o.key), o); } } -function tracer_createClass(e, r, t) { return r && tracer_defineProperties(e.prototype, r), t && tracer_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function tracer_toPropertyKey(t) { var i = tracer_toPrimitive(t, "string"); return "symbol" == tracer_typeof(i) ? i : i + ""; } -function tracer_toPrimitive(t, r) { if ("object" != tracer_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != tracer_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - - -var Tracer = /*#__PURE__*/function () { - function Tracer(tracing, spanProcessor) { - tracer_classCallCheck(this, Tracer); - this.spanProcessor = spanProcessor; - this.tracing = tracing; - } - return tracer_createClass(Tracer, [{ - key: "startSpan", - value: function startSpan(name) { - var _this$tracing$resourc, _options$resource, _this$tracing$session; - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.tracing.contextManager.active(); - var parentSpan = this.tracing.getSpan(context); - var parentSpanContext = parentSpan === null || parentSpan === void 0 ? void 0 : parentSpan.spanContext(); - var spanId = id.gen(8); - var traceId; - var traceFlags = 0; - var traceState = null; - var parentSpanId; - if (parentSpanContext) { - traceId = parentSpanContext.traceId; - traceState = parentSpanContext.traceState; - parentSpanId = parentSpanContext.spanId; - } else { - traceId = id.gen(16); + key: "handleDrag", + value: function handleDrag(evt) { + var type = evt.type; + var kinds, mediaTypes, dropEffect, effectAllowed; + if (type === 'drop') { + kinds = []; + mediaTypes = []; + var objs = [].concat(telemetry_toConsumableArray(evt.dataTransfer.files), telemetry_toConsumableArray(evt.dataTransfer.items)); + var _iterator6 = telemetry_createForOfIteratorHelper(objs), + _step6; + try { + for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { + var o = _step6.value; + if (o.kind && o.type) { + kinds.push(o.kind); + mediaTypes.push(o.type); + } + } + } catch (err) { + _iterator6.e(err); + } finally { + _iterator6.f(); + } } - var kind = 0; - var spanContext = { - traceId: traceId, - spanId: spanId, - traceFlags: traceFlags, - traceState: traceState - }; - var resource = { - attributes: tracer_objectSpread(tracer_objectSpread({}, ((_this$tracing$resourc = this.tracing.resource) === null || _this$tracing$resourc === void 0 ? void 0 : _this$tracing$resourc.attributes) || {}), ((_options$resource = options.resource) === null || _options$resource === void 0 ? void 0 : _options$resource.attributes) || {}) - }; - var span = new Span({ - resource: resource, - scope: this.tracing.scope, - session: (_this$tracing$session = this.tracing.session) === null || _this$tracing$session === void 0 ? void 0 : _this$tracing$session.session, - context: context, - spanContext: spanContext, - name: name, - kind: kind, - parentSpanId: parentSpanId, - spanProcessor: this.spanProcessor, - startTime: options.startTime, - usePerformance: options.usePerformance + if (['drop', 'dragstart'].includes(type)) { + var _evt$dataTransfer, _evt$dataTransfer2; + dropEffect = (_evt$dataTransfer = evt.dataTransfer) === null || _evt$dataTransfer === void 0 ? void 0 : _evt$dataTransfer.dropEffect; + effectAllowed = (_evt$dataTransfer2 = evt.dataTransfer) === null || _evt$dataTransfer2 === void 0 ? void 0 : _evt$dataTransfer2.effectAllowed; + } + this.telemeter.captureDragDrop({ + type: type, + isSynthetic: !evt.isTrusted, + element: elementString(evt.target), + dropEffect: dropEffect, + effectAllowed: effectAllowed, + kinds: JSON.stringify(kinds), + mediaTypes: JSON.stringify(mediaTypes), + timestamp: now() }); - return span; } - }]); -}(); -;// ./src/tracing/tracing.js -function tracing_typeof(o) { "@babel/helpers - typeof"; return tracing_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, tracing_typeof(o); } -function tracing_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function tracing_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? tracing_ownKeys(Object(t), !0).forEach(function (r) { tracing_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : tracing_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function tracing_defineProperty(e, r, t) { return (r = tracing_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function tracing_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function tracing_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, tracing_toPropertyKey(o.key), o); } } -function tracing_createClass(e, r, t) { return r && tracing_defineProperties(e.prototype, r), t && tracing_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function tracing_toPropertyKey(t) { var i = tracing_toPrimitive(t, "string"); return "symbol" == tracing_typeof(i) ? i : i + ""; } -function tracing_toPrimitive(t, r) { if ("object" != tracing_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != tracing_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - - - + /* + * Applies Rollbar telemetry scrubbing options to the dom input value. + * When replay options are present, applies those as well. + */ + }, { + key: "scrubInputValue", + value: function scrubInputValue(value, element, tagName, inputType) { + var mask = '******'; + if (inputType === 'password') { + return mask; + } + if (this.scrubTelemetryInputs) { + return mask; + } else { + var description = describeElement(element); + if (this.telemetryScrubber) { + if (this.telemetryScrubber(description)) { + return mask; + } + } else if (this.defaultValueScrubber(description)) { + return mask; + } + } + // Apply replay options regardless of other scrubbing + if (isMatchingElement(element, this.scrubClasses, this.scrubSelectors)) { + return mask; + } -var SPAN_KEY = createContextKey('Rollbar Context Key SPAN'); -var Tracing = /*#__PURE__*/function () { - function Tracing(gWindow, api, options) { - tracing_classCallCheck(this, Tracing); - this.api = api; - this.options = options; - this.window = gWindow; - if (this.window.sessionStorage) { - this.session = new Session(this, options); - } - this.createTracer(); - } - return tracing_createClass(Tracing, [{ - key: "configure", - value: function configure(options) { - // Options merge happens before configure is called, so we can just replace. - this.options = options; - } - }, { - key: "initSession", - value: function initSession() { - if (this.session) { - this.session.init(); + // This check is last since maskInputFn returns a modified value rather + // than a boolean, which would cause an early return even if the value + // was not scrubbed. + if (this.maskInputOptions[tagName.toLowerCase()] || this.maskInputOptions[inputType]) { + if (this.maskInputFn) { + return this.maskInputFn(value, element); + } else { + return mask; + } } + return value; } + + /* + * Uses the `input` event for everything except radio and checkbox inputs. + * For those, it uses the `change` event. + */ }, { - key: "sessionId", - get: function get() { - if (this.session) { - return this.session.session.id; + key: "handleInput", + value: function handleInput(evt) { + var _evt$target3, _evt$target4, _evt$target5, _evt$target6; + var type = evt.type; + var tagName = (_evt$target3 = evt.target) === null || _evt$target3 === void 0 ? void 0 : _evt$target3.tagName.toLowerCase(); + var value = (_evt$target4 = evt.target) === null || _evt$target4 === void 0 ? void 0 : _evt$target4.value; + var inputType = ((_evt$target5 = evt.target) === null || _evt$target5 === void 0 || (_evt$target5 = _evt$target5.attributes) === null || _evt$target5 === void 0 || (_evt$target5 = _evt$target5.type) === null || _evt$target5 === void 0 ? void 0 : _evt$target5.value) || ((_evt$target6 = evt.target) === null || _evt$target6 === void 0 ? void 0 : _evt$target6.type); + if (value !== undefined) { + value = this.scrubInputValue(value, evt.target, tagName, inputType); } - return null; + switch (type) { + case 'input': + if (['radio', 'checkbox'].includes(inputType)) return; + if (['select', 'textarea'].includes(tagName)) { + inputType = tagName; + } + break; + case 'change': + if (!['radio', 'checkbox'].includes(inputType)) return; + if (inputType === 'checkbox') { + var _evt$target7; + value = (_evt$target7 = evt.target) === null || _evt$target7 === void 0 ? void 0 : _evt$target7.checked; + } + break; + } + this.telemeter.captureInput({ + type: inputType, + isSynthetic: !evt.isTrusted, + element: elementString(evt.target), + value: value, + timestamp: now() + }); } }, { - key: "resource", - get: function get() { - var _this$options$payload, _this$options$payload2; - return { - attributes: tracing_objectSpread(tracing_objectSpread({}, this.options.resource || {}), {}, { - 'rollbar.environment': (_this$options$payload = (_this$options$payload2 = this.options.payload) === null || _this$options$payload2 === void 0 ? void 0 : _this$options$payload2.environment) !== null && _this$options$payload !== void 0 ? _this$options$payload : this.options.environment - }) - }; + key: "deinstrumentNavigation", + value: function deinstrumentNavigation() { + var chrome = this._window.chrome; + var chromePackagedApp = chrome && chrome.app && chrome.app.runtime; + // See https://github.com/angular/angular.js/pull/13945/files + var hasPushState = !chromePackagedApp && this._window.history && this._window.history.pushState; + if (!hasPushState) { + return; + } + restore(this.replacements, 'navigation'); } }, { - key: "scope", - get: function get() { - return { - name: 'rollbar-browser-js', - version: this.options.version - }; + key: "instrumentNavigation", + value: function instrumentNavigation() { + var chrome = this._window.chrome; + var chromePackagedApp = chrome && chrome.app && chrome.app.runtime; + // See https://github.com/angular/angular.js/pull/13945/files + var hasPushState = !chromePackagedApp && this._window.history && this._window.history.pushState; + if (!hasPushState) { + return; + } + var self = this; + utility_replace(this._window, 'onpopstate', function (orig) { + return function () { + var current = self._location.href; + self.handleUrlChange(self._lastHref, current); + if (orig) { + orig.apply(this, arguments); + } + }; + }, this.replacements, 'navigation'); + utility_replace(this._window.history, 'pushState', function (orig) { + return function () { + var url = arguments.length > 2 ? arguments[2] : undefined; + if (url) { + self.handleUrlChange(self._lastHref, String(url)); + } + return orig.apply(this, arguments); + }; + }, this.replacements, 'navigation'); } }, { - key: "idGen", - value: function idGen() { - var bytes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16; - return id.gen(bytes); + key: "handleUrlChange", + value: function handleUrlChange(from, to) { + var parsedHref = url_parse(this._location.href); + var parsedTo = url_parse(to); + var parsedFrom = url_parse(from); + this._lastHref = to; + if (parsedHref.protocol === parsedTo.protocol && parsedHref.host === parsedTo.host) { + to = parsedTo.path + (parsedTo.hash || ''); + } + if (parsedHref.protocol === parsedFrom.protocol && parsedHref.host === parsedFrom.host) { + from = parsedFrom.path + (parsedFrom.hash || ''); + } + this.telemeter.captureNavigation(from, to, null, now()); + this.rollbar.triggerReplay({ + type: 'navigation', + path: to + }); } }, { - key: "createTracer", - value: function createTracer() { - this.contextManager = new ContextManager(); - this.exporter = new SpanExporter(this.api, this.options); - this.spanProcessor = new SpanProcessor(this.exporter, this.options.tracing); - this.tracer = new Tracer(this, this.spanProcessor); + key: "instrumentConnectivity", + value: function instrumentConnectivity() { + var self = this; + this.addListener('connectivity', this._window, ['online', 'offline'], function (evt) { + return self.handleConnectivity(evt); + }); } }, { - key: "getTracer", - value: function getTracer() { - return this.tracer; + key: "handleConnectivity", + value: function handleConnectivity(evt) { + var type = evt.type; + this.telemeter.captureConnectivityChange({ + type: type, + isSynthetic: !evt.isTrusted, + timestamp: now() + }); } }, { - key: "addSpanTransform", - value: function addSpanTransform(transformFn) { - this.spanProcessor.addTransform(transformFn); + key: "handleCspEvent", + value: function handleCspEvent(cspEvent) { + var message = 'Security Policy Violation: ' + 'blockedURI: ' + cspEvent.blockedURI + ', ' + 'violatedDirective: ' + cspEvent.violatedDirective + ', ' + 'effectiveDirective: ' + cspEvent.effectiveDirective + ', '; + if (cspEvent.sourceFile) { + message += 'location: ' + cspEvent.sourceFile + ', ' + 'line: ' + cspEvent.lineNumber + ', ' + 'col: ' + cspEvent.columnNumber + ', '; + } + message += 'originalPolicy: ' + cspEvent.originalPolicy; + this.telemeter.captureLog(message, 'error', null, now()); + this.handleCspError(message); } }, { - key: "getSpan", - value: function getSpan() { - var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.contextManager.active(); - return context.getValue(SPAN_KEY); + key: "handleCspError", + value: function handleCspError(message) { + if (this.autoInstrument.errorOnContentSecurityPolicy) { + this.rollbar.error(message); + } } }, { - key: "setSpan", - value: function setSpan() { - var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.contextManager.active(); - var span = arguments.length > 1 ? arguments[1] : undefined; - return context.setValue(SPAN_KEY, span); + key: "deinstrumentContentSecurityPolicy", + value: function deinstrumentContentSecurityPolicy() { + this.removeListeners('contentsecuritypolicy'); } }, { - key: "startSpan", - value: function startSpan(name) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.contextManager.active(); - return this.tracer.startSpan(name, options, context); + key: "instrumentContentSecurityPolicy", + value: function instrumentContentSecurityPolicy() { + if (!('addEventListener' in this._document)) { + return; + } + var cspHandler = this.handleCspEvent.bind(this); + this.addListener('contentsecuritypolicy', this._document, ['securitypolicyviolation'], cspHandler); } }, { - key: "with", - value: function _with(context, fn, thisArg) { - var _this$contextManager; - for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { - args[_key - 3] = arguments[_key]; + key: "addListener", + value: function addListener(section, obj, types, handler) { + var _this2 = this; + if (obj.addEventListener) { + var _iterator7 = telemetry_createForOfIteratorHelper(types), + _step7; + try { + var _loop = function _loop() { + var t = _step7.value; + var options = { + capture: true, + passive: true + }; + obj.addEventListener(t, handler, options, true); + _this2.eventRemovers[section].push(function () { + obj.removeEventListener(t, handler, options); + }); + }; + for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { + _loop(); + } + } catch (err) { + _iterator7.e(err); + } finally { + _iterator7.f(); + } } - return (_this$contextManager = this.contextManager).with.apply(_this$contextManager, [context, fn, thisArg].concat(args)); } }, { - key: "withSpan", - value: function withSpan(name, options, fn, thisArg) { - var span = this.startSpan(name, options); - return this.with(this.setSpan(this.contextManager.active(), span), fn, thisArg, span); + key: "removeListeners", + value: function removeListeners(section) { + var r; + while (this.eventRemovers[section].length) { + r = this.eventRemovers[section].shift(); + r(); + } } }]); }(); +function _isUrlObject(input) { + return typeof URL !== 'undefined' && input instanceof URL; +} +/* harmony default export */ var browser_telemetry = (Instrumenter); +;// ./src/browser/wrapGlobals.js +function wrapGlobals(window, handler, shim) { + if (!window) { + return; + } + // Adapted from https://github.com/bugsnag/bugsnag-js + var globals = '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'.split(','); + var i, global; + for (i = 0; i < globals.length; ++i) { + global = globals[i]; + if (window[global] && window[global].prototype) { + _extendListenerPrototype(handler, window[global].prototype, shim); + } + } +} +function _extendListenerPrototype(handler, prototype, shim) { + if (hasOwn(prototype, 'addEventListener')) { + var oldAddEventListener = prototype.addEventListener; + while (oldAddEventListener._rollbarOldAdd && oldAddEventListener.belongsToShim) { + oldAddEventListener = oldAddEventListener._rollbarOldAdd; + } + var addFn = function addFn(event, callback, bubble) { + oldAddEventListener.call(this, event, handler.wrap(callback), bubble); + }; + addFn._rollbarOldAdd = oldAddEventListener; + addFn.belongsToShim = shim; + prototype.addEventListener = addFn; + var oldRemoveEventListener = prototype.removeEventListener; + while (oldRemoveEventListener._rollbarOldRemove && oldRemoveEventListener.belongsToShim) { + oldRemoveEventListener = oldRemoveEventListener._rollbarOldRemove; + } + var removeFn = function removeFn(event, callback, bubble) { + oldRemoveEventListener.call(this, event, callback && callback._rollbar_wrapped || callback, bubble); + }; + removeFn._rollbarOldRemove = oldRemoveEventListener; + removeFn.belongsToShim = shim; + prototype.removeEventListener = removeFn; + } +} +/* harmony default export */ var browser_wrapGlobals = (wrapGlobals); ;// ./src/browser/rollbar.js diff --git a/dist/rollbar.named-amd.js.map b/dist/rollbar.named-amd.js.map index 2acbb6c9d..210b1022a 100644 --- a/dist/rollbar.named-amd.js.map +++ b/dist/rollbar.named-amd.js.map @@ -1 +1 @@ -{"version":3,"file":"rollbar.named-amd.js","mappings":"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","sources":["webpack://rollbar/webpack/bootstrap","webpack://rollbar/webpack/runtime/define property getters","webpack://rollbar/webpack/runtime/hasOwnProperty shorthand","webpack://rollbar/webpack/runtime/make namespace object","webpack://rollbar/./src/merge.js","webpack://rollbar/./src/utility.js","webpack://rollbar/./src/rateLimiter.js","webpack://rollbar/./src/queue.js","webpack://rollbar/./src/notifier.js","webpack://rollbar/./src/rollbar.js","webpack://rollbar/./src/apiUtility.js","webpack://rollbar/./src/api.js","webpack://rollbar/./src/logger.js","webpack://rollbar/./src/browser/globalSetup.js","webpack://rollbar/./src/browser/transport/fetch.js","webpack://rollbar/./src/browser/transport/xhr.js","webpack://rollbar/./src/browser/transport.js","webpack://rollbar/./src/browser/url.js","webpack://rollbar/./node_modules/error-stack-parser-es/dist/lite.mjs","webpack://rollbar/./node_modules/error-stack-parser-es/dist/index.mjs","webpack://rollbar/./src/errorParser.js","webpack://rollbar/./src/browser/transforms.js","webpack://rollbar/./src/transforms.js","webpack://rollbar/./src/browser/predicates.js","webpack://rollbar/./src/predicates.js","webpack://rollbar/./src/browser/replay/defaults.js","webpack://rollbar/./src/tracing/defaults.js","webpack://rollbar/./src/defaults.js","webpack://rollbar/./src/browser/defaults.js","webpack://rollbar/./src/browser/core.js","webpack://rollbar/./src/telemetry.js","webpack://rollbar/./src/utility/headers.js","webpack://rollbar/./src/utility/replace.js","webpack://rollbar/./src/utility/traverse.js","webpack://rollbar/./src/scrub.js","webpack://rollbar/./src/browser/domUtility.js","webpack://rollbar/./src/browser/telemetry.js","webpack://rollbar/./src/browser/wrapGlobals.js","webpack://rollbar/./src/truncation.js","webpack://rollbar/./src/tracing/context.js","webpack://rollbar/./src/tracing/contextManager.js","webpack://rollbar/./src/tracing/id.js","webpack://rollbar/./src/tracing/session.js","webpack://rollbar/./src/tracing/hrtime.js","webpack://rollbar/./src/tracing/exporter.js","webpack://rollbar/./src/tracing/spanProcessor.js","webpack://rollbar/./src/tracing/span.js","webpack://rollbar/./src/tracing/tracer.js","webpack://rollbar/./src/tracing/tracing.js","webpack://rollbar/./src/browser/rollbar.js","webpack://rollbar/./src/browser/bundles/rollbar.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(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__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\n\nvar isPlainObject = function isPlainObject(obj) {\n if (!obj || toStr.call(obj) !== '[object Object]') {\n return false;\n }\n\n var hasOwnConstructor = hasOwn.call(obj, 'constructor');\n var hasIsPrototypeOf =\n obj.constructor &&\n obj.constructor.prototype &&\n hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n // Not own constructor property must be Object\n if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n return false;\n }\n\n // Own properties are enumerated firstly, so to speed up,\n // if last one is own, then all properties are own.\n var key;\n for (key in obj) {\n /**/\n }\n\n return typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\nfunction merge() {\n var i,\n src,\n copy,\n clone,\n name,\n result = Object.create(null), // no prototype pollution on Object\n current = null,\n length = arguments.length;\n\n for (i = 0; i < length; i++) {\n current = arguments[i];\n if (current == null) {\n continue;\n }\n\n for (name in current) {\n src = result[name];\n copy = current[name];\n if (result !== copy) {\n if (copy && isPlainObject(copy)) {\n clone = src && isPlainObject(src) ? src : {};\n result[name] = merge(clone, copy);\n } else if (typeof copy !== 'undefined') {\n result[name] = copy;\n }\n }\n }\n }\n return result;\n}\n\nexport default merge;\n","import merge from './merge.js';\n\n/*\n * isType - Given a Javascript value and a string, returns true if the type of the value matches the\n * given string.\n *\n * @param x - any value\n * @param t - a lowercase string containing one of the following type names:\n * - undefined\n * - null\n * - error\n * - number\n * - boolean\n * - string\n * - symbol\n * - function\n * - object\n * - array\n * @returns true if x is of type t, otherwise false\n */\nfunction isType(x, t) {\n return t === typeName(x);\n}\n\n/*\n * typeName - Given a Javascript value, returns the type of the object as a string\n */\nfunction typeName(x) {\n var name = typeof x;\n if (name !== 'object') {\n return name;\n }\n if (!x) {\n return 'null';\n }\n if (x instanceof Error) {\n return 'error';\n }\n return {}.toString\n .call(x)\n .match(/\\s([a-zA-Z]+)/)[1]\n .toLowerCase();\n}\n\n/* isFunction - a convenience function for checking if a value is a function\n *\n * @param f - any value\n * @returns true if f is a function, otherwise false\n */\nfunction isFunction(f) {\n return isType(f, 'function');\n}\n\n/* isNativeFunction - a convenience function for checking if a value is a native JS function\n *\n * @param f - any value\n * @returns true if f is a native JS function, otherwise false\n */\nfunction isNativeFunction(f) {\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n var funcMatchString = Function.prototype.toString\n .call(Object.prototype.hasOwnProperty)\n .replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?');\n var reIsNative = RegExp('^' + funcMatchString + '$');\n return isObject(f) && reIsNative.test(f);\n}\n\n/* isObject - Checks if the argument is an object\n *\n * @param value - any value\n * @returns true is value is an object function is an object)\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/* isString - Checks if the argument is a string\n *\n * @param value - any value\n * @returns true if value is a string\n */\nfunction isString(value) {\n return typeof value === 'string' || value instanceof String;\n}\n\n/**\n * isFiniteNumber - determines whether the passed value is a finite number\n *\n * @param {*} n - any value\n * @returns true if value is a finite number\n */\nfunction isFiniteNumber(n) {\n return Number.isFinite(n);\n}\n\n/*\n * isDefined - a convenience function for checking if a value is not equal to undefined\n *\n * @param u - any value\n * @returns true if u is anything other than undefined\n */\nfunction isDefined(u) {\n return !isType(u, 'undefined');\n}\n\n/*\n * isIterable - convenience function for checking if a value can be iterated, essentially\n * whether it is an object or an array.\n *\n * @param i - any value\n * @returns true if i is an object or an array as determined by `typeName`\n */\nfunction isIterable(i) {\n var type = typeName(i);\n return type === 'object' || type === 'array';\n}\n\n/*\n * isError - convenience function for checking if a value is of an error type\n *\n * @param e - any value\n * @returns true if e is an error\n */\nfunction isError(e) {\n // Detect both Error and Firefox Exception type\n return isType(e, 'error') || isType(e, 'exception');\n}\n\n/* isPromise - a convenience function for checking if a value is a promise\n *\n * @param p - any value\n * @returns true if f is a function, otherwise false\n */\nfunction isPromise(p) {\n return isObject(p) && isType(p.then, 'function');\n}\n\n/**\n * isBrowser - a convenience function for checking if the code is running in a browser\n *\n * @returns true if the code is running in a browser environment\n */\nfunction isBrowser() {\n return typeof window !== 'undefined';\n}\n\nfunction redact() {\n return '********';\n}\n\n// from http://stackoverflow.com/a/8809472/1138191\nfunction uuid4() {\n var d = now();\n var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(\n /[xy]/g,\n function (c) {\n var r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : (r & 0x7) | 0x8).toString(16);\n },\n );\n return uuid;\n}\n\nvar LEVELS = {\n debug: 0,\n info: 1,\n warning: 2,\n error: 3,\n critical: 4,\n};\n\nfunction sanitizeHref(url) {\n try {\n const urlObject = new URL(url);\n if (urlObject.password) {\n urlObject.password = redact();\n }\n if (urlObject.search) {\n urlObject.search = redact();\n }\n return urlObject.toString();\n } catch (_) {\n return url; // Return original URL if parsing fails\n }\n}\n\nfunction sanitizeUrl(url) {\n var baseUrlParts = parseUri(url);\n if (!baseUrlParts) {\n return '(unknown)';\n }\n\n // remove a trailing # if there is no anchor\n if (baseUrlParts.anchor === '') {\n baseUrlParts.source = baseUrlParts.source.replace('#', '');\n }\n\n url = baseUrlParts.source.replace('?' + baseUrlParts.query, '');\n return url;\n}\n\nvar parseUriOptions = {\n strictMode: false,\n key: [\n 'source',\n 'protocol',\n 'authority',\n 'userInfo',\n 'user',\n 'password',\n 'host',\n 'port',\n 'relative',\n 'path',\n 'directory',\n 'file',\n 'query',\n 'anchor',\n ],\n q: {\n name: 'queryKey',\n parser: /(?:^|&)([^&=]*)=?([^&]*)/g,\n },\n parser: {\n strict:\n /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?))?((((?:[^?#\\/]*\\/)*)([^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n loose:\n /^(?:(?![^:@]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n },\n};\n\nfunction parseUri(str) {\n if (!isType(str, 'string')) {\n return undefined;\n }\n\n var o = parseUriOptions;\n var m = o.parser[o.strictMode ? 'strict' : 'loose'].exec(str);\n var uri = {};\n\n for (var i = 0, l = o.key.length; i < l; ++i) {\n uri[o.key[i]] = m[i] || '';\n }\n\n uri[o.q.name] = {};\n uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {\n if ($1) {\n uri[o.q.name][$1] = $2;\n }\n });\n\n return uri;\n}\n\nfunction addParamsAndAccessTokenToPath(accessToken, options, params) {\n params = params || {};\n params.access_token = accessToken;\n var paramsArray = [];\n var k;\n for (k in params) {\n if (Object.prototype.hasOwnProperty.call(params, k)) {\n paramsArray.push([k, params[k]].join('='));\n }\n }\n var query = '?' + paramsArray.sort().join('&');\n\n options = options || {};\n options.path = options.path || '';\n var qs = options.path.indexOf('?');\n var h = options.path.indexOf('#');\n var p;\n if (qs !== -1 && (h === -1 || h > qs)) {\n p = options.path;\n options.path = p.substring(0, qs) + query + '&' + p.substring(qs + 1);\n } else {\n if (h !== -1) {\n p = options.path;\n options.path = p.substring(0, h) + query + p.substring(h);\n } else {\n options.path = options.path + query;\n }\n }\n}\n\nfunction formatUrl(u, protocol) {\n protocol = protocol || u.protocol;\n if (!protocol && u.port) {\n if (u.port === 80) {\n protocol = 'http:';\n } else if (u.port === 443) {\n protocol = 'https:';\n }\n }\n protocol = protocol || 'https:';\n\n if (!u.hostname) {\n return null;\n }\n var result = protocol + '//' + u.hostname;\n if (u.port) {\n result = result + ':' + u.port;\n }\n if (u.path) {\n result = result + u.path;\n }\n return result;\n}\n\nfunction stringify(obj, backup) {\n var value, error;\n try {\n value = JSON.stringify(obj);\n } catch (jsonError) {\n if (backup && isFunction(backup)) {\n try {\n value = backup(obj);\n } catch (backupError) {\n error = backupError;\n }\n } else {\n error = jsonError;\n }\n }\n return { error: error, value: value };\n}\n\nfunction maxByteSize(string) {\n // The transport will use utf-8, so assume utf-8 encoding.\n //\n // This minimal implementation will accurately count bytes for all UCS-2 and\n // single code point UTF-16. If presented with multi code point UTF-16,\n // which should be rare, it will safely overcount, not undercount.\n //\n // While robust utf-8 encoders exist, this is far smaller and far more performant.\n // For quickly counting payload size for truncation, smaller is better.\n\n var count = 0;\n var length = string.length;\n\n for (var i = 0; i < length; i++) {\n var code = string.charCodeAt(i);\n if (code < 128) {\n // up to 7 bits\n count = count + 1;\n } else if (code < 2048) {\n // up to 11 bits\n count = count + 2;\n } else if (code < 65536) {\n // up to 16 bits\n count = count + 3;\n }\n }\n\n return count;\n}\n\nfunction jsonParse(s) {\n var value, error;\n try {\n value = JSON.parse(s);\n } catch (e) {\n error = e;\n }\n return { error: error, value: value };\n}\n\nfunction makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n mode,\n backupMessage,\n errorParser,\n) {\n var location = {\n url: url || '',\n line: lineno,\n column: colno,\n };\n location.func = errorParser.guessFunctionName(location.url, location.line);\n location.context = errorParser.gatherContext(location.url, location.line);\n var href =\n typeof document !== 'undefined' &&\n document &&\n document.location &&\n document.location.href;\n var useragent =\n typeof window !== 'undefined' &&\n window &&\n window.navigator &&\n window.navigator.userAgent;\n return {\n mode: mode,\n message: error ? String(error) : message || backupMessage,\n url: href,\n stack: [location],\n useragent: useragent,\n };\n}\n\nfunction wrapCallback(logger, f) {\n return function (err, resp) {\n try {\n f(err, resp);\n } catch (e) {\n logger.error(e);\n }\n };\n}\n\nfunction nonCircularClone(obj) {\n var seen = [obj];\n\n function clone(obj, seen) {\n var value,\n name,\n newSeen,\n result = {};\n\n try {\n for (name in obj) {\n value = obj[name];\n\n if (value && (isType(value, 'object') || isType(value, 'array'))) {\n if (seen.includes(value)) {\n result[name] = 'Removed circular reference: ' + typeName(value);\n } else {\n newSeen = seen.slice();\n newSeen.push(value);\n result[name] = clone(value, newSeen);\n }\n continue;\n }\n\n result[name] = value;\n }\n } catch (e) {\n result = 'Failed cloning custom data: ' + e.message;\n }\n return result;\n }\n return clone(obj, seen);\n}\n\nfunction createItem(args, logger, notifier, requestKeys, lambdaContext) {\n var message, err, custom, callback, request;\n var arg;\n var extraArgs = [];\n var diagnostic = {};\n var argTypes = [];\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n argTypes.push(typ);\n switch (typ) {\n case 'undefined':\n break;\n case 'string':\n message ? extraArgs.push(arg) : (message = arg);\n break;\n case 'function':\n callback = wrapCallback(logger, arg);\n break;\n case 'date':\n extraArgs.push(arg);\n break;\n case 'error':\n case 'domexception':\n case 'exception': // Firefox Exception type\n err ? extraArgs.push(arg) : (err = arg);\n break;\n case 'object':\n case 'array':\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n err ? extraArgs.push(arg) : (err = arg);\n break;\n }\n if (requestKeys && typ === 'object' && !request) {\n for (var j = 0, len = requestKeys.length; j < len; ++j) {\n if (arg[requestKeys[j]] !== undefined) {\n request = arg;\n break;\n }\n }\n if (request) {\n break;\n }\n }\n custom ? extraArgs.push(arg) : (custom = arg);\n break;\n default:\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n err ? extraArgs.push(arg) : (err = arg);\n break;\n }\n extraArgs.push(arg);\n }\n }\n\n // if custom is an array this turns it into an object with integer keys\n if (custom) custom = nonCircularClone(custom);\n\n if (extraArgs.length > 0) {\n if (!custom) custom = nonCircularClone({});\n custom.extraArgs = nonCircularClone(extraArgs);\n }\n\n var item = {\n message: message,\n err: err,\n custom: custom,\n timestamp: now(),\n callback: callback,\n notifier: notifier,\n diagnostic: diagnostic,\n uuid: uuid4(),\n };\n\n item.data = item.data || {};\n\n setCustomItemKeys(item, custom);\n\n if (requestKeys && request) {\n item.request = request;\n }\n if (lambdaContext) {\n item.lambdaContext = lambdaContext;\n }\n item._originalArgs = args;\n item.diagnostic.original_arg_types = argTypes;\n return item;\n}\n\nfunction setCustomItemKeys(item, custom) {\n if (custom && custom.level !== undefined) {\n item.level = custom.level;\n delete custom.level;\n }\n if (custom && custom.skipFrames !== undefined) {\n item.skipFrames = custom.skipFrames;\n delete custom.skipFrames;\n }\n}\n\nfunction addErrorContext(item, errors) {\n var custom = item.data.custom || {};\n var contextAdded = false;\n\n try {\n for (var i = 0; i < errors.length; ++i) {\n if (errors[i].hasOwnProperty('rollbarContext')) {\n custom = merge(custom, nonCircularClone(errors[i].rollbarContext));\n contextAdded = true;\n }\n }\n\n // Avoid adding an empty object to the data.\n if (contextAdded) {\n item.data.custom = custom;\n }\n } catch (e) {\n item.diagnostic.error_context = 'Failed: ' + e.message;\n }\n}\n\nvar TELEMETRY_TYPES = [\n 'log',\n 'network',\n 'dom',\n 'navigation',\n 'error',\n 'manual',\n];\nvar TELEMETRY_LEVELS = ['critical', 'error', 'warning', 'info', 'debug'];\n\nfunction arrayIncludes(arr, val) {\n for (var k = 0; k < arr.length; ++k) {\n if (arr[k] === val) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction createTelemetryEvent(args) {\n var type, metadata, level;\n var arg;\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n switch (typ) {\n case 'string':\n if (!type && arrayIncludes(TELEMETRY_TYPES, arg)) {\n type = arg;\n } else if (!level && arrayIncludes(TELEMETRY_LEVELS, arg)) {\n level = arg;\n }\n break;\n case 'object':\n metadata = arg;\n break;\n default:\n break;\n }\n }\n var event = {\n type: type || 'manual',\n metadata: metadata || {},\n level: level,\n };\n\n return event;\n}\n\nfunction addItemAttributes(itemData, attributes) {\n itemData.attributes = itemData.attributes || [];\n for (const a of attributes) {\n if (a.value === undefined) {\n continue;\n }\n itemData.attributes.push(a);\n }\n}\n\n/*\n * get - given an obj/array and a keypath, return the value at that keypath or\n * undefined if not possible.\n *\n * @param obj - an object or array\n * @param path - a string of keys separated by '.' such as 'plugin.jquery.0.message'\n * which would correspond to 42 in `{plugin: {jquery: [{message: 42}]}}`\n */\nfunction get(obj, path) {\n if (!obj) {\n return undefined;\n }\n var keys = path.split('.');\n var result = obj;\n try {\n for (var i = 0, len = keys.length; i < len; ++i) {\n result = result[keys[i]];\n }\n } catch (e) {\n result = undefined;\n }\n return result;\n}\n\nfunction set(obj, path, value) {\n if (!obj) {\n return;\n }\n\n // Prevent prototype pollution by setting the prototype to null.\n Object.setPrototypeOf(obj, null);\n\n var keys = path.split('.');\n var len = keys.length;\n if (len < 1) {\n return;\n }\n if (len === 1) {\n obj[keys[0]] = value;\n return;\n }\n try {\n var temp = obj[keys[0]] || {};\n var replacement = temp;\n for (var i = 1; i < len - 1; ++i) {\n temp[keys[i]] = temp[keys[i]] || {};\n temp = temp[keys[i]];\n }\n temp[keys[len - 1]] = value;\n obj[keys[0]] = replacement;\n } catch (e) {\n return;\n }\n}\n\nfunction formatArgsAsString(args) {\n var i, len, arg;\n var result = [];\n for (i = 0, len = args.length; i < len; ++i) {\n arg = args[i];\n switch (typeName(arg)) {\n case 'object':\n arg = stringify(arg);\n arg = arg.error || arg.value;\n if (arg.length > 500) {\n arg = arg.substr(0, 497) + '...';\n }\n break;\n case 'null':\n arg = 'null';\n break;\n case 'undefined':\n arg = 'undefined';\n break;\n case 'symbol':\n arg = arg.toString();\n break;\n }\n result.push(arg);\n }\n return result.join(' ');\n}\n\nfunction now() {\n if (Date.now) {\n return +Date.now();\n }\n return +new Date();\n}\n\nfunction filterIp(requestData, captureIp) {\n if (!requestData || !requestData['user_ip'] || captureIp === true) {\n return;\n }\n var newIp = requestData['user_ip'];\n if (!captureIp) {\n newIp = null;\n } else {\n try {\n var parts;\n if (newIp.indexOf('.') !== -1) {\n parts = newIp.split('.');\n parts.pop();\n parts.push('0');\n newIp = parts.join('.');\n } else if (newIp.indexOf(':') !== -1) {\n parts = newIp.split(':');\n if (parts.length > 2) {\n var beginning = parts.slice(0, 3);\n var slashIdx = beginning[2].indexOf('/');\n if (slashIdx !== -1) {\n beginning[2] = beginning[2].substring(0, slashIdx);\n }\n var terminal = '0000:0000:0000:0000:0000';\n newIp = beginning.concat(terminal).join(':');\n }\n } else {\n newIp = null;\n }\n } catch (e) {\n newIp = null;\n }\n }\n requestData['user_ip'] = newIp;\n}\n\nfunction handleOptions(current, input, payload, logger) {\n var result = merge(current, input, payload);\n result = updateDeprecatedOptions(result, logger);\n if (!input || input.overwriteScrubFields) {\n return result;\n }\n if (input.scrubFields) {\n result.scrubFields = (current.scrubFields || []).concat(input.scrubFields);\n }\n return result;\n}\n\nfunction updateDeprecatedOptions(options, logger) {\n if (options.hostWhiteList && !options.hostSafeList) {\n options.hostSafeList = options.hostWhiteList;\n options.hostWhiteList = undefined;\n logger && logger.log('hostWhiteList is deprecated. Use hostSafeList.');\n }\n if (options.hostBlackList && !options.hostBlockList) {\n options.hostBlockList = options.hostBlackList;\n options.hostBlackList = undefined;\n logger && logger.log('hostBlackList is deprecated. Use hostBlockList.');\n }\n return options;\n}\n\nexport {\n addParamsAndAccessTokenToPath,\n createItem,\n addErrorContext,\n createTelemetryEvent,\n addItemAttributes,\n filterIp,\n formatArgsAsString,\n formatUrl,\n get,\n handleOptions,\n isError,\n isFiniteNumber,\n isFunction,\n isIterable,\n isNativeFunction,\n isObject,\n isString,\n isType,\n isPromise,\n isBrowser,\n jsonParse,\n LEVELS,\n makeUnhandledStackInfo,\n merge,\n now,\n redact,\n sanitizeHref,\n sanitizeUrl,\n set,\n stringify,\n maxByteSize,\n typeName,\n uuid4,\n};\n","import * as _ from './utility.js';\n\n/*\n * RateLimiter - an object that encapsulates the logic for counting items sent to Rollbar\n *\n * @param options - the same options that are accepted by configureGlobal offered as a convenience\n */\nfunction RateLimiter(options) {\n this.startTime = _.now();\n this.counter = 0;\n this.perMinCounter = 0;\n this.platform = null;\n this.platformOptions = {};\n this.configureGlobal(options);\n}\n\nRateLimiter.globalSettings = {\n startTime: _.now(),\n maxItems: undefined,\n itemsPerMinute: undefined,\n};\n\n/*\n * configureGlobal - set the global rate limiter options\n *\n * @param options - Only the following values are recognized:\n * startTime: a timestamp of the form returned by (new Date()).getTime()\n * maxItems: the maximum items\n * itemsPerMinute: the max number of items to send in a given minute\n */\nRateLimiter.prototype.configureGlobal = function (options) {\n if (options.startTime !== undefined) {\n RateLimiter.globalSettings.startTime = options.startTime;\n }\n if (options.maxItems !== undefined) {\n RateLimiter.globalSettings.maxItems = options.maxItems;\n }\n if (options.itemsPerMinute !== undefined) {\n RateLimiter.globalSettings.itemsPerMinute = options.itemsPerMinute;\n }\n};\n\n/*\n * shouldSend - determine if we should send a given item based on rate limit settings\n *\n * @param item - the item we are about to send\n * @returns An object with the following structure:\n * error: (Error|null)\n * shouldSend: bool\n * payload: (Object|null)\n * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and\n * exactly one of error or payload will be non-null. If error is non-null, the returned Error will\n * describe the situation, but it means that we were already over a rate limit (either globally or\n * per minute) when this item was checked. If error is null, and therefore payload is non-null, it\n * means this item put us over the global rate limit and the payload should be sent to Rollbar in\n * place of the passed in item.\n */\nRateLimiter.prototype.shouldSend = function (item, now) {\n now = now || _.now();\n var elapsedTime = now - this.startTime;\n if (elapsedTime < 0 || elapsedTime >= 60000) {\n this.startTime = now;\n this.perMinCounter = 0;\n }\n\n var globalRateLimit = RateLimiter.globalSettings.maxItems;\n var globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute;\n\n if (checkRate(item, globalRateLimit, this.counter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n globalRateLimit + ' max items reached',\n false,\n );\n } else if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n globalRateLimitPerMin + ' items per minute reached',\n false,\n );\n }\n this.counter++;\n this.perMinCounter++;\n\n var shouldSend = !checkRate(item, globalRateLimit, this.counter);\n var perMinute = shouldSend;\n shouldSend =\n shouldSend && !checkRate(item, globalRateLimitPerMin, this.perMinCounter);\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n null,\n shouldSend,\n globalRateLimit,\n globalRateLimitPerMin,\n perMinute,\n );\n};\n\nRateLimiter.prototype.setPlatformOptions = function (platform, options) {\n this.platform = platform;\n this.platformOptions = options;\n};\n\n/* Helpers */\n\nfunction checkRate(item, limit, counter) {\n return !item.ignoreRateLimit && limit >= 1 && counter > limit;\n}\n\nfunction shouldSendValue(\n platform,\n options,\n error,\n shouldSend,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n var payload = null;\n if (error) {\n error = new Error(error);\n }\n if (!error && !shouldSend) {\n payload = rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n );\n }\n return { error: error, shouldSend: shouldSend, payload: payload };\n}\n\nfunction rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n var environment =\n options.environment || (options.payload && options.payload.environment);\n var msg;\n if (perMinute) {\n msg = 'item per minute limit reached, ignoring errors until timeout';\n } else {\n msg = 'maxItems has been hit, ignoring errors until reset.';\n }\n var item = {\n body: {\n message: {\n body: msg,\n extra: {\n maxItems: globalRateLimit,\n itemsPerMinute: limitPerMin,\n },\n },\n },\n language: 'javascript',\n environment: environment,\n notifier: {\n version:\n (options.notifier && options.notifier.version) || options.version,\n },\n };\n if (platform === 'browser') {\n item.platform = 'browser';\n item.framework = 'browser-js';\n item.notifier.name = 'rollbar-browser-js';\n } else if (platform === 'server') {\n item.framework = options.framework || 'node-js';\n item.notifier.name = options.notifier.name;\n } else if (platform === 'react-native') {\n item.framework = options.framework || 'react-native';\n item.notifier.name = options.notifier.name;\n }\n return item;\n}\n\nexport default RateLimiter;\n","import * as _ from './utility.js';\n\n/**\n * Queue - an object which handles which handles a queue of items to be sent to Rollbar.\n * This object handles rate limiting via a passed in rate limiter, retries based on connection\n * errors, and filtering of items based on a set of configurable predicates. The communication to\n * the backend is performed via a given API object.\n */\nclass Queue {\n /**\n * @param rateLimiter - An object which conforms to the interface\n * `rateLimiter.shouldSend(item) -> bool`\n * @param api - An object which conforms to the interface\n * `api.postItem(payload, function(err, response))`\n * @param logger - An object used to log verbose messages if desired\n * @param options - see `Queue.prototype.configure`\n * @param replay - Optional `Replay` for coordinating session replay with error occurrences\n */\n constructor(rateLimiter, api, logger, options, replay) {\n this.rateLimiter = rateLimiter;\n this.api = api;\n this.logger = logger;\n this.options = options;\n this.replay = replay;\n this.predicates = [];\n this.pendingItems = [];\n this.pendingRequests = [];\n this.retryQueue = [];\n this.retryHandle = null;\n this.waitCallback = null;\n this.waitIntervalID = null;\n }\n\n /**\n * configure - updates the options this queue uses\n *\n * @param options\n */\n configure(options) {\n this.api?.configure(options);\n const oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n return this;\n }\n\n /**\n * addPredicate - adds a predicate to the end of the list of predicates for this queue\n *\n * @param predicate - function(item, options) -> (bool|{err: Error})\n * Returning true means that this predicate passes and the item is okay to go on the queue\n * Returning false means do not add the item to the queue, but it is not an error\n * Returning {err: Error} means do not add the item to the queue, and the given error explains why\n * Returning {err: undefined} is equivalent to returning true but don't do that\n */\n addPredicate(predicate) {\n if (_.isFunction(predicate)) {\n this.predicates.push(predicate);\n }\n return this;\n }\n\n addPendingItem(item) {\n this.pendingItems.push(item);\n }\n\n removePendingItem(item) {\n const idx = this.pendingItems.indexOf(item);\n if (idx !== -1) {\n this.pendingItems.splice(idx, 1);\n }\n }\n\n /**\n * addItem - Send an item to the Rollbar API if all of the predicates are satisfied\n *\n * @param item - Item instance with the payload to send to the backend\n * @param callback - function(error, repsonse) which will be called with the response from the API\n * in the case of a success, otherwise response will be null and error will have a value. If both\n * error and response are null then the item was stopped by a predicate which did not consider this\n * to be an error condition, but nonetheless did not send the item to the API.\n * @param originalError - The original error before any transformations that is to be logged if any\n * @param originalItem - The original item before transforms, used in pendingItems queue\n */\n addItem(item, callback, originalError, originalItem) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {\n return;\n };\n }\n const data = item.data;\n const predicateResult = this._applyPredicates(data);\n if (predicateResult.stop) {\n this.removePendingItem(originalItem);\n callback(predicateResult.err);\n return;\n }\n this._maybeLog(data, originalError);\n this.removePendingItem(originalItem);\n if (!this.options.transmit) {\n callback(new Error('Transmit disabled'));\n return;\n }\n\n if (this.replay && data.body) {\n item.replayId = this.replay.capture(null, data.uuid, {\n type: 'occurrence',\n level: item.level,\n });\n\n if (item.replayId) {\n _.addItemAttributes(item.data, [\n { key: 'replay_id', value: item.replayId },\n ]);\n }\n }\n\n this.pendingRequests.push(data);\n try {\n this._makeApiRequest(data, (err, resp, headers) => {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers);\n }\n\n callback(err, resp);\n });\n } catch (err) {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay?.discard(item.replayId);\n }\n\n callback(err);\n }\n }\n\n /**\n * wait - Stop any further errors from being added to the queue, and get called back when all items\n * currently processing have finished sending to the backend.\n *\n * @param callback - function() called when all pending items have been sent\n */\n wait(callback) {\n if (!_.isFunction(callback)) {\n return;\n }\n this.waitCallback = callback;\n if (this._maybeCallWait()) {\n return;\n }\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitIntervalID = setInterval(() => {\n this._maybeCallWait();\n }, 500);\n }\n\n /**\n * Sequentially applies the predicates that have been added to the queue to the\n * given item with the currently configured options.\n *\n * @param item - An item in the queue\n * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue,\n * the error value should be passed up to a callbak if we are stopping.\n */\n _applyPredicates(item) {\n let p = null;\n for (let i = 0, len = this.predicates.length; i < len; i++) {\n p = this.predicates[i](item, this.options);\n if (!p || p.err !== undefined) {\n return { stop: true, err: p.err };\n }\n }\n return { stop: false, err: null };\n }\n\n /**\n * Send an item to Rollbar, callback when done, if there is an error make an\n * effort to retry if we are configured to do so.\n *\n * @param item - an item ready to send to the backend\n * @param callback - function(err, response)\n */\n _makeApiRequest(item, callback) {\n const rateLimitResponse = this.rateLimiter.shouldSend(item);\n if (rateLimitResponse.shouldSend) {\n this.api.postItem(item, (err, resp, headers) => {\n if (err) {\n this._maybeRetry(err, item, callback);\n } else {\n callback(err, resp, headers);\n }\n });\n } else if (rateLimitResponse.error) {\n callback(rateLimitResponse.error);\n } else {\n this.api.postItem(rateLimitResponse.payload, callback);\n }\n }\n\n // These are errors basically mean there is no internet connection\n static RETRIABLE_ERRORS = [\n 'ECONNRESET',\n 'ENOTFOUND',\n 'ESOCKETTIMEDOUT',\n 'ETIMEDOUT',\n 'ECONNREFUSED',\n 'EHOSTUNREACH',\n 'EPIPE',\n 'EAI_AGAIN',\n ];\n\n /**\n * Given the error returned by the API, decide if we should retry or just callback\n * with the error.\n *\n * @param err - an error returned by the API transport\n * @param item - the item that was trying to be sent when this error occured\n * @param callback - function(err, response)\n */\n _maybeRetry(err, item, callback) {\n let shouldRetry = false;\n if (this.options.retryInterval) {\n for (let i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) {\n if (err.code === Queue.RETRIABLE_ERRORS[i]) {\n shouldRetry = true;\n break;\n }\n }\n if (shouldRetry && _.isFiniteNumber(this.options.maxRetries)) {\n item.retries = item.retries ? item.retries + 1 : 1;\n if (item.retries > this.options.maxRetries) {\n shouldRetry = false;\n }\n }\n }\n if (shouldRetry) {\n this._retryApiRequest(item, callback);\n } else {\n callback(err);\n }\n }\n\n /**\n * Add an item and a callback to a queue and possibly start a timer to process\n * that queue based on the retryInterval in the options for this queue.\n *\n * @param item - an item that failed to send due to an error we deem retriable\n * @param callback - function(err, response)\n */\n _retryApiRequest(item, callback) {\n this.retryQueue.push({ item, callback });\n\n if (!this.retryHandle) {\n this.retryHandle = setInterval(() => {\n while (this.retryQueue.length) {\n const retryObject = this.retryQueue.shift();\n this._makeApiRequest(retryObject.item, retryObject.callback);\n }\n }, this.options.retryInterval);\n }\n }\n\n /**\n * Removes the item from the pending request queue, this queue is used to\n * enable to functionality of providing a callback that clients can pass to `wait` to be notified\n * when the pending request queue has been emptied. This must be called when the API finishes\n * processing this item. If a `wait` callback is configured, it is called by this function.\n *\n * @param item - the item previously added to the pending request queue\n */\n _dequeuePendingRequest(item) {\n const idx = this.pendingRequests.indexOf(item);\n if (idx !== -1) {\n this.pendingRequests.splice(idx, 1);\n this._maybeCallWait();\n }\n }\n\n _maybeLog(data, originalError) {\n if (this.logger && this.options.verbose) {\n let message =\n originalError ||\n _.get(data, 'body.trace.exception.message') ||\n _.get(data, 'body.trace_chain.0.exception.message');\n if (message) {\n this.logger.error(message);\n return;\n }\n message = _.get(data, 'body.message.body');\n if (message) {\n this.logger.log(message);\n }\n }\n }\n\n _maybeCallWait() {\n if (\n _.isFunction(this.waitCallback) &&\n this.pendingItems.length === 0 &&\n this.pendingRequests.length === 0\n ) {\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitCallback();\n return true;\n }\n return false;\n }\n}\n\nexport default Queue;\n","import * as _ from './utility.js';\n\n/*\n * Notifier - the internal object responsible for delegating between the client exposed API, the\n * chain of transforms necessary to turn an item into something that can be sent to Rollbar, and the\n * queue which handles the communcation with the Rollbar API servers.\n *\n * @param queue - an object that conforms to the interface: addItem(item, callback)\n * @param options - an object representing the options to be set for this notifier, this should have\n * any defaults already set by the caller\n */\nfunction Notifier(queue, options) {\n this.queue = queue;\n this.options = options;\n this.transforms = [];\n this.diagnostic = {};\n}\n\n/*\n * configure - updates the options for this notifier with the passed in object\n *\n * @param options - an object which gets merged with the current options set on this notifier\n * @returns this\n */\nNotifier.prototype.configure = function (options) {\n this.queue && this.queue.configure(options);\n var oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n return this;\n};\n\n/*\n * addTransform - adds a transform onto the end of the queue of transforms for this notifier\n *\n * @param transform - a function which takes three arguments:\n * * item: An Object representing the data to eventually be sent to Rollbar\n * * options: The current value of the options for this notifier\n * * callback: function(err: (Null|Error), item: (Null|Object)) the transform must call this\n * callback with a null value for error if it wants the processing chain to continue, otherwise\n * with an error to terminate the processing. The item should be the updated item after this\n * transform is finished modifying it.\n */\nNotifier.prototype.addTransform = function (transform) {\n if (_.isFunction(transform)) {\n this.transforms.push(transform);\n }\n return this;\n};\n\n/*\n * log - the internal log function which applies the configured transforms and then pushes onto the\n * queue to be sent to the backend.\n *\n * @param item - An object with the following structure:\n * message [String] - An optional string to be sent to rollbar\n * error [Error] - An optional error\n *\n * @param callback - A function of type function(err, resp) which will be called with exactly one\n * null argument and one non-null argument. The callback will be called once, either during the\n * transform stage if an error occurs inside a transform, or in response to the communication with\n * the backend. The second argument will be the response from the backend in case of success.\n */\nNotifier.prototype.log = function (item, callback) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n\n if (!this.options.enabled) {\n return callback(new Error('Rollbar is not enabled'));\n }\n\n this.queue.addPendingItem(item);\n var originalError = item.err;\n this._applyTransforms(\n item,\n function (err, i) {\n if (err) {\n this.queue.removePendingItem(item);\n return callback(err, null);\n }\n this.queue.addItem(i, callback, originalError, item);\n }.bind(this),\n );\n};\n\n/* Internal */\n\n/*\n * _applyTransforms - Applies the transforms that have been added to this notifier sequentially. See\n * `addTransform` for more information.\n *\n * @param item - An item to be transformed\n * @param callback - A function of type function(err, item) which will be called with a non-null\n * error and a null item in the case of a transform failure, or a null error and non-null item after\n * all transforms have been applied.\n */\nNotifier.prototype._applyTransforms = function (item, callback) {\n var transformIndex = -1;\n var transformsLength = this.transforms.length;\n var transforms = this.transforms;\n var options = this.options;\n\n var cb = function (err, i) {\n if (err) {\n callback(err, null);\n return;\n }\n\n transformIndex++;\n\n if (transformIndex === transformsLength) {\n callback(null, i);\n return;\n }\n\n transforms[transformIndex](i, options, cb);\n };\n\n cb(null, item);\n};\n\nexport default Notifier;\n","import RateLimiter from './rateLimiter.js';\nimport Queue from './queue.js';\nimport Notifier from './notifier.js';\nimport * as _ from './utility.js';\n\n/*\n * Rollbar - the interface to Rollbar\n *\n * @param options\n * @param api\n * @param logger\n */\nfunction Rollbar(options, api, logger, telemeter, tracing, replay, platform) {\n this.options = _.merge(options);\n this.logger = logger;\n Rollbar.rateLimiter.configureGlobal(this.options);\n Rollbar.rateLimiter.setPlatformOptions(platform, this.options);\n this.api = api;\n this.queue = new Queue(\n Rollbar.rateLimiter,\n api,\n logger,\n this.options,\n replay,\n );\n\n this.tracing = tracing;\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is created\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier = new Notifier(this.queue, this.options);\n this.telemeter = telemeter;\n setStackTraceLimit(options);\n this.lastError = null;\n this.lastErrorHash = 'none';\n}\n\nvar defaultOptions = {\n maxItems: 0,\n itemsPerMinute: 60,\n};\n\nRollbar.rateLimiter = new RateLimiter(defaultOptions);\n\nRollbar.prototype.global = function (options) {\n Rollbar.rateLimiter.configureGlobal(options);\n return this;\n};\n\nRollbar.prototype.configure = function (options, payloadData) {\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.merge(oldOptions, options, payload);\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is configured\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier && this.notifier.configure(this.options);\n this.telemeter && this.telemeter.configure(this.options);\n setStackTraceLimit(options);\n this.global(this.options);\n\n if (validateTracer(options.tracer)) {\n this.tracer = options.tracer;\n }\n\n return this;\n};\n\nRollbar.prototype.log = function (item) {\n var level = this._defaultLogLevel();\n return this._log(level, item);\n};\n\nRollbar.prototype.debug = function (item) {\n this._log('debug', item);\n};\n\nRollbar.prototype.info = function (item) {\n this._log('info', item);\n};\n\nRollbar.prototype.warn = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.warning = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.error = function (item) {\n this._log('error', item);\n};\n\nRollbar.prototype.critical = function (item) {\n this._log('critical', item);\n};\n\nRollbar.prototype.wait = function (callback) {\n this.queue.wait(callback);\n};\n\nRollbar.prototype.captureEvent = function (type, metadata, level) {\n return this.telemeter && this.telemeter.captureEvent(type, metadata, level);\n};\n\nRollbar.prototype.captureDomContentLoaded = function (ts) {\n return this.telemeter && this.telemeter.captureDomContentLoaded(ts);\n};\n\nRollbar.prototype.captureLoad = function (ts) {\n return this.telemeter && this.telemeter.captureLoad(ts);\n};\n\nRollbar.prototype.buildJsonPayload = function (item) {\n return this.api.buildJsonPayload(item);\n};\n\nRollbar.prototype.sendJsonPayload = function (jsonPayload) {\n this.api.postJsonPayload(jsonPayload);\n};\n\n/* Internal */\n\nRollbar.prototype._log = function (defaultLevel, item) {\n var callback;\n if (item.callback) {\n callback = item.callback;\n delete item.callback;\n }\n if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) {\n if (callback) {\n var error = new Error('ignored identical item');\n error.item = item;\n callback(error);\n }\n return;\n }\n try {\n item.level = item.level || defaultLevel;\n\n this._addTracingAttributes(item);\n\n // Legacy OpenTracing support\n this._addTracingInfo(item);\n\n const telemeter = this.telemeter;\n if (telemeter) {\n telemeter._captureRollbarItem(item);\n item.telemetryEvents = telemeter.copyEvents() || [];\n }\n\n this.notifier.log(item, callback);\n } catch (e) {\n if (callback) {\n callback(e);\n }\n this.logger.error(e);\n }\n};\n\nRollbar.prototype._addTracingAttributes = function (item) {\n const span = this.tracing?.getSpan();\n\n const attributes = [\n { key: 'session_id', value: this.tracing?.sessionId },\n { key: 'span_id', value: span?.spanId },\n { key: 'trace_id', value: span?.traceId },\n ];\n _.addItemAttributes(item.data, attributes);\n\n span?.addEvent('rollbar.occurrence', [\n { key: 'rollbar.occurrence.uuid', value: item.uuid },\n ]);\n};\n\nRollbar.prototype._defaultLogLevel = function () {\n return this.options.logLevel || 'debug';\n};\n\nRollbar.prototype._sameAsLastError = function (item) {\n if (!item._isUncaught) {\n return false;\n }\n var itemHash = generateItemHash(item);\n if (this.lastErrorHash === itemHash) {\n return true;\n }\n this.lastError = item.err;\n this.lastErrorHash = itemHash;\n return false;\n};\n\nRollbar.prototype._addTracingInfo = function (item) {\n // Tracer validation occurs in the constructor\n // or in the Rollbar.prototype.configure methods\n if (this.tracer) {\n // add rollbar occurrence uuid to span\n var span = this.tracer.scope().active();\n\n if (validateSpan(span)) {\n span.setTag('rollbar.error_uuid', item.uuid);\n span.setTag('rollbar.has_error', true);\n span.setTag('error', true);\n span.setTag(\n 'rollbar.item_url',\n `https://rollbar.com/item/uuid/?uuid=${item.uuid}`,\n );\n span.setTag(\n 'rollbar.occurrence_url',\n `https://rollbar.com/occurrence/uuid/?uuid=${item.uuid}`,\n );\n\n // add span ID & trace ID to occurrence\n var opentracingSpanId = span.context().toSpanId();\n var opentracingTraceId = span.context().toTraceId();\n\n if (item.custom) {\n item.custom.opentracing_span_id = opentracingSpanId;\n item.custom.opentracing_trace_id = opentracingTraceId;\n } else {\n item.custom = {\n opentracing_span_id: opentracingSpanId,\n opentracing_trace_id: opentracingTraceId,\n };\n }\n }\n }\n};\n\nfunction generateItemHash(item) {\n var message = item.message || '';\n var stack = (item.err || {}).stack || String(item.err);\n return message + '::' + stack;\n}\n\n// Node.js, Chrome, Safari, and some other browsers support this property\n// which globally sets the number of stack frames returned in an Error object.\n// If a browser can't use it, no harm done.\nfunction setStackTraceLimit(options) {\n if (options.stackTraceLimit) {\n Error.stackTraceLimit = options.stackTraceLimit;\n }\n}\n\n/**\n * Validate the Tracer object provided to the Client\n * is valid for our Opentracing use case.\n * @param {opentracer.Tracer} tracer\n */\nfunction validateTracer(tracer) {\n if (!tracer) {\n return false;\n }\n\n if (!tracer.scope || typeof tracer.scope !== 'function') {\n return false;\n }\n\n var scope = tracer.scope();\n\n if (!scope || !scope.active || typeof scope.active !== 'function') {\n return false;\n }\n\n return true;\n}\n\n/**\n * Validate the Span object provided\n * @param {opentracer.Span} span\n */\nfunction validateSpan(span) {\n if (!span || !span.context || typeof span.context !== 'function') {\n return false;\n }\n\n var spanContext = span.context();\n\n if (\n !spanContext ||\n !spanContext.toSpanId ||\n !spanContext.toTraceId ||\n typeof spanContext.toSpanId !== 'function' ||\n typeof spanContext.toTraceId !== 'function'\n ) {\n return false;\n }\n\n return true;\n}\n\nexport default Rollbar;\n","import * as _ from './utility.js';\n\nfunction buildPayload(data) {\n if (!_.isType(data.context, 'string')) {\n var contextResult = _.stringify(data.context);\n if (contextResult.error) {\n data.context = \"Error: could not serialize 'context'\";\n } else {\n data.context = contextResult.value || '';\n }\n if (data.context.length > 255) {\n data.context = data.context.substr(0, 255);\n }\n }\n return {\n data: data,\n };\n}\n\nfunction getTransportFromOptions(options, defaults, url) {\n var hostname = defaults.hostname;\n var protocol = defaults.protocol;\n var port = defaults.port;\n var path = defaults.path;\n var search = defaults.search;\n var timeout = options.timeout;\n var transport = detectTransport(options);\n\n var proxy = options.proxy;\n if (options.endpoint) {\n var opts = url.parse(options.endpoint);\n hostname = opts.hostname;\n protocol = opts.protocol;\n port = opts.port;\n path = opts.pathname;\n search = opts.search;\n }\n return {\n timeout: timeout,\n hostname: hostname,\n protocol: protocol,\n port: port,\n path: path,\n search: search,\n proxy: proxy,\n transport: transport,\n };\n}\n\nfunction detectTransport(options) {\n var gWindow =\n (typeof window != 'undefined' && window) ||\n (typeof self != 'undefined' && self);\n var transport = options.defaultTransport || 'xhr';\n if (typeof gWindow.fetch === 'undefined') transport = 'xhr';\n if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch';\n return transport;\n}\n\nfunction transportOptions(transport, method) {\n var protocol = transport.protocol || 'https:';\n var port =\n transport.port ||\n (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined);\n var hostname = transport.hostname;\n var path = transport.path;\n var timeout = transport.timeout;\n var transportAPI = transport.transport;\n if (transport.search) {\n path = path + transport.search;\n }\n if (transport.proxy) {\n path = protocol + '//' + hostname + path;\n hostname = transport.proxy.host || transport.proxy.hostname;\n port = transport.proxy.port;\n protocol = transport.proxy.protocol || protocol;\n }\n return {\n timeout: timeout,\n protocol: protocol,\n hostname: hostname,\n path: path,\n port: port,\n method: method,\n transport: transportAPI,\n };\n}\n\nfunction appendPathToPath(base, path) {\n var baseTrailingSlash = /\\/$/.test(base);\n var pathBeginningSlash = /^\\//.test(path);\n\n if (baseTrailingSlash && pathBeginningSlash) {\n path = path.substring(1);\n } else if (!baseTrailingSlash && !pathBeginningSlash) {\n path = '/' + path;\n }\n\n return base + path;\n}\n\nexport {\n buildPayload,\n getTransportFromOptions,\n transportOptions,\n appendPathToPath,\n};\n","import * as _ from './utility.js';\nimport * as helpers from './apiUtility.js';\n\nvar defaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/item/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\nvar OTLPDefaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/session/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\n/**\n * Api is an object that encapsulates methods of communicating with\n * the Rollbar API. It is a standard interface with some parts implemented\n * differently for server or browser contexts. It is an object that should\n * be instantiated when used so it can contain non-global options that may\n * be different for another instance of RollbarApi.\n *\n * @param options {\n * accessToken: the accessToken to use for posting items to rollbar\n * endpoint: an alternative endpoint to send errors to\n * must be a valid, fully qualified URL.\n * The default is: https://api.rollbar.com/api/1/item\n * proxy: if you wish to proxy requests provide an object\n * with the following keys:\n * host or hostname (required): foo.example.com\n * port (optional): 123\n * protocol (optional): https\n * }\n */\nfunction Api(options, transport, urllib, truncation) {\n this.options = options;\n this.transport = transport;\n this.url = urllib;\n this.truncation = truncation;\n this.accessToken = options.accessToken;\n this.transportOptions = _getTransport(options, urllib);\n this.OTLPTransportOptions = _getOTLPTransport(options, urllib);\n}\n\n/**\n * Wraps transport.post in a Promise to support async/await\n *\n * @param {Object} options - Options for the API request\n * @param {string} options.accessToken - The access token for authentication\n * @param {Object} options.transportOptions - Options for the transport\n * @param {Object} options.payload - The data payload to send\n * @returns {Promise} A promise that resolves with the response or rejects with an error\n * @private\n */\nApi.prototype._postPromise = function ({\n accessToken,\n options,\n payload,\n headers,\n}) {\n const self = this;\n return new Promise((resolve, reject) => {\n self.transport.post({\n accessToken,\n options,\n payload,\n headers,\n callback: (err, resp) => (err ? reject(err) : resolve(resp)),\n });\n });\n};\n\n/**\n *\n * @param data\n * @param callback\n */\nApi.prototype.postItem = function (data, callback) {\n const options = helpers.transportOptions(this.transportOptions, 'POST');\n const payload = helpers.buildPayload(data);\n const self = this;\n\n // ensure the network request is scheduled after the current tick.\n setTimeout(function () {\n self.transport.post({\n accessToken: self.accessToken,\n options,\n payload,\n callback,\n });\n }, 0);\n};\n\n/**\n * Posts spans to the Rollbar API using the session endpoint\n *\n * @param {Array} payload - The spans to send\n * @returns {Promise} A promise that resolves with the API response\n */\nApi.prototype.postSpans = async function (payload, headers = {}) {\n const options = helpers.transportOptions(this.OTLPTransportOptions, 'POST');\n\n return await this._postPromise({\n accessToken: this.accessToken,\n options,\n payload,\n headers,\n });\n};\n\n/**\n *\n * @param data\n * @param callback\n */\nApi.prototype.buildJsonPayload = function (data, callback) {\n var payload = helpers.buildPayload(data);\n\n var stringifyResult;\n if (this.truncation) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = _.stringify(payload);\n }\n\n if (stringifyResult.error) {\n if (callback) {\n callback(stringifyResult.error);\n }\n return null;\n }\n\n return stringifyResult.value;\n};\n\n/**\n *\n * @param jsonPayload\n * @param callback\n */\nApi.prototype.postJsonPayload = function (jsonPayload, callback) {\n var transportOptions = helpers.transportOptions(\n this.transportOptions,\n 'POST',\n );\n this.transport.postJsonPayload(\n this.accessToken,\n transportOptions,\n jsonPayload,\n callback,\n );\n};\n\nApi.prototype.configure = function (options) {\n var oldOptions = this.oldOptions;\n this.options = _.merge(oldOptions, options);\n this.transportOptions = _getTransport(this.options, this.url);\n this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url);\n if (this.options.accessToken !== undefined) {\n this.accessToken = this.options.accessToken;\n }\n return this;\n};\n\nfunction _getTransport(options, url) {\n return helpers.getTransportFromOptions(options, defaultOptions, url);\n}\n\nfunction _getOTLPTransport(options, url) {\n options = { ...options, endpoint: options.tracing?.endpoint };\n return helpers.getTransportFromOptions(options, OTLPDefaultOptions, url);\n}\n\nexport default Api;\n","let log = () => {};\n\nconst levels = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n disable: 4,\n};\n\nconst logger = {\n error: (...args) => log('error', args),\n warn: (...args) => log('warn', args),\n info: (...args) => log('info', args),\n debug: (...args) => log('debug', args),\n log: (...args) => log('info', args),\n init: ({ logLevel }) => {\n log = function (level, args) {\n if (levels[level] < levels[logLevel]) return;\n\n args.unshift('Rollbar:');\n\n console[level].apply(console, args);\n };\n },\n};\n\nexport default logger;\n","function captureUncaughtExceptions(window, handler, shim) {\n if (!window) {\n return;\n }\n var oldOnError;\n\n if (typeof handler._rollbarOldOnError === 'function') {\n oldOnError = handler._rollbarOldOnError;\n } else if (window.onerror) {\n oldOnError = window.onerror;\n while (oldOnError._rollbarOldOnError) {\n oldOnError = oldOnError._rollbarOldOnError;\n }\n handler._rollbarOldOnError = oldOnError;\n }\n\n handler.handleAnonymousErrors();\n\n var fn = function () {\n var args = Array.prototype.slice.call(arguments, 0);\n _rollbarWindowOnError(window, handler, oldOnError, args);\n };\n if (shim) {\n fn._rollbarOldOnError = oldOnError;\n }\n window.onerror = fn;\n}\n\nfunction _rollbarWindowOnError(window, r, old, args) {\n if (window._rollbarWrappedError) {\n if (!args[4]) {\n args[4] = window._rollbarWrappedError;\n }\n if (!args[5]) {\n args[5] = window._rollbarWrappedError._rollbarContext;\n }\n window._rollbarWrappedError = null;\n }\n\n var ret = r.handleUncaughtException.apply(r, args);\n\n if (old) {\n old.apply(window, args);\n }\n\n // Let other chained onerror handlers above run before setting this.\n // If an error is thrown and caught within a chained onerror handler,\n // Error.prepareStackTrace() will see that one before the one we want.\n if (ret === 'anonymous') {\n r.anonymousErrorsPending += 1; // See Rollbar.prototype.handleAnonymousErrors()\n }\n}\n\nfunction captureUnhandledRejections(window, handler, shim) {\n if (!window) {\n return;\n }\n\n if (\n typeof window._rollbarURH === 'function' &&\n window._rollbarURH.belongsToShim\n ) {\n window.removeEventListener('unhandledrejection', window._rollbarURH);\n }\n\n var rejectionHandler = function (evt) {\n var reason, promise, detail;\n try {\n reason = evt.reason;\n } catch (e) {\n reason = undefined;\n }\n try {\n promise = evt.promise;\n } catch (e) {\n promise = '[unhandledrejection] error getting `promise` from event';\n }\n try {\n detail = evt.detail;\n if (!reason && detail) {\n reason = detail.reason;\n promise = detail.promise;\n }\n } catch (e) {\n // Ignore\n }\n if (!reason) {\n reason = '[unhandledrejection] error getting `reason` from event';\n }\n\n if (handler && handler.handleUnhandledRejection) {\n handler.handleUnhandledRejection(reason, promise);\n }\n };\n rejectionHandler.belongsToShim = shim;\n window._rollbarURH = rejectionHandler;\n window.addEventListener('unhandledrejection', rejectionHandler);\n}\n\nexport { captureUncaughtExceptions, captureUnhandledRejections };\n","import logger from '../../logger.js';\nimport * as _ from '../../utility.js';\n\nfunction makeFetchRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n timeout,\n}) {\n var controller;\n var timeoutId;\n\n if (_.isFiniteNumber(timeout)) {\n controller = new AbortController();\n timeoutId = setTimeout(function () {\n controller.abort();\n }, timeout);\n }\n\n headers = {\n 'Content-Type': 'application/json',\n 'X-Rollbar-Access-Token': accessToken,\n signal: controller && controller.signal,\n ...headers,\n };\n\n fetch(url, {\n method,\n headers,\n body: payload,\n })\n .then(function (response) {\n if (timeoutId) clearTimeout(timeoutId);\n const respHeaders = response.headers;\n\n const isItemRoute = url.endsWith('/api/1/item/');\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': respHeaders.get('Rollbar-Replay-Enabled'),\n 'Rollbar-Replay-RateLimit-Remaining': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n\n const json = response.json();\n callback(null, json, headers);\n })\n .catch(function (error) {\n logger.error(error.message);\n callback(error);\n });\n}\n\nexport default makeFetchRequest;\n","/*global XDomainRequest*/\n\nimport * as _ from '../../utility.js';\nimport logger from '../../logger.js';\n\nfunction makeXhrRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n requestFactory,\n timeout,\n}) {\n var request;\n if (requestFactory) {\n request = requestFactory();\n } else {\n request = _createXMLHTTPObject();\n }\n if (!request) {\n // Give up, no way to send requests\n return callback(new Error('No way to send a request'));\n }\n try {\n try {\n var onreadystatechange = function () {\n try {\n if (onreadystatechange && request.readyState === 4) {\n onreadystatechange = undefined;\n\n var parseResponse = _.jsonParse(request.responseText);\n if (_isSuccess(request)) {\n const isItemRoute = url.endsWith('/api/1/item/');\n\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': request.getResponseHeader(\n 'Rollbar-Replay-Enabled',\n ),\n 'Rollbar-Replay-RateLimit-Remaining':\n request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n callback(parseResponse.error, parseResponse.value, headers);\n return;\n } else if (_isNormalFailure(request)) {\n if (request.status === 403) {\n // likely caused by using a server access token\n var message =\n parseResponse.value && parseResponse.value.message;\n logger.error(message);\n }\n // return valid http status codes\n callback(new Error(String(request.status)));\n } else {\n // IE will return a status 12000+ on some sort of connection failure,\n // so we return a blank error\n // http://msdn.microsoft.com/en-us/library/aa383770%28VS.85%29.aspx\n var msg =\n 'XHR response had no status code (likely connection failure)';\n callback(_newRetriableError(msg));\n }\n }\n } catch (ex) {\n //jquery source mentions firefox may error out while accessing the\n //request members if there is a network error\n //https://github.com/jquery/jquery/blob/a938d7b1282fc0e5c52502c225ae8f0cef219f0a/src/ajax/xhr.js#L111\n var exc;\n if (ex && ex.stack) {\n exc = ex;\n } else {\n exc = new Error(ex);\n }\n callback(exc);\n }\n };\n\n request.open(method, url, true);\n if (request.setRequestHeader) {\n request.setRequestHeader('Content-Type', 'application/json');\n request.setRequestHeader('X-Rollbar-Access-Token', accessToken);\n for (const [h, v] of Object.entries(headers ?? {})) {\n request.setRequestHeader(h, v);\n }\n }\n\n if (_.isFiniteNumber(timeout)) {\n request.timeout = timeout;\n }\n\n request.onreadystatechange = onreadystatechange;\n request.send(payload);\n } catch (e1) {\n // Sending using the normal xmlhttprequest object didn't work, try XDomainRequest\n if (typeof XDomainRequest !== 'undefined') {\n // Assume we are in a really old browser which has a bunch of limitations:\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n\n // Extreme paranoia: if we have XDomainRequest then we have a window, but just in case\n if (!window || !window.location) {\n return callback(\n new Error(\n 'No window available during request, unknown environment',\n ),\n );\n }\n\n // If the current page is http, try and send over http\n if (\n window.location.href.substring(0, 5) === 'http:' &&\n url.substring(0, 5) === 'https'\n ) {\n url = 'http' + url.substring(5);\n }\n\n var xdomainrequest = new XDomainRequest();\n xdomainrequest.onprogress = function () {};\n xdomainrequest.ontimeout = function () {\n var msg = 'Request timed out';\n var code = 'ETIMEDOUT';\n callback(_newRetriableError(msg, code));\n };\n xdomainrequest.onerror = function () {\n callback(new Error('Error during request'));\n };\n xdomainrequest.onload = function () {\n var parseResponse = _.jsonParse(xdomainrequest.responseText);\n callback(parseResponse.error, parseResponse.value);\n };\n xdomainrequest.open(method, url, true);\n xdomainrequest.send(payload);\n } else {\n callback(new Error('Cannot find a method to transport a request'));\n }\n }\n } catch (e2) {\n callback(e2);\n }\n}\n\nfunction _createXMLHTTPObject() {\n /* global ActiveXObject:false */\n\n var factories = [\n function () {\n return new XMLHttpRequest();\n },\n function () {\n return new ActiveXObject('Msxml2.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Msxml3.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Microsoft.XMLHTTP');\n },\n ];\n var xmlhttp;\n var i;\n var numFactories = factories.length;\n for (i = 0; i < numFactories; i++) {\n try {\n xmlhttp = factories[i]();\n break;\n } catch (e) {\n // pass\n }\n }\n return xmlhttp;\n}\n\nfunction _isSuccess(r) {\n return r && r.status && r.status === 200;\n}\n\nfunction _isNormalFailure(r) {\n return r && _.isType(r.status, 'number') && r.status >= 400 && r.status < 600;\n}\n\nfunction _newRetriableError(message, code) {\n var err = new Error(message);\n err.code = code || 'ENOTFOUND';\n return err;\n}\n\nexport default makeXhrRequest;\n","import * as _ from '../utility.js';\nimport makeFetchRequest from './transport/fetch.js';\nimport makeXhrRequest from './transport/xhr.js';\n\n/*\n * accessToken may be embedded in payload but that should not\n * be assumed\n *\n * options: {\n * hostname\n * protocol\n * path\n * port\n * method\n * transport ('xhr' | 'fetch')\n * }\n *\n * params is an object containing key/value pairs. These\n * will be appended to the path as 'key=value&key=value'\n *\n * payload is an unserialized object\n */\nfunction Transport(truncation) {\n this.truncation = truncation;\n}\n\nTransport.prototype.get = function (\n accessToken,\n options,\n params,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n _.addParamsAndAccessTokenToPath(accessToken, options, params);\n\n var method = 'GET';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.post = function ({\n accessToken,\n options,\n payload,\n headers,\n callback,\n requestFactory,\n}) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n\n if (!payload) {\n return callback(new Error('Cannot send empty request'));\n }\n\n var stringifyResult;\n // Check payload.body to ensure only items are truncated.\n if (this.truncation && payload.body) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = _.stringify(payload);\n }\n if (stringifyResult.error) {\n return callback(stringifyResult.error);\n }\n\n var payload = stringifyResult.value;\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.postJsonPayload = function (\n accessToken,\n options,\n payload,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\n// Wraps `_makeRequest` if zone.js is being used, ensuring that Rollbar\n// API calls are not intercepted by any child forked zones.\n// This is equivalent to `NgZone.runOutsideAngular` in Angular.\nTransport.prototype._makeZoneRequest = function () {\n var gWindow =\n (typeof window != 'undefined' && window) ||\n (typeof self != 'undefined' && self);\n // Whenever zone.js is loaded and `Zone` is exposed globally, access\n // the root zone to ensure that requests are always made within it.\n // This approach is framework-agnostic, regardless of which\n // framework zone.js is used with.\n var rootZone = gWindow && gWindow.Zone && gWindow.Zone.root;\n var args = Array.prototype.slice.call(arguments);\n\n if (rootZone) {\n var self = this;\n rootZone.run(function () {\n self._makeRequest.apply(undefined, args);\n });\n } else {\n this._makeRequest.apply(undefined, args);\n }\n};\n\nTransport.prototype._makeRequest = function (params) {\n const { payload, callback, transport } = params;\n if (typeof RollbarProxy !== 'undefined') {\n return _proxyRequest(payload, callback);\n }\n\n if (transport === 'fetch') {\n makeFetchRequest(params);\n } else {\n makeXhrRequest(params);\n }\n};\n\n/* global RollbarProxy */\nfunction _proxyRequest(json, callback) {\n var rollbarProxy = new RollbarProxy();\n rollbarProxy.sendJsonPayload(\n json,\n function (_msg) {\n /* do nothing */\n },\n function (err) {\n callback(new Error(err));\n },\n );\n}\n\nexport default Transport;\n","// See https://nodejs.org/docs/latest/api/url.html\nfunction parse(url) {\n var result = {\n protocol: null,\n auth: null,\n host: null,\n path: null,\n hash: null,\n href: url,\n hostname: null,\n port: null,\n pathname: null,\n search: null,\n query: null,\n };\n\n var i, last;\n i = url.indexOf('//');\n if (i !== -1) {\n result.protocol = url.substring(0, i);\n last = i + 2;\n } else {\n last = 0;\n }\n\n i = url.indexOf('@', last);\n if (i !== -1) {\n result.auth = url.substring(last, i);\n last = i + 1;\n }\n\n i = url.indexOf('/', last);\n if (i === -1) {\n i = url.indexOf('?', last);\n if (i === -1) {\n i = url.indexOf('#', last);\n if (i === -1) {\n result.host = url.substring(last);\n } else {\n result.host = url.substring(last, i);\n result.hash = url.substring(i);\n }\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n return result;\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n\n i = url.indexOf('#', last);\n if (i === -1) {\n result.path = url.substring(last);\n } else {\n result.path = url.substring(last, i);\n result.hash = url.substring(i);\n }\n\n if (result.path) {\n var pathParts = result.path.split('?');\n result.pathname = pathParts[0];\n result.query = pathParts[1];\n result.search = result.query ? '?' + result.query : null;\n }\n return result;\n}\n\nexport { parse };\n","const FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\nfunction parse(error, options) {\n if (typeof error.stacktrace !== \"undefined\" || typeof error[\"opera#sourceloc\"] !== \"undefined\")\n return parseOpera(error, options);\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIE(error, options);\n else if (error.stack)\n return parseFFOrSafari(error, options);\n else if (options?.allowEmpty)\n return [];\n else\n throw new Error(\"Cannot parse given Error object\");\n}\nfunction parseStack(stackString, options) {\n if (stackString.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIeString(stackString, options);\n else\n return parseFFOrSafariString(stackString, options);\n}\nfunction extractLocation(urlLike) {\n if (!urlLike.includes(\":\"))\n return [urlLike, undefined, undefined];\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n const parts = regExp.exec(urlLike.replace(/[()]/g, \"\"));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n}\nfunction applySlice(lines, options) {\n if (options && options.slice != null) {\n if (Array.isArray(options.slice))\n return lines.slice(options.slice[0], options.slice[1]);\n return lines.slice(0, options.slice);\n }\n return lines;\n}\nfunction parseV8OrIE(error, options) {\n return parseV8OrIeString(error.stack, options);\n}\nfunction parseV8OrIeString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\"(eval \")) {\n line = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(,.*$)/g, \"\");\n }\n let sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\").replace(/^.*?\\s+/, \"\");\n const location = sanitizedLine.match(/ (\\(.+\\)$)/);\n sanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n const locationParts = extractLocation(location ? location[1] : sanitizedLine);\n const functionName = location && sanitizedLine || undefined;\n const fileName = [\"eval\", \"\"].includes(locationParts[0]) ? undefined : locationParts[0];\n return {\n function: functionName,\n file: fileName,\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\nfunction parseFFOrSafari(error, options) {\n return parseFFOrSafariString(error.stack, options);\n}\nfunction parseFFOrSafariString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\" > eval\"))\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, \":$1\");\n if (!line.includes(\"@\") && !line.includes(\":\")) {\n return {\n function: line\n };\n } else {\n const functionNameRegex = /(([^\\n\\r\"\\u2028\\u2029]*\".[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*(?:@[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*)*(?:[\\n\\r\\u2028\\u2029][^@]*)?)?[^@]*)@/;\n const matches = line.match(functionNameRegex);\n const functionName = matches && matches[1] ? matches[1] : undefined;\n const locationParts = extractLocation(line.replace(functionNameRegex, \"\"));\n return {\n function: functionName,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n }\n });\n}\nfunction parseOpera(e, options) {\n if (!e.stacktrace || e.message.includes(\"\\n\") && e.message.split(\"\\n\").length > e.stacktrace.split(\"\\n\").length)\n return parseOpera9(e);\n else if (!e.stack)\n return parseOpera10(e);\n else\n return parseOpera11(e, options);\n}\nfunction parseOpera9(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n const lines = e.message.split(\"\\n\");\n const result = [];\n for (let i = 2, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n file: match[2],\n line: +match[1],\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera10(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n const lines = e.stacktrace.split(\"\\n\");\n const result = [];\n for (let i = 0, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n function: match[3] || undefined,\n file: match[2],\n line: match[1] ? +match[1] : undefined,\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera11(error, options) {\n const filtered = applySlice(\n // @ts-expect-error missing stack property\n error.stack.split(\"\\n\").filter((line) => {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }),\n options\n );\n return filtered.map((line) => {\n const tokens = line.split(\"@\");\n const locationParts = extractLocation(tokens.pop());\n const functionCall = tokens.shift() || \"\";\n const functionName = functionCall.replace(//, \"$2\").replace(/\\([^)]*\\)/g, \"\") || undefined;\n let argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/))\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, \"$1\");\n const args = argsRaw === undefined || argsRaw === \"[arguments not available]\" ? undefined : argsRaw.split(\",\");\n return {\n function: functionName,\n args,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\n\nexport { extractLocation, parse, parseFFOrSafari, parseFFOrSafariString, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseStack, parseV8OrIE, parseV8OrIeString };\n","import { parse as parse$1, parseV8OrIE as parseV8OrIE$1, parseFFOrSafari as parseFFOrSafari$1, parseOpera as parseOpera$1, parseOpera9 as parseOpera9$1, parseOpera10 as parseOpera10$1, parseOpera11 as parseOpera11$1 } from './lite.mjs';\nexport { extractLocation } from './lite.mjs';\n\nfunction stackframesLiteToStackframes(liteStackframes) {\n return liteStackframes.map((liteStackframe) => {\n return {\n functionName: liteStackframe.function,\n args: liteStackframe.args,\n fileName: liteStackframe.file,\n lineNumber: liteStackframe.line,\n columnNumber: liteStackframe.col,\n source: liteStackframe.raw\n };\n });\n}\nfunction parse(error, options) {\n return stackframesLiteToStackframes(parse$1(error, options));\n}\nfunction parseV8OrIE(error) {\n return stackframesLiteToStackframes(parseV8OrIE$1(error));\n}\nfunction parseFFOrSafari(error) {\n return stackframesLiteToStackframes(parseFFOrSafari$1(error));\n}\nfunction parseOpera(e) {\n return stackframesLiteToStackframes(parseOpera$1(e));\n}\nfunction parseOpera9(e) {\n return stackframesLiteToStackframes(parseOpera9$1(e));\n}\nfunction parseOpera10(e) {\n return stackframesLiteToStackframes(parseOpera10$1(e));\n}\nfunction parseOpera11(error) {\n return stackframesLiteToStackframes(parseOpera11$1(error));\n}\n\nexport { parse, parseFFOrSafari, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseV8OrIE };\n","import { parse as parseErrorStack } from 'error-stack-parser-es';\n\nvar UNKNOWN_FUNCTION = '?';\nvar ERR_CLASS_REGEXP = new RegExp(\n '^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): ',\n);\n\nfunction guessFunctionName() {\n return UNKNOWN_FUNCTION;\n}\n\nfunction gatherContext() {\n return null;\n}\n\nfunction Frame(stackFrame) {\n var data = {};\n\n data._stackFrame = stackFrame;\n\n data.url = stackFrame.fileName;\n data.line = stackFrame.lineNumber;\n data.func = stackFrame.functionName;\n data.column = stackFrame.columnNumber;\n data.args = stackFrame.args;\n\n data.context = gatherContext();\n\n return data;\n}\n\nfunction Stack(exception, skip) {\n function getStack() {\n var parserStack = [];\n\n skip = skip || 0;\n\n try {\n parserStack = parseErrorStack(exception);\n } catch (e) {\n parserStack = [];\n }\n\n var stack = [];\n\n for (var i = skip; i < parserStack.length; i++) {\n stack.push(new Frame(parserStack[i]));\n }\n\n return stack;\n }\n\n return {\n stack: getStack(),\n message: exception.message,\n name: _mostSpecificErrorName(exception),\n rawStack: exception.stack,\n rawException: exception,\n };\n}\n\nfunction parse(e, skip) {\n var err = e;\n\n if (err.nested || err.cause) {\n var traceChain = [];\n while (err) {\n traceChain.push(new Stack(err, skip));\n err = err.nested || err.cause;\n\n skip = 0; // Only apply skip value to primary error\n }\n\n // Return primary error with full trace chain attached.\n traceChain[0].traceChain = traceChain;\n return traceChain[0];\n } else {\n return new Stack(err, skip);\n }\n}\n\nfunction guessErrorClass(errMsg) {\n if (!errMsg || !errMsg.match) {\n return ['Unknown error. There was no error message to display.', ''];\n }\n var errClassMatch = errMsg.match(ERR_CLASS_REGEXP);\n var errClass = '(unknown)';\n\n if (errClassMatch) {\n errClass = errClassMatch[errClassMatch.length - 1];\n errMsg = errMsg.replace(\n (errClassMatch[errClassMatch.length - 2] || '') + errClass + ':',\n '',\n );\n errMsg = errMsg.replace(/(^[\\s]+|[\\s]+$)/g, '');\n }\n return [errClass, errMsg];\n}\n\n// * Prefers any value over an empty string\n// * Prefers any value over 'Error' where possible\n// * Prefers name over constructor.name when both are more specific than 'Error'\nfunction _mostSpecificErrorName(error) {\n var name = error.name && error.name.length && error.name;\n var constructorName =\n error.constructor.name &&\n error.constructor.name.length &&\n error.constructor.name;\n\n if (!name || !constructorName) {\n return name || constructorName;\n }\n\n if (name === 'Error') {\n return constructorName;\n }\n return name;\n}\n\nexport default {\n guessFunctionName,\n guessErrorClass,\n gatherContext,\n parse,\n Stack,\n Frame,\n};\n","import * as _ from '../utility.js';\nimport errorParser from '../errorParser.js';\nimport logger from '../logger.js';\n\nfunction handleDomException(item, options, callback) {\n if (item.err && errorParser.Stack(item.err).name === 'DOMException') {\n var originalError = new Error();\n originalError.name = item.err.name;\n originalError.message = item.err.message;\n originalError.stack = item.err.stack;\n originalError.nested = item.err;\n item.err = originalError;\n }\n callback(null, item);\n}\n\nfunction handleItemWithError(item, options, callback) {\n item.data = item.data || {};\n if (item.err) {\n try {\n item.stackInfo =\n item.err._savedStackTrace ||\n errorParser.parse(item.err, item.skipFrames);\n\n if (options.addErrorContext) {\n addErrorContext(item);\n }\n } catch (e) {\n logger.error('Error while parsing the error object.', e);\n try {\n item.message =\n item.err.message ||\n item.err.description ||\n item.message ||\n String(item.err);\n } catch (e2) {\n item.message = String(item.err) || String(e2);\n }\n delete item.err;\n }\n }\n callback(null, item);\n}\n\nfunction addErrorContext(item) {\n var chain = [];\n var err = item.err;\n\n chain.push(err);\n\n while (err.nested || err.cause) {\n err = err.nested || err.cause;\n chain.push(err);\n }\n\n _.addErrorContext(item, chain);\n}\n\nfunction ensureItemHasSomethingToSay(item, options, callback) {\n if (!item.message && !item.stackInfo && !item.custom) {\n callback(new Error('No message, stack info, or custom data'), null);\n }\n callback(null, item);\n}\n\nfunction addBaseInfo(item, options, callback) {\n var environment =\n (options.payload && options.payload.environment) || options.environment;\n item.data = _.merge(item.data, {\n environment: environment,\n level: item.level,\n endpoint: options.endpoint,\n platform: 'browser',\n framework: 'browser-js',\n language: 'javascript',\n server: {},\n uuid: item.uuid,\n notifier: {\n name: 'rollbar-browser-js',\n version: options.version,\n },\n custom: item.custom,\n });\n callback(null, item);\n}\n\nfunction addRequestInfo(window) {\n return function (item, options, callback) {\n var requestInfo = {};\n\n if (window && window.location) {\n requestInfo.url = window.location.href;\n requestInfo.query_string = window.location.search;\n }\n\n var remoteString = '$remote_ip';\n if (!options.captureIp) {\n remoteString = null;\n } else if (options.captureIp !== true) {\n remoteString += '_anonymize';\n }\n if (remoteString) requestInfo.user_ip = remoteString;\n\n if (Object.keys(requestInfo).length > 0) {\n _.set(item, 'data.request', requestInfo);\n }\n\n callback(null, item);\n };\n}\n\nfunction addClientInfo(window) {\n return function (item, options, callback) {\n if (!window) {\n return callback(null, item);\n }\n var nav = window.navigator || {};\n var scr = window.screen || {};\n _.set(item, 'data.client', {\n runtime_ms: item.timestamp - window._rollbarStartTime,\n timestamp: Math.round(item.timestamp / 1000),\n javascript: {\n browser: nav.userAgent,\n language: nav.language,\n cookie_enabled: nav.cookieEnabled,\n screen: {\n width: scr.width,\n height: scr.height,\n },\n },\n });\n callback(null, item);\n };\n}\n\nfunction addPluginInfo(window) {\n return function (item, options, callback) {\n if (!window || !window.navigator) {\n return callback(null, item);\n }\n var plugins = [];\n var navPlugins = window.navigator.plugins || [];\n var cur;\n for (var i = 0, l = navPlugins.length; i < l; ++i) {\n cur = navPlugins[i];\n plugins.push({ name: cur.name, description: cur.description });\n }\n _.set(item, 'data.client.javascript.plugins', plugins);\n callback(null, item);\n };\n}\n\nfunction addBody(item, options, callback) {\n if (item.stackInfo) {\n if (item.stackInfo.traceChain) {\n addBodyTraceChain(item, options, callback);\n } else {\n addBodyTrace(item, options, callback);\n }\n } else {\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction addBodyMessage(item, options, callback) {\n var message = item.message;\n var custom = item.custom;\n\n if (!message) {\n message = 'Item sent with null or missing arguments.';\n }\n var result = {\n body: message,\n };\n\n if (custom) {\n result.extra = _.merge(custom);\n }\n\n _.set(item, 'data.body', { message: result });\n callback(null, item);\n}\n\nfunction stackFromItem(item) {\n // Transform a TraceKit stackInfo object into a Rollbar trace\n var stack = item.stackInfo.stack;\n if (\n stack &&\n stack.length === 0 &&\n item._unhandledStackInfo &&\n item._unhandledStackInfo.stack\n ) {\n stack = item._unhandledStackInfo.stack;\n }\n return stack;\n}\n\nfunction addBodyTraceChain(item, options, callback) {\n var traceChain = item.stackInfo.traceChain;\n var traces = [];\n\n var traceChainLength = traceChain.length;\n for (var i = 0; i < traceChainLength; i++) {\n var trace = buildTrace(item, traceChain[i], options);\n traces.push(trace);\n }\n\n _.set(item, 'data.body', { trace_chain: traces });\n callback(null, item);\n}\n\nfunction addBodyTrace(item, options, callback) {\n var stack = stackFromItem(item);\n\n if (stack) {\n var trace = buildTrace(item, item.stackInfo, options);\n _.set(item, 'data.body', { trace: trace });\n callback(null, item);\n } else {\n var stackInfo = item.stackInfo;\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n\n item.message = className + ': ' + message;\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction buildTrace(item, stackInfo, options) {\n var description = item && item.data.description;\n var custom = item && item.custom;\n var stack = stackFromItem(item);\n\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n var trace = {\n exception: {\n class: className,\n message: message,\n },\n };\n\n if (description) {\n trace.exception.description = description;\n }\n\n if (stack) {\n if (stack.length === 0) {\n trace.exception.stack = stackInfo.rawStack;\n trace.exception.raw = String(stackInfo.rawException);\n }\n var stackFrame;\n var frame;\n var code;\n var pre;\n var post;\n var contextLength;\n var i, mid;\n\n trace.frames = [];\n for (i = 0; i < stack.length; ++i) {\n stackFrame = stack[i];\n frame = {\n filename: stackFrame.url ? _.sanitizeUrl(stackFrame.url) : '(unknown)',\n lineno: stackFrame.line || null,\n method:\n !stackFrame.func || stackFrame.func === '?'\n ? '[anonymous]'\n : stackFrame.func,\n colno: stackFrame.column,\n };\n if (options.sendFrameUrl) {\n frame.url = stackFrame.url;\n }\n if (\n frame.method &&\n frame.method.endsWith &&\n frame.method.endsWith('_rollbar_wrapped')\n ) {\n continue;\n }\n\n code = pre = post = null;\n contextLength = stackFrame.context ? stackFrame.context.length : 0;\n if (contextLength) {\n mid = Math.floor(contextLength / 2);\n pre = stackFrame.context.slice(0, mid);\n code = stackFrame.context[mid];\n post = stackFrame.context.slice(mid);\n }\n\n if (code) {\n frame.code = code;\n }\n\n if (pre || post) {\n frame.context = {};\n if (pre && pre.length) {\n frame.context.pre = pre;\n }\n if (post && post.length) {\n frame.context.post = post;\n }\n }\n\n if (stackFrame.args) {\n frame.args = stackFrame.args;\n }\n\n trace.frames.push(frame);\n }\n\n // NOTE(cory): reverse the frames since rollbar.com expects the most recent call last\n trace.frames.reverse();\n\n if (custom) {\n trace.extra = _.merge(custom);\n }\n }\n\n return trace;\n}\n\nfunction errorClass(stackInfo, guess, options) {\n if (stackInfo.name) {\n return stackInfo.name;\n } else if (options.guessErrorClass) {\n return guess;\n } else {\n return '(unknown)';\n }\n}\n\nfunction addScrubber(scrubFn) {\n return function (item, options, callback) {\n if (scrubFn) {\n var scrubFields = options.scrubFields || [];\n var scrubPaths = options.scrubPaths || [];\n item.data = scrubFn(item.data, scrubFields, scrubPaths);\n }\n callback(null, item);\n };\n}\n\nexport {\n handleDomException,\n handleItemWithError,\n ensureItemHasSomethingToSay,\n addBaseInfo,\n addRequestInfo,\n addClientInfo,\n addPluginInfo,\n addBody,\n addScrubber,\n};\n","import * as _ from './utility.js';\n\nfunction itemToPayload(item, options, callback) {\n if (item._isUncaught) {\n item.data._isUncaught = true;\n }\n if (item._originalArgs) {\n item.data._originalArgs = item._originalArgs;\n }\n callback(null, item);\n}\n\nfunction addPayloadOptions(item, options, callback) {\n var payloadOptions = options.payload || {};\n if (payloadOptions.body) {\n delete payloadOptions.body;\n }\n\n item.data = _.merge(item.data, payloadOptions);\n callback(null, item);\n}\n\nfunction addTelemetryData(item, options, callback) {\n if (item.telemetryEvents) {\n _.set(item, 'data.body.telemetry', item.telemetryEvents);\n }\n callback(null, item);\n}\n\nfunction addMessageWithError(item, options, callback) {\n if (!item.message) {\n callback(null, item);\n return;\n }\n var tracePath = 'data.body.trace_chain.0';\n var trace = _.get(item, tracePath);\n if (!trace) {\n tracePath = 'data.body.trace';\n trace = _.get(item, tracePath);\n }\n if (trace) {\n if (!(trace.exception && trace.exception.description)) {\n _.set(item, tracePath + '.exception.description', item.message);\n callback(null, item);\n return;\n }\n var extra = _.get(item, tracePath + '.extra') || {};\n var newExtra = _.merge(extra, { message: item.message });\n _.set(item, tracePath + '.extra', newExtra);\n }\n callback(null, item);\n}\n\nfunction userTransform(logger) {\n return function (item, options, callback) {\n var newItem = _.merge(item);\n var response = null;\n try {\n if (_.isFunction(options.transform)) {\n response = options.transform(newItem.data, item);\n }\n } catch (e) {\n options.transform = null;\n logger.error(\n 'Error while calling custom transform() function. Removing custom transform().',\n e,\n );\n callback(null, item);\n return;\n }\n if (_.isPromise(response)) {\n response.then(\n function (promisedItem) {\n if (promisedItem) {\n newItem.data = promisedItem;\n }\n callback(null, newItem);\n },\n function (error) {\n callback(error, item);\n },\n );\n } else {\n callback(null, newItem);\n }\n };\n}\n\nfunction addConfigToPayload(item, options, callback) {\n if (!options.sendConfig) {\n return callback(null, item);\n }\n var configKey = '_rollbarConfig';\n var custom = _.get(item, 'data.custom') || {};\n custom[configKey] = options;\n item.data.custom = custom;\n callback(null, item);\n}\n\nfunction addFunctionOption(options, name) {\n if (_.isFunction(options[name])) {\n options[name] = options[name].toString();\n }\n}\n\nfunction addConfiguredOptions(item, options, callback) {\n var configuredOptions = options._configuredOptions;\n\n // These must be stringified or they'll get dropped during serialization.\n addFunctionOption(configuredOptions, 'transform');\n addFunctionOption(configuredOptions, 'checkIgnore');\n addFunctionOption(configuredOptions, 'onSendCallback');\n\n delete configuredOptions.accessToken;\n item.data.notifier.configured_options = configuredOptions;\n callback(null, item);\n}\n\nfunction addDiagnosticKeys(item, options, callback) {\n var diagnostic = _.merge(\n item.notifier.client.notifier.diagnostic,\n item.diagnostic,\n );\n\n if (_.get(item, 'err._isAnonymous')) {\n diagnostic.is_anonymous = true;\n }\n\n if (item._isUncaught) {\n diagnostic.is_uncaught = item._isUncaught;\n }\n\n if (item.err) {\n try {\n diagnostic.raw_error = {\n message: item.err.message,\n name: item.err.name,\n constructor_name: item.err.constructor && item.err.constructor.name,\n filename: item.err.fileName,\n line: item.err.lineNumber,\n column: item.err.columnNumber,\n stack: item.err.stack,\n };\n } catch (e) {\n diagnostic.raw_error = { failed: String(e) };\n }\n }\n\n item.data.notifier.diagnostic = _.merge(\n item.data.notifier.diagnostic,\n diagnostic,\n );\n callback(null, item);\n}\n\nexport {\n itemToPayload,\n addPayloadOptions,\n addTelemetryData,\n addMessageWithError,\n userTransform,\n addConfigToPayload,\n addConfiguredOptions,\n addDiagnosticKeys,\n};\n","import * as _ from '../utility.js';\n\nfunction checkIgnore(item, settings) {\n if (_.get(settings, 'plugins.jquery.ignoreAjaxErrors')) {\n return !_.get(item, 'body.message.extra.isAjax');\n }\n return true;\n}\n\nexport { checkIgnore };\n","import * as _ from './utility.js';\n\nfunction checkLevel(item, settings) {\n var level = item.level;\n var levelVal = _.LEVELS[level] || 0;\n var reportLevel = settings.reportLevel;\n var reportLevelVal = _.LEVELS[reportLevel] || 0;\n\n if (levelVal < reportLevelVal) {\n return false;\n }\n return true;\n}\n\nfunction userCheckIgnore(logger) {\n return function (item, settings) {\n var isUncaught = !!item._isUncaught;\n delete item._isUncaught;\n var args = item._originalArgs;\n delete item._originalArgs;\n try {\n if (_.isFunction(settings.onSendCallback)) {\n settings.onSendCallback(isUncaught, args, item);\n }\n } catch (e) {\n settings.onSendCallback = null;\n logger.error('Error while calling onSendCallback, removing', e);\n }\n try {\n if (\n _.isFunction(settings.checkIgnore) &&\n settings.checkIgnore(isUncaught, args, item)\n ) {\n return false;\n }\n } catch (e) {\n settings.checkIgnore = null;\n logger.error('Error while calling custom checkIgnore(), removing', e);\n }\n return true;\n };\n}\n\nfunction urlIsNotBlockListed(logger) {\n return function (item, settings) {\n return !urlIsOnAList(item, settings, 'blocklist', logger);\n };\n}\n\nfunction urlIsSafeListed(logger) {\n return function (item, settings) {\n return urlIsOnAList(item, settings, 'safelist', logger);\n };\n}\n\nfunction matchFrames(trace, list, block) {\n if (!trace) {\n return !block;\n }\n\n var frames = trace.frames;\n\n if (!frames || frames.length === 0) {\n return !block;\n }\n\n var frame, filename, url, urlRegex;\n var listLength = list.length;\n var frameLength = frames.length;\n for (var i = 0; i < frameLength; i++) {\n frame = frames[i];\n filename = frame.filename;\n\n if (!_.isType(filename, 'string')) {\n return !block;\n }\n\n for (var j = 0; j < listLength; j++) {\n url = list[j];\n urlRegex = new RegExp(url);\n\n if (urlRegex.test(filename)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction urlIsOnAList(item, settings, safeOrBlock, logger) {\n // safelist is the default\n var block = false;\n if (safeOrBlock === 'blocklist') {\n block = true;\n }\n\n var list, traces;\n try {\n list = block ? settings.hostBlockList : settings.hostSafeList;\n traces = _.get(item, 'body.trace_chain') || [_.get(item, 'body.trace')];\n\n // These two checks are important to come first as they are defaults\n // in case the list is missing or the trace is missing or not well-formed\n if (!list || list.length === 0) {\n return !block;\n }\n if (traces.length === 0 || !traces[0]) {\n return !block;\n }\n\n var tracesLength = traces.length;\n for (var i = 0; i < tracesLength; i++) {\n if (matchFrames(traces[i], list, block)) {\n return true;\n }\n }\n } catch (\n e\n /* istanbul ignore next */\n ) {\n if (block) {\n settings.hostBlockList = null;\n } else {\n settings.hostSafeList = null;\n }\n var listName = block ? 'hostBlockList' : 'hostSafeList';\n logger.error(\n \"Error while reading your configuration's \" +\n listName +\n ' option. Removing custom ' +\n listName +\n '.',\n e,\n );\n return !block;\n }\n return false;\n}\n\nfunction messageIsIgnored(logger) {\n return function (item, settings) {\n var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages;\n\n try {\n messageIsIgnored = false;\n ignoredMessages = settings.ignoredMessages;\n\n if (!ignoredMessages || ignoredMessages.length === 0) {\n return true;\n }\n\n messages = messagesFromItem(item);\n\n if (messages.length === 0) {\n return true;\n }\n\n len = ignoredMessages.length;\n for (i = 0; i < len; i++) {\n rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi');\n\n for (j = 0; j < messages.length; j++) {\n messageIsIgnored = rIgnoredMessage.test(messages[j]);\n\n if (messageIsIgnored) {\n return false;\n }\n }\n }\n } catch (\n e\n /* istanbul ignore next */\n ) {\n settings.ignoredMessages = null;\n logger.error(\n \"Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages.\",\n );\n }\n\n return true;\n };\n}\n\nfunction messagesFromItem(item) {\n var body = item.body;\n var messages = [];\n\n // The payload schema only allows one of trace_chain, message, or trace.\n // However, existing test cases are based on having both trace and message present.\n // So here we preserve the ability to collect strings from any combination of these keys.\n if (body.trace_chain) {\n var traceChain = body.trace_chain;\n for (var i = 0; i < traceChain.length; i++) {\n var trace = traceChain[i];\n messages.push(_.get(trace, 'exception.message'));\n }\n }\n if (body.trace) {\n messages.push(_.get(body, 'trace.exception.message'));\n }\n if (body.message) {\n messages.push(_.get(body, 'message.body'));\n }\n return messages;\n}\n\nexport {\n checkLevel,\n userCheckIgnore,\n urlIsNotBlockListed,\n urlIsSafeListed,\n messageIsIgnored,\n};\n","/**\n * Default session replay recording options\n * See https://github.com/rrweb-io/rrweb/blob/master/guide.md#options for details\n */\nexport default {\n enabled: false, // Whether recording is enabled\n autoStart: true, // Start recording automatically when Rollbar initializes\n\n // defaults used by triggers that don't specify them\n triggerDefaults: {\n samplingRatio: 1.0,\n preDuration: 300,\n postDuration: 5,\n },\n triggers: [\n {\n type: 'occurrence',\n level: ['error', 'critical'],\n },\n ],\n\n debug: {\n logErrors: true, // Whether to log errors emitted by rrweb.\n logEmits: false, // Whether to log emitted events\n },\n\n // Recording options\n inlineStylesheet: true, // Whether to inline stylesheets to improve replay accuracy\n inlineImages: false, // Whether to record the image content\n collectFonts: true, // Whether to collect fonts in the website\n\n // Privacy options\n // Fine-grained control over which input types to mask\n // By default only password inputs are masked if maskInputs is true\n maskInputOptions: {\n password: true,\n email: false,\n tel: false,\n text: false,\n color: false,\n date: false,\n 'datetime-local': false,\n month: false,\n number: false,\n range: false,\n search: false,\n time: false,\n url: false,\n week: false,\n },\n\n // Mask all input values\n maskAllInputs: false,\n\n // Class names to block, mask, or ignore the content of elements.\n blockClass: 'rb-block',\n maskTextClass: 'rb-mask',\n ignoreClass: 'rb-ignore',\n\n // Remove unnecessary parts of the DOM\n // By default all removable elements are removed\n slimDOMOptions: {\n script: true, // Remove script elements\n comment: true, // Remove comments\n headFavicon: true, // Remove favicons in the head\n headWhitespace: true, // Remove whitespace in head\n headMetaDescKeywords: true, // Remove meta description and keywords\n headMetaSocial: true, // Remove social media meta tags\n headMetaRobots: true, // Remove robots meta directives\n headMetaHttpEquiv: true, // Remove http-equiv meta directives\n headMetaAuthorship: true, // Remove authorship meta directives\n headMetaVerification: true, // Remove verification meta directives\n },\n\n // Custom callbacks for advanced use cases\n // These are undefined by default and can be set programmatically\n // maskInputFn: undefined, // Custom function to mask input values\n // maskTextFn: undefined, // Custom function to mask text content\n // errorHandler: undefined, // Custom error handler for recording errors\n\n // Plugin system\n // plugins: [] // List of plugins to use (must be set programmatically)\n};\n","/**\n * Default tracing options\n */\nexport default {\n enabled: false,\n endpoint: 'api.rollbar.com/api/1/session/',\n};\n","/**\n * Default options shared across platforms\n */\nexport const version = '3.0.0-rc.1';\nexport const endpoint = 'api.rollbar.com/api/1/item/';\nexport const logLevel = 'debug';\nexport const reportLevel = 'debug';\nexport const uncaughtErrorLevel = 'error';\nexport const maxItems = 0;\nexport const itemsPerMin = 60;\n\nexport const commonScrubFields = [\n 'pw',\n 'pass',\n 'passwd',\n 'password',\n 'secret',\n 'confirm_password',\n 'confirmPassword',\n 'password_confirmation',\n 'passwordConfirmation',\n 'access_token',\n 'accessToken',\n 'X-Rollbar-Access-Token',\n 'secret_key',\n 'secretKey',\n 'secretToken',\n];\n\nexport const apiScrubFields = [\n 'api_key',\n 'authenticity_token',\n 'oauth_token',\n 'token',\n 'user_session_secret',\n];\n\nexport const requestScrubFields = [\n 'request.session.csrf',\n 'request.session._csrf',\n 'request.params._csrf',\n 'request.cookie',\n 'request.cookies',\n];\n\nexport const commonScrubHeaders = [\n 'authorization',\n 'www-authorization',\n 'http_authorization',\n 'omniauth.auth',\n 'cookie',\n 'oauth-access-token',\n 'x-access-token',\n 'x_csrf_token',\n 'http_x_csrf_token',\n 'x-csrf-token',\n];\n\n// For backward compatibility with default export\nexport default {\n version,\n endpoint,\n logLevel,\n reportLevel,\n uncaughtErrorLevel,\n maxItems,\n itemsPerMin,\n};\n","/**\n * Default browser options\n */\nimport { commonScrubFields } from '../defaults.js';\n\nexport const scrubFields = [\n ...commonScrubFields,\n 'cc-number',\n 'card number',\n 'cardnumber',\n 'cardnum',\n 'ccnum',\n 'ccnumber',\n 'cc num',\n 'creditcardnumber',\n 'credit card number',\n 'newcreditcardnumber',\n 'new credit card',\n 'creditcardno',\n 'credit card no',\n 'card#',\n 'card #',\n 'cc-csc',\n 'cvc',\n 'cvc2',\n 'cvv2',\n 'ccv2',\n 'security code',\n 'card verification',\n 'name on credit card',\n 'name on card',\n 'nameoncard',\n 'cardholder',\n 'card holder',\n 'name des karteninhabers',\n 'ccname',\n 'card type',\n 'cardtype',\n 'cc type',\n 'cctype',\n 'payment type',\n 'expiration date',\n 'expirationdate',\n 'expdate',\n 'cc-exp',\n 'ccmonth',\n 'ccyear',\n];\n\n// For compatibility with existing code that expects default export with scrubFields property\nexport default { scrubFields };\n","import Client from '../rollbar.js';\nimport * as _ from '../utility.js';\nimport API from '../api.js';\nimport logger from '../logger.js';\nimport * as globals from './globalSetup.js';\n\nimport Transport from './transport.js';\nimport * as urllib from './url.js';\n\nimport * as transforms from './transforms.js';\nimport * as sharedTransforms from '../transforms.js';\nimport * as predicates from './predicates.js';\nimport * as sharedPredicates from '../predicates.js';\nimport errorParser from '../errorParser.js';\nimport replayDefaults from './replay/defaults.js';\nimport tracingDefaults from '../tracing/defaults.js';\n\n// Used to support global `Rollbar` instance.\nlet _instance = null;\n\nclass Rollbar {\n constructor(options, client) {\n logger.init({ logLevel: options.logLevel || 'error' });\n this.options = _.handleOptions(defaultOptions, options, null, logger);\n this.options._configuredOptions = options;\n this.components = this.components || {};\n const Telemeter = this.components.telemeter;\n const Instrumenter = this.components.instrumenter;\n this.wrapGlobals = this.components.wrapGlobals;\n this.scrub = this.components.scrub;\n const truncation = this.components.truncation;\n const Tracing = this.components.tracing;\n const Replay = this.components.replay;\n\n const transport = new Transport(truncation);\n const api = new API(this.options, transport, urllib, truncation);\n if (Tracing) {\n this.tracing = new Tracing(_gWindow(), api, this.options);\n this.tracing.initSession();\n }\n if (Telemeter) {\n this.telemeter = new Telemeter(this.options, this.tracing);\n }\n\n if (Replay && _.isBrowser()) {\n const replayOptions = this.options.replay;\n this.replay = new Replay({\n tracing: this.tracing,\n telemeter: this.telemeter,\n options: replayOptions,\n });\n\n if (replayOptions.enabled && replayOptions.autoStart) {\n this.replay.recorder.start();\n }\n }\n\n this.client =\n client ||\n new Client(\n this.options,\n api,\n logger,\n this.telemeter,\n this.tracing,\n this.replay,\n 'browser',\n );\n var gWindow = _gWindow();\n var gDocument = typeof document != 'undefined' && document;\n this.isChrome = gWindow.chrome && gWindow.chrome.runtime; // check .runtime to avoid Edge browsers\n this.anonymousErrorsPending = 0;\n addTransformsToNotifier(this.client.notifier, this, gWindow);\n addPredicatesToQueue(this.client.queue);\n this.setupUnhandledCapture();\n if (Instrumenter) {\n this.instrumenter = new Instrumenter(\n this.options,\n this.client.telemeter,\n this,\n gWindow,\n gDocument,\n );\n this.instrumenter.instrument();\n }\n\n this.setSessionAttributesFromOptions(options);\n\n // Used with rollbar-react for rollbar-react-native compatibility.\n this.rollbar = this;\n }\n\n static init(options, client) {\n if (_instance) {\n return _instance.global(options).configure(options);\n }\n _instance = new Rollbar(options, client);\n return _instance;\n }\n\n static setComponents(components) {\n Rollbar.prototype.components = components;\n }\n\n global(options) {\n this.client.global(options);\n return this;\n }\n\n configure(options, payloadData) {\n if (options.logLevel) {\n logger.init({ logLevel: options.logLevel });\n }\n this.setSessionAttributesFromOptions(options);\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.handleOptions(oldOptions, options, payload, logger);\n this.options._configuredOptions = _.handleOptions(\n oldOptions._configuredOptions,\n options,\n payload,\n );\n\n this.tracing?.configure(this.options);\n this.replay?.configure(this.options.replay);\n this.client.configure(this.options, payloadData);\n this.instrumenter?.configure(this.options);\n this.setupUnhandledCapture();\n return this;\n }\n\n lastError() {\n return this.client.lastError;\n }\n\n log() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.log(item);\n return { uuid: uuid };\n }\n\n debug() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.debug(item);\n return { uuid: uuid };\n }\n\n info() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.info(item);\n return { uuid: uuid };\n }\n\n warn() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warn(item);\n return { uuid: uuid };\n }\n\n warning() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warning(item);\n return { uuid: uuid };\n }\n\n error() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.error(item);\n return { uuid: uuid };\n }\n\n critical() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.critical(item);\n return { uuid: uuid };\n }\n\n buildJsonPayload(item) {\n return this.client.buildJsonPayload(item);\n }\n\n sendJsonPayload(jsonPayload) {\n return this.client.sendJsonPayload(jsonPayload);\n }\n\n triggerDirectReplay(context) {\n return this.triggerReplay({ type: 'direct', ...context });\n }\n\n triggerReplay(context) {\n if (!this.replay) return null;\n\n return this.replay.triggerReplay(context);\n }\n\n setupUnhandledCapture() {\n var gWindow = _gWindow();\n\n if (!this.unhandledExceptionsInitialized) {\n if (\n this.options.captureUncaught ||\n this.options.handleUncaughtExceptions\n ) {\n globals.captureUncaughtExceptions(gWindow, this);\n if (this.wrapGlobals && this.options.wrapGlobalEventHandlers) {\n this.wrapGlobals(gWindow, this);\n }\n this.unhandledExceptionsInitialized = true;\n }\n }\n if (!this.unhandledRejectionsInitialized) {\n if (\n this.options.captureUnhandledRejections ||\n this.options.handleUnhandledRejections\n ) {\n globals.captureUnhandledRejections(gWindow, this);\n this.unhandledRejectionsInitialized = true;\n }\n }\n }\n\n handleUncaughtException(message, url, lineno, colno, error, context) {\n if (\n !this.options.captureUncaught &&\n !this.options.handleUncaughtExceptions\n ) {\n return;\n }\n\n // Chrome will always send 5+ arguments and error will be valid or null, not undefined.\n // If error is undefined, we have a different caller.\n // Chrome also sends errors from web workers with null error, but does not invoke\n // prepareStackTrace() for these. Test for empty url to skip them.\n if (\n this.options.inspectAnonymousErrors &&\n this.isChrome &&\n error === null &&\n url === ''\n ) {\n return 'anonymous';\n }\n\n var item;\n var stackInfo = _.makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n 'onerror',\n 'uncaught exception',\n errorParser,\n );\n if (_.isError(error)) {\n item = this._createItem([message, error, context]);\n item._unhandledStackInfo = stackInfo;\n } else if (_.isError(url)) {\n item = this._createItem([message, url, context]);\n item._unhandledStackInfo = stackInfo;\n } else {\n item = this._createItem([message, context]);\n item.stackInfo = stackInfo;\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n this.client.log(item);\n }\n\n /**\n * Chrome only. Other browsers will ignore.\n *\n * Use Error.prepareStackTrace to extract information about errors that\n * do not have a valid error object in onerror().\n *\n * In tested version of Chrome, onerror is called first but has no way\n * to communicate with prepareStackTrace. Use a counter to let this\n * handler know which errors to send to Rollbar.\n *\n * In config options, set inspectAnonymousErrors to enable.\n */\n handleAnonymousErrors() {\n if (!this.options.inspectAnonymousErrors || !this.isChrome) {\n return;\n }\n\n var r = this;\n function prepareStackTrace(error, _stack) {\n if (r.options.inspectAnonymousErrors) {\n if (r.anonymousErrorsPending) {\n // This is the only known way to detect that onerror saw an anonymous error.\n // It depends on onerror reliably being called before Error.prepareStackTrace,\n // which so far holds true on tested versions of Chrome. If versions of Chrome\n // are tested that behave differently, this logic will need to be updated\n // accordingly.\n r.anonymousErrorsPending -= 1;\n\n if (!error) {\n // Not likely to get here, but calling handleUncaughtException from here\n // without an error object would throw off the anonymousErrorsPending counter,\n // so return now.\n return;\n }\n\n // Allow this to be tracked later.\n error._isAnonymous = true;\n\n // url, lineno, colno shouldn't be needed for these errors.\n // If that changes, update this accordingly, using the unused\n // _stack param as needed (rather than parse error.toString()).\n r.handleUncaughtException(error.message, null, null, null, error);\n }\n }\n\n // Workaround to ensure stack is preserved for normal errors.\n return error.stack;\n }\n\n // https://v8.dev/docs/stack-trace-api\n try {\n Error.prepareStackTrace = prepareStackTrace;\n } catch (e) {\n this.options.inspectAnonymousErrors = false;\n this.error('anonymous error handler failed', e);\n }\n }\n\n handleUnhandledRejection(reason, promise) {\n if (\n !this.options.captureUnhandledRejections &&\n !this.options.handleUnhandledRejections\n ) {\n return;\n }\n\n var message = 'unhandled rejection was null or undefined!';\n if (reason) {\n if (reason.message) {\n message = reason.message;\n } else {\n var reasonResult = _.stringify(reason);\n if (reasonResult.value) {\n message = reasonResult.value;\n }\n }\n }\n var context =\n (reason && reason._rollbarContext) ||\n (promise && promise._rollbarContext);\n\n var item;\n if (_.isError(reason)) {\n item = this._createItem([message, reason, context]);\n } else {\n item = this._createItem([message, reason, context]);\n item.stackInfo = _.makeUnhandledStackInfo(\n message,\n '',\n 0,\n 0,\n null,\n 'unhandledrejection',\n '',\n errorParser,\n );\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n item._originalArgs = item._originalArgs || [];\n item._originalArgs.push(promise);\n this.client.log(item);\n }\n\n wrap(f, context, _before) {\n try {\n var ctxFn;\n if (_.isFunction(context)) {\n ctxFn = context;\n } else {\n ctxFn = function () {\n return context || {};\n };\n }\n\n if (!_.isFunction(f)) {\n return f;\n }\n\n if (f._isWrap) {\n return f;\n }\n\n if (!f._rollbar_wrapped) {\n f._rollbar_wrapped = function () {\n if (_before && _.isFunction(_before)) {\n _before.apply(this, arguments);\n }\n try {\n return f.apply(this, arguments);\n } catch (exc) {\n var e = exc;\n if (e && window._rollbarWrappedError !== e) {\n if (_.isType(e, 'string')) {\n e = new String(e);\n }\n e._rollbarContext = ctxFn() || {};\n e._rollbarContext._wrappedSource = f.toString();\n\n window._rollbarWrappedError = e;\n }\n throw e;\n }\n };\n\n f._rollbar_wrapped._isWrap = true;\n\n if (f.hasOwnProperty) {\n for (var prop in f) {\n if (f.hasOwnProperty(prop) && prop !== '_rollbar_wrapped') {\n f._rollbar_wrapped[prop] = f[prop];\n }\n }\n }\n }\n\n return f._rollbar_wrapped;\n } catch (e) {\n // Return the original function if the wrap fails.\n return f;\n }\n }\n\n captureEvent() {\n var event = _.createTelemetryEvent(arguments);\n return this.client.captureEvent(event.type, event.metadata, event.level);\n }\n\n setSessionUser(user) {\n if (!this.tracing?.session) return;\n\n this.tracing.session.setUser(user);\n }\n\n setSessionAttributes(attrs) {\n if (!this.tracing?.session) return;\n\n attrs = { ...attrs };\n\n this.tracing.session.setAttributes(attrs);\n }\n\n setSessionAttributesFromOptions(options) {\n const person = options.person || options.payload?.person;\n if (person) {\n this.setSessionUser(person);\n }\n const code_version =\n options.client?.javascript?.code_version ||\n options.codeVersion ||\n options.code_version ||\n options.payload?.client?.javascript?.code_version ||\n options.payload?.code_version ||\n options.payload?.codeVersion;\n this.setSessionAttributes({\n 'rollbar.codeVersion': code_version,\n 'rollbar.notifier.name': 'rollbar-browser-js',\n 'rollbar.notifier.version': options.version,\n });\n }\n\n // The following two methods are used internally and are not meant for public use\n captureDomContentLoaded(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureDomContentLoaded(ts);\n }\n\n captureLoad(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureLoad(ts);\n }\n\n loadFull() {\n logger.info(\n 'Unexpected Rollbar.loadFull() called on a Notifier instance. This can happen when Rollbar is loaded multiple times.',\n );\n }\n\n _createItem(args) {\n return _.createItem(args, logger, this);\n }\n\n // Static version of instance methods support the legacy pattern of a\n // global `Rollbar` instance, where after calling `Rollbar.init()`,\n // `Rollbar` can be used as if it were an instance.\n // If support for this pattern is dropped, these static methods can be removed.\n static callInstance(method, args) {\n if (!_instance) {\n const message = 'Rollbar is not initialized';\n logger.error(message);\n const maybeCallback = _getFirstFunction(args);\n if (maybeCallback) {\n maybeCallback(new Error(message));\n }\n return;\n }\n return _instance[method].apply(_instance, args);\n }\n\n static global = (...args) => Rollbar.callInstance('global', args);\n static configure = (...args) => Rollbar.callInstance('configure', args);\n static lastError = (...args) => Rollbar.callInstance('lastError', args);\n static log = (...args) => Rollbar.callInstance('log', args);\n static debug = (...args) => Rollbar.callInstance('debug', args);\n static info = (...args) => Rollbar.callInstance('info', args);\n static warn = (...args) => Rollbar.callInstance('warn', args);\n static warning = (...args) => Rollbar.callInstance('warning', args);\n static error = (...args) => Rollbar.callInstance('error', args);\n static critical = (...args) => Rollbar.callInstance('critical', args);\n static buildJsonPayload = (...args) =>\n Rollbar.callInstance('buildJsonPayload', args);\n static sendJsonPayload = (...args) =>\n Rollbar.callInstance('sendJsonPayload', args);\n static wrap = (...args) => Rollbar.callInstance('wrap', args);\n static captureEvent = (...args) => Rollbar.callInstance('captureEvent', args);\n}\n\n/* Internal */\n\nfunction addTransformsToNotifier(notifier, rollbar, gWindow) {\n notifier\n .addTransform(transforms.handleDomException)\n .addTransform(transforms.handleItemWithError)\n .addTransform(transforms.ensureItemHasSomethingToSay)\n .addTransform(transforms.addBaseInfo)\n .addTransform(transforms.addRequestInfo(gWindow))\n .addTransform(transforms.addClientInfo(gWindow))\n .addTransform(transforms.addPluginInfo(gWindow))\n .addTransform(transforms.addBody)\n .addTransform(sharedTransforms.addMessageWithError)\n .addTransform(sharedTransforms.addTelemetryData)\n .addTransform(sharedTransforms.addConfigToPayload)\n .addTransform(transforms.addScrubber(rollbar.scrub))\n .addTransform(sharedTransforms.addPayloadOptions)\n .addTransform(sharedTransforms.userTransform(logger))\n .addTransform(sharedTransforms.addConfiguredOptions)\n .addTransform(sharedTransforms.addDiagnosticKeys)\n .addTransform(sharedTransforms.itemToPayload);\n}\n\nfunction addPredicatesToQueue(queue) {\n queue\n .addPredicate(sharedPredicates.checkLevel)\n .addPredicate(predicates.checkIgnore)\n .addPredicate(sharedPredicates.userCheckIgnore(logger))\n .addPredicate(sharedPredicates.urlIsNotBlockListed(logger))\n .addPredicate(sharedPredicates.urlIsSafeListed(logger))\n .addPredicate(sharedPredicates.messageIsIgnored(logger));\n}\n\nfunction _getFirstFunction(args) {\n for (var i = 0, len = args.length; i < len; ++i) {\n if (_.isFunction(args[i])) {\n return args[i];\n }\n }\n return undefined;\n}\n\nfunction _gWindow() {\n return (\n (typeof window != 'undefined' && window) ||\n (typeof self != 'undefined' && self)\n );\n}\n\nimport {\n version,\n logLevel,\n reportLevel,\n uncaughtErrorLevel,\n endpoint,\n} from '../defaults.js';\nimport browserDefaults from './defaults.js';\n\nconst defaultOptions = {\n environment: 'unknown',\n version: version,\n scrubFields: browserDefaults.scrubFields,\n logLevel: logLevel,\n reportLevel: reportLevel,\n uncaughtErrorLevel: uncaughtErrorLevel,\n endpoint: endpoint,\n verbose: false,\n enabled: true,\n transmit: true,\n sendConfig: false,\n includeItemsInTelemetry: true,\n captureIp: true,\n inspectAnonymousErrors: true,\n ignoreDuplicateErrors: true,\n wrapGlobalEventHandlers: false,\n replay: replayDefaults,\n tracing: tracingDefaults,\n};\n\nexport default Rollbar;\n","import * as _ from './utility.js';\n\nconst MAX_EVENTS = 100;\n\n// Temporary workaround while solving commonjs -> esm issues in Node 18 - 20.\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\nclass Telemeter {\n constructor(options, tracing) {\n this.queue = [];\n this.options = _.merge(options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n this.tracing = tracing;\n this.telemetrySpan = this.tracing?.startSpan('rollbar-telemetry', {});\n }\n\n configure(options) {\n var oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n var newMaxEvents = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n var deleteCount = 0;\n if (this.queue.length > newMaxEvents) {\n deleteCount = this.queue.length - newMaxEvents;\n }\n this.maxQueueSize = newMaxEvents;\n this.queue.splice(0, deleteCount);\n }\n\n copyEvents() {\n var events = Array.prototype.slice.call(this.queue, 0);\n if (_.isFunction(this.options.filterTelemetry)) {\n try {\n var i = events.length;\n while (i--) {\n if (this.options.filterTelemetry(events[i])) {\n events.splice(i, 1);\n }\n }\n } catch (e) {\n this.options.filterTelemetry = null;\n }\n }\n\n // Filter until supported in legacy telemetry\n events = events.filter((e) => e.type !== 'connectivity');\n\n // Remove internal keys from output\n events = events.map(({ otelAttributes, ...event }) => event);\n\n return events;\n }\n\n exportTelemetrySpan(attributes = {}) {\n if (this.telemetrySpan) {\n this.telemetrySpan.end(attributes);\n this.telemetrySpan = this.tracing.startSpan('rollbar-telemetry', {});\n }\n }\n\n capture(\n type,\n metadata,\n level,\n rollbarUUID,\n timestamp = null,\n otelAttributes = null,\n ) {\n var e = {\n level: getLevel(type, level),\n type: type,\n timestamp_ms: timestamp || _.now(),\n body: metadata,\n source: 'client',\n };\n if (rollbarUUID) {\n e.uuid = rollbarUUID;\n }\n if (otelAttributes) {\n e.otelAttributes = otelAttributes;\n }\n\n try {\n if (\n _.isFunction(this.options.filterTelemetry) &&\n this.options.filterTelemetry(e)\n ) {\n return false;\n }\n } catch (exc) {\n this.options.filterTelemetry = null;\n }\n\n this.push(e);\n return e;\n }\n\n captureEvent(type, metadata, level, rollbarUUID) {\n return this.capture(type, metadata, level, rollbarUUID);\n }\n\n captureError(err, level, rollbarUUID, timestamp) {\n const message = err.message || String(err);\n var metadata = { message };\n if (err.stack) {\n metadata.stack = err.stack;\n }\n const otelAttributes = {\n message,\n level,\n type: 'error',\n uuid: rollbarUUID,\n };\n\n this.telemetrySpan?.addEvent(\n 'rollbar-occurrence-event',\n otelAttributes,\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'error',\n metadata,\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureLog(message, level, rollbarUUID, timestamp) {\n let otelAttributes = null;\n\n // If the uuid is present, this is a message occurrence.\n if (rollbarUUID) {\n ((otelAttributes = {\n message,\n level,\n type: 'message',\n uuid: rollbarUUID,\n }),\n this.telemetrySpan?.addEvent(\n 'rollbar-occurrence-event',\n otelAttributes,\n fromMillis(timestamp),\n ));\n } else {\n otelAttributes = { message, level };\n this.telemetrySpan?.addEvent(\n 'rollbar-log-event',\n otelAttributes,\n fromMillis(timestamp),\n );\n }\n\n return this.capture(\n 'log',\n { message },\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNetwork(metadata, subtype, rollbarUUID, requestData) {\n subtype = subtype || 'xhr';\n metadata.subtype = metadata.subtype || subtype;\n if (requestData) {\n metadata.request = requestData;\n }\n const level = this.levelFromStatus(metadata.status_code);\n const endTimeNano = (metadata.end_time_ms || 0) * 1e6;\n const otelAttributes = {\n type: metadata.subtype,\n method: metadata.method,\n url: metadata.url,\n statusCode: metadata.status_code,\n 'request.headers': JSON.stringify(metadata.request_headers || {}),\n 'response.headers': JSON.stringify(metadata.response?.headers || {}),\n 'response.timeUnixNano': endTimeNano.toString(),\n };\n\n this.telemetrySpan?.addEvent(\n 'rollbar-network-event',\n otelAttributes,\n fromMillis(metadata.start_time_ms),\n );\n\n return this.capture(\n 'network',\n metadata,\n level,\n rollbarUUID,\n metadata.start_time_ms,\n otelAttributes,\n );\n }\n\n levelFromStatus(statusCode) {\n if (statusCode >= 200 && statusCode < 400) {\n return 'info';\n }\n if (statusCode === 0 || statusCode >= 400) {\n return 'error';\n }\n return 'info';\n }\n\n captureDom(subtype, element, value, checked, rollbarUUID) {\n var metadata = {\n subtype: subtype,\n element: element,\n };\n if (value !== undefined) {\n metadata.value = value;\n }\n if (checked !== undefined) {\n metadata.checked = checked;\n }\n return this.capture('dom', metadata, 'info', rollbarUUID);\n }\n\n captureInput({ type, isSynthetic, element, value, timestamp }) {\n const name = 'rollbar-input-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n value,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n value,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureClick({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-click-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n _getRepeatedEvent(name, attributes) {\n const lastEvent = this._lastEvent(this.queue);\n\n if (\n lastEvent &&\n lastEvent.body.type === name &&\n lastEvent.otelAttributes.target === attributes.target\n ) {\n return lastEvent;\n }\n }\n\n _updateRepeatedEvent(event, attributes, timestamp) {\n const duration = Math.max(timestamp - event.timestamp_ms, 1);\n event.body.value = attributes.value;\n event.otelAttributes.value = attributes.value;\n event.otelAttributes.height = attributes.height;\n event.otelAttributes.width = attributes.width;\n event.otelAttributes.textZoomRatio = attributes.textZoomRatio;\n event.otelAttributes['endTimeUnixNano'] = fromMillis(timestamp);\n event.otelAttributes['durationUnixNano'] = fromMillis(duration);\n event.otelAttributes.count = (event.otelAttributes.count || 1) + 1;\n event.otelAttributes.rate = event.otelAttributes.count / (duration / 1000);\n }\n\n _lastEvent(list) {\n return list.length > 0 ? list[list.length - 1] : null;\n }\n\n captureFocus({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-focus-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureResize({\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n timestamp,\n }) {\n const name = 'rollbar-resize-event';\n const metadata = {\n type: name,\n subtype: type,\n width,\n height,\n textZoomRatio,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n };\n\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureDragDrop({\n type,\n isSynthetic,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n timestamp,\n }) {\n const name = 'rollbar-dragdrop-event';\n let metadata = {\n type: name,\n subtype: type,\n isSynthetic,\n };\n\n let otelAttributes = {\n type,\n isSynthetic,\n };\n\n if (type === 'dragstart') {\n metadata = { ...metadata, element, dropEffect, effectAllowed };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n };\n }\n\n if (type === 'drop') {\n metadata = {\n ...metadata,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNavigation(from, to, rollbarUUID, timestamp) {\n this.telemetrySpan?.addEvent(\n 'rollbar-navigation-event',\n { 'previous.url.full': from, 'url.full': to },\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'navigation',\n { from, to },\n 'info',\n rollbarUUID,\n timestamp,\n );\n }\n\n captureDomContentLoaded(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'DOMContentLoaded' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'DOMContentLoaded'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureLoad(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'load' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'load'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureConnectivityChange({ type, isSynthetic, timestamp }) {\n const name = 'rollbar-connectivity-event';\n const metadata = {\n type: name,\n subtype: type,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'connectivity',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n // Only intended to be used internally by the notifier\n _captureRollbarItem(item) {\n if (!this.options.includeItemsInTelemetry) {\n return;\n }\n if (item.err) {\n return this.captureError(item.err, item.level, item.uuid, item.timestamp);\n }\n if (item.message) {\n return this.captureLog(\n item.message,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n if (item.custom) {\n return this.capture(\n 'log',\n item.custom,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n }\n\n push(e) {\n this.queue.push(e);\n if (this.queue.length > this.maxQueueSize) {\n this.queue.shift();\n }\n }\n}\n\nfunction getLevel(type, level) {\n if (level) {\n return level;\n }\n var defaultLevel = {\n error: 'error',\n manual: 'info',\n };\n return defaultLevel[type] || 'info';\n}\n\nexport default Telemeter;\n","/*\n * headers - Detect when fetch Headers are undefined and use a partial polyfill.\n *\n * A full polyfill is not used in order to keep package size as small as possible.\n * Since this is only used internally and is not added to the window object,\n * the full interface doesn't need to be supported.\n *\n * This implementation is modified from whatwg-fetch:\n * https://github.com/github/fetch\n */\nfunction headers(headers) {\n if (typeof Headers === 'undefined') {\n return new FetchHeaders(headers);\n }\n\n return new Headers(headers);\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n return name.toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value;\n}\n\nfunction iteratorFor(items) {\n var iterator = {\n next: function () {\n var value = items.shift();\n return { done: value === undefined, value: value };\n },\n };\n\n return iterator;\n}\n\nfunction FetchHeaders(headers) {\n this.map = {};\n\n if (headers instanceof FetchHeaders) {\n headers.forEach(function (value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function (header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function (name) {\n this.append(name, headers[name]);\n }, this);\n }\n}\n\nFetchHeaders.prototype.append = function (name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n};\n\nFetchHeaders.prototype.get = function (name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null;\n};\n\nFetchHeaders.prototype.has = function (name) {\n return this.map.hasOwnProperty(normalizeName(name));\n};\n\nFetchHeaders.prototype.forEach = function (callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n};\n\nFetchHeaders.prototype.entries = function () {\n var items = [];\n this.forEach(function (value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items);\n};\n\nexport default headers;\n","function replace(obj, name, replacement, replacements, type) {\n var orig = obj[name];\n obj[name] = replacement(orig);\n if (replacements) {\n replacements[type].push([obj, name, orig]);\n }\n}\n\nexport default replace;\n","import * as _ from '../utility.js';\n\nfunction traverse(obj, func, seen) {\n var k, v, i;\n var isObj = _.isType(obj, 'object');\n var isArray = _.isType(obj, 'array');\n var keys = [];\n var seenIndex;\n\n // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11.\n seen = seen || { obj: [], mapped: [] };\n\n if (isObj) {\n seenIndex = seen.obj.indexOf(obj);\n\n if (isObj && seenIndex !== -1) {\n // Prefer the mapped object if there is one.\n return seen.mapped[seenIndex] || seen.obj[seenIndex];\n }\n\n seen.obj.push(obj);\n seenIndex = seen.obj.length - 1;\n }\n\n if (isObj) {\n for (k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k)) {\n keys.push(k);\n }\n }\n } else if (isArray) {\n for (i = 0; i < obj.length; ++i) {\n keys.push(i);\n }\n }\n\n var result = isObj ? {} : [];\n var same = true;\n for (i = 0; i < keys.length; ++i) {\n k = keys[i];\n v = obj[k];\n result[k] = func(k, v, seen);\n same = same && result[k] === obj[k];\n }\n\n if (isObj && !same) {\n seen.mapped[seenIndex] = result;\n }\n\n return !same ? result : obj;\n}\n\nexport default traverse;\n","import * as _ from './utility.js';\nimport traverse from './utility/traverse.js';\n\nfunction scrub(data, scrubFields, scrubPaths) {\n scrubFields = scrubFields || [];\n\n if (scrubPaths) {\n for (var i = 0; i < scrubPaths.length; ++i) {\n scrubPath(data, scrubPaths[i]);\n }\n }\n\n var paramRes = _getScrubFieldRegexs(scrubFields);\n var queryRes = _getScrubQueryParamRegexs(scrubFields);\n\n function redactQueryParam(dummy0, paramPart) {\n return paramPart + _.redact();\n }\n\n function paramScrubber(v) {\n var i;\n if (_.isType(v, 'string')) {\n for (i = 0; i < queryRes.length; ++i) {\n v = v.replace(queryRes[i], redactQueryParam);\n }\n }\n return v;\n }\n\n function valScrubber(k, v) {\n var i;\n for (i = 0; i < paramRes.length; ++i) {\n if (paramRes[i].test(k)) {\n v = _.redact();\n break;\n }\n }\n return v;\n }\n\n function scrubber(k, v, seen) {\n var tmpV = valScrubber(k, v);\n if (tmpV === v) {\n if (_.isType(v, 'object') || _.isType(v, 'array')) {\n return traverse(v, scrubber, seen);\n }\n return paramScrubber(tmpV);\n } else {\n return tmpV;\n }\n }\n\n return traverse(data, scrubber);\n}\n\nfunction scrubPath(obj, path) {\n var keys = path.split('.');\n var last = keys.length - 1;\n try {\n for (var i = 0; i <= last; ++i) {\n if (i < last) {\n obj = obj[keys[i]];\n } else {\n obj[keys[i]] = _.redact();\n }\n }\n } catch (e) {\n // Missing key is OK;\n }\n}\n\nfunction _getScrubFieldRegexs(scrubFields) {\n var ret = [];\n var pat;\n for (var i = 0; i < scrubFields.length; ++i) {\n pat = '^\\\\[?(%5[bB])?' + scrubFields[i] + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?$';\n ret.push(new RegExp(pat, 'i'));\n }\n return ret;\n}\n\nfunction _getScrubQueryParamRegexs(scrubFields) {\n var ret = [];\n var pat;\n for (var i = 0; i < scrubFields.length; ++i) {\n pat = '\\\\[?(%5[bB])?' + scrubFields[i] + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?';\n ret.push(new RegExp('(' + pat + '=)([^&\\\\n]+)', 'igm'));\n }\n return ret;\n}\n\nexport default scrub;\n","function getElementType(e) {\n return (e.getAttribute('type') || '').toLowerCase();\n}\n\nfunction isDescribedElement(element, type, subtypes) {\n if (element.tagName.toLowerCase() !== type.toLowerCase()) {\n return false;\n }\n if (!subtypes) {\n return true;\n }\n element = getElementType(element);\n for (var i = 0; i < subtypes.length; i++) {\n if (subtypes[i] === element) {\n return true;\n }\n }\n return false;\n}\n\nfunction getElementFromEvent(evt, doc) {\n if (evt.target) {\n return evt.target;\n }\n if (doc && doc.elementFromPoint) {\n return doc.elementFromPoint(evt.clientX, evt.clientY);\n }\n return undefined;\n}\n\nfunction treeToArray(elem) {\n var MAX_HEIGHT = 5;\n var out = [];\n var nextDescription;\n for (var height = 0; elem && height < MAX_HEIGHT; height++) {\n nextDescription = describeElement(elem);\n if (nextDescription.tagName === 'html') {\n break;\n }\n out.unshift(nextDescription);\n elem = elem.parentNode;\n }\n return out;\n}\n\nfunction elementArrayToString(a) {\n var MAX_LENGTH = 80;\n var separator = ' > ',\n separatorLength = separator.length;\n var out = [],\n len = 0,\n nextStr,\n totalLength;\n\n for (var i = a.length - 1; i >= 0; i--) {\n nextStr = descriptionToString(a[i]);\n totalLength = len + out.length * separatorLength + nextStr.length;\n if (i < a.length - 1 && totalLength >= MAX_LENGTH + 3) {\n out.unshift('...');\n break;\n }\n out.unshift(nextStr);\n len += nextStr.length;\n }\n return out.join(separator);\n}\n\nfunction elementString(elem) {\n return elementArrayToString(treeToArray(elem));\n}\n\nfunction descriptionToString(desc) {\n if (!desc || !desc.tagName) {\n return '';\n }\n var out = [desc.tagName];\n if (desc.id) {\n out.push('#' + desc.id);\n }\n if (desc.classes) {\n out.push('.' + desc.classes.join('.'));\n }\n for (var i = 0; i < desc.attributes.length; i++) {\n out.push(\n '[' + desc.attributes[i].key + '=\"' + desc.attributes[i].value + '\"]',\n );\n }\n\n return out.join('');\n}\n\n/**\n * Input: a dom element\n * Output: null if tagName is falsey or input is falsey, else\n * {\n * tagName: String,\n * id: String | undefined,\n * classes: [String] | undefined,\n * attributes: [\n * {\n * key: OneOf(type, name, title, alt),\n * value: String\n * }\n * ]\n * }\n */\nfunction describeElement(elem) {\n if (!elem || !elem.tagName) {\n return null;\n }\n var out = {},\n className,\n key,\n attr,\n i;\n out.tagName = elem.tagName.toLowerCase();\n if (elem.id) {\n out.id = elem.id;\n }\n className = elem.className;\n if (className && typeof className === 'string') {\n out.classes = className.split(/\\s+/);\n }\n var attributes = ['type', 'name', 'title', 'alt'];\n out.attributes = [];\n for (i = 0; i < attributes.length; i++) {\n key = attributes[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.attributes.push({ key: key, value: attr });\n }\n }\n return out;\n}\n\n/*\n * Detects if the given element matches any of the given class names (string or regex),\n * or CSS selectors.\n * @param {HTMLElement} element - The DOM element to check.\n * @param {Array} classes - An array of class names (string or regex) to match against.\n * @param {Array} selectors - An array of CSS selectors to match against.\n * @return {boolean} - True if the element matches any of the classes or selectors, false otherwise.\n */\nfunction isMatchingElement(element, classes, selectors) {\n try {\n for (const cls of classes) {\n if (typeof cls === 'string') {\n if (element.classList.contains(cls)) {\n return true;\n }\n } else {\n for (const c of element.classList) {\n if (cls.test(c)) {\n return true;\n }\n }\n }\n }\n for (const sel of selectors) {\n if (element.matches(sel)) {\n return true;\n }\n }\n } catch (e) {\n // ignore errors from invalid arguments\n }\n return false;\n}\n\nexport {\n describeElement,\n descriptionToString,\n elementArrayToString,\n elementString,\n treeToArray,\n getElementFromEvent,\n isDescribedElement,\n getElementType,\n isMatchingElement,\n};\n","import * as _ from '../utility.js';\nimport headers from '../utility/headers.js';\nimport replace from '../utility/replace.js';\nimport scrub from '../scrub.js';\nimport * as urlparser from './url.js';\nimport * as domUtil from './domUtility.js';\n\nconst defaults = {\n network: true,\n networkResponseHeaders: false,\n networkResponseBody: false,\n networkRequestHeaders: false,\n networkRequestBody: false,\n networkErrorOnHttp5xx: false,\n networkErrorOnHttp4xx: false,\n networkErrorOnHttp0: false,\n log: true,\n dom: true,\n navigation: true,\n connectivity: true,\n contentSecurityPolicy: true,\n errorOnContentSecurityPolicy: false,\n};\n\nfunction restore(replacements, type) {\n let b;\n while (replacements[type].length) {\n b = replacements[type].shift();\n b[0][b[1]] = b[2];\n }\n}\n\nfunction nameFromDescription(description) {\n if (!description || !description.attributes) {\n return null;\n }\n const attrs = description.attributes;\n for (const a of attrs) {\n if (a.key === 'name') {\n return a.value;\n }\n }\n return null;\n}\n\nfunction defaultValueScrubber(scrubFields) {\n const patterns = [];\n for (const field of scrubFields) {\n patterns.push(new RegExp(field, 'i'));\n }\n return function (description) {\n const name = nameFromDescription(description);\n if (!name) {\n return false;\n }\n for (const p of patterns) {\n if (p.test(name)) {\n return true;\n }\n }\n return false;\n };\n}\n\nclass Instrumenter {\n constructor(options, telemeter, rollbar, _window, _document) {\n this.options = options;\n let autoInstrument = options.autoInstrument;\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.telemeter = telemeter;\n this.rollbar = rollbar;\n this.diagnostic = rollbar.client.notifier.diagnostic;\n this._window = _window || {};\n this._document = _document || {};\n this.replacements = {\n network: [],\n log: [],\n navigation: [],\n connectivity: [],\n };\n this.eventRemovers = {\n dom: [],\n connectivity: [],\n contentsecuritypolicy: [],\n };\n\n this._location = this._window.location;\n this._lastHref = this._location && this._location.href;\n }\n\n configureScrubbing() {\n const options = this.options;\n this.scrubTelemetryInputs = !!(\n options.scrubTelemetryInputs ?? options.replay?.maskAllInputs\n );\n this.telemetryScrubber = options.telemetryScrubber;\n this.defaultValueScrubber = defaultValueScrubber(options.scrubFields);\n this.maskInputFn = options.replay?.maskInputFn;\n this.maskInputOptions = options.replay?.maskInputOptions || {};\n this.scrubClasses = [\n options.replay?.blockClass,\n options.replay?.ignoreClass,\n options.replay?.maskTextClass,\n ].filter(Boolean);\n this.scrubSelectors = [\n options.replay?.blockSelector,\n options.replay?.ignoreSelector,\n options.replay?.maskTextSelector,\n ].filter(Boolean);\n }\n\n configure(options) {\n this.options = _.merge(this.options, options);\n let autoInstrument = options.autoInstrument;\n const oldSettings = _.merge(this.autoInstrument);\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.instrument(oldSettings);\n }\n\n // eslint-disable-next-line complexity\n instrument(oldSettings) {\n if (this.autoInstrument.network && !(oldSettings && oldSettings.network)) {\n this.instrumentNetwork();\n } else if (\n !this.autoInstrument.network &&\n oldSettings &&\n oldSettings.network\n ) {\n this.deinstrumentNetwork();\n }\n\n if (this.autoInstrument.log && !(oldSettings && oldSettings.log)) {\n this.instrumentConsole();\n } else if (!this.autoInstrument.log && oldSettings && oldSettings.log) {\n this.deinstrumentConsole();\n }\n\n if (this.autoInstrument.dom && !(oldSettings && oldSettings.dom)) {\n this.instrumentDom();\n } else if (!this.autoInstrument.dom && oldSettings && oldSettings.dom) {\n this.deinstrumentDom();\n }\n\n if (\n this.autoInstrument.navigation &&\n !(oldSettings && oldSettings.navigation)\n ) {\n this.instrumentNavigation();\n } else if (\n !this.autoInstrument.navigation &&\n oldSettings &&\n oldSettings.navigation\n ) {\n this.deinstrumentNavigation();\n }\n\n if (\n this.autoInstrument.connectivity &&\n !(oldSettings && oldSettings.connectivity)\n ) {\n this.instrumentConnectivity();\n } else if (\n !this.autoInstrument.connectivity &&\n oldSettings &&\n oldSettings.connectivity\n ) {\n this.deinstrumentConnectivity();\n }\n\n if (\n this.autoInstrument.contentSecurityPolicy &&\n !(oldSettings && oldSettings.contentSecurityPolicy)\n ) {\n this.instrumentContentSecurityPolicy();\n } else if (\n !this.autoInstrument.contentSecurityPolicy &&\n oldSettings &&\n oldSettings.contentSecurityPolicy\n ) {\n this.deinstrumentContentSecurityPolicy();\n }\n }\n\n deinstrumentNetwork() {\n restore(this.replacements, 'network');\n }\n\n instrumentNetwork() {\n const self = this;\n\n function wrapProp(prop, xhr) {\n if (prop in xhr && _.isFunction(xhr[prop])) {\n replace(xhr, prop, function (orig) {\n return self.rollbar.wrap(orig);\n });\n }\n }\n\n if ('XMLHttpRequest' in this._window) {\n const xhrp = this._window.XMLHttpRequest.prototype;\n replace(\n xhrp,\n 'open',\n function (orig) {\n return function (method, url) {\n const isUrlObject = _isUrlObject(url);\n if (_.isType(url, 'string') || isUrlObject) {\n url = isUrlObject ? url.toString() : url;\n if (this.__rollbar_xhr) {\n this.__rollbar_xhr.method = method;\n this.__rollbar_xhr.url = url;\n this.__rollbar_xhr.status_code = null;\n this.__rollbar_xhr.start_time_ms = _.now();\n this.__rollbar_xhr.end_time_ms = null;\n } else {\n this.__rollbar_xhr = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'setRequestHeader',\n function (orig) {\n return function (header, value) {\n // If xhr.open is async, __rollbar_xhr may not be initialized yet.\n if (!this.__rollbar_xhr) {\n this.__rollbar_xhr = {};\n }\n if (_.isType(header, 'string') && _.isType(value, 'string')) {\n if (self.autoInstrument.networkRequestHeaders) {\n if (!this.__rollbar_xhr.request_headers) {\n this.__rollbar_xhr.request_headers = {};\n }\n this.__rollbar_xhr.request_headers[header] = value;\n }\n // We want the content type even if request header telemetry is off.\n if (header.toLowerCase() === 'content-type') {\n this.__rollbar_xhr.request_content_type = value;\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'send',\n function (orig) {\n return function (data) {\n const xhr = this;\n\n function onreadystatechangeHandler() {\n if (xhr.__rollbar_xhr) {\n if (xhr.__rollbar_xhr.status_code === null) {\n xhr.__rollbar_xhr.status_code = 0;\n if (self.autoInstrument.networkRequestBody) {\n xhr.__rollbar_xhr.request = data;\n }\n xhr.__rollbar_event = self.captureNetwork(\n xhr.__rollbar_xhr,\n 'xhr',\n undefined,\n );\n }\n if (xhr.readyState < 2) {\n xhr.__rollbar_xhr.start_time_ms = _.now();\n }\n if (xhr.readyState > 3) {\n const end_time_ms = _.now();\n xhr.__rollbar_xhr.end_time_ms = end_time_ms;\n\n let headers = null;\n xhr.__rollbar_xhr.response_content_type =\n xhr.getResponseHeader('Content-Type');\n if (self.autoInstrument.networkResponseHeaders) {\n const headersConfig =\n self.autoInstrument.networkResponseHeaders;\n headers = {};\n try {\n let header;\n if (headersConfig === true) {\n const allHeaders = xhr.getAllResponseHeaders();\n if (allHeaders) {\n const arr = allHeaders.trim().split(/[\\r\\n]+/);\n let parts, value;\n for (const h of arr) {\n parts = h.split(': ');\n header = parts.shift();\n value = parts.join(': ');\n headers[header] = value;\n }\n }\n } else {\n for (const h of headersConfig) {\n headers[h] = xhr.getResponseHeader(h);\n }\n }\n } catch (e) {\n /* we ignore the errors here that could come from different\n * browser issues with the xhr methods */\n }\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n try {\n body = xhr.responseText;\n } catch (e) {\n /* ignore errors from reading responseText */\n }\n }\n let response = null;\n if (body || headers) {\n response = {};\n if (body) {\n if (\n self.isJsonContentType(\n xhr.__rollbar_xhr.response_content_type,\n )\n ) {\n response.body = self.scrubJson(body);\n } else {\n response.body = body;\n }\n }\n if (headers) {\n response.headers = headers;\n }\n }\n if (response) {\n xhr.__rollbar_xhr.response = response;\n }\n try {\n let code = xhr.status;\n code = code === 1223 ? 204 : code;\n xhr.__rollbar_xhr.status_code = code;\n self.addOtelNetworkResponse(\n xhr.__rollbar_event,\n end_time_ms,\n code,\n );\n xhr.__rollbar_event.level =\n self.telemeter.levelFromStatus(code);\n self.errorOnHttpStatus(xhr.__rollbar_xhr);\n } catch (e) {\n /* ignore possible exception from xhr.status */\n }\n }\n }\n }\n\n wrapProp('onload', xhr);\n wrapProp('onerror', xhr);\n wrapProp('onprogress', xhr);\n\n if (\n 'onreadystatechange' in xhr &&\n _.isFunction(xhr.onreadystatechange)\n ) {\n replace(xhr, 'onreadystatechange', function (orig) {\n return self.rollbar.wrap(\n orig,\n undefined,\n onreadystatechangeHandler,\n );\n });\n } else {\n xhr.onreadystatechange = onreadystatechangeHandler;\n }\n if (xhr.__rollbar_xhr && self.trackHttpErrors()) {\n xhr.__rollbar_xhr.stack = new Error().stack;\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n }\n\n if ('fetch' in this._window) {\n replace(\n this._window,\n 'fetch',\n function (orig) {\n return function (fn, t) {\n const args = [...arguments];\n const input = args[0];\n let method = 'GET';\n let url;\n const isUrlObject = _isUrlObject(input);\n if (_.isType(input, 'string') || isUrlObject) {\n url = isUrlObject ? input.toString() : input;\n } else if (input) {\n url = input.url;\n if (input.method) {\n method = input.method;\n }\n }\n if (args[1] && args[1].method) {\n method = args[1].method;\n }\n const metadata = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n if (args[1] && args[1].headers) {\n // Argument may be a Headers object, or plain object. Ensure here that\n // we are working with a Headers object with case-insensitive keys.\n const reqHeaders = headers(args[1].headers);\n\n metadata.request_content_type = reqHeaders.get('Content-Type');\n\n if (self.autoInstrument.networkRequestHeaders) {\n metadata.request_headers = self.fetchHeaders(\n reqHeaders,\n self.autoInstrument.networkRequestHeaders,\n );\n }\n }\n\n if (self.autoInstrument.networkRequestBody) {\n if (args[1] && args[1].body) {\n metadata.request = args[1].body;\n } else if (\n args[0] &&\n !_.isType(args[0], 'string') &&\n args[0].body\n ) {\n metadata.request = args[0].body;\n }\n }\n const telemetryEvent = self.captureNetwork(\n metadata,\n 'fetch',\n undefined,\n );\n if (self.trackHttpErrors()) {\n metadata.stack = new Error().stack;\n }\n\n // Start our handler before returning the promise. This allows resp.clone()\n // to execute before other handlers touch the response.\n return orig.apply(this, args).then(function (resp) {\n const end_time_ms = _.now();\n metadata.end_time_ms = end_time_ms;\n metadata.status_code = resp.status;\n self.addOtelNetworkResponse(\n telemetryEvent,\n end_time_ms,\n resp.status,\n );\n\n metadata.response_content_type = resp.headers.get('Content-Type');\n let headers = null;\n if (self.autoInstrument.networkResponseHeaders) {\n headers = self.fetchHeaders(\n resp.headers,\n self.autoInstrument.networkResponseHeaders,\n );\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n if (typeof resp.text === 'function') {\n // Response.text() is not implemented on some platforms\n // The response must be cloned to prevent reading (and locking) the original stream.\n // This must be done before other handlers touch the response.\n body = resp.clone().text(); //returns a Promise\n }\n }\n if (headers || body) {\n metadata.response = {};\n if (body) {\n // Test to ensure body is a Promise, which it should always be.\n if (typeof body.then === 'function') {\n body.then(function (text) {\n if (\n text &&\n self.isJsonContentType(metadata.response_content_type)\n ) {\n metadata.response.body = self.scrubJson(text);\n } else {\n metadata.response.body = text;\n }\n });\n } else {\n metadata.response.body = body;\n }\n }\n if (headers) {\n metadata.response.headers = headers;\n }\n }\n self.errorOnHttpStatus(metadata);\n return resp;\n });\n };\n },\n this.replacements,\n 'network',\n );\n }\n }\n\n captureNetwork(metadata, subtype, rollbarUUID) {\n if (\n metadata.request &&\n this.isJsonContentType(metadata.request_content_type)\n ) {\n metadata.request = this.scrubJson(metadata.request);\n }\n return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID);\n }\n\n isJsonContentType(contentType) {\n return contentType &&\n _.isType(contentType, 'string') &&\n contentType.toLowerCase().includes('json')\n ? true\n : false;\n }\n\n addOtelNetworkResponse(event, endTimeMs, statusCode) {\n if (event.otelAttributes) {\n event.otelAttributes['response.timeUnixNano'] = (\n endTimeMs * 1e6\n ).toString();\n event.otelAttributes.statusCode = statusCode;\n }\n }\n\n scrubJson(json) {\n return JSON.stringify(scrub(JSON.parse(json), this.options.scrubFields));\n }\n\n fetchHeaders(inHeaders, headersConfig) {\n const outHeaders = {};\n try {\n if (headersConfig === true) {\n if (typeof inHeaders.entries === 'function') {\n // Headers.entries() is not implemented in IE\n const allHeaders = inHeaders.entries();\n let currentHeader = allHeaders.next();\n while (!currentHeader.done) {\n outHeaders[currentHeader.value[0]] = currentHeader.value[1];\n currentHeader = allHeaders.next();\n }\n }\n } else {\n for (const h of headersConfig) {\n outHeaders[h] = inHeaders.get(h);\n }\n }\n } catch (e) {\n /* ignore probable IE errors */\n }\n return outHeaders;\n }\n\n trackHttpErrors() {\n return (\n this.autoInstrument.networkErrorOnHttp5xx ||\n this.autoInstrument.networkErrorOnHttp4xx ||\n this.autoInstrument.networkErrorOnHttp0\n );\n }\n\n errorOnHttpStatus(metadata) {\n const status = metadata.status_code;\n\n if (\n (status >= 500 && this.autoInstrument.networkErrorOnHttp5xx) ||\n (status >= 400 && this.autoInstrument.networkErrorOnHttp4xx) ||\n (status === 0 && this.autoInstrument.networkErrorOnHttp0)\n ) {\n const error = new Error('HTTP request failed with Status ' + status);\n error.stack = metadata.stack;\n this.rollbar.error(error, { skipFrames: 1 });\n }\n }\n\n deinstrumentConsole() {\n let b;\n while (this.replacements['log'].length) {\n b = this.replacements['log'].shift();\n this._window.console[b[0]] = b[1];\n }\n }\n\n instrumentConsole() {\n if (!this._window?.console?.log) {\n return;\n }\n\n const self = this;\n const c = this._window.console;\n\n function wrapConsole(method) {\n 'use strict'; // See https://github.com/rollbar/rollbar.js/pull/778\n\n const orig = c[method];\n const origConsole = c;\n const level = method === 'warn' ? 'warning' : method;\n c[method] = function () {\n const args = Array.prototype.slice.call(arguments);\n const message = _.formatArgsAsString(args);\n self.telemeter.captureLog(message, level, null, _.now());\n if (orig) {\n Function.prototype.apply.call(orig, origConsole, args);\n }\n };\n self.replacements['log'].push([method, orig]);\n }\n const methods = ['debug', 'info', 'warn', 'error', 'log'];\n try {\n for (const m of methods) {\n wrapConsole(m);\n }\n } catch (e) {\n this.diagnostic.instrumentConsole = { error: e.message };\n }\n }\n\n deinstrumentDom() {\n this.removeListeners('dom');\n }\n\n instrumentDom() {\n const self = this;\n this.addListener(\n 'dom',\n this._window,\n ['click', 'dblclick', 'contextmenu'],\n (e) => this.handleEvent('click', e),\n );\n this.addListener(\n 'dom',\n this._window,\n ['dragstart', 'dragend', 'dragenter', 'dragleave', 'drop'],\n (e) => this.handleEvent('dragdrop', e),\n );\n this.addListener('dom', this._window, ['blur', 'focus'], (e) =>\n this.handleEvent('focus', e),\n );\n this.addListener('dom', this._window, ['submit', 'invalid'], (e) =>\n this.handleEvent('form', e),\n );\n this.addListener('dom', this._window, ['input', 'change'], (e) =>\n this.handleEvent('input', e),\n );\n this.addListener('dom', this._window, ['resize'], (e) =>\n this.handleEvent('resize', e),\n );\n this.addListener('dom', this._document, ['DOMContentLoaded'], (e) =>\n this.handleEvent('contentLoaded', e),\n );\n }\n\n handleEvent(name, evt) {\n try {\n return {\n click: this.handleClick,\n dragdrop: this.handleDrag,\n focus: this.handleFocus,\n form: this.handleForm,\n input: this.handleInput,\n resize: this.handleResize,\n contentLoaded: this.handleContentLoaded,\n }[name].call(this, evt);\n } catch (exc) {\n console.log(`${name} handler error`, evt, exc, exc.stack);\n }\n }\n\n handleContentLoaded(evt) {\n const replayId = this.rollbar.triggerReplay({\n type: 'navigation',\n path: new URL(this._location.href).pathname,\n });\n }\n\n handleClick(evt) {\n const tagName = evt.target?.tagName.toLowerCase();\n if (['input', 'select', 'textarea'].includes(tagName)) return;\n\n this.telemeter.captureClick({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n timestamp: _.now(),\n });\n }\n\n handleFocus(evt) {\n const type = evt.type;\n const element = evt.target?.window\n ? 'window'\n : domUtil.elementString(evt.target);\n\n this.telemeter.captureFocus({\n type: type,\n isSynthetic: !evt.isTrusted,\n element,\n timestamp: _.now(),\n });\n }\n\n handleForm(evt) {\n // TODO: implement form event handling\n const type = evt.type;\n const elementString = evt.target?.window\n ? 'window'\n : domUtil.elementString(evt.target);\n }\n\n handleResize(evt) {\n const textZoomRatio = window.screen.width / window.innerWidth;\n\n this.telemeter.captureResize({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n width: window.innerWidth,\n height: window.innerHeight,\n textZoomRatio: textZoomRatio,\n timestamp: _.now(),\n });\n }\n\n handleDrag(evt) {\n const type = evt.type;\n let kinds, mediaTypes, dropEffect, effectAllowed;\n\n if (type === 'drop') {\n kinds = [];\n mediaTypes = [];\n const objs = [...evt.dataTransfer.files, ...evt.dataTransfer.items];\n for (const o of objs) {\n if (o.kind && o.type) {\n kinds.push(o.kind);\n mediaTypes.push(o.type);\n }\n }\n }\n if (['drop', 'dragstart'].includes(type)) {\n dropEffect = evt.dataTransfer?.dropEffect;\n effectAllowed = evt.dataTransfer?.effectAllowed;\n }\n\n this.telemeter.captureDragDrop({\n type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n dropEffect: dropEffect,\n effectAllowed: effectAllowed,\n kinds: JSON.stringify(kinds),\n mediaTypes: JSON.stringify(mediaTypes),\n timestamp: _.now(),\n });\n }\n\n /*\n * Applies Rollbar telemetry scrubbing options to the dom input value.\n * When replay options are present, applies those as well.\n */\n scrubInputValue(value, element, tagName, inputType) {\n const mask = '******';\n\n if (inputType === 'password') {\n return mask;\n }\n\n if (this.scrubTelemetryInputs) {\n return mask;\n } else {\n const description = domUtil.describeElement(element);\n if (this.telemetryScrubber) {\n if (this.telemetryScrubber(description)) {\n return mask;\n }\n } else if (this.defaultValueScrubber(description)) {\n return mask;\n }\n }\n\n // Apply replay options regardless of other scrubbing\n if (\n domUtil.isMatchingElement(element, this.scrubClasses, this.scrubSelectors)\n ) {\n return mask;\n }\n\n // This check is last since maskInputFn returns a modified value rather\n // than a boolean, which would cause an early return even if the value\n // was not scrubbed.\n if (\n this.maskInputOptions[tagName.toLowerCase()] ||\n this.maskInputOptions[inputType]\n ) {\n if (this.maskInputFn) {\n return this.maskInputFn(value, element);\n } else {\n return mask;\n }\n }\n\n return value;\n }\n\n /*\n * Uses the `input` event for everything except radio and checkbox inputs.\n * For those, it uses the `change` event.\n */\n handleInput(evt) {\n const type = evt.type;\n const tagName = evt.target?.tagName.toLowerCase();\n let value = evt.target?.value;\n let inputType = evt.target?.attributes?.type?.value || evt.target?.type;\n\n if (value !== undefined) {\n value = this.scrubInputValue(value, evt.target, tagName, inputType);\n }\n\n switch (type) {\n case 'input':\n if (['radio', 'checkbox'].includes(inputType)) return;\n if (['select', 'textarea'].includes(tagName)) {\n inputType = tagName;\n }\n break;\n\n case 'change':\n if (!['radio', 'checkbox'].includes(inputType)) return;\n if (inputType === 'checkbox') {\n value = evt.target?.checked;\n }\n break;\n }\n\n this.telemeter.captureInput({\n type: inputType,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n value,\n timestamp: _.now(),\n });\n }\n\n deinstrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n restore(this.replacements, 'navigation');\n }\n\n instrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n const self = this;\n replace(\n this._window,\n 'onpopstate',\n function (orig) {\n return function () {\n const current = self._location.href;\n self.handleUrlChange(self._lastHref, current);\n if (orig) {\n orig.apply(this, arguments);\n }\n };\n },\n this.replacements,\n 'navigation',\n );\n\n replace(\n this._window.history,\n 'pushState',\n function (orig) {\n return function () {\n const url = arguments.length > 2 ? arguments[2] : undefined;\n if (url) {\n self.handleUrlChange(self._lastHref, url + '');\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'navigation',\n );\n }\n\n handleUrlChange(from, to) {\n const parsedHref = urlparser.parse(this._location.href);\n const parsedTo = urlparser.parse(to);\n const parsedFrom = urlparser.parse(from);\n this._lastHref = to;\n if (\n parsedHref.protocol === parsedTo.protocol &&\n parsedHref.host === parsedTo.host\n ) {\n to = parsedTo.path + (parsedTo.hash || '');\n }\n if (\n parsedHref.protocol === parsedFrom.protocol &&\n parsedHref.host === parsedFrom.host\n ) {\n from = parsedFrom.path + (parsedFrom.hash || '');\n }\n this.telemeter.captureNavigation(from, to, null, _.now());\n const replayId = this.rollbar.triggerReplay({\n type: 'navigation',\n path: to,\n });\n }\n\n deinstrumentConnectivity = function () {\n this.removeListeners('connectivity');\n };\n\n instrumentConnectivity() {\n const self = this;\n this.addListener(\n 'connectivity',\n this._window,\n ['online', 'offline'],\n (evt) => self.handleConnectivity(evt),\n );\n }\n\n handleConnectivity(evt) {\n const type = evt.type;\n\n this.telemeter.captureConnectivityChange({\n type,\n isSynthetic: !evt.isTrusted,\n timestamp: _.now(),\n });\n }\n\n handleCspEvent(cspEvent) {\n let message =\n 'Security Policy Violation: ' +\n 'blockedURI: ' +\n cspEvent.blockedURI +\n ', ' +\n 'violatedDirective: ' +\n cspEvent.violatedDirective +\n ', ' +\n 'effectiveDirective: ' +\n cspEvent.effectiveDirective +\n ', ';\n\n if (cspEvent.sourceFile) {\n message +=\n 'location: ' +\n cspEvent.sourceFile +\n ', ' +\n 'line: ' +\n cspEvent.lineNumber +\n ', ' +\n 'col: ' +\n cspEvent.columnNumber +\n ', ';\n }\n\n message += 'originalPolicy: ' + cspEvent.originalPolicy;\n\n this.telemeter.captureLog(message, 'error', null, _.now());\n this.handleCspError(message);\n }\n\n handleCspError(message) {\n if (this.autoInstrument.errorOnContentSecurityPolicy) {\n this.rollbar.error(message);\n }\n }\n\n deinstrumentContentSecurityPolicy() {\n this.removeListeners('contentsecuritypolicy');\n }\n\n instrumentContentSecurityPolicy() {\n if (!('addEventListener' in this._document)) {\n return;\n }\n\n const cspHandler = this.handleCspEvent.bind(this);\n this.addListener(\n 'contentsecuritypolicy',\n this._document,\n ['securitypolicyviolation'],\n cspHandler,\n );\n }\n\n addListener(section, obj, types, handler) {\n if (obj.addEventListener) {\n for (const t of types) {\n const options = { capture: true, passive: true };\n obj.addEventListener(t, handler, options, true);\n this.eventRemovers[section].push(function () {\n obj.removeEventListener(t, handler, options);\n });\n }\n }\n }\n\n removeListeners(section) {\n let r;\n while (this.eventRemovers[section].length) {\n r = this.eventRemovers[section].shift();\n r();\n }\n }\n}\n\nfunction _isUrlObject(input) {\n return typeof URL !== 'undefined' && input instanceof URL;\n}\n\nexport default Instrumenter;\n","function wrapGlobals(window, handler, shim) {\n if (!window) {\n return;\n }\n // Adapted from https://github.com/bugsnag/bugsnag-js\n var globals =\n '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'.split(\n ',',\n );\n var i, global;\n for (i = 0; i < globals.length; ++i) {\n global = globals[i];\n\n if (window[global] && window[global].prototype) {\n _extendListenerPrototype(handler, window[global].prototype, shim);\n }\n }\n}\n\nfunction _extendListenerPrototype(handler, prototype, shim) {\n if (\n prototype.hasOwnProperty &&\n prototype.hasOwnProperty('addEventListener')\n ) {\n var oldAddEventListener = prototype.addEventListener;\n while (\n oldAddEventListener._rollbarOldAdd &&\n oldAddEventListener.belongsToShim\n ) {\n oldAddEventListener = oldAddEventListener._rollbarOldAdd;\n }\n var addFn = function (event, callback, bubble) {\n oldAddEventListener.call(this, event, handler.wrap(callback), bubble);\n };\n addFn._rollbarOldAdd = oldAddEventListener;\n addFn.belongsToShim = shim;\n prototype.addEventListener = addFn;\n\n var oldRemoveEventListener = prototype.removeEventListener;\n while (\n oldRemoveEventListener._rollbarOldRemove &&\n oldRemoveEventListener.belongsToShim\n ) {\n oldRemoveEventListener = oldRemoveEventListener._rollbarOldRemove;\n }\n var removeFn = function (event, callback, bubble) {\n oldRemoveEventListener.call(\n this,\n event,\n (callback && callback._rollbar_wrapped) || callback,\n bubble,\n );\n };\n removeFn._rollbarOldRemove = oldRemoveEventListener;\n removeFn.belongsToShim = shim;\n prototype.removeEventListener = removeFn;\n }\n}\n\nexport default wrapGlobals;\n","import * as _ from './utility.js';\nimport traverse from './utility/traverse.js';\n\nfunction raw(payload, jsonBackup) {\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction selectFrames(frames, range) {\n var len = frames.length;\n if (len > range * 2) {\n return frames.slice(0, range).concat(frames.slice(len - range));\n }\n return frames;\n}\n\nfunction truncateFrames(payload, jsonBackup, range) {\n range = typeof range === 'undefined' ? 30 : range;\n var body = payload.data.body;\n var frames;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (var i = 0; i < chain.length; i++) {\n frames = chain[i].frames;\n frames = selectFrames(frames, range);\n chain[i].frames = frames;\n }\n } else if (body.trace) {\n frames = body.trace.frames;\n frames = selectFrames(frames, range);\n body.trace.frames = frames;\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction maybeTruncateValue(len, val) {\n if (!val) {\n return val;\n }\n if (val.length > len) {\n return val.slice(0, len - 3).concat('...');\n }\n return val;\n}\n\nfunction truncateStrings(len, payload, jsonBackup) {\n function truncator(k, v, seen) {\n switch (_.typeName(v)) {\n case 'string':\n return maybeTruncateValue(len, v);\n case 'object':\n case 'array':\n return traverse(v, truncator, seen);\n default:\n return v;\n }\n }\n payload = traverse(payload, truncator);\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction truncateTraceData(traceData) {\n if (traceData.exception) {\n delete traceData.exception.description;\n traceData.exception.message = maybeTruncateValue(\n 255,\n traceData.exception.message,\n );\n }\n traceData.frames = selectFrames(traceData.frames, 1);\n return traceData;\n}\n\nfunction minBody(payload, jsonBackup) {\n var body = payload.data.body;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (var i = 0; i < chain.length; i++) {\n chain[i] = truncateTraceData(chain[i]);\n }\n } else if (body.trace) {\n body.trace = truncateTraceData(body.trace);\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction needsTruncation(payload, maxSize) {\n return _.maxByteSize(payload) > maxSize;\n}\n\nfunction truncate(payload, jsonBackup, maxSize) {\n maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize;\n var strategies = [\n raw,\n truncateFrames,\n truncateStrings.bind(null, 1024),\n truncateStrings.bind(null, 512),\n truncateStrings.bind(null, 256),\n minBody,\n ];\n var strategy, results, result;\n\n while ((strategy = strategies.shift())) {\n results = strategy(payload, jsonBackup);\n payload = results[0];\n result = results[1];\n if (result.error || !needsTruncation(result.value, maxSize)) {\n return result;\n }\n }\n return result;\n}\n\nexport default {\n truncate,\n\n /* for testing */\n raw,\n truncateFrames,\n truncateStrings,\n maybeTruncateValue,\n};\n","export class Context {\n constructor(parentContext) {\n this._currentContext = parentContext ? new Map(parentContext) : new Map();\n }\n\n getValue(key) {\n return this._currentContext.get(key);\n }\n\n setValue(key, value) {\n const context = new Context(this._currentContext);\n context._currentContext.set(key, value);\n return context;\n }\n\n deleteValue(key) {\n const context = new Context(self._currentContext);\n context._currentContext.delete(key);\n return context;\n }\n}\n\nexport const ROOT_CONTEXT = new Context();\n","import { ROOT_CONTEXT } from './context.js';\n\nexport class ContextManager {\n constructor() {\n this.currentContext = ROOT_CONTEXT;\n }\n\n active() {\n return this.currentContext;\n }\n\n enterContext(context) {\n const previousContext = this.currentContext;\n this.currentContext = context || ROOT_CONTEXT;\n return previousContext;\n }\n\n exitContext(context) {\n this.currentContext = context;\n return this.currentContext;\n }\n\n with(context, fn, thisArg, ...args) {\n const previousContext = this.enterContext(context);\n try {\n return fn.call(thisArg, ...args);\n } finally {\n this.exitContext(previousContext);\n }\n }\n}\n\nexport function createContextKey(key) {\n // Use Symbol for OpenTelemetry compatibility.\n return Symbol.for(key);\n}\n","/**\n * Generate a random hexadecimal ID of specified byte length\n *\n * @param {number} bytes - Number of bytes for the ID (default: 16)\n * @returns {string} - Hexadecimal string representation\n */\nfunction gen(bytes = 16) {\n let randomBytes = new Uint8Array(bytes);\n crypto.getRandomValues(randomBytes);\n let randHex = Array.from(randomBytes, (byte) =>\n byte.toString(16).padStart(2, '0'),\n ).join('');\n return randHex;\n}\n\n/**\n * Tracing id generation utils\n *\n * @example\n * import id from './id.js';\n *\n * const spanId = id.gen(8); // => \"a1b2c3d4e5f6...\"\n */\nexport default { gen };\n","import id from './id.js';\n\nconst SESSION_KEY = 'RollbarSession';\n\nexport class Session {\n _attributes;\n\n constructor(tracing, options) {\n this.options = options;\n this.tracing = tracing;\n this.window = tracing.window;\n this.session = null;\n this._attributes = {};\n }\n\n init(attrs = {}) {\n if (this.session) {\n return this;\n }\n this.getSession() || this.createSession();\n\n this.initSessionAttributes(attrs);\n\n return this;\n }\n\n getSession() {\n try {\n const serializedSession = this.window.sessionStorage.getItem(SESSION_KEY);\n\n if (!serializedSession) {\n return null;\n }\n\n this.session = JSON.parse(serializedSession);\n } catch {\n return null;\n }\n return this;\n }\n\n createSession() {\n this.session = {\n id: id.gen(),\n createdAt: Date.now(),\n };\n\n return this.setSession(this.session);\n }\n\n setSession(session) {\n const sessionString = JSON.stringify(session);\n\n try {\n this.window.sessionStorage.setItem(SESSION_KEY, sessionString);\n } catch {\n return null;\n }\n return this;\n }\n\n get attributes() {\n return this._attributes;\n }\n\n setAttributes(attributes) {\n this._attributes = { ...this._attributes, ...attributes };\n return this;\n }\n\n setUser(user) {\n this.setAttributes({\n 'user.id': user?.id,\n 'user.email': user?.email,\n 'user.name': user?.name || user?.username,\n });\n return this;\n }\n\n initSessionAttributes(attrs) {\n this.setAttributes({\n 'session.id': this.session.id,\n 'browser.brands': navigator.userAgentData?.brands,\n 'browser.language': navigator.language,\n 'browser.mobile': navigator.userAgentData?.mobile,\n 'browser.platform': navigator.userAgentData?.platform,\n 'client.address': '$remote_ip', // updated at the API\n 'rollbar.notifier.framework': 'browser-js',\n 'user_agent.original': navigator.userAgent,\n ...attrs,\n });\n return this;\n }\n}\n","/**\n * @module hrtime\n *\n * @description Methods for handling OpenTelemetry hrtime.\n */\n\n/**\n * Convert a duration in milliseconds to an OpenTelemetry hrtime tuple.\n *\n * @param {number} millis - The duration in milliseconds.\n * @returns {[number, number]} An array where the first element is seconds\n * and the second is nanoseconds.\n */\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in milliseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in milliseconds.\n */\nfunction toMillis(hrtime) {\n return hrtime[0] * 1e3 + Math.round(hrtime[1] / 1e6);\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in nanoseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in nanoseconds.\n */\nfunction toNanos(hrtime) {\n return hrtime[0] * 1e9 + hrtime[1];\n}\n\n/**\n * Adds two OpenTelemetry hrtime tuples.\n *\n * @param {[number, number]} a - The first hrtime tuple [s, ns].\n * @param {[number, number]} b - The second hrtime tuple [s, ns].\n * @returns {[number, number]} Summed hrtime tuple, normalized.\n *\n */\nfunction add(a, b) {\n return [a[0] + b[0] + Math.trunc((a[1] + b[1]) / 1e9), (a[1] + b[1]) % 1e9];\n}\n\n/**\n * Get the current high-resolution time as an OpenTelemetry hrtime tuple.\n *\n * @param {boolean} usePerformance=false - If true, uses the Performance API (timeOrigin + now()).\n *\n * @returns {[number, number]} The current hrtime tuple [s, ns].\n */\nfunction now(usePerformance = false) {\n if (usePerformance) {\n return add(\n fromMillis(performance.timeOrigin),\n fromMillis(performance.now()),\n );\n }\n return fromMillis(Date.now());\n}\n\n/**\n * Check if a value is a valid OpenTelemetry hrtime tuple.\n *\n * An hrtime tuple is an Array of exactly two numbers:\n * [seconds, nanoseconds]\n *\n * @param {*} value – anything to test\n * @returns {boolean} true if `value` is a [number, number] array of length 2\n *\n * @example\n * isHrTime([ 1, 500 ]); // true\n * isHrTime([ 0, 1e9 ]); // true\n * isHrTime([ '1', 500 ]); // false\n * isHrTime({ 0: 1, 1: 500 }); // false\n */\nfunction isHrTime(value) {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number'\n );\n}\n\n/**\n * Methods for handling hrtime. OpenTelemetry uses the [seconds, nanoseconds]\n * format for hrtime in the `ReadableSpan` interface.\n *\n * @example\n * import hrtime from '@tracing/hrtime.js';\n *\n * hrtime.fromMillis(1000);\n * hrtime.toMillis([0, 1000]);\n * hrtime.add([0, 0], [0, 1000]);\n * hrtime.now();\n * hrtime.isHrTime([0, 1000]);\n */\nexport default { fromMillis, toMillis, toNanos, add, now, isHrTime };\n","import hrtime from './hrtime.js';\n\n/**\n * SpanExporter is responsible for exporting ReadableSpan objects\n * and transforming them into the OTLP-compatible format.\n */\nexport class SpanExporter {\n constructor(api, options = {}) {\n this.api = api;\n this.options = options;\n }\n\n /**\n * Export spans to the span export queue\n *\n * @param {Array} spans - Array of ReadableSpan objects to export\n * @param {Function} _resultCallback - Optional callback (not used)\n */\n export(spans, _resultCallback) {\n spanExportQueue.push(...spans);\n }\n\n /**\n * Transforms an array of ReadableSpan objects into the OTLP format payload\n * compatible with the Rollbar API. This follows the OpenTelemetry protocol\n * specification for traces.\n *\n * @returns {Object} OTLP format payload for API transmission\n */\n toPayload() {\n const spans = spanExportQueue.slice();\n spanExportQueue.length = 0;\n\n if (!spans || !spans.length) {\n return { resourceSpans: [] };\n }\n\n const resource = (spans[0] && spans[0].resource) || {};\n\n const scopeMap = new Map();\n\n for (const span of spans) {\n const scopeKey = span.instrumentationScope\n ? `${span.instrumentationScope.name}:${span.instrumentationScope.version}`\n : 'default:1.0.0';\n\n if (!scopeMap.has(scopeKey)) {\n scopeMap.set(scopeKey, {\n scope: span.instrumentationScope || {\n name: 'default',\n version: '1.0.0',\n attributes: [],\n },\n spans: [],\n });\n }\n\n scopeMap.get(scopeKey).spans.push(this._transformSpan(span));\n }\n\n return {\n resourceSpans: [\n {\n resource: this._transformResource(resource),\n scopeSpans: Array.from(scopeMap.values()).map((scopeData) => ({\n scope: this._transformInstrumentationScope(scopeData.scope),\n spans: scopeData.spans,\n })),\n },\n ],\n };\n }\n\n /**\n * Sends the given payload to the Rollbar API.\n *\n * @param {String} payload - Serialized OTLP format payload\n * @param {Object} headers - Optional request headers\n * @returns {Promise} Promise that resolves when the request completes\n */\n post(payload, headers = {}) {\n return this.api.postSpans(payload, headers);\n }\n\n /**\n * Transforms a ReadableSpan into the OTLP Span format\n *\n * @private\n * @param {Object} span - ReadableSpan object to transform\n * @returns {Object} OTLP Span format\n */\n _transformSpan(span) {\n const transformAttributes = (attributes) => {\n return Object.entries(attributes || {}).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n };\n\n const transformEvents = (events) => {\n return (events || []).map((event) => ({\n timeUnixNano: hrtime.toNanos(event.time),\n name: event.name,\n attributes: transformAttributes(event.attributes),\n }));\n };\n\n return {\n traceId: span.spanContext.traceId,\n spanId: span.spanContext.spanId,\n parentSpanId: span.parentSpanId || '',\n name: span.name,\n kind: span.kind || 1, // INTERNAL by default\n startTimeUnixNano: hrtime.toNanos(span.startTime),\n endTimeUnixNano: hrtime.toNanos(span.endTime),\n attributes: transformAttributes(span.attributes),\n events: transformEvents(span.events),\n };\n }\n\n /**\n * Transforms a resource object into OTLP Resource format\n *\n * @private\n * @param {Object} resource - Resource information\n * @returns {Object} OTLP Resource format\n */\n _transformResource(resource) {\n const attributes = resource.attributes || {};\n const keyValues = Object.entries(attributes).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n\n return {\n attributes: keyValues,\n };\n }\n\n /**\n * Transforms an instrumentation scope into OTLP InstrumentationScope format\n *\n * @private\n * @param {Object} scope - Instrumentation scope information\n * @returns {Object} OTLP InstrumentationScope format\n */\n _transformInstrumentationScope(scope) {\n return {\n name: scope.name || '',\n version: scope.version || '',\n attributes: (scope.attributes || []).map((attr) => ({\n key: attr.key,\n value: this._transformAnyValue(attr.value),\n })),\n };\n }\n\n /**\n * Transforms a JavaScript value into an OTLP AnyValue\n *\n * @private\n * @param {any} value - Value to transform\n * @returns {Object} OTLP AnyValue format\n */\n _transformAnyValue(value) {\n if (value === null || value === undefined) {\n return { stringValue: '' };\n }\n\n const type = typeof value;\n\n if (type === 'string') {\n return { stringValue: value };\n } else if (type === 'number') {\n if (Number.isInteger(value)) {\n return { intValue: value.toString() };\n } else {\n return { doubleValue: value };\n }\n } else if (type === 'boolean') {\n return { boolValue: value };\n } else if (Array.isArray(value)) {\n return {\n arrayValue: {\n values: value.map((v) => this._transformAnyValue(v)),\n },\n };\n } else if (type === 'object') {\n return {\n kvlistValue: {\n values: Object.entries(value).map(([k, v]) => ({\n key: k,\n value: this._transformAnyValue(v),\n })),\n },\n };\n }\n\n return { stringValue: String(value) };\n }\n}\n\nexport const spanExportQueue = [];\n","import logger from '../logger.js';\n\nexport class SpanProcessor {\n constructor(exporter, options = {}) {\n this.exporter = exporter;\n this.options = options;\n this.pendingSpans = new Map();\n this.transforms = [this.userTransform.bind(this)];\n }\n\n addTransform(transformFn) {\n this.transforms.unshift(transformFn);\n }\n\n userTransform(span) {\n if (this.options.transformSpan) {\n this.options.transformSpan({ span: span });\n }\n }\n\n applyTransforms(span) {\n for (const transform of this.transforms) {\n try {\n transform(span);\n } catch (e) {\n logger.error('Error running span transform callback', e);\n }\n }\n }\n\n onStart(span, _parentContext) {\n this.pendingSpans.set(span.span.spanContext.spanId, span);\n }\n\n onEnd(span) {\n this.applyTransforms(span.span);\n this.exporter.export([span.export()]);\n this.pendingSpans.delete(span.span.spanContext.spanId);\n }\n}\n","import hrtime from './hrtime.js';\n\nexport class Span {\n constructor(options) {\n this.usePerformance = options.usePerformance;\n this.initReadableSpan(options);\n\n this.spanProcessor = options.spanProcessor;\n this.spanProcessor.onStart(this, options.context);\n\n if (options.attributes) {\n this.setAttributes(options.attributes);\n }\n return this;\n }\n\n initReadableSpan(options) {\n this.span = {\n name: options.name,\n kind: options.kind,\n spanContext: options.spanContext,\n parentSpanId: options.parentSpanId,\n startTime: options.startTime || hrtime.now(options.usePerformance),\n endTime: [0, 0],\n status: { code: 0, message: '' },\n attributes: { 'session.id': options.session?.id },\n links: [],\n events: [],\n duration: 0,\n ended: false,\n resource: options.resource,\n instrumentationScope: options.scope,\n droppedAttributesCount: 0,\n droppedEventsCount: 0,\n droppedLinksCount: 0,\n };\n }\n\n spanContext() {\n return this.span.spanContext;\n }\n\n get spanId() {\n return this.span.spanContext.spanId;\n }\n\n get traceId() {\n return this.span.spanContext.traceId;\n }\n\n setAttribute(key, value) {\n if (value == null || this.span.ended) return this;\n if (key.length === 0) return this;\n\n this.span.attributes[key] = value;\n return this;\n }\n\n setAttributes(attributes) {\n for (const [k, v] of Object.entries(attributes)) {\n this.setAttribute(k, v);\n }\n return this;\n }\n\n addEvent(name, attributes = {}, time) {\n if (this.span.ended) return this;\n\n this.span.events.push({\n name,\n attributes,\n time: time || hrtime.now(),\n droppedAttributesCount: 0,\n });\n\n return this;\n }\n\n isRecording() {\n return this.span.ended === false;\n }\n\n end(attributes, time) {\n if (attributes) this.setAttributes(attributes);\n this.span.endTime = time || hrtime.now(this.usePerformance);\n this.span.ended = true;\n this.spanProcessor.onEnd(this);\n }\n\n export() {\n return this.span;\n }\n}\n","import { Span } from './span.js';\nimport id from './id.js';\n\nexport class Tracer {\n constructor(tracing, spanProcessor) {\n this.spanProcessor = spanProcessor;\n this.tracing = tracing;\n }\n\n startSpan(\n name,\n options = {},\n context = this.tracing.contextManager.active(),\n ) {\n const parentSpan = this.tracing.getSpan(context);\n const parentSpanContext = parentSpan?.spanContext();\n const spanId = id.gen(8);\n let traceId;\n let traceFlags = 0;\n let traceState = null;\n let parentSpanId;\n if (parentSpanContext) {\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n parentSpanId = parentSpanContext.spanId;\n } else {\n traceId = id.gen(16);\n }\n\n const kind = 0;\n const spanContext = { traceId, spanId, traceFlags, traceState };\n const resource = {\n attributes: {\n ...(this.tracing.resource?.attributes || {}),\n ...(options.resource?.attributes || {}),\n },\n };\n\n const span = new Span({\n resource: resource,\n scope: this.tracing.scope,\n session: this.tracing.session?.session,\n context,\n spanContext,\n name,\n kind,\n parentSpanId,\n spanProcessor: this.spanProcessor,\n startTime: options.startTime,\n usePerformance: options.usePerformance,\n });\n return span;\n }\n}\n","import { ContextManager, createContextKey } from './contextManager.js';\nimport { Session } from './session.js';\nimport { SpanExporter } from './exporter.js';\nimport { SpanProcessor } from './spanProcessor.js';\nimport { Tracer } from './tracer.js';\nimport id from './id.js';\n\nconst SPAN_KEY = createContextKey('Rollbar Context Key SPAN');\n\nexport default class Tracing {\n constructor(gWindow, api, options) {\n this.api = api;\n this.options = options;\n this.window = gWindow;\n\n if (this.window.sessionStorage) {\n this.session = new Session(this, options);\n }\n this.createTracer();\n }\n\n configure(options) {\n // Options merge happens before configure is called, so we can just replace.\n this.options = options;\n }\n\n initSession() {\n if (this.session) {\n this.session.init();\n }\n }\n\n get sessionId() {\n if (this.session) {\n return this.session.session.id;\n }\n return null;\n }\n\n get resource() {\n return {\n attributes: {\n ...(this.options.resource || {}),\n 'rollbar.environment':\n this.options.payload?.environment ?? this.options.environment,\n },\n };\n }\n\n get scope() {\n return {\n name: 'rollbar-browser-js',\n version: this.options.version,\n };\n }\n\n idGen(bytes = 16) {\n return id.gen(bytes);\n }\n\n createTracer() {\n this.contextManager = new ContextManager();\n this.exporter = new SpanExporter(this.api, this.options);\n this.spanProcessor = new SpanProcessor(this.exporter, this.options.tracing);\n this.tracer = new Tracer(this, this.spanProcessor);\n }\n\n getTracer() {\n return this.tracer;\n }\n\n addSpanTransform(transformFn) {\n this.spanProcessor.addTransform(transformFn);\n }\n\n getSpan(context = this.contextManager.active()) {\n return context.getValue(SPAN_KEY);\n }\n\n setSpan(context = this.contextManager.active(), span) {\n return context.setValue(SPAN_KEY, span);\n }\n\n startSpan(name, options = {}, context = this.contextManager.active()) {\n return this.tracer.startSpan(name, options, context);\n }\n\n with(context, fn, thisArg, ...args) {\n return this.contextManager.with(context, fn, thisArg, ...args);\n }\n\n withSpan(name, options, fn, thisArg) {\n const span = this.startSpan(name, options);\n return this.with(\n this.setSpan(this.contextManager.active(), span),\n fn,\n thisArg,\n span,\n );\n }\n}\n","import Rollbar from './core.js';\nimport Telemeter from '../telemetry.js';\nimport Instrumenter from './telemetry.js';\nimport wrapGlobals from './wrapGlobals.js';\nimport scrub from '../scrub.js';\nimport truncation from '../truncation.js';\nimport Tracing from '../tracing/tracing.js';\n\nRollbar.setComponents({\n telemeter: Telemeter,\n instrumenter: Instrumenter,\n wrapGlobals: wrapGlobals,\n scrub: scrub,\n truncation: truncation,\n tracing: Tracing,\n});\n\nexport default Rollbar;\n","import rollbar from '../rollbar.js';\n\nvar options = (typeof window !== 'undefined') && window._rollbarConfig;\nvar alias = options && options.globalAlias || 'Rollbar';\nvar shimRunning = (typeof window !== 'undefined') && window[alias] && typeof window[alias].shimId === 'function' && window[alias].shimId() !== undefined;\n\nif ((typeof window !== 'undefined') && !window._rollbarStartTime) {\n window._rollbarStartTime = (new Date()).getTime();\n}\n\nif (!shimRunning && options) {\n var Rollbar = new rollbar(options);\n window[alias] = Rollbar;\n} else if (typeof window !== 'undefined') {\n window.rollbar = rollbar;\n window._rollbarDidLoad = true;\n} else if (typeof self !== 'undefined') {\n self.rollbar = rollbar;\n self._rollbarDidLoad = true;\n}\n\nexport default rollbar;\n"],"names":["hasOwn","Object","prototype","hasOwnProperty","toStr","toString","isPlainObject","obj","call","hasOwnConstructor","hasIsPrototypeOf","constructor","key","merge","i","src","copy","clone","name","result","create","current","length","arguments","isType","x","t","typeName","_typeof","Error","match","toLowerCase","isFunction","f","isNativeFunction","reRegExpChar","funcMatchString","Function","replace","reIsNative","RegExp","isObject","test","value","type","isString","String","isFiniteNumber","n","Number","isFinite","isDefined","u","isIterable","isError","e","isPromise","p","then","isBrowser","window","redact","uuid4","d","now","uuid","c","r","Math","random","floor","LEVELS","debug","info","warning","error","critical","sanitizeHref","url","urlObject","URL","password","search","_","sanitizeUrl","baseUrlParts","parseUri","anchor","source","query","parseUriOptions","strictMode","q","parser","strict","loose","str","undefined","o","m","exec","uri","l","$0","$1","$2","addParamsAndAccessTokenToPath","accessToken","options","params","access_token","paramsArray","k","push","join","sort","path","qs","indexOf","h","substring","formatUrl","protocol","port","hostname","stringify","backup","JSON","jsonError","backupError","maxByteSize","string","count","code","charCodeAt","jsonParse","s","parse","makeUnhandledStackInfo","message","lineno","colno","mode","backupMessage","errorParser","location","line","column","func","guessFunctionName","context","gatherContext","href","document","useragent","navigator","userAgent","stack","wrapCallback","logger","err","resp","nonCircularClone","seen","newSeen","includes","slice","createItem","args","notifier","requestKeys","lambdaContext","custom","callback","request","arg","extraArgs","diagnostic","argTypes","typ","DOMException","j","len","item","timestamp","data","setCustomItemKeys","_originalArgs","original_arg_types","level","skipFrames","addErrorContext","errors","contextAdded","rollbarContext","error_context","TELEMETRY_TYPES","TELEMETRY_LEVELS","arrayIncludes","arr","val","createTelemetryEvent","metadata","event","addItemAttributes","itemData","attributes","_iterator","_createForOfIteratorHelper","_step","done","a","get","keys","split","set","setPrototypeOf","temp","replacement","formatArgsAsString","substr","Date","filterIp","requestData","captureIp","newIp","parts","pop","beginning","slashIdx","terminal","concat","handleOptions","input","payload","updateDeprecatedOptions","overwriteScrubFields","scrubFields","hostWhiteList","hostSafeList","log","hostBlackList","hostBlockList","RateLimiter","startTime","counter","perMinCounter","platform","platformOptions","configureGlobal","globalSettings","maxItems","itemsPerMinute","shouldSend","elapsedTime","globalRateLimit","globalRateLimitPerMin","checkRate","shouldSendValue","perMinute","setPlatformOptions","limit","ignoreRateLimit","limitPerMin","rateLimitPayload","environment","msg","body","extra","language","version","framework","Queue","rateLimiter","api","replay","_classCallCheck","predicates","pendingItems","pendingRequests","retryQueue","retryHandle","waitCallback","waitIntervalID","_createClass","configure","_this$api","oldOptions","addPredicate","predicate","addPendingItem","removePendingItem","idx","splice","addItem","originalError","originalItem","_this","predicateResult","_applyPredicates","stop","_maybeLog","transmit","replayId","capture","_makeApiRequest","headers","_dequeuePendingRequest","sendOrDiscardReplay","_this$replay","discard","wait","_this2","_maybeCallWait","clearInterval","setInterval","_this3","rateLimitResponse","postItem","_maybeRetry","shouldRetry","retryInterval","RETRIABLE_ERRORS","maxRetries","retries","_retryApiRequest","_this4","retryObject","shift","verbose","_defineProperty","Notifier","queue","transforms","addTransform","transform","enabled","_applyTransforms","bind","transformIndex","transformsLength","cb","Rollbar","telemeter","tracing","tracer","validateTracer","_configuredOptions","setStackTraceLimit","lastError","lastErrorHash","defaultOptions","global","payloadData","_defaultLogLevel","_log","warn","captureEvent","captureDomContentLoaded","ts","captureLoad","buildJsonPayload","sendJsonPayload","jsonPayload","postJsonPayload","defaultLevel","ignoreDuplicateErrors","_sameAsLastError","_addTracingAttributes","_addTracingInfo","_captureRollbarItem","telemetryEvents","copyEvents","_this$tracing","_this$tracing2","span","getSpan","sessionId","spanId","traceId","addEvent","logLevel","_isUncaught","itemHash","generateItemHash","scope","active","validateSpan","setTag","opentracingSpanId","toSpanId","opentracingTraceId","toTraceId","opentracing_span_id","opentracing_trace_id","stackTraceLimit","spanContext","buildPayload","contextResult","getTransportFromOptions","defaults","timeout","transport","detectTransport","proxy","endpoint","opts","pathname","gWindow","self","defaultTransport","fetch","XMLHttpRequest","transportOptions","method","transportAPI","host","appendPathToPath","base","baseTrailingSlash","pathBeginningSlash","_regeneratorRuntime","defineProperty","Symbol","iterator","asyncIterator","toStringTag","define","enumerable","configurable","writable","wrap","Generator","Context","makeInvokeMethod","tryCatch","y","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","mark","__proto__","awrap","async","Promise","reverse","prev","charAt","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","apply","_next","_throw","helpers","OTLPDefaultOptions","Api","urllib","truncation","_getTransport","OTLPTransportOptions","_getOTLPTransport","_postPromise","_ref","reject","post","setTimeout","postSpans","_ref2","_callee","_args","_callee$","_context","_x","stringifyResult","truncate","_options$tracing","_objectSpread","levels","disable","_len","Array","_key","_len2","_key2","_len3","_key3","_len4","_key4","_len5","_key5","init","unshift","console","captureUncaughtExceptions","handler","shim","oldOnError","_rollbarOldOnError","onerror","handleAnonymousErrors","fn","_rollbarWindowOnError","old","_rollbarWrappedError","_rollbarContext","ret","handleUncaughtException","anonymousErrorsPending","captureUnhandledRejections","_rollbarURH","belongsToShim","removeEventListener","rejectionHandler","evt","reason","promise","detail","handleUnhandledRejection","addEventListener","makeFetchRequest","controller","timeoutId","AbortController","abort","signal","response","clearTimeout","respHeaders","isItemRoute","endsWith","json","makeXhrRequest","requestFactory","_createXMLHTTPObject","onreadystatechange","readyState","parseResponse","responseText","_isSuccess","getResponseHeader","_isNormalFailure","status","_newRetriableError","ex","exc","open","setRequestHeader","_i","_Object$entries","entries","_Object$entries$_i","_slicedToArray","send","e1","XDomainRequest","xdomainrequest","onprogress","ontimeout","onload","e2","factories","ActiveXObject","xmlhttp","numFactories","Transport","_makeZoneRequest","rootZone","Zone","root","run","_makeRequest","RollbarProxy","_proxyRequest","rollbarProxy","_msg","auth","hash","last","parseInt","pathParts","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","allowEmpty","parseStack","stackString","parseV8OrIeString","parseFFOrSafariString","extractLocation","urlLike","regExp","applySlice","lines","isArray","filtered","filter","map","sanitizedLine","locationParts","functionName","fileName","function","file","col","raw","functionNameRegex","matches","parseOpera9","parseOpera10","parseOpera11","lineRE","tokens","functionCall","argsRaw","parse$1","parseV8OrIE$1","parseFFOrSafari$1","parseOpera$1","parseOpera9$1","parseOpera10$1","parseOpera11$1","stackframesLiteToStackframes","liteStackframes","liteStackframe","lineNumber","columnNumber","parseErrorStack","UNKNOWN_FUNCTION","ERR_CLASS_REGEXP","Frame","stackFrame","_stackFrame","Stack","exception","skip","getStack","parserStack","_mostSpecificErrorName","rawStack","rawException","nested","cause","traceChain","guessErrorClass","errMsg","errClassMatch","errClass","constructorName","handleDomException","handleItemWithError","stackInfo","_savedStackTrace","description","chain","ensureItemHasSomethingToSay","addBaseInfo","server","addRequestInfo","requestInfo","query_string","remoteString","user_ip","addClientInfo","nav","scr","screen","runtime_ms","_rollbarStartTime","round","javascript","browser","cookie_enabled","cookieEnabled","width","height","addPluginInfo","plugins","navPlugins","cur","addBody","addBodyTraceChain","addBodyTrace","addBodyMessage","stackFromItem","_unhandledStackInfo","traces","traceChainLength","trace","buildTrace","trace_chain","guess","className","errorClass","class","frame","pre","contextLength","mid","frames","filename","sendFrameUrl","addScrubber","scrubFn","scrubPaths","itemToPayload","addPayloadOptions","payloadOptions","addTelemetryData","addMessageWithError","tracePath","newExtra","userTransform","newItem","promisedItem","addConfigToPayload","sendConfig","configKey","addFunctionOption","addConfiguredOptions","configuredOptions","configured_options","addDiagnosticKeys","client","is_anonymous","is_uncaught","raw_error","constructor_name","failed","checkIgnore","settings","checkLevel","levelVal","reportLevel","reportLevelVal","userCheckIgnore","isUncaught","onSendCallback","urlIsNotBlockListed","urlIsOnAList","urlIsSafeListed","matchFrames","list","block","urlRegex","listLength","frameLength","safeOrBlock","tracesLength","listName","messageIsIgnored","ignoredMessages","rIgnoredMessage","messages","messagesFromItem","autoStart","triggerDefaults","samplingRatio","preDuration","postDuration","triggers","logErrors","logEmits","inlineStylesheet","inlineImages","collectFonts","maskInputOptions","email","tel","text","color","date","month","number","range","time","week","maskAllInputs","blockClass","maskTextClass","ignoreClass","slimDOMOptions","script","comment","headFavicon","headWhitespace","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","uncaughtErrorLevel","itemsPerMin","commonScrubFields","apiScrubFields","requestScrubFields","commonScrubHeaders","_toConsumableArray","Client","API","globals","sharedTransforms","sharedPredicates","replayDefaults","tracingDefaults","_instance","components","Telemeter","Instrumenter","instrumenter","wrapGlobals","scrub","Tracing","Replay","_gWindow","initSession","replayOptions","recorder","start","gDocument","isChrome","chrome","runtime","addTransformsToNotifier","addPredicatesToQueue","setupUnhandledCapture","instrument","setSessionAttributesFromOptions","rollbar","_this$instrumenter","_createItem","triggerDirectReplay","triggerReplay","unhandledExceptionsInitialized","captureUncaught","handleUncaughtExceptions","wrapGlobalEventHandlers","unhandledRejectionsInitialized","handleUnhandledRejections","inspectAnonymousErrors","prepareStackTrace","_stack","_isAnonymous","reasonResult","_before","ctxFn","_isWrap","_rollbar_wrapped","_wrappedSource","prop","setSessionUser","user","session","setUser","setSessionAttributes","attrs","_this$tracing3","setAttributes","_options$payload","_options$client","_options$payload2","_options$payload3","_options$payload4","person","code_version","codeVersion","loadFull","setComponents","callInstance","maybeCallback","_getFirstFunction","_Rollbar","_len6","_key6","_len7","_key7","_len8","_key8","_len9","_key9","_len10","_key10","_len11","_key11","_len12","_key12","_len13","_key13","_len14","_key14","browserDefaults","includeItemsInTelemetry","MAX_EVENTS","fromMillis","millis","trunc","maxTelemetryEvents","maxQueueSize","max","min","telemetrySpan","startSpan","newMaxEvents","deleteCount","events","filterTelemetry","otelAttributes","_objectWithoutProperties","_excluded","exportTelemetrySpan","end","rollbarUUID","getLevel","timestamp_ms","captureError","_this$telemetrySpan","captureLog","_this$telemetrySpan2","_this$telemetrySpan3","captureNetwork","subtype","_metadata$response","_this$telemetrySpan4","levelFromStatus","status_code","endTimeNano","end_time_ms","statusCode","request_headers","start_time_ms","captureDom","element","checked","captureInput","_this$telemetrySpan5","isSynthetic","endTimeUnixNano","_getRepeatedEvent","_updateRepeatedEvent","captureClick","_ref3","_this$telemetrySpan6","lastEvent","_lastEvent","target","duration","textZoomRatio","rate","captureFocus","_ref4","_this$telemetrySpan7","captureResize","_ref5","_this$telemetrySpan8","captureDragDrop","_ref6","_this$telemetrySpan9","dropEffect","effectAllowed","kinds","mediaTypes","captureNavigation","from","to","_this$telemetrySpan10","getTime","captureConnectivityChange","_ref7","_this$telemetrySpan11","manual","Headers","FetchHeaders","normalizeName","normalizeValue","iteratorFor","items","append","header","getOwnPropertyNames","oldValue","has","thisArg","replacements","orig","traverse","isObj","seenIndex","mapped","same","scrubPath","paramRes","_getScrubFieldRegexs","queryRes","_getScrubQueryParamRegexs","redactQueryParam","dummy0","paramPart","paramScrubber","valScrubber","scrubber","tmpV","pat","getElementType","getAttribute","isDescribedElement","subtypes","tagName","getElementFromEvent","doc","elementFromPoint","clientX","clientY","treeToArray","elem","MAX_HEIGHT","out","nextDescription","describeElement","parentNode","elementArrayToString","MAX_LENGTH","separator","separatorLength","nextStr","totalLength","descriptionToString","elementString","desc","id","classes","attr","isMatchingElement","selectors","cls","classList","contains","_iterator3","_step3","_iterator2","_step2","sel","urlparser","domUtil","network","networkResponseHeaders","networkResponseBody","networkRequestHeaders","networkRequestBody","networkErrorOnHttp5xx","networkErrorOnHttp4xx","networkErrorOnHttp0","dom","navigation","connectivity","contentSecurityPolicy","errorOnContentSecurityPolicy","restore","b","nameFromDescription","defaultValueScrubber","patterns","field","_patterns","_window","_document","removeListeners","autoInstrument","configureScrubbing","eventRemovers","contentsecuritypolicy","_location","_lastHref","_options$scrubTelemet","_options$replay","_options$replay2","_options$replay3","_options$replay4","_options$replay5","_options$replay6","_options$replay7","_options$replay8","_options$replay9","scrubTelemetryInputs","telemetryScrubber","maskInputFn","scrubClasses","Boolean","scrubSelectors","blockSelector","ignoreSelector","maskTextSelector","oldSettings","instrumentNetwork","deinstrumentNetwork","instrumentConsole","deinstrumentConsole","instrumentDom","deinstrumentDom","instrumentNavigation","deinstrumentNavigation","instrumentConnectivity","deinstrumentConnectivity","instrumentContentSecurityPolicy","deinstrumentContentSecurityPolicy","wrapProp","xhr","xhrp","isUrlObject","_isUrlObject","__rollbar_xhr","request_content_type","onreadystatechangeHandler","__rollbar_event","response_content_type","headersConfig","allHeaders","getAllResponseHeaders","trim","_iterator4","_step4","isJsonContentType","scrubJson","addOtelNetworkResponse","errorOnHttpStatus","trackHttpErrors","reqHeaders","fetchHeaders","telemetryEvent","contentType","endTimeMs","inHeaders","outHeaders","currentHeader","_iterator5","_step5","_this$_window","wrapConsole","origConsole","methods","_i2","_methods","addListener","handleEvent","click","handleClick","dragdrop","handleDrag","focus","handleFocus","form","handleForm","handleInput","resize","handleResize","contentLoaded","handleContentLoaded","_evt$target","isTrusted","_evt$target2","_evt$target3","innerWidth","innerHeight","objs","dataTransfer","files","_iterator6","_step6","kind","_evt$dataTransfer","_evt$dataTransfer2","scrubInputValue","inputType","mask","_evt$target4","_evt$target5","_evt$target6","_evt$target7","_evt$target8","chromePackagedApp","app","hasPushState","history","pushState","handleUrlChange","parsedHref","parsedTo","parsedFrom","handleConnectivity","handleCspEvent","cspEvent","blockedURI","violatedDirective","effectiveDirective","sourceFile","originalPolicy","handleCspError","cspHandler","section","types","_iterator7","_step7","_loop","passive","_extendListenerPrototype","oldAddEventListener","_rollbarOldAdd","addFn","bubble","oldRemoveEventListener","_rollbarOldRemove","removeFn","jsonBackup","selectFrames","truncateFrames","maybeTruncateValue","truncateStrings","truncator","truncateTraceData","traceData","minBody","needsTruncation","maxSize","strategies","strategy","results","parentContext","_currentContext","Map","getValue","setValue","deleteValue","delete","ROOT_CONTEXT","ContextManager","currentContext","enterContext","previousContext","exitContext","with","createContextKey","for","gen","bytes","randomBytes","Uint8Array","crypto","getRandomValues","randHex","byte","padStart","SESSION_KEY","Session","_attributes","getSession","createSession","initSessionAttributes","serializedSession","sessionStorage","getItem","_unused","createdAt","setSession","sessionString","setItem","_unused2","username","_navigator$userAgentD","_navigator$userAgentD2","_navigator$userAgentD3","userAgentData","brands","mobile","toMillis","hrtime","toNanos","add","usePerformance","performance","timeOrigin","isHrTime","SpanExporter","export","spans","_resultCallback","spanExportQueue","toPayload","resourceSpans","resource","scopeMap","scopeKey","instrumentationScope","_transformSpan","_transformResource","scopeSpans","scopeData","_transformInstrumentationScope","transformAttributes","_transformAnyValue","transformEvents","timeUnixNano","parentSpanId","startTimeUnixNano","endTime","keyValues","_this5","stringValue","isInteger","intValue","doubleValue","boolValue","arrayValue","kvlistValue","SpanProcessor","exporter","pendingSpans","transformFn","transformSpan","applyTransforms","onStart","_parentContext","onEnd","Span","initReadableSpan","spanProcessor","_options$session","links","ended","droppedAttributesCount","droppedEventsCount","droppedLinksCount","setAttribute","isRecording","Tracer","_this$tracing$resourc","_options$resource","_this$tracing$session","contextManager","parentSpan","parentSpanContext","traceFlags","traceState","SPAN_KEY","createTracer","_this$options$payload","_this$options$payload2","idGen","getTracer","addSpanTransform","setSpan","_this$contextManager","withSpan","default","_rollbarConfig","alias","globalAlias","shimRunning","shimId","_rollbarDidLoad"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"rollbar.named-amd.js","mappings":";;UAAA;UACA;;;;;WCDA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA,E;;;;;WCPA,8CAA8C,yD;;;;;WCA9C;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D,E;;;;;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,MAAMA,CAACC,CAAC,EAAEC,CAAC,EAAE;EACpB,OAAOA,CAAC,KAAKC,QAAQ,CAACF,CAAC,CAAC;AAC1B;;AAEA;AACA;AACA;AACA,SAASE,QAAQA,CAACF,CAAC,EAAE;EACnB,IAAIG,IAAI,GAAAC,OAAA,CAAUJ,CAAC;EACnB,IAAIG,IAAI,KAAK,QAAQ,EAAE;IACrB,OAAOA,IAAI;EACb;EACA,IAAI,CAACH,CAAC,EAAE;IACN,OAAO,MAAM;EACf;EACA,IAAIA,CAAC,YAAYK,KAAK,EAAE;IACtB,OAAO,OAAO;EAChB;EACA,OAAO,CAAC,CAAC,CAACC,QAAQ,CACfC,IAAI,CAACP,CAAC,CAAC,CACPQ,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CACzBC,WAAW,CAAC,CAAC;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,UAAUA,CAACC,CAAC,EAAE;EACrB,OAAOZ,MAAM,CAACY,CAAC,EAAE,UAAU,CAAC;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,gBAAgBA,CAACD,CAAC,EAAE;EAC3B,IAAIE,YAAY,GAAG,qBAAqB;EACxC,IAAIC,eAAe,GAAGC,QAAQ,CAACC,SAAS,CAACV,QAAQ,CAC9CC,IAAI,CAACU,MAAM,CAACD,SAAS,CAACE,cAAc,CAAC,CACrCC,OAAO,CAACN,YAAY,EAAE,MAAM,CAAC,CAC7BM,OAAO,CAAC,wDAAwD,EAAE,OAAO,CAAC;EAC7E,IAAIC,UAAU,GAAGC,MAAM,CAAC,GAAG,GAAGP,eAAe,GAAG,GAAG,CAAC;EACpD,OAAOQ,QAAQ,CAACX,CAAC,CAAC,IAAIS,UAAU,CAACG,IAAI,CAACZ,CAAC,CAAC;AAC1C;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASW,QAAQA,CAACE,KAAK,EAAE;EACvB,OACEA,KAAK,IAAI,IAAI,KAAKpB,OAAA,CAAOoB,KAAK,KAAI,QAAQ,IAAI,OAAOA,KAAK,IAAI,UAAU,CAAC;AAE7E;;AAEA;AACA,SAASC,MAAMA,CAACC,GAAG,EAAEC,IAAI,EAAE;EACzB,IAAID,GAAG,IAAI,IAAI,EAAE;IACf,OAAO,KAAK;EACd;EACA,IAAIT,MAAM,CAACQ,MAAM,EAAE;IACjB,OAAOR,MAAM,CAACQ,MAAM,CAACC,GAAG,EAAEC,IAAI,CAAC;EACjC;EACA,OAAOV,MAAM,CAACD,SAAS,CAACE,cAAc,CAACX,IAAI,CAACmB,GAAG,EAAEC,IAAI,CAAC;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,QAAQA,CAACJ,KAAK,EAAE;EACvB,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,YAAYK,MAAM;AAC7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,cAAcA,CAACC,CAAC,EAAE;EACzB,OAAOC,MAAM,CAACC,QAAQ,CAACF,CAAC,CAAC;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,UAAUA,CAACC,CAAC,EAAE;EACrB,IAAIC,IAAI,GAAGlC,QAAQ,CAACiC,CAAC,CAAC;EACtB,OAAOC,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,OAAO;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,OAAOA,CAACC,CAAC,EAAE;EAClB;EACA,OAAOvC,MAAM,CAACuC,CAAC,EAAE,OAAO,CAAC,IAAIvC,MAAM,CAACuC,CAAC,EAAE,WAAW,CAAC;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,SAASA,CAACC,CAAC,EAAE;EACpB,OAAOlB,QAAQ,CAACkB,CAAC,CAAC,IAAIzC,MAAM,CAACyC,CAAC,CAACC,IAAI,EAAE,UAAU,CAAC;AAClD;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,SAASA,CAAA,EAAG;EACnB,OAAO,OAAOC,MAAM,KAAK,WAAW;AACtC;AAEA,SAASC,MAAMA,CAAA,EAAG;EAChB,OAAO,UAAU;AACnB;;AAEA;AACA,SAASC,KAAKA,CAAA,EAAG;EACf,IAAIC,CAAC,GAAGC,GAAG,CAAC,CAAC;EACb,IAAIC,IAAI,GAAG,sCAAsC,CAAC7B,OAAO,CACvD,OAAO,EACP,UAAU8B,CAAC,EAAE;IACX,IAAIC,CAAC,GAAI,CAACJ,CAAC,GAAGK,IAAI,CAACC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAI,CAAC;IAC3CN,CAAC,GAAGK,IAAI,CAACE,KAAK,CAACP,CAAC,GAAG,EAAE,CAAC;IACtB,OAAO,CAACG,CAAC,KAAK,GAAG,GAAGC,CAAC,GAAIA,CAAC,GAAG,GAAG,GAAI,GAAG,EAAE5C,QAAQ,CAAC,EAAE,CAAC;EACvD,CACF,CAAC;EACD,OAAO0C,IAAI;AACb;AAEA,IAAIM,MAAM,GAAG;EACXC,KAAK,EAAE,CAAC;EACRC,IAAI,EAAE,CAAC;EACPC,OAAO,EAAE,CAAC;EACVC,KAAK,EAAE,CAAC;EACRC,QAAQ,EAAE;AACZ,CAAC;AAED,SAASC,YAAYA,CAACC,GAAG,EAAE;EACzB,IAAI;IACF,IAAMC,SAAS,GAAG,IAAIC,GAAG,CAACF,GAAG,CAAC;IAC9B,IAAIC,SAAS,CAACE,QAAQ,EAAE;MACtBF,SAAS,CAACE,QAAQ,GAAGpB,MAAM,CAAC,CAAC;IAC/B;IACA,IAAIkB,SAAS,CAACG,MAAM,EAAE;MACpBH,SAAS,CAACG,MAAM,GAAGrB,MAAM,CAAC,CAAC;IAC7B;IACA,OAAOkB,SAAS,CAACxD,QAAQ,CAAC,CAAC;EAC7B,CAAC,CAAC,OAAO4D,CAAC,EAAE;IACV,OAAOL,GAAG,CAAC,CAAC;EACd;AACF;AAEA,SAASM,WAAWA,CAACN,GAAG,EAAE;EACxB,IAAIO,YAAY,GAAGC,QAAQ,CAACR,GAAG,CAAC;EAChC,IAAI,CAACO,YAAY,EAAE;IACjB,OAAO,WAAW;EACpB;;EAEA;EACA,IAAIA,YAAY,CAACE,MAAM,KAAK,EAAE,EAAE;IAC9BF,YAAY,CAACG,MAAM,GAAGH,YAAY,CAACG,MAAM,CAACpD,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;EAC5D;EAEA0C,GAAG,GAAGO,YAAY,CAACG,MAAM,CAACpD,OAAO,CAAC,GAAG,GAAGiD,YAAY,CAACI,KAAK,EAAE,EAAE,CAAC;EAC/D,OAAOX,GAAG;AACZ;AAEA,IAAIY,eAAe,GAAG;EACpBC,UAAU,EAAE,KAAK;EACjBC,GAAG,EAAE,CACH,QAAQ,EACR,UAAU,EACV,WAAW,EACX,UAAU,EACV,MAAM,EACN,UAAU,EACV,MAAM,EACN,MAAM,EACN,UAAU,EACV,MAAM,EACN,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,CACT;EACDC,CAAC,EAAE;IACDzE,IAAI,EAAE,UAAU;IAChB0E,MAAM,EAAE;EACV,CAAC;EACDA,MAAM,EAAE;IACNC,MAAM,EACJ,sIAAsI;IACxIC,KAAK,EACH;EACJ;AACF,CAAC;AAED,SAASV,QAAQA,CAACW,GAAG,EAAE;EACrB,IAAI,CAACjF,MAAM,CAACiF,GAAG,EAAE,QAAQ,CAAC,EAAE;IAC1B,OAAOC,SAAS;EAClB;EAEA,IAAIC,CAAC,GAAGT,eAAe;EACvB,IAAIU,CAAC,GAAGD,CAAC,CAACL,MAAM,CAACK,CAAC,CAACR,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC,CAACU,IAAI,CAACJ,GAAG,CAAC;EAC7D,IAAIK,GAAG,GAAG,CAAC,CAAC;EAEZ,KAAK,IAAIlD,CAAC,GAAG,CAAC,EAAEmD,CAAC,GAAGJ,CAAC,CAACP,GAAG,CAACY,MAAM,EAAEpD,CAAC,GAAGmD,CAAC,EAAE,EAAEnD,CAAC,EAAE;IAC5CkD,GAAG,CAACH,CAAC,CAACP,GAAG,CAACxC,CAAC,CAAC,CAAC,GAAGgD,CAAC,CAAChD,CAAC,CAAC,IAAI,EAAE;EAC5B;EAEAkD,GAAG,CAACH,CAAC,CAACN,CAAC,CAACzE,IAAI,CAAC,GAAG,CAAC,CAAC;EAClBkF,GAAG,CAACH,CAAC,CAACP,GAAG,CAAC,EAAE,CAAC,CAAC,CAACxD,OAAO,CAAC+D,CAAC,CAACN,CAAC,CAACC,MAAM,EAAE,UAAUW,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE;IACvD,IAAID,EAAE,EAAE;MACNJ,GAAG,CAACH,CAAC,CAACN,CAAC,CAACzE,IAAI,CAAC,CAACsF,EAAE,CAAC,GAAGC,EAAE;IACxB;EACF,CAAC,CAAC;EAEF,OAAOL,GAAG;AACZ;AAEA,SAASM,6BAA6BA,CAACC,WAAW,EAAEC,OAAO,EAAEC,MAAM,EAAE;EACnEA,MAAM,GAAGA,MAAM,IAAI,CAAC,CAAC;EACrBA,MAAM,CAACC,YAAY,GAAGH,WAAW;EACjC,IAAII,WAAW,GAAG,EAAE;EACpB,IAAIC,CAAC;EACL,KAAKA,CAAC,IAAIH,MAAM,EAAE;IAChB,IAAI7E,MAAM,CAACD,SAAS,CAACE,cAAc,CAACX,IAAI,CAACuF,MAAM,EAAEG,CAAC,CAAC,EAAE;MACnDD,WAAW,CAACE,IAAI,CAAC,CAACD,CAAC,EAAEH,MAAM,CAACG,CAAC,CAAC,CAAC,CAACE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C;EACF;EACA,IAAI3B,KAAK,GAAG,GAAG,GAAGwB,WAAW,CAACI,IAAI,CAAC,CAAC,CAACD,IAAI,CAAC,GAAG,CAAC;EAE9CN,OAAO,GAAGA,OAAO,IAAI,CAAC,CAAC;EACvBA,OAAO,CAACQ,IAAI,GAAGR,OAAO,CAACQ,IAAI,IAAI,EAAE;EACjC,IAAIC,EAAE,GAAGT,OAAO,CAACQ,IAAI,CAACE,OAAO,CAAC,GAAG,CAAC;EAClC,IAAIC,CAAC,GAAGX,OAAO,CAACQ,IAAI,CAACE,OAAO,CAAC,GAAG,CAAC;EACjC,IAAI/D,CAAC;EACL,IAAI8D,EAAE,KAAK,CAAC,CAAC,KAAKE,CAAC,KAAK,CAAC,CAAC,IAAIA,CAAC,GAAGF,EAAE,CAAC,EAAE;IACrC9D,CAAC,GAAGqD,OAAO,CAACQ,IAAI;IAChBR,OAAO,CAACQ,IAAI,GAAG7D,CAAC,CAACiE,SAAS,CAAC,CAAC,EAAEH,EAAE,CAAC,GAAG9B,KAAK,GAAG,GAAG,GAAGhC,CAAC,CAACiE,SAAS,CAACH,EAAE,GAAG,CAAC,CAAC;EACvE,CAAC,MAAM;IACL,IAAIE,CAAC,KAAK,CAAC,CAAC,EAAE;MACZhE,CAAC,GAAGqD,OAAO,CAACQ,IAAI;MAChBR,OAAO,CAACQ,IAAI,GAAG7D,CAAC,CAACiE,SAAS,CAAC,CAAC,EAAED,CAAC,CAAC,GAAGhC,KAAK,GAAGhC,CAAC,CAACiE,SAAS,CAACD,CAAC,CAAC;IAC3D,CAAC,MAAM;MACLX,OAAO,CAACQ,IAAI,GAAGR,OAAO,CAACQ,IAAI,GAAG7B,KAAK;IACrC;EACF;AACF;AAEA,SAASkC,SAASA,CAACC,CAAC,EAAEC,QAAQ,EAAE;EAC9BA,QAAQ,GAAGA,QAAQ,IAAID,CAAC,CAACC,QAAQ;EACjC,IAAI,CAACA,QAAQ,IAAID,CAAC,CAACE,IAAI,EAAE;IACvB,IAAIF,CAAC,CAACE,IAAI,KAAK,EAAE,EAAE;MACjBD,QAAQ,GAAG,OAAO;IACpB,CAAC,MAAM,IAAID,CAAC,CAACE,IAAI,KAAK,GAAG,EAAE;MACzBD,QAAQ,GAAG,QAAQ;IACrB;EACF;EACAA,QAAQ,GAAGA,QAAQ,IAAI,QAAQ;EAE/B,IAAI,CAACD,CAAC,CAACG,QAAQ,EAAE;IACf,OAAO,IAAI;EACb;EACA,IAAIC,MAAM,GAAGH,QAAQ,GAAG,IAAI,GAAGD,CAAC,CAACG,QAAQ;EACzC,IAAIH,CAAC,CAACE,IAAI,EAAE;IACVE,MAAM,GAAGA,MAAM,GAAG,GAAG,GAAGJ,CAAC,CAACE,IAAI;EAChC;EACA,IAAIF,CAAC,CAACN,IAAI,EAAE;IACVU,MAAM,GAAGA,MAAM,GAAGJ,CAAC,CAACN,IAAI;EAC1B;EACA,OAAOU,MAAM;AACf;AAEA,SAASC,SAASA,CAACtF,GAAG,EAAEuF,MAAM,EAAE;EAC9B,IAAIzF,KAAK,EAAEkC,KAAK;EAChB,IAAI;IACFlC,KAAK,GAAG0F,IAAI,CAACF,SAAS,CAACtF,GAAG,CAAC;EAC7B,CAAC,CAAC,OAAOyF,SAAS,EAAE;IAClB,IAAIF,MAAM,IAAIvG,UAAU,CAACuG,MAAM,CAAC,EAAE;MAChC,IAAI;QACFzF,KAAK,GAAGyF,MAAM,CAACvF,GAAG,CAAC;MACrB,CAAC,CAAC,OAAO0F,WAAW,EAAE;QACpB1D,KAAK,GAAG0D,WAAW;MACrB;IACF,CAAC,MAAM;MACL1D,KAAK,GAAGyD,SAAS;IACnB;EACF;EACA,OAAO;IAAEzD,KAAK,EAAEA,KAAK;IAAElC,KAAK,EAAEA;EAAM,CAAC;AACvC;AAEA,SAAS6F,WAAWA,CAACC,MAAM,EAAE;EAC3B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA,IAAIC,KAAK,GAAG,CAAC;EACb,IAAIhC,MAAM,GAAG+B,MAAM,CAAC/B,MAAM;EAE1B,KAAK,IAAIpD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoD,MAAM,EAAEpD,CAAC,EAAE,EAAE;IAC/B,IAAIqF,IAAI,GAAGF,MAAM,CAACG,UAAU,CAACtF,CAAC,CAAC;IAC/B,IAAIqF,IAAI,GAAG,GAAG,EAAE;MACd;MACAD,KAAK,GAAGA,KAAK,GAAG,CAAC;IACnB,CAAC,MAAM,IAAIC,IAAI,GAAG,IAAI,EAAE;MACtB;MACAD,KAAK,GAAGA,KAAK,GAAG,CAAC;IACnB,CAAC,MAAM,IAAIC,IAAI,GAAG,KAAK,EAAE;MACvB;MACAD,KAAK,GAAGA,KAAK,GAAG,CAAC;IACnB;EACF;EAEA,OAAOA,KAAK;AACd;AAEA,SAASG,SAASA,CAACC,CAAC,EAAE;EACpB,IAAInG,KAAK,EAAEkC,KAAK;EAChB,IAAI;IACFlC,KAAK,GAAG0F,IAAI,CAACU,KAAK,CAACD,CAAC,CAAC;EACvB,CAAC,CAAC,OAAOrF,CAAC,EAAE;IACVoB,KAAK,GAAGpB,CAAC;EACX;EACA,OAAO;IAAEoB,KAAK,EAALA,KAAK;IAAElC,KAAK,EAALA;EAAM,CAAC;AACzB;AAEA,SAASqG,sBAAsBA,CAC7BC,OAAO,EACPjE,GAAG,EACHkE,MAAM,EACNC,KAAK,EACLtE,KAAK,EACLuE,IAAI,EACJC,aAAa,EACbC,WAAW,EACX;EACA,IAAIC,QAAQ,GAAG;IACbvE,GAAG,EAAEA,GAAG,IAAI,EAAE;IACdwE,IAAI,EAAEN,MAAM;IACZO,MAAM,EAAEN;EACV,CAAC;EACDI,QAAQ,CAACG,IAAI,GAAGJ,WAAW,CAACK,iBAAiB,CAACJ,QAAQ,CAACvE,GAAG,EAAEuE,QAAQ,CAACC,IAAI,CAAC;EAC1ED,QAAQ,CAACK,OAAO,GAAGN,WAAW,CAACO,aAAa,CAACN,QAAQ,CAACvE,GAAG,EAAEuE,QAAQ,CAACC,IAAI,CAAC;EACzE,IAAIM,IAAI,GACN,OAAOC,QAAQ,KAAK,WAAW,IAC/BA,QAAQ,IACRA,QAAQ,CAACR,QAAQ,IACjBQ,QAAQ,CAACR,QAAQ,CAACO,IAAI;EACxB,IAAIE,SAAS,GACX,OAAOlG,MAAM,KAAK,WAAW,IAC7BA,MAAM,IACNA,MAAM,CAACmG,SAAS,IAChBnG,MAAM,CAACmG,SAAS,CAACC,SAAS;EAC5B,OAAO;IACLd,IAAI,EAAEA,IAAI;IACVH,OAAO,EAAEpE,KAAK,GAAG7B,MAAM,CAAC6B,KAAK,CAAC,GAAGoE,OAAO,IAAII,aAAa;IACzDrE,GAAG,EAAE8E,IAAI;IACTK,KAAK,EAAE,CAACZ,QAAQ,CAAC;IACjBS,SAAS,EAAEA;EACb,CAAC;AACH;AAEA,SAASI,YAAYA,CAACC,MAAM,EAAEvI,CAAC,EAAE;EAC/B,OAAO,UAAUwI,GAAG,EAAEC,IAAI,EAAE;IAC1B,IAAI;MACFzI,CAAC,CAACwI,GAAG,EAAEC,IAAI,CAAC;IACd,CAAC,CAAC,OAAO9G,CAAC,EAAE;MACV4G,MAAM,CAACxF,KAAK,CAACpB,CAAC,CAAC;IACjB;EACF,CAAC;AACH;AAEA,SAAS+G,gBAAgBA,CAAC3H,GAAG,EAAE;EAC7B,IAAI4H,IAAI,GAAG,CAAC5H,GAAG,CAAC;EAEhB,SAAS6H,KAAKA,CAAC7H,GAAG,EAAE4H,IAAI,EAAE;IACxB,IAAI9H,KAAK;MACPrB,IAAI;MACJqJ,OAAO;MACPzC,MAAM,GAAG,CAAC,CAAC;IAEb,IAAI;MACF,KAAK5G,IAAI,IAAIuB,GAAG,EAAE;QAChBF,KAAK,GAAGE,GAAG,CAACvB,IAAI,CAAC;QAEjB,IAAIqB,KAAK,KAAKzB,MAAM,CAACyB,KAAK,EAAE,QAAQ,CAAC,IAAIzB,MAAM,CAACyB,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE;UAChE,IAAI8H,IAAI,CAACG,QAAQ,CAACjI,KAAK,CAAC,EAAE;YACxBuF,MAAM,CAAC5G,IAAI,CAAC,GAAG,8BAA8B,GAAGD,QAAQ,CAACsB,KAAK,CAAC;UACjE,CAAC,MAAM;YACLgI,OAAO,GAAGF,IAAI,CAACI,KAAK,CAAC,CAAC;YACtBF,OAAO,CAACtD,IAAI,CAAC1E,KAAK,CAAC;YACnBuF,MAAM,CAAC5G,IAAI,CAAC,GAAGoJ,KAAK,CAAC/H,KAAK,EAAEgI,OAAO,CAAC;UACtC;UACA;QACF;QAEAzC,MAAM,CAAC5G,IAAI,CAAC,GAAGqB,KAAK;MACtB;IACF,CAAC,CAAC,OAAOc,CAAC,EAAE;MACVyE,MAAM,GAAG,8BAA8B,GAAGzE,CAAC,CAACwF,OAAO;IACrD;IACA,OAAOf,MAAM;EACf;EACA,OAAOwC,KAAK,CAAC7H,GAAG,EAAE4H,IAAI,CAAC;AACzB;AAEA,SAASK,UAAUA,CAACC,IAAI,EAAEV,MAAM,EAAEW,QAAQ,EAAEC,WAAW,EAAEC,aAAa,EAAE;EACtE,IAAIjC,OAAO,EAAEqB,GAAG,EAAEa,MAAM,EAAEC,QAAQ,EAAEC,OAAO;EAC3C,IAAIC,GAAG;EACP,IAAIC,SAAS,GAAG,EAAE;EAClB,IAAIC,UAAU,GAAG,CAAC,CAAC;EACnB,IAAIC,QAAQ,GAAG,EAAE;EAEjB,KAAK,IAAInI,CAAC,GAAG,CAAC,EAAEmD,CAAC,GAAGsE,IAAI,CAACrE,MAAM,EAAEpD,CAAC,GAAGmD,CAAC,EAAE,EAAEnD,CAAC,EAAE;IAC3CgI,GAAG,GAAGP,IAAI,CAACzH,CAAC,CAAC;IAEb,IAAIoI,GAAG,GAAGrK,QAAQ,CAACiK,GAAG,CAAC;IACvBG,QAAQ,CAACpE,IAAI,CAACqE,GAAG,CAAC;IAClB,QAAQA,GAAG;MACT,KAAK,WAAW;QACd;MACF,KAAK,QAAQ;QACX,IAAIzC,OAAO,EAAE;UACXsC,SAAS,CAAClE,IAAI,CAACiE,GAAG,CAAC;QACrB,CAAC,MAAM;UACLrC,OAAO,GAAGqC,GAAG;QACf;QACA;MACF,KAAK,UAAU;QACbF,QAAQ,GAAGhB,YAAY,CAACC,MAAM,EAAEiB,GAAG,CAAC;QACpC;MACF,KAAK,MAAM;QACTC,SAAS,CAAClE,IAAI,CAACiE,GAAG,CAAC;QACnB;MACF,KAAK,OAAO;MACZ,KAAK,cAAc;MACnB,KAAK,WAAW;QAAE;QAChB,IAAIhB,GAAG,EAAE;UACPiB,SAAS,CAAClE,IAAI,CAACiE,GAAG,CAAC;QACrB,CAAC,MAAM;UACLhB,GAAG,GAAGgB,GAAG;QACX;QACA;MACF,KAAK,QAAQ;MACb,KAAK,OAAO;QACV,IACEA,GAAG,YAAY9J,KAAK,IACnB,OAAOmK,YAAY,KAAK,WAAW,IAAIL,GAAG,YAAYK,YAAa,EACpE;UACA,IAAIrB,GAAG,EAAE;YACPiB,SAAS,CAAClE,IAAI,CAACiE,GAAG,CAAC;UACrB,CAAC,MAAM;YACLhB,GAAG,GAAGgB,GAAG;UACX;UACA;QACF;QACA,IAAIL,WAAW,IAAIS,GAAG,KAAK,QAAQ,IAAI,CAACL,OAAO,EAAE;UAC/C,KAAK,IAAIO,CAAC,GAAG,CAAC,EAAEC,GAAG,GAAGZ,WAAW,CAACvE,MAAM,EAAEkF,CAAC,GAAGC,GAAG,EAAE,EAAED,CAAC,EAAE;YACtD,IAAIN,GAAG,CAACL,WAAW,CAACW,CAAC,CAAC,CAAC,KAAKxF,SAAS,EAAE;cACrCiF,OAAO,GAAGC,GAAG;cACb;YACF;UACF;UACA,IAAID,OAAO,EAAE;YACX;UACF;QACF;QACA,IAAIF,MAAM,EAAE;UACVI,SAAS,CAAClE,IAAI,CAACiE,GAAG,CAAC;QACrB,CAAC,MAAM;UACLH,MAAM,GAAGG,GAAG;QACd;QACA;MACF;QACE,IACEA,GAAG,YAAY9J,KAAK,IACnB,OAAOmK,YAAY,KAAK,WAAW,IAAIL,GAAG,YAAYK,YAAa,EACpE;UACA,IAAIrB,GAAG,EAAE;YACPiB,SAAS,CAAClE,IAAI,CAACiE,GAAG,CAAC;UACrB,CAAC,MAAM;YACLhB,GAAG,GAAGgB,GAAG;UACX;UACA;QACF;QACAC,SAAS,CAAClE,IAAI,CAACiE,GAAG,CAAC;IACvB;EACF;;EAEA;EACA,IAAIH,MAAM,EAAEA,MAAM,GAAGX,gBAAgB,CAACW,MAAM,CAAC;EAE7C,IAAII,SAAS,CAAC7E,MAAM,GAAG,CAAC,EAAE;IACxB,IAAI,CAACyE,MAAM,EAAEA,MAAM,GAAGX,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC1CW,MAAM,CAACI,SAAS,GAAGf,gBAAgB,CAACe,SAAS,CAAC;EAChD;EAEA,IAAIO,IAAI,GAAG;IACT7C,OAAO,EAAEA,OAAO;IAChBqB,GAAG,EAAEA,GAAG;IACRa,MAAM,EAAEA,MAAM;IACdY,SAAS,EAAE7H,GAAG,CAAC,CAAC;IAChBkH,QAAQ,EAAEA,QAAQ;IAClBJ,QAAQ,EAAEA,QAAQ;IAClBQ,UAAU,EAAEA,UAAU;IACtBrH,IAAI,EAAEH,KAAK,CAAC;EACd,CAAC;EAED8H,IAAI,CAACE,IAAI,GAAGF,IAAI,CAACE,IAAI,IAAI,CAAC,CAAC;EAE3BC,iBAAiB,CAACH,IAAI,EAAEX,MAAM,CAAC;EAE/B,IAAIF,WAAW,IAAII,OAAO,EAAE;IAC1BS,IAAI,CAACT,OAAO,GAAGA,OAAO;EACxB;EACA,IAAIH,aAAa,EAAE;IACjBY,IAAI,CAACZ,aAAa,GAAGA,aAAa;EACpC;EACAY,IAAI,CAACI,aAAa,GAAGnB,IAAI;EACzBe,IAAI,CAACN,UAAU,CAACW,kBAAkB,GAAGV,QAAQ;EAC7C,OAAOK,IAAI;AACb;AAEA,SAASG,iBAAiBA,CAACH,IAAI,EAAEX,MAAM,EAAE;EACvC,IAAIA,MAAM,IAAIA,MAAM,CAACiB,KAAK,KAAKhG,SAAS,EAAE;IACxC0F,IAAI,CAACM,KAAK,GAAGjB,MAAM,CAACiB,KAAK;IACzB,OAAOjB,MAAM,CAACiB,KAAK;EACrB;EACA,IAAIjB,MAAM,IAAIA,MAAM,CAACkB,UAAU,KAAKjG,SAAS,EAAE;IAC7C0F,IAAI,CAACO,UAAU,GAAGlB,MAAM,CAACkB,UAAU;IACnC,OAAOlB,MAAM,CAACkB,UAAU;EAC1B;AACF;AAEA,SAASC,eAAeA,CAACR,IAAI,EAAES,MAAM,EAAE;EACrC,IAAIpB,MAAM,GAAGW,IAAI,CAACE,IAAI,CAACb,MAAM,IAAI,CAAC,CAAC;EACnC,IAAIqB,YAAY,GAAG,KAAK;EAExB,IAAI;IAAA,IAAAC,SAAA,GAAAC,0BAAA,CACkBH,MAAM;MAAAI,KAAA;IAAA;MAA1B,KAAAF,SAAA,CAAA3D,CAAA,MAAA6D,KAAA,GAAAF,SAAA,CAAAvJ,CAAA,IAAA0J,IAAA,GAA4B;QAAA,IAAjB/H,KAAK,GAAA8H,KAAA,CAAAhK,KAAA;QACd,IAAIC,MAAM,CAACiC,KAAK,EAAE,gBAAgB,CAAC,EAAE;UACnCsG,MAAM,GAAG0B,KAAK,CAAC1B,MAAM,EAAEX,gBAAgB,CAAC3F,KAAK,CAACiI,cAAc,CAAC,CAAC;UAC9DN,YAAY,GAAG,IAAI;QACrB;MACF;;MAEA;IAAA,SAAAlC,GAAA;MAAAmC,SAAA,CAAAhJ,CAAA,CAAA6G,GAAA;IAAA;MAAAmC,SAAA,CAAA3K,CAAA;IAAA;IACA,IAAI0K,YAAY,EAAE;MAChBV,IAAI,CAACE,IAAI,CAACb,MAAM,GAAGA,MAAM;IAC3B;EACF,CAAC,CAAC,OAAO1H,CAAC,EAAE;IACVqI,IAAI,CAACN,UAAU,CAACuB,aAAa,GAAG,UAAU,GAAGtJ,CAAC,CAACwF,OAAO;EACxD;AACF;AAEA,IAAI+D,eAAe,GAAG,CACpB,KAAK,EACL,SAAS,EACT,KAAK,EACL,YAAY,EACZ,OAAO,EACP,QAAQ,CACT;AACD,IAAIC,gBAAgB,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;AAExE,SAASC,aAAaA,CAACC,GAAG,EAAEC,GAAG,EAAE;EAAA,IAAAC,UAAA,GAAAX,0BAAA,CACXS,GAAG;IAAAG,MAAA;EAAA;IAAvB,KAAAD,UAAA,CAAAvE,CAAA,MAAAwE,MAAA,GAAAD,UAAA,CAAAnK,CAAA,IAAA0J,IAAA,GAAyB;MAAA,IAAdW,KAAK,GAAAD,MAAA,CAAA3K,KAAA;MACd,IAAI4K,KAAK,KAAKH,GAAG,EAAE;QACjB,OAAO,IAAI;MACb;IACF;EAAC,SAAA9C,GAAA;IAAA+C,UAAA,CAAA5J,CAAA,CAAA6G,GAAA;EAAA;IAAA+C,UAAA,CAAAvL,CAAA;EAAA;EAED,OAAO,KAAK;AACd;AAEA,SAAS0L,oBAAoBA,CAACzC,IAAI,EAAE;EAClC,IAAIxH,IAAI,EAAEkK,QAAQ,EAAErB,KAAK;EACzB,IAAId,GAAG;EAEP,KAAK,IAAIhI,CAAC,GAAG,CAAC,EAAEmD,CAAC,GAAGsE,IAAI,CAACrE,MAAM,EAAEpD,CAAC,GAAGmD,CAAC,EAAE,EAAEnD,CAAC,EAAE;IAC3CgI,GAAG,GAAGP,IAAI,CAACzH,CAAC,CAAC;IAEb,IAAIoI,GAAG,GAAGrK,QAAQ,CAACiK,GAAG,CAAC;IACvB,QAAQI,GAAG;MACT,KAAK,QAAQ;QACX,IAAI,CAACnI,IAAI,IAAI2J,aAAa,CAACF,eAAe,EAAE1B,GAAG,CAAC,EAAE;UAChD/H,IAAI,GAAG+H,GAAG;QACZ,CAAC,MAAM,IAAI,CAACc,KAAK,IAAIc,aAAa,CAACD,gBAAgB,EAAE3B,GAAG,CAAC,EAAE;UACzDc,KAAK,GAAGd,GAAG;QACb;QACA;MACF,KAAK,QAAQ;QACXmC,QAAQ,GAAGnC,GAAG;QACd;MACF;QACE;IACJ;EACF;EACA,IAAIoC,KAAK,GAAG;IACVnK,IAAI,EAAEA,IAAI,IAAI,QAAQ;IACtBkK,QAAQ,EAAEA,QAAQ,IAAI,CAAC,CAAC;IACxBrB,KAAK,EAAEA;EACT,CAAC;EAED,OAAOsB,KAAK;AACd;AAEA,SAASC,iBAAiBA,CAACC,QAAQ,EAAEC,UAAU,EAAE;EAC/CD,QAAQ,CAACC,UAAU,GAAGD,QAAQ,CAACC,UAAU,IAAI,EAAE;EAAC,IAAAC,UAAA,GAAApB,0BAAA,CAChCmB,UAAU;IAAAE,MAAA;EAAA;IAA1B,KAAAD,UAAA,CAAAhF,CAAA,MAAAiF,MAAA,GAAAD,UAAA,CAAA5K,CAAA,IAAA0J,IAAA,GAA4B;MAAA,IAAjBoB,CAAC,GAAAD,MAAA,CAAApL,KAAA;MACV,IAAIqL,CAAC,CAACrL,KAAK,KAAKyD,SAAS,EAAE;QACzB;MACF;MACAwH,QAAQ,CAACC,UAAU,CAACxG,IAAI,CAAC2G,CAAC,CAAC;IAC7B;EAAC,SAAA1D,GAAA;IAAAwD,UAAA,CAAArK,CAAA,CAAA6G,GAAA;EAAA;IAAAwD,UAAA,CAAAhM,CAAA;EAAA;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASmM,GAAGA,CAACpL,GAAG,EAAE2E,IAAI,EAAE;EACtB,IAAI,CAAC3E,GAAG,EAAE;IACR,OAAOuD,SAAS;EAClB;EACA,IAAI8H,IAAI,GAAG1G,IAAI,CAAC2G,KAAK,CAAC,GAAG,CAAC;EAC1B,IAAIjG,MAAM,GAAGrF,GAAG;EAChB,IAAI;IACF,KAAK,IAAIS,CAAC,GAAG,CAAC,EAAEuI,GAAG,GAAGqC,IAAI,CAACxH,MAAM,EAAEpD,CAAC,GAAGuI,GAAG,EAAE,EAAEvI,CAAC,EAAE;MAC/C4E,MAAM,GAAGA,MAAM,CAACgG,IAAI,CAAC5K,CAAC,CAAC,CAAC;IAC1B;EACF,CAAC,CAAC,OAAO8K,EAAE,EAAE;IACXlG,MAAM,GAAG9B,SAAS;EACpB;EACA,OAAO8B,MAAM;AACf;AAEA,SAASmG,GAAGA,CAACxL,GAAG,EAAE2E,IAAI,EAAE7E,KAAK,EAAE;EAC7B,IAAI,CAACE,GAAG,EAAE;IACR;EACF;;EAEA;EACAT,MAAM,CAACkM,cAAc,CAACzL,GAAG,EAAE,IAAI,CAAC;EAEhC,IAAIqL,IAAI,GAAG1G,IAAI,CAAC2G,KAAK,CAAC,GAAG,CAAC;EAC1B,IAAItC,GAAG,GAAGqC,IAAI,CAACxH,MAAM;EACrB,IAAImF,GAAG,GAAG,CAAC,EAAE;IACX;EACF;EACA,IAAIA,GAAG,KAAK,CAAC,EAAE;IACbhJ,GAAG,CAACqL,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGvL,KAAK;IACpB;EACF;EACA,IAAI;IACF,IAAI4L,IAAI,GAAG1L,GAAG,CAACqL,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAIM,WAAW,GAAGD,IAAI;IACtB,KAAK,IAAIjL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGuI,GAAG,GAAG,CAAC,EAAE,EAAEvI,CAAC,EAAE;MAChCiL,IAAI,CAACL,IAAI,CAAC5K,CAAC,CAAC,CAAC,GAAGiL,IAAI,CAACL,IAAI,CAAC5K,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;MACnCiL,IAAI,GAAGA,IAAI,CAACL,IAAI,CAAC5K,CAAC,CAAC,CAAC;IACtB;IACAiL,IAAI,CAACL,IAAI,CAACrC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAGlJ,KAAK;IAC3BE,GAAG,CAACqL,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGM,WAAW;EAC5B,CAAC,CAAC,OAAOJ,EAAE,EAAE;IACX;EACF;AACF;AAEA,SAASK,kBAAkBA,CAAC1D,IAAI,EAAE;EAChC,IAAIzH,CAAC,EAAEuI,GAAG,EAAEP,GAAG;EACf,IAAIpD,MAAM,GAAG,EAAE;EACf,KAAK5E,CAAC,GAAG,CAAC,EAAEuI,GAAG,GAAGd,IAAI,CAACrE,MAAM,EAAEpD,CAAC,GAAGuI,GAAG,EAAE,EAAEvI,CAAC,EAAE;IAC3CgI,GAAG,GAAGP,IAAI,CAACzH,CAAC,CAAC;IACb,QAAQjC,QAAQ,CAACiK,GAAG,CAAC;MACnB,KAAK,QAAQ;QACXA,GAAG,GAAGnD,SAAS,CAACmD,GAAG,CAAC;QACpBA,GAAG,GAAGA,GAAG,CAACzG,KAAK,IAAIyG,GAAG,CAAC3I,KAAK;QAC5B,IAAI2I,GAAG,CAAC5E,MAAM,GAAG,GAAG,EAAE;UACpB4E,GAAG,GAAGA,GAAG,CAACoD,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK;QAClC;QACA;MACF,KAAK,MAAM;QACTpD,GAAG,GAAG,MAAM;QACZ;MACF,KAAK,WAAW;QACdA,GAAG,GAAG,WAAW;QACjB;MACF,KAAK,QAAQ;QACXA,GAAG,GAAGA,GAAG,CAAC7J,QAAQ,CAAC,CAAC;QACpB;IACJ;IACAyG,MAAM,CAACb,IAAI,CAACiE,GAAG,CAAC;EAClB;EACA,OAAOpD,MAAM,CAACZ,IAAI,CAAC,GAAG,CAAC;AACzB;AAEA,SAASpD,GAAGA,CAAA,EAAG;EACb,IAAIyK,IAAI,CAACzK,GAAG,EAAE;IACZ,OAAOyK,IAAI,CAACzK,GAAG,CAAC,CAAC;EACnB;EACA,OAAOf,MAAM,CAAC,IAAIwL,IAAI,CAAC,CAAC,CAAC;AAC3B;AAEA,SAASC,QAAQA,CAACC,WAAW,EAAEC,SAAS,EAAE;EACxC,IAAI,CAACD,WAAW,IAAI,CAACA,WAAW,CAAC,SAAS,CAAC,IAAIC,SAAS,KAAK,IAAI,EAAE;IACjE;EACF;EACA,IAAIC,KAAK,GAAGF,WAAW,CAAC,SAAS,CAAC;EAClC,IAAI,CAACC,SAAS,EAAE;IACdC,KAAK,GAAG,IAAI;EACd,CAAC,MAAM;IACL,IAAI;MACF,IAAIC,KAAK;MACT,IAAID,KAAK,CAACrH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;QAC7BsH,KAAK,GAAGD,KAAK,CAACZ,KAAK,CAAC,GAAG,CAAC;QACxBa,KAAK,CAACC,GAAG,CAAC,CAAC;QACXD,KAAK,CAAC3H,IAAI,CAAC,GAAG,CAAC;QACf0H,KAAK,GAAGC,KAAK,CAAC1H,IAAI,CAAC,GAAG,CAAC;MACzB,CAAC,MAAM,IAAIyH,KAAK,CAACrH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;QACpCsH,KAAK,GAAGD,KAAK,CAACZ,KAAK,CAAC,GAAG,CAAC;QACxB,IAAIa,KAAK,CAACtI,MAAM,GAAG,CAAC,EAAE;UACpB,IAAIwI,SAAS,GAAGF,KAAK,CAACnE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;UACjC,IAAIsE,QAAQ,GAAGD,SAAS,CAAC,CAAC,CAAC,CAACxH,OAAO,CAAC,GAAG,CAAC;UACxC,IAAIyH,QAAQ,KAAK,CAAC,CAAC,EAAE;YACnBD,SAAS,CAAC,CAAC,CAAC,GAAGA,SAAS,CAAC,CAAC,CAAC,CAACtH,SAAS,CAAC,CAAC,EAAEuH,QAAQ,CAAC;UACpD;UACA,IAAIC,QAAQ,GAAG,0BAA0B;UACzCL,KAAK,GAAGG,SAAS,CAACG,MAAM,CAACD,QAAQ,CAAC,CAAC9H,IAAI,CAAC,GAAG,CAAC;QAC9C;MACF,CAAC,MAAM;QACLyH,KAAK,GAAG,IAAI;MACd;IACF,CAAC,CAAC,OAAOX,EAAE,EAAE;MACXW,KAAK,GAAG,IAAI;IACd;EACF;EACAF,WAAW,CAAC,SAAS,CAAC,GAAGE,KAAK;AAChC;AAEA,SAASO,aAAaA,CAACC,OAAO,EAAEC,KAAK,EAAEC,OAAO,EAAEpF,MAAM,EAAE;EACtD,IAAInC,MAAM,GAAG2E,KAAK,CAAC0C,OAAO,EAAEC,KAAK,EAAEC,OAAO,CAAC;EAC3CvH,MAAM,GAAGwH,uBAAuB,CAACxH,MAAM,EAAEmC,MAAM,CAAC;EAChD,IAAI,CAACmF,KAAK,IAAIA,KAAK,CAACG,oBAAoB,EAAE;IACxC,OAAOzH,MAAM;EACf;EACA,IAAIsH,KAAK,CAACI,WAAW,EAAE;IACrB1H,MAAM,CAAC0H,WAAW,GAAG,CAACL,OAAO,CAACK,WAAW,IAAI,EAAE,EAAEP,MAAM,CAACG,KAAK,CAACI,WAAW,CAAC;EAC5E;EACA,OAAO1H,MAAM;AACf;AAEA,SAASwH,uBAAuBA,CAAC1I,OAAO,EAAEqD,MAAM,EAAE;EAChD,IAAIrD,OAAO,CAAC6I,aAAa,IAAI,CAAC7I,OAAO,CAAC8I,YAAY,EAAE;IAClD9I,OAAO,CAAC8I,YAAY,GAAG9I,OAAO,CAAC6I,aAAa;IAC5C7I,OAAO,CAAC6I,aAAa,GAAGzJ,SAAS;IACjCiE,MAAM,IAAIA,MAAM,CAAC0F,GAAG,CAAC,gDAAgD,CAAC;EACxE;EACA,IAAI/I,OAAO,CAACgJ,aAAa,IAAI,CAAChJ,OAAO,CAACiJ,aAAa,EAAE;IACnDjJ,OAAO,CAACiJ,aAAa,GAAGjJ,OAAO,CAACgJ,aAAa;IAC7ChJ,OAAO,CAACgJ,aAAa,GAAG5J,SAAS;IACjCiE,MAAM,IAAIA,MAAM,CAAC0F,GAAG,CAAC,iDAAiD,CAAC;EACzE;EACA,OAAO/I,OAAO;AAChB;AAEA,SAAS6F,KAAKA,CAAA,EAAG;EACf,SAASqD,aAAaA,CAACrN,GAAG,EAAE;IAC1B,IAAI,CAACA,GAAG,IAAIT,MAAM,CAACD,SAAS,CAACV,QAAQ,CAACC,IAAI,CAACmB,GAAG,CAAC,KAAK,iBAAiB,EAAE;MACrE,OAAO,KAAK;IACd;IAEA,IAAIsN,iBAAiB,GAAGvN,MAAM,CAACC,GAAG,EAAE,aAAa,CAAC;IAClD,IAAIuN,gBAAgB,GAClBvN,GAAG,CAACwN,WAAW,IACfxN,GAAG,CAACwN,WAAW,CAAClO,SAAS,IACzBS,MAAM,CAACC,GAAG,CAACwN,WAAW,CAAClO,SAAS,EAAE,eAAe,CAAC;IACpD;IACA,IAAIU,GAAG,CAACwN,WAAW,IAAI,CAACF,iBAAiB,IAAI,CAACC,gBAAgB,EAAE;MAC9D,OAAO,KAAK;IACd;;IAEA;IACA;IACA,IAAItK,GAAG;IACP,KAAKA,GAAG,IAAIjD,GAAG,EAAE;MACf;IAAA;IAGF,OAAO,OAAOiD,GAAG,KAAK,WAAW,IAAIlD,MAAM,CAACC,GAAG,EAAEiD,GAAG,CAAC;EACvD;EAEA,IAAIxC,CAAC;IACHgN,GAAG;IACHC,IAAI;IACJ7F,KAAK;IACLpJ,IAAI;IACJ4G,MAAM,GAAG9F,MAAM,CAACoO,MAAM,CAAC,IAAI,CAAC;IAAE;IAC9BjB,OAAO,GAAG,IAAI;IACd7I,MAAM,GAAG+J,SAAS,CAAC/J,MAAM;EAE3B,KAAKpD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoD,MAAM,EAAEpD,CAAC,EAAE,EAAE;IAC3BiM,OAAO,GAAGkB,SAAS,CAACnN,CAAC,CAAC;IACtB,IAAIiM,OAAO,KAAK,IAAI,IAAIA,OAAO,KAAKnJ,SAAS,EAAE;MAC7C;IACF;IAEA,KAAK9E,IAAI,IAAIiO,OAAO,EAAE;MACpBe,GAAG,GAAGpI,MAAM,CAAC5G,IAAI,CAAC;MAClBiP,IAAI,GAAGhB,OAAO,CAACjO,IAAI,CAAC;MACpB,IAAI4G,MAAM,KAAKqI,IAAI,EAAE;QACnB,IAAIA,IAAI,IAAIL,aAAa,CAACK,IAAI,CAAC,EAAE;UAC/B7F,KAAK,GAAG4F,GAAG,IAAIJ,aAAa,CAACI,GAAG,CAAC,GAAGA,GAAG,GAAG,CAAC,CAAC;UAC5CpI,MAAM,CAAC5G,IAAI,CAAC,GAAGuL,KAAK,CAACnC,KAAK,EAAE6F,IAAI,CAAC;QACnC,CAAC,MAAM,IAAI,OAAOA,IAAI,KAAK,WAAW,EAAE;UACtCrI,MAAM,CAAC5G,IAAI,CAAC,GAAGiP,IAAI;QACrB;MACF;IACF;EACF;EACA,OAAOrI,MAAM;AACf;;;ACn2BmC;AAEnC,SAASwI,QAAQA,CAAC7N,GAAG,EAAE6G,IAAI,EAAEe,IAAI,EAAE;EACjC,IAAIrD,CAAC,EAAEuJ,CAAC,EAAErN,CAAC;EACX,IAAIsN,KAAK,GAAGvL,MAAQ,CAACxC,GAAG,EAAE,QAAQ,CAAC;EACnC,IAAIgO,OAAO,GAAGxL,MAAQ,CAACxC,GAAG,EAAE,OAAO,CAAC;EACpC,IAAIqL,IAAI,GAAG,EAAE;EACb,IAAI4C,SAAS;;EAEb;EACArG,IAAI,GAAGA,IAAI,IAAI;IAAE5H,GAAG,EAAE,EAAE;IAAEkO,MAAM,EAAE;EAAG,CAAC;EAEtC,IAAIH,KAAK,EAAE;IACTE,SAAS,GAAGrG,IAAI,CAAC5H,GAAG,CAAC6E,OAAO,CAAC7E,GAAG,CAAC;IAEjC,IAAI+N,KAAK,IAAIE,SAAS,KAAK,CAAC,CAAC,EAAE;MAC7B;MACA,OAAOrG,IAAI,CAACsG,MAAM,CAACD,SAAS,CAAC,IAAIrG,IAAI,CAAC5H,GAAG,CAACiO,SAAS,CAAC;IACtD;IAEArG,IAAI,CAAC5H,GAAG,CAACwE,IAAI,CAACxE,GAAG,CAAC;IAClBiO,SAAS,GAAGrG,IAAI,CAAC5H,GAAG,CAAC6D,MAAM,GAAG,CAAC;EACjC;EAEA,IAAIkK,KAAK,EAAE;IACT,KAAKxJ,CAAC,IAAIvE,GAAG,EAAE;MACb,IAAIwC,MAAQ,CAACxC,GAAG,EAAEuE,CAAC,CAAC,EAAE;QACpB8G,IAAI,CAAC7G,IAAI,CAACD,CAAC,CAAC;MACd;IACF;EACF,CAAC,MAAM,IAAIyJ,OAAO,EAAE;IAClB,KAAKvN,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGT,GAAG,CAAC6D,MAAM,EAAE,EAAEpD,CAAC,EAAE;MAC/B4K,IAAI,CAAC7G,IAAI,CAAC/D,CAAC,CAAC;IACd;EACF;EAEA,IAAI4E,MAAM,GAAG0I,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE;EAC5B,IAAII,IAAI,GAAG,IAAI;EACf,KAAK1N,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4K,IAAI,CAACxH,MAAM,EAAE,EAAEpD,CAAC,EAAE;IAChC8D,CAAC,GAAG8G,IAAI,CAAC5K,CAAC,CAAC;IACXqN,CAAC,GAAG9N,GAAG,CAACuE,CAAC,CAAC;IACVc,MAAM,CAACd,CAAC,CAAC,GAAGsC,IAAI,CAACtC,CAAC,EAAEuJ,CAAC,EAAElG,IAAI,CAAC;IAC5BuG,IAAI,GAAGA,IAAI,IAAI9I,MAAM,CAACd,CAAC,CAAC,KAAKvE,GAAG,CAACuE,CAAC,CAAC;EACrC;EAEA,IAAIwJ,KAAK,IAAI,CAACI,IAAI,EAAE;IAClBvG,IAAI,CAACsG,MAAM,CAACD,SAAS,CAAC,GAAG5I,MAAM;EACjC;EAEA,OAAO,CAAC8I,IAAI,GAAG9I,MAAM,GAAGrF,GAAG;AAC7B;AAEA,qDAAe6N,QAAQ,E;;;;;;;;;ACpDsB;AACX;AAElC,SAASO,KAAKA,CAACjF,IAAI,EAAE4D,WAAW,EAAEsB,UAAU,EAAE;EAC5CtB,WAAW,GAAGA,WAAW,IAAI,EAAE;EAE/B,IAAIsB,UAAU,EAAE;IAAA,IAAAzE,SAAA,GAAAC,+BAAA,CACKwE,UAAU;MAAAvE,KAAA;IAAA;MAA7B,KAAAF,SAAA,CAAA3D,CAAA,MAAA6D,KAAA,GAAAF,SAAA,CAAAvJ,CAAA,IAAA0J,IAAA,GAA+B;QAAA,IAApBpF,IAAI,GAAAmF,KAAA,CAAAhK,KAAA;QACbwO,SAAS,CAACnF,IAAI,EAAExE,IAAI,CAAC;MACvB;IAAC,SAAA8C,GAAA;MAAAmC,SAAA,CAAAhJ,CAAA,CAAA6G,GAAA;IAAA;MAAAmC,SAAA,CAAA3K,CAAA;IAAA;EACH;EAEA,IAAIsP,QAAQ,GAAGC,oBAAoB,CAACzB,WAAW,CAAC;EAChD,IAAI0B,QAAQ,GAAGC,yBAAyB,CAAC3B,WAAW,CAAC;EAErD,SAAS4B,gBAAgBA,CAACC,MAAM,EAAEC,SAAS,EAAE;IAC3C,OAAOA,SAAS,GAAGrM,MAAQ,CAAC,CAAC;EAC/B;EAEA,SAASsM,aAAaA,CAAChB,CAAC,EAAE;IACxB,IAAItL,MAAQ,CAACsL,CAAC,EAAE,QAAQ,CAAC,EAAE;MAAA,IAAAtD,UAAA,GAAAX,+BAAA,CACL4E,QAAQ;QAAAhE,MAAA;MAAA;QAA5B,KAAAD,UAAA,CAAAvE,CAAA,MAAAwE,MAAA,GAAAD,UAAA,CAAAnK,CAAA,IAAA0J,IAAA,GAA8B;UAAA,IAAnBgF,KAAK,GAAAtE,MAAA,CAAA3K,KAAA;UACdgO,CAAC,GAAGA,CAAC,CAACrO,OAAO,CAACsP,KAAK,EAAEJ,gBAAgB,CAAC;QACxC;MAAC,SAAAlH,GAAA;QAAA+C,UAAA,CAAA5J,CAAA,CAAA6G,GAAA;MAAA;QAAA+C,UAAA,CAAAvL,CAAA;MAAA;IACH;IACA,OAAO6O,CAAC;EACV;EAEA,SAASkB,WAAWA,CAACzK,CAAC,EAAEuJ,CAAC,EAAE;IAAA,IAAA7C,UAAA,GAAApB,+BAAA,CACL0E,QAAQ;MAAArD,MAAA;IAAA;MAA5B,KAAAD,UAAA,CAAAhF,CAAA,MAAAiF,MAAA,GAAAD,UAAA,CAAA5K,CAAA,IAAA0J,IAAA,GAA8B;QAAA,IAAnBgF,KAAK,GAAA7D,MAAA,CAAApL,KAAA;QACd,IAAIiP,KAAK,CAAClP,IAAI,CAAC0E,CAAC,CAAC,EAAE;UACjBuJ,CAAC,GAAGtL,MAAQ,CAAC,CAAC;UACd;QACF;MACF;IAAC,SAAAiF,GAAA;MAAAwD,UAAA,CAAArK,CAAA,CAAA6G,GAAA;IAAA;MAAAwD,UAAA,CAAAhM,CAAA;IAAA;IACD,OAAO6O,CAAC;EACV;EAEA,SAASmB,QAAQA,CAAC1K,CAAC,EAAEuJ,CAAC,EAAElG,IAAI,EAAE;IAC5B,IAAIsH,IAAI,GAAGF,WAAW,CAACzK,CAAC,EAAEuJ,CAAC,CAAC;IAC5B,IAAIoB,IAAI,KAAKpB,CAAC,EAAE;MACd,IAAItL,MAAQ,CAACsL,CAAC,EAAE,QAAQ,CAAC,IAAItL,MAAQ,CAACsL,CAAC,EAAE,OAAO,CAAC,EAAE;QACjD,OAAOD,gBAAQ,CAACC,CAAC,EAAEmB,QAAQ,EAAErH,IAAI,CAAC;MACpC;MACA,OAAOkH,aAAa,CAACI,IAAI,CAAC;IAC5B,CAAC,MAAM;MACL,OAAOA,IAAI;IACb;EACF;EAEA,OAAOrB,gBAAQ,CAAC1E,IAAI,EAAE8F,QAAQ,CAAC;AACjC;AAEA,SAASX,SAASA,CAACtO,GAAG,EAAE2E,IAAI,EAAE;EAC5B,IAAI0G,IAAI,GAAG1G,IAAI,CAAC2G,KAAK,CAAC,GAAG,CAAC;EAC1B,IAAI6D,IAAI,GAAG9D,IAAI,CAACxH,MAAM,GAAG,CAAC;EAC1B,IAAI;IAAA,IAAAuL,UAAA,GAAAvF,+BAAA,CACyBwB,IAAI,CAACgE,OAAO,CAAC,CAAC;MAAAC,MAAA;IAAA;MAAzC,KAAAF,UAAA,CAAAnJ,CAAA,MAAAqJ,MAAA,GAAAF,UAAA,CAAA/O,CAAA,IAAA0J,IAAA,GAA2C;QAAA,IAAAwF,YAAA,GAAAC,cAAA,CAAAF,MAAA,CAAAxP,KAAA;UAA/B2P,KAAK,GAAAF,YAAA;UAAEtM,GAAG,GAAAsM,YAAA;QACpB,IAAIE,KAAK,GAAGN,IAAI,EAAE;UAChBnP,GAAG,GAAGA,GAAG,CAACiD,GAAG,CAAC;QAChB,CAAC,MAAM;UACLjD,GAAG,CAACiD,GAAG,CAAC,GAAGT,MAAQ,CAAC,CAAC;QACvB;MACF;IAAC,SAAAiF,GAAA;MAAA2H,UAAA,CAAAxO,CAAA,CAAA6G,GAAA;IAAA;MAAA2H,UAAA,CAAAnQ,CAAA;IAAA;EACH,CAAC,CAAC,OAAOsM,EAAE,EAAE;IACX;EAAA;AAEJ;AAEA,SAASiD,oBAAoBA,CAACzB,WAAW,EAAE;EACzC,IAAI2C,GAAG,GAAG,EAAE;EAAC,IAAAC,UAAA,GAAA9F,+BAAA,CACOkD,WAAW;IAAA6C,MAAA;EAAA;IAA/B,KAAAD,UAAA,CAAA1J,CAAA,MAAA2J,MAAA,GAAAD,UAAA,CAAAtP,CAAA,IAAA0J,IAAA,GAAiC;MAAA,IAAtB8F,KAAK,GAAAD,MAAA,CAAA9P,KAAA;MACd,IAAIgQ,GAAG,GAAG,gBAAgB,GAAGD,KAAK,GAAG,6BAA6B;MAClEH,GAAG,CAAClL,IAAI,CAAC,IAAI7E,MAAM,CAACmQ,GAAG,EAAE,GAAG,CAAC,CAAC;IAChC;EAAC,SAAArI,GAAA;IAAAkI,UAAA,CAAA/O,CAAA,CAAA6G,GAAA;EAAA;IAAAkI,UAAA,CAAA1Q,CAAA;EAAA;EACD,OAAOyQ,GAAG;AACZ;AAEA,SAAShB,yBAAyBA,CAAC3B,WAAW,EAAE;EAC9C,IAAI2C,GAAG,GAAG,EAAE;EAAC,IAAAK,UAAA,GAAAlG,+BAAA,CACOkD,WAAW;IAAAiD,MAAA;EAAA;IAA/B,KAAAD,UAAA,CAAA9J,CAAA,MAAA+J,MAAA,GAAAD,UAAA,CAAA1P,CAAA,IAAA0J,IAAA,GAAiC;MAAA,IAAtB8F,KAAK,GAAAG,MAAA,CAAAlQ,KAAA;MACd,IAAIgQ,GAAG,GAAG,eAAe,GAAGD,KAAK,GAAG,4BAA4B;MAChEH,GAAG,CAAClL,IAAI,CAAC,IAAI7E,MAAM,CAAC,GAAG,GAAGmQ,GAAG,GAAG,cAAc,EAAE,KAAK,CAAC,CAAC;IACzD;EAAC,SAAArI,GAAA;IAAAsI,UAAA,CAAAnP,CAAA,CAAA6G,GAAA;EAAA;IAAAsI,UAAA,CAAA9Q,CAAA;EAAA;EACD,OAAOyQ,GAAG;AACZ;AAEA,8CAAetB,KAAK,E;;;;;;;;;;;;;;ACvFc;AAElC,IAAM6B,UAAU,GAAG,GAAG;;AAEtB;AACA,SAASC,UAAUA,CAACC,MAAM,EAAE;EAC1B,OAAO,CAAC1O,IAAI,CAAC2O,KAAK,CAACD,MAAM,GAAG,IAAI,CAAC,EAAE1O,IAAI,CAAC4O,KAAK,CAAEF,MAAM,GAAG,IAAI,GAAI,GAAG,CAAC,CAAC;AACvE;AAAC,IAEKG,SAAS;EACb,SAAAA,UAAYnM,OAAO,EAAEoM,OAAO,EAAE;IAAA,IAAAC,aAAA;IAAAC,eAAA,OAAAH,SAAA;IAC5B,IAAI,CAACI,KAAK,GAAG,EAAE;IACf,IAAI,CAACvM,OAAO,GAAG3B,KAAO,CAAC2B,OAAO,CAAC;IAC/B,IAAIwM,kBAAkB,GAAG,IAAI,CAACxM,OAAO,CAACwM,kBAAkB,IAAIV,UAAU;IACtE,IAAI,CAACW,YAAY,GAAGnP,IAAI,CAACoP,GAAG,CAAC,CAAC,EAAEpP,IAAI,CAACqP,GAAG,CAACH,kBAAkB,EAAEV,UAAU,CAAC,CAAC;IACzE,IAAI,CAACM,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACQ,aAAa,IAAAP,aAAA,GAAG,IAAI,CAACD,OAAO,cAAAC,aAAA,uBAAZA,aAAA,CAAcQ,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;EACvE;EAAC,OAAAC,YAAA,CAAAX,SAAA;IAAArN,GAAA;IAAAnD,KAAA,EAED,SAAAoR,SAASA,CAAC/M,OAAO,EAAE;MACjB,IAAIgN,UAAU,GAAG,IAAI,CAAChN,OAAO;MAC7B,IAAI,CAACA,OAAO,GAAG3B,KAAO,CAAC2O,UAAU,EAAEhN,OAAO,CAAC;MAC3C,IAAIwM,kBAAkB,GAAG,IAAI,CAACxM,OAAO,CAACwM,kBAAkB,IAAIV,UAAU;MACtE,IAAImB,YAAY,GAAG3P,IAAI,CAACoP,GAAG,CAAC,CAAC,EAAEpP,IAAI,CAACqP,GAAG,CAACH,kBAAkB,EAAEV,UAAU,CAAC,CAAC;MACxE,IAAIoB,WAAW,GAAG,CAAC;MACnB,IAAI,IAAI,CAACX,KAAK,CAAC7M,MAAM,GAAGuN,YAAY,EAAE;QACpCC,WAAW,GAAG,IAAI,CAACX,KAAK,CAAC7M,MAAM,GAAGuN,YAAY;MAChD;MACA,IAAI,CAACR,YAAY,GAAGQ,YAAY;MAChC,IAAI,CAACV,KAAK,CAACY,MAAM,CAAC,CAAC,EAAED,WAAW,CAAC;IACnC;EAAC;IAAApO,GAAA;IAAAnD,KAAA,EAED,SAAAyR,UAAUA,CAAA,EAAG;MACX,IAAIC,MAAM,GAAGC,KAAK,CAACnS,SAAS,CAAC0I,KAAK,CAACnJ,IAAI,CAAC,IAAI,CAAC6R,KAAK,EAAE,CAAC,CAAC;MACtD,IAAIlO,UAAY,CAAC,IAAI,CAAC2B,OAAO,CAACuN,eAAe,CAAC,EAAE;QAC9C,IAAI;UACF,IAAIjR,CAAC,GAAG+Q,MAAM,CAAC3N,MAAM;UACrB,OAAOpD,CAAC,EAAE,EAAE;YACV,IAAI,IAAI,CAAC0D,OAAO,CAACuN,eAAe,CAACF,MAAM,CAAC/Q,CAAC,CAAC,CAAC,EAAE;cAC3C+Q,MAAM,CAACF,MAAM,CAAC7Q,CAAC,EAAE,CAAC,CAAC;YACrB;UACF;QACF,CAAC,CAAC,OAAO8K,EAAE,EAAE;UACX,IAAI,CAACpH,OAAO,CAACuN,eAAe,GAAG,IAAI;QACrC;MACF;;MAEA;MACAF,MAAM,GAAGA,MAAM,CAACG,MAAM,CAAC,UAAC/Q,CAAC;QAAA,OAAKA,CAAC,CAACF,IAAI,KAAK,cAAc;MAAA,EAAC;;MAExD;MACA8Q,MAAM,GAAGA,MAAM,CAACI,GAAG,CACjB,UAAAC,IAAA;QAAA,IAAmBC,eAAe,GAAAD,IAAA,CAA/BE,cAAc;UAAsBlH,KAAK,GAAAmH,wBAAA,CAAAH,IAAA,EAAAI,SAAA;QAAA,OAAOpH,KAAK;MAAA,CAC1D,CAAC;MAED,OAAO2G,MAAM;IACf;EAAC;IAAAvO,GAAA;IAAAnD,KAAA,EAED,SAAAoS,mBAAmBA,CAAA,EAAkB;MAAA,IAAjBlH,UAAU,GAAA4C,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,CAAC,CAAC;MACjC,IAAI,IAAI,CAACmD,aAAa,EAAE;QACtB,IAAI,CAACA,aAAa,CAACoB,GAAG,CAACnH,UAAU,CAAC;QAClC,IAAI,CAAC+F,aAAa,GAAG,IAAI,CAACR,OAAO,CAACS,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;MACtE;IACF;EAAC;IAAA/N,GAAA;IAAAnD,KAAA,EAED,SAAAsS,OAAOA,CACL1R,IAAI,EACJkK,QAAQ,EACRrB,KAAK,EACL8I,WAAW,EAGX;MAAA,IAFAnJ,SAAS,GAAA0E,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,IAAI;MAAA,IAChBmE,cAAc,GAAAnE,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,IAAI;MAErB,IAAIhN,CAAC,GAAG;QACN2I,KAAK,EAAE+I,QAAQ,CAAC5R,IAAI,EAAE6I,KAAK,CAAC;QAC5B7I,IAAI,EAAEA,IAAI;QACV6R,YAAY,EAAErJ,SAAS,IAAI1G,GAAK,CAAC,CAAC;QAClCgQ,IAAI,EAAE5H,QAAQ;QACd/H,MAAM,EAAE;MACV,CAAC;MACD,IAAIwP,WAAW,EAAE;QACfzR,CAAC,CAACU,IAAI,GAAG+Q,WAAW;MACtB;MACA,IAAIN,cAAc,EAAE;QAClBnR,CAAC,CAACmR,cAAc,GAAGA,cAAc;MACnC;MAEA,IAAI;QACF,IACEvP,UAAY,CAAC,IAAI,CAAC2B,OAAO,CAACuN,eAAe,CAAC,IAC1C,IAAI,CAACvN,OAAO,CAACuN,eAAe,CAAC9Q,CAAC,CAAC,EAC/B;UACA,OAAO,KAAK;QACd;MACF,CAAC,CAAC,OAAO6R,IAAI,EAAE;QACb,IAAI,CAACtO,OAAO,CAACuN,eAAe,GAAG,IAAI;MACrC;MAEA,IAAI,CAAClN,IAAI,CAAC5D,CAAC,CAAC;MACZ,OAAOA,CAAC;IACV;EAAC;IAAAqC,GAAA;IAAAnD,KAAA,EAED,SAAA4S,YAAYA,CAAChS,IAAI,EAAEkK,QAAQ,EAAErB,KAAK,EAAE8I,WAAW,EAAE;MAC/C,OAAO,IAAI,CAACD,OAAO,CAAC1R,IAAI,EAAEkK,QAAQ,EAAErB,KAAK,EAAE8I,WAAW,CAAC;IACzD;EAAC;IAAApP,GAAA;IAAAnD,KAAA,EAED,SAAA6S,YAAYA,CAAClL,GAAG,EAAE8B,KAAK,EAAE8I,WAAW,EAAEnJ,SAAS,EAAE;MAAA,IAAA0J,mBAAA;MAC/C,IAAMxM,OAAO,GAAGqB,GAAG,CAACrB,OAAO,IAAIjG,MAAM,CAACsH,GAAG,CAAC;MAC1C,IAAImD,QAAQ,GAAG;QAAExE,OAAO,EAAPA;MAAQ,CAAC;MAC1B,IAAIqB,GAAG,CAACH,KAAK,EAAE;QACbsD,QAAQ,CAACtD,KAAK,GAAGG,GAAG,CAACH,KAAK;MAC5B;MACA,IAAMyK,cAAc,GAAG;QACrB3L,OAAO,EAAPA,OAAO;QACPmD,KAAK,EAALA,KAAK;QACL7I,IAAI,EAAE,OAAO;QACbY,IAAI,EAAE+Q;MACR,CAAC;MAED,CAAAO,mBAAA,OAAI,CAAC7B,aAAa,cAAA6B,mBAAA,eAAlBA,mBAAA,CAAoBC,QAAQ,CAC1B,0BAA0B,EAC1Bd,cAAc,EACd7B,UAAU,CAAChH,SAAS,CACtB,CAAC;MAED,OAAO,IAAI,CAACkJ,OAAO,CACjB,OAAO,EACPxH,QAAQ,EACRrB,KAAK,EACL8I,WAAW,EACXnJ,SAAS,EACT6I,cACF,CAAC;IACH;EAAC;IAAA9O,GAAA;IAAAnD,KAAA,EAED,SAAAgT,UAAUA,CAAC1M,OAAO,EAAEmD,KAAK,EAAE8I,WAAW,EAAEnJ,SAAS,EAAE;MAAA,IAAA6J,oBAAA;MACjD,IAAMlI,KAAK,GAAGwH,WAAW,GACrB,0BAA0B,GAC1B,mBAAmB;MACvB,IAAMN,cAAc,GAAAiB,aAAA;QAClB5M,OAAO,EAAPA,OAAO;QACPmD,KAAK,EAALA;MAAK,GACD8I,WAAW,GAAG;QAAE3R,IAAI,EAAE,SAAS;QAAEY,IAAI,EAAE+Q;MAAY,CAAC,GAAG,CAAC,CAAC,CAC9D;MAED,CAAAU,oBAAA,OAAI,CAAChC,aAAa,cAAAgC,oBAAA,eAAlBA,oBAAA,CAAoBF,QAAQ,CAAChI,KAAK,EAAEkH,cAAc,EAAE7B,UAAU,CAAChH,SAAS,CAAC,CAAC;MAE1E,OAAO,IAAI,CAACkJ,OAAO,CACjB,KAAK,EACL;QAAEhM,OAAO,EAAPA;MAAQ,CAAC,EACXmD,KAAK,EACL8I,WAAW,EACXnJ,SAAS,EACT6I,cACF,CAAC;IACH;EAAC;IAAA9O,GAAA;IAAAnD,KAAA,EAED,SAAAmT,cAAcA,CAACrI,QAAQ,EAAEsI,OAAO,EAAEb,WAAW,EAAErG,WAAW,EAAE;MAAA,IAAAmH,kBAAA,EAAAC,mBAAA,EAAAC,oBAAA;MAC1DH,OAAO,GAAGA,OAAO,IAAI,KAAK;MAC1BtI,QAAQ,CAACsI,OAAO,GAAGtI,QAAQ,CAACsI,OAAO,IAAIA,OAAO;MAC9C,IAAIlH,WAAW,EAAE;QACfpB,QAAQ,CAACpC,OAAO,GAAGwD,WAAW;MAChC;MACA,IAAMzC,KAAK,GAAG,IAAI,CAAC+J,eAAe,CAAC1I,QAAQ,CAAC2I,WAAW,CAAC;MACxD,IAAMC,WAAW,GAAG,CAAC5I,QAAQ,CAAC6I,WAAW,IAAI,CAAC,IAAI,GAAG;MACrD,IAAM1B,cAAc,GAAG;QACrBrR,IAAI,EAAEkK,QAAQ,CAACsI,OAAO;QACtBQ,MAAM,EAAE9I,QAAQ,CAAC8I,MAAM;QACvBvR,GAAG,EAAEyI,QAAQ,CAACzI,GAAG;QACjBwR,UAAU,EAAE/I,QAAQ,CAAC2I,WAAW;QAChC,iBAAiB,EAAE/N,IAAI,CAACF,SAAS,CAACsF,QAAQ,CAACgJ,eAAe,IAAI,CAAC,CAAC,CAAC;QACjE,kBAAkB,EAAEpO,IAAI,CAACF,SAAS,CAAC,EAAA6N,kBAAA,GAAAvI,QAAQ,CAACiJ,QAAQ,cAAAV,kBAAA,uBAAjBA,kBAAA,CAAmBW,OAAO,KAAI,CAAC,CAAC,CAAC;QACpE,uBAAuB,EAAEN,WAAW,CAAC5U,QAAQ,CAAC;MAChD,CAAC;MACD,IAAMmV,WAAW,GAAGnJ,QAAQ,CAACpC,OAAO;MACpC,IAAMwL,YAAY,IAAAZ,mBAAA,GAAGxI,QAAQ,CAACiJ,QAAQ,cAAAT,mBAAA,uBAAjBA,mBAAA,CAAmBZ,IAAI;MAC5C,IAAIuB,WAAW,EAAE;QACfhC,cAAc,CAAC,cAAc,CAAC,GAAGvM,IAAI,CAACF,SAAS,CAACyO,WAAW,CAAC;MAC9D;MACA,IAAIC,YAAY,EAAE;QAChBjC,cAAc,CAAC,eAAe,CAAC,GAAGvM,IAAI,CAACF,SAAS,CAAC0O,YAAY,CAAC;MAChE;MAEA,CAAAX,oBAAA,OAAI,CAACtC,aAAa,cAAAsC,oBAAA,eAAlBA,oBAAA,CAAoBR,QAAQ,CAC1B,uBAAuB,EACvBd,cAAc,EACd7B,UAAU,CAACtF,QAAQ,CAACqJ,aAAa,CACnC,CAAC;MAED,OAAO,IAAI,CAAC7B,OAAO,CACjB,SAAS,EACTxH,QAAQ,EACRrB,KAAK,EACL8I,WAAW,EACXzH,QAAQ,CAACqJ,aAAa,EACtBlC,cACF,CAAC;IACH;EAAC;IAAA9O,GAAA;IAAAnD,KAAA,EAED,SAAAwT,eAAeA,CAACK,UAAU,EAAE;MAC1B,IAAIA,UAAU,IAAI,GAAG,IAAIA,UAAU,GAAG,GAAG,EAAE;QACzC,OAAO,MAAM;MACf;MACA,IAAIA,UAAU,KAAK,CAAC,IAAIA,UAAU,IAAI,GAAG,EAAE;QACzC,OAAO,OAAO;MAChB;MACA,OAAO,MAAM;IACf;EAAC;IAAA1Q,GAAA;IAAAnD,KAAA,EAED,SAAAoU,UAAUA,CAAChB,OAAO,EAAEiB,OAAO,EAAErU,KAAK,EAAEsU,OAAO,EAAE/B,WAAW,EAAE;MACxD,IAAIzH,QAAQ,GAAG;QACbsI,OAAO,EAAEA,OAAO;QAChBiB,OAAO,EAAEA;MACX,CAAC;MACD,IAAIrU,KAAK,KAAKyD,SAAS,EAAE;QACvBqH,QAAQ,CAAC9K,KAAK,GAAGA,KAAK;MACxB;MACA,IAAIsU,OAAO,KAAK7Q,SAAS,EAAE;QACzBqH,QAAQ,CAACwJ,OAAO,GAAGA,OAAO;MAC5B;MACA,OAAO,IAAI,CAAChC,OAAO,CAAC,KAAK,EAAExH,QAAQ,EAAE,MAAM,EAAEyH,WAAW,CAAC;IAC3D;EAAC;IAAApP,GAAA;IAAAnD,KAAA,EAED,SAAAuU,YAAYA,CAAAC,KAAA,EAAmD;MAAA,IAAAC,oBAAA;MAAA,IAAhD7T,IAAI,GAAA4T,KAAA,CAAJ5T,IAAI;QAAE8T,WAAW,GAAAF,KAAA,CAAXE,WAAW;QAAEL,OAAO,GAAAG,KAAA,CAAPH,OAAO;QAAErU,KAAK,GAAAwU,KAAA,CAALxU,KAAK;QAAEoJ,SAAS,GAAAoL,KAAA,CAATpL,SAAS;MACzD,IAAMzK,IAAI,GAAG,qBAAqB;MAClC,IAAMmM,QAAQ,GAAG;QACflK,IAAI,EAAEjC,IAAI;QACVyU,OAAO,EAAExS,IAAI;QACbyT,OAAO,EAAPA,OAAO;QACPrU,KAAK,EAALA;MACF,CAAC;MACD,IAAMiS,cAAc,GAAG;QACrBrR,IAAI,EAAJA,IAAI;QACJ8T,WAAW,EAAXA,WAAW;QACXL,OAAO,EAAPA,OAAO;QACPrU,KAAK,EAALA,KAAK;QACL2U,eAAe,EAAEvE,UAAU,CAAChH,SAAS;MACvC,CAAC;MACD,IAAM2B,KAAK,GAAG,IAAI,CAAC6J,iBAAiB,CAACjW,IAAI,EAAEsT,cAAc,CAAC;MAC1D,IAAIlH,KAAK,EAAE;QACT,OAAO,IAAI,CAAC8J,oBAAoB,CAAC9J,KAAK,EAAEkH,cAAc,EAAE7I,SAAS,CAAC;MACpE;MAEA,CAAAqL,oBAAA,OAAI,CAACxD,aAAa,cAAAwD,oBAAA,eAAlBA,oBAAA,CAAoB1B,QAAQ,CAACpU,IAAI,EAAEsT,cAAc,EAAE7B,UAAU,CAAChH,SAAS,CAAC,CAAC;MAEzE,OAAO,IAAI,CAACkJ,OAAO,CACjB,KAAK,EACLxH,QAAQ,EACR,MAAM,EACN,IAAI,EACJ1B,SAAS,EACT6I,cACF,CAAC;IACH;EAAC;IAAA9O,GAAA;IAAAnD,KAAA,EAED,SAAA8U,YAAYA,CAAAC,KAAA,EAA4C;MAAA,IAAAC,oBAAA;MAAA,IAAzCpU,IAAI,GAAAmU,KAAA,CAAJnU,IAAI;QAAE8T,WAAW,GAAAK,KAAA,CAAXL,WAAW;QAAEL,OAAO,GAAAU,KAAA,CAAPV,OAAO;QAAEjL,SAAS,GAAA2L,KAAA,CAAT3L,SAAS;MAClD,IAAMzK,IAAI,GAAG,qBAAqB;MAClC,IAAMmM,QAAQ,GAAG;QACflK,IAAI,EAAEjC,IAAI;QACVyU,OAAO,EAAExS,IAAI;QACbyT,OAAO,EAAPA;MACF,CAAC;MACD,IAAMpC,cAAc,GAAG;QACrBrR,IAAI,EAAJA,IAAI;QACJ8T,WAAW,EAAXA,WAAW;QACXL,OAAO,EAAPA,OAAO;QACPM,eAAe,EAAEvE,UAAU,CAAChH,SAAS;MACvC,CAAC;MACD,IAAM2B,KAAK,GAAG,IAAI,CAAC6J,iBAAiB,CAACjW,IAAI,EAAEsT,cAAc,CAAC;MAC1D,IAAIlH,KAAK,EAAE;QACT,OAAO,IAAI,CAAC8J,oBAAoB,CAAC9J,KAAK,EAAEkH,cAAc,EAAE7I,SAAS,CAAC;MACpE;MAEA,CAAA4L,oBAAA,OAAI,CAAC/D,aAAa,cAAA+D,oBAAA,eAAlBA,oBAAA,CAAoBjC,QAAQ,CAACpU,IAAI,EAAEsT,cAAc,EAAE7B,UAAU,CAAChH,SAAS,CAAC,CAAC;MAEzE,OAAO,IAAI,CAACkJ,OAAO,CACjB,KAAK,EACLxH,QAAQ,EACR,MAAM,EACN,IAAI,EACJ1B,SAAS,EACT6I,cACF,CAAC;IACH;EAAC;IAAA9O,GAAA;IAAAnD,KAAA,EAED,SAAA4U,iBAAiBA,CAACjW,IAAI,EAAEuM,UAAU,EAAE;MAClC,IAAM+J,SAAS,GAAG,IAAI,CAACC,UAAU,CAAC,IAAI,CAACtE,KAAK,CAAC;MAE7C,IACEqE,SAAS,IACTA,SAAS,CAACvC,IAAI,CAAC9R,IAAI,KAAKjC,IAAI,IAC5BsW,SAAS,CAAChD,cAAc,CAACkD,MAAM,KAAKjK,UAAU,CAACiK,MAAM,EACrD;QACA,OAAOF,SAAS;MAClB;IACF;EAAC;IAAA9R,GAAA;IAAAnD,KAAA,EAED,SAAA6U,oBAAoBA,CAAC9J,KAAK,EAAEG,UAAU,EAAE9B,SAAS,EAAE;MACjD,IAAMgM,QAAQ,GAAGzT,IAAI,CAACoP,GAAG,CAAC3H,SAAS,GAAG2B,KAAK,CAAC0H,YAAY,EAAE,CAAC,CAAC;MAC5D1H,KAAK,CAAC2H,IAAI,CAAC1S,KAAK,GAAGkL,UAAU,CAAClL,KAAK;MACnC+K,KAAK,CAACkH,cAAc,CAACjS,KAAK,GAAGkL,UAAU,CAAClL,KAAK;MAC7C+K,KAAK,CAACkH,cAAc,CAACoD,MAAM,GAAGnK,UAAU,CAACmK,MAAM;MAC/CtK,KAAK,CAACkH,cAAc,CAACqD,KAAK,GAAGpK,UAAU,CAACoK,KAAK;MAC7CvK,KAAK,CAACkH,cAAc,CAACsD,aAAa,GAAGrK,UAAU,CAACqK,aAAa;MAC7DxK,KAAK,CAACkH,cAAc,CAAC,iBAAiB,CAAC,GAAG7B,UAAU,CAAChH,SAAS,CAAC;MAC/D2B,KAAK,CAACkH,cAAc,CAAC,kBAAkB,CAAC,GAAG7B,UAAU,CAACgF,QAAQ,CAAC;MAC/DrK,KAAK,CAACkH,cAAc,CAAClM,KAAK,GAAG,CAACgF,KAAK,CAACkH,cAAc,CAAClM,KAAK,IAAI,CAAC,IAAI,CAAC;MAClEgF,KAAK,CAACkH,cAAc,CAACuD,IAAI,GAAGzK,KAAK,CAACkH,cAAc,CAAClM,KAAK,IAAIqP,QAAQ,GAAG,IAAI,CAAC;IAC5E;EAAC;IAAAjS,GAAA;IAAAnD,KAAA,EAED,SAAAkV,UAAUA,CAACO,IAAI,EAAE;MACf,OAAOA,IAAI,CAAC1R,MAAM,GAAG,CAAC,GAAG0R,IAAI,CAACA,IAAI,CAAC1R,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI;IACvD;EAAC;IAAAZ,GAAA;IAAAnD,KAAA,EAED,SAAA0V,YAAYA,CAAAC,KAAA,EAA4C;MAAA,IAAAC,oBAAA;MAAA,IAAzChV,IAAI,GAAA+U,KAAA,CAAJ/U,IAAI;QAAE8T,WAAW,GAAAiB,KAAA,CAAXjB,WAAW;QAAEL,OAAO,GAAAsB,KAAA,CAAPtB,OAAO;QAAEjL,SAAS,GAAAuM,KAAA,CAATvM,SAAS;MAClD,IAAMzK,IAAI,GAAG,qBAAqB;MAClC,IAAMmM,QAAQ,GAAG;QACflK,IAAI,EAAEjC,IAAI;QACVyU,OAAO,EAAExS,IAAI;QACbyT,OAAO,EAAPA;MACF,CAAC;MACD,IAAMpC,cAAc,GAAG;QACrBrR,IAAI,EAAJA,IAAI;QACJ8T,WAAW,EAAXA,WAAW;QACXL,OAAO,EAAPA;MACF,CAAC;MAED,CAAAuB,oBAAA,OAAI,CAAC3E,aAAa,cAAA2E,oBAAA,eAAlBA,oBAAA,CAAoB7C,QAAQ,CAACpU,IAAI,EAAEsT,cAAc,EAAE7B,UAAU,CAAChH,SAAS,CAAC,CAAC;MAEzE,OAAO,IAAI,CAACkJ,OAAO,CACjB,KAAK,EACLxH,QAAQ,EACR,MAAM,EACN,IAAI,EACJ1B,SAAS,EACT6I,cACF,CAAC;IACH;EAAC;IAAA9O,GAAA;IAAAnD,KAAA,EAED,SAAA6V,aAAaA,CAAAC,KAAA,EAOV;MAAA,IAAAC,oBAAA;MAAA,IANDnV,IAAI,GAAAkV,KAAA,CAAJlV,IAAI;QACJ8T,WAAW,GAAAoB,KAAA,CAAXpB,WAAW;QACXY,KAAK,GAAAQ,KAAA,CAALR,KAAK;QACLD,MAAM,GAAAS,KAAA,CAANT,MAAM;QACNE,aAAa,GAAAO,KAAA,CAAbP,aAAa;QACbnM,SAAS,GAAA0M,KAAA,CAAT1M,SAAS;MAET,IAAMzK,IAAI,GAAG,sBAAsB;MACnC,IAAMmM,QAAQ,GAAG;QACflK,IAAI,EAAEjC,IAAI;QACVyU,OAAO,EAAExS,IAAI;QACb0U,KAAK,EAALA,KAAK;QACLD,MAAM,EAANA,MAAM;QACNE,aAAa,EAAbA;MACF,CAAC;MACD,IAAMtD,cAAc,GAAG;QACrBrR,IAAI,EAAJA,IAAI;QACJ8T,WAAW,EAAXA,WAAW;QACXY,KAAK,EAALA,KAAK;QACLD,MAAM,EAANA,MAAM;QACNE,aAAa,EAAbA;MACF,CAAC;MAED,IAAMxK,KAAK,GAAG,IAAI,CAAC6J,iBAAiB,CAACjW,IAAI,EAAEsT,cAAc,CAAC;MAC1D,IAAIlH,KAAK,EAAE;QACT,OAAO,IAAI,CAAC8J,oBAAoB,CAAC9J,KAAK,EAAEkH,cAAc,EAAE7I,SAAS,CAAC;MACpE;MAEA,CAAA2M,oBAAA,OAAI,CAAC9E,aAAa,cAAA8E,oBAAA,eAAlBA,oBAAA,CAAoBhD,QAAQ,CAACpU,IAAI,EAAEsT,cAAc,EAAE7B,UAAU,CAAChH,SAAS,CAAC,CAAC;MAEzE,OAAO,IAAI,CAACkJ,OAAO,CACjB,KAAK,EACLxH,QAAQ,EACR,MAAM,EACN,IAAI,EACJ1B,SAAS,EACT6I,cACF,CAAC;IACH;EAAC;IAAA9O,GAAA;IAAAnD,KAAA,EAED,SAAAgW,eAAeA,CAAAC,KAAA,EASZ;MAAA,IAAAC,oBAAA;MAAA,IARDtV,IAAI,GAAAqV,KAAA,CAAJrV,IAAI;QACJ8T,WAAW,GAAAuB,KAAA,CAAXvB,WAAW;QACXL,OAAO,GAAA4B,KAAA,CAAP5B,OAAO;QACP8B,UAAU,GAAAF,KAAA,CAAVE,UAAU;QACVC,aAAa,GAAAH,KAAA,CAAbG,aAAa;QACbC,KAAK,GAAAJ,KAAA,CAALI,KAAK;QACLC,UAAU,GAAAL,KAAA,CAAVK,UAAU;QACVlN,SAAS,GAAA6M,KAAA,CAAT7M,SAAS;MAET,IAAMzK,IAAI,GAAG,wBAAwB;MACrC,IAAImM,QAAQ,GAAG;QACblK,IAAI,EAAEjC,IAAI;QACVyU,OAAO,EAAExS,IAAI;QACb8T,WAAW,EAAXA;MACF,CAAC;MAED,IAAIzC,cAAc,GAAG;QACnBrR,IAAI,EAAJA,IAAI;QACJ8T,WAAW,EAAXA;MACF,CAAC;MAED,IAAI9T,IAAI,KAAK,WAAW,EAAE;QACxBkK,QAAQ,GAAAoI,aAAA,CAAAA,aAAA,KAAQpI,QAAQ;UAAEuJ,OAAO,EAAPA,OAAO;UAAE8B,UAAU,EAAVA,UAAU;UAAEC,aAAa,EAAbA;QAAa,EAAE;QAC9DnE,cAAc,GAAAiB,aAAA,CAAAA,aAAA,KACTjB,cAAc;UACjBoC,OAAO,EAAPA,OAAO;UACP8B,UAAU,EAAVA,UAAU;UACVC,aAAa,EAAbA;QAAa,EACd;MACH;MAEA,IAAIxV,IAAI,KAAK,MAAM,EAAE;QACnBkK,QAAQ,GAAAoI,aAAA,CAAAA,aAAA,KACHpI,QAAQ;UACXuJ,OAAO,EAAPA,OAAO;UACP8B,UAAU,EAAVA,UAAU;UACVC,aAAa,EAAbA,aAAa;UACbC,KAAK,EAALA,KAAK;UACLC,UAAU,EAAVA;QAAU,EACX;QACDrE,cAAc,GAAAiB,aAAA,CAAAA,aAAA,KACTjB,cAAc;UACjBoC,OAAO,EAAPA,OAAO;UACP8B,UAAU,EAAVA,UAAU;UACVC,aAAa,EAAbA,aAAa;UACbC,KAAK,EAALA,KAAK;UACLC,UAAU,EAAVA;QAAU,EACX;MACH;MAEA,CAAAJ,oBAAA,OAAI,CAACjF,aAAa,cAAAiF,oBAAA,eAAlBA,oBAAA,CAAoBnD,QAAQ,CAACpU,IAAI,EAAEsT,cAAc,EAAE7B,UAAU,CAAChH,SAAS,CAAC,CAAC;MAEzE,OAAO,IAAI,CAACkJ,OAAO,CACjB,KAAK,EACLxH,QAAQ,EACR,MAAM,EACN,IAAI,EACJ1B,SAAS,EACT6I,cACF,CAAC;IACH;EAAC;IAAA9O,GAAA;IAAAnD,KAAA,EAED,SAAAuW,iBAAiBA,CAACC,IAAI,EAAEC,EAAE,EAAElE,WAAW,EAAEnJ,SAAS,EAAE;MAAA,IAAAsN,oBAAA;MAClD,CAAAA,oBAAA,OAAI,CAACzF,aAAa,cAAAyF,oBAAA,eAAlBA,oBAAA,CAAoB3D,QAAQ,CAC1B,0BAA0B,EAC1B;QAAE,mBAAmB,EAAEyD,IAAI;QAAE,UAAU,EAAEC;MAAG,CAAC,EAC7CrG,UAAU,CAAChH,SAAS,CACtB,CAAC;MAED,OAAO,IAAI,CAACkJ,OAAO,CACjB,YAAY,EACZ;QAAEkE,IAAI,EAAJA,IAAI;QAAEC,EAAE,EAAFA;MAAG,CAAC,EACZ,MAAM,EACNlE,WAAW,EACXnJ,SACF,CAAC;IACH;EAAC;IAAAjG,GAAA;IAAAnD,KAAA,EAED,SAAA2W,uBAAuBA,CAACC,EAAE,EAAE;MAC1B,OAAO,IAAI,CAACtE,OAAO,CACjB,YAAY,EACZ;QAAEc,OAAO,EAAE;MAAmB,CAAC,EAC/B,MAAM,EACN3P,SAAS,EACTmT,EAAE,IAAIA,EAAE,CAACC,OAAO,CAAC,CACnB,CAAC;MACD;AACJ;AACA;AACA;IACE;EAAC;IAAA1T,GAAA;IAAAnD,KAAA,EAED,SAAA8W,WAAWA,CAACF,EAAE,EAAE;MACd,OAAO,IAAI,CAACtE,OAAO,CACjB,YAAY,EACZ;QAAEc,OAAO,EAAE;MAAO,CAAC,EACnB,MAAM,EACN3P,SAAS,EACTmT,EAAE,IAAIA,EAAE,CAACC,OAAO,CAAC,CACnB,CAAC;MACD;AACJ;AACA;AACA;IACE;EAAC;IAAA1T,GAAA;IAAAnD,KAAA,EAED,SAAA+W,yBAAyBA,CAAAC,KAAA,EAAmC;MAAA,IAAAC,oBAAA;MAAA,IAAhCrW,IAAI,GAAAoW,KAAA,CAAJpW,IAAI;QAAE8T,WAAW,GAAAsC,KAAA,CAAXtC,WAAW;QAAEtL,SAAS,GAAA4N,KAAA,CAAT5N,SAAS;MACtD,IAAMzK,IAAI,GAAG,4BAA4B;MACzC,IAAMmM,QAAQ,GAAG;QACflK,IAAI,EAAEjC,IAAI;QACVyU,OAAO,EAAExS;MACX,CAAC;MACD,IAAMqR,cAAc,GAAG;QACrBrR,IAAI,EAAJA,IAAI;QACJ8T,WAAW,EAAXA;MACF,CAAC;MAED,CAAAuC,oBAAA,OAAI,CAAChG,aAAa,cAAAgG,oBAAA,eAAlBA,oBAAA,CAAoBlE,QAAQ,CAACpU,IAAI,EAAEsT,cAAc,EAAE7B,UAAU,CAAChH,SAAS,CAAC,CAAC;MAEzE,OAAO,IAAI,CAACkJ,OAAO,CACjB,cAAc,EACdxH,QAAQ,EACR,MAAM,EACN,IAAI,EACJ1B,SAAS,EACT6I,cACF,CAAC;IACH;;IAEA;EAAA;IAAA9O,GAAA;IAAAnD,KAAA,EACA,SAAAkX,mBAAmBA,CAAC/N,IAAI,EAAE;MACxB,IAAI,CAAC,IAAI,CAAC9E,OAAO,CAAC8S,uBAAuB,EAAE;QACzC;MACF;MACA,IAAIhO,IAAI,CAACxB,GAAG,EAAE;QACZ,OAAO,IAAI,CAACkL,YAAY,CAAC1J,IAAI,CAACxB,GAAG,EAAEwB,IAAI,CAACM,KAAK,EAAEN,IAAI,CAAC3H,IAAI,EAAE2H,IAAI,CAACC,SAAS,CAAC;MAC3E;MACA,IAAID,IAAI,CAAC7C,OAAO,EAAE;QAChB,OAAO,IAAI,CAAC0M,UAAU,CACpB7J,IAAI,CAAC7C,OAAO,EACZ6C,IAAI,CAACM,KAAK,EACVN,IAAI,CAAC3H,IAAI,EACT2H,IAAI,CAACC,SACP,CAAC;MACH;MACA,IAAID,IAAI,CAACX,MAAM,EAAE;QACf,OAAO,IAAI,CAAC8J,OAAO,CACjB,KAAK,EACLnJ,IAAI,CAACX,MAAM,EACXW,IAAI,CAACM,KAAK,EACVN,IAAI,CAAC3H,IAAI,EACT2H,IAAI,CAACC,SACP,CAAC;MACH;IACF;EAAC;IAAAjG,GAAA;IAAAnD,KAAA,EAED,SAAA0E,IAAIA,CAAC5D,CAAC,EAAE;MACN,IAAI,CAAC8P,KAAK,CAAClM,IAAI,CAAC5D,CAAC,CAAC;MAClB,IAAI,IAAI,CAAC8P,KAAK,CAAC7M,MAAM,GAAG,IAAI,CAAC+M,YAAY,EAAE;QACzC,IAAI,CAACF,KAAK,CAACwG,KAAK,CAAC,CAAC;MACpB;IACF;EAAC;AAAA;AAGH,SAAS5E,QAAQA,CAAC5R,IAAI,EAAE6I,KAAK,EAAE;EAC7B,IAAIA,KAAK,EAAE;IACT,OAAOA,KAAK;EACd;EACA,IAAI4N,YAAY,GAAG;IACjBnV,KAAK,EAAE,OAAO;IACdoV,MAAM,EAAE;EACV,CAAC;EACD,OAAOD,YAAY,CAACzW,IAAI,CAAC,IAAI,MAAM;AACrC;AAEA,8CAAe4P,SAAS,E;;;;;;;;AC5iBjB,IAAM+G,OAAO;EAClB,SAAAA,QAAYC,aAAa,EAAE;IAAA7G,sBAAA,OAAA4G,OAAA;IACzB,IAAI,CAACE,eAAe,GAAGD,aAAa,GAAG,IAAIE,GAAG,CAACF,aAAa,CAAC,GAAG,IAAIE,GAAG,CAAC,CAAC;EAC3E;EAAC,OAAAvG,mBAAA,CAAAoG,OAAA;IAAApU,GAAA;IAAAnD,KAAA,EAED,SAAA2X,QAAQA,CAACxU,GAAG,EAAE;MACZ,OAAO,IAAI,CAACsU,eAAe,CAACnM,GAAG,CAACnI,GAAG,CAAC;IACtC;EAAC;IAAAA,GAAA;IAAAnD,KAAA,EAED,SAAA4X,QAAQA,CAACzU,GAAG,EAAEnD,KAAK,EAAE;MACnB,IAAMiH,OAAO,GAAG,IAAIsQ,OAAO,CAAC,IAAI,CAACE,eAAe,CAAC;MACjDxQ,OAAO,CAACwQ,eAAe,CAAC/L,GAAG,CAACvI,GAAG,EAAEnD,KAAK,CAAC;MACvC,OAAOiH,OAAO;IAChB;EAAC;IAAA9D,GAAA;IAAAnD,KAAA,EAED,SAAA6X,WAAWA,CAAC1U,GAAG,EAAE;MACf,IAAM8D,OAAO,GAAG,IAAIsQ,OAAO,CAACO,IAAI,CAACL,eAAe,CAAC;MACjDxQ,OAAO,CAACwQ,eAAe,CAACM,MAAM,CAAC5U,GAAG,CAAC;MACnC,OAAO8D,OAAO;IAChB;EAAC;AAAA;AAGI,IAAM+Q,YAAY,GAAG,IAAIT,OAAO,CAAC,CAAC,C;;;;;;;;ACtBG;AAErC,IAAMU,cAAc;EACzB,SAAAA,eAAA,EAAc;IAAAtH,6BAAA,OAAAsH,cAAA;IACZ,IAAI,CAACC,cAAc,GAAGF,YAAY;EACpC;EAAC,OAAA7G,0BAAA,CAAA8G,cAAA;IAAA9U,GAAA;IAAAnD,KAAA,EAED,SAAAmY,MAAMA,CAAA,EAAG;MACP,OAAO,IAAI,CAACD,cAAc;IAC5B;EAAC;IAAA/U,GAAA;IAAAnD,KAAA,EAED,SAAAoY,YAAYA,CAACnR,OAAO,EAAE;MACpB,IAAMoR,eAAe,GAAG,IAAI,CAACH,cAAc;MAC3C,IAAI,CAACA,cAAc,GAAGjR,OAAO,IAAI+Q,YAAY;MAC7C,OAAOK,eAAe;IACxB;EAAC;IAAAlV,GAAA;IAAAnD,KAAA,EAED,SAAAsY,WAAWA,CAACrR,OAAO,EAAE;MACnB,IAAI,CAACiR,cAAc,GAAGjR,OAAO;MAC7B,OAAO,IAAI,CAACiR,cAAc;IAC5B;EAAC;IAAA/U,GAAA;IAAAnD,KAAA,EAED,SAAAuY,KAAIA,CAACtR,OAAO,EAAEuR,EAAE,EAAEC,OAAO,EAAW;MAClC,IAAMJ,eAAe,GAAG,IAAI,CAACD,YAAY,CAACnR,OAAO,CAAC;MAClD,IAAI;QAAA,SAAAyR,IAAA,GAAA5K,SAAA,CAAA/J,MAAA,EAFwBqE,IAAI,OAAAuJ,KAAA,CAAA+G,IAAA,OAAAA,IAAA,WAAAC,IAAA,MAAAA,IAAA,GAAAD,IAAA,EAAAC,IAAA;UAAJvQ,IAAI,CAAAuQ,IAAA,QAAA7K,SAAA,CAAA6K,IAAA;QAAA;QAG9B,OAAOH,EAAE,CAACzZ,IAAI,CAAA6Z,KAAA,CAAPJ,EAAE,GAAMC,OAAO,EAAA/L,MAAA,CAAKtE,IAAI,EAAC;MAClC,CAAC,SAAS;QACR,IAAI,CAACkQ,WAAW,CAACD,eAAe,CAAC;MACnC;IACF;EAAC;AAAA;AAGI,SAASQ,gBAAgBA,CAAC1V,GAAG,EAAE;EACpC;EACA,OAAO2V,MAAM,CAACC,GAAG,CAAC5V,GAAG,CAAC;AACxB,C;;ACnCA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASiN,iBAAUA,CAACC,MAAM,EAAE;EAC1B,OAAO,CAAC1O,IAAI,CAAC2O,KAAK,CAACD,MAAM,GAAG,IAAI,CAAC,EAAE1O,IAAI,CAAC4O,KAAK,CAAEF,MAAM,GAAG,IAAI,GAAI,GAAG,CAAC,CAAC;AACvE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS2I,QAAQA,CAACC,MAAM,EAAE;EACxB,OAAOA,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGtX,IAAI,CAAC4O,KAAK,CAAC0I,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACtD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,OAAOA,CAACD,MAAM,EAAE;EACvB,OAAOA,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGA,MAAM,CAAC,CAAC,CAAC;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASE,GAAGA,CAAC9N,CAAC,EAAE+N,CAAC,EAAE;EACjB,OAAO,CAAC/N,CAAC,CAAC,CAAC,CAAC,GAAG+N,CAAC,CAAC,CAAC,CAAC,GAAGzX,IAAI,CAAC2O,KAAK,CAAC,CAACjF,CAAC,CAAC,CAAC,CAAC,GAAG+N,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC/N,CAAC,CAAC,CAAC,CAAC,GAAG+N,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC7E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS7X,UAAGA,CAAA,EAAyB;EAAA,IAAxB8X,cAAc,GAAAvL,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,KAAK;EACjC,IAAIuL,cAAc,EAAE;IAClB,OAAOF,GAAG,CACR/I,iBAAU,CAACkJ,WAAW,CAACC,UAAU,CAAC,EAClCnJ,iBAAU,CAACkJ,WAAW,CAAC/X,GAAG,CAAC,CAAC,CAC9B,CAAC;EACH;EACA,OAAO6O,iBAAU,CAACpE,IAAI,CAACzK,GAAG,CAAC,CAAC,CAAC;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASiY,QAAQA,CAACxZ,KAAK,EAAE;EACvB,OACE2R,KAAK,CAACzD,OAAO,CAAClO,KAAK,CAAC,IACpBA,KAAK,CAAC+D,MAAM,KAAK,CAAC,IAClB,OAAO/D,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAC5B,OAAOA,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;AAEhC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAAe;EAAEoQ,UAAU,EAAVA,iBAAU;EAAE4I,QAAQ,EAARA,QAAQ;EAAEE,OAAO,EAAPA,OAAO;EAAEC,GAAG,EAAHA,GAAG;EAAE5X,GAAG,EAAHA,UAAG;EAAEiY,QAAQ,EAARA;AAAS,CAAC,E;;;;;;;;;;;;;;;;;;;ACvGnC;;AAEjC;AACA;AACA;AACA;AACO,IAAMC,YAAY;EACvB,SAAAA,aAAYC,GAAG,EAAgB;IAAA,IAAdrV,OAAO,GAAAyJ,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,CAAC,CAAC;IAAA6C,uBAAA,OAAA8I,YAAA;IAC3B,IAAI,CAACC,GAAG,GAAGA,GAAG;IACd,IAAI,CAACrV,OAAO,GAAGA,OAAO;EACxB;;EAEA;AACF;AACA;AACA;AACA;AACA;EALE,OAAA8M,oBAAA,CAAAsI,YAAA;IAAAtW,GAAA;IAAAnD,KAAA,EAMA,SAAA2Z,OAAMA,CAACC,KAAK,EAAEC,eAAe,EAAE;MAC7BC,eAAe,CAACpV,IAAI,CAAAkU,KAAA,CAApBkB,eAAe,EAAAC,kBAAA,CAASH,KAAK,EAAC;IAChC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAzW,GAAA;IAAAnD,KAAA,EAOA,SAAAga,SAASA,CAAA,EAAG;MAAA,IAAAC,KAAA;MACV,IAAML,KAAK,GAAGE,eAAe,CAAC5R,KAAK,CAAC,CAAC;MACrC4R,eAAe,CAAC/V,MAAM,GAAG,CAAC;MAE1B,IAAI,CAAC6V,KAAK,IAAI,CAACA,KAAK,CAAC7V,MAAM,EAAE;QAC3B,OAAO;UAAEmW,aAAa,EAAE;QAAG,CAAC;MAC9B;MAEA,IAAMC,QAAQ,GAAIP,KAAK,CAAC,CAAC,CAAC,IAAIA,KAAK,CAAC,CAAC,CAAC,CAACO,QAAQ,IAAK,CAAC,CAAC;MAEtD,IAAMC,QAAQ,GAAG,IAAI1C,GAAG,CAAC,CAAC;MAAC,IAAA5N,SAAA,GAAAC,kCAAA,CAER6P,KAAK;QAAA5P,KAAA;MAAA;QAAxB,KAAAF,SAAA,CAAA3D,CAAA,MAAA6D,KAAA,GAAAF,SAAA,CAAAvJ,CAAA,IAAA0J,IAAA,GAA0B;UAAA,IAAfoQ,IAAI,GAAArQ,KAAA,CAAAhK,KAAA;UACb,IAAMsa,QAAQ,GAAGD,IAAI,CAACE,oBAAoB,MAAA7N,MAAA,CACnC2N,IAAI,CAACE,oBAAoB,CAAC5b,IAAI,OAAA+N,MAAA,CAAI2N,IAAI,CAACE,oBAAoB,CAACC,OAAO,IACtE,eAAe;UAEnB,IAAI,CAACJ,QAAQ,CAACK,GAAG,CAACH,QAAQ,CAAC,EAAE;YAC3BF,QAAQ,CAAC1O,GAAG,CAAC4O,QAAQ,EAAE;cACrBI,KAAK,EAAEL,IAAI,CAACE,oBAAoB,IAAI;gBAClC5b,IAAI,EAAE,SAAS;gBACf6b,OAAO,EAAE,OAAO;gBAChBtP,UAAU,EAAE;cACd,CAAC;cACD0O,KAAK,EAAE;YACT,CAAC,CAAC;UACJ;UAEAQ,QAAQ,CAAC9O,GAAG,CAACgP,QAAQ,CAAC,CAACV,KAAK,CAAClV,IAAI,CAAC,IAAI,CAACiW,cAAc,CAACN,IAAI,CAAC,CAAC;QAC9D;MAAC,SAAA1S,GAAA;QAAAmC,SAAA,CAAAhJ,CAAA,CAAA6G,GAAA;MAAA;QAAAmC,SAAA,CAAA3K,CAAA;MAAA;MAED,OAAO;QACL+a,aAAa,EAAE,CACb;UACEC,QAAQ,EAAE,IAAI,CAACS,kBAAkB,CAACT,QAAQ,CAAC;UAC3CU,UAAU,EAAElJ,KAAK,CAAC6E,IAAI,CAAC4D,QAAQ,CAACU,MAAM,CAAC,CAAC,CAAC,CAAChJ,GAAG,CAAC,UAACiJ,SAAS;YAAA,OAAM;cAC5DL,KAAK,EAAET,KAAI,CAACe,8BAA8B,CAACD,SAAS,CAACL,KAAK,CAAC;cAC3Dd,KAAK,EAAEmB,SAAS,CAACnB;YACnB,CAAC;UAAA,CAAC;QACJ,CAAC;MAEL,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAzW,GAAA;IAAAnD,KAAA,EAOA,SAAAib,IAAIA,CAACnO,OAAO,EAAgB;MAAA,IAAdkH,OAAO,GAAAlG,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,CAAC,CAAC;MACxB,OAAO,IAAI,CAAC4L,GAAG,CAACwB,SAAS,CAACpO,OAAO,EAAEkH,OAAO,CAAC;IAC7C;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA7Q,GAAA;IAAAnD,KAAA,EAOA,SAAA2a,cAAcA,CAACN,IAAI,EAAE;MAAA,IAAAc,MAAA;MACnB,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAIlQ,UAAU,EAAK;QAC1C,OAAOzL,MAAM,CAAC8P,OAAO,CAACrE,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC4G,GAAG,CAAC,UAAAC,IAAA;UAAA,IAAAyC,KAAA,GAAA9E,sBAAA,CAAAqC,IAAA;YAAE5O,GAAG,GAAAqR,KAAA;YAAExU,KAAK,GAAAwU,KAAA;UAAA,OAAO;YAC7DrR,GAAG,EAAHA,GAAG;YACHnD,KAAK,EAAEmb,MAAI,CAACE,kBAAkB,CAACrb,KAAK;UACtC,CAAC;QAAA,CAAC,CAAC;MACL,CAAC;MAED,IAAMsb,eAAe,GAAG,SAAlBA,eAAeA,CAAI5J,MAAM,EAAK;QAClC,OAAO,CAACA,MAAM,IAAI,EAAE,EAAEI,GAAG,CAAC,UAAC/G,KAAK;UAAA,OAAM;YACpCwQ,YAAY,EAAEtC,MAAM,CAACC,OAAO,CAACnO,KAAK,CAACyQ,IAAI,CAAC;YACxC7c,IAAI,EAAEoM,KAAK,CAACpM,IAAI;YAChBuM,UAAU,EAAEkQ,mBAAmB,CAACrQ,KAAK,CAACG,UAAU;UAClD,CAAC;QAAA,CAAC,CAAC;MACL,CAAC;MAED,OAAO;QACLuQ,OAAO,EAAEpB,IAAI,CAACqB,WAAW,CAACD,OAAO;QACjCE,MAAM,EAAEtB,IAAI,CAACqB,WAAW,CAACC,MAAM;QAC/BC,YAAY,EAAEvB,IAAI,CAACuB,YAAY,IAAI,EAAE;QACrCjd,IAAI,EAAE0b,IAAI,CAAC1b,IAAI;QACfkd,IAAI,EAAExB,IAAI,CAACwB,IAAI,IAAI,CAAC;QAAE;QACtBC,iBAAiB,EAAE7C,MAAM,CAACC,OAAO,CAACmB,IAAI,CAAC0B,SAAS,CAAC;QACjDpH,eAAe,EAAEsE,MAAM,CAACC,OAAO,CAACmB,IAAI,CAAC2B,OAAO,CAAC;QAC7C9Q,UAAU,EAAEkQ,mBAAmB,CAACf,IAAI,CAACnP,UAAU,CAAC;QAChDwG,MAAM,EAAE4J,eAAe,CAACjB,IAAI,CAAC3I,MAAM;MACrC,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAvO,GAAA;IAAAnD,KAAA,EAOA,SAAA4a,kBAAkBA,CAACT,QAAQ,EAAE;MAAA,IAAA8B,MAAA;MAC3B,IAAM/Q,UAAU,GAAGiP,QAAQ,CAACjP,UAAU,IAAI,CAAC,CAAC;MAC5C,IAAMgR,SAAS,GAAGzc,MAAM,CAAC8P,OAAO,CAACrE,UAAU,CAAC,CAAC4G,GAAG,CAAC,UAAAiD,KAAA;QAAA,IAAAY,KAAA,GAAAjG,sBAAA,CAAAqF,KAAA;UAAE5R,GAAG,GAAAwS,KAAA;UAAE3V,KAAK,GAAA2V,KAAA;QAAA,OAAO;UAClExS,GAAG,EAAHA,GAAG;UACHnD,KAAK,EAAEic,MAAI,CAACZ,kBAAkB,CAACrb,KAAK;QACtC,CAAC;MAAA,CAAC,CAAC;MAEH,OAAO;QACLkL,UAAU,EAAEgR;MACd,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA/Y,GAAA;IAAAnD,KAAA,EAOA,SAAAgb,8BAA8BA,CAACN,KAAK,EAAE;MAAA,IAAAyB,MAAA;MACpC,OAAO;QACLxd,IAAI,EAAE+b,KAAK,CAAC/b,IAAI,IAAI,EAAE;QACtB6b,OAAO,EAAEE,KAAK,CAACF,OAAO,IAAI,EAAE;QAC5BtP,UAAU,EAAE,CAACwP,KAAK,CAACxP,UAAU,IAAI,EAAE,EAAE4G,GAAG,CAAC,UAACsK,IAAI;UAAA,OAAM;YAClDjZ,GAAG,EAAEiZ,IAAI,CAACjZ,GAAG;YACbnD,KAAK,EAAEmc,MAAI,CAACd,kBAAkB,CAACe,IAAI,CAACpc,KAAK;UAC3C,CAAC;QAAA,CAAC;MACJ,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAmD,GAAA;IAAAnD,KAAA,EAOA,SAAAqb,kBAAkBA,CAACrb,KAAK,EAAE;MAAA,IAAAqc,MAAA;MACxB,IAAIrc,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAKyD,SAAS,EAAE;QACzC,OAAO;UAAE6Y,WAAW,EAAE;QAAG,CAAC;MAC5B;MAEA,IAAM1b,IAAI,GAAAhC,eAAA,CAAUoB,KAAK;MAEzB,IAAIY,IAAI,KAAK,QAAQ,EAAE;QACrB,OAAO;UAAE0b,WAAW,EAAEtc;QAAM,CAAC;MAC/B,CAAC,MAAM,IAAIY,IAAI,KAAK,QAAQ,EAAE;QAC5B,IAAIJ,MAAM,CAAC+b,SAAS,CAACvc,KAAK,CAAC,EAAE;UAC3B,OAAO;YAAEwc,QAAQ,EAAExc,KAAK,CAAClB,QAAQ,CAAC;UAAE,CAAC;QACvC,CAAC,MAAM;UACL,OAAO;YAAE2d,WAAW,EAAEzc;UAAM,CAAC;QAC/B;MACF,CAAC,MAAM,IAAIY,IAAI,KAAK,SAAS,EAAE;QAC7B,OAAO;UAAE8b,SAAS,EAAE1c;QAAM,CAAC;MAC7B,CAAC,MAAM,IAAI2R,KAAK,CAACzD,OAAO,CAAClO,KAAK,CAAC,EAAE;QAC/B,OAAO;UACL2c,UAAU,EAAE;YACV7B,MAAM,EAAE9a,KAAK,CAAC8R,GAAG,CAAC,UAAC9D,CAAC;cAAA,OAAKqO,MAAI,CAAChB,kBAAkB,CAACrN,CAAC,CAAC;YAAA;UACrD;QACF,CAAC;MACH,CAAC,MAAM,IAAIpN,IAAI,KAAK,QAAQ,EAAE;QAC5B,OAAO;UACLgc,WAAW,EAAE;YACX9B,MAAM,EAAErb,MAAM,CAAC8P,OAAO,CAACvP,KAAK,CAAC,CAAC8R,GAAG,CAAC,UAAAgE,KAAA;cAAA,IAAAG,KAAA,GAAAvG,sBAAA,CAAAoG,KAAA;gBAAErR,CAAC,GAAAwR,KAAA;gBAAEjI,CAAC,GAAAiI,KAAA;cAAA,OAAO;gBAC7C9S,GAAG,EAAEsB,CAAC;gBACNzE,KAAK,EAAEqc,MAAI,CAAChB,kBAAkB,CAACrN,CAAC;cAClC,CAAC;YAAA,CAAC;UACJ;QACF,CAAC;MACH;MAEA,OAAO;QAAEsO,WAAW,EAAEjc,MAAM,CAACL,KAAK;MAAE,CAAC;IACvC;EAAC;AAAA;AAGI,IAAM8Z,eAAe,GAAG,EAAE,C;;AC1MjC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS+C,GAAGA,CAAA,EAAa;EAAA,IAAZC,KAAK,GAAAhP,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,EAAE;EACrB,IAAIiP,WAAW,GAAG,IAAIC,UAAU,CAACF,KAAK,CAAC;EACvCG,MAAM,CAACC,eAAe,CAACH,WAAW,CAAC;EACnC,IAAII,OAAO,GAAGxL,KAAK,CAAC6E,IAAI,CAACuG,WAAW,EAAE,UAACK,IAAI;IAAA,OACzCA,IAAI,CAACte,QAAQ,CAAC,EAAE,CAAC,CAACue,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAAA,CACpC,CAAC,CAAC1Y,IAAI,CAAC,EAAE,CAAC;EACV,OAAOwY,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAe;EAAEN,GAAG,EAAHA;AAAI,CAAC,E;;;;;;;;;;;ACvBG;AAEzB,IAAMU,WAAW,GAAG,gBAAgB;AAE7B,IAAMC,OAAO;EAGlB,SAAAA,QAAY/M,OAAO,EAAEpM,OAAO,EAAE;IAAAsM,sBAAA,OAAA6M,OAAA;IAAAC,sBAAA;IAC5B,IAAI,CAACpZ,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACoM,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACtP,MAAM,GAAGsP,OAAO,CAACtP,MAAM;IAC5B,IAAI,CAACuc,OAAO,GAAG,IAAI;IACnB,IAAI,CAACC,WAAW,GAAG,CAAC,CAAC;EACvB;EAAC,OAAAxM,mBAAA,CAAAqM,OAAA;IAAAra,GAAA;IAAAnD,KAAA,EAED,SAAA4d,IAAIA,CAAA,EAAa;MAAA,IAAZC,KAAK,GAAA/P,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,CAAC,CAAC;MACb,IAAI,IAAI,CAAC4P,OAAO,EAAE;QAChB,OAAO,IAAI;MACb;MACA,IAAI,CAACI,UAAU,CAAC,CAAC,IAAI,IAAI,CAACC,aAAa,CAAC,CAAC;MAEzC,IAAI,CAACC,qBAAqB,CAACH,KAAK,CAAC;MAEjC,OAAO,IAAI;IACb;EAAC;IAAA1a,GAAA;IAAAnD,KAAA,EAED,SAAA8d,UAAUA,CAAA,EAAG;MACX,IAAI;QACF,IAAMG,iBAAiB,GAAG,IAAI,CAAC9c,MAAM,CAAC+c,cAAc,CAACC,OAAO,CAACZ,WAAW,CAAC;QAEzE,IAAI,CAACU,iBAAiB,EAAE;UACtB,OAAO,IAAI;QACb;QAEA,IAAI,CAACP,OAAO,GAAGhY,IAAI,CAACU,KAAK,CAAC6X,iBAAiB,CAAC;MAC9C,CAAC,CAAC,OAAAG,OAAA,EAAM;QACN,OAAO,IAAI;MACb;MACA,OAAO,IAAI;IACb;EAAC;IAAAjb,GAAA;IAAAnD,KAAA,EAED,SAAA+d,aAAaA,CAAA,EAAG;MACd,IAAI,CAACL,OAAO,GAAG;QACbJ,EAAE,EAAEA,EAAE,CAACT,GAAG,CAAC,CAAC;QACZwB,SAAS,EAAErS,IAAI,CAACzK,GAAG,CAAC;MACtB,CAAC;MAED,OAAO,IAAI,CAAC+c,UAAU,CAAC,IAAI,CAACZ,OAAO,CAAC;IACtC;EAAC;IAAAva,GAAA;IAAAnD,KAAA,EAED,SAAAse,UAAUA,CAACZ,OAAO,EAAE;MAClB,IAAMa,aAAa,GAAG7Y,IAAI,CAACF,SAAS,CAACkY,OAAO,CAAC;MAE7C,IAAI;QACF,IAAI,CAACvc,MAAM,CAAC+c,cAAc,CAACM,OAAO,CAACjB,WAAW,EAAEgB,aAAa,CAAC;MAChE,CAAC,CAAC,OAAAE,QAAA,EAAM;QACN,OAAO,IAAI;MACb;MACA,OAAO,IAAI;IACb;EAAC;IAAAtb,GAAA;IAAAmI,GAAA,EAED,SAAAA,IAAA,EAAiB;MACf,OAAO,IAAI,CAACqS,WAAW;IACzB;EAAC;IAAAxa,GAAA;IAAAnD,KAAA,EAED,SAAA0e,aAAaA,CAACxT,UAAU,EAAE;MACxB,IAAI,CAACyS,WAAW,GAAAzK,oBAAA,CAAAA,oBAAA,KAAQ,IAAI,CAACyK,WAAW,GAAKzS,UAAU,CAAE;MACzD,OAAO,IAAI;IACb;EAAC;IAAA/H,GAAA;IAAAnD,KAAA,EAED,SAAA2e,OAAOA,CAACC,IAAI,EAAE;MACZ,IAAI,CAACF,aAAa,CAAC;QACjB,SAAS,EAAEE,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEtB,EAAE;QACnB,YAAY,EAAEsB,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEC,KAAK;QACzB,WAAW,EAAE,CAAAD,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEjgB,IAAI,MAAIigB,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEE,QAAQ;MAC3C,CAAC,CAAC;MACF,OAAO,IAAI;IACb;EAAC;IAAA3b,GAAA;IAAAnD,KAAA,EAED,SAAAge,qBAAqBA,CAACH,KAAK,EAAE;MAAA,IAAAkB,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA;MAC3B,IAAI,CAACP,aAAa,CAAAxL,oBAAA;QAChB,YAAY,EAAE,IAAI,CAACwK,OAAO,CAACJ,EAAE;QAC7B,gBAAgB,GAAAyB,qBAAA,GAAEzX,SAAS,CAAC4X,aAAa,cAAAH,qBAAA,uBAAvBA,qBAAA,CAAyBI,MAAM;QACjD,kBAAkB,EAAE7X,SAAS,CAAC8X,QAAQ;QACtC,gBAAgB,GAAAJ,sBAAA,GAAE1X,SAAS,CAAC4X,aAAa,cAAAF,sBAAA,uBAAvBA,sBAAA,CAAyBK,MAAM;QACjD,kBAAkB,GAAAJ,sBAAA,GAAE3X,SAAS,CAAC4X,aAAa,cAAAD,sBAAA,uBAAvBA,sBAAA,CAAyBK,QAAQ;QACrD,gBAAgB,EAAE,YAAY;QAAE;QAChC,4BAA4B,EAAE,YAAY;QAC1C,qBAAqB,EAAEhY,SAAS,CAACC;MAAS,GACvCsW,KAAK,CACT,CAAC;MACF,OAAO,IAAI;IACb;EAAC;AAAA,I;;AC5FH,IAAIzQ,IAAG,GAAG,SAANA,GAAGA,CAAA,EAAS,CAAC,CAAC;AAElB,IAAMmS,MAAM,GAAG;EACbxd,KAAK,EAAE,CAAC;EACRC,IAAI,EAAE,CAAC;EACPwd,IAAI,EAAE,CAAC;EACPtd,KAAK,EAAE,CAAC;EACRud,OAAO,EAAE;AACX,CAAC;AAED,IAAM/X,MAAM,GAAG;EACbxF,KAAK,EAAE,SAAPA,KAAKA,CAAA;IAAA,SAAAwW,IAAA,GAAA5K,SAAA,CAAA/J,MAAA,EAAMqE,IAAI,OAAAuJ,KAAA,CAAA+G,IAAA,GAAAC,IAAA,MAAAA,IAAA,GAAAD,IAAA,EAAAC,IAAA;MAAJvQ,IAAI,CAAAuQ,IAAA,IAAA7K,SAAA,CAAA6K,IAAA;IAAA;IAAA,OAAKvL,IAAG,CAAC,OAAO,EAAEhF,IAAI,CAAC;EAAA;EACtCoX,IAAI,EAAE,SAANA,IAAIA,CAAA;IAAA,SAAAE,KAAA,GAAA5R,SAAA,CAAA/J,MAAA,EAAMqE,IAAI,OAAAuJ,KAAA,CAAA+N,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJvX,IAAI,CAAAuX,KAAA,IAAA7R,SAAA,CAAA6R,KAAA;IAAA;IAAA,OAAKvS,IAAG,CAAC,MAAM,EAAEhF,IAAI,CAAC;EAAA;EACpCpG,IAAI,EAAE,SAANA,IAAIA,CAAA;IAAA,SAAA4d,KAAA,GAAA9R,SAAA,CAAA/J,MAAA,EAAMqE,IAAI,OAAAuJ,KAAA,CAAAiO,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJzX,IAAI,CAAAyX,KAAA,IAAA/R,SAAA,CAAA+R,KAAA;IAAA;IAAA,OAAKzS,IAAG,CAAC,MAAM,EAAEhF,IAAI,CAAC;EAAA;EACpCrG,KAAK,EAAE,SAAPA,KAAKA,CAAA;IAAA,SAAA+d,KAAA,GAAAhS,SAAA,CAAA/J,MAAA,EAAMqE,IAAI,OAAAuJ,KAAA,CAAAmO,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJ3X,IAAI,CAAA2X,KAAA,IAAAjS,SAAA,CAAAiS,KAAA;IAAA;IAAA,OAAK3S,IAAG,CAAC,OAAO,EAAEhF,IAAI,CAAC;EAAA;EACtCgF,GAAG,EAAE,SAALA,GAAGA,CAAA;IAAA,SAAA4S,KAAA,GAAAlS,SAAA,CAAA/J,MAAA,EAAMqE,IAAI,OAAAuJ,KAAA,CAAAqO,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJ7X,IAAI,CAAA6X,KAAA,IAAAnS,SAAA,CAAAmS,KAAA;IAAA;IAAA,OAAK7S,IAAG,CAAC,MAAM,EAAEhF,IAAI,CAAC;EAAA;EACnCwV,IAAI,EAAE,SAANA,IAAIA,CAAA7L,IAAA,EAAoB;IAAA,IAAfmO,QAAQ,GAAAnO,IAAA,CAARmO,QAAQ;IACf9S,IAAG,GAAG,SAANA,IAAGA,CAAa3D,KAAK,EAAErB,IAAI,EAAE;MAC3B,IAAImX,MAAM,CAAC9V,KAAK,CAAC,GAAG8V,MAAM,CAACW,QAAQ,CAAC,EAAE;MAEtC9X,IAAI,CAAC+X,OAAO,CAAC,UAAU,CAAC;;MAExB;MACAC,OAAO,CAAC3W,KAAK,CAAC,CAACmP,KAAK,CAACwH,OAAO,EAAEhY,IAAI,CAAC;IACrC,CAAC;EACH;AACF,CAAC;AAED,+CAAeV,MAAM,E;;;;;;;;;;;AC5Ba;AAE3B,IAAM2Y,aAAa;EACxB,SAAAA,cAAYC,QAAQ,EAAgB;IAAA,IAAdjc,OAAO,GAAAyJ,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,CAAC,CAAC;IAAA6C,4BAAA,OAAA0P,aAAA;IAChC,IAAI,CAACC,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACjc,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACkc,YAAY,GAAG,IAAI7I,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC8I,UAAU,GAAG,CAAC,IAAI,CAACC,aAAa,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC;EACnD;EAAC,OAAAvP,yBAAA,CAAAkP,aAAA;IAAAld,GAAA;IAAAnD,KAAA,EAED,SAAA2gB,YAAYA,CAACC,WAAW,EAAE;MACxB,IAAI,CAACJ,UAAU,CAACL,OAAO,CAACS,WAAW,CAAC;IACtC;EAAC;IAAAzd,GAAA;IAAAnD,KAAA,EAED,SAAAygB,aAAaA,CAACpG,IAAI,EAAE;MAClB,IAAI,IAAI,CAAChW,OAAO,CAACwc,aAAa,EAAE;QAC9B,IAAI,CAACxc,OAAO,CAACwc,aAAa,CAAC;UAAExG,IAAI,EAAEA;QAAK,CAAC,CAAC;MAC5C;IACF;EAAC;IAAAlX,GAAA;IAAAnD,KAAA,EAED,SAAA8gB,eAAeA,CAACzG,IAAI,EAAE;MAAA,IAAAvQ,SAAA,GAAAC,uCAAA,CACI,IAAI,CAACyW,UAAU;QAAAxW,KAAA;MAAA;QAAvC,KAAAF,SAAA,CAAA3D,CAAA,MAAA6D,KAAA,GAAAF,SAAA,CAAAvJ,CAAA,IAAA0J,IAAA,GAAyC;UAAA,IAA9B8W,SAAS,GAAA/W,KAAA,CAAAhK,KAAA;UAClB,IAAI;YACF+gB,SAAS,CAAC1G,IAAI,CAAC;UACjB,CAAC,CAAC,OAAOvZ,CAAC,EAAE;YACV4G,UAAM,CAACxF,KAAK,CAAC,uCAAuC,EAAEpB,CAAC,CAAC;UAC1D;QACF;MAAC,SAAA6G,GAAA;QAAAmC,SAAA,CAAAhJ,CAAA,CAAA6G,GAAA;MAAA;QAAAmC,SAAA,CAAA3K,CAAA;MAAA;IACH;EAAC;IAAAgE,GAAA;IAAAnD,KAAA,EAED,SAAAghB,OAAOA,CAAC3G,IAAI,EAAE4G,cAAc,EAAE;MAC5B,IAAI,CAACV,YAAY,CAAC7U,GAAG,CAAC2O,IAAI,CAACA,IAAI,CAACqB,WAAW,CAACC,MAAM,EAAEtB,IAAI,CAAC;IAC3D;EAAC;IAAAlX,GAAA;IAAAnD,KAAA,EAED,SAAAkhB,KAAKA,CAAC7G,IAAI,EAAE;MACV,IAAI,CAACyG,eAAe,CAACzG,IAAI,CAACA,IAAI,CAAC;MAC/B,IAAI,CAACiG,QAAQ,CAAC3G,MAAM,CAAC,CAACU,IAAI,CAACV,MAAM,CAAC,CAAC,CAAC,CAAC;MACrC,IAAI,CAAC4G,YAAY,CAACxI,MAAM,CAACsC,IAAI,CAACA,IAAI,CAACqB,WAAW,CAACC,MAAM,CAAC;IACxD;EAAC;AAAA,I;;;;;;;;;;;;;;ACtC8B;AAE1B,IAAMwF,IAAI;EACf,SAAAA,KAAY9c,OAAO,EAAE;IAAAsM,mBAAA,OAAAwQ,IAAA;IACnB,IAAI,CAAC9H,cAAc,GAAGhV,OAAO,CAACgV,cAAc;IAC5C,IAAI,CAAC+H,gBAAgB,CAAC/c,OAAO,CAAC;IAE9B,IAAI,CAACgd,aAAa,GAAGhd,OAAO,CAACgd,aAAa;IAC1C,IAAI,CAACA,aAAa,CAACL,OAAO,CAAC,IAAI,EAAE3c,OAAO,CAAC4C,OAAO,CAAC;IAEjD,IAAI5C,OAAO,CAAC6G,UAAU,EAAE;MACtB,IAAI,CAACwT,aAAa,CAACra,OAAO,CAAC6G,UAAU,CAAC;IACxC;IACA,OAAO,IAAI;EACb;EAAC,OAAAiG,gBAAA,CAAAgQ,IAAA;IAAAhe,GAAA;IAAAnD,KAAA,EAED,SAAAohB,gBAAgBA,CAAC/c,OAAO,EAAE;MAAA,IAAAid,gBAAA;MACxB,IAAI,CAACjH,IAAI,GAAG;QACV1b,IAAI,EAAE0F,OAAO,CAAC1F,IAAI;QAClBkd,IAAI,EAAExX,OAAO,CAACwX,IAAI;QAClBH,WAAW,EAAErX,OAAO,CAACqX,WAAW;QAChCE,YAAY,EAAEvX,OAAO,CAACuX,YAAY;QAClCG,SAAS,EAAE1X,OAAO,CAAC0X,SAAS,IAAI9C,MAAM,CAAC1X,GAAG,CAAC8C,OAAO,CAACgV,cAAc,CAAC;QAClE2C,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACfuF,MAAM,EAAE;UAAEvb,IAAI,EAAE,CAAC;UAAEM,OAAO,EAAE;QAAG,CAAC;QAChC4E,UAAU,EAAE;UAAE,YAAY,GAAAoW,gBAAA,GAAEjd,OAAO,CAACqZ,OAAO,cAAA4D,gBAAA,uBAAfA,gBAAA,CAAiBhE;QAAG,CAAC;QACjDkE,KAAK,EAAE,EAAE;QACT9P,MAAM,EAAE,EAAE;QACV0D,QAAQ,EAAE,CAAC;QACXqM,KAAK,EAAE,KAAK;QACZtH,QAAQ,EAAE9V,OAAO,CAAC8V,QAAQ;QAC1BI,oBAAoB,EAAElW,OAAO,CAACqW,KAAK;QACnCgH,sBAAsB,EAAE,CAAC;QACzBC,kBAAkB,EAAE,CAAC;QACrBC,iBAAiB,EAAE;MACrB,CAAC;IACH;EAAC;IAAAze,GAAA;IAAAnD,KAAA,EAED,SAAA0b,WAAWA,CAAA,EAAG;MACZ,OAAO,IAAI,CAACrB,IAAI,CAACqB,WAAW;IAC9B;EAAC;IAAAvY,GAAA;IAAAmI,GAAA,EAED,SAAAA,IAAA,EAAa;MACX,OAAO,IAAI,CAAC+O,IAAI,CAACqB,WAAW,CAACC,MAAM;IACrC;EAAC;IAAAxY,GAAA;IAAAmI,GAAA,EAED,SAAAA,IAAA,EAAc;MACZ,OAAO,IAAI,CAAC+O,IAAI,CAACqB,WAAW,CAACD,OAAO;IACtC;EAAC;IAAAtY,GAAA;IAAAnD,KAAA,EAED,SAAA6hB,YAAYA,CAAC1e,GAAG,EAAEnD,KAAK,EAAE;MACvB,IAAIA,KAAK,IAAI,IAAI,IAAI,IAAI,CAACqa,IAAI,CAACoH,KAAK,EAAE,OAAO,IAAI;MACjD,IAAIte,GAAG,CAACY,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;MAEjC,IAAI,CAACsW,IAAI,CAACnP,UAAU,CAAC/H,GAAG,CAAC,GAAGnD,KAAK;MACjC,OAAO,IAAI;IACb;EAAC;IAAAmD,GAAA;IAAAnD,KAAA,EAED,SAAA0e,aAAaA,CAACxT,UAAU,EAAE;MACxB,SAAA4W,EAAA,MAAAC,eAAA,GAAqBtiB,MAAM,CAAC8P,OAAO,CAACrE,UAAU,CAAC,EAAA4W,EAAA,GAAAC,eAAA,CAAAhe,MAAA,EAAA+d,EAAA,IAAE;QAA5C,IAAAE,kBAAA,GAAAtS,kBAAA,CAAAqS,eAAA,CAAAD,EAAA;UAAOrd,CAAC,GAAAud,kBAAA;UAAEhU,CAAC,GAAAgU,kBAAA;QACd,IAAI,CAACH,YAAY,CAACpd,CAAC,EAAEuJ,CAAC,CAAC;MACzB;MACA,OAAO,IAAI;IACb;EAAC;IAAA7K,GAAA;IAAAnD,KAAA,EAED,SAAA+S,QAAQA,CAACpU,IAAI,EAAyB;MAAA,IAAvBuM,UAAU,GAAA4C,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,CAAC,CAAC;MAAA,IAAE0N,IAAI,GAAA1N,SAAA,CAAA/J,MAAA,OAAA+J,SAAA,MAAArK,SAAA;MAClC,IAAI,IAAI,CAAC4W,IAAI,CAACoH,KAAK,EAAE,OAAO,IAAI;MAEhC,IAAI,CAACpH,IAAI,CAAC3I,MAAM,CAAChN,IAAI,CAAC;QACpB/F,IAAI,EAAJA,IAAI;QACJuM,UAAU,EAAVA,UAAU;QACVsQ,IAAI,EAAEA,IAAI,IAAIvC,MAAM,CAAC1X,GAAG,CAAC,CAAC;QAC1BmgB,sBAAsB,EAAE;MAC1B,CAAC,CAAC;MAEF,OAAO,IAAI;IACb;EAAC;IAAAve,GAAA;IAAAnD,KAAA,EAED,SAAAiiB,WAAWA,CAAA,EAAG;MACZ,OAAO,IAAI,CAAC5H,IAAI,CAACoH,KAAK,KAAK,KAAK;IAClC;EAAC;IAAAte,GAAA;IAAAnD,KAAA,EAED,SAAAqS,GAAGA,CAACnH,UAAU,EAAEsQ,IAAI,EAAE;MACpB,IAAItQ,UAAU,EAAE,IAAI,CAACwT,aAAa,CAACxT,UAAU,CAAC;MAC9C,IAAI,CAACmP,IAAI,CAAC2B,OAAO,GAAGR,IAAI,IAAIvC,MAAM,CAAC1X,GAAG,CAAC,IAAI,CAAC8X,cAAc,CAAC;MAC3D,IAAI,CAACgB,IAAI,CAACoH,KAAK,GAAG,IAAI;MACtB,IAAI,CAACJ,aAAa,CAACH,KAAK,CAAC,IAAI,CAAC;IAChC;EAAC;IAAA/d,GAAA;IAAAnD,KAAA,EAED,SAAA2Z,OAAMA,CAAA,EAAG;MACP,OAAO,IAAI,CAACU,IAAI;IAClB;EAAC;AAAA,I;;;;;;;;;;;AC3FsB;AACQ;AAE1B,IAAM6H,MAAM;EACjB,SAAAA,OAAYzR,OAAO,EAAE4Q,aAAa,EAAE;IAAA1Q,qBAAA,OAAAuR,MAAA;IAClC,IAAI,CAACb,aAAa,GAAGA,aAAa;IAClC,IAAI,CAAC5Q,OAAO,GAAGA,OAAO;EACxB;EAAC,OAAAU,kBAAA,CAAA+Q,MAAA;IAAA/e,GAAA;IAAAnD,KAAA,EAED,SAAAkR,SAASA,CACPvS,IAAI,EAGJ;MAAA,IAAAwjB,qBAAA,EAAAC,iBAAA,EAAAC,qBAAA;MAAA,IAFAhe,OAAO,GAAAyJ,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,CAAC,CAAC;MAAA,IACZ7G,OAAO,GAAA6G,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,IAAI,CAAC2C,OAAO,CAAC6R,cAAc,CAACnK,MAAM,CAAC,CAAC;MAE9C,IAAMoK,UAAU,GAAG,IAAI,CAAC9R,OAAO,CAAC+R,OAAO,CAACvb,OAAO,CAAC;MAChD,IAAMwb,iBAAiB,GAAGF,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAE7G,WAAW,CAAC,CAAC;MACnD,IAAMC,MAAM,GAAG2B,EAAE,CAACT,GAAG,CAAC,CAAC,CAAC;MACxB,IAAIpB,OAAO;MACX,IAAIiH,UAAU,GAAG,CAAC;MAClB,IAAIC,UAAU,GAAG,IAAI;MACrB,IAAI/G,YAAY;MAChB,IAAI6G,iBAAiB,EAAE;QACrBhH,OAAO,GAAGgH,iBAAiB,CAAChH,OAAO;QACnCkH,UAAU,GAAGF,iBAAiB,CAACE,UAAU;QACzC/G,YAAY,GAAG6G,iBAAiB,CAAC9G,MAAM;MACzC,CAAC,MAAM;QACLF,OAAO,GAAG6B,EAAE,CAACT,GAAG,CAAC,EAAE,CAAC;MACtB;MAEA,IAAMhB,IAAI,GAAG,CAAC;MACd,IAAMH,WAAW,GAAG;QAAED,OAAO,EAAPA,OAAO;QAAEE,MAAM,EAANA,MAAM;QAAE+G,UAAU,EAAVA,UAAU;QAAEC,UAAU,EAAVA;MAAW,CAAC;MAC/D,IAAMxI,QAAQ,GAAG;QACfjP,UAAU,EAAAgI,mBAAA,CAAAA,mBAAA,KACJ,EAAAiP,qBAAA,OAAI,CAAC1R,OAAO,CAAC0J,QAAQ,cAAAgI,qBAAA,uBAArBA,qBAAA,CAAuBjX,UAAU,KAAI,CAAC,CAAC,GACvC,EAAAkX,iBAAA,GAAA/d,OAAO,CAAC8V,QAAQ,cAAAiI,iBAAA,uBAAhBA,iBAAA,CAAkBlX,UAAU,KAAI,CAAC,CAAC;MAE1C,CAAC;MAED,IAAMmP,IAAI,GAAG,IAAI8G,IAAI,CAAC;QACpBhH,QAAQ,EAAEA,QAAQ;QAClBO,KAAK,EAAE,IAAI,CAACjK,OAAO,CAACiK,KAAK;QACzBgD,OAAO,GAAA2E,qBAAA,GAAE,IAAI,CAAC5R,OAAO,CAACiN,OAAO,cAAA2E,qBAAA,uBAApBA,qBAAA,CAAsB3E,OAAO;QACtCzW,OAAO,EAAPA,OAAO;QACPyU,WAAW,EAAXA,WAAW;QACX/c,IAAI,EAAJA,IAAI;QACJkd,IAAI,EAAJA,IAAI;QACJD,YAAY,EAAZA,YAAY;QACZyF,aAAa,EAAE,IAAI,CAACA,aAAa;QACjCtF,SAAS,EAAE1X,OAAO,CAAC0X,SAAS;QAC5B1C,cAAc,EAAEhV,OAAO,CAACgV;MAC1B,CAAC,CAAC;MACF,OAAOgB,IAAI;IACb;EAAC;AAAA,I;;;;;;;;;;;ACpDoE;AAC1B;AACpB;AACc;AACY;AACd;AAErC,IAAMuI,QAAQ,GAAG/J,gBAAgB,CAAC,0BAA0B,CAAC;AAAC,IAEzCgK,OAAO;EAC1B,SAAAA,QAAYC,OAAO,EAAEpJ,GAAG,EAAErV,OAAO,EAAE;IAAAsM,sBAAA,OAAAkS,OAAA;IACjC,IAAI,CAACnJ,GAAG,GAAGA,GAAG;IACd,IAAI,CAACrV,OAAO,GAAGA,OAAO;IACtB,IAAI,CAAClD,MAAM,GAAG2hB,OAAO;IAErB,IAAI,IAAI,CAAC3hB,MAAM,CAAC+c,cAAc,EAAE;MAC9B,IAAI,CAACR,OAAO,GAAG,IAAIF,OAAO,CAAC,IAAI,EAAEnZ,OAAO,CAAC;IAC3C;IACA,IAAI,CAAC0e,YAAY,CAAC,CAAC;EACrB;EAAC,OAAA5R,mBAAA,CAAA0R,OAAA;IAAA1f,GAAA;IAAAnD,KAAA,EAED,SAAAoR,SAASA,CAAC/M,OAAO,EAAE;MACjB;MACA,IAAI,CAACA,OAAO,GAAGA,OAAO;IACxB;EAAC;IAAAlB,GAAA;IAAAnD,KAAA,EAED,SAAAgjB,WAAWA,CAAA,EAAG;MACZ,IAAI,IAAI,CAACtF,OAAO,EAAE;QAChB,IAAI,CAACA,OAAO,CAACE,IAAI,CAAC,CAAC;MACrB;IACF;EAAC;IAAAza,GAAA;IAAAmI,GAAA,EAED,SAAAA,IAAA,EAAgB;MACd,IAAI,IAAI,CAACoS,OAAO,EAAE;QAChB,OAAO,IAAI,CAACA,OAAO,CAACA,OAAO,CAACJ,EAAE;MAChC;MACA,OAAO,IAAI;IACb;EAAC;IAAAna,GAAA;IAAAmI,GAAA,EAED,SAAAA,IAAA,EAAe;MAAA,IAAA2X,qBAAA,EAAAC,sBAAA;MACb,OAAO;QACLhY,UAAU,EAAAgI,oBAAA,CAAAA,oBAAA,KACJ,IAAI,CAAC7O,OAAO,CAAC8V,QAAQ,IAAI,CAAC,CAAC;UAC/B,qBAAqB,GAAA8I,qBAAA,IAAAC,sBAAA,GACnB,IAAI,CAAC7e,OAAO,CAACyI,OAAO,cAAAoW,sBAAA,uBAApBA,sBAAA,CAAsBC,WAAW,cAAAF,qBAAA,cAAAA,qBAAA,GAAI,IAAI,CAAC5e,OAAO,CAAC8e;QAAW;MAEnE,CAAC;IACH;EAAC;IAAAhgB,GAAA;IAAAmI,GAAA,EAED,SAAAA,IAAA,EAAY;MACV,OAAO;QACL3M,IAAI,EAAE,oBAAoB;QAC1B6b,OAAO,EAAE,IAAI,CAACnW,OAAO,CAACmW;MACxB,CAAC;IACH;EAAC;IAAArX,GAAA;IAAAnD,KAAA,EAED,SAAAojB,KAAKA,CAAA,EAAa;MAAA,IAAZtG,KAAK,GAAAhP,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,EAAE;MACd,OAAOwP,EAAE,CAACT,GAAG,CAACC,KAAK,CAAC;IACtB;EAAC;IAAA3Z,GAAA;IAAAnD,KAAA,EAED,SAAA+iB,YAAYA,CAAA,EAAG;MACb,IAAI,CAACT,cAAc,GAAG,IAAIrK,cAAc,CAAC,CAAC;MAC1C,IAAI,CAACqI,QAAQ,GAAG,IAAI7G,YAAY,CAAC,IAAI,CAACC,GAAG,EAAE,IAAI,CAACrV,OAAO,CAAC;MACxD,IAAI,CAACgd,aAAa,GAAG,IAAIhB,aAAa,CAAC,IAAI,CAACC,QAAQ,EAAE,IAAI,CAACjc,OAAO,CAACoM,OAAO,CAAC;MAC3E,IAAI,CAAC4S,MAAM,GAAG,IAAInB,MAAM,CAAC,IAAI,EAAE,IAAI,CAACb,aAAa,CAAC;IACpD;EAAC;IAAAle,GAAA;IAAAnD,KAAA,EAED,SAAAsjB,SAASA,CAAA,EAAG;MACV,OAAO,IAAI,CAACD,MAAM;IACpB;EAAC;IAAAlgB,GAAA;IAAAnD,KAAA,EAED,SAAAujB,gBAAgBA,CAAC3C,WAAW,EAAE;MAC5B,IAAI,CAACS,aAAa,CAACV,YAAY,CAACC,WAAW,CAAC;IAC9C;EAAC;IAAAzd,GAAA;IAAAnD,KAAA,EAED,SAAAwiB,OAAOA,CAAA,EAAyC;MAAA,IAAxCvb,OAAO,GAAA6G,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,IAAI,CAACwU,cAAc,CAACnK,MAAM,CAAC,CAAC;MAC5C,OAAOlR,OAAO,CAAC0Q,QAAQ,CAACiL,QAAQ,CAAC;IACnC;EAAC;IAAAzf,GAAA;IAAAnD,KAAA,EAED,SAAAwjB,OAAOA,CAAA,EAA+C;MAAA,IAA9Cvc,OAAO,GAAA6G,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,IAAI,CAACwU,cAAc,CAACnK,MAAM,CAAC,CAAC;MAAA,IAAEkC,IAAI,GAAAvM,SAAA,CAAA/J,MAAA,OAAA+J,SAAA,MAAArK,SAAA;MAClD,OAAOwD,OAAO,CAAC2Q,QAAQ,CAACgL,QAAQ,EAAEvI,IAAI,CAAC;IACzC;EAAC;IAAAlX,GAAA;IAAAnD,KAAA,EAED,SAAAkR,SAASA,CAACvS,IAAI,EAAwD;MAAA,IAAtD0F,OAAO,GAAAyJ,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,CAAC,CAAC;MAAA,IAAE7G,OAAO,GAAA6G,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,IAAI,CAACwU,cAAc,CAACnK,MAAM,CAAC,CAAC;MAClE,OAAO,IAAI,CAACkL,MAAM,CAACnS,SAAS,CAACvS,IAAI,EAAE0F,OAAO,EAAE4C,OAAO,CAAC;IACtD;EAAC;IAAA9D,GAAA;IAAAnD,KAAA,EAED,SAAAuY,KAAIA,CAACtR,OAAO,EAAEuR,EAAE,EAAEC,OAAO,EAAW;MAAA,IAAAgL,oBAAA;MAAA,SAAA/K,IAAA,GAAA5K,SAAA,CAAA/J,MAAA,EAANqE,IAAI,OAAAuJ,KAAA,CAAA+G,IAAA,OAAAA,IAAA,WAAAC,IAAA,MAAAA,IAAA,GAAAD,IAAA,EAAAC,IAAA;QAAJvQ,IAAI,CAAAuQ,IAAA,QAAA7K,SAAA,CAAA6K,IAAA;MAAA;MAChC,OAAO,CAAA8K,oBAAA,OAAI,CAACnB,cAAc,EAAC/J,IAAI,CAAAK,KAAA,CAAA6K,oBAAA,GAACxc,OAAO,EAAEuR,EAAE,EAAEC,OAAO,EAAA/L,MAAA,CAAKtE,IAAI,EAAC;IAChE;EAAC;IAAAjF,GAAA;IAAAnD,KAAA,EAED,SAAA0jB,QAAQA,CAAC/kB,IAAI,EAAE0F,OAAO,EAAEmU,EAAE,EAAEC,OAAO,EAAE;MACnC,IAAM4B,IAAI,GAAG,IAAI,CAACnJ,SAAS,CAACvS,IAAI,EAAE0F,OAAO,CAAC;MAC1C,OAAO,IAAI,CAACkU,IAAI,CACd,IAAI,CAACiL,OAAO,CAAC,IAAI,CAAClB,cAAc,CAACnK,MAAM,CAAC,CAAC,EAAEkC,IAAI,CAAC,EAChD7B,EAAE,EACFC,OAAO,EACP4B,IACF,CAAC;IACH;EAAC;AAAA;;;;;;;;;;ACnG0C;AACX;AAElC,SAASuJ,GAAGA,CAAC9W,OAAO,EAAE+W,UAAU,EAAE;EAChC,OAAO,CAAC/W,OAAO,EAAEpK,SAAW,CAACoK,OAAO,EAAE+W,UAAU,CAAC,CAAC;AACpD;AAEA,SAASC,YAAYA,CAACC,MAAM,EAAEC,KAAK,EAAE;EACnC,IAAI9a,GAAG,GAAG6a,MAAM,CAAChgB,MAAM;EACvB,IAAImF,GAAG,GAAG8a,KAAK,GAAG,CAAC,EAAE;IACnB,OAAOD,MAAM,CAAC7b,KAAK,CAAC,CAAC,EAAE8b,KAAK,CAAC,CAACtX,MAAM,CAACqX,MAAM,CAAC7b,KAAK,CAACgB,GAAG,GAAG8a,KAAK,CAAC,CAAC;EACjE;EACA,OAAOD,MAAM;AACf;AAEA,SAASE,cAAcA,CAACnX,OAAO,EAAE+W,UAAU,EAAEG,KAAK,EAAE;EAClDA,KAAK,GAAG,OAAOA,KAAK,KAAK,WAAW,GAAG,EAAE,GAAGA,KAAK;EACjD,IAAItR,IAAI,GAAG5F,OAAO,CAACzD,IAAI,CAACqJ,IAAI;EAC5B,IAAIqR,MAAM;EACV,IAAIrR,IAAI,CAACwR,WAAW,EAAE;IACpB,IAAIC,KAAK,GAAGzR,IAAI,CAACwR,WAAW;IAAC,IAAApa,SAAA,GAAAC,oCAAA,CACToa,KAAK;MAAAna,KAAA;IAAA;MAAzB,KAAAF,SAAA,CAAA3D,CAAA,MAAA6D,KAAA,GAAAF,SAAA,CAAAvJ,CAAA,IAAA0J,IAAA,GAA2B;QAAA,IAAhBma,KAAK,GAAApa,KAAA,CAAAhK,KAAA;QACd+jB,MAAM,GAAGK,KAAK,CAACL,MAAM;QACrBA,MAAM,GAAGD,YAAY,CAACC,MAAM,EAAEC,KAAK,CAAC;QACpCI,KAAK,CAACL,MAAM,GAAGA,MAAM;MACvB;IAAC,SAAApc,GAAA;MAAAmC,SAAA,CAAAhJ,CAAA,CAAA6G,GAAA;IAAA;MAAAmC,SAAA,CAAA3K,CAAA;IAAA;EACH,CAAC,MAAM,IAAIuT,IAAI,CAAC0R,KAAK,EAAE;IACrBL,MAAM,GAAGrR,IAAI,CAAC0R,KAAK,CAACL,MAAM;IAC1BA,MAAM,GAAGD,YAAY,CAACC,MAAM,EAAEC,KAAK,CAAC;IACpCtR,IAAI,CAAC0R,KAAK,CAACL,MAAM,GAAGA,MAAM;EAC5B;EACA,OAAO,CAACjX,OAAO,EAAEpK,SAAW,CAACoK,OAAO,EAAE+W,UAAU,CAAC,CAAC;AACpD;AAEA,SAASQ,kBAAkBA,CAACnb,GAAG,EAAEuB,GAAG,EAAE;EACpC,IAAI,CAACA,GAAG,EAAE;IACR,OAAOA,GAAG;EACZ;EACA,IAAIA,GAAG,CAAC1G,MAAM,GAAGmF,GAAG,EAAE;IACpB,OAAOuB,GAAG,CAACvC,KAAK,CAAC,CAAC,EAAEgB,GAAG,GAAG,CAAC,CAAC,CAACwD,MAAM,CAAC,KAAK,CAAC;EAC5C;EACA,OAAOjC,GAAG;AACZ;AAEA,SAAS6Z,eAAeA,CAACpb,GAAG,EAAE4D,OAAO,EAAE+W,UAAU,EAAE;EACjD,SAASU,SAASA,CAAC9f,CAAC,EAAEuJ,CAAC,EAAElG,IAAI,EAAE;IAC7B,QAAQpF,QAAU,CAACsL,CAAC,CAAC;MACnB,KAAK,QAAQ;QACX,OAAOqW,kBAAkB,CAACnb,GAAG,EAAE8E,CAAC,CAAC;MACnC,KAAK,QAAQ;MACb,KAAK,OAAO;QACV,OAAOD,gBAAQ,CAACC,CAAC,EAAEuW,SAAS,EAAEzc,IAAI,CAAC;MACrC;QACE,OAAOkG,CAAC;IACZ;EACF;EACAlB,OAAO,GAAGiB,gBAAQ,CAACjB,OAAO,EAAEyX,SAAS,CAAC;EACtC,OAAO,CAACzX,OAAO,EAAEpK,SAAW,CAACoK,OAAO,EAAE+W,UAAU,CAAC,CAAC;AACpD;AAEA,SAASW,iBAAiBA,CAACC,SAAS,EAAE;EACpC,IAAIA,SAAS,CAACC,SAAS,EAAE;IACvB,OAAOD,SAAS,CAACC,SAAS,CAACC,WAAW;IACtCF,SAAS,CAACC,SAAS,CAACpe,OAAO,GAAG+d,kBAAkB,CAC9C,GAAG,EACHI,SAAS,CAACC,SAAS,CAACpe,OACtB,CAAC;EACH;EACAme,SAAS,CAACV,MAAM,GAAGD,YAAY,CAACW,SAAS,CAACV,MAAM,EAAE,CAAC,CAAC;EACpD,OAAOU,SAAS;AAClB;AAEA,SAASG,OAAOA,CAAC9X,OAAO,EAAE+W,UAAU,EAAE;EACpC,IAAInR,IAAI,GAAG5F,OAAO,CAACzD,IAAI,CAACqJ,IAAI;EAC5B,IAAIA,IAAI,CAACwR,WAAW,EAAE;IACpB,IAAIC,KAAK,GAAGzR,IAAI,CAACwR,WAAW;IAAC,IAAAxZ,UAAA,GAAAX,oCAAA,CACAoa,KAAK,CAAC5U,OAAO,CAAC,CAAC;MAAA5E,MAAA;IAAA;MAA5C,KAAAD,UAAA,CAAAvE,CAAA,MAAAwE,MAAA,GAAAD,UAAA,CAAAnK,CAAA,IAAA0J,IAAA,GAA8C;QAAA,IAAA4a,YAAA,GAAAnV,wBAAA,CAAA/E,MAAA,CAAA3K,KAAA;UAAlC2P,KAAK,GAAAkV,YAAA;UAAET,KAAK,GAAAS,YAAA;QACtBV,KAAK,CAACxU,KAAK,CAAC,GAAG6U,iBAAiB,CAACJ,KAAK,CAAC;MACzC;IAAC,SAAAzc,GAAA;MAAA+C,UAAA,CAAA5J,CAAA,CAAA6G,GAAA;IAAA;MAAA+C,UAAA,CAAAvL,CAAA;IAAA;EACH,CAAC,MAAM,IAAIuT,IAAI,CAAC0R,KAAK,EAAE;IACrB1R,IAAI,CAAC0R,KAAK,GAAGI,iBAAiB,CAAC9R,IAAI,CAAC0R,KAAK,CAAC;EAC5C;EACA,OAAO,CAACtX,OAAO,EAAEpK,SAAW,CAACoK,OAAO,EAAE+W,UAAU,CAAC,CAAC;AACpD;AAEA,SAASiB,eAAeA,CAAChY,OAAO,EAAEiY,OAAO,EAAE;EACzC,OAAOriB,WAAa,CAACoK,OAAO,CAAC,GAAGiY,OAAO;AACzC;AAEA,SAASC,QAAQA,CAAClY,OAAO,EAAE+W,UAAU,EAAEkB,OAAO,EAAE;EAC9CA,OAAO,GAAG,OAAOA,OAAO,KAAK,WAAW,GAAG,GAAG,GAAG,IAAI,GAAGA,OAAO;EAC/D,IAAIE,UAAU,GAAG,CACfrB,GAAG,EACHK,cAAc,EACdK,eAAe,CAAC5D,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAChC4D,eAAe,CAAC5D,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAC/B4D,eAAe,CAAC5D,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAC/BkE,OAAO,CACR;EACD,IAAIM,QAAQ,EAAEC,OAAO,EAAE5f,MAAM;EAE7B,OAAQ2f,QAAQ,GAAGD,UAAU,CAAC7N,KAAK,CAAC,CAAC,EAAG;IACtC+N,OAAO,GAAGD,QAAQ,CAACpY,OAAO,EAAE+W,UAAU,CAAC;IACvC/W,OAAO,GAAGqY,OAAO,CAAC,CAAC,CAAC;IACpB5f,MAAM,GAAG4f,OAAO,CAAC,CAAC,CAAC;IACnB,IAAI5f,MAAM,CAACrD,KAAK,IAAI,CAAC4iB,eAAe,CAACvf,MAAM,CAACvF,KAAK,EAAE+kB,OAAO,CAAC,EAAE;MAC3D,OAAOxf,MAAM;IACf;EACF;EACA,OAAOA,MAAM;AACf;AAEA,+CAAe;EACbyf,QAAQ,EAARA,QAAQ;EAER;EACApB,GAAG,EAAHA,GAAG;EACHK,cAAc,EAAdA,cAAc;EACdK,eAAe,EAAfA,eAAe;EACfD,kBAAkB,EAAlBA;AACF,CAAC,E;;ACxHiC;AAElC,SAASe,YAAYA,CAAC/b,IAAI,EAAE;EAC1B,IAAI,CAAC3G,MAAQ,CAAC2G,IAAI,CAACpC,OAAO,EAAE,QAAQ,CAAC,EAAE;IACrC,IAAIoe,aAAa,GAAG3iB,SAAW,CAAC2G,IAAI,CAACpC,OAAO,CAAC;IAC7C,IAAIoe,aAAa,CAACnjB,KAAK,EAAE;MACvBmH,IAAI,CAACpC,OAAO,GAAG,sCAAsC;IACvD,CAAC,MAAM;MACLoC,IAAI,CAACpC,OAAO,GAAGoe,aAAa,CAACrlB,KAAK,IAAI,EAAE;IAC1C;IACA,IAAIqJ,IAAI,CAACpC,OAAO,CAAClD,MAAM,GAAG,GAAG,EAAE;MAC7BsF,IAAI,CAACpC,OAAO,GAAGoC,IAAI,CAACpC,OAAO,CAAC8E,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC;IAC5C;EACF;EACA,OAAO;IACL1C,IAAI,EAAEA;EACR,CAAC;AACH;AAEA,SAASic,uBAAuBA,CAACjhB,OAAO,EAAEkhB,QAAQ,EAAEljB,GAAG,EAAE;EACvD,IAAIiD,QAAQ,GAAGigB,QAAQ,CAACjgB,QAAQ;EAChC,IAAIF,QAAQ,GAAGmgB,QAAQ,CAACngB,QAAQ;EAChC,IAAIC,IAAI,GAAGkgB,QAAQ,CAAClgB,IAAI;EACxB,IAAIR,IAAI,GAAG0gB,QAAQ,CAAC1gB,IAAI;EACxB,IAAIpC,MAAM,GAAG8iB,QAAQ,CAAC9iB,MAAM;EAC5B,IAAI+iB,OAAO,GAAGnhB,OAAO,CAACmhB,OAAO;EAC7B,IAAIC,SAAS,GAAGC,eAAe,CAACrhB,OAAO,CAAC;EAExC,IAAIshB,KAAK,GAAGthB,OAAO,CAACshB,KAAK;EACzB,IAAIthB,OAAO,CAACuhB,QAAQ,EAAE;IACpB,IAAIC,IAAI,GAAGxjB,GAAG,CAAC+D,KAAK,CAAC/B,OAAO,CAACuhB,QAAQ,CAAC;IACtCtgB,QAAQ,GAAGugB,IAAI,CAACvgB,QAAQ;IACxBF,QAAQ,GAAGygB,IAAI,CAACzgB,QAAQ;IACxBC,IAAI,GAAGwgB,IAAI,CAACxgB,IAAI;IAChBR,IAAI,GAAGghB,IAAI,CAACC,QAAQ;IACpBrjB,MAAM,GAAGojB,IAAI,CAACpjB,MAAM;EACtB;EACA,OAAO;IACL+iB,OAAO,EAAEA,OAAO;IAChBlgB,QAAQ,EAAEA,QAAQ;IAClBF,QAAQ,EAAEA,QAAQ;IAClBC,IAAI,EAAEA,IAAI;IACVR,IAAI,EAAEA,IAAI;IACVpC,MAAM,EAAEA,MAAM;IACdkjB,KAAK,EAAEA,KAAK;IACZF,SAAS,EAAEA;EACb,CAAC;AACH;AAEA,SAASC,eAAeA,CAACrhB,OAAO,EAAE;EAChC,IAAIye,OAAO,GACR,OAAO3hB,MAAM,KAAK,WAAW,IAAIA,MAAM,IACvC,OAAO2W,IAAI,KAAK,WAAW,IAAIA,IAAK;EACvC,IAAI2N,SAAS,GAAGphB,OAAO,CAAC0hB,gBAAgB,IAAI,KAAK;EACjD,IAAI,OAAOjD,OAAO,CAACkD,KAAK,KAAK,WAAW,EAAEP,SAAS,GAAG,KAAK;EAC3D,IAAI,OAAO3C,OAAO,CAACmD,cAAc,KAAK,WAAW,EAAER,SAAS,GAAG,OAAO;EACtE,OAAOA,SAAS;AAClB;AAEA,SAASS,2BAAgBA,CAACT,SAAS,EAAE7R,MAAM,EAAE;EAC3C,IAAIxO,QAAQ,GAAGqgB,SAAS,CAACrgB,QAAQ,IAAI,QAAQ;EAC7C,IAAIC,IAAI,GACNogB,SAAS,CAACpgB,IAAI,KACbD,QAAQ,KAAK,OAAO,GAAG,EAAE,GAAGA,QAAQ,KAAK,QAAQ,GAAG,GAAG,GAAG3B,SAAS,CAAC;EACvE,IAAI6B,QAAQ,GAAGmgB,SAAS,CAACngB,QAAQ;EACjC,IAAIT,IAAI,GAAG4gB,SAAS,CAAC5gB,IAAI;EACzB,IAAI2gB,OAAO,GAAGC,SAAS,CAACD,OAAO;EAC/B,IAAIW,YAAY,GAAGV,SAAS,CAACA,SAAS;EACtC,IAAIA,SAAS,CAAChjB,MAAM,EAAE;IACpBoC,IAAI,GAAGA,IAAI,GAAG4gB,SAAS,CAAChjB,MAAM;EAChC;EACA,IAAIgjB,SAAS,CAACE,KAAK,EAAE;IACnB9gB,IAAI,GAAGO,QAAQ,GAAG,IAAI,GAAGE,QAAQ,GAAGT,IAAI;IACxCS,QAAQ,GAAGmgB,SAAS,CAACE,KAAK,CAACS,IAAI,IAAIX,SAAS,CAACE,KAAK,CAACrgB,QAAQ;IAC3DD,IAAI,GAAGogB,SAAS,CAACE,KAAK,CAACtgB,IAAI;IAC3BD,QAAQ,GAAGqgB,SAAS,CAACE,KAAK,CAACvgB,QAAQ,IAAIA,QAAQ;EACjD;EACA,OAAO;IACLogB,OAAO,EAAEA,OAAO;IAChBpgB,QAAQ,EAAEA,QAAQ;IAClBE,QAAQ,EAAEA,QAAQ;IAClBT,IAAI,EAAEA,IAAI;IACVQ,IAAI,EAAEA,IAAI;IACVuO,MAAM,EAAEA,MAAM;IACd6R,SAAS,EAAEU;EACb,CAAC;AACH;AAEA,SAASE,gBAAgBA,CAACC,IAAI,EAAEzhB,IAAI,EAAE;EACpC,IAAI0hB,iBAAiB,GAAG,KAAK,CAACxmB,IAAI,CAACumB,IAAI,CAAC;EACxC,IAAIE,kBAAkB,GAAG,KAAK,CAACzmB,IAAI,CAAC8E,IAAI,CAAC;EAEzC,IAAI0hB,iBAAiB,IAAIC,kBAAkB,EAAE;IAC3C3hB,IAAI,GAAGA,IAAI,CAACI,SAAS,CAAC,CAAC,CAAC;EAC1B,CAAC,MAAM,IAAI,CAACshB,iBAAiB,IAAI,CAACC,kBAAkB,EAAE;IACpD3hB,IAAI,GAAG,GAAG,GAAGA,IAAI;EACnB;EAEA,OAAOyhB,IAAI,GAAGzhB,IAAI;AACpB;;;;;;;0BClGA,uKAAA/D,CAAA,EAAArC,CAAA,EAAAiD,CAAA,wBAAAoX,MAAA,GAAAA,MAAA,OAAAvY,CAAA,GAAAmB,CAAA,CAAA+kB,QAAA,kBAAA/iB,CAAA,GAAAhC,CAAA,CAAAglB,WAAA,8BAAA/lB,EAAAe,CAAA,EAAAnB,CAAA,EAAAmD,CAAA,EAAA/C,CAAA,QAAAc,CAAA,GAAAlB,CAAA,IAAAA,CAAA,CAAAf,SAAA,YAAAmnB,SAAA,GAAApmB,CAAA,GAAAomB,SAAA,EAAAxhB,CAAA,GAAA1F,MAAA,CAAAoO,MAAA,CAAApM,CAAA,CAAAjC,SAAA,UAAAonB,mBAAA,CAAAzhB,CAAA,uBAAAzD,CAAA,EAAAnB,CAAA,EAAAmD,CAAA,QAAA/C,CAAA,EAAAc,CAAA,EAAA0D,CAAA,EAAAhG,CAAA,MAAA6B,CAAA,GAAA0C,CAAA,QAAAmjB,CAAA,OAAAC,CAAA,KAAA9lB,CAAA,KAAAT,CAAA,KAAAyN,CAAA,EAAAlN,CAAA,EAAAuK,CAAA,EAAA/J,CAAA,EAAAnC,CAAA,EAAAmC,CAAA,CAAAof,IAAA,CAAA5f,CAAA,MAAAQ,CAAA,WAAAA,EAAA7C,CAAA,EAAAiD,CAAA,WAAAf,CAAA,GAAAlC,CAAA,EAAAgD,CAAA,MAAA0D,CAAA,GAAArE,CAAA,EAAAgmB,CAAA,CAAAvmB,CAAA,GAAAmB,CAAA,EAAA2J,CAAA,gBAAA/J,EAAAI,CAAA,EAAAnB,CAAA,SAAAkB,CAAA,GAAAC,CAAA,EAAAyD,CAAA,GAAA5E,CAAA,EAAA9B,CAAA,OAAAooB,CAAA,IAAA1nB,CAAA,KAAAuE,CAAA,IAAAjF,CAAA,GAAAuC,CAAA,CAAA+C,MAAA,EAAAtF,CAAA,UAAAiF,CAAA,EAAA/C,CAAA,GAAAK,CAAA,CAAAvC,CAAA,GAAA6C,CAAA,GAAAwlB,CAAA,CAAA9lB,CAAA,EAAA8C,CAAA,GAAAnD,CAAA,KAAAe,CAAA,QAAAgC,CAAA,GAAAI,CAAA,KAAAvD,CAAA,MAAA4E,CAAA,GAAAxE,CAAA,EAAAc,CAAA,GAAAd,CAAA,YAAAc,CAAA,WAAAd,CAAA,MAAAA,CAAA,MAAAG,CAAA,IAAAH,CAAA,OAAAW,CAAA,MAAAoC,CAAA,GAAAhC,CAAA,QAAAJ,CAAA,GAAAX,CAAA,QAAAc,CAAA,MAAAqlB,CAAA,CAAA9Y,CAAA,GAAAzN,CAAA,EAAAumB,CAAA,CAAAvmB,CAAA,GAAAI,CAAA,OAAAW,CAAA,GAAAwC,CAAA,KAAAJ,CAAA,GAAAhC,CAAA,QAAAf,CAAA,MAAAJ,CAAA,IAAAA,CAAA,GAAAuD,CAAA,MAAAnD,CAAA,MAAAe,CAAA,EAAAf,CAAA,MAAAJ,CAAA,EAAAumB,CAAA,CAAAvmB,CAAA,GAAAuD,CAAA,EAAArC,CAAA,cAAAiC,CAAA,IAAAhC,CAAA,aAAA2J,CAAA,QAAAwb,CAAA,OAAAtmB,CAAA,qBAAAmD,CAAA,EAAA1C,CAAA,EAAA8C,CAAA,QAAA3E,CAAA,YAAA4nB,SAAA,uCAAAF,CAAA,UAAA7lB,CAAA,IAAAM,CAAA,CAAAN,CAAA,EAAA8C,CAAA,GAAArC,CAAA,GAAAT,CAAA,EAAAmE,CAAA,GAAArB,CAAA,GAAArF,CAAA,GAAAgD,CAAA,OAAAX,CAAA,GAAAqE,CAAA,MAAA0hB,CAAA,KAAAlmB,CAAA,KAAAc,CAAA,GAAAA,CAAA,QAAAA,CAAA,SAAAqlB,CAAA,CAAAvmB,CAAA,QAAAe,CAAA,CAAAG,CAAA,EAAA0D,CAAA,KAAA2hB,CAAA,CAAAvmB,CAAA,GAAA4E,CAAA,GAAA2hB,CAAA,CAAA9Y,CAAA,GAAA7I,CAAA,aAAAhG,CAAA,MAAAwB,CAAA,QAAAc,CAAA,KAAAiC,CAAA,YAAAjF,CAAA,GAAAkC,CAAA,CAAA+C,CAAA,WAAAjF,CAAA,GAAAA,CAAA,CAAAM,IAAA,CAAA4B,CAAA,EAAAwE,CAAA,UAAA4hB,SAAA,2CAAAtoB,CAAA,CAAAwL,IAAA,SAAAxL,CAAA,EAAA0G,CAAA,GAAA1G,CAAA,CAAAuB,KAAA,EAAAyB,CAAA,SAAAA,CAAA,oBAAAA,CAAA,KAAAhD,CAAA,GAAAkC,CAAA,CAAAqmB,MAAA,KAAAvoB,CAAA,CAAAM,IAAA,CAAA4B,CAAA,GAAAc,CAAA,SAAA0D,CAAA,GAAA4hB,SAAA,uCAAArjB,CAAA,gBAAAjC,CAAA,OAAAd,CAAA,GAAAG,CAAA,cAAArC,CAAA,IAAAooB,CAAA,GAAAC,CAAA,CAAAvmB,CAAA,QAAA4E,CAAA,GAAAzD,CAAA,CAAA3C,IAAA,CAAAwB,CAAA,EAAAumB,CAAA,OAAAzb,CAAA,kBAAA5M,CAAA,IAAAkC,CAAA,GAAAG,CAAA,EAAAW,CAAA,MAAA0D,CAAA,GAAA1G,CAAA,cAAAU,CAAA,mBAAAa,KAAA,EAAAvB,CAAA,EAAAwL,IAAA,EAAA4c,CAAA,SAAAnlB,CAAA,EAAAgC,CAAA,EAAA/C,CAAA,QAAAwE,CAAA,QAAAkG,CAAA,gBAAAsb,UAAA,cAAAM,kBAAA,cAAAC,2BAAA,KAAAzoB,CAAA,GAAAgB,MAAA,CAAA0nB,cAAA,MAAA1lB,CAAA,MAAAlB,CAAA,IAAA9B,CAAA,CAAAA,CAAA,IAAA8B,CAAA,SAAAqmB,mBAAA,CAAAnoB,CAAA,OAAA8B,CAAA,iCAAA9B,CAAA,GAAA0G,CAAA,GAAA+hB,0BAAA,CAAA1nB,SAAA,GAAAmnB,SAAA,CAAAnnB,SAAA,GAAAC,MAAA,CAAAoO,MAAA,CAAApM,CAAA,YAAAtC,EAAA2B,CAAA,WAAArB,MAAA,CAAAkM,cAAA,GAAAlM,MAAA,CAAAkM,cAAA,CAAA7K,CAAA,EAAAomB,0BAAA,KAAApmB,CAAA,CAAAsmB,SAAA,GAAAF,0BAAA,EAAAN,mBAAA,CAAA9lB,CAAA,EAAA4C,CAAA,yBAAA5C,CAAA,CAAAtB,SAAA,GAAAC,MAAA,CAAAoO,MAAA,CAAA1I,CAAA,GAAArE,CAAA,WAAAmmB,iBAAA,CAAAznB,SAAA,GAAA0nB,0BAAA,EAAAN,mBAAA,CAAAzhB,CAAA,iBAAA+hB,0BAAA,GAAAN,mBAAA,CAAAM,0BAAA,iBAAAD,iBAAA,GAAAA,iBAAA,CAAAI,WAAA,wBAAAT,mBAAA,CAAAM,0BAAA,EAAAxjB,CAAA,wBAAAkjB,mBAAA,CAAAzhB,CAAA,GAAAyhB,mBAAA,CAAAzhB,CAAA,EAAAzB,CAAA,gBAAAkjB,mBAAA,CAAAzhB,CAAA,EAAA5E,CAAA,iCAAAqmB,mBAAA,CAAAzhB,CAAA,8DAAAmiB,YAAA,YAAAA,aAAA,aAAAC,CAAA,EAAA5mB,CAAA,EAAAgD,CAAA,EAAAxE,CAAA;AAAA,SAAAynB,oBAAA9lB,CAAA,EAAAY,CAAA,EAAAnB,CAAA,EAAA9B,CAAA,QAAAkC,CAAA,GAAAlB,MAAA,CAAA+nB,cAAA,QAAA7mB,CAAA,uBAAAG,CAAA,IAAAH,CAAA,QAAAimB,mBAAA,YAAAa,mBAAA3mB,CAAA,EAAAY,CAAA,EAAAnB,CAAA,EAAA9B,CAAA,aAAAiF,EAAAhC,CAAA,EAAAnB,CAAA,IAAAqmB,mBAAA,CAAA9lB,CAAA,EAAAY,CAAA,YAAAZ,CAAA,gBAAA4mB,OAAA,CAAAhmB,CAAA,EAAAnB,CAAA,EAAAO,CAAA,SAAAY,CAAA,GAAAf,CAAA,GAAAA,CAAA,CAAAG,CAAA,EAAAY,CAAA,IAAA1B,KAAA,EAAAO,CAAA,EAAAonB,UAAA,GAAAlpB,CAAA,EAAAmpB,YAAA,GAAAnpB,CAAA,EAAAopB,QAAA,GAAAppB,CAAA,MAAAqC,CAAA,CAAAY,CAAA,IAAAnB,CAAA,IAAAmD,CAAA,aAAAA,CAAA,cAAAA,CAAA,mBAAAkjB,mBAAA,CAAA9lB,CAAA,EAAAY,CAAA,EAAAnB,CAAA,EAAA9B,CAAA;AAAA,SAAAqpB,mBAAAvnB,CAAA,EAAA9B,CAAA,EAAAqC,CAAA,EAAAY,CAAA,EAAAgC,CAAA,EAAA2H,CAAA,EAAA5J,CAAA,cAAAd,CAAA,GAAAJ,CAAA,CAAA8K,CAAA,EAAA5J,CAAA,GAAA0D,CAAA,GAAAxE,CAAA,CAAAX,KAAA,WAAAO,CAAA,gBAAAO,CAAA,CAAAP,CAAA,KAAAI,CAAA,CAAAsJ,IAAA,GAAAxL,CAAA,CAAA0G,CAAA,IAAA4iB,OAAA,CAAAC,OAAA,CAAA7iB,CAAA,EAAAlE,IAAA,CAAAS,CAAA,EAAAgC,CAAA;AAAA,SAAAukB,kBAAA1nB,CAAA,6BAAA9B,CAAA,SAAAqC,CAAA,GAAAgN,SAAA,aAAAia,OAAA,WAAArmB,CAAA,EAAAgC,CAAA,QAAA2H,CAAA,GAAA9K,CAAA,CAAAqY,KAAA,CAAAna,CAAA,EAAAqC,CAAA,YAAAonB,MAAA3nB,CAAA,IAAAunB,kBAAA,CAAAzc,CAAA,EAAA3J,CAAA,EAAAgC,CAAA,EAAAwkB,KAAA,EAAAC,MAAA,UAAA5nB,CAAA,cAAA4nB,OAAA5nB,CAAA,IAAAunB,kBAAA,CAAAzc,CAAA,EAAA3J,CAAA,EAAAgC,CAAA,EAAAwkB,KAAA,EAAAC,MAAA,WAAA5nB,CAAA,KAAA2nB,KAAA;AAAA,SAAAvX,kBAAAA,CAAAtF,CAAA,EAAA9K,CAAA,UAAA8K,CAAA,YAAA9K,CAAA,aAAAwmB,SAAA;AAAA,SAAAqB,oBAAAA,CAAAtnB,CAAA,EAAAY,CAAA,aAAAjD,CAAA,MAAAA,CAAA,GAAAiD,CAAA,CAAAqC,MAAA,EAAAtF,CAAA,UAAAiF,CAAA,GAAAhC,CAAA,CAAAjD,CAAA,GAAAiF,CAAA,CAAAikB,UAAA,GAAAjkB,CAAA,CAAAikB,UAAA,QAAAjkB,CAAA,CAAAkkB,YAAA,kBAAAlkB,CAAA,KAAAA,CAAA,CAAAmkB,QAAA,QAAApoB,MAAA,CAAA+nB,cAAA,CAAA1mB,CAAA,EAAAunB,iBAAA,CAAA3kB,CAAA,CAAAP,GAAA,GAAAO,CAAA;AAAA,SAAAyN,eAAAA,CAAArQ,CAAA,EAAAY,CAAA,EAAAjD,CAAA,WAAAiD,CAAA,IAAA0mB,oBAAA,CAAAtnB,CAAA,CAAAtB,SAAA,EAAAkC,CAAA,GAAAjD,CAAA,IAAA2pB,oBAAA,CAAAtnB,CAAA,EAAArC,CAAA,GAAAgB,MAAA,CAAA+nB,cAAA,CAAA1mB,CAAA,iBAAA+mB,QAAA,SAAA/mB,CAAA;AAAA,SAAAunB,iBAAAA,CAAA5pB,CAAA,QAAAkC,CAAA,GAAA2nB,eAAA,CAAA7pB,CAAA,gCAAAG,UAAA,CAAA+B,CAAA,IAAAA,CAAA,GAAAA,CAAA;AAAA,SAAA2nB,eAAAA,CAAA7pB,CAAA,EAAAiD,CAAA,oBAAA9C,UAAA,CAAAH,CAAA,MAAAA,CAAA,SAAAA,CAAA,MAAAqC,CAAA,GAAArC,CAAA,CAAAqa,MAAA,CAAAyP,WAAA,kBAAAznB,CAAA,QAAAH,CAAA,GAAAG,CAAA,CAAA/B,IAAA,CAAAN,CAAA,EAAAiD,CAAA,gCAAA9C,UAAA,CAAA+B,CAAA,UAAAA,CAAA,YAAAomB,SAAA,yEAAArlB,CAAA,GAAArB,MAAA,GAAAG,MAAA,EAAA/B,CAAA;AAD2C;AACK;AAEhD,IAAMgqB,cAAc,GAAG;EACrBnjB,QAAQ,EAAE,iBAAiB;EAC3BT,IAAI,EAAE,cAAc;EACpBpC,MAAM,EAAE,IAAI;EACZ+X,OAAO,EAAE,GAAG;EACZpV,QAAQ,EAAE,QAAQ;EAClBC,IAAI,EAAE;AACR,CAAC;AAED,IAAMqjB,kBAAkB,GAAG;EACzBpjB,QAAQ,EAAE,iBAAiB;EAC3BT,IAAI,EAAE,iBAAiB;EACvBpC,MAAM,EAAE,IAAI;EACZ+X,OAAO,EAAE,GAAG;EACZpV,QAAQ,EAAE,QAAQ;EAClBC,IAAI,EAAE;AACR,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AANA,IAOMsjB,GAAG;EACP;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAAAA,IAAYtkB,OAAO,EAAEohB,SAAS,EAAEmD,MAAM,EAAEC,UAAU,EAAE;IAAAlY,kBAAA,OAAAgY,GAAA;IAClD,IAAI,CAACtkB,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACohB,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACpjB,GAAG,GAAGumB,MAAM;IACjB,IAAI,CAACC,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACzkB,WAAW,GAAGC,OAAO,CAACD,WAAW;IACtC,IAAI,CAAC8hB,gBAAgB,GAAG4C,aAAa,CAACzkB,OAAO,EAAEukB,MAAM,CAAC;IACtD,IAAI,CAACG,oBAAoB,GAAGC,iBAAiB,CAAC3kB,OAAO,EAAEukB,MAAM,CAAC;EAChE;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EATE,OAAAzX,eAAA,CAAAwX,GAAA;IAAAxlB,GAAA;IAAAnD,KAAA,EAUA,SAAAipB,YAAYA,CAAAlX,IAAA,EAA6C;MAAA,IAAAkI,KAAA;MAAA,IAA1C7V,WAAW,GAAA2N,IAAA,CAAX3N,WAAW;QAAEC,OAAO,GAAA0N,IAAA,CAAP1N,OAAO;QAAEyI,OAAO,GAAAiF,IAAA,CAAPjF,OAAO;QAAEkH,OAAO,GAAAjC,IAAA,CAAPiC,OAAO;MACnD,OAAO,IAAI+T,OAAO,CAAC,UAACC,OAAO,EAAEkB,MAAM,EAAK;QACtCjP,KAAI,CAACwL,SAAS,CAACxK,IAAI,CAAC;UAClB7W,WAAW,EAAXA,WAAW;UACXC,OAAO,EAAPA,OAAO;UACPyI,OAAO,EAAPA,OAAO;UACPkH,OAAO,EAAPA,OAAO;UACPvL,QAAQ,EAAE,SAAVA,QAAQA,CAAGd,GAAG,EAAEC,IAAI;YAAA,OAAMD,GAAG,GAAGuhB,MAAM,CAACvhB,GAAG,CAAC,GAAGqgB,OAAO,CAACpgB,IAAI,CAAC;UAAA;QAC7D,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAzE,GAAA;IAAAnD,KAAA,EAKA,SAAAmpB,QAAQA,CAAC9f,IAAI,EAAEZ,QAAQ,EAAE;MAAA,IAAA0S,MAAA;MACvB,IAAM9W,OAAO,GAAGmkB,2BAAwB,CAAC,IAAI,CAACtC,gBAAgB,EAAE,MAAM,CAAC;MACvE,IAAMpZ,OAAO,GAAG0b,YAAoB,CAACnf,IAAI,CAAC;;MAE1C;MACA+f,UAAU,CAAC,YAAM;QACfjO,MAAI,CAACsK,SAAS,CAACxK,IAAI,CAAC;UAClB7W,WAAW,EAAE+W,MAAI,CAAC/W,WAAW;UAC7BC,OAAO,EAAPA,OAAO;UACPyI,OAAO,EAAPA,OAAO;UACPrE,QAAQ,EAARA;QACF,CAAC,CAAC;MACJ,CAAC,EAAE,CAAC,CAAC;IACP;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAtF,GAAA;IAAAnD,KAAA;MAAA,IAAAqpB,UAAA,GAAApB,iBAAA,cAAAX,YAAA,GAAA3jB,CAAA,CAMA,SAAA2lB,QAAgBxc,OAAO;QAAA,IAAAkH,OAAA;UAAA3P,OAAA;UAAAklB,KAAA,GAAAzb,SAAA;QAAA,OAAAwZ,YAAA,GAAAC,CAAA,WAAAiC,QAAA;UAAA,kBAAAA,QAAA,CAAAjpB,CAAA;YAAA;cAAEyT,OAAO,GAAAuV,KAAA,CAAAxlB,MAAA,QAAAwlB,KAAA,QAAA9lB,SAAA,GAAA8lB,KAAA,MAAG,CAAC,CAAC;cAC7BllB,OAAO,GAAGmkB,2BAAwB,CAAC,IAAI,CAACO,oBAAoB,EAAE,MAAM,CAAC;cAAA,OAAAS,QAAA,CAAAne,CAAA,IAEpE,IAAI,CAAC4d,YAAY,CAAC;gBACvB7kB,WAAW,EAAE,IAAI,CAACA,WAAW;gBAC7BC,OAAO,EAAPA,OAAO;gBACPyI,OAAO,EAAPA,OAAO;gBACPkH,OAAO,EAAPA;cACF,CAAC,CAAC;UAAA;QAAA,GAAAsV,OAAA;MAAA,CACH;MAAA,SATKpO,SAASA,CAAAuO,EAAA;QAAA,OAAAJ,UAAA,CAAAzQ,KAAA,OAAA9K,SAAA;MAAA;MAAA,OAAToN,SAAS;IAAA;IAWf;AACF;AACA;AACA;AACA;IAJE;EAAA;IAAA/X,GAAA;IAAAnD,KAAA,EAKA,SAAA0pB,gBAAgBA,CAACrgB,IAAI,EAAEZ,QAAQ,EAAE;MAC/B,IAAMqE,OAAO,GAAG0b,YAAoB,CAACnf,IAAI,CAAC;MAE1C,IAAIsgB,eAAe;MACnB,IAAI,IAAI,CAACd,UAAU,EAAE;QACnBc,eAAe,GAAG,IAAI,CAACd,UAAU,CAAC7D,QAAQ,CAAClY,OAAO,CAAC;MACrD,CAAC,MAAM;QACL6c,eAAe,GAAGnkB,SAAS,CAACsH,OAAO,CAAC;MACtC;MAEA,IAAI6c,eAAe,CAACznB,KAAK,EAAE;QACzB,IAAIuG,QAAQ,EAAE;UACZA,QAAQ,CAACkhB,eAAe,CAACznB,KAAK,CAAC;QACjC;QACA,OAAO,IAAI;MACb;MAEA,OAAOynB,eAAe,CAAC3pB,KAAK;IAC9B;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAmD,GAAA;IAAAnD,KAAA,EAKA,SAAA4pB,eAAeA,CAACC,WAAW,EAAEphB,QAAQ,EAAE;MACrC,IAAMyd,gBAAgB,GAAGsC,2BAAwB,CAC/C,IAAI,CAACtC,gBAAgB,EACrB,MACF,CAAC;MACD,IAAI,CAACT,SAAS,CAACmE,eAAe,CAC5B,IAAI,CAACxlB,WAAW,EAChB8hB,gBAAgB,EAChB2D,WAAW,EACXphB,QACF,CAAC;IACH;EAAC;IAAAtF,GAAA;IAAAnD,KAAA,EAED,SAAAoR,SAASA,CAAC/M,OAAO,EAAE;MACjB,IAAMgN,UAAU,GAAG,IAAI,CAAChN,OAAO;MAC/B,IAAI,CAACA,OAAO,GAAG6F,KAAK,CAACmH,UAAU,EAAEhN,OAAO,CAAC;MACzC,IAAI,CAAC6hB,gBAAgB,GAAG4C,aAAa,CAAC,IAAI,CAACzkB,OAAO,EAAE,IAAI,CAAChC,GAAG,CAAC;MAC7D,IAAI,CAAC0mB,oBAAoB,GAAGC,iBAAiB,CAAC,IAAI,CAAC3kB,OAAO,EAAE,IAAI,CAAChC,GAAG,CAAC;MACrE,IAAI,IAAI,CAACgC,OAAO,CAACD,WAAW,KAAKX,SAAS,EAAE;QAC1C,IAAI,CAACW,WAAW,GAAG,IAAI,CAACC,OAAO,CAACD,WAAW;MAC7C;MACA,OAAO,IAAI;IACb;EAAC;AAAA;AAGH,SAAS0kB,aAAaA,CAACzkB,OAAO,EAAEhC,GAAG,EAAE;EACnC,OAAOmmB,uBAA+B,CAACnkB,OAAO,EAAEokB,cAAc,EAAEpmB,GAAG,CAAC;AACtE;AAEA,SAAS2mB,iBAAiBA,CAAC3kB,OAAO,EAAEhC,GAAG,EAAE;EAAA,IAAAynB,gBAAA;EACvCzlB,OAAO,GAAA6O,gBAAA,CAAAA,gBAAA,KAAQ7O,OAAO;IAAEuhB,QAAQ,GAAAkE,gBAAA,GAAEzlB,OAAO,CAACoM,OAAO,cAAAqZ,gBAAA,uBAAfA,gBAAA,CAAiBlE;EAAQ,EAAE;EAC7D,OAAO4C,uBAA+B,CAACnkB,OAAO,EAAEqkB,kBAAkB,EAAErmB,GAAG,CAAC;AAC1E;AAEA,4CAAesmB,GAAG,E;;AC7KlB;AACA;AACA;AACO,IAAMnO,OAAO,GAAG,OAAO;AACvB,IAAMoL,QAAQ,GAAG,6BAA6B;AAC9C,IAAM1F,QAAQ,GAAG,OAAO;AACxB,IAAM6J,WAAW,GAAG,OAAO;AAC3B,IAAMC,kBAAkB,GAAG,OAAO;AAClC,IAAMC,QAAQ,GAAG,CAAC;AAClB,IAAMC,WAAW,GAAG,EAAE;AAEtB,IAAMC,iBAAiB,GAAG,CAC/B,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,YAAY,EACZ,WAAW,EACX,aAAa,CACd;AAEM,IAAMC,cAAc,GAAG,iDAC5B,SAAS,EACT,oBAAoB,EACpB,aAAa,EACb,OAAO,EACP,qBAAqB,CACtB;AAEM,IAAMC,kBAAkB,GAAG,iDAChC,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,CAClB;AAEM,IAAMC,kBAAkB,GAAG,iDAChC,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,QAAQ,EACR,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,cAAc,CACf;;AAED;AACA,6CAAe;EACb9P,OAAO,EAAPA,OAAO;EACPoL,QAAQ,EAARA,QAAQ;EACR1F,QAAQ,EAARA,QAAQ;EACR6J,WAAW,EAAXA,WAAW;EACXC,kBAAkB,EAAlBA,kBAAkB;EAClBC,QAAQ,EAARA,QAAQ;EACRC,WAAW,EAAXA;AACF,CAAC,E;;ACnED,IAAMK,2BAA2B,GAAG,cAAc;AAClD,IAAMC,sBAAsB,GAAG,gCAAgC;AAC/D,IAAMC,yBAAyB,GAAG,8BAA8B;AAChE,SAASrkB,KAAKA,CAAClE,KAAK,EAAEmC,OAAO,EAAE;EAC7B,IAAI,OAAOnC,KAAK,CAACwoB,UAAU,KAAK,WAAW,IAAI,OAAOxoB,KAAK,CAAC,iBAAiB,CAAC,KAAK,WAAW,EAC5F,OAAOyoB,UAAU,CAACzoB,KAAK,EAAEmC,OAAO,CAAC,CAAC,KAC/B,IAAInC,KAAK,CAACsF,KAAK,IAAItF,KAAK,CAACsF,KAAK,CAACxI,KAAK,CAACwrB,sBAAsB,CAAC,EAC/D,OAAOI,WAAW,CAAC1oB,KAAK,EAAEmC,OAAO,CAAC,CAAC,KAChC,IAAInC,KAAK,CAACsF,KAAK,EAClB,OAAOqjB,eAAe,CAAC3oB,KAAK,EAAEmC,OAAO,CAAC,CAAC,KACpC,IAAIA,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEymB,UAAU,EAC1B,OAAO,EAAE,CAAC,KAEV,MAAM,IAAIjsB,KAAK,CAAC,iCAAiC,CAAC;AACtD;AACA,SAASksB,UAAUA,CAACC,WAAW,EAAE3mB,OAAO,EAAE;EACxC,IAAI2mB,WAAW,CAAChsB,KAAK,CAACwrB,sBAAsB,CAAC,EAC3C,OAAOS,iBAAiB,CAACD,WAAW,EAAE3mB,OAAO,CAAC,CAAC,KAE/C,OAAO6mB,qBAAqB,CAACF,WAAW,EAAE3mB,OAAO,CAAC;AACtD;AACA,SAAS8mB,eAAeA,CAACC,OAAO,EAAE;EAChC,IAAI,CAACA,OAAO,CAACnjB,QAAQ,CAAC,GAAG,CAAC,EACxB,OAAO,CAACmjB,OAAO,EAAE3nB,SAAS,EAAEA,SAAS,CAAC;EACxC,IAAM4nB,MAAM,GAAG,8BAA8B;EAC7C,IAAMhf,KAAK,GAAGgf,MAAM,CAACznB,IAAI,CAACwnB,OAAO,CAACzrB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;EACvD,OAAO,CAAC0M,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,IAAI5I,SAAS,EAAE4I,KAAK,CAAC,CAAC,CAAC,IAAI5I,SAAS,CAAC;AACjE;AACA,SAAS6nB,UAAUA,CAACC,KAAK,EAAElnB,OAAO,EAAE;EAClC,IAAIA,OAAO,IAAIA,OAAO,CAAC6D,KAAK,IAAI,IAAI,EAAE;IACpC,IAAIyJ,KAAK,CAACzD,OAAO,CAAC7J,OAAO,CAAC6D,KAAK,CAAC,EAC9B,OAAOqjB,KAAK,CAACrjB,KAAK,CAAC7D,OAAO,CAAC6D,KAAK,CAAC,CAAC,CAAC,EAAE7D,OAAO,CAAC6D,KAAK,CAAC,CAAC,CAAC,CAAC;IACxD,OAAOqjB,KAAK,CAACrjB,KAAK,CAAC,CAAC,EAAE7D,OAAO,CAAC6D,KAAK,CAAC;EACtC;EACA,OAAOqjB,KAAK;AACd;AACA,SAASX,WAAWA,CAAC1oB,KAAK,EAAEmC,OAAO,EAAE;EACnC,OAAO4mB,iBAAiB,CAAC/oB,KAAK,CAACsF,KAAK,EAAEnD,OAAO,CAAC;AAChD;AACA,SAAS4mB,iBAAiBA,CAACzjB,KAAK,EAAEnD,OAAO,EAAE;EACzC,IAAMmnB,QAAQ,GAAGF,UAAU,CACzB9jB,KAAK,CAACgE,KAAK,CAAC,IAAI,CAAC,CAACqG,MAAM,CAAC,UAAChL,IAAI,EAAK;IACjC,OAAO,CAAC,CAACA,IAAI,CAAC7H,KAAK,CAACwrB,sBAAsB,CAAC;EAC7C,CAAC,CAAC,EACFnmB,OACF,CAAC;EACD,OAAOmnB,QAAQ,CAAC1Z,GAAG,CAAC,UAACjL,IAAI,EAAK;IAC5B,IAAIA,IAAI,CAACoB,QAAQ,CAAC,QAAQ,CAAC,EAAE;MAC3BpB,IAAI,GAAGA,IAAI,CAAClH,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAACA,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC;IACrF;IACA,IAAI8rB,aAAa,GAAG5kB,IAAI,CAAClH,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAACA,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;IAChG,IAAMiH,QAAQ,GAAG6kB,aAAa,CAACzsB,KAAK,CAAC,YAAY,CAAC;IAClDysB,aAAa,GAAG7kB,QAAQ,GAAG6kB,aAAa,CAAC9rB,OAAO,CAACiH,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG6kB,aAAa;IACjF,IAAMC,aAAa,GAAGP,eAAe,CAACvkB,QAAQ,GAAGA,QAAQ,CAAC,CAAC,CAAC,GAAG6kB,aAAa,CAAC;IAC7E,IAAME,YAAY,GAAG/kB,QAAQ,IAAI6kB,aAAa,IAAIhoB,SAAS;IAC3D,IAAMmoB,QAAQ,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC3jB,QAAQ,CAACyjB,aAAa,CAAC,CAAC,CAAC,CAAC,GAAGjoB,SAAS,GAAGioB,aAAa,CAAC,CAAC,CAAC;IAClG,OAAO;MACLG,QAAQ,EAAEF,YAAY;MACtBG,IAAI,EAAEF,QAAQ;MACd/kB,IAAI,EAAE6kB,aAAa,CAAC,CAAC,CAAC,GAAG,CAACA,aAAa,CAAC,CAAC,CAAC,GAAGjoB,SAAS;MACtDsoB,GAAG,EAAEL,aAAa,CAAC,CAAC,CAAC,GAAG,CAACA,aAAa,CAAC,CAAC,CAAC,GAAGjoB,SAAS;MACrDmgB,GAAG,EAAE/c;IACP,CAAC;EACH,CAAC,CAAC;AACJ;AACA,SAASgkB,eAAeA,CAAC3oB,KAAK,EAAEmC,OAAO,EAAE;EACvC,OAAO6mB,qBAAqB,CAAChpB,KAAK,CAACsF,KAAK,EAAEnD,OAAO,CAAC;AACpD;AACA,SAAS6mB,qBAAqBA,CAAC1jB,KAAK,EAAEnD,OAAO,EAAE;EAC7C,IAAMmnB,QAAQ,GAAGF,UAAU,CACzB9jB,KAAK,CAACgE,KAAK,CAAC,IAAI,CAAC,CAACqG,MAAM,CAAC,UAAChL,IAAI,EAAK;IACjC,OAAO,CAACA,IAAI,CAAC7H,KAAK,CAACyrB,yBAAyB,CAAC;EAC/C,CAAC,CAAC,EACFpmB,OACF,CAAC;EACD,OAAOmnB,QAAQ,CAAC1Z,GAAG,CAAC,UAACjL,IAAI,EAAK;IAC5B,IAAIA,IAAI,CAACoB,QAAQ,CAAC,SAAS,CAAC,EAC1BpB,IAAI,GAAGA,IAAI,CAAClH,OAAO,CAAC,kDAAkD,EAAE,KAAK,CAAC;IAChF,IAAI,CAACkH,IAAI,CAACoB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAACpB,IAAI,CAACoB,QAAQ,CAAC,GAAG,CAAC,EAAE;MAC9C,OAAO;QACL4jB,QAAQ,EAAEhlB;MACZ,CAAC;IACH,CAAC,MAAM;MACL,IAAMmlB,iBAAiB,GAAG,4JAA4J;MACtL,IAAMC,OAAO,GAAGplB,IAAI,CAAC7H,KAAK,CAACgtB,iBAAiB,CAAC;MAC7C,IAAML,YAAY,GAAGM,OAAO,IAAIA,OAAO,CAAC,CAAC,CAAC,GAAGA,OAAO,CAAC,CAAC,CAAC,GAAGxoB,SAAS;MACnE,IAAMioB,aAAa,GAAGP,eAAe,CAACtkB,IAAI,CAAClH,OAAO,CAACqsB,iBAAiB,EAAE,EAAE,CAAC,CAAC;MAC1E,OAAO;QACLH,QAAQ,EAAEF,YAAY;QACtBG,IAAI,EAAEJ,aAAa,CAAC,CAAC,CAAC;QACtB7kB,IAAI,EAAE6kB,aAAa,CAAC,CAAC,CAAC,GAAG,CAACA,aAAa,CAAC,CAAC,CAAC,GAAGjoB,SAAS;QACtDsoB,GAAG,EAAEL,aAAa,CAAC,CAAC,CAAC,GAAG,CAACA,aAAa,CAAC,CAAC,CAAC,GAAGjoB,SAAS;QACrDmgB,GAAG,EAAE/c;MACP,CAAC;IACH;EACF,CAAC,CAAC;AACJ;AACA,SAAS8jB,UAAUA,CAAC7pB,CAAC,EAAEuD,OAAO,EAAE;EAC9B,IAAI,CAACvD,CAAC,CAAC4pB,UAAU,IAAI5pB,CAAC,CAACwF,OAAO,CAAC2B,QAAQ,CAAC,IAAI,CAAC,IAAInH,CAAC,CAACwF,OAAO,CAACkF,KAAK,CAAC,IAAI,CAAC,CAACzH,MAAM,GAAGjD,CAAC,CAAC4pB,UAAU,CAAClf,KAAK,CAAC,IAAI,CAAC,CAACzH,MAAM,EAC7G,OAAOmoB,WAAW,CAACprB,CAAC,CAAC,CAAC,KACnB,IAAI,CAACA,CAAC,CAAC0G,KAAK,EACf,OAAO2kB,YAAY,CAACrrB,CAAC,CAAC,CAAC,KAEvB,OAAOsrB,YAAY,CAACtrB,CAAC,EAAEuD,OAAO,CAAC;AACnC;AACA,SAAS6nB,WAAWA,CAACprB,CAAC,EAAEuD,OAAO,EAAE;EAC/B,IAAMgoB,MAAM,GAAG,mCAAmC;EAClD,IAAMd,KAAK,GAAGzqB,CAAC,CAACwF,OAAO,CAACkF,KAAK,CAAC,IAAI,CAAC;EACnC,IAAMjG,MAAM,GAAG,EAAE;EACjB,KAAK,IAAI5E,CAAC,GAAG,CAAC,EAAEuI,GAAG,GAAGqiB,KAAK,CAACxnB,MAAM,EAAEpD,CAAC,GAAGuI,GAAG,EAAEvI,CAAC,IAAI,CAAC,EAAE;IACnD,IAAM3B,KAAK,GAAGqtB,MAAM,CAACzoB,IAAI,CAAC2nB,KAAK,CAAC5qB,CAAC,CAAC,CAAC;IACnC,IAAI3B,KAAK,EAAE;MACTuG,MAAM,CAACb,IAAI,CAAC;QACVonB,IAAI,EAAE9sB,KAAK,CAAC,CAAC,CAAC;QACd6H,IAAI,EAAE,CAAC7H,KAAK,CAAC,CAAC,CAAC;QACf4kB,GAAG,EAAE2H,KAAK,CAAC5qB,CAAC;MACd,CAAC,CAAC;IACJ;EACF;EACA,OAAO2qB,UAAU,CAAC/lB,MAAM,EAAElB,OAAO,CAAC;AACpC;AACA,SAAS8nB,YAAYA,CAACrrB,CAAC,EAAEuD,OAAO,EAAE;EAChC,IAAMgoB,MAAM,GAAG,4DAA4D;EAC3E,IAAMd,KAAK,GAAGzqB,CAAC,CAAC4pB,UAAU,CAAClf,KAAK,CAAC,IAAI,CAAC;EACtC,IAAMjG,MAAM,GAAG,EAAE;EACjB,KAAK,IAAI5E,CAAC,GAAG,CAAC,EAAEuI,GAAG,GAAGqiB,KAAK,CAACxnB,MAAM,EAAEpD,CAAC,GAAGuI,GAAG,EAAEvI,CAAC,IAAI,CAAC,EAAE;IACnD,IAAM3B,KAAK,GAAGqtB,MAAM,CAACzoB,IAAI,CAAC2nB,KAAK,CAAC5qB,CAAC,CAAC,CAAC;IACnC,IAAI3B,KAAK,EAAE;MACTuG,MAAM,CAACb,IAAI,CAAC;QACVmnB,QAAQ,EAAE7sB,KAAK,CAAC,CAAC,CAAC,IAAIyE,SAAS;QAC/BqoB,IAAI,EAAE9sB,KAAK,CAAC,CAAC,CAAC;QACd6H,IAAI,EAAE7H,KAAK,CAAC,CAAC,CAAC,GAAG,CAACA,KAAK,CAAC,CAAC,CAAC,GAAGyE,SAAS;QACtCmgB,GAAG,EAAE2H,KAAK,CAAC5qB,CAAC;MACd,CAAC,CAAC;IACJ;EACF;EACA,OAAO2qB,UAAU,CAAC/lB,MAAM,EAAElB,OAAO,CAAC;AACpC;AACA,SAAS+nB,YAAYA,CAAClqB,KAAK,EAAEmC,OAAO,EAAE;EACpC,IAAMmnB,QAAQ,GAAGF,UAAU;EACzB;EACAppB,KAAK,CAACsF,KAAK,CAACgE,KAAK,CAAC,IAAI,CAAC,CAACqG,MAAM,CAAC,UAAChL,IAAI,EAAK;IACvC,OAAO,CAAC,CAACA,IAAI,CAAC7H,KAAK,CAACurB,2BAA2B,CAAC,IAAI,CAAC1jB,IAAI,CAAC7H,KAAK,CAAC,mBAAmB,CAAC;EACtF,CAAC,CAAC,EACFqF,OACF,CAAC;EACD,OAAOmnB,QAAQ,CAAC1Z,GAAG,CAAC,UAACjL,IAAI,EAAK;IAC5B,IAAMylB,MAAM,GAAGzlB,IAAI,CAAC2E,KAAK,CAAC,GAAG,CAAC;IAC9B,IAAMkgB,aAAa,GAAGP,eAAe,CAACmB,MAAM,CAAChgB,GAAG,CAAC,CAAC,CAAC;IACnD,IAAMigB,YAAY,GAAGD,MAAM,CAAClV,KAAK,CAAC,CAAC,IAAI,EAAE;IACzC,IAAMuU,YAAY,GAAGY,YAAY,CAAC5sB,OAAO,CAAC,gCAAgC,EAAE,IAAI,CAAC,CAACA,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI8D,SAAS;IACxH,IAAI+oB,OAAO;IACX,IAAID,YAAY,CAACvtB,KAAK,CAAC,aAAa,CAAC,EACnCwtB,OAAO,GAAGD,YAAY,CAAC5sB,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC;IAC5D,IAAMyI,IAAI,GAAGokB,OAAO,KAAK/oB,SAAS,IAAI+oB,OAAO,KAAK,2BAA2B,GAAG/oB,SAAS,GAAG+oB,OAAO,CAAChhB,KAAK,CAAC,GAAG,CAAC;IAC9G,OAAO;MACLqgB,QAAQ,EAAEF,YAAY;MACtBvjB,IAAI,EAAJA,IAAI;MACJ0jB,IAAI,EAAEJ,aAAa,CAAC,CAAC,CAAC;MACtB7kB,IAAI,EAAE6kB,aAAa,CAAC,CAAC,CAAC,GAAG,CAACA,aAAa,CAAC,CAAC,CAAC,GAAGjoB,SAAS;MACtDsoB,GAAG,EAAEL,aAAa,CAAC,CAAC,CAAC,GAAG,CAACA,aAAa,CAAC,CAAC,CAAC,GAAGjoB,SAAS;MACrDmgB,GAAG,EAAE/c;IACP,CAAC;EACH,CAAC,CAAC;AACJ;;;;;;;;;ACpK4O;AAC/L;AAE7C,SAASmmB,4BAA4BA,CAACC,eAAe,EAAE;EACrD,OAAOA,eAAe,CAACnb,GAAG,CAAC,UAACob,cAAc,EAAK;IAC7C,OAAO;MACLvB,YAAY,EAAEuB,cAAc,CAACrB,QAAQ;MACrCzjB,IAAI,EAAE8kB,cAAc,CAAC9kB,IAAI;MACzBwjB,QAAQ,EAAEsB,cAAc,CAACpB,IAAI;MAC7BqB,UAAU,EAAED,cAAc,CAACrmB,IAAI;MAC/BumB,YAAY,EAAEF,cAAc,CAACnB,GAAG;MAChChpB,MAAM,EAAEmqB,cAAc,CAACtJ;IACzB,CAAC;EACH,CAAC,CAAC;AACJ;AACA,SAASxd,UAAKA,CAAClE,KAAK,EAAEmC,OAAO,EAAE;EAC7B,OAAO2oB,4BAA4B,CAACP,KAAO,CAACvqB,KAAK,EAAEmC,OAAO,CAAC,CAAC;AAC9D;AACA,SAASumB,gBAAWA,CAAC1oB,KAAK,EAAE;EAC1B,OAAO8qB,4BAA4B,CAACN,aAAa,CAACxqB,KAAK,CAAC,CAAC;AAC3D;AACA,SAAS2oB,oBAAeA,CAAC3oB,KAAK,EAAE;EAC9B,OAAO8qB,4BAA4B,CAACL,iBAAiB,CAACzqB,KAAK,CAAC,CAAC;AAC/D;AACA,SAASyoB,eAAUA,CAAC7pB,CAAC,EAAE;EACrB,OAAOksB,4BAA4B,CAACJ,YAAY,CAAC9rB,CAAC,CAAC,CAAC;AACtD;AACA,SAASorB,gBAAWA,CAACprB,CAAC,EAAE;EACtB,OAAOksB,4BAA4B,CAACH,aAAa,CAAC/rB,CAAC,CAAC,CAAC;AACvD;AACA,SAASqrB,iBAAYA,CAACrrB,CAAC,EAAE;EACvB,OAAOksB,4BAA4B,CAACF,cAAc,CAAChsB,CAAC,CAAC,CAAC;AACxD;AACA,SAASsrB,iBAAYA,CAAClqB,KAAK,EAAE;EAC3B,OAAO8qB,4BAA4B,CAACD,cAAc,CAAC7qB,KAAK,CAAC,CAAC;AAC5D;;;ACnCiE;AAEjE,IAAIorB,gBAAgB,GAAG,GAAG;AAC1B,IAAIC,gBAAgB,GAAG,IAAI1tB,MAAM,CAC/B,2DACF,CAAC;AAED,SAASmH,iBAAiBA,CAAA,EAAG;EAC3B,OAAOsmB,gBAAgB;AACzB;AAEA,SAASpmB,aAAaA,CAAA,EAAG;EACvB,OAAO,IAAI;AACb;AAEA,SAASsmB,KAAKA,CAACC,UAAU,EAAE;EACzB,IAAIpkB,IAAI,GAAG,CAAC,CAAC;EAEbA,IAAI,CAACqkB,WAAW,GAAGD,UAAU;EAE7BpkB,IAAI,CAAChH,GAAG,GAAGorB,UAAU,CAAC7B,QAAQ;EAC9BviB,IAAI,CAACxC,IAAI,GAAG4mB,UAAU,CAACN,UAAU;EACjC9jB,IAAI,CAACtC,IAAI,GAAG0mB,UAAU,CAAC9B,YAAY;EACnCtiB,IAAI,CAACvC,MAAM,GAAG2mB,UAAU,CAACL,YAAY;EACrC/jB,IAAI,CAACjB,IAAI,GAAGqlB,UAAU,CAACrlB,IAAI;EAE3BiB,IAAI,CAACpC,OAAO,GAAGC,aAAa,CAAC,CAAC;EAE9B,OAAOmC,IAAI;AACb;AAEA,SAASskB,KAAKA,CAACjJ,SAAS,EAAEkJ,IAAI,EAAE;EAC9B,SAASC,QAAQA,CAAA,EAAG;IAClB,IAAIC,WAAW,GAAG,EAAE;IAEpBF,IAAI,GAAGA,IAAI,IAAI,CAAC;IAEhB,IAAI;MACFE,WAAW,GAAGT,UAAe,CAAC3I,SAAS,CAAC;IAC1C,CAAC,CAAC,OAAOjZ,EAAE,EAAE;MACXqiB,WAAW,GAAG,EAAE;IAClB;IAEA,IAAItmB,KAAK,GAAG,EAAE;IAEd,KAAK,IAAI7G,CAAC,GAAGitB,IAAI,EAAEjtB,CAAC,GAAGmtB,WAAW,CAAC/pB,MAAM,EAAEpD,CAAC,EAAE,EAAE;MAC9C6G,KAAK,CAAC9C,IAAI,CAAC,IAAI8oB,KAAK,CAACM,WAAW,CAACntB,CAAC,CAAC,CAAC,CAAC;IACvC;IAEA,OAAO6G,KAAK;EACd;EAEA,OAAO;IACLA,KAAK,EAAEqmB,QAAQ,CAAC,CAAC;IACjBvnB,OAAO,EAAEoe,SAAS,CAACpe,OAAO;IAC1B3H,IAAI,EAAEovB,sBAAsB,CAACrJ,SAAS,CAAC;IACvCsJ,QAAQ,EAAEtJ,SAAS,CAACld,KAAK;IACzBymB,YAAY,EAAEvJ;EAChB,CAAC;AACH;AAEA,SAASte,iBAAKA,CAACtF,CAAC,EAAE8sB,IAAI,EAAE;EACtB,IAAIjmB,GAAG,GAAG7G,CAAC;EAEX,IAAI6G,GAAG,CAACumB,MAAM,IAAIvmB,GAAG,CAACwmB,KAAK,EAAE;IAC3B,IAAIC,UAAU,GAAG,EAAE;IACnB,OAAOzmB,GAAG,EAAE;MACVymB,UAAU,CAAC1pB,IAAI,CAAC,IAAIipB,KAAK,CAAChmB,GAAG,EAAEimB,IAAI,CAAC,CAAC;MACrCjmB,GAAG,GAAGA,GAAG,CAACumB,MAAM,IAAIvmB,GAAG,CAACwmB,KAAK;MAE7BP,IAAI,GAAG,CAAC,CAAC,CAAC;IACZ;;IAEA;IACAQ,UAAU,CAAC,CAAC,CAAC,CAACA,UAAU,GAAGA,UAAU;IACrC,OAAOA,UAAU,CAAC,CAAC,CAAC;EACtB,CAAC,MAAM;IACL,OAAO,IAAIT,KAAK,CAAChmB,GAAG,EAAEimB,IAAI,CAAC;EAC7B;AACF;AAEA,SAASS,eAAeA,CAACC,MAAM,EAAE;EAC/B,IAAI,CAACA,MAAM,IAAI,CAACA,MAAM,CAACtvB,KAAK,EAAE;IAC5B,OAAO,CAAC,uDAAuD,EAAE,EAAE,CAAC;EACtE;EACA,IAAIuvB,aAAa,GAAGD,MAAM,CAACtvB,KAAK,CAACuuB,gBAAgB,CAAC;EAClD,IAAIiB,QAAQ,GAAG,WAAW;EAE1B,IAAID,aAAa,EAAE;IACjBC,QAAQ,GAAGD,aAAa,CAACA,aAAa,CAACxqB,MAAM,GAAG,CAAC,CAAC;IAClDuqB,MAAM,GAAGA,MAAM,CAAC3uB,OAAO,CACrB,CAAC4uB,aAAa,CAACA,aAAa,CAACxqB,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,IAAIyqB,QAAQ,GAAG,GAAG,EAChE,EACF,CAAC;IACDF,MAAM,GAAGA,MAAM,CAAC3uB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;EACjD;EACA,OAAO,CAAC6uB,QAAQ,EAAEF,MAAM,CAAC;AAC3B;;AAEA;AACA;AACA;AACA,SAASP,sBAAsBA,CAAC7rB,KAAK,EAAE;EACrC,IAAIvD,IAAI,GAAGuD,KAAK,CAACvD,IAAI,IAAIuD,KAAK,CAACvD,IAAI,CAACoF,MAAM,IAAI7B,KAAK,CAACvD,IAAI;EACxD,IAAI8vB,eAAe,GACjBvsB,KAAK,CAACwL,WAAW,CAAC/O,IAAI,IACtBuD,KAAK,CAACwL,WAAW,CAAC/O,IAAI,CAACoF,MAAM,IAC7B7B,KAAK,CAACwL,WAAW,CAAC/O,IAAI;EAExB,IAAI,CAACA,IAAI,IAAI,CAAC8vB,eAAe,EAAE;IAC7B,OAAO9vB,IAAI,IAAI8vB,eAAe;EAChC;EAEA,IAAI9vB,IAAI,KAAK,OAAO,EAAE;IACpB,OAAO8vB,eAAe;EACxB;EACA,OAAO9vB,IAAI;AACb;AAEA,gDAAe;EACbqI,iBAAiB,EAAjBA,iBAAiB;EACjBqnB,eAAe,EAAfA,eAAe;EACfnnB,aAAa,EAAbA,aAAa;EACbd,KAAK,EAALA,iBAAK;EACLunB,KAAK,EAALA,KAAK;EACLH,KAAK,EAALA;AACF,CAAC,E;;;;;AC9HiC;AAElC,SAASkB,UAAUA,CAACvlB,IAAI,EAAEwlB,QAAQ,EAAE;EAClC,IAAIllB,KAAK,GAAGN,IAAI,CAACM,KAAK;EACtB,IAAImlB,QAAQ,GAAGlsB,MAAQ,CAAC+G,KAAK,CAAC,IAAI,CAAC;EACnC,IAAIsgB,WAAW,GAAG4E,QAAQ,CAAC5E,WAAW;EACtC,IAAI8E,cAAc,GAAGnsB,MAAQ,CAACqnB,WAAW,CAAC,IAAI,CAAC;EAE/C,IAAI6E,QAAQ,GAAGC,cAAc,EAAE;IAC7B,OAAO,KAAK;EACd;EACA,OAAO,IAAI;AACb;AAEA,SAASC,eAAeA,CAACpnB,MAAM,EAAE;EAC/B,OAAO,UAAUyB,IAAI,EAAEwlB,QAAQ,EAAE;IAC/B,IAAII,UAAU,GAAGC,OAAO,CAAC7lB,IAAI,CAAC8lB,WAAW,CAAC;IAC1C,OAAO9lB,IAAI,CAAC8lB,WAAW;IACvB,IAAI7mB,IAAI,GAAGe,IAAI,CAACI,aAAa;IAC7B,OAAOJ,IAAI,CAACI,aAAa;IACzB,IAAI;MACF,IAAI7G,UAAY,CAACisB,QAAQ,CAACO,cAAc,CAAC,EAAE;QACzCP,QAAQ,CAACO,cAAc,CAACH,UAAU,EAAE3mB,IAAI,EAAEe,IAAI,CAAC;MACjD;IACF,CAAC,CAAC,OAAOrI,CAAC,EAAE;MACV6tB,QAAQ,CAACO,cAAc,GAAG,IAAI;MAC9BxnB,MAAM,CAACxF,KAAK,CAAC,8CAA8C,EAAEpB,CAAC,CAAC;IACjE;IACA,IAAI;MACF,IACE4B,UAAY,CAACisB,QAAQ,CAACQ,WAAW,CAAC,IAClCR,QAAQ,CAACQ,WAAW,CAACJ,UAAU,EAAE3mB,IAAI,EAAEe,IAAI,CAAC,EAC5C;QACA,OAAO,KAAK;MACd;IACF,CAAC,CAAC,OAAOrI,CAAC,EAAE;MACV6tB,QAAQ,CAACQ,WAAW,GAAG,IAAI;MAC3BznB,MAAM,CAACxF,KAAK,CAAC,oDAAoD,EAAEpB,CAAC,CAAC;IACvE;IACA,OAAO,IAAI;EACb,CAAC;AACH;AAEA,SAASsuB,mBAAmBA,CAAC1nB,MAAM,EAAE;EACnC,OAAO,UAAUyB,IAAI,EAAEwlB,QAAQ,EAAE;IAC/B,OAAO,CAACU,YAAY,CAAClmB,IAAI,EAAEwlB,QAAQ,EAAE,WAAW,EAAEjnB,MAAM,CAAC;EAC3D,CAAC;AACH;AAEA,SAAS4nB,eAAeA,CAAC5nB,MAAM,EAAE;EAC/B,OAAO,UAAUyB,IAAI,EAAEwlB,QAAQ,EAAE;IAC/B,OAAOU,YAAY,CAAClmB,IAAI,EAAEwlB,QAAQ,EAAE,UAAU,EAAEjnB,MAAM,CAAC;EACzD,CAAC;AACH;AAEA,SAAS6nB,WAAWA,CAACnL,KAAK,EAAE3O,IAAI,EAAE+Z,KAAK,EAAE;EACvC,IAAI,CAACpL,KAAK,EAAE;IACV,OAAO,CAACoL,KAAK;EACf;EAEA,IAAIzL,MAAM,GAAGK,KAAK,CAACL,MAAM;EAEzB,IAAI,CAACA,MAAM,IAAIA,MAAM,CAAChgB,MAAM,KAAK,CAAC,EAAE;IAClC,OAAO,CAACyrB,KAAK;EACf;EAEA,IAAIC,KAAK,EAAEC,QAAQ,EAAErtB,GAAG,EAAEstB,QAAQ;EAClC,IAAIC,UAAU,GAAGna,IAAI,CAAC1R,MAAM;EAC5B,IAAI8rB,WAAW,GAAG9L,MAAM,CAAChgB,MAAM;EAC/B,KAAK,IAAIpD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkvB,WAAW,EAAElvB,CAAC,EAAE,EAAE;IACpC8uB,KAAK,GAAG1L,MAAM,CAACpjB,CAAC,CAAC;IACjB+uB,QAAQ,GAAGD,KAAK,CAACC,QAAQ;IAEzB,IAAI,CAAChtB,MAAQ,CAACgtB,QAAQ,EAAE,QAAQ,CAAC,EAAE;MACjC,OAAO,CAACF,KAAK;IACf;IAEA,KAAK,IAAIvmB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2mB,UAAU,EAAE3mB,CAAC,EAAE,EAAE;MACnC5G,GAAG,GAAGoT,IAAI,CAACxM,CAAC,CAAC;MACb0mB,QAAQ,GAAG,IAAI9vB,MAAM,CAACwC,GAAG,CAAC;MAE1B,IAAIstB,QAAQ,CAAC5vB,IAAI,CAAC2vB,QAAQ,CAAC,EAAE;QAC3B,OAAO,IAAI;MACb;IACF;EACF;EACA,OAAO,KAAK;AACd;AAEA,SAASL,YAAYA,CAAClmB,IAAI,EAAEwlB,QAAQ,EAAEmB,WAAW,EAAEpoB,MAAM,EAAE;EACzD;EACA,IAAI8nB,KAAK,GAAG,KAAK;EACjB,IAAIM,WAAW,KAAK,WAAW,EAAE;IAC/BN,KAAK,GAAG,IAAI;EACd;EAEA,IAAI/Z,IAAI,EAAEsa,MAAM;EAChB,IAAI;IACFta,IAAI,GAAG+Z,KAAK,GAAGb,QAAQ,CAACrhB,aAAa,GAAGqhB,QAAQ,CAACxhB,YAAY;IAC7D4iB,MAAM,GAAGrtB,GAAK,CAACyG,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAACzG,GAAK,CAACyG,IAAI,EAAE,YAAY,CAAC,CAAC;;IAEvE;IACA;IACA,IAAI,CAACsM,IAAI,IAAIA,IAAI,CAAC1R,MAAM,KAAK,CAAC,EAAE;MAC9B,OAAO,CAACyrB,KAAK;IACf;IACA,IAAIO,MAAM,CAAChsB,MAAM,KAAK,CAAC,IAAI,CAACgsB,MAAM,CAAC,CAAC,CAAC,EAAE;MACrC,OAAO,CAACP,KAAK;IACf;IAEA,IAAIQ,YAAY,GAAGD,MAAM,CAAChsB,MAAM;IAChC,KAAK,IAAIpD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqvB,YAAY,EAAErvB,CAAC,EAAE,EAAE;MACrC,IAAI4uB,WAAW,CAACQ,MAAM,CAACpvB,CAAC,CAAC,EAAE8U,IAAI,EAAE+Z,KAAK,CAAC,EAAE;QACvC,OAAO,IAAI;MACb;IACF;EACF,CAAC,CAAC,OACA1uB;EACA,4BACA;IACA,IAAI0uB,KAAK,EAAE;MACTb,QAAQ,CAACrhB,aAAa,GAAG,IAAI;IAC/B,CAAC,MAAM;MACLqhB,QAAQ,CAACxhB,YAAY,GAAG,IAAI;IAC9B;IACA,IAAI8iB,QAAQ,GAAGT,KAAK,GAAG,eAAe,GAAG,cAAc;IACvD9nB,MAAM,CAACxF,KAAK,CACV,2CAA2C,GACzC+tB,QAAQ,GACR,2BAA2B,GAC3BA,QAAQ,GACR,GAAG,EACLnvB,CACF,CAAC;IACD,OAAO,CAAC0uB,KAAK;EACf;EACA,OAAO,KAAK;AACd;AAEA,SAASU,gBAAgBA,CAACxoB,MAAM,EAAE;EAChC,OAAO,UAAUyB,IAAI,EAAEwlB,QAAQ,EAAE;IAC/B,IAAIhuB,CAAC,EAAEsI,CAAC,EAAEknB,eAAe,EAAEjnB,GAAG,EAAEgnB,gBAAgB,EAAEE,eAAe,EAAEC,QAAQ;IAE3E,IAAI;MACFH,gBAAgB,GAAG,KAAK;MACxBC,eAAe,GAAGxB,QAAQ,CAACwB,eAAe;MAE1C,IAAI,CAACA,eAAe,IAAIA,eAAe,CAACpsB,MAAM,KAAK,CAAC,EAAE;QACpD,OAAO,IAAI;MACb;MAEAssB,QAAQ,GAAGC,gBAAgB,CAACnnB,IAAI,CAAC;MAEjC,IAAIknB,QAAQ,CAACtsB,MAAM,KAAK,CAAC,EAAE;QACzB,OAAO,IAAI;MACb;MAEAmF,GAAG,GAAGinB,eAAe,CAACpsB,MAAM;MAC5B,KAAKpD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGuI,GAAG,EAAEvI,CAAC,EAAE,EAAE;QACxByvB,eAAe,GAAG,IAAIvwB,MAAM,CAACswB,eAAe,CAACxvB,CAAC,CAAC,EAAE,IAAI,CAAC;QAEtD,KAAKsI,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGonB,QAAQ,CAACtsB,MAAM,EAAEkF,CAAC,EAAE,EAAE;UACpCinB,gBAAgB,GAAGE,eAAe,CAACrwB,IAAI,CAACswB,QAAQ,CAACpnB,CAAC,CAAC,CAAC;UAEpD,IAAIinB,gBAAgB,EAAE;YACpB,OAAO,KAAK;UACd;QACF;MACF;IACF,CAAC,CAAC,OACAzkB;IACA,4BACA;MACAkjB,QAAQ,CAACwB,eAAe,GAAG,IAAI;MAC/BzoB,MAAM,CAACxF,KAAK,CACV,mGACF,CAAC;IACH;IAEA,OAAO,IAAI;EACb,CAAC;AACH;AAEA,SAASouB,gBAAgBA,CAACnnB,IAAI,EAAE;EAC9B,IAAIuJ,IAAI,GAAGvJ,IAAI,CAACuJ,IAAI;EACpB,IAAI2d,QAAQ,GAAG,EAAE;;EAEjB;EACA;EACA;EACA,IAAI3d,IAAI,CAACwR,WAAW,EAAE;IACpB,IAAIkK,UAAU,GAAG1b,IAAI,CAACwR,WAAW;IAAC,IAAApa,SAAA,GAAAC,oCAAA,CACdqkB,UAAU;MAAApkB,KAAA;IAAA;MAA9B,KAAAF,SAAA,CAAA3D,CAAA,MAAA6D,KAAA,GAAAF,SAAA,CAAAvJ,CAAA,IAAA0J,IAAA,GAAgC;QAAA,IAArBma,KAAK,GAAApa,KAAA,CAAAhK,KAAA;QACdqwB,QAAQ,CAAC3rB,IAAI,CAAChC,GAAK,CAAC0hB,KAAK,EAAE,mBAAmB,CAAC,CAAC;MAClD;IAAC,SAAAzc,GAAA;MAAAmC,SAAA,CAAAhJ,CAAA,CAAA6G,GAAA;IAAA;MAAAmC,SAAA,CAAA3K,CAAA;IAAA;EACH;EACA,IAAIuT,IAAI,CAAC0R,KAAK,EAAE;IACdiM,QAAQ,CAAC3rB,IAAI,CAAChC,GAAK,CAACgQ,IAAI,EAAE,yBAAyB,CAAC,CAAC;EACvD;EACA,IAAIA,IAAI,CAACpM,OAAO,EAAE;IAChB+pB,QAAQ,CAAC3rB,IAAI,CAAChC,GAAK,CAACgQ,IAAI,EAAE,cAAc,CAAC,CAAC;EAC5C;EACA,OAAO2d,QAAQ;AACjB;;;;;;;;;AC3MiD;;AAEjD;AACA;AACA;AACA;AACA;AAJA,IAKqBE,QAAQ;EAC3B;AACF;AACA;AACA;AACA;AACA;AACA;EACE,SAAAA,SAAY3f,KAAK,EAAEvM,OAAO,EAAE;IAAAsM,uBAAA,OAAA4f,QAAA;IAC1B,IAAI,CAAC3f,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACvM,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACmc,UAAU,GAAG,EAAE;IACpB,IAAI,CAAC3X,UAAU,GAAG,CAAC,CAAC;EACtB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE,OAAAsI,oBAAA,CAAAof,QAAA;IAAAptB,GAAA;IAAAnD,KAAA,EAOA,SAAAoR,SAASA,CAAC/M,OAAO,EAAE;MAAA,IAAAmsB,WAAA;MACjB,CAAAA,WAAA,OAAI,CAAC5f,KAAK,cAAA4f,WAAA,eAAVA,WAAA,CAAYpf,SAAS,CAAC/M,OAAO,CAAC;MAC9B,IAAMgN,UAAU,GAAG,IAAI,CAAChN,OAAO;MAC/B,IAAI,CAACA,OAAO,GAAG6F,KAAK,CAACmH,UAAU,EAAEhN,OAAO,CAAC;MACzC,OAAO,IAAI;IACb;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAXE;IAAAlB,GAAA;IAAAnD,KAAA,EAYA,SAAA2gB,YAAYA,CAACI,SAAS,EAAE;MACtB,IAAI7hB,UAAU,CAAC6hB,SAAS,CAAC,EAAE;QACzB,IAAI,CAACP,UAAU,CAAC9b,IAAI,CAACqc,SAAS,CAAC;MACjC;MACA,OAAO,IAAI;IACb;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAbE;IAAA5d,GAAA;IAAAnD,KAAA,EAcA,SAAAoN,GAAGA,CAACjE,IAAI,EAAEV,QAAQ,EAAE;MAAA,IAAAwR,KAAA;MAClBxR,QAAQ,GAAGvJ,UAAU,CAACuJ,QAAQ,CAAC,GAAGA,QAAQ,GAAG,YAAM,CAAC,CAAC;MAErD,IAAI,CAAC,IAAI,CAACpE,OAAO,CAACosB,OAAO,EAAE;QACzB,OAAOhoB,QAAQ,CAAC,IAAI5J,KAAK,CAAC,wBAAwB,CAAC,EAAE,IAAI,CAAC;MAC5D;MAEA,IAAI,CAAC+R,KAAK,CAAC8f,cAAc,CAACvnB,IAAI,CAAC;MAC/B,IAAMwnB,aAAa,GAAGxnB,IAAI,CAACxB,GAAG;MAC9B,IAAI,CAACipB,gBAAgB,CAACznB,IAAI,EAAE,UAACxB,GAAG,EAAEhH,CAAC,EAAK;QACtC,IAAIgH,GAAG,EAAE;UACPsS,KAAI,CAACrJ,KAAK,CAACigB,iBAAiB,CAAC1nB,IAAI,CAAC;UAClC,OAAOV,QAAQ,CAACd,GAAG,EAAE,IAAI,CAAC;QAC5B;QACAsS,KAAI,CAACrJ,KAAK,CAACkgB,OAAO,CAACnwB,CAAC,EAAE8H,QAAQ,EAAEkoB,aAAa,EAAExnB,IAAI,CAAC;MACtD,CAAC,CAAC;IACJ;;IAEA;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EATE;IAAAhG,GAAA;IAAAnD,KAAA,EAUA,SAAA4wB,gBAAgBA,CAACznB,IAAI,EAAEV,QAAQ,EAAE;MAC/B,IAAIsoB,cAAc,GAAG,CAAC,CAAC;MACvB,IAAMC,gBAAgB,GAAG,IAAI,CAACxQ,UAAU,CAACzc,MAAM;MAC/C,IAAMyc,UAAU,GAAG,IAAI,CAACA,UAAU;MAClC,IAAMnc,OAAO,GAAG,IAAI,CAACA,OAAO;MAE5B,IAAM4sB,KAAI,GAAG,SAAPA,IAAIA,CAAItpB,GAAG,EAAEhH,CAAC,EAAK;QACvB,IAAIgH,GAAG,EAAE;UACPc,QAAQ,CAACd,GAAG,EAAE,IAAI,CAAC;UACnB;QACF;QAEAopB,cAAc,EAAE;QAEhB,IAAIA,cAAc,KAAKC,gBAAgB,EAAE;UACvCvoB,QAAQ,CAAC,IAAI,EAAE9H,CAAC,CAAC;UACjB;QACF;QAEA6f,UAAU,CAACuQ,cAAc,CAAC,CAACpwB,CAAC,EAAE0D,OAAO,EAAE4sB,KAAI,CAAC;MAC9C,CAAC;MAEDA,KAAI,CAAC,IAAI,EAAE9nB,IAAI,CAAC;IAClB;EAAC;AAAA;;;;;;;;;;AC1H+B;;AAElC;AACA;AACA;AACA;AACA;AACA;AALA,IAMM+nB,KAAK;EACT;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAAAA,MAAYC,WAAW,EAAEzX,GAAG,EAAEhS,MAAM,EAAErD,OAAO,EAAE+sB,MAAM,EAAE;IAAAzgB,oBAAA,OAAAugB,KAAA;IACrD,IAAI,CAACC,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACzX,GAAG,GAAGA,GAAG;IACd,IAAI,CAAChS,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACrD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAAC+sB,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,UAAU,GAAG,EAAE;IACpB,IAAI,CAACC,YAAY,GAAG,EAAE;IACtB,IAAI,CAACC,eAAe,GAAG,EAAE;IACzB,IAAI,CAACC,UAAU,GAAG,EAAE;IACpB,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB,IAAI,CAACC,cAAc,GAAG,IAAI;EAC5B;;EAEA;AACF;AACA;AACA;AACA;EAJE,OAAAxgB,iBAAA,CAAA+f,KAAA;IAAA/tB,GAAA;IAAAnD,KAAA,EAKA,SAAAoR,SAASA,CAAC/M,OAAO,EAAE;MAAA,IAAAutB,SAAA;MACjB,CAAAA,SAAA,OAAI,CAAClY,GAAG,cAAAkY,SAAA,eAARA,SAAA,CAAUxgB,SAAS,CAAC/M,OAAO,CAAC;MAC5B,IAAMgN,UAAU,GAAG,IAAI,CAAChN,OAAO;MAC/B,IAAI,CAACA,OAAO,GAAG3B,KAAO,CAAC2O,UAAU,EAAEhN,OAAO,CAAC;MAC3C,OAAO,IAAI;IACb;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EARE;IAAAlB,GAAA;IAAAnD,KAAA,EASA,SAAA6xB,YAAYA,CAACC,SAAS,EAAE;MACtB,IAAIpvB,UAAY,CAACovB,SAAS,CAAC,EAAE;QAC3B,IAAI,CAACT,UAAU,CAAC3sB,IAAI,CAACotB,SAAS,CAAC;MACjC;MACA,OAAO,IAAI;IACb;EAAC;IAAA3uB,GAAA;IAAAnD,KAAA,EAED,SAAA0wB,cAAcA,CAACvnB,IAAI,EAAE;MACnB,IAAI,CAACmoB,YAAY,CAAC5sB,IAAI,CAACyE,IAAI,CAAC;IAC9B;EAAC;IAAAhG,GAAA;IAAAnD,KAAA,EAED,SAAA6wB,iBAAiBA,CAAC1nB,IAAI,EAAE;MACtB,IAAM4oB,GAAG,GAAG,IAAI,CAACT,YAAY,CAACvsB,OAAO,CAACoE,IAAI,CAAC;MAC3C,IAAI4oB,GAAG,KAAK,CAAC,CAAC,EAAE;QACd,IAAI,CAACT,YAAY,CAAC9f,MAAM,CAACugB,GAAG,EAAE,CAAC,CAAC;MAClC;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAVE;IAAA5uB,GAAA;IAAAnD,KAAA,EAWA,SAAA8wB,OAAOA,CAAC3nB,IAAI,EAAEV,QAAQ,EAAEkoB,aAAa,EAAEqB,YAAY,EAAE;MAAA,IAAA/X,KAAA;MACnD,IAAI,CAACxR,QAAQ,IAAI,CAAC/F,UAAY,CAAC+F,QAAQ,CAAC,EAAE;QACxCA,QAAQ,GAAG,SAAXA,QAAQA,CAAA,EAAe;UACrB;QACF,CAAC;MACH;MACA,IAAMY,IAAI,GAAGF,IAAI,CAACE,IAAI;MACtB,IAAM4oB,eAAe,GAAG,IAAI,CAACC,gBAAgB,CAAC7oB,IAAI,CAAC;MACnD,IAAI4oB,eAAe,CAACE,IAAI,EAAE;QACxB,IAAI,CAACtB,iBAAiB,CAACmB,YAAY,CAAC;QACpCvpB,QAAQ,CAACwpB,eAAe,CAACtqB,GAAG,CAAC;QAC7B;MACF;MACA,IAAI,CAACyqB,SAAS,CAAC/oB,IAAI,EAAEsnB,aAAa,CAAC;MACnC,IAAI,CAACE,iBAAiB,CAACmB,YAAY,CAAC;MACpC,IAAI,CAAC,IAAI,CAAC3tB,OAAO,CAACguB,QAAQ,EAAE;QAC1B5pB,QAAQ,CAAC,IAAI5J,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACxC;MACF;MAEA,IAAI,IAAI,CAACuyB,MAAM,IAAI/nB,IAAI,CAACqJ,IAAI,EAAE;QAC5BvJ,IAAI,CAACmpB,QAAQ,GAAG,IAAI,CAAClB,MAAM,CAAC9e,OAAO,CAAC,IAAI,EAAEjJ,IAAI,CAAC7H,IAAI,EAAE;UACnDZ,IAAI,EAAE,YAAY;UAClB6I,KAAK,EAAEN,IAAI,CAACM;QACd,CAAC,CAAC;QAEF,IAAIN,IAAI,CAACmpB,QAAQ,EAAE;UACjB5vB,iBAAmB,CAACyG,IAAI,CAACE,IAAI,EAAE,CAC7B;YAAElG,GAAG,EAAE,WAAW;YAAEnD,KAAK,EAAEmJ,IAAI,CAACmpB;UAAS,CAAC,CAC3C,CAAC;QACJ;MACF;MAEA,IAAI,CAACf,eAAe,CAAC7sB,IAAI,CAAC2E,IAAI,CAAC;MAC/B,IAAI;QACF,IAAI,CAACkpB,eAAe,CAAClpB,IAAI,EAAE,UAAC1B,GAAG,EAAEC,IAAI,EAAEoM,OAAO,EAAK;UACjDiG,KAAI,CAACuY,sBAAsB,CAACnpB,IAAI,CAAC;UAEjC,IAAIF,IAAI,CAACmpB,QAAQ,EAAE;YACjBrY,KAAI,CAACmX,MAAM,CAACqB,mBAAmB,CAACtpB,IAAI,CAACmpB,QAAQ,EAAE3qB,GAAG,EAAEC,IAAI,EAAEoM,OAAO,CAAC;UACpE;UAEAvL,QAAQ,CAACd,GAAG,EAAEC,IAAI,CAAC;QACrB,CAAC,CAAC;MACJ,CAAC,CAAC,OAAOD,GAAG,EAAE;QACZ,IAAI,CAAC6qB,sBAAsB,CAACnpB,IAAI,CAAC;QAEjC,IAAIF,IAAI,CAACmpB,QAAQ,EAAE;UAAA,IAAAI,YAAA;UACjB,CAAAA,YAAA,OAAI,CAACtB,MAAM,cAAAsB,YAAA,eAAXA,YAAA,CAAaC,OAAO,CAACxpB,IAAI,CAACmpB,QAAQ,CAAC;QACrC;QAEA7pB,QAAQ,CAACd,GAAG,CAAC;MACf;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAxE,GAAA;IAAAnD,KAAA,EAMA,SAAA4yB,IAAIA,CAACnqB,QAAQ,EAAE;MAAA,IAAA0S,MAAA;MACb,IAAI,CAACzY,UAAY,CAAC+F,QAAQ,CAAC,EAAE;QAC3B;MACF;MACA,IAAI,CAACipB,YAAY,GAAGjpB,QAAQ;MAC5B,IAAI,IAAI,CAACoqB,cAAc,CAAC,CAAC,EAAE;QACzB;MACF;MACA,IAAI,IAAI,CAAClB,cAAc,EAAE;QACvB,IAAI,CAACA,cAAc,GAAGmB,aAAa,CAAC,IAAI,CAACnB,cAAc,CAAC;MAC1D;MACA,IAAI,CAACA,cAAc,GAAGoB,WAAW,CAAC,YAAM;QACtC5X,MAAI,CAAC0X,cAAc,CAAC,CAAC;MACvB,CAAC,EAAE,GAAG,CAAC;IACT;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA1vB,GAAA;IAAAnD,KAAA,EAQA,SAAAkyB,gBAAgBA,CAAC/oB,IAAI,EAAE;MACrB,IAAInI,CAAC,GAAG,IAAI;MACZ,KAAK,IAAIL,CAAC,GAAG,CAAC,EAAEuI,GAAG,GAAG,IAAI,CAACmoB,UAAU,CAACttB,MAAM,EAAEpD,CAAC,GAAGuI,GAAG,EAAEvI,CAAC,EAAE,EAAE;QAC1DK,CAAC,GAAG,IAAI,CAACqwB,UAAU,CAAC1wB,CAAC,CAAC,CAACwI,IAAI,EAAE,IAAI,CAAC9E,OAAO,CAAC;QAC1C,IAAI,CAACrD,CAAC,IAAIA,CAAC,CAAC2G,GAAG,KAAKlE,SAAS,EAAE;UAC7B,OAAO;YAAE0uB,IAAI,EAAE,IAAI;YAAExqB,GAAG,EAAE3G,CAAC,CAAC2G;UAAI,CAAC;QACnC;MACF;MACA,OAAO;QAAEwqB,IAAI,EAAE,KAAK;QAAExqB,GAAG,EAAE;MAAK,CAAC;IACnC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAxE,GAAA;IAAAnD,KAAA,EAOA,SAAAuyB,eAAeA,CAACppB,IAAI,EAAEV,QAAQ,EAAE;MAAA,IAAAwT,MAAA;MAC9B,IAAM+W,iBAAiB,GAAG,IAAI,CAAC7B,WAAW,CAAC8B,UAAU,CAAC9pB,IAAI,CAAC;MAC3D,IAAI6pB,iBAAiB,CAACC,UAAU,EAAE;QAChC,IAAI,CAACvZ,GAAG,CAACyP,QAAQ,CAAChgB,IAAI,EAAE,UAACxB,GAAG,EAAEC,IAAI,EAAEoM,OAAO,EAAK;UAC9C,IAAIrM,GAAG,EAAE;YACPsU,MAAI,CAACiX,WAAW,CAACvrB,GAAG,EAAEwB,IAAI,EAAEV,QAAQ,CAAC;UACvC,CAAC,MAAM;YACLA,QAAQ,CAACd,GAAG,EAAEC,IAAI,EAAEoM,OAAO,CAAC;UAC9B;QACF,CAAC,CAAC;MACJ,CAAC,MAAM,IAAIgf,iBAAiB,CAAC9wB,KAAK,EAAE;QAClCuG,QAAQ,CAACuqB,iBAAiB,CAAC9wB,KAAK,CAAC;MACnC,CAAC,MAAM;QACL,IAAI,CAACwX,GAAG,CAACyP,QAAQ,CAAC6J,iBAAiB,CAAClmB,OAAO,EAAErE,QAAQ,CAAC;MACxD;IACF;;IAEA;EAAA;IAAAtF,GAAA;IAAAnD,KAAA;IAYA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;IACE,SAAAkzB,WAAWA,CAACvrB,GAAG,EAAEwB,IAAI,EAAEV,QAAQ,EAAE;MAC/B,IAAI0qB,WAAW,GAAG,KAAK;MACvB,IAAI,IAAI,CAAC9uB,OAAO,CAAC+uB,aAAa,EAAE;QAC9B,KAAK,IAAIzyB,CAAC,GAAG,CAAC,EAAEuI,GAAG,GAAGgoB,KAAK,CAACmC,gBAAgB,CAACtvB,MAAM,EAAEpD,CAAC,GAAGuI,GAAG,EAAEvI,CAAC,EAAE,EAAE;UACjE,IAAIgH,GAAG,CAAC3B,IAAI,KAAKkrB,KAAK,CAACmC,gBAAgB,CAAC1yB,CAAC,CAAC,EAAE;YAC1CwyB,WAAW,GAAG,IAAI;YAClB;UACF;QACF;QACA,IAAIA,WAAW,IAAIzwB,cAAgB,CAAC,IAAI,CAAC2B,OAAO,CAACivB,UAAU,CAAC,EAAE;UAC5DnqB,IAAI,CAACoqB,OAAO,GAAGpqB,IAAI,CAACoqB,OAAO,GAAGpqB,IAAI,CAACoqB,OAAO,GAAG,CAAC,GAAG,CAAC;UAClD,IAAIpqB,IAAI,CAACoqB,OAAO,GAAG,IAAI,CAAClvB,OAAO,CAACivB,UAAU,EAAE;YAC1CH,WAAW,GAAG,KAAK;UACrB;QACF;MACF;MACA,IAAIA,WAAW,EAAE;QACf,IAAI,CAACK,gBAAgB,CAACrqB,IAAI,EAAEV,QAAQ,CAAC;MACvC,CAAC,MAAM;QACLA,QAAQ,CAACd,GAAG,CAAC;MACf;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAxE,GAAA;IAAAnD,KAAA,EAOA,SAAAwzB,gBAAgBA,CAACrqB,IAAI,EAAEV,QAAQ,EAAE;MAAA,IAAA0T,MAAA;MAC/B,IAAI,CAACqV,UAAU,CAAC9sB,IAAI,CAAC;QAAEyE,IAAI,EAAJA,IAAI;QAAEV,QAAQ,EAARA;MAAS,CAAC,CAAC;MAExC,IAAI,CAAC,IAAI,CAACgpB,WAAW,EAAE;QACrB,IAAI,CAACA,WAAW,GAAGsB,WAAW,CAAC,YAAM;UACnC,OAAO5W,MAAI,CAACqV,UAAU,CAACztB,MAAM,EAAE;YAC7B,IAAM0vB,WAAW,GAAGtX,MAAI,CAACqV,UAAU,CAACpa,KAAK,CAAC,CAAC;YAC3C+E,MAAI,CAACoW,eAAe,CAACkB,WAAW,CAACtqB,IAAI,EAAEsqB,WAAW,CAAChrB,QAAQ,CAAC;UAC9D;QACF,CAAC,EAAE,IAAI,CAACpE,OAAO,CAAC+uB,aAAa,CAAC;MAChC;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAAjwB,GAAA;IAAAnD,KAAA,EAQA,SAAAwyB,sBAAsBA,CAACrpB,IAAI,EAAE;MAC3B,IAAM4oB,GAAG,GAAG,IAAI,CAACR,eAAe,CAACxsB,OAAO,CAACoE,IAAI,CAAC;MAC9C,IAAI4oB,GAAG,KAAK,CAAC,CAAC,EAAE;QACd,IAAI,CAACR,eAAe,CAAC/f,MAAM,CAACugB,GAAG,EAAE,CAAC,CAAC;QACnC,IAAI,CAACc,cAAc,CAAC,CAAC;MACvB;IACF;EAAC;IAAA1vB,GAAA;IAAAnD,KAAA,EAED,SAAAoyB,SAASA,CAAC/oB,IAAI,EAAEsnB,aAAa,EAAE;MAC7B,IAAI,IAAI,CAACjpB,MAAM,IAAI,IAAI,CAACrD,OAAO,CAACqvB,OAAO,EAAE;QACvC,IAAIptB,OAAO,GACTqqB,aAAa,IACbjuB,GAAK,CAAC2G,IAAI,EAAE,8BAA8B,CAAC,IAC3C3G,GAAK,CAAC2G,IAAI,EAAE,sCAAsC,CAAC;QACrD,IAAI/C,OAAO,EAAE;UACX,IAAI,CAACoB,MAAM,CAACxF,KAAK,CAACoE,OAAO,CAAC;UAC1B;QACF;QACAA,OAAO,GAAG5D,GAAK,CAAC2G,IAAI,EAAE,mBAAmB,CAAC;QAC1C,IAAI/C,OAAO,EAAE;UACX,IAAI,CAACoB,MAAM,CAAC0F,GAAG,CAAC9G,OAAO,CAAC;QAC1B;MACF;IACF;EAAC;IAAAnD,GAAA;IAAAnD,KAAA,EAED,SAAA6yB,cAAcA,CAAA,EAAG;MACf,IACEnwB,UAAY,CAAC,IAAI,CAACgvB,YAAY,CAAC,IAC/B,IAAI,CAACJ,YAAY,CAACvtB,MAAM,KAAK,CAAC,IAC9B,IAAI,CAACwtB,eAAe,CAACxtB,MAAM,KAAK,CAAC,EACjC;QACA,IAAI,IAAI,CAAC4tB,cAAc,EAAE;UACvB,IAAI,CAACA,cAAc,GAAGmB,aAAa,CAAC,IAAI,CAACnB,cAAc,CAAC;QAC1D;QACA,IAAI,CAACD,YAAY,CAAC,CAAC;QACnB,OAAO,IAAI;MACb;MACA,OAAO,KAAK;IACd;EAAC;AAAA;AAAAjU,oBAAA,CAhTGyT,KAAK,sBAoMiB,CACxB,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,cAAc,EACd,OAAO,EACP,WAAW,CACZ;AAsGH,0CAAeA,KAAK,E;;;;;;;;;;AC3TpB;AACA;AACA;AACA;AACA;AAJA,IAKMyC,WAAW;EAOf,SAAAA,YAAA,EAA0B;IAAA,IAAdtvB,OAAO,GAAAyJ,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,CAAC,CAAC;IAAA6C,0BAAA,OAAAgjB,WAAA;IACtB,IAAI,CAAC5X,SAAS,GAAG/P,IAAI,CAACzK,GAAG,CAAC,CAAC;IAC3B,IAAI,CAACqyB,OAAO,GAAG,CAAC;IAChB,IAAI,CAACC,aAAa,GAAG,CAAC;IACtB,IAAI,CAACvU,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACwU,eAAe,GAAG,CAAC,CAAC;IACzB,IAAI,CAACC,eAAe,CAAC1vB,OAAO,CAAC;EAC/B;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE,OAAA8M,uBAAA,CAAAwiB,WAAA;IAAAxwB,GAAA;IAAAnD,KAAA,EAQA,SAAA+zB,eAAeA,CAAA,EAAe;MAAA,IAAd1vB,OAAO,GAAAyJ,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,CAAC,CAAC;MAC1B,IAAQiO,SAAS,GAA+B1X,OAAO,CAA/C0X,SAAS;QAAEkO,QAAQ,GAAqB5lB,OAAO,CAApC4lB,QAAQ;QAAE+J,cAAc,GAAK3vB,OAAO,CAA1B2vB,cAAc;MAE3C,IAAIjY,SAAS,KAAKtY,SAAS,EAAE;QAC3BkwB,WAAW,CAACM,cAAc,CAAClY,SAAS,GAAGA,SAAS;MAClD;MACA,IAAIkO,QAAQ,KAAKxmB,SAAS,EAAE;QAC1BkwB,WAAW,CAACM,cAAc,CAAChK,QAAQ,GAAGA,QAAQ;MAChD;MACA,IAAI+J,cAAc,KAAKvwB,SAAS,EAAE;QAChCkwB,WAAW,CAACM,cAAc,CAACD,cAAc,GAAGA,cAAc;MAC5D;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAdE;IAAA7wB,GAAA;IAAAnD,KAAA,EAeA,SAAAizB,UAAUA,CAAC9pB,IAAI,EAAoB;MAAA,IAAlB5H,GAAG,GAAAuM,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG9B,IAAI,CAACzK,GAAG,CAAC,CAAC;MAC/B,IAAM2yB,WAAW,GAAG3yB,GAAG,GAAG,IAAI,CAACwa,SAAS;MACxC,IAAImY,WAAW,GAAG,CAAC,IAAIA,WAAW,IAAI,KAAK,EAAE;QAC3C,IAAI,CAACnY,SAAS,GAAGxa,GAAG;QACpB,IAAI,CAACsyB,aAAa,GAAG,CAAC;MACxB;MAEA,IAAMM,eAAe,GAAGR,WAAW,CAACM,cAAc,CAAChK,QAAQ;MAC3D,IAAMmK,qBAAqB,GAAGT,WAAW,CAACM,cAAc,CAACD,cAAc;MAEvE,IAAIK,SAAS,CAAClrB,IAAI,EAAEgrB,eAAe,EAAE,IAAI,CAACP,OAAO,CAAC,EAAE;QAClD,OAAOU,eAAe,CACpB,IAAI,CAAChV,QAAQ,EACb,IAAI,CAACwU,eAAe,KAAApnB,MAAA,CACjBynB,eAAe,yBAClB,KACF,CAAC;MACH;MAEA,IAAIE,SAAS,CAAClrB,IAAI,EAAEirB,qBAAqB,EAAE,IAAI,CAACP,aAAa,CAAC,EAAE;QAC9D,OAAOS,eAAe,CACpB,IAAI,CAAChV,QAAQ,EACb,IAAI,CAACwU,eAAe,KAAApnB,MAAA,CACjB0nB,qBAAqB,gCACxB,KACF,CAAC;MACH;MAEA,IAAI,CAACR,OAAO,IAAI,CAAC;MACjB,IAAI,CAACC,aAAa,IAAI,CAAC;MAEvB,IAAMU,gBAAgB,GAAG,CAACF,SAAS,CAAClrB,IAAI,EAAEgrB,eAAe,EAAE,IAAI,CAACP,OAAO,CAAC;MACxE,IAAMY,SAAS,GAAGD,gBAAgB;MAClC,IAAMtB,UAAU,GACdsB,gBAAgB,IAChB,CAACF,SAAS,CAAClrB,IAAI,EAAEirB,qBAAqB,EAAE,IAAI,CAACP,aAAa,CAAC;MAE7D,OAAOS,eAAe,CACpB,IAAI,CAAChV,QAAQ,EACb,IAAI,CAACwU,eAAe,EACpB,IAAI,EACJb,UAAU,EACVkB,eAAe,EACfC,qBAAqB,EACrBI,SACF,CAAC;IACH;EAAC;IAAArxB,GAAA;IAAAnD,KAAA,EAED,SAAAy0B,kBAAkBA,CAACnV,QAAQ,EAAEjb,OAAO,EAAE;MACpC,IAAI,CAACib,QAAQ,GAAGA,QAAQ;MACxB,IAAI,CAACwU,eAAe,GAAGzvB,OAAO;IAChC;EAAC;AAAA;AAGH;AAAAoZ,0BAAA,CA3GMkW,WAAW,oBACS;EACtB5X,SAAS,EAAE/P,IAAI,CAACzK,GAAG,CAAC,CAAC;EACrB0oB,QAAQ,EAAExmB,SAAS;EACnBuwB,cAAc,EAAEvwB;AAClB,CAAC;AAwGH,SAAS4wB,SAASA,CAAClrB,IAAI,EAAEurB,KAAK,EAAEd,OAAO,EAAE;EACvC,OAAO,CAACzqB,IAAI,CAACwrB,eAAe,IAAID,KAAK,IAAI,CAAC,IAAId,OAAO,GAAGc,KAAK;AAC/D;AAEA,SAASJ,eAAeA,CACtBhV,QAAQ,EACRjb,OAAO,EACPnC,KAAK,EACL+wB,UAAU,EACVkB,eAAe,EACfS,WAAW,EACXJ,SAAS,EACT;EACA,IAAI1nB,OAAO,GAAG,IAAI;EAClB,IAAM+nB,WAAW,GAAG3yB,KAAK,GAAG,IAAIrD,KAAK,CAACqD,KAAK,CAAC,GAAG,IAAI;EAEnD,IAAI,CAAC2yB,WAAW,IAAI,CAAC5B,UAAU,EAAE;IAC/BnmB,OAAO,GAAGgoB,gBAAgB,CACxBxV,QAAQ,EACRjb,OAAO,EACP8vB,eAAe,EACfS,WAAW,EACXJ,SACF,CAAC;EACH;EAEA,OAAO;IAAEtyB,KAAK,EAAE2yB,WAAW;IAAE5B,UAAU,EAAVA,UAAU;IAAEnmB,OAAO,EAAPA;EAAQ,CAAC;AACpD;AAEA,SAASgoB,gBAAgBA,CACvBxV,QAAQ,EACRjb,OAAO,EACP8vB,eAAe,EACfS,WAAW,EACXJ,SAAS,EACT;EACA,IAAMrR,WAAW,GACf9e,OAAO,CAAC8e,WAAW,IAAK9e,OAAO,CAACyI,OAAO,IAAIzI,OAAO,CAACyI,OAAO,CAACqW,WAAY;EACzE,IAAM4R,GAAG,GAAGP,SAAS,GACjB,8DAA8D,GAC9D,qDAAqD;EACzD,IAAMrrB,IAAI,GAAG;IACXuJ,IAAI,EAAE;MACJpM,OAAO,EAAE;QACPoM,IAAI,EAAEqiB,GAAG;QACTC,KAAK,EAAE;UACL/K,QAAQ,EAAEkK,eAAe;UACzBH,cAAc,EAAEY;QAClB;MACF;IACF,CAAC;IACDxV,QAAQ,EAAE,YAAY;IACtB+D,WAAW,EAAEA,WAAW;IACxB9a,QAAQ,EAAE;MACRmS,OAAO,EACJnW,OAAO,CAACgE,QAAQ,IAAIhE,OAAO,CAACgE,QAAQ,CAACmS,OAAO,IAAKnW,OAAO,CAACmW;IAC9D;EACF,CAAC;EACD,IAAI8E,QAAQ,KAAK,SAAS,EAAE;IAC1BnW,IAAI,CAACmW,QAAQ,GAAG,SAAS;IACzBnW,IAAI,CAAC8rB,SAAS,GAAG,YAAY;IAC7B9rB,IAAI,CAACd,QAAQ,CAAC1J,IAAI,GAAG,oBAAoB;EAC3C,CAAC,MAAM,IAAI2gB,QAAQ,KAAK,QAAQ,EAAE;IAChCnW,IAAI,CAAC8rB,SAAS,GAAG5wB,OAAO,CAAC4wB,SAAS,IAAI,SAAS;IAC/C9rB,IAAI,CAACd,QAAQ,CAAC1J,IAAI,GAAG0F,OAAO,CAACgE,QAAQ,CAAC1J,IAAI;EAC5C,CAAC,MAAM,IAAI2gB,QAAQ,KAAK,cAAc,EAAE;IACtCnW,IAAI,CAAC8rB,SAAS,GAAG5wB,OAAO,CAAC4wB,SAAS,IAAI,cAAc;IACpD9rB,IAAI,CAACd,QAAQ,CAAC1J,IAAI,GAAG0F,OAAO,CAACgE,QAAQ,CAAC1J,IAAI;EAC5C;EACA,OAAOwK,IAAI;AACb;AAEA,gDAAewqB,WAAW,E;;AC1LW;AACN;AACY;AACT;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASuB,OAAOA,CAAC7wB,OAAO,EAAEqV,GAAG,EAAEhS,MAAM,EAAEytB,SAAS,EAAE1kB,OAAO,EAAE2gB,MAAM,EAAE9R,QAAQ,EAAE;EAC3E,IAAI,CAACjb,OAAO,GAAG3B,KAAO,CAAC2B,OAAO,CAAC;EAC/B,IAAI,CAACqD,MAAM,GAAGA,MAAM;EACpBwtB,OAAO,CAAC/D,WAAW,CAAC4C,eAAe,CAAC,IAAI,CAAC1vB,OAAO,CAAC;EACjD6wB,OAAO,CAAC/D,WAAW,CAACsD,kBAAkB,CAACnV,QAAQ,EAAE,IAAI,CAACjb,OAAO,CAAC;EAC9D,IAAI,CAACqV,GAAG,GAAGA,GAAG;EACd,IAAI,CAAC9I,KAAK,GAAG,IAAIsgB,KAAK,CACpBgE,OAAO,CAAC/D,WAAW,EACnBzX,GAAG,EACHhS,MAAM,EACN,IAAI,CAACrD,OAAO,EACZ+sB,MACF,CAAC;EAED,IAAI,CAAC3gB,OAAO,GAAGA,OAAO;;EAEtB;EACA;EACA,IAAI4S,MAAM,GAAG,IAAI,CAAChf,OAAO,CAACgf,MAAM,IAAI,IAAI;EACxC,IAAI+R,cAAc,CAAC/R,MAAM,CAAC,EAAE;IAC1B,IAAI,CAACA,MAAM,GAAGA,MAAM;IACpB;IACA,IAAI,CAAChf,OAAO,CAACgf,MAAM,GAAG,4BAA4B;IAClD,IAAI,CAAChf,OAAO,CAACgxB,kBAAkB,CAAChS,MAAM,GAAG,4BAA4B;EACvE,CAAC,MAAM;IACL,IAAI,CAACA,MAAM,GAAG,IAAI;EACpB;EAEA,IAAI,CAAChb,QAAQ,GAAG,IAAIkoB,QAAQ,CAAC,IAAI,CAAC3f,KAAK,EAAE,IAAI,CAACvM,OAAO,CAAC;EACtD,IAAI,CAAC8wB,SAAS,GAAGA,SAAS;EAC1BG,kBAAkB,CAACjxB,OAAO,CAAC;EAC3B,IAAI,CAACkxB,SAAS,GAAG,IAAI;EACrB,IAAI,CAACC,aAAa,GAAG,MAAM;AAC7B;AAEA,IAAI/M,sBAAc,GAAG;EACnBwB,QAAQ,EAAE,CAAC;EACX+J,cAAc,EAAE;AAClB,CAAC;AAEDkB,OAAO,CAAC/D,WAAW,GAAG,IAAIwC,WAAW,CAAClL,sBAAc,CAAC;AAErDyM,OAAO,CAAC11B,SAAS,CAACi2B,MAAM,GAAG,UAAUpxB,OAAO,EAAE;EAC5C6wB,OAAO,CAAC/D,WAAW,CAAC4C,eAAe,CAAC1vB,OAAO,CAAC;EAC5C,OAAO,IAAI;AACb,CAAC;AAED6wB,OAAO,CAAC11B,SAAS,CAAC4R,SAAS,GAAG,UAAU/M,OAAO,EAAEqxB,WAAW,EAAE;EAC5D,IAAIrkB,UAAU,GAAG,IAAI,CAAChN,OAAO;EAC7B,IAAIyI,OAAO,GAAG,CAAC,CAAC;EAChB,IAAI4oB,WAAW,EAAE;IACf5oB,OAAO,GAAG;MAAEA,OAAO,EAAE4oB;IAAY,CAAC;EACpC;EAEA,IAAI,CAACrxB,OAAO,GAAG3B,KAAO,CAAC2O,UAAU,EAAEhN,OAAO,EAAEyI,OAAO,CAAC;;EAEpD;EACA;EACA,IAAIuW,MAAM,GAAG,IAAI,CAAChf,OAAO,CAACgf,MAAM,IAAI,IAAI;EACxC,IAAI+R,cAAc,CAAC/R,MAAM,CAAC,EAAE;IAC1B,IAAI,CAACA,MAAM,GAAGA,MAAM;IACpB;IACA,IAAI,CAAChf,OAAO,CAACgf,MAAM,GAAG,4BAA4B;IAClD,IAAI,CAAChf,OAAO,CAACgxB,kBAAkB,CAAChS,MAAM,GAAG,4BAA4B;EACvE,CAAC,MAAM;IACL,IAAI,CAACA,MAAM,GAAG,IAAI;EACpB;EAEA,IAAI,CAAChb,QAAQ,IAAI,IAAI,CAACA,QAAQ,CAAC+I,SAAS,CAAC,IAAI,CAAC/M,OAAO,CAAC;EACtD,IAAI,CAAC8wB,SAAS,IAAI,IAAI,CAACA,SAAS,CAAC/jB,SAAS,CAAC,IAAI,CAAC/M,OAAO,CAAC;EACxDixB,kBAAkB,CAACjxB,OAAO,CAAC;EAC3B,IAAI,CAACoxB,MAAM,CAAC,IAAI,CAACpxB,OAAO,CAAC;EAEzB,IAAI+wB,cAAc,CAAC/wB,OAAO,CAACgf,MAAM,CAAC,EAAE;IAClC,IAAI,CAACA,MAAM,GAAGhf,OAAO,CAACgf,MAAM;EAC9B;EAEA,OAAO,IAAI;AACb,CAAC;AAED6R,OAAO,CAAC11B,SAAS,CAAC4N,GAAG,GAAG,UAAUjE,IAAI,EAAE;EACtC,IAAIM,KAAK,GAAG,IAAI,CAACksB,gBAAgB,CAAC,CAAC;EACnC,OAAO,IAAI,CAACC,IAAI,CAACnsB,KAAK,EAAEN,IAAI,CAAC;AAC/B,CAAC;AAED+rB,OAAO,CAAC11B,SAAS,CAACuC,KAAK,GAAG,UAAUoH,IAAI,EAAE;EACxC,IAAI,CAACysB,IAAI,CAAC,OAAO,EAAEzsB,IAAI,CAAC;AAC1B,CAAC;AAED+rB,OAAO,CAAC11B,SAAS,CAACwC,IAAI,GAAG,UAAUmH,IAAI,EAAE;EACvC,IAAI,CAACysB,IAAI,CAAC,MAAM,EAAEzsB,IAAI,CAAC;AACzB,CAAC;AAED+rB,OAAO,CAAC11B,SAAS,CAACggB,IAAI,GAAG,UAAUrW,IAAI,EAAE;EACvC,IAAI,CAACysB,IAAI,CAAC,SAAS,EAAEzsB,IAAI,CAAC;AAC5B,CAAC;AAED+rB,OAAO,CAAC11B,SAAS,CAACyC,OAAO,GAAG,UAAUkH,IAAI,EAAE;EAC1C,IAAI,CAACysB,IAAI,CAAC,SAAS,EAAEzsB,IAAI,CAAC;AAC5B,CAAC;AAED+rB,OAAO,CAAC11B,SAAS,CAAC0C,KAAK,GAAG,UAAUiH,IAAI,EAAE;EACxC,IAAI,CAACysB,IAAI,CAAC,OAAO,EAAEzsB,IAAI,CAAC;AAC1B,CAAC;AAED+rB,OAAO,CAAC11B,SAAS,CAAC2C,QAAQ,GAAG,UAAUgH,IAAI,EAAE;EAC3C,IAAI,CAACysB,IAAI,CAAC,UAAU,EAAEzsB,IAAI,CAAC;AAC7B,CAAC;AAED+rB,OAAO,CAAC11B,SAAS,CAACozB,IAAI,GAAG,UAAUnqB,QAAQ,EAAE;EAC3C,IAAI,CAACmI,KAAK,CAACgiB,IAAI,CAACnqB,QAAQ,CAAC;AAC3B,CAAC;AAEDysB,OAAO,CAAC11B,SAAS,CAACoT,YAAY,GAAG,UAAUhS,IAAI,EAAEkK,QAAQ,EAAErB,KAAK,EAAE;EAChE,OAAO,IAAI,CAAC0rB,SAAS,IAAI,IAAI,CAACA,SAAS,CAACviB,YAAY,CAAChS,IAAI,EAAEkK,QAAQ,EAAErB,KAAK,CAAC;AAC7E,CAAC;AAEDyrB,OAAO,CAAC11B,SAAS,CAACmX,uBAAuB,GAAG,UAAUC,EAAE,EAAE;EACxD,OAAO,IAAI,CAACue,SAAS,IAAI,IAAI,CAACA,SAAS,CAACxe,uBAAuB,CAACC,EAAE,CAAC;AACrE,CAAC;AAEDse,OAAO,CAAC11B,SAAS,CAACsX,WAAW,GAAG,UAAUF,EAAE,EAAE;EAC5C,OAAO,IAAI,CAACue,SAAS,IAAI,IAAI,CAACA,SAAS,CAACre,WAAW,CAACF,EAAE,CAAC;AACzD,CAAC;AAEDse,OAAO,CAAC11B,SAAS,CAACkqB,gBAAgB,GAAG,UAAUvgB,IAAI,EAAE;EACnD,OAAO,IAAI,CAACuQ,GAAG,CAACgQ,gBAAgB,CAACvgB,IAAI,CAAC;AACxC,CAAC;AAED+rB,OAAO,CAAC11B,SAAS,CAACq2B,eAAe,GAAG,UAAUhM,WAAW,EAAE;EACzD,IAAI,CAACnQ,GAAG,CAACkQ,eAAe,CAACC,WAAW,CAAC;AACvC,CAAC;;AAED;;AAEAqL,OAAO,CAAC11B,SAAS,CAACo2B,IAAI,GAAG,UAAUve,YAAY,EAAElO,IAAI,EAAE;EACrD,IAAIV,QAAQ;EACZ,IAAIU,IAAI,CAACV,QAAQ,EAAE;IACjBA,QAAQ,GAAGU,IAAI,CAACV,QAAQ;IACxB,OAAOU,IAAI,CAACV,QAAQ;EACtB;EACA,IAAI,IAAI,CAACpE,OAAO,CAACyxB,qBAAqB,IAAI,IAAI,CAACC,gBAAgB,CAAC5sB,IAAI,CAAC,EAAE;IACrE,IAAIV,QAAQ,EAAE;MACZ,IAAIvG,KAAK,GAAG,IAAIrD,KAAK,CAAC,wBAAwB,CAAC;MAC/CqD,KAAK,CAACiH,IAAI,GAAGA,IAAI;MACjBV,QAAQ,CAACvG,KAAK,CAAC;IACjB;IACA;EACF;EACA,IAAI;IACFiH,IAAI,CAACM,KAAK,GAAGN,IAAI,CAACM,KAAK,IAAI4N,YAAY;IAEvC,IAAI,CAAC2e,kBAAkB,CAAC7sB,IAAI,CAAC;;IAE7B;IACA,IAAI,CAAC8sB,eAAe,CAAC9sB,IAAI,CAAC;IAE1B,IAAMgsB,SAAS,GAAG,IAAI,CAACA,SAAS;IAChC,IAAIA,SAAS,EAAE;MACbA,SAAS,CAACje,mBAAmB,CAAC/N,IAAI,CAAC;MACnCA,IAAI,CAAC+sB,eAAe,GAAGf,SAAS,CAAC1jB,UAAU,CAAC,CAAC,IAAI,EAAE;IACrD;IAEA,IAAI,CAACpJ,QAAQ,CAAC+E,GAAG,CAACjE,IAAI,EAAEV,QAAQ,CAAC;EACnC,CAAC,CAAC,OAAO3H,CAAC,EAAE;IACV,IAAI2H,QAAQ,EAAE;MACZA,QAAQ,CAAC3H,CAAC,CAAC;IACb;IACA,IAAI,CAAC4G,MAAM,CAACxF,KAAK,CAACpB,CAAC,CAAC;EACtB;AACF,CAAC;AAEDo0B,OAAO,CAAC11B,SAAS,CAACw2B,kBAAkB,GAAG,UAAU7sB,IAAI,EAAE;EAAA,IAAAuH,aAAA,EAAAylB,cAAA;EACrD,IAAM9b,IAAI,IAAA3J,aAAA,GAAG,IAAI,CAACD,OAAO,cAAAC,aAAA,uBAAZA,aAAA,CAAc8R,OAAO,CAAC,CAAC;EAEpC,IAAMtX,UAAU,GAAG,CACjB;IAAE/H,GAAG,EAAE,YAAY;IAAEnD,KAAK,GAAAm2B,cAAA,GAAE,IAAI,CAAC1lB,OAAO,cAAA0lB,cAAA,uBAAZA,cAAA,CAAcC;EAAU,CAAC,EACrD;IAAEjzB,GAAG,EAAE,SAAS;IAAEnD,KAAK,EAAEqa,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEsB;EAAO,CAAC,EACvC;IAAExY,GAAG,EAAE,UAAU;IAAEnD,KAAK,EAAEqa,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEoB;EAAQ,CAAC,CAC1C;EACD,IAAItS,IAAI,CAAC8lB,WAAW,EAAE;IACpB/jB,UAAU,CAACxG,IAAI,CAAC;MAAEvB,GAAG,EAAE,aAAa;MAAEnD,KAAK,EAAE;IAAO,CAAC,CAAC;EACxD;EACA0C,iBAAmB,CAACyG,IAAI,CAACE,IAAI,EAAE6B,UAAU,CAAC;EAE1CmP,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEtH,QAAQ,CAAC,oBAAoB,EAAE,CACnC;IAAE5P,GAAG,EAAE,yBAAyB;IAAEnD,KAAK,EAAEmJ,IAAI,CAAC3H;EAAK,CAAC,CACrD,CAAC;AACJ,CAAC;AAED0zB,OAAO,CAAC11B,SAAS,CAACm2B,gBAAgB,GAAG,YAAY;EAC/C,OAAO,IAAI,CAACtxB,OAAO,CAAC6b,QAAQ,IAAI,OAAO;AACzC,CAAC;AAEDgV,OAAO,CAAC11B,SAAS,CAACu2B,gBAAgB,GAAG,UAAU5sB,IAAI,EAAE;EACnD,IAAI,CAACA,IAAI,CAAC8lB,WAAW,EAAE;IACrB,OAAO,KAAK;EACd;EACA,IAAIoH,QAAQ,GAAGC,gBAAgB,CAACntB,IAAI,CAAC;EACrC,IAAI,IAAI,CAACqsB,aAAa,KAAKa,QAAQ,EAAE;IACnC,OAAO,IAAI;EACb;EACA,IAAI,CAACd,SAAS,GAAGpsB,IAAI,CAACxB,GAAG;EACzB,IAAI,CAAC6tB,aAAa,GAAGa,QAAQ;EAC7B,OAAO,KAAK;AACd,CAAC;AAEDnB,OAAO,CAAC11B,SAAS,CAACy2B,eAAe,GAAG,UAAU9sB,IAAI,EAAE;EAClD;EACA;EACA,IAAI,IAAI,CAACka,MAAM,EAAE;IACf;IACA,IAAIhJ,IAAI,GAAG,IAAI,CAACgJ,MAAM,CAAC3I,KAAK,CAAC,CAAC,CAACvC,MAAM,CAAC,CAAC;IAEvC,IAAIoe,YAAY,CAAClc,IAAI,CAAC,EAAE;MACtBA,IAAI,CAACmc,MAAM,CAAC,oBAAoB,EAAErtB,IAAI,CAAC3H,IAAI,CAAC;MAC5C6Y,IAAI,CAACmc,MAAM,CAAC,mBAAmB,EAAE,IAAI,CAAC;MACtCnc,IAAI,CAACmc,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;MAC1Bnc,IAAI,CAACmc,MAAM,CACT,kBAAkB,yCAAA9pB,MAAA,CACqBvD,IAAI,CAAC3H,IAAI,CAClD,CAAC;MACD6Y,IAAI,CAACmc,MAAM,CACT,wBAAwB,+CAAA9pB,MAAA,CACqBvD,IAAI,CAAC3H,IAAI,CACxD,CAAC;;MAED;MACA,IAAIi1B,iBAAiB,GAAGpc,IAAI,CAACpT,OAAO,CAAC,CAAC,CAACyvB,QAAQ,CAAC,CAAC;MACjD,IAAIC,kBAAkB,GAAGtc,IAAI,CAACpT,OAAO,CAAC,CAAC,CAAC2vB,SAAS,CAAC,CAAC;MAEnD,IAAIztB,IAAI,CAACX,MAAM,EAAE;QACfW,IAAI,CAACX,MAAM,CAACquB,mBAAmB,GAAGJ,iBAAiB;QACnDttB,IAAI,CAACX,MAAM,CAACsuB,oBAAoB,GAAGH,kBAAkB;MACvD,CAAC,MAAM;QACLxtB,IAAI,CAACX,MAAM,GAAG;UACZquB,mBAAmB,EAAEJ,iBAAiB;UACtCK,oBAAoB,EAAEH;QACxB,CAAC;MACH;IACF;EACF;AACF,CAAC;AAED,SAASL,gBAAgBA,CAACntB,IAAI,EAAE;EAC9B,IAAI7C,OAAO,GAAG6C,IAAI,CAAC7C,OAAO,IAAI,EAAE;EAChC,IAAIkB,KAAK,GAAG,CAAC2B,IAAI,CAACxB,GAAG,IAAI,CAAC,CAAC,EAAEH,KAAK,IAAInH,MAAM,CAAC8I,IAAI,CAACxB,GAAG,CAAC;EACtD,OAAOrB,OAAO,GAAG,IAAI,GAAGkB,KAAK;AAC/B;;AAEA;AACA;AACA;AACA,SAAS8tB,kBAAkBA,CAACjxB,OAAO,EAAE;EACnC,IAAIA,OAAO,CAAC0yB,eAAe,EAAE;IAC3Bl4B,KAAK,CAACk4B,eAAe,GAAG1yB,OAAO,CAAC0yB,eAAe;EACjD;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS3B,cAAcA,CAAC/R,MAAM,EAAE;EAC9B,IAAI,CAACA,MAAM,EAAE;IACX,OAAO,KAAK;EACd;EAEA,IAAI,CAACA,MAAM,CAAC3I,KAAK,IAAI,OAAO2I,MAAM,CAAC3I,KAAK,KAAK,UAAU,EAAE;IACvD,OAAO,KAAK;EACd;EAEA,IAAIA,KAAK,GAAG2I,MAAM,CAAC3I,KAAK,CAAC,CAAC;EAE1B,IAAI,CAACA,KAAK,IAAI,CAACA,KAAK,CAACvC,MAAM,IAAI,OAAOuC,KAAK,CAACvC,MAAM,KAAK,UAAU,EAAE;IACjE,OAAO,KAAK;EACd;EAEA,OAAO,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA,SAASoe,YAAYA,CAAClc,IAAI,EAAE;EAC1B,IAAI,CAACA,IAAI,IAAI,CAACA,IAAI,CAACpT,OAAO,IAAI,OAAOoT,IAAI,CAACpT,OAAO,KAAK,UAAU,EAAE;IAChE,OAAO,KAAK;EACd;EAEA,IAAIyU,WAAW,GAAGrB,IAAI,CAACpT,OAAO,CAAC,CAAC;EAEhC,IACE,CAACyU,WAAW,IACZ,CAACA,WAAW,CAACgb,QAAQ,IACrB,CAAChb,WAAW,CAACkb,SAAS,IACtB,OAAOlb,WAAW,CAACgb,QAAQ,KAAK,UAAU,IAC1C,OAAOhb,WAAW,CAACkb,SAAS,KAAK,UAAU,EAC3C;IACA,OAAO,KAAK;EACd;EAEA,OAAO,IAAI;AACb;AAEA,4CAAe1B,OAAO,E;;AC9TtB;AACA;AACA;AACA,qDAAe;EACbzE,OAAO,EAAE,KAAK;EACd7K,QAAQ,EAAE;AACZ,CAAC,E;;ACNiC;AAElC,SAASoR,aAAaA,CAAC7tB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EAC9C,IAAIU,IAAI,CAAC8lB,WAAW,EAAE;IACpB9lB,IAAI,CAACE,IAAI,CAAC4lB,WAAW,GAAG,IAAI;EAC9B;EACA,IAAI9lB,IAAI,CAACI,aAAa,EAAE;IACtBJ,IAAI,CAACE,IAAI,CAACE,aAAa,GAAGJ,IAAI,CAACI,aAAa;EAC9C;EACAd,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAAS8tB,iBAAiBA,CAAC9tB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EAClD,IAAIyuB,cAAc,GAAG7yB,OAAO,CAACyI,OAAO,IAAI,CAAC,CAAC;EAC1C,IAAIoqB,cAAc,CAACxkB,IAAI,EAAE;IACvB,OAAOwkB,cAAc,CAACxkB,IAAI;EAC5B;EAEAvJ,IAAI,CAACE,IAAI,GAAG3G,KAAO,CAACyG,IAAI,CAACE,IAAI,EAAE6tB,cAAc,CAAC;EAC9CzuB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAASguB,gBAAgBA,CAAChuB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EACjD,IAAIU,IAAI,CAAC+sB,eAAe,EAAE;IACxBxzB,GAAK,CAACyG,IAAI,EAAE,qBAAqB,EAAEA,IAAI,CAAC+sB,eAAe,CAAC;EAC1D;EACAztB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAASiuB,mBAAmBA,CAACjuB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EACpD,IAAI,CAACU,IAAI,CAAC7C,OAAO,EAAE;IACjBmC,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;IACpB;EACF;EACA,IAAIkuB,SAAS,GAAG,yBAAyB;EACzC,IAAIjT,KAAK,GAAG1hB,GAAK,CAACyG,IAAI,EAAEkuB,SAAS,CAAC;EAClC,IAAI,CAACjT,KAAK,EAAE;IACViT,SAAS,GAAG,iBAAiB;IAC7BjT,KAAK,GAAG1hB,GAAK,CAACyG,IAAI,EAAEkuB,SAAS,CAAC;EAChC;EACA,IAAIjT,KAAK,EAAE;IACT,IAAI,EAAEA,KAAK,CAACM,SAAS,IAAIN,KAAK,CAACM,SAAS,CAACC,WAAW,CAAC,EAAE;MACrDjiB,GAAK,CAACyG,IAAI,EAAEkuB,SAAS,GAAG,wBAAwB,EAAEluB,IAAI,CAAC7C,OAAO,CAAC;MAC/DmC,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;MACpB;IACF;IACA,IAAI6rB,KAAK,GAAGtyB,GAAK,CAACyG,IAAI,EAAEkuB,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnD,IAAIC,QAAQ,GAAG50B,KAAO,CAACsyB,KAAK,EAAE;MAAE1uB,OAAO,EAAE6C,IAAI,CAAC7C;IAAQ,CAAC,CAAC;IACxD5D,GAAK,CAACyG,IAAI,EAAEkuB,SAAS,GAAG,QAAQ,EAAEC,QAAQ,CAAC;EAC7C;EACA7uB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAASsX,aAAaA,CAAC/Y,MAAM,EAAE;EAC7B,OAAO,UAAUyB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;IACxC,IAAI8uB,OAAO,GAAG70B,KAAO,CAACyG,IAAI,CAAC;IAC3B,IAAI4K,QAAQ,GAAG,IAAI;IACnB,IAAI;MACF,IAAIrR,UAAY,CAAC2B,OAAO,CAAC0c,SAAS,CAAC,EAAE;QACnChN,QAAQ,GAAG1P,OAAO,CAAC0c,SAAS,CAACwW,OAAO,CAACluB,IAAI,EAAEF,IAAI,CAAC;MAClD;IACF,CAAC,CAAC,OAAOrI,CAAC,EAAE;MACVuD,OAAO,CAAC0c,SAAS,GAAG,IAAI;MACxBrZ,MAAM,CAACxF,KAAK,CACV,+EAA+E,EAC/EpB,CACF,CAAC;MACD2H,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;MACpB;IACF;IACA,IAAIzG,SAAW,CAACqR,QAAQ,CAAC,EAAE;MACzBA,QAAQ,CAAC9S,IAAI,CACX,UAAUu2B,YAAY,EAAE;QACtB,IAAIA,YAAY,EAAE;UAChBD,OAAO,CAACluB,IAAI,GAAGmuB,YAAY;QAC7B;QACA/uB,QAAQ,CAAC,IAAI,EAAE8uB,OAAO,CAAC;MACzB,CAAC,EACD,UAAUr1B,KAAK,EAAE;QACfuG,QAAQ,CAACvG,KAAK,EAAEiH,IAAI,CAAC;MACvB,CACF,CAAC;IACH,CAAC,MAAM;MACLV,QAAQ,CAAC,IAAI,EAAE8uB,OAAO,CAAC;IACzB;EACF,CAAC;AACH;AAEA,SAASE,kBAAkBA,CAACtuB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EACnD,IAAI,CAACpE,OAAO,CAACqzB,UAAU,EAAE;IACvB,OAAOjvB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;EAC7B;EACA,IAAIwuB,SAAS,GAAG,gBAAgB;EAChC,IAAInvB,MAAM,GAAG9F,GAAK,CAACyG,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;EAC7CX,MAAM,CAACmvB,SAAS,CAAC,GAAGtzB,OAAO;EAC3B8E,IAAI,CAACE,IAAI,CAACb,MAAM,GAAGA,MAAM;EACzBC,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAASyuB,iBAAiBA,CAACvzB,OAAO,EAAE1F,IAAI,EAAE;EACxC,IAAI+D,UAAY,CAAC2B,OAAO,CAAC1F,IAAI,CAAC,CAAC,EAAE;IAC/B0F,OAAO,CAAC1F,IAAI,CAAC,GAAG0F,OAAO,CAAC1F,IAAI,CAAC,CAACG,QAAQ,CAAC,CAAC;EAC1C;AACF;AAEA,SAAS+4B,oBAAoBA,CAAC1uB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EACrD,IAAIqvB,iBAAiB,GAAGzzB,OAAO,CAACgxB,kBAAkB;;EAElD;EACAuC,iBAAiB,CAACE,iBAAiB,EAAE,WAAW,CAAC;EACjDF,iBAAiB,CAACE,iBAAiB,EAAE,aAAa,CAAC;EACnDF,iBAAiB,CAACE,iBAAiB,EAAE,gBAAgB,CAAC;EAEtD,OAAOA,iBAAiB,CAAC1zB,WAAW;EACpC+E,IAAI,CAACE,IAAI,CAAChB,QAAQ,CAAC0vB,kBAAkB,GAAGD,iBAAiB;EACzDrvB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAAS6uB,iBAAiBA,CAAC7uB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EAClD,IAAII,UAAU,GAAGnG,KAAO,CACtByG,IAAI,CAACd,QAAQ,CAAC4vB,MAAM,CAAC5vB,QAAQ,CAACQ,UAAU,EACxCM,IAAI,CAACN,UACP,CAAC;EAED,IAAInG,GAAK,CAACyG,IAAI,EAAE,kBAAkB,CAAC,EAAE;IACnCN,UAAU,CAACqvB,YAAY,GAAG,IAAI;EAChC;EAEA,IAAI/uB,IAAI,CAAC8lB,WAAW,EAAE;IACpBpmB,UAAU,CAACsvB,WAAW,GAAGhvB,IAAI,CAAC8lB,WAAW;EAC3C;EAEA,IAAI9lB,IAAI,CAACxB,GAAG,EAAE;IACZ,IAAI;MACFkB,UAAU,CAACuvB,SAAS,GAAG;QACrB9xB,OAAO,EAAE6C,IAAI,CAACxB,GAAG,CAACrB,OAAO;QACzB3H,IAAI,EAAEwK,IAAI,CAACxB,GAAG,CAAChJ,IAAI;QACnB05B,gBAAgB,EAAElvB,IAAI,CAACxB,GAAG,CAAC+F,WAAW,IAAIvE,IAAI,CAACxB,GAAG,CAAC+F,WAAW,CAAC/O,IAAI;QACnE+wB,QAAQ,EAAEvmB,IAAI,CAACxB,GAAG,CAACikB,QAAQ;QAC3B/kB,IAAI,EAAEsC,IAAI,CAACxB,GAAG,CAACwlB,UAAU;QACzBrmB,MAAM,EAAEqC,IAAI,CAACxB,GAAG,CAACylB,YAAY;QAC7B5lB,KAAK,EAAE2B,IAAI,CAACxB,GAAG,CAACH;MAClB,CAAC;IACH,CAAC,CAAC,OAAO1G,CAAC,EAAE;MACV+H,UAAU,CAACuvB,SAAS,GAAG;QAAEE,MAAM,EAAEj4B,MAAM,CAACS,CAAC;MAAE,CAAC;IAC9C;EACF;EAEAqI,IAAI,CAACE,IAAI,CAAChB,QAAQ,CAACQ,UAAU,GAAGnG,KAAO,CACrCyG,IAAI,CAACE,IAAI,CAAChB,QAAQ,CAACQ,UAAU,EAC7BA,UACF,CAAC;EACDJ,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;;;;;;;;;ACzJA;AACA;AACA;AACmD;AAE5C,IAAM8D,WAAW,MAAAP,MAAA,CAAAqN,0BAAA,CACnBoQ,iBAAiB,IACpB,WAAW,EACX,aAAa,EACb,YAAY,EACZ,SAAS,EACT,OAAO,EACP,UAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,MAAM,EACN,MAAM,EACN,MAAM,EACN,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,yBAAyB,EACzB,QAAQ,EACR,WAAW,EACX,UAAU,EACV,SAAS,EACT,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,SAAS,EACT,QAAQ,EACT;;AAED;AACA,qDAAe;EAAEld,WAAW,EAAXA;AAAY,CAAC,E;;AClD9B,SAASsrB,yBAAyBA,CAACp3B,MAAM,EAAEq3B,OAAO,EAAEC,IAAI,EAAE;EACxD,IAAI,CAACt3B,MAAM,EAAE;IACX;EACF;EACA,IAAIu3B,UAAU;EAEd,IAAI,OAAOF,OAAO,CAACG,kBAAkB,KAAK,UAAU,EAAE;IACpDD,UAAU,GAAGF,OAAO,CAACG,kBAAkB;EACzC,CAAC,MAAM,IAAIx3B,MAAM,CAACy3B,OAAO,EAAE;IACzBF,UAAU,GAAGv3B,MAAM,CAACy3B,OAAO;IAC3B,OAAOF,UAAU,CAACC,kBAAkB,EAAE;MACpCD,UAAU,GAAGA,UAAU,CAACC,kBAAkB;IAC5C;IACAH,OAAO,CAACG,kBAAkB,GAAGD,UAAU;EACzC;EAEAF,OAAO,CAACK,qBAAqB,CAAC,CAAC;EAE/B,IAAIrgB,EAAE,GAAG,SAALA,EAAEA,CAAA,EAAe;IACnB,IAAIpQ,IAAI,GAAGuJ,KAAK,CAACnS,SAAS,CAAC0I,KAAK,CAACnJ,IAAI,CAAC+O,SAAS,EAAE,CAAC,CAAC;IACnDgrB,qBAAqB,CAAC33B,MAAM,EAAEq3B,OAAO,EAAEE,UAAU,EAAEtwB,IAAI,CAAC;EAC1D,CAAC;EACD,IAAIqwB,IAAI,EAAE;IACRjgB,EAAE,CAACmgB,kBAAkB,GAAGD,UAAU;EACpC;EACAv3B,MAAM,CAACy3B,OAAO,GAAGpgB,EAAE;AACrB;AAEA,SAASsgB,qBAAqBA,CAAC33B,MAAM,EAAEO,CAAC,EAAEq3B,GAAG,EAAE3wB,IAAI,EAAE;EACnD,IAAIjH,MAAM,CAAC63B,oBAAoB,EAAE;IAC/B,IAAI,CAAC5wB,IAAI,CAAC,CAAC,CAAC,EAAE;MACZA,IAAI,CAAC,CAAC,CAAC,GAAGjH,MAAM,CAAC63B,oBAAoB;IACvC;IACA,IAAI,CAAC5wB,IAAI,CAAC,CAAC,CAAC,EAAE;MACZA,IAAI,CAAC,CAAC,CAAC,GAAGjH,MAAM,CAAC63B,oBAAoB,CAACC,eAAe;IACvD;IACA93B,MAAM,CAAC63B,oBAAoB,GAAG,IAAI;EACpC;EAEA,IAAIppB,GAAG,GAAGlO,CAAC,CAACw3B,uBAAuB,CAACtgB,KAAK,CAAClX,CAAC,EAAE0G,IAAI,CAAC;EAElD,IAAI2wB,GAAG,EAAE;IACPA,GAAG,CAACngB,KAAK,CAACzX,MAAM,EAAEiH,IAAI,CAAC;EACzB;;EAEA;EACA;EACA;EACA,IAAIwH,GAAG,KAAK,WAAW,EAAE;IACvBlO,CAAC,CAACy3B,sBAAsB,IAAI,CAAC,CAAC,CAAC;EACjC;AACF;AAEA,SAASC,0BAA0BA,CAACj4B,MAAM,EAAEq3B,OAAO,EAAEC,IAAI,EAAE;EACzD,IAAI,CAACt3B,MAAM,EAAE;IACX;EACF;EAEA,IACE,OAAOA,MAAM,CAACk4B,WAAW,KAAK,UAAU,IACxCl4B,MAAM,CAACk4B,WAAW,CAACC,aAAa,EAChC;IACAn4B,MAAM,CAACo4B,mBAAmB,CAAC,oBAAoB,EAAEp4B,MAAM,CAACk4B,WAAW,CAAC;EACtE;EAEA,IAAIG,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAaC,GAAG,EAAE;IACpC,IAAIC,MAAM,EAAEC,OAAO,EAAEC,MAAM;IAC3B,IAAI;MACFF,MAAM,GAAGD,GAAG,CAACC,MAAM;IACrB,CAAC,CAAC,OAAOjuB,EAAE,EAAE;MACXiuB,MAAM,GAAGj2B,SAAS;IACpB;IACA,IAAI;MACFk2B,OAAO,GAAGF,GAAG,CAACE,OAAO;IACvB,CAAC,CAAC,OAAOluB,EAAE,EAAE;MACXkuB,OAAO,GAAG,yDAAyD;IACrE;IACA,IAAI;MACFC,MAAM,GAAGH,GAAG,CAACG,MAAM;MACnB,IAAI,CAACF,MAAM,IAAIE,MAAM,EAAE;QACrBF,MAAM,GAAGE,MAAM,CAACF,MAAM;QACtBC,OAAO,GAAGC,MAAM,CAACD,OAAO;MAC1B;IACF,CAAC,CAAC,OAAOluB,EAAE,EAAE;MACX;IAAA;IAEF,IAAI,CAACiuB,MAAM,EAAE;MACXA,MAAM,GAAG,wDAAwD;IACnE;IAEA,IAAIlB,OAAO,IAAIA,OAAO,CAACqB,wBAAwB,EAAE;MAC/CrB,OAAO,CAACqB,wBAAwB,CAACH,MAAM,EAAEC,OAAO,CAAC;IACnD;EACF,CAAC;EACDH,gBAAgB,CAACF,aAAa,GAAGb,IAAI;EACrCt3B,MAAM,CAACk4B,WAAW,GAAGG,gBAAgB;EACrCr4B,MAAM,CAAC24B,gBAAgB,CAAC,oBAAoB,EAAEN,gBAAgB,CAAC;AACjE;;;ACjGmC;AAEnC,SAASrK,WAAWA,CAAChmB,IAAI,EAAEwlB,QAAQ,EAAE;EACnC,IAAIjsB,GAAK,CAACisB,QAAQ,EAAE,iCAAiC,CAAC,EAAE;IACtD,OAAO,CAACjsB,GAAK,CAACyG,IAAI,EAAE,2BAA2B,CAAC;EAClD;EACA,OAAO,IAAI;AACb;;;ACPA;AACA;AACA;AACA;AACA,oDAAe;EACbsnB,OAAO,EAAE,KAAK;EAAE;EAChBsJ,SAAS,EAAE,IAAI;EAAE;;EAEjB;EACAC,eAAe,EAAE;IACfC,aAAa,EAAE,GAAG;IAClBC,WAAW,EAAE,GAAG;IAChBC,YAAY,EAAE;EAChB,CAAC;EACDC,QAAQ,EAAE,CACR;IACEx5B,IAAI,EAAE,YAAY;IAClB6I,KAAK,EAAE,CAAC,OAAO,EAAE,UAAU;EAC7B,CAAC,CACF;EAED1H,KAAK,EAAE;IACLs4B,SAAS,EAAE,IAAI;IAAE;IACjBC,QAAQ,EAAE,KAAK,CAAE;EACnB,CAAC;EAED;EACAC,gBAAgB,EAAE,IAAI;EAAE;EACxBC,YAAY,EAAE,KAAK;EAAE;EACrBC,YAAY,EAAE,IAAI;EAAE;;EAEpB;EACA;EACA;EACAC,gBAAgB,EAAE;IAChBl4B,QAAQ,EAAE,IAAI;IACdqc,KAAK,EAAE,KAAK;IACZ8b,GAAG,EAAE,KAAK;IACVC,IAAI,EAAE,KAAK;IACXC,KAAK,EAAE,KAAK;IACZC,IAAI,EAAE,KAAK;IACX,gBAAgB,EAAE,KAAK;IACvBC,KAAK,EAAE,KAAK;IACZC,MAAM,EAAE,KAAK;IACbhX,KAAK,EAAE,KAAK;IACZvhB,MAAM,EAAE,KAAK;IACb+Y,IAAI,EAAE,KAAK;IACXnZ,GAAG,EAAE,KAAK;IACV44B,IAAI,EAAE;EACR,CAAC;EAED;EACAC,aAAa,EAAE,KAAK;EAEpB;EACAC,UAAU,EAAE,UAAU;EACtBC,aAAa,EAAE,SAAS;EACxBC,WAAW,EAAE,WAAW;EAExB;EACA;EACAC,cAAc,EAAE;IACdC,MAAM,EAAE,IAAI;IAAE;IACdC,OAAO,EAAE,IAAI;IAAE;IACfC,WAAW,EAAE,IAAI;IAAE;IACnBC,cAAc,EAAE,IAAI;IAAE;IACtBC,oBAAoB,EAAE,IAAI;IAAE;IAC5BC,cAAc,EAAE,IAAI;IAAE;IACtBC,cAAc,EAAE,IAAI;IAAE;IACtBC,iBAAiB,EAAE,IAAI;IAAE;IACzBC,kBAAkB,EAAE,IAAI;IAAE;IAC1BC,oBAAoB,EAAE,IAAI,CAAE;EAC9B;;EAEA;EACA;EACA;EACA;EACA;;EAEA;EACA;AACF,CAAC,E;;AClF2C;AACV;AACC;AAEnC,SAASC,kBAAkBA,CAAC9yB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EACnD,IAAIU,IAAI,CAACxB,GAAG,IAAIhB,WAAW,CAACgnB,KAAK,CAACxkB,IAAI,CAACxB,GAAG,CAAC,CAAChJ,IAAI,KAAK,cAAc,EAAE;IACnE,IAAIgyB,aAAa,GAAG,IAAI9xB,KAAK,CAAC,CAAC;IAC/B8xB,aAAa,CAAChyB,IAAI,GAAGwK,IAAI,CAACxB,GAAG,CAAChJ,IAAI;IAClCgyB,aAAa,CAACrqB,OAAO,GAAG6C,IAAI,CAACxB,GAAG,CAACrB,OAAO;IACxCqqB,aAAa,CAACnpB,KAAK,GAAG2B,IAAI,CAACxB,GAAG,CAACH,KAAK;IACpCmpB,aAAa,CAACzC,MAAM,GAAG/kB,IAAI,CAACxB,GAAG;IAC/BwB,IAAI,CAACxB,GAAG,GAAGgpB,aAAa;EAC1B;EACAloB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAAS+yB,mBAAmBA,CAAC/yB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EACpDU,IAAI,CAACE,IAAI,GAAGF,IAAI,CAACE,IAAI,IAAI,CAAC,CAAC;EAC3B,IAAIF,IAAI,CAACxB,GAAG,EAAE;IACZ,IAAI;MACFwB,IAAI,CAACgzB,SAAS,GACZhzB,IAAI,CAACxB,GAAG,CAACy0B,gBAAgB,IACzBz1B,WAAW,CAACP,KAAK,CAAC+C,IAAI,CAACxB,GAAG,EAAEwB,IAAI,CAACO,UAAU,CAAC;MAE9C,IAAIrF,OAAO,CAACsF,eAAe,EAAE;QAC3BA,0BAAe,CAACR,IAAI,CAAC;MACvB;IACF,CAAC,CAAC,OAAOrI,CAAC,EAAE;MACV4G,UAAM,CAACxF,KAAK,CAAC,uCAAuC,EAAEpB,CAAC,CAAC;MACxD,IAAI;QACFqI,IAAI,CAAC7C,OAAO,GACV6C,IAAI,CAACxB,GAAG,CAACrB,OAAO,IAChB6C,IAAI,CAACxB,GAAG,CAACgd,WAAW,IACpBxb,IAAI,CAAC7C,OAAO,IACZjG,MAAM,CAAC8I,IAAI,CAACxB,GAAG,CAAC;MACpB,CAAC,CAAC,OAAO00B,EAAE,EAAE;QACXlzB,IAAI,CAAC7C,OAAO,GAAGjG,MAAM,CAAC8I,IAAI,CAACxB,GAAG,CAAC,IAAItH,MAAM,CAACg8B,EAAE,CAAC;MAC/C;MACA,OAAOlzB,IAAI,CAACxB,GAAG;IACjB;EACF;EACAc,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAASQ,0BAAeA,CAACR,IAAI,EAAE;EAC7B,IAAIgb,KAAK,GAAG,EAAE;EACd,IAAIxc,GAAG,GAAGwB,IAAI,CAACxB,GAAG;EAElBwc,KAAK,CAACzf,IAAI,CAACiD,GAAG,CAAC;EAEf,OAAOA,GAAG,CAACumB,MAAM,IAAIvmB,GAAG,CAACwmB,KAAK,EAAE;IAC9BxmB,GAAG,GAAGA,GAAG,CAACumB,MAAM,IAAIvmB,GAAG,CAACwmB,KAAK;IAC7BhK,KAAK,CAACzf,IAAI,CAACiD,GAAG,CAAC;EACjB;EAEAjF,eAAiB,CAACyG,IAAI,EAAEgb,KAAK,CAAC;AAChC;AAEA,SAASmY,2BAA2BA,CAACnzB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EAC5D,IAAI,CAACU,IAAI,CAAC7C,OAAO,IAAI,CAAC6C,IAAI,CAACgzB,SAAS,IAAI,CAAChzB,IAAI,CAACX,MAAM,EAAE;IACpDC,QAAQ,CAAC,IAAI5J,KAAK,CAAC,wCAAwC,CAAC,EAAE,IAAI,CAAC;EACrE;EACA4J,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAASozB,WAAWA,CAACpzB,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EAC5C,IAAI0a,WAAW,GACZ9e,OAAO,CAACyI,OAAO,IAAIzI,OAAO,CAACyI,OAAO,CAACqW,WAAW,IAAK9e,OAAO,CAAC8e,WAAW;EACzEha,IAAI,CAACE,IAAI,GAAG3G,KAAO,CAACyG,IAAI,CAACE,IAAI,EAAE;IAC7B8Z,WAAW,EAAEA,WAAW;IACxB1Z,KAAK,EAAEN,IAAI,CAACM,KAAK;IACjBmc,QAAQ,EAAEvhB,OAAO,CAACuhB,QAAQ;IAC1BtG,QAAQ,EAAE,SAAS;IACnB2V,SAAS,EAAE,YAAY;IACvB7V,QAAQ,EAAE,YAAY;IACtBod,MAAM,EAAE,CAAC,CAAC;IACVh7B,IAAI,EAAE2H,IAAI,CAAC3H,IAAI;IACf6G,QAAQ,EAAE;MACR1J,IAAI,EAAE,oBAAoB;MAC1B6b,OAAO,EAAEnW,OAAO,CAACmW;IACnB,CAAC;IACDhS,MAAM,EAAEW,IAAI,CAACX;EACf,CAAC,CAAC;EACFC,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAASszB,cAAcA,CAACt7B,MAAM,EAAE;EAC9B,OAAO,UAAUgI,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;IACxC,IAAIi0B,WAAW,GAAG,CAAC,CAAC;IAEpB,IAAIv7B,MAAM,IAAIA,MAAM,CAACyF,QAAQ,EAAE;MAC7B81B,WAAW,CAACr6B,GAAG,GAAGlB,MAAM,CAACyF,QAAQ,CAACO,IAAI;MACtCu1B,WAAW,CAACC,YAAY,GAAGx7B,MAAM,CAACyF,QAAQ,CAACnE,MAAM;IACnD;IAEA,IAAIm6B,YAAY,GAAG,YAAY;IAC/B,IAAI,CAACv4B,OAAO,CAAC8H,SAAS,EAAE;MACtBywB,YAAY,GAAG,IAAI;IACrB,CAAC,MAAM,IAAIv4B,OAAO,CAAC8H,SAAS,KAAK,IAAI,EAAE;MACrCywB,YAAY,IAAI,YAAY;IAC9B;IACA,IAAIA,YAAY,EAAEF,WAAW,CAACG,OAAO,GAAGD,YAAY;IAEpD,IAAIn9B,MAAM,CAAC8L,IAAI,CAACmxB,WAAW,CAAC,CAAC34B,MAAM,GAAG,CAAC,EAAE;MACvCrB,GAAK,CAACyG,IAAI,EAAE,cAAc,EAAEuzB,WAAW,CAAC;IAC1C;IAEAj0B,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;EACtB,CAAC;AACH;AAEA,SAAS2zB,aAAaA,CAAC37B,MAAM,EAAE;EAC7B,OAAO,UAAUgI,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;IACxC,IAAI,CAACtH,MAAM,EAAE;MACX,OAAOsH,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;IAC7B;IACA,IAAI4zB,GAAG,GAAG57B,MAAM,CAACmG,SAAS,IAAI,CAAC,CAAC;IAChC,IAAI01B,GAAG,GAAG77B,MAAM,CAAC87B,MAAM,IAAI,CAAC,CAAC;IAC7Bv6B,GAAK,CAACyG,IAAI,EAAE,aAAa,EAAE;MACzB+zB,UAAU,EAAE/zB,IAAI,CAACC,SAAS,GAAGjI,MAAM,CAACg8B,iBAAiB;MACrD/zB,SAAS,EAAEzH,IAAI,CAAC4O,KAAK,CAACpH,IAAI,CAACC,SAAS,GAAG,IAAI,CAAC;MAC5Cg0B,UAAU,EAAE;QACVC,OAAO,EAAEN,GAAG,CAACx1B,SAAS;QACtB6X,QAAQ,EAAE2d,GAAG,CAAC3d,QAAQ;QACtBke,cAAc,EAAEP,GAAG,CAACQ,aAAa;QACjCN,MAAM,EAAE;UACN3nB,KAAK,EAAE0nB,GAAG,CAAC1nB,KAAK;UAChBD,MAAM,EAAE2nB,GAAG,CAAC3nB;QACd;MACF;IACF,CAAC,CAAC;IACF5M,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;EACtB,CAAC;AACH;AAEA,SAASq0B,aAAaA,CAACr8B,MAAM,EAAE;EAC7B,OAAO,UAAUgI,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;IACxC,IAAI,CAACtH,MAAM,IAAI,CAACA,MAAM,CAACmG,SAAS,EAAE;MAChC,OAAOmB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;IAC7B;IACA,IAAIs0B,OAAO,GAAG,EAAE;IAChB,IAAIC,UAAU,GAAGv8B,MAAM,CAACmG,SAAS,CAACm2B,OAAO,IAAI,EAAE;IAC/C,IAAIE,GAAG;IACP,KAAK,IAAIh9B,CAAC,GAAG,CAAC,EAAEmD,CAAC,GAAG45B,UAAU,CAAC35B,MAAM,EAAEpD,CAAC,GAAGmD,CAAC,EAAE,EAAEnD,CAAC,EAAE;MACjDg9B,GAAG,GAAGD,UAAU,CAAC/8B,CAAC,CAAC;MACnB88B,OAAO,CAAC/4B,IAAI,CAAC;QAAE/F,IAAI,EAAEg/B,GAAG,CAACh/B,IAAI;QAAEgmB,WAAW,EAAEgZ,GAAG,CAAChZ;MAAY,CAAC,CAAC;IAChE;IACAjiB,GAAK,CAACyG,IAAI,EAAE,gCAAgC,EAAEs0B,OAAO,CAAC;IACtDh1B,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;EACtB,CAAC;AACH;AAEA,SAASy0B,OAAOA,CAACz0B,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EACxC,IAAIU,IAAI,CAACgzB,SAAS,EAAE;IAClB,IAAIhzB,IAAI,CAACgzB,SAAS,CAAC/N,UAAU,EAAE;MAC7ByP,iBAAiB,CAAC10B,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,CAAC;IAC5C,CAAC,MAAM;MACLq1B,YAAY,CAAC30B,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,CAAC;IACvC;EACF,CAAC,MAAM;IACLs1B,cAAc,CAAC50B,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,CAAC;EACzC;AACF;AAEA,SAASs1B,cAAcA,CAAC50B,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EAC/C,IAAInC,OAAO,GAAG6C,IAAI,CAAC7C,OAAO;EAC1B,IAAIkC,MAAM,GAAGW,IAAI,CAACX,MAAM;EAExB,IAAI,CAAClC,OAAO,EAAE;IACZA,OAAO,GAAG,2CAA2C;EACvD;EACA,IAAIf,MAAM,GAAG;IACXmN,IAAI,EAAEpM;EACR,CAAC;EAED,IAAIkC,MAAM,EAAE;IACVjD,MAAM,CAACyvB,KAAK,GAAGtyB,KAAO,CAAC8F,MAAM,CAAC;EAChC;EAEA9F,GAAK,CAACyG,IAAI,EAAE,WAAW,EAAE;IAAE7C,OAAO,EAAEf;EAAO,CAAC,CAAC;EAC7CkD,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAAS60B,aAAaA,CAAC70B,IAAI,EAAoB;EAAA,IAAlBgzB,SAAS,GAAAruB,SAAA,CAAA/J,MAAA,QAAA+J,SAAA,QAAArK,SAAA,GAAAqK,SAAA,MAAG,IAAI;EAC3C;EACA,IAAItG,KAAK,GAAG,CAAC20B,SAAS,IAAIhzB,IAAI,CAACgzB,SAAS,EAAE30B,KAAK;EAC/C,IACEA,KAAK,IACLA,KAAK,CAACzD,MAAM,KAAK,CAAC,IAClBoF,IAAI,CAAC80B,mBAAmB,IACxB90B,IAAI,CAAC80B,mBAAmB,CAACz2B,KAAK,EAC9B;IACAA,KAAK,GAAG2B,IAAI,CAAC80B,mBAAmB,CAACz2B,KAAK;EACxC;EACA,OAAOA,KAAK;AACd;AAEA,SAASq2B,iBAAiBA,CAAC10B,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EAClD,IAAI2lB,UAAU,GAAGjlB,IAAI,CAACgzB,SAAS,CAAC/N,UAAU;EAC1C,IAAI2B,MAAM,GAAG,EAAE;EAEf,IAAImO,gBAAgB,GAAG9P,UAAU,CAACrqB,MAAM;EACxC,KAAK,IAAIpD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGu9B,gBAAgB,EAAEv9B,CAAC,EAAE,EAAE;IACzC,IAAIyjB,KAAK,GAAG+Z,UAAU,CAACh1B,IAAI,EAAEilB,UAAU,CAACztB,CAAC,CAAC,EAAE0D,OAAO,CAAC;IACpD0rB,MAAM,CAACrrB,IAAI,CAAC0f,KAAK,CAAC;EACpB;EAEA1hB,GAAK,CAACyG,IAAI,EAAE,WAAW,EAAE;IAAE+a,WAAW,EAAE6L;EAAO,CAAC,CAAC;EACjDtnB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAAS20B,YAAYA,CAAC30B,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;EAC7C,IAAIjB,KAAK,GAAGw2B,aAAa,CAAC70B,IAAI,CAAC;EAE/B,IAAI3B,KAAK,EAAE;IACT,IAAI4c,KAAK,GAAG+Z,UAAU,CAACh1B,IAAI,EAAEA,IAAI,CAACgzB,SAAS,EAAE93B,OAAO,CAAC;IACrD3B,GAAK,CAACyG,IAAI,EAAE,WAAW,EAAE;MAAEib,KAAK,EAAEA;IAAM,CAAC,CAAC;IAC1C3b,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;EACtB,CAAC,MAAM;IACL,IAAIgzB,SAAS,GAAGhzB,IAAI,CAACgzB,SAAS;IAC9B,IAAIiC,KAAK,GAAGz3B,WAAW,CAAC0nB,eAAe,CAAC8N,SAAS,CAAC71B,OAAO,CAAC;IAC1D,IAAI+3B,SAAS,GAAGC,UAAU,CAACnC,SAAS,EAAEiC,KAAK,CAAC,CAAC,CAAC,EAAE/5B,OAAO,CAAC;IACxD,IAAIiC,OAAO,GAAG83B,KAAK,CAAC,CAAC,CAAC;IAEtBj1B,IAAI,CAAC7C,OAAO,GAAG+3B,SAAS,GAAG,IAAI,GAAG/3B,OAAO;IACzCy3B,cAAc,CAAC50B,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,CAAC;EACzC;AACF;AAEA,SAAS01B,UAAUA,CAACh1B,IAAI,EAAEgzB,SAAS,EAAE93B,OAAO,EAAE;EAC5C,IAAIsgB,WAAW,GAAGxb,IAAI,IAAIA,IAAI,CAACE,IAAI,CAACsb,WAAW;EAC/C,IAAInc,MAAM,GAAGW,IAAI,IAAIA,IAAI,CAACX,MAAM;EAChC,IAAIhB,KAAK,GAAGw2B,aAAa,CAAC70B,IAAI,EAAEgzB,SAAS,CAAC;EAE1C,IAAIiC,KAAK,GAAGz3B,WAAW,CAAC0nB,eAAe,CAAC8N,SAAS,CAAC71B,OAAO,CAAC;EAC1D,IAAI+3B,SAAS,GAAGC,UAAU,CAACnC,SAAS,EAAEiC,KAAK,CAAC,CAAC,CAAC,EAAE/5B,OAAO,CAAC;EACxD,IAAIiC,OAAO,GAAG83B,KAAK,CAAC,CAAC,CAAC;EACtB,IAAIha,KAAK,GAAG;IACVM,SAAS,EAAE;MACT6Z,KAAK,EAAEF,SAAS;MAChB/3B,OAAO,EAAEA;IACX;EACF,CAAC;EAED,IAAIqe,WAAW,EAAE;IACfP,KAAK,CAACM,SAAS,CAACC,WAAW,GAAGA,WAAW;EAC3C;EAEA,IAAInd,KAAK,EAAE;IACT,IAAIA,KAAK,CAACzD,MAAM,KAAK,CAAC,EAAE;MACtBqgB,KAAK,CAACM,SAAS,CAACld,KAAK,GAAG20B,SAAS,CAACnO,QAAQ;MAC1C5J,KAAK,CAACM,SAAS,CAACd,GAAG,GAAGvjB,MAAM,CAAC87B,SAAS,CAAClO,YAAY,CAAC;IACtD;IACA,IAAIR,UAAU;IACd,IAAIgC,KAAK;IACT,IAAIzpB,IAAI;IACR,IAAIw4B,GAAG;IACP,IAAIvjB,IAAI;IACR,IAAIwjB,aAAa;IACjB,IAAI99B,CAAC,EAAE+9B,GAAG;IAEVta,KAAK,CAACL,MAAM,GAAG,EAAE;IACjB,KAAKpjB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6G,KAAK,CAACzD,MAAM,EAAE,EAAEpD,CAAC,EAAE;MACjC8sB,UAAU,GAAGjmB,KAAK,CAAC7G,CAAC,CAAC;MACrB8uB,KAAK,GAAG;QACNC,QAAQ,EAAEjC,UAAU,CAACprB,GAAG,GAAGK,WAAa,CAAC+qB,UAAU,CAACprB,GAAG,CAAC,GAAG,WAAW;QACtEkE,MAAM,EAAEknB,UAAU,CAAC5mB,IAAI,IAAI,IAAI;QAC/B+M,MAAM,EACJ,CAAC6Z,UAAU,CAAC1mB,IAAI,IAAI0mB,UAAU,CAAC1mB,IAAI,KAAK,GAAG,GACvC,aAAa,GACb0mB,UAAU,CAAC1mB,IAAI;QACrBP,KAAK,EAAEinB,UAAU,CAAC3mB;MACpB,CAAC;MACD,IAAIzC,OAAO,CAACs6B,YAAY,EAAE;QACxBlP,KAAK,CAACptB,GAAG,GAAGorB,UAAU,CAACprB,GAAG;MAC5B;MACA,IACEotB,KAAK,CAAC7b,MAAM,IACZ6b,KAAK,CAAC7b,MAAM,CAACgrB,QAAQ,IACrBnP,KAAK,CAAC7b,MAAM,CAACgrB,QAAQ,CAAC,kBAAkB,CAAC,EACzC;QACA;MACF;MAEA54B,IAAI,GAAGw4B,GAAG,GAAGvjB,IAAI,GAAG,IAAI;MACxBwjB,aAAa,GAAGhR,UAAU,CAACxmB,OAAO,GAAGwmB,UAAU,CAACxmB,OAAO,CAAClD,MAAM,GAAG,CAAC;MAClE,IAAI06B,aAAa,EAAE;QACjBC,GAAG,GAAG/8B,IAAI,CAACE,KAAK,CAAC48B,aAAa,GAAG,CAAC,CAAC;QACnCD,GAAG,GAAG/Q,UAAU,CAACxmB,OAAO,CAACiB,KAAK,CAAC,CAAC,EAAEw2B,GAAG,CAAC;QACtC14B,IAAI,GAAGynB,UAAU,CAACxmB,OAAO,CAACy3B,GAAG,CAAC;QAC9BzjB,IAAI,GAAGwS,UAAU,CAACxmB,OAAO,CAACiB,KAAK,CAACw2B,GAAG,CAAC;MACtC;MAEA,IAAI14B,IAAI,EAAE;QACRypB,KAAK,CAACzpB,IAAI,GAAGA,IAAI;MACnB;MAEA,IAAIw4B,GAAG,IAAIvjB,IAAI,EAAE;QACfwU,KAAK,CAACxoB,OAAO,GAAG,CAAC,CAAC;QAClB,IAAIu3B,GAAG,IAAIA,GAAG,CAACz6B,MAAM,EAAE;UACrB0rB,KAAK,CAACxoB,OAAO,CAACu3B,GAAG,GAAGA,GAAG;QACzB;QACA,IAAIvjB,IAAI,IAAIA,IAAI,CAAClX,MAAM,EAAE;UACvB0rB,KAAK,CAACxoB,OAAO,CAACgU,IAAI,GAAGA,IAAI;QAC3B;MACF;MAEA,IAAIwS,UAAU,CAACrlB,IAAI,EAAE;QACnBqnB,KAAK,CAACrnB,IAAI,GAAGqlB,UAAU,CAACrlB,IAAI;MAC9B;MAEAgc,KAAK,CAACL,MAAM,CAACrf,IAAI,CAAC+qB,KAAK,CAAC;IAC1B;;IAEA;IACArL,KAAK,CAACL,MAAM,CAAC8a,OAAO,CAAC,CAAC;IAEtB,IAAIr2B,MAAM,EAAE;MACV4b,KAAK,CAAC4Q,KAAK,GAAGtyB,KAAO,CAAC8F,MAAM,CAAC;IAC/B;EACF;EAEA,OAAO4b,KAAK;AACd;AAEA,SAASka,UAAUA,CAACnC,SAAS,EAAEiC,KAAK,EAAE/5B,OAAO,EAAE;EAC7C,IAAI83B,SAAS,CAACx9B,IAAI,EAAE;IAClB,OAAOw9B,SAAS,CAACx9B,IAAI;EACvB,CAAC,MAAM,IAAI0F,OAAO,CAACgqB,eAAe,EAAE;IAClC,OAAO+P,KAAK;EACd,CAAC,MAAM;IACL,OAAO,WAAW;EACpB;AACF;AAEA,SAASU,WAAWA,CAACC,OAAO,EAAE;EAC5B,OAAO,UAAU51B,IAAI,EAAE9E,OAAO,EAAEoE,QAAQ,EAAE;IACxC,IAAIs2B,OAAO,EAAE;MACX,IAAI9xB,WAAW,GAAG5I,OAAO,CAAC4I,WAAW,IAAI,EAAE;MAC3C,IAAIsB,UAAU,GAAGlK,OAAO,CAACkK,UAAU,IAAI,EAAE;MACzCpF,IAAI,CAACE,IAAI,GAAG01B,OAAO,CAAC51B,IAAI,CAACE,IAAI,EAAE4D,WAAW,EAAEsB,UAAU,CAAC;IACzD;IACA9F,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;EACtB,CAAC;AACH;;;;;;;;;ACxVqC;AACC;AAEtC,SAAS61B,gBAAgBA,CAAAjtB,IAAA,EAQtB;EAAA,IAPD3N,WAAW,GAAA2N,IAAA,CAAX3N,WAAW;IACX/B,GAAG,GAAA0P,IAAA,CAAH1P,GAAG;IACHuR,MAAM,GAAA7B,IAAA,CAAN6B,MAAM;IACN9G,OAAO,GAAAiF,IAAA,CAAPjF,OAAO;IACPkH,OAAO,GAAAjC,IAAA,CAAPiC,OAAO;IACPvL,QAAQ,GAAAsJ,IAAA,CAARtJ,QAAQ;IACR+c,OAAO,GAAAzT,IAAA,CAAPyT,OAAO;EAEP,IAAIyZ,UAAU;EACd,IAAIC,SAAS;EAEb,IAAIx8B,cAAgB,CAAC8iB,OAAO,CAAC,EAAE;IAC7ByZ,UAAU,GAAG,IAAIE,eAAe,CAAC,CAAC;IAClCD,SAAS,GAAG9V,UAAU,CAAC,YAAY;MACjC6V,UAAU,CAACG,KAAK,CAAC,CAAC;IACpB,CAAC,EAAE5Z,OAAO,CAAC;EACb;EAEAxR,OAAO,GAAAd,kBAAA;IACL,cAAc,EAAE,kBAAkB;IAClC,wBAAwB,EAAE9O,WAAW;IACrCi7B,MAAM,EAAEJ,UAAU,IAAIA,UAAU,CAACI;EAAM,GACpCrrB,OAAO,CACX;EAEDgS,KAAK,CAAC3jB,GAAG,EAAE;IACTuR,MAAM,EAANA,MAAM;IACNI,OAAO,EAAPA,OAAO;IACPtB,IAAI,EAAE5F;EACR,CAAC,CAAC,CACC7L,IAAI,CAAC,UAAU8S,QAAQ,EAAE;IACxB,IAAImrB,SAAS,EAAEI,YAAY,CAACJ,SAAS,CAAC;IACtC,IAAMK,WAAW,GAAGxrB,QAAQ,CAACC,OAAO;IAEpC,IAAMwrB,WAAW,GAAGn9B,GAAG,CAACu8B,QAAQ,CAAC,cAAc,CAAC;IAChD,IAAM5qB,OAAO,GAAGwrB,WAAW,GACvB;MACE,wBAAwB,EAAED,WAAW,CAACj0B,GAAG,CAAC,wBAAwB,CAAC;MACnE,oCAAoC,EAAEi0B,WAAW,CAACj0B,GAAG,CACnD,oCACF,CAAC;MACD,gCAAgC,EAAEi0B,WAAW,CAACj0B,GAAG,CAC/C,gCACF;IACF,CAAC,GACD,CAAC,CAAC;IAEN,IAAMm0B,IAAI,GAAG1rB,QAAQ,CAAC0rB,IAAI,CAAC,CAAC;IAC5Bh3B,QAAQ,CAAC,IAAI,EAAEg3B,IAAI,EAAEzrB,OAAO,CAAC;EAC/B,CAAC,CAAC,CACD0rB,KAAK,CAAC,UAAUx9B,KAAK,EAAE;IACtBwF,UAAM,CAACxF,KAAK,CAACA,KAAK,CAACoE,OAAO,CAAC;IAC3BmC,QAAQ,CAACvG,KAAK,CAAC;EACjB,CAAC,CAAC;AACN;AAEA,oDAAe88B,gBAAgB,E;;;;;;;;AC5D/B;;AAEqC;AACC;AAEtC,SAASW,cAAcA,CAAA5tB,IAAA,EASpB;EAAA,IARD3N,WAAW,GAAA2N,IAAA,CAAX3N,WAAW;IACX/B,GAAG,GAAA0P,IAAA,CAAH1P,GAAG;IACHuR,MAAM,GAAA7B,IAAA,CAAN6B,MAAM;IACN9G,OAAO,GAAAiF,IAAA,CAAPjF,OAAO;IACPkH,OAAO,GAAAjC,IAAA,CAAPiC,OAAO;IACPvL,QAAQ,GAAAsJ,IAAA,CAARtJ,QAAQ;IACRm3B,cAAc,GAAA7tB,IAAA,CAAd6tB,cAAc;IACdpa,OAAO,GAAAzT,IAAA,CAAPyT,OAAO;EAEP,IAAI9c,OAAO;EACX,IAAIk3B,cAAc,EAAE;IAClBl3B,OAAO,GAAGk3B,cAAc,CAAC,CAAC;EAC5B,CAAC,MAAM;IACLl3B,OAAO,GAAGm3B,oBAAoB,CAAC,CAAC;EAClC;EACA,IAAI,CAACn3B,OAAO,EAAE;IACZ;IACA,OAAOD,QAAQ,CAAC,IAAI5J,KAAK,CAAC,0BAA0B,CAAC,CAAC;EACxD;EACA,IAAI;IACF,IAAI;MACF,IAAIihC,mBAAkB,GAAG,SAArBA,kBAAkBA,CAAA,EAAe;QACnC,IAAI;UACF,IAAIA,mBAAkB,IAAIp3B,OAAO,CAACq3B,UAAU,KAAK,CAAC,EAAE;YAClDD,mBAAkB,GAAGr8B,SAAS;YAE9B,IAAIu8B,aAAa,GAAGt9B,SAAW,CAACgG,OAAO,CAACu3B,YAAY,CAAC;YACrD,IAAIC,UAAU,CAACx3B,OAAO,CAAC,EAAE;cACvB,IAAM82B,WAAW,GAAGn9B,GAAG,CAACu8B,QAAQ,CAAC,cAAc,CAAC;cAEhD,IAAM5qB,QAAO,GAAGwrB,WAAW,GACvB;gBACE,wBAAwB,EAAE92B,OAAO,CAACy3B,iBAAiB,CACjD,wBACF,CAAC;gBACD,oCAAoC,EAClCz3B,OAAO,CAACy3B,iBAAiB,CACvB,oCACF,CAAC;gBACH,gCAAgC,EAAEz3B,OAAO,CAACy3B,iBAAiB,CACzD,gCACF;cACF,CAAC,GACD,CAAC,CAAC;cACN13B,QAAQ,CAACu3B,aAAa,CAAC99B,KAAK,EAAE89B,aAAa,CAAChgC,KAAK,EAAEgU,QAAO,CAAC;cAC3D;YACF,CAAC,MAAM,IAAIosB,gBAAgB,CAAC13B,OAAO,CAAC,EAAE;cACpC,IAAIA,OAAO,CAAC6Y,MAAM,KAAK,GAAG,EAAE;gBAC1B;gBACA,IAAIjb,OAAO,GACT05B,aAAa,CAAChgC,KAAK,IAAIggC,aAAa,CAAChgC,KAAK,CAACsG,OAAO;gBACpDoB,UAAM,CAACxF,KAAK,CAACoE,OAAO,CAAC;cACvB;cACA;cACAmC,QAAQ,CAAC,IAAI5J,KAAK,CAACwB,MAAM,CAACqI,OAAO,CAAC6Y,MAAM,CAAC,CAAC,CAAC;YAC7C,CAAC,MAAM;cACL;cACA;cACA;cACA,IAAIwT,GAAG,GACL,6DAA6D;cAC/DtsB,QAAQ,CAAC43B,kBAAkB,CAACtL,GAAG,CAAC,CAAC;YACnC;UACF;QACF,CAAC,CAAC,OAAOuL,EAAE,EAAE;UACX;UACA;UACA;UACA,IAAIC,GAAG;UACP,IAAID,EAAE,IAAIA,EAAE,CAAC94B,KAAK,EAAE;YAClB+4B,GAAG,GAAGD,EAAE;UACV,CAAC,MAAM;YACLC,GAAG,GAAG,IAAI1hC,KAAK,CAACyhC,EAAE,CAAC;UACrB;UACA73B,QAAQ,CAAC83B,GAAG,CAAC;QACf;MACF,CAAC;MAED73B,OAAO,CAAC83B,IAAI,CAAC5sB,MAAM,EAAEvR,GAAG,EAAE,IAAI,CAAC;MAC/B,IAAIqG,OAAO,CAAC+3B,gBAAgB,EAAE;QAC5B/3B,OAAO,CAAC+3B,gBAAgB,CAAC,cAAc,EAAE,kBAAkB,CAAC;QAC5D/3B,OAAO,CAAC+3B,gBAAgB,CAAC,wBAAwB,EAAEr8B,WAAW,CAAC;QAC/D,SAAA0d,EAAA,MAAAC,eAAA,GAAqBtiB,MAAM,CAAC8P,OAAO,CAACyE,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,CAAC,CAAC,CAAC,EAAA8N,EAAA,GAAAC,eAAA,CAAAhe,MAAA,EAAA+d,EAAA,IAAE;UAA/C,IAAAE,kBAAA,GAAAtS,iBAAA,CAAAqS,eAAA,CAAAD,EAAA;YAAO9c,CAAC,GAAAgd,kBAAA;YAAEhU,CAAC,GAAAgU,kBAAA;UACdtZ,OAAO,CAAC+3B,gBAAgB,CAACz7B,CAAC,EAAEgJ,CAAC,CAAC;QAChC;MACF;MAEA,IAAItL,cAAgB,CAAC8iB,OAAO,CAAC,EAAE;QAC7B9c,OAAO,CAAC8c,OAAO,GAAGA,OAAO;MAC3B;MAEA9c,OAAO,CAACo3B,kBAAkB,GAAGA,mBAAkB;MAC/Cp3B,OAAO,CAACg4B,IAAI,CAAC5zB,OAAO,CAAC;IACvB,CAAC,CAAC,OAAO6zB,GAAG,EAAE;MACZ;MACA,IAAI,OAAOC,cAAc,KAAK,WAAW,EAAE;QACzC;QACA;;QAEA;QACA,IAAI,CAACz/B,MAAM,IAAI,CAACA,MAAM,CAACyF,QAAQ,EAAE;UAC/B,OAAO6B,QAAQ,CACb,IAAI5J,KAAK,CACP,yDACF,CACF,CAAC;QACH;;QAEA;QACA,IACEsC,MAAM,CAACyF,QAAQ,CAACO,IAAI,CAAClC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,IAChD5C,GAAG,CAAC4C,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,EAC/B;UACA5C,GAAG,GAAG,MAAM,GAAGA,GAAG,CAAC4C,SAAS,CAAC,CAAC,CAAC;QACjC;QAEA,IAAI47B,cAAc,GAAG,IAAID,cAAc,CAAC,CAAC;QACzCC,cAAc,CAACC,UAAU,GAAG,YAAM,CAAC,CAAC;QACpCD,cAAc,CAACE,SAAS,GAAG,YAAY;UACrC,IAAIhM,GAAG,GAAG,mBAAmB;UAC7B,IAAI/uB,IAAI,GAAG,WAAW;UACtByC,QAAQ,CAAC43B,kBAAkB,CAACtL,GAAG,EAAE/uB,IAAI,CAAC,CAAC;QACzC,CAAC;QACD66B,cAAc,CAACjI,OAAO,GAAG,YAAY;UACnCnwB,QAAQ,CAAC,IAAI5J,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC7C,CAAC;QACDgiC,cAAc,CAACG,MAAM,GAAG,YAAY;UAClC,IAAIhB,aAAa,GAAGt9B,SAAW,CAACm+B,cAAc,CAACZ,YAAY,CAAC;UAC5Dx3B,QAAQ,CAACu3B,aAAa,CAAC99B,KAAK,EAAE89B,aAAa,CAAChgC,KAAK,CAAC;QACpD,CAAC;QACD6gC,cAAc,CAACL,IAAI,CAAC5sB,MAAM,EAAEvR,GAAG,EAAE,IAAI,CAAC;QACtCw+B,cAAc,CAACH,IAAI,CAAC5zB,OAAO,CAAC;MAC9B,CAAC,MAAM;QACLrE,QAAQ,CAAC,IAAI5J,KAAK,CAAC,6CAA6C,CAAC,CAAC;MACpE;IACF;EACF,CAAC,CAAC,OAAOw9B,EAAE,EAAE;IACX5zB,QAAQ,CAAC4zB,EAAE,CAAC;EACd;AACF;AAEA,SAASwD,oBAAoBA,CAAA,EAAG;EAC9B;;EAEA,IAAIoB,SAAS,GAAG,CACd,YAAY;IACV,OAAO,IAAIhb,cAAc,CAAC,CAAC;EAC7B,CAAC,EACD,YAAY;IACV,OAAO,IAAIib,aAAa,CAAC,gBAAgB,CAAC;EAC5C,CAAC,EACD,YAAY;IACV,OAAO,IAAIA,aAAa,CAAC,gBAAgB,CAAC;EAC5C,CAAC,EACD,YAAY;IACV,OAAO,IAAIA,aAAa,CAAC,mBAAmB,CAAC;EAC/C,CAAC,CACF;EACD,IAAIC,OAAO;EACX,IAAIxgC,CAAC;EACL,IAAIygC,YAAY,GAAGH,SAAS,CAACl9B,MAAM;EACnC,KAAKpD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGygC,YAAY,EAAEzgC,CAAC,EAAE,EAAE;IACjC,IAAI;MACFwgC,OAAO,GAAGF,SAAS,CAACtgC,CAAC,CAAC,CAAC,CAAC;MACxB;IACF,CAAC,CAAC,OAAO8K,EAAE,EAAE;MACX;IAAA;EAEJ;EACA,OAAO01B,OAAO;AAChB;AAEA,SAASjB,UAAUA,CAACx+B,CAAC,EAAE;EACrB,OAAOA,CAAC,IAAIA,CAAC,CAAC6f,MAAM,IAAI7f,CAAC,CAAC6f,MAAM,KAAK,GAAG;AAC1C;AAEA,SAAS6e,gBAAgBA,CAAC1+B,CAAC,EAAE;EAC3B,OAAOA,CAAC,IAAIgB,MAAQ,CAAChB,CAAC,CAAC6f,MAAM,EAAE,QAAQ,CAAC,IAAI7f,CAAC,CAAC6f,MAAM,IAAI,GAAG,IAAI7f,CAAC,CAAC6f,MAAM,GAAG,GAAG;AAC/E;AAEA,SAAS8e,kBAAkBA,CAAC/5B,OAAO,EAAEN,IAAI,EAAE;EACzC,IAAI2B,GAAG,GAAG,IAAI9I,KAAK,CAACyH,OAAO,CAAC;EAC5BqB,GAAG,CAAC3B,IAAI,GAAGA,IAAI,IAAI,WAAW;EAC9B,OAAO2B,GAAG;AACZ;AAEA,wCAAeg4B,cAAc,E;;AChMM;AAEiB;AACJ;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS0B,SAASA,CAACxY,UAAU,EAAE;EAC7B,IAAI,CAACA,UAAU,GAAGA,UAAU;AAC9B;AAEAwY,SAAS,CAAC7hC,SAAS,CAAC8L,GAAG,GAAG,UACxBlH,WAAW,EACXC,OAAO,EACPC,MAAM,EACNmE,QAAQ,EACRm3B,cAAc,EACd;EACA,IAAI,CAACn3B,QAAQ,IAAI,CAAC/F,UAAY,CAAC+F,QAAQ,CAAC,EAAE;IACxCA,QAAQ,GAAG,SAAXA,QAAQA,CAAA,EAAS,CAAC,CAAC;EACrB;EACA/F,6BAA+B,CAAC0B,WAAW,EAAEC,OAAO,EAAEC,MAAM,CAAC;EAE7D,IAAIsP,MAAM,GAAG,KAAK;EAClB,IAAIvR,GAAG,GAAGK,SAAW,CAAC2B,OAAO,CAAC;EAC9B,IAAI,CAACi9B,gBAAgB,CAAC;IACpBl9B,WAAW,EAAXA,WAAW;IACX/B,GAAG,EAAHA,GAAG;IACHuR,MAAM,EAANA,MAAM;IACNnL,QAAQ,EAARA,QAAQ;IACRm3B,cAAc,EAAdA,cAAc;IACdpa,OAAO,EAAEnhB,OAAO,CAACmhB,OAAO;IACxBC,SAAS,EAAEphB,OAAO,CAACohB;EACrB,CAAC,CAAC;AACJ,CAAC;AAED4b,SAAS,CAAC7hC,SAAS,CAACyb,IAAI,GAAG,UAAAlJ,IAAA,EAOxB;EAAA,IAND3N,WAAW,GAAA2N,IAAA,CAAX3N,WAAW;IACXC,OAAO,GAAA0N,IAAA,CAAP1N,OAAO;IACPyI,OAAO,GAAAiF,IAAA,CAAPjF,OAAO;IACPkH,OAAO,GAAAjC,IAAA,CAAPiC,OAAO;IACPvL,QAAQ,GAAAsJ,IAAA,CAARtJ,QAAQ;IACRm3B,cAAc,GAAA7tB,IAAA,CAAd6tB,cAAc;EAEd,IAAI,CAACn3B,QAAQ,IAAI,CAAC/F,UAAY,CAAC+F,QAAQ,CAAC,EAAE;IACxCA,QAAQ,GAAG,SAAXA,QAAQA,CAAA,EAAS,CAAC,CAAC;EACrB;EAEA,IAAI,CAACqE,OAAO,EAAE;IACZ,OAAOrE,QAAQ,CAAC,IAAI5J,KAAK,CAAC,2BAA2B,CAAC,CAAC;EACzD;EAEA,IAAI8qB,eAAe;EACnB;EACA,IAAI,IAAI,CAACd,UAAU,IAAI/b,OAAO,CAAC4F,IAAI,EAAE;IACnCiX,eAAe,GAAG,IAAI,CAACd,UAAU,CAAC7D,QAAQ,CAAClY,OAAO,CAAC;EACrD,CAAC,MAAM;IACL6c,eAAe,GAAGjnB,SAAW,CAACoK,OAAO,CAAC;EACxC;EACA,IAAI6c,eAAe,CAACznB,KAAK,EAAE;IACzB,OAAOuG,QAAQ,CAACkhB,eAAe,CAACznB,KAAK,CAAC;EACxC;EAEA,IAAI0R,MAAM,GAAG,MAAM;EACnB,IAAIvR,GAAG,GAAGK,SAAW,CAAC2B,OAAO,CAAC;EAC9B,IAAI,CAACi9B,gBAAgB,CAAC;IACpBl9B,WAAW,EAAXA,WAAW;IACX/B,GAAG,EAAHA,GAAG;IACHuR,MAAM,EAANA,MAAM;IACN9G,OAAO,EAAE6c,eAAe,CAAC3pB,KAAK;IAC9BgU,OAAO,EAAPA,OAAO;IACPvL,QAAQ,EAARA,QAAQ;IACRm3B,cAAc,EAAdA,cAAc;IACdpa,OAAO,EAAEnhB,OAAO,CAACmhB,OAAO;IACxBC,SAAS,EAAEphB,OAAO,CAACohB;EACrB,CAAC,CAAC;AACJ,CAAC;AAED4b,SAAS,CAAC7hC,SAAS,CAACoqB,eAAe,GAAG,UACpCxlB,WAAW,EACXC,OAAO,EACPyI,OAAO,EACPrE,QAAQ,EACRm3B,cAAc,EACd;EACA,IAAI,CAACn3B,QAAQ,IAAI,CAAC/F,UAAY,CAAC+F,QAAQ,CAAC,EAAE;IACxCA,QAAQ,GAAG,SAAXA,QAAQA,CAAA,EAAS,CAAC,CAAC;EACrB;EAEA,IAAImL,MAAM,GAAG,MAAM;EACnB,IAAIvR,GAAG,GAAGK,SAAW,CAAC2B,OAAO,CAAC;EAC9B,IAAI,CAACi9B,gBAAgB,CAAC;IACpBl9B,WAAW,EAAXA,WAAW;IACX/B,GAAG,EAAHA,GAAG;IACHuR,MAAM,EAANA,MAAM;IACN9G,OAAO,EAAPA,OAAO;IACPrE,QAAQ,EAARA,QAAQ;IACRm3B,cAAc,EAAdA,cAAc;IACdpa,OAAO,EAAEnhB,OAAO,CAACmhB,OAAO;IACxBC,SAAS,EAAEphB,OAAO,CAACohB;EACrB,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA4b,SAAS,CAAC7hC,SAAS,CAAC8hC,gBAAgB,GAAG,YAAY;EAAA,IAAArnB,KAAA;EACjD,IAAI6I,OAAO,GACR,OAAO3hB,MAAM,KAAK,WAAW,IAAIA,MAAM,IACvC,OAAO2W,IAAI,KAAK,WAAW,IAAIA,IAAK;EACvC;EACA;EACA;EACA;EACA,IAAIypB,QAAQ,GAAGze,OAAO,IAAIA,OAAO,CAAC0e,IAAI,IAAI1e,OAAO,CAAC0e,IAAI,CAACC,IAAI;EAC3D,IAAIr5B,IAAI,GAAGuJ,KAAK,CAACnS,SAAS,CAAC0I,KAAK,CAACnJ,IAAI,CAAC+O,SAAS,CAAC;EAEhD,IAAIyzB,QAAQ,EAAE;IACZA,QAAQ,CAACG,GAAG,CAAC,YAAM;MACjBznB,KAAI,CAAC0nB,YAAY,CAAC/oB,KAAK,CAACnV,SAAS,EAAE2E,IAAI,CAAC;IAC1C,CAAC,CAAC;EACJ,CAAC,MAAM;IACL,IAAI,CAACu5B,YAAY,CAAC/oB,KAAK,CAACnV,SAAS,EAAE2E,IAAI,CAAC;EAC1C;AACF,CAAC;AAEDi5B,SAAS,CAAC7hC,SAAS,CAACmiC,YAAY,GAAG,UAAUr9B,MAAM,EAAE;EACnD,IAAQwI,OAAO,GAA0BxI,MAAM,CAAvCwI,OAAO;IAAErE,QAAQ,GAAgBnE,MAAM,CAA9BmE,QAAQ;IAAEgd,SAAS,GAAKnhB,MAAM,CAApBmhB,SAAS;EACpC,IAAI,OAAOmc,YAAY,KAAK,WAAW,EAAE;IACvC,OAAOC,aAAa,CAAC/0B,OAAO,EAAErE,QAAQ,CAAC;EACzC;EAEA,IAAIgd,SAAS,KAAK,OAAO,EAAE;IACzBuZ,eAAgB,CAAC16B,MAAM,CAAC;EAC1B,CAAC,MAAM;IACLq7B,GAAc,CAACr7B,MAAM,CAAC;EACxB;AACF,CAAC;;AAED;AACA,SAASu9B,aAAaA,CAACpC,IAAI,EAAEh3B,QAAQ,EAAE;EACrC,IAAIq5B,YAAY,GAAG,IAAIF,YAAY,CAAC,CAAC;EACrCE,YAAY,CAACjM,eAAe,CAC1B4J,IAAI,EACJ,UAAUsC,IAAI,EAAE;IACd;EAAA,CACD,EACD,UAAUp6B,GAAG,EAAE;IACbc,QAAQ,CAAC,IAAI5J,KAAK,CAAC8I,GAAG,CAAC,CAAC;EAC1B,CACF,CAAC;AACH;AAEA,sDAAe05B,SAAS,E;;ACzKxB;AACA,SAASj7B,SAAKA,CAAC/D,GAAG,EAAE;EAClB,IAAIkD,MAAM,GAAG;IACXH,QAAQ,EAAE,IAAI;IACd48B,IAAI,EAAE,IAAI;IACV5b,IAAI,EAAE,IAAI;IACVvhB,IAAI,EAAE,IAAI;IACVo9B,IAAI,EAAE,IAAI;IACV96B,IAAI,EAAE9E,GAAG;IACTiD,QAAQ,EAAE,IAAI;IACdD,IAAI,EAAE,IAAI;IACVygB,QAAQ,EAAE,IAAI;IACdrjB,MAAM,EAAE,IAAI;IACZO,KAAK,EAAE;EACT,CAAC;EAED,IAAIrC,CAAC,EAAE0O,IAAI;EACX1O,CAAC,GAAG0B,GAAG,CAAC0C,OAAO,CAAC,IAAI,CAAC;EACrB,IAAIpE,CAAC,KAAK,CAAC,CAAC,EAAE;IACZ4E,MAAM,CAACH,QAAQ,GAAG/C,GAAG,CAAC4C,SAAS,CAAC,CAAC,EAAEtE,CAAC,CAAC;IACrC0O,IAAI,GAAG1O,CAAC,GAAG,CAAC;EACd,CAAC,MAAM;IACL0O,IAAI,GAAG,CAAC;EACV;EAEA1O,CAAC,GAAG0B,GAAG,CAAC0C,OAAO,CAAC,GAAG,EAAEsK,IAAI,CAAC;EAC1B,IAAI1O,CAAC,KAAK,CAAC,CAAC,EAAE;IACZ4E,MAAM,CAACy8B,IAAI,GAAG3/B,GAAG,CAAC4C,SAAS,CAACoK,IAAI,EAAE1O,CAAC,CAAC;IACpC0O,IAAI,GAAG1O,CAAC,GAAG,CAAC;EACd;EAEAA,CAAC,GAAG0B,GAAG,CAAC0C,OAAO,CAAC,GAAG,EAAEsK,IAAI,CAAC;EAC1B,IAAI1O,CAAC,KAAK,CAAC,CAAC,EAAE;IACZA,CAAC,GAAG0B,GAAG,CAAC0C,OAAO,CAAC,GAAG,EAAEsK,IAAI,CAAC;IAC1B,IAAI1O,CAAC,KAAK,CAAC,CAAC,EAAE;MACZA,CAAC,GAAG0B,GAAG,CAAC0C,OAAO,CAAC,GAAG,EAAEsK,IAAI,CAAC;MAC1B,IAAI1O,CAAC,KAAK,CAAC,CAAC,EAAE;QACZ4E,MAAM,CAAC6gB,IAAI,GAAG/jB,GAAG,CAAC4C,SAAS,CAACoK,IAAI,CAAC;MACnC,CAAC,MAAM;QACL9J,MAAM,CAAC6gB,IAAI,GAAG/jB,GAAG,CAAC4C,SAAS,CAACoK,IAAI,EAAE1O,CAAC,CAAC;QACpC4E,MAAM,CAAC08B,IAAI,GAAG5/B,GAAG,CAAC4C,SAAS,CAACtE,CAAC,CAAC;MAChC;MACA4E,MAAM,CAACD,QAAQ,GAAGC,MAAM,CAAC6gB,IAAI,CAAC5a,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC3CjG,MAAM,CAACF,IAAI,GAAGE,MAAM,CAAC6gB,IAAI,CAAC5a,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACvC,IAAIjG,MAAM,CAACF,IAAI,EAAE;QACfE,MAAM,CAACF,IAAI,GAAG68B,QAAQ,CAAC38B,MAAM,CAACF,IAAI,EAAE,EAAE,CAAC;MACzC;MACA,OAAOE,MAAM;IACf,CAAC,MAAM;MACLA,MAAM,CAAC6gB,IAAI,GAAG/jB,GAAG,CAAC4C,SAAS,CAACoK,IAAI,EAAE1O,CAAC,CAAC;MACpC4E,MAAM,CAACD,QAAQ,GAAGC,MAAM,CAAC6gB,IAAI,CAAC5a,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC3CjG,MAAM,CAACF,IAAI,GAAGE,MAAM,CAAC6gB,IAAI,CAAC5a,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACvC,IAAIjG,MAAM,CAACF,IAAI,EAAE;QACfE,MAAM,CAACF,IAAI,GAAG68B,QAAQ,CAAC38B,MAAM,CAACF,IAAI,EAAE,EAAE,CAAC;MACzC;MACAgK,IAAI,GAAG1O,CAAC;IACV;EACF,CAAC,MAAM;IACL4E,MAAM,CAAC6gB,IAAI,GAAG/jB,GAAG,CAAC4C,SAAS,CAACoK,IAAI,EAAE1O,CAAC,CAAC;IACpC4E,MAAM,CAACD,QAAQ,GAAGC,MAAM,CAAC6gB,IAAI,CAAC5a,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3CjG,MAAM,CAACF,IAAI,GAAGE,MAAM,CAAC6gB,IAAI,CAAC5a,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvC,IAAIjG,MAAM,CAACF,IAAI,EAAE;MACfE,MAAM,CAACF,IAAI,GAAG68B,QAAQ,CAAC38B,MAAM,CAACF,IAAI,EAAE,EAAE,CAAC;IACzC;IACAgK,IAAI,GAAG1O,CAAC;EACV;EAEAA,CAAC,GAAG0B,GAAG,CAAC0C,OAAO,CAAC,GAAG,EAAEsK,IAAI,CAAC;EAC1B,IAAI1O,CAAC,KAAK,CAAC,CAAC,EAAE;IACZ4E,MAAM,CAACV,IAAI,GAAGxC,GAAG,CAAC4C,SAAS,CAACoK,IAAI,CAAC;EACnC,CAAC,MAAM;IACL9J,MAAM,CAACV,IAAI,GAAGxC,GAAG,CAAC4C,SAAS,CAACoK,IAAI,EAAE1O,CAAC,CAAC;IACpC4E,MAAM,CAAC08B,IAAI,GAAG5/B,GAAG,CAAC4C,SAAS,CAACtE,CAAC,CAAC;EAChC;EAEA,IAAI4E,MAAM,CAACV,IAAI,EAAE;IACf,IAAIs9B,SAAS,GAAG58B,MAAM,CAACV,IAAI,CAAC2G,KAAK,CAAC,GAAG,CAAC;IACtCjG,MAAM,CAACugB,QAAQ,GAAGqc,SAAS,CAAC,CAAC,CAAC;IAC9B58B,MAAM,CAACvC,KAAK,GAAGm/B,SAAS,CAAC,CAAC,CAAC;IAC3B58B,MAAM,CAAC9C,MAAM,GAAG8C,MAAM,CAACvC,KAAK,GAAG,GAAG,GAAGuC,MAAM,CAACvC,KAAK,GAAG,IAAI;EAC1D;EACA,OAAOuC,MAAM;AACf;;;;;;;;;;;;;AClF4B;AACU;AACM;AACV;AACmB;AAClB;AACkB;AACA;AAClB;AAES;AACA;AACE;AACI;AACJ;AACP;AACJ;;AAEnC;AACA,IAAIq9B,SAAS,GAAG,IAAI;AAAC,IAEf1N,YAAO;EACX,SAAAA,QAAY7wB,OAAO,EAAE4zB,MAAM,EAAE;IAAAtnB,mBAAA,OAAAukB,OAAA;IAC3BxtB,UAAM,CAACkW,IAAI,CAAC;MAAEsC,QAAQ,EAAE7b,OAAO,CAAC6b,QAAQ,IAAI;IAAQ,CAAC,CAAC;IACtD,IAAI,CAAC7b,OAAO,GAAG3B,aAAe,CAAC+lB,mBAAc,EAAEpkB,OAAO,EAAE,IAAI,EAAEqD,UAAM,CAAC;IACrE,IAAI,CAACrD,OAAO,CAACgxB,kBAAkB,GAAGhxB,OAAO;IACzC,IAAI,CAACw+B,UAAU,GAAG,IAAI,CAACA,UAAU,IAAI,CAAC,CAAC;IACvC,IAAMryB,SAAS,GAAG,IAAI,CAACqyB,UAAU,CAAC1N,SAAS;IAC3C,IAAM2N,YAAY,GAAG,IAAI,CAACD,UAAU,CAACE,YAAY;IACjD,IAAI,CAACC,WAAW,GAAG,IAAI,CAACH,UAAU,CAACG,WAAW;IAC9C,IAAI,CAAC10B,KAAK,GAAG,IAAI,CAACu0B,UAAU,CAACv0B,KAAK;IAClC,IAAMua,UAAU,GAAG,IAAI,CAACga,UAAU,CAACha,UAAU;IAC7C,IAAMhG,OAAO,GAAG,IAAI,CAACggB,UAAU,CAACpyB,OAAO;IACvC,IAAMwyB,MAAM,GAAG,IAAI,CAACJ,UAAU,CAACzR,MAAM;IAErC,IAAM3L,SAAS,GAAG,IAAI4b,iBAAS,CAACxY,UAAU,CAAC;IAC3C,IAAMnP,GAAG,GAAG,IAAI0oB,OAAG,CAAC,IAAI,CAAC/9B,OAAO,EAAEohB,SAAS,EAAEmD,mBAAM,EAAEC,UAAU,CAAC;IAChE,IAAIhG,OAAO,EAAE;MACX,IAAI,CAACpS,OAAO,GAAG,IAAIoS,OAAO,CAACqgB,QAAQ,CAAC,CAAC,EAAExpB,GAAG,EAAE,IAAI,CAACrV,OAAO,CAAC;MACzD,IAAI,CAACoM,OAAO,CAACuS,WAAW,CAAC,CAAC;IAC5B;IACA,IAAIxS,SAAS,EAAE;MACb,IAAI,CAAC2kB,SAAS,GAAG,IAAI3kB,SAAS,CAAC,IAAI,CAACnM,OAAO,EAAE,IAAI,CAACoM,OAAO,CAAC;IAC5D;IAEA,IAAIwyB,MAAM,IAAIvgC,SAAW,CAAC,CAAC,EAAE;MAC3B,IAAMygC,aAAa,GAAG,IAAI,CAAC9+B,OAAO,CAAC+sB,MAAM;MACzC,IAAI,CAACA,MAAM,GAAG,IAAI6R,MAAM,CAAC;QACvBxyB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrB0kB,SAAS,EAAE,IAAI,CAACA,SAAS;QACzB9wB,OAAO,EAAE8+B;MACX,CAAC,CAAC;MAEF,IAAIA,aAAa,CAAC1S,OAAO,IAAI0S,aAAa,CAACpJ,SAAS,EAAE;QACpD,IAAI,CAAC3I,MAAM,CAACgS,QAAQ,CAACC,KAAK,CAAC,CAAC;MAC9B;IACF;IAEA,IAAI,CAACpL,MAAM,GACTA,MAAM,IACN,IAAIqK,OAAM,CACR,IAAI,CAACj+B,OAAO,EACZqV,GAAG,EACHhS,UAAM,EACN,IAAI,CAACytB,SAAS,EACd,IAAI,CAAC1kB,OAAO,EACZ,IAAI,CAAC2gB,MAAM,EACX,SACF,CAAC;IACH,IAAItO,OAAO,GAAGogB,QAAQ,CAAC,CAAC;IACxB,IAAII,SAAS,GAAG,OAAOl8B,QAAQ,KAAK,WAAW,IAAIA,QAAQ;IAC3D,IAAI,CAACm8B,QAAQ,GAAGzgB,OAAO,CAAC0gB,MAAM,IAAI1gB,OAAO,CAAC0gB,MAAM,CAACC,OAAO,CAAC,CAAC;IAC1D,IAAI,CAACtK,sBAAsB,GAAG,CAAC;IAC/BuK,uBAAuB,CAAC,IAAI,CAACzL,MAAM,CAAC5vB,QAAQ,EAAE,IAAI,EAAEya,OAAO,CAAC;IAC5D6gB,oBAAoB,CAAC,IAAI,CAAC1L,MAAM,CAACrnB,KAAK,CAAC;IACvC,IAAI,CAACgzB,qBAAqB,CAAC,CAAC;IAC5B,IAAId,YAAY,EAAE;MAChB,IAAI,CAACC,YAAY,GAAG,IAAID,YAAY,CAClC,IAAI,CAACz+B,OAAO,EACZ,IAAI,CAAC4zB,MAAM,CAAC9C,SAAS,EACrB,IAAI,EACJrS,OAAO,EACPwgB,SACF,CAAC;MACD,IAAI,CAACP,YAAY,CAACc,UAAU,CAAC,CAAC;IAChC;IAEA,IAAI,CAACC,+BAA+B,CAACz/B,OAAO,CAAC;;IAE7C;IACA,IAAI,CAAC0/B,OAAO,GAAG,IAAI;EACrB;EAAC,OAAA5yB,gBAAA,CAAA+jB,OAAA;IAAA/xB,GAAA;IAAAnD,KAAA,EAcD,SAAAy1B,MAAMA,CAACpxB,OAAO,EAAE;MACd,IAAI,CAAC4zB,MAAM,CAACxC,MAAM,CAACpxB,OAAO,CAAC;MAC3B,OAAO,IAAI;IACb;EAAC;IAAAlB,GAAA;IAAAnD,KAAA,EAED,SAAAoR,SAASA,CAAC/M,OAAO,EAAEqxB,WAAW,EAAE;MAAA,IAAAhlB,aAAA,EAAAgiB,YAAA,EAAAsR,kBAAA;MAC9B,IAAI3/B,OAAO,CAAC6b,QAAQ,EAAE;QACpBxY,UAAM,CAACkW,IAAI,CAAC;UAAEsC,QAAQ,EAAE7b,OAAO,CAAC6b;QAAS,CAAC,CAAC;MAC7C;MACA,IAAI,CAAC4jB,+BAA+B,CAACz/B,OAAO,CAAC;MAC7C,IAAIgN,UAAU,GAAG,IAAI,CAAChN,OAAO;MAC7B,IAAIyI,OAAO,GAAG,CAAC,CAAC;MAChB,IAAI4oB,WAAW,EAAE;QACf5oB,OAAO,GAAG;UAAEA,OAAO,EAAE4oB;QAAY,CAAC;MACpC;MAEA,IAAI,CAACrxB,OAAO,GAAG3B,aAAe,CAAC2O,UAAU,EAAEhN,OAAO,EAAEyI,OAAO,EAAEpF,UAAM,CAAC;MACpE,IAAI,CAACrD,OAAO,CAACgxB,kBAAkB,GAAG3yB,aAAe,CAC/C2O,UAAU,CAACgkB,kBAAkB,EAC7BhxB,OAAO,EACPyI,OACF,CAAC;MAED,CAAA4D,aAAA,OAAI,CAACD,OAAO,cAAAC,aAAA,eAAZA,aAAA,CAAcU,SAAS,CAAC,IAAI,CAAC/M,OAAO,CAAC;MACrC,CAAAquB,YAAA,OAAI,CAACtB,MAAM,cAAAsB,YAAA,eAAXA,YAAA,CAAathB,SAAS,CAAC,IAAI,CAAC/M,OAAO,CAAC+sB,MAAM,CAAC;MAC3C,IAAI,CAAC6G,MAAM,CAAC7mB,SAAS,CAAC,IAAI,CAAC/M,OAAO,EAAEqxB,WAAW,CAAC;MAChD,CAAAsO,kBAAA,OAAI,CAACjB,YAAY,cAAAiB,kBAAA,eAAjBA,kBAAA,CAAmB5yB,SAAS,CAAC,IAAI,CAAC/M,OAAO,CAAC;MAC1C,IAAI,CAACu/B,qBAAqB,CAAC,CAAC;MAC5B,OAAO,IAAI;IACb;EAAC;IAAAzgC,GAAA;IAAAnD,KAAA,EAED,SAAAu1B,SAASA,CAAA,EAAG;MACV,OAAO,IAAI,CAAC0C,MAAM,CAAC1C,SAAS;IAC9B;EAAC;IAAApyB,GAAA;IAAAnD,KAAA,EAED,SAAAoN,GAAGA,CAAA,EAAG;MACJ,IAAIjE,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAACn2B,SAAS,CAAC;MACtC,IAAItM,IAAI,GAAG2H,IAAI,CAAC3H,IAAI;MACpB,IAAI,CAACy2B,MAAM,CAAC7qB,GAAG,CAACjE,IAAI,CAAC;MACrB,OAAO;QAAE3H,IAAI,EAAEA;MAAK,CAAC;IACvB;EAAC;IAAA2B,GAAA;IAAAnD,KAAA,EAED,SAAA+B,KAAKA,CAAA,EAAG;MACN,IAAIoH,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAACn2B,SAAS,CAAC;MACtC,IAAItM,IAAI,GAAG2H,IAAI,CAAC3H,IAAI;MACpB,IAAI,CAACy2B,MAAM,CAACl2B,KAAK,CAACoH,IAAI,CAAC;MACvB,OAAO;QAAE3H,IAAI,EAAEA;MAAK,CAAC;IACvB;EAAC;IAAA2B,GAAA;IAAAnD,KAAA,EAED,SAAAgC,IAAIA,CAAA,EAAG;MACL,IAAImH,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAACn2B,SAAS,CAAC;MACtC,IAAItM,IAAI,GAAG2H,IAAI,CAAC3H,IAAI;MACpB,IAAI,CAACy2B,MAAM,CAACj2B,IAAI,CAACmH,IAAI,CAAC;MACtB,OAAO;QAAE3H,IAAI,EAAEA;MAAK,CAAC;IACvB;EAAC;IAAA2B,GAAA;IAAAnD,KAAA,EAED,SAAAwf,IAAIA,CAAA,EAAG;MACL,IAAIrW,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAACn2B,SAAS,CAAC;MACtC,IAAItM,IAAI,GAAG2H,IAAI,CAAC3H,IAAI;MACpB,IAAI,CAACy2B,MAAM,CAACzY,IAAI,CAACrW,IAAI,CAAC;MACtB,OAAO;QAAE3H,IAAI,EAAEA;MAAK,CAAC;IACvB;EAAC;IAAA2B,GAAA;IAAAnD,KAAA,EAED,SAAAiC,OAAOA,CAAA,EAAG;MACR,IAAIkH,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAACn2B,SAAS,CAAC;MACtC,IAAItM,IAAI,GAAG2H,IAAI,CAAC3H,IAAI;MACpB,IAAI,CAACy2B,MAAM,CAACh2B,OAAO,CAACkH,IAAI,CAAC;MACzB,OAAO;QAAE3H,IAAI,EAAEA;MAAK,CAAC;IACvB;EAAC;IAAA2B,GAAA;IAAAnD,KAAA,EAED,SAAAkC,KAAKA,CAAA,EAAG;MACN,IAAIiH,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAACn2B,SAAS,CAAC;MACtC,IAAItM,IAAI,GAAG2H,IAAI,CAAC3H,IAAI;MACpB,IAAI,CAACy2B,MAAM,CAAC/1B,KAAK,CAACiH,IAAI,CAAC;MACvB,OAAO;QAAE3H,IAAI,EAAEA;MAAK,CAAC;IACvB;EAAC;IAAA2B,GAAA;IAAAnD,KAAA,EAED,SAAAmC,QAAQA,CAAA,EAAG;MACT,IAAIgH,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAACn2B,SAAS,CAAC;MACtC,IAAItM,IAAI,GAAG2H,IAAI,CAAC3H,IAAI;MACpB,IAAI,CAACy2B,MAAM,CAAC91B,QAAQ,CAACgH,IAAI,CAAC;MAC1B,OAAO;QAAE3H,IAAI,EAAEA;MAAK,CAAC;IACvB;EAAC;IAAA2B,GAAA;IAAAnD,KAAA,EAED,SAAA0pB,gBAAgBA,CAACvgB,IAAI,EAAE;MACrB,OAAO,IAAI,CAAC8uB,MAAM,CAACvO,gBAAgB,CAACvgB,IAAI,CAAC;IAC3C;EAAC;IAAAhG,GAAA;IAAAnD,KAAA,EAED,SAAA61B,eAAeA,CAAChM,WAAW,EAAE;MAC3B,OAAO,IAAI,CAACoO,MAAM,CAACpC,eAAe,CAAChM,WAAW,CAAC;IACjD;EAAC;IAAA1mB,GAAA;IAAAnD,KAAA,EAED,SAAAkkC,mBAAmBA,CAACj9B,OAAO,EAAE;MAC3B,OAAO,IAAI,CAACk9B,aAAa,CAAAjxB,iBAAA;QAAGtS,IAAI,EAAE;MAAQ,GAAKqG,OAAO,CAAE,CAAC;IAC3D;EAAC;IAAA9D,GAAA;IAAAnD,KAAA,EAED,SAAAmkC,aAAaA,CAACl9B,OAAO,EAAE;MACrB,IAAI,CAAC,IAAI,CAACmqB,MAAM,EAAE,OAAO,IAAI;MAE7B,OAAO,IAAI,CAACA,MAAM,CAAC+S,aAAa,CAACl9B,OAAO,CAAC;IAC3C;EAAC;IAAA9D,GAAA;IAAAnD,KAAA,EAED,SAAA4jC,qBAAqBA,CAAA,EAAG;MACtB,IAAI9gB,OAAO,GAAGogB,QAAQ,CAAC,CAAC;MAExB,IAAI,CAAC,IAAI,CAACkB,8BAA8B,EAAE;QACxC,IACE,IAAI,CAAC//B,OAAO,CAACggC,eAAe,IAC5B,IAAI,CAAChgC,OAAO,CAACigC,wBAAwB,EACrC;UACA5B,yBAAiC,CAAC5f,OAAO,EAAE,IAAI,CAAC;UAChD,IAAI,IAAI,CAACkgB,WAAW,IAAI,IAAI,CAAC3+B,OAAO,CAACkgC,uBAAuB,EAAE;YAC5D,IAAI,CAACvB,WAAW,CAAClgB,OAAO,EAAE,IAAI,CAAC;UACjC;UACA,IAAI,CAACshB,8BAA8B,GAAG,IAAI;QAC5C;MACF;MACA,IAAI,CAAC,IAAI,CAACI,8BAA8B,EAAE;QACxC,IACE,IAAI,CAACngC,OAAO,CAAC+0B,0BAA0B,IACvC,IAAI,CAAC/0B,OAAO,CAACogC,yBAAyB,EACtC;UACA/B,0BAAkC,CAAC5f,OAAO,EAAE,IAAI,CAAC;UACjD,IAAI,CAAC0hB,8BAA8B,GAAG,IAAI;QAC5C;MACF;IACF;EAAC;IAAArhC,GAAA;IAAAnD,KAAA,EAED,SAAAk5B,uBAAuBA,CAAC5yB,OAAO,EAAEjE,GAAG,EAAEkE,MAAM,EAAEC,KAAK,EAAEtE,KAAK,EAAE+E,OAAO,EAAE;MACnE,IACE,CAAC,IAAI,CAAC5C,OAAO,CAACggC,eAAe,IAC7B,CAAC,IAAI,CAAChgC,OAAO,CAACigC,wBAAwB,EACtC;QACA;MACF;;MAEA;MACA;MACA;MACA;MACA,IACE,IAAI,CAACjgC,OAAO,CAACqgC,sBAAsB,IACnC,IAAI,CAACnB,QAAQ,IACbrhC,KAAK,KAAK,IAAI,IACdG,GAAG,KAAK,EAAE,EACV;QACA,OAAO,WAAW;MACpB;MAEA,IAAI8G,IAAI;MACR,IAAIgzB,SAAS,GAAGz5B,sBAAwB,CACtC4D,OAAO,EACPjE,GAAG,EACHkE,MAAM,EACNC,KAAK,EACLtE,KAAK,EACL,SAAS,EACT,oBAAoB,EACpByE,WACF,CAAC;MACD,IAAIjE,OAAS,CAACR,KAAK,CAAC,EAAE;QACpBiH,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAAC,CAAC39B,OAAO,EAAEpE,KAAK,EAAE+E,OAAO,CAAC,CAAC;QAClDkC,IAAI,CAAC80B,mBAAmB,GAAG9B,SAAS;MACtC,CAAC,MAAM,IAAIz5B,OAAS,CAACL,GAAG,CAAC,EAAE;QACzB8G,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAAC,CAAC39B,OAAO,EAAEjE,GAAG,EAAE4E,OAAO,CAAC,CAAC;QAChDkC,IAAI,CAAC80B,mBAAmB,GAAG9B,SAAS;MACtC,CAAC,MAAM;QACLhzB,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAAC,CAAC39B,OAAO,EAAEW,OAAO,CAAC,CAAC;QAC3CkC,IAAI,CAACgzB,SAAS,GAAGA,SAAS;MAC5B;MACAhzB,IAAI,CAACM,KAAK,GAAG,IAAI,CAACpF,OAAO,CAAC2lB,kBAAkB;MAC5C7gB,IAAI,CAAC8lB,WAAW,GAAG,IAAI;MACvB,IAAI,CAACgJ,MAAM,CAAC7qB,GAAG,CAACjE,IAAI,CAAC;IACvB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAXE;IAAAhG,GAAA;IAAAnD,KAAA,EAYA,SAAA64B,qBAAqBA,CAAA,EAAG;MAAA,IAAA5e,KAAA;MACtB,IAAI,CAAC,IAAI,CAAC5V,OAAO,CAACqgC,sBAAsB,IAAI,CAAC,IAAI,CAACnB,QAAQ,EAAE;QAC1D;MACF;MAEA,IAAMoB,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIziC,KAAK,EAAE0iC,MAAM,EAAK;QAC3C,IAAI3qB,KAAI,CAAC5V,OAAO,CAACqgC,sBAAsB,EAAE;UACvC,IAAIzqB,KAAI,CAACkf,sBAAsB,EAAE;YAC/B;YACA;YACA;YACA;YACA;YACAlf,KAAI,CAACkf,sBAAsB,IAAI,CAAC;YAEhC,IAAI,CAACj3B,KAAK,EAAE;cACV;cACA;cACA;cACA;YACF;;YAEA;YACAA,KAAK,CAAC2iC,YAAY,GAAG,IAAI;;YAEzB;YACA;YACA;YACA5qB,KAAI,CAACif,uBAAuB,CAACh3B,KAAK,CAACoE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAEpE,KAAK,CAAC;UACtE;QACF;;QAEA;QACA,OAAOA,KAAK,CAACsF,KAAK;MACpB,CAAC;;MAED;MACA,IAAI;QACF3I,KAAK,CAAC8lC,iBAAiB,GAAGA,iBAAiB;MAC7C,CAAC,CAAC,OAAO7jC,CAAC,EAAE;QACV,IAAI,CAACuD,OAAO,CAACqgC,sBAAsB,GAAG,KAAK;QAC3C,IAAI,CAACxiC,KAAK,CAAC,gCAAgC,EAAEpB,CAAC,CAAC;MACjD;IACF;EAAC;IAAAqC,GAAA;IAAAnD,KAAA,EAED,SAAA65B,wBAAwBA,CAACH,MAAM,EAAEC,OAAO,EAAE;MACxC,IACE,CAAC,IAAI,CAACt1B,OAAO,CAAC+0B,0BAA0B,IACxC,CAAC,IAAI,CAAC/0B,OAAO,CAACogC,yBAAyB,EACvC;QACA;MACF;MAEA,IAAIn+B,OAAO,GAAG,4CAA4C;MAC1D,IAAIozB,MAAM,EAAE;QACV,IAAIA,MAAM,CAACpzB,OAAO,EAAE;UAClBA,OAAO,GAAGozB,MAAM,CAACpzB,OAAO;QAC1B,CAAC,MAAM;UACL,IAAIw+B,YAAY,GAAGpiC,SAAW,CAACg3B,MAAM,CAAC;UACtC,IAAIoL,YAAY,CAAC9kC,KAAK,EAAE;YACtBsG,OAAO,GAAGw+B,YAAY,CAAC9kC,KAAK;UAC9B;QACF;MACF;MACA,IAAIiH,OAAO,GACRyyB,MAAM,IAAIA,MAAM,CAACT,eAAe,IAChCU,OAAO,IAAIA,OAAO,CAACV,eAAgB;MAEtC,IAAI9vB,IAAI;MACR,IAAIzG,OAAS,CAACg3B,MAAM,CAAC,EAAE;QACrBvwB,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAAC,CAAC39B,OAAO,EAAEozB,MAAM,EAAEzyB,OAAO,CAAC,CAAC;MACrD,CAAC,MAAM;QACLkC,IAAI,GAAG,IAAI,CAAC86B,WAAW,CAAC,CAAC39B,OAAO,EAAEozB,MAAM,EAAEzyB,OAAO,CAAC,CAAC;QACnDkC,IAAI,CAACgzB,SAAS,GAAGz5B,sBAAwB,CACvC4D,OAAO,EACP,EAAE,EACF,CAAC,EACD,CAAC,EACD,IAAI,EACJ,oBAAoB,EACpB,EAAE,EACFK,WACF,CAAC;MACH;MACAwC,IAAI,CAACM,KAAK,GAAG,IAAI,CAACpF,OAAO,CAAC2lB,kBAAkB;MAC5C7gB,IAAI,CAAC8lB,WAAW,GAAG,IAAI;MACvB9lB,IAAI,CAACI,aAAa,GAAGJ,IAAI,CAACI,aAAa,IAAI,EAAE;MAC7CJ,IAAI,CAACI,aAAa,CAAC7E,IAAI,CAACi1B,OAAO,CAAC;MAChC,IAAI,CAAC1B,MAAM,CAAC7qB,GAAG,CAACjE,IAAI,CAAC;IACvB;EAAC;IAAAhG,GAAA;IAAAnD,KAAA,EAED,SAAA+kC,IAAIA,CAAC5lC,CAAC,EAAE8H,OAAO,EAAE+9B,OAAO,EAAE;MACxB,IAAI;QACF,IAAIC,KAAK;QACT,IAAIviC,UAAY,CAACuE,OAAO,CAAC,EAAE;UACzBg+B,KAAK,GAAGh+B,OAAO;QACjB,CAAC,MAAM;UACLg+B,KAAK,GAAG,SAARA,KAAKA,CAAA,EAAe;YAClB,OAAOh+B,OAAO,IAAI,CAAC,CAAC;UACtB,CAAC;QACH;QAEA,IAAI,CAACvE,UAAY,CAACvD,CAAC,CAAC,EAAE;UACpB,OAAOA,CAAC;QACV;QAEA,IAAIA,CAAC,CAAC+lC,OAAO,EAAE;UACb,OAAO/lC,CAAC;QACV;QAEA,IAAI,CAACA,CAAC,CAACgmC,gBAAgB,EAAE;UACvBhmC,CAAC,CAACgmC,gBAAgB,GAAG,YAAY;YAC/B,IAAIH,OAAO,IAAItiC,UAAY,CAACsiC,OAAO,CAAC,EAAE;cACpCA,OAAO,CAACpsB,KAAK,CAAC,IAAI,EAAE9K,SAAS,CAAC;YAChC;YACA,IAAI;cACF,OAAO3O,CAAC,CAACyZ,KAAK,CAAC,IAAI,EAAE9K,SAAS,CAAC;YACjC,CAAC,CAAC,OAAOyyB,GAAG,EAAE;cACZ,IAAIz/B,CAAC,GAAGy/B,GAAG;cACX,IAAIz/B,CAAC,IAAIK,MAAM,CAAC63B,oBAAoB,KAAKl4B,CAAC,EAAE;gBAC1C,IAAI4B,MAAQ,CAAC5B,CAAC,EAAE,QAAQ,CAAC,EAAE;kBACzBA,CAAC,GAAG,IAAIT,MAAM,CAACS,CAAC,CAAC;gBACnB;gBACAA,CAAC,CAACm4B,eAAe,GAAGgM,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;gBACjCnkC,CAAC,CAACm4B,eAAe,CAACmM,cAAc,GAAGjmC,CAAC,CAACL,QAAQ,CAAC,CAAC;gBAE/CqC,MAAM,CAAC63B,oBAAoB,GAAGl4B,CAAC;cACjC;cACA,MAAMA,CAAC;YACT;UACF,CAAC;UAED3B,CAAC,CAACgmC,gBAAgB,CAACD,OAAO,GAAG,IAAI;UAEjC,KAAK,IAAI/kC,IAAI,IAAIhB,CAAC,EAAE;YAClB,IAAIuD,MAAQ,CAACvD,CAAC,EAAEgB,IAAI,CAAC,IAAIA,IAAI,KAAK,kBAAkB,EAAE;cACpDhB,CAAC,CAACgmC,gBAAgB,CAAChlC,IAAI,CAAC,GAAGhB,CAAC,CAACgB,IAAI,CAAC;YACpC;UACF;QACF;QAEA,OAAOhB,CAAC,CAACgmC,gBAAgB;MAC3B,CAAC,CAAC,OAAO15B,EAAE,EAAE;QACX;QACA,OAAOtM,CAAC;MACV;IACF;EAAC;IAAAgE,GAAA;IAAAnD,KAAA,EAED,SAAA4S,YAAYA,CAAA,EAAG;MACb,IAAI7H,KAAK,GAAGrI,oBAAsB,CAACoL,SAAS,CAAC;MAC7C,OAAO,IAAI,CAACmqB,MAAM,CAACrlB,YAAY,CAAC7H,KAAK,CAACnK,IAAI,EAAEmK,KAAK,CAACD,QAAQ,EAAEC,KAAK,CAACtB,KAAK,CAAC;IAC1E;EAAC;IAAAtG,GAAA;IAAAnD,KAAA,EAED,SAAAqlC,cAAcA,CAACzmB,IAAI,EAAE;MAAA,IAAAuX,cAAA;MACnB,IAAI,GAAAA,cAAA,GAAC,IAAI,CAAC1lB,OAAO,cAAA0lB,cAAA,eAAZA,cAAA,CAAczY,OAAO,GAAE;MAE5B,IAAI,CAACjN,OAAO,CAACiN,OAAO,CAACiB,OAAO,CAACC,IAAI,CAAC;IACpC;EAAC;IAAAzb,GAAA;IAAAnD,KAAA,EAED,SAAAslC,oBAAoBA,CAACznB,KAAK,EAAE;MAAA,IAAA0nB,cAAA;MAC1B,IAAI,GAAAA,cAAA,GAAC,IAAI,CAAC90B,OAAO,cAAA80B,cAAA,eAAZA,cAAA,CAAc7nB,OAAO,GAAE;MAE5BG,KAAK,GAAA3K,iBAAA,KAAQ2K,KAAK,CAAE;MAEpB,IAAI,CAACpN,OAAO,CAACiN,OAAO,CAACgB,aAAa,CAACb,KAAK,CAAC;IAC3C;EAAC;IAAA1a,GAAA;IAAAnD,KAAA,EAED,SAAA8jC,+BAA+BA,CAACz/B,OAAO,EAAE;MAAA,IAAAmhC,gBAAA,EAAAC,eAAA,EAAAC,iBAAA,EAAAC,iBAAA,EAAAC,iBAAA;MACvC,IAAMC,MAAM,GAAGxhC,OAAO,CAACwhC,MAAM,MAAAL,gBAAA,GAAInhC,OAAO,CAACyI,OAAO,cAAA04B,gBAAA,uBAAfA,gBAAA,CAAiBK,MAAM;MACxD,IAAIA,MAAM,EAAE;QACV,IAAI,CAACR,cAAc,CAACQ,MAAM,CAAC;MAC7B;MACA,IAAMC,YAAY,GAChB,EAAAL,eAAA,GAAAphC,OAAO,CAAC4zB,MAAM,cAAAwN,eAAA,gBAAAA,eAAA,GAAdA,eAAA,CAAgBrI,UAAU,cAAAqI,eAAA,uBAA1BA,eAAA,CAA4BK,YAAY,KACxCzhC,OAAO,CAAC0hC,WAAW,IACnB1hC,OAAO,CAACyhC,YAAY,MAAAJ,iBAAA,GACpBrhC,OAAO,CAACyI,OAAO,cAAA44B,iBAAA,gBAAAA,iBAAA,GAAfA,iBAAA,CAAiBzN,MAAM,cAAAyN,iBAAA,gBAAAA,iBAAA,GAAvBA,iBAAA,CAAyBtI,UAAU,cAAAsI,iBAAA,uBAAnCA,iBAAA,CAAqCI,YAAY,OAAAH,iBAAA,GACjDthC,OAAO,CAACyI,OAAO,cAAA64B,iBAAA,uBAAfA,iBAAA,CAAiBG,YAAY,OAAAF,iBAAA,GAC7BvhC,OAAO,CAACyI,OAAO,cAAA84B,iBAAA,uBAAfA,iBAAA,CAAiBG,WAAW;MAC9B,IAAI,CAACT,oBAAoB,CAAC;QACxB,qBAAqB,EAAEQ,YAAY;QACnC,uBAAuB,EAAE,oBAAoB;QAC7C,0BAA0B,EAAEzhC,OAAO,CAACmW;MACtC,CAAC,CAAC;IACJ;;IAEA;EAAA;IAAArX,GAAA;IAAAnD,KAAA,EACA,SAAA2W,uBAAuBA,CAAC7V,CAAC,EAAE8V,EAAE,EAAE;MAC7B,IAAI,CAACA,EAAE,EAAE;QACPA,EAAE,GAAG,IAAI5K,IAAI,CAAC,CAAC;MACjB;MACA,OAAO,IAAI,CAACisB,MAAM,CAACthB,uBAAuB,CAACC,EAAE,CAAC;IAChD;EAAC;IAAAzT,GAAA;IAAAnD,KAAA,EAED,SAAA8W,WAAWA,CAAChW,CAAC,EAAE8V,EAAE,EAAE;MACjB,IAAI,CAACA,EAAE,EAAE;QACPA,EAAE,GAAG,IAAI5K,IAAI,CAAC,CAAC;MACjB;MACA,OAAO,IAAI,CAACisB,MAAM,CAACnhB,WAAW,CAACF,EAAE,CAAC;IACpC;EAAC;IAAAzT,GAAA;IAAAnD,KAAA,EAED,SAAAgmC,QAAQA,CAAA,EAAG;MACTt+B,UAAM,CAAC1F,IAAI,CACT,qHACF,CAAC;IACH;EAAC;IAAAmB,GAAA;IAAAnD,KAAA,EAED,SAAAikC,WAAWA,CAAC77B,IAAI,EAAE;MAChB,OAAO1F,UAAY,CAAC0F,IAAI,EAAEV,UAAM,EAAE,IAAI,CAAC;IACzC;;IAEA;IACA;IACA;IACA;EAAA;IAAAvE,GAAA;IAAAnD,KAAA,EA7ZA,SAAO4d,IAAIA,CAACvZ,OAAO,EAAE4zB,MAAM,EAAE;MAC3B,IAAI2K,SAAS,EAAE;QACb,OAAOA,SAAS,CAACnN,MAAM,CAACpxB,OAAO,CAAC,CAAC+M,SAAS,CAAC/M,OAAO,CAAC;MACrD;MACAu+B,SAAS,GAAG,IAAI1N,OAAO,CAAC7wB,OAAO,EAAE4zB,MAAM,CAAC;MACxC,OAAO2K,SAAS;IAClB;EAAC;IAAAz/B,GAAA;IAAAnD,KAAA,EAED,SAAOimC,aAAaA,CAACpD,UAAU,EAAE;MAC/B3N,OAAO,CAAC11B,SAAS,CAACqjC,UAAU,GAAGA,UAAU;IAC3C;EAAC;IAAA1/B,GAAA;IAAAnD,KAAA,EAoZD,SAAOkmC,YAAYA,CAACtyB,MAAM,EAAExL,IAAI,EAAE;MAChC,IAAI,CAACw6B,SAAS,EAAE;QACd,IAAMt8B,OAAO,GAAG,4BAA4B;QAC5CoB,UAAM,CAACxF,KAAK,CAACoE,OAAO,CAAC;QACrB,IAAM6/B,aAAa,GAAGC,iBAAiB,CAACh+B,IAAI,CAAC;QAC7C,IAAI+9B,aAAa,EAAE;UACjBA,aAAa,CAAC,IAAItnC,KAAK,CAACyH,OAAO,CAAC,CAAC;QACnC;QACA;MACF;MACA,OAAOs8B,SAAS,CAAChvB,MAAM,CAAC,CAACgF,KAAK,CAACgqB,SAAS,EAAEx6B,IAAI,CAAC;IACjD;EAAC;AAAA;AAoBH;AAAAi+B,QAAA,GArgBMnR,YAAO;AAAAzX,mBAAA,CAAPyX,YAAO,YAmfK;EAAA,SAAAxc,IAAA,GAAA5K,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAA+G,IAAA,GAAAC,IAAA,MAAAA,IAAA,GAAAD,IAAA,EAAAC,IAAA;IAAJvQ,IAAI,CAAAuQ,IAAA,IAAA7K,SAAA,CAAA6K,IAAA;EAAA;EAAA,OAAKuc,QAAO,CAACgR,YAAY,CAAC,QAAQ,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CAnf7DyX,YAAO,eAofQ;EAAA,SAAAxV,KAAA,GAAA5R,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAA+N,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJvX,IAAI,CAAAuX,KAAA,IAAA7R,SAAA,CAAA6R,KAAA;EAAA;EAAA,OAAKuV,QAAO,CAACgR,YAAY,CAAC,WAAW,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CApfnEyX,YAAO,eAqfQ;EAAA,SAAAtV,KAAA,GAAA9R,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAAiO,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJzX,IAAI,CAAAyX,KAAA,IAAA/R,SAAA,CAAA+R,KAAA;EAAA;EAAA,OAAKqV,QAAO,CAACgR,YAAY,CAAC,WAAW,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CArfnEyX,YAAO,SAsfE;EAAA,SAAApV,KAAA,GAAAhS,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAAmO,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJ3X,IAAI,CAAA2X,KAAA,IAAAjS,SAAA,CAAAiS,KAAA;EAAA;EAAA,OAAKmV,QAAO,CAACgR,YAAY,CAAC,KAAK,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CAtfvDyX,YAAO,WAufI;EAAA,SAAAlV,KAAA,GAAAlS,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAAqO,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJ7X,IAAI,CAAA6X,KAAA,IAAAnS,SAAA,CAAAmS,KAAA;EAAA;EAAA,OAAKiV,QAAO,CAACgR,YAAY,CAAC,OAAO,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CAvf3DyX,YAAO,UAwfG;EAAA,SAAAoR,KAAA,GAAAx4B,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAA20B,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJn+B,IAAI,CAAAm+B,KAAA,IAAAz4B,SAAA,CAAAy4B,KAAA;EAAA;EAAA,OAAKrR,QAAO,CAACgR,YAAY,CAAC,MAAM,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CAxfzDyX,YAAO,UAyfG;EAAA,SAAAsR,KAAA,GAAA14B,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAA60B,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJr+B,IAAI,CAAAq+B,KAAA,IAAA34B,SAAA,CAAA24B,KAAA;EAAA;EAAA,OAAKvR,QAAO,CAACgR,YAAY,CAAC,MAAM,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CAzfzDyX,YAAO,aA0fM;EAAA,SAAAwR,KAAA,GAAA54B,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAA+0B,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJv+B,IAAI,CAAAu+B,KAAA,IAAA74B,SAAA,CAAA64B,KAAA;EAAA;EAAA,OAAKzR,QAAO,CAACgR,YAAY,CAAC,SAAS,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CA1f/DyX,YAAO,WA2fI;EAAA,SAAA0R,KAAA,GAAA94B,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAAi1B,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJz+B,IAAI,CAAAy+B,KAAA,IAAA/4B,SAAA,CAAA+4B,KAAA;EAAA;EAAA,OAAK3R,QAAO,CAACgR,YAAY,CAAC,OAAO,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CA3f3DyX,YAAO,cA4fO;EAAA,SAAA4R,KAAA,GAAAh5B,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAAm1B,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJ3+B,IAAI,CAAA2+B,KAAA,IAAAj5B,SAAA,CAAAi5B,KAAA;EAAA;EAAA,OAAK7R,QAAO,CAACgR,YAAY,CAAC,UAAU,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CA5fjEyX,YAAO,sBA6fe;EAAA,SAAA8R,KAAA,GAAAl5B,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAAq1B,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJ7+B,IAAI,CAAA6+B,KAAA,IAAAn5B,SAAA,CAAAm5B,KAAA;EAAA;EAAA,OAChC/R,QAAO,CAACgR,YAAY,CAAC,kBAAkB,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CA9f5CyX,YAAO,qBA+fc;EAAA,SAAAgS,MAAA,GAAAp5B,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAAu1B,MAAA,GAAAC,MAAA,MAAAA,MAAA,GAAAD,MAAA,EAAAC,MAAA;IAAJ/+B,IAAI,CAAA++B,MAAA,IAAAr5B,SAAA,CAAAq5B,MAAA;EAAA;EAAA,OAC/BjS,QAAO,CAACgR,YAAY,CAAC,iBAAiB,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CAhgB3CyX,YAAO,UAigBG;EAAA,SAAAkS,MAAA,GAAAt5B,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAAy1B,MAAA,GAAAC,MAAA,MAAAA,MAAA,GAAAD,MAAA,EAAAC,MAAA;IAAJj/B,IAAI,CAAAi/B,MAAA,IAAAv5B,SAAA,CAAAu5B,MAAA;EAAA;EAAA,OAAKnS,QAAO,CAACgR,YAAY,CAAC,MAAM,EAAE99B,IAAI,CAAC;AAAA;AAAAqV,mBAAA,CAjgBzDyX,YAAO,kBAkgBW;EAAA,SAAAoS,MAAA,GAAAx5B,SAAA,CAAA/J,MAAA,EAAIqE,IAAI,OAAAuJ,KAAA,CAAA21B,MAAA,GAAAC,MAAA,MAAAA,MAAA,GAAAD,MAAA,EAAAC,MAAA;IAAJn/B,IAAI,CAAAm/B,MAAA,IAAAz5B,SAAA,CAAAy5B,MAAA;EAAA;EAAA,OAAKrS,QAAO,CAACgR,YAAY,CAAC,cAAc,EAAE99B,IAAI,CAAC;AAAA;AAK/E,SAASs7B,uBAAuBA,CAACr7B,QAAQ,EAAE07B,OAAO,EAAEjhB,OAAO,EAAE;EAC3Dza,QAAQ,CACLsY,YAAY,CAACH,kBAA6B,CAAC,CAC3CG,YAAY,CAACH,mBAA8B,CAAC,CAC5CG,YAAY,CAACH,2BAAsC,CAAC,CACpDG,YAAY,CAACH,WAAsB,CAAC,CACpCG,YAAY,CAACH,cAAyB,CAACsC,OAAO,CAAC,CAAC,CAChDnC,YAAY,CAACH,aAAwB,CAACsC,OAAO,CAAC,CAAC,CAC/CnC,YAAY,CAACH,aAAwB,CAACsC,OAAO,CAAC,CAAC,CAC/CnC,YAAY,CAACH,OAAkB,CAAC,CAChCG,YAAY,CAAC6hB,mBAAoC,CAAC,CAClD7hB,YAAY,CAAC6hB,gBAAiC,CAAC,CAC/C7hB,YAAY,CAAC6hB,kBAAmC,CAAC,CACjD7hB,YAAY,CAACH,WAAsB,CAACujB,OAAO,CAACz1B,KAAK,CAAC,CAAC,CACnDqS,YAAY,CAAC6hB,iBAAkC,CAAC,CAChD7hB,YAAY,CAAC6hB,aAA8B,CAAC96B,UAAM,CAAC,CAAC,CACpDiZ,YAAY,CAAC6hB,oBAAqC,CAAC,CACnD7hB,YAAY,CAAC6hB,iBAAkC,CAAC,CAChD7hB,YAAY,CAAC6hB,aAA8B,CAAC;AACjD;AAEA,SAASmB,oBAAoBA,CAAC/yB,KAAK,EAAE;EACnCA,KAAK,CACFihB,YAAY,CAACwQ,UAA2B,CAAC,CACzCxQ,YAAY,CAACR,WAAsB,CAAC,CACpCQ,YAAY,CAACwQ,eAAgC,CAAC36B,UAAM,CAAC,CAAC,CACtDmqB,YAAY,CAACwQ,mBAAoC,CAAC36B,UAAM,CAAC,CAAC,CAC1DmqB,YAAY,CAACwQ,eAAgC,CAAC36B,UAAM,CAAC,CAAC,CACtDmqB,YAAY,CAACwQ,gBAAiC,CAAC36B,UAAM,CAAC,CAAC;AAC5D;AAEA,SAAS0+B,iBAAiBA,CAACh+B,IAAI,EAAE;EAC/B,KAAK,IAAIzH,CAAC,GAAG,CAAC,EAAEuI,GAAG,GAAGd,IAAI,CAACrE,MAAM,EAAEpD,CAAC,GAAGuI,GAAG,EAAE,EAAEvI,CAAC,EAAE;IAC/C,IAAI+B,UAAY,CAAC0F,IAAI,CAACzH,CAAC,CAAC,CAAC,EAAE;MACzB,OAAOyH,IAAI,CAACzH,CAAC,CAAC;IAChB;EACF;EACA,OAAO8C,SAAS;AAClB;AAEA,SAASy/B,QAAQA,CAAA,EAAG;EAClB,OACG,OAAO/hC,MAAM,KAAK,WAAW,IAAIA,MAAM,IACvC,OAAO2W,IAAI,KAAK,WAAW,IAAIA,IAAK;AAEzC;AAEA,IAAM2Q,mBAAc,GAAG;EACrBtF,WAAW,EAAE,SAAS;EACtB3I,OAAO,EAAE+K,gBAAgB;EACzBtY,WAAW,EAAEw1B,4BAA2B;EACxCviB,QAAQ,EAAEqF,iBAAiB;EAC3BwE,WAAW,EAAExE,oBAAoB;EACjCyE,kBAAkB,EAAEzE,2BAA2B;EAC/CK,QAAQ,EAAEL,iBAAiB;EAC3BmO,OAAO,EAAE,KAAK;EACdjD,OAAO,EAAE,IAAI;EACb4B,QAAQ,EAAE,IAAI;EACdqF,UAAU,EAAE,KAAK;EACjBvgB,uBAAuB,EAAE,IAAI;EAC7BhL,SAAS,EAAE,IAAI;EACfu4B,sBAAsB,EAAE,IAAI;EAC5B5O,qBAAqB,EAAE,IAAI;EAC3ByO,uBAAuB,EAAE,KAAK;EAC9BnT,MAAM,EAAEuR,eAAc;EACtBlyB,OAAO,EAAE8xB,gBAAeA;AAC1B,CAAC;AAED,yCAAerN,YAAO,E;;AChmBiB;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASlhB,OAAOA,CAACA,OAAO,EAAE;EACxB,IAAI,OAAOwzB,OAAO,KAAK,WAAW,EAAE;IAClC,OAAO,IAAIC,YAAY,CAACzzB,OAAO,CAAC;EAClC;EAEA,OAAO,IAAIwzB,OAAO,CAACxzB,OAAO,CAAC;AAC7B;AAEA,SAAS0zB,aAAaA,CAAC/oC,IAAI,EAAE;EAC3B,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;IAC5BA,IAAI,GAAG0B,MAAM,CAAC1B,IAAI,CAAC;EACrB;EACA,OAAOA,IAAI,CAACM,WAAW,CAAC,CAAC;AAC3B;AAEA,SAAS0oC,cAAcA,CAAC3nC,KAAK,EAAE;EAC7B,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC7BA,KAAK,GAAGK,MAAM,CAACL,KAAK,CAAC;EACvB;EACA,OAAOA,KAAK;AACd;AAEA,SAAS4nC,WAAWA,CAACC,KAAK,EAAE;EAC1B,IAAIphB,QAAQ,GAAG;IACbwK,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAc;MAChB,IAAIjxB,KAAK,GAAG6nC,KAAK,CAACzwB,KAAK,CAAC,CAAC;MACzB,OAAO;QAAEnN,IAAI,EAAEjK,KAAK,KAAKyD,SAAS;QAAEzD,KAAK,EAAEA;MAAM,CAAC;IACpD;EACF,CAAC;EAED,OAAOymB,QAAQ;AACjB;AAEA,SAASghB,YAAYA,CAACzzB,OAAO,EAAE;EAC7B,IAAI,CAAClC,GAAG,GAAG,CAAC,CAAC;EAEb,IAAIkC,OAAO,YAAYyzB,YAAY,EAAE;IACnCzzB,OAAO,CAAC8zB,OAAO,CAAC,UAAU9nC,KAAK,EAAErB,IAAI,EAAE;MACrC,IAAI,CAACopC,MAAM,CAACppC,IAAI,EAAEqB,KAAK,CAAC;IAC1B,CAAC,EAAE,IAAI,CAAC;EACV,CAAC,MAAM,IAAI2R,KAAK,CAACzD,OAAO,CAAC8F,OAAO,CAAC,EAAE;IACjCA,OAAO,CAAC8zB,OAAO,CAAC,UAAUE,MAAM,EAAE;MAChC,IAAI,CAACD,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,EAAE,IAAI,CAAC;EACV,CAAC,MAAM,IAAIh0B,OAAO,EAAE;IAClBvU,MAAM,CAACwoC,mBAAmB,CAACj0B,OAAO,CAAC,CAAC8zB,OAAO,CAAC,UAAUnpC,IAAI,EAAE;MAC1D,IAAI,CAACopC,MAAM,CAACppC,IAAI,EAAEqV,OAAO,CAACrV,IAAI,CAAC,CAAC;IAClC,CAAC,EAAE,IAAI,CAAC;EACV;AACF;AAEA8oC,YAAY,CAACjoC,SAAS,CAACuoC,MAAM,GAAG,UAAUppC,IAAI,EAAEqB,KAAK,EAAE;EACrDrB,IAAI,GAAG+oC,aAAa,CAAC/oC,IAAI,CAAC;EAC1BqB,KAAK,GAAG2nC,cAAc,CAAC3nC,KAAK,CAAC;EAC7B,IAAIkoC,QAAQ,GAAG,IAAI,CAACp2B,GAAG,CAACnT,IAAI,CAAC;EAC7B,IAAI,CAACmT,GAAG,CAACnT,IAAI,CAAC,GAAGupC,QAAQ,GAAGA,QAAQ,GAAG,IAAI,GAAGloC,KAAK,GAAGA,KAAK;AAC7D,CAAC;AAEDynC,YAAY,CAACjoC,SAAS,CAAC8L,GAAG,GAAG,UAAU3M,IAAI,EAAE;EAC3CA,IAAI,GAAG+oC,aAAa,CAAC/oC,IAAI,CAAC;EAC1B,OAAO,IAAI,CAAC8b,GAAG,CAAC9b,IAAI,CAAC,GAAG,IAAI,CAACmT,GAAG,CAACnT,IAAI,CAAC,GAAG,IAAI;AAC/C,CAAC;AAED8oC,YAAY,CAACjoC,SAAS,CAACib,GAAG,GAAG,UAAU9b,IAAI,EAAE;EAC3C,OAAOsB,MAAM,CAAC,IAAI,CAAC6R,GAAG,EAAE41B,aAAa,CAAC/oC,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED8oC,YAAY,CAACjoC,SAAS,CAACsoC,OAAO,GAAG,UAAUr/B,QAAQ,EAAEgQ,OAAO,EAAE;EAC5D,KAAK,IAAI9Z,IAAI,IAAI,IAAI,CAACmT,GAAG,EAAE;IACzB,IAAI7R,MAAM,CAAC,IAAI,CAAC6R,GAAG,EAAEnT,IAAI,CAAC,EAAE;MAC1B8J,QAAQ,CAAC1J,IAAI,CAAC0Z,OAAO,EAAE,IAAI,CAAC3G,GAAG,CAACnT,IAAI,CAAC,EAAEA,IAAI,EAAE,IAAI,CAAC;IACpD;EACF;AACF,CAAC;AAED8oC,YAAY,CAACjoC,SAAS,CAAC+P,OAAO,GAAG,YAAY;EAC3C,IAAIs4B,KAAK,GAAG,EAAE;EACd,IAAI,CAACC,OAAO,CAAC,UAAU9nC,KAAK,EAAErB,IAAI,EAAE;IAClCkpC,KAAK,CAACnjC,IAAI,CAAC,CAAC/F,IAAI,EAAEqB,KAAK,CAAC,CAAC;EAC3B,CAAC,CAAC;EACF,OAAO4nC,WAAW,CAACC,KAAK,CAAC;AAC3B,CAAC;AAED,oDAAe7zB,OAAO,E;;AC/FtB,SAASrU,OAAOA,CAACO,GAAG,EAAEvB,IAAI,EAAEkN,WAAW,EAAEs8B,YAAY,EAAEvnC,IAAI,EAAE;EAC3D,IAAIwnC,IAAI,GAAGloC,GAAG,CAACvB,IAAI,CAAC;EACpBuB,GAAG,CAACvB,IAAI,CAAC,GAAGkN,WAAW,CAACu8B,IAAI,CAAC;EAC7B,IAAID,YAAY,EAAE;IAChBA,YAAY,CAACvnC,IAAI,CAAC,CAAC8D,IAAI,CAAC,CAACxE,GAAG,EAAEvB,IAAI,EAAEypC,IAAI,CAAC,CAAC;EAC5C;AACF;AAEA,oDAAezoC,OAAO,E;;;;;ACRtB,SAAS0oC,cAAcA,CAACvnC,CAAC,EAAE;EACzB,OAAO,CAACA,CAAC,CAACwnC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,EAAErpC,WAAW,CAAC,CAAC;AACrD;AAEA,SAASspC,kBAAkBA,CAACl0B,OAAO,EAAEzT,IAAI,EAAE4nC,QAAQ,EAAE;EACnD,IAAIn0B,OAAO,CAACo0B,OAAO,CAACxpC,WAAW,CAAC,CAAC,KAAK2B,IAAI,CAAC3B,WAAW,CAAC,CAAC,EAAE;IACxD,OAAO,KAAK;EACd;EACA,IAAI,CAACupC,QAAQ,EAAE;IACb,OAAO,IAAI;EACb;EACA,IAAME,WAAW,GAAGL,cAAc,CAACh0B,OAAO,CAAC;EAAC,IAAAvK,SAAA,GAAAC,oCAAA,CACtBy+B,QAAQ;IAAAx+B,KAAA;EAAA;IAA9B,KAAAF,SAAA,CAAA3D,CAAA,MAAA6D,KAAA,GAAAF,SAAA,CAAAvJ,CAAA,IAAA0J,IAAA,GAAgC;MAAA,IAArBmJ,OAAO,GAAApJ,KAAA,CAAAhK,KAAA;MAChB,IAAIoT,OAAO,KAAKs1B,WAAW,EAAE;QAC3B,OAAO,IAAI;MACb;IACF;EAAC,SAAA/gC,GAAA;IAAAmC,SAAA,CAAAhJ,CAAA,CAAA6G,GAAA;EAAA;IAAAmC,SAAA,CAAA3K,CAAA;EAAA;EACD,OAAO,KAAK;AACd;AAEA,SAASwpC,mBAAmBA,CAAClP,GAAG,EAAEmP,GAAG,EAAE;EACrC,IAAInP,GAAG,CAACtkB,MAAM,EAAE;IACd,OAAOskB,GAAG,CAACtkB,MAAM;EACnB;EACA,IAAIyzB,GAAG,IAAIA,GAAG,CAACC,gBAAgB,EAAE;IAC/B,OAAOD,GAAG,CAACC,gBAAgB,CAACpP,GAAG,CAACqP,OAAO,EAAErP,GAAG,CAACsP,OAAO,CAAC;EACvD;EACA,OAAOtlC,SAAS;AAClB;AAEA,SAASulC,WAAWA,CAACC,IAAI,EAAE;EACzB,IAAIC,UAAU,GAAG,CAAC;EAClB,IAAIC,GAAG,GAAG,EAAE;EACZ,IAAIC,eAAe;EACnB,KAAK,IAAI/zB,MAAM,GAAG,CAAC,EAAE4zB,IAAI,IAAI5zB,MAAM,GAAG6zB,UAAU,EAAE7zB,MAAM,EAAE,EAAE;IAC1D+zB,eAAe,GAAGC,eAAe,CAACJ,IAAI,CAAC;IACvC,IAAI,CAACG,eAAe,IAAIA,eAAe,CAACX,OAAO,KAAK,MAAM,EAAE;MAC1D;IACF;IACAU,GAAG,CAAChpB,OAAO,CAACipB,eAAe,CAAC;IAC5BH,IAAI,GAAGA,IAAI,CAACK,UAAU;EACxB;EACA,OAAOH,GAAG;AACZ;AAEA,SAASI,oBAAoBA,CAACl+B,CAAC,EAAE;EAC/B,IAAIm+B,UAAU,GAAG,EAAE;EACnB,IAAIC,SAAS,GAAG,KAAK;IACnBC,eAAe,GAAGD,SAAS,CAAC1lC,MAAM;EACpC,IAAIolC,GAAG,GAAG,EAAE;IACVjgC,GAAG,GAAG,CAAC;IACPygC,OAAO;IACPC,WAAW;EAEb,KAAK,IAAIjpC,CAAC,GAAG0K,CAAC,CAACtH,MAAM,GAAG,CAAC,EAAEpD,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;IACtCgpC,OAAO,GAAGE,mBAAmB,CAACx+B,CAAC,CAAC1K,CAAC,CAAC,CAAC;IACnCipC,WAAW,GAAG1gC,GAAG,GAAGigC,GAAG,CAACplC,MAAM,GAAG2lC,eAAe,GAAGC,OAAO,CAAC5lC,MAAM;IACjE,IAAIpD,CAAC,GAAG0K,CAAC,CAACtH,MAAM,GAAG,CAAC,IAAI6lC,WAAW,IAAIJ,UAAU,GAAG,CAAC,EAAE;MACrDL,GAAG,CAAChpB,OAAO,CAAC,KAAK,CAAC;MAClB;IACF;IACAgpB,GAAG,CAAChpB,OAAO,CAACwpB,OAAO,CAAC;IACpBzgC,GAAG,IAAIygC,OAAO,CAAC5lC,MAAM;EACvB;EACA,OAAOolC,GAAG,CAACxkC,IAAI,CAAC8kC,SAAS,CAAC;AAC5B;AAEA,SAASK,aAAaA,CAACb,IAAI,EAAE;EAC3B,OAAOM,oBAAoB,CAACP,WAAW,CAACC,IAAI,CAAC,CAAC;AAChD;AAEA,SAASY,mBAAmBA,CAACE,IAAI,EAAE;EACjC,IAAI,CAACA,IAAI,IAAI,CAACA,IAAI,CAACtB,OAAO,EAAE;IAC1B,OAAO,EAAE;EACX;EACA,IAAIU,GAAG,GAAG,CAACY,IAAI,CAACtB,OAAO,CAAC;EACxB,IAAIsB,IAAI,CAACzsB,EAAE,EAAE;IACX6rB,GAAG,CAACzkC,IAAI,CAAC,GAAG,GAAGqlC,IAAI,CAACzsB,EAAE,CAAC;EACzB;EACA,IAAIysB,IAAI,CAACC,OAAO,EAAE;IAChBb,GAAG,CAACzkC,IAAI,CAAC,GAAG,GAAGqlC,IAAI,CAACC,OAAO,CAACrlC,IAAI,CAAC,GAAG,CAAC,CAAC;EACxC;EAAC,IAAA+F,UAAA,GAAAX,oCAAA,CACuBggC,IAAI,CAAC7+B,UAAU;IAAAP,MAAA;EAAA;IAAvC,KAAAD,UAAA,CAAAvE,CAAA,MAAAwE,MAAA,GAAAD,UAAA,CAAAnK,CAAA,IAAA0J,IAAA,GAAyC;MAAA,IAA9BggC,SAAS,GAAAt/B,MAAA,CAAA3K,KAAA;MAClBmpC,GAAG,CAACzkC,IAAI,CAAC,GAAG,GAAGulC,SAAS,CAAC9mC,GAAG,GAAG,IAAI,GAAG8mC,SAAS,CAACjqC,KAAK,GAAG,IAAI,CAAC;IAC/D;EAAC,SAAA2H,GAAA;IAAA+C,UAAA,CAAA5J,CAAA,CAAA6G,GAAA;EAAA;IAAA+C,UAAA,CAAAvL,CAAA;EAAA;EAED,OAAOgqC,GAAG,CAACxkC,IAAI,CAAC,EAAE,CAAC;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS0kC,eAAeA,CAACJ,IAAI,EAAE;EAC7B,IAAI,CAACA,IAAI,IAAI,CAACA,IAAI,CAACR,OAAO,EAAE;IAC1B,OAAO,IAAI;EACb;EACA,IAAIU,GAAG,GAAG,CAAC,CAAC;IACV9K,SAAS;EACX8K,GAAG,CAACV,OAAO,GAAGQ,IAAI,CAACR,OAAO,CAACxpC,WAAW,CAAC,CAAC;EACxC,IAAIgqC,IAAI,CAAC3rB,EAAE,EAAE;IACX6rB,GAAG,CAAC7rB,EAAE,GAAG2rB,IAAI,CAAC3rB,EAAE;EAClB;EACA+gB,SAAS,GAAG4K,IAAI,CAAC5K,SAAS;EAC1B,IAAIA,SAAS,IAAI,OAAOA,SAAS,KAAK,QAAQ,EAAE;IAC9C8K,GAAG,CAACa,OAAO,GAAG3L,SAAS,CAAC7yB,KAAK,CAAC,KAAK,CAAC;EACtC;EACA,IAAIN,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;EACjDi+B,GAAG,CAACj+B,UAAU,GAAG,EAAE;EACnB,SAAA4W,EAAA,MAAAnE,WAAA,GAAwBzS,UAAU,EAAA4W,EAAA,GAAAnE,WAAA,CAAA5Z,MAAA,EAAA+d,EAAA,IAAE;IAA/B,IAAMmoB,SAAS,GAAAtsB,WAAA,CAAAmE,EAAA;IAClB,IAAM1F,IAAI,GAAG6sB,IAAI,CAACX,YAAY,CAAC2B,SAAS,CAAC;IACzC,IAAI7tB,IAAI,EAAE;MACR+sB,GAAG,CAACj+B,UAAU,CAACxG,IAAI,CAAC;QAAEvB,GAAG,EAAE8mC,SAAS;QAAEjqC,KAAK,EAAEoc;MAAK,CAAC,CAAC;IACtD;EACF;EACA,OAAO+sB,GAAG;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASe,iBAAiBA,CAAC71B,OAAO,EAAE21B,OAAO,EAAEG,SAAS,EAAE;EACtD,IAAI;IAAA,IAAAh/B,UAAA,GAAApB,oCAAA,CACgBigC,OAAO;MAAA5+B,MAAA;IAAA;MAAzB,KAAAD,UAAA,CAAAhF,CAAA,MAAAiF,MAAA,GAAAD,UAAA,CAAA5K,CAAA,IAAA0J,IAAA,GAA2B;QAAA,IAAhBmgC,GAAG,GAAAh/B,MAAA,CAAApL,KAAA;QACZ,IAAI,OAAOoqC,GAAG,KAAK,QAAQ,EAAE;UAC3B,IAAI/1B,OAAO,CAACg2B,SAAS,CAACC,QAAQ,CAACF,GAAG,CAAC,EAAE;YACnC,OAAO,IAAI;UACb;QACF,CAAC,MAAM;UAAA,IAAAv6B,UAAA,GAAA9F,oCAAA,CACWsK,OAAO,CAACg2B,SAAS;YAAAv6B,MAAA;UAAA;YAAjC,KAAAD,UAAA,CAAA1J,CAAA,MAAA2J,MAAA,GAAAD,UAAA,CAAAtP,CAAA,IAAA0J,IAAA,GAAmC;cAAA,IAAxBxI,CAAC,GAAAqO,MAAA,CAAA9P,KAAA;cACV,IAAIoqC,GAAG,CAACrqC,IAAI,CAAC0B,CAAC,CAAC,EAAE;gBACf,OAAO,IAAI;cACb;YACF;UAAC,SAAAkG,GAAA;YAAAkI,UAAA,CAAA/O,CAAA,CAAA6G,GAAA;UAAA;YAAAkI,UAAA,CAAA1Q,CAAA;UAAA;QACH;MACF;IAAC,SAAAwI,GAAA;MAAAwD,UAAA,CAAArK,CAAA,CAAA6G,GAAA;IAAA;MAAAwD,UAAA,CAAAhM,CAAA;IAAA;IAAA,IAAAmQ,UAAA,GAAAvF,oCAAA,CACiBogC,SAAS;MAAA36B,MAAA;IAAA;MAA3B,KAAAF,UAAA,CAAAnJ,CAAA,MAAAqJ,MAAA,GAAAF,UAAA,CAAA/O,CAAA,IAAA0J,IAAA,GAA6B;QAAA,IAAlBsgC,GAAG,GAAA/6B,MAAA,CAAAxP,KAAA;QACZ,IAAIqU,OAAO,CAAC4X,OAAO,CAACse,GAAG,CAAC,EAAE;UACxB,OAAO,IAAI;QACb;MACF;IAAC,SAAA5iC,GAAA;MAAA2H,UAAA,CAAAxO,CAAA,CAAA6G,GAAA;IAAA;MAAA2H,UAAA,CAAAnQ,CAAA;IAAA;EACH,CAAC,CAAC,OAAOsM,EAAE,EAAE;IACX;EAAA;EAEF,OAAO,KAAK;AACd;;;;;;;;;;;;;;;;;ACjKA;AACA;;AAEkC;AACF;AACY;AACA;AACT;AAEQ;AACL;AAEtC,IAAM8Z,kBAAQ,GAAG;EACfmlB,OAAO,EAAE,IAAI;EACbC,sBAAsB,EAAE,KAAK;EAC7BC,mBAAmB,EAAE,KAAK;EAC1BC,qBAAqB,EAAE,KAAK;EAC5BC,kBAAkB,EAAE,KAAK;EACzBC,qBAAqB,EAAE,KAAK;EAC5BC,qBAAqB,EAAE,KAAK;EAC5BC,mBAAmB,EAAE,KAAK;EAC1B79B,GAAG,EAAE,IAAI;EACT89B,GAAG,EAAE,IAAI;EACTC,UAAU,EAAE,IAAI;EAChBC,YAAY,EAAE,IAAI;EAClBC,qBAAqB,EAAE,IAAI;EAC3BC,4BAA4B,EAAE;AAChC,CAAC;AAED,SAASC,OAAOA,CAACpD,YAAY,EAAEvnC,IAAI,EAAE;EACnC,IAAIwY,CAAC;EACL,OAAO+uB,YAAY,CAACvnC,IAAI,CAAC,CAACmD,MAAM,EAAE;IAChCqV,CAAC,GAAG+uB,YAAY,CAACvnC,IAAI,CAAC,CAACwW,KAAK,CAAC,CAAC;IAC9BgC,CAAC,CAAC,CAAC,CAAC,CAACA,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;EACnB;AACF;AAEA,SAASoyB,mBAAmBA,CAAC7mB,WAAW,EAAE;EACxC,IAAI,CAACA,WAAW,IAAI,CAACA,WAAW,CAACzZ,UAAU,EAAE;IAC3C,OAAO,IAAI;EACb;EACA,IAAM2S,KAAK,GAAG8G,WAAW,CAACzZ,UAAU;EAAC,IAAApB,SAAA,GAAAC,mCAAA,CACrB8T,KAAK;IAAA7T,KAAA;EAAA;IAArB,KAAAF,SAAA,CAAA3D,CAAA,MAAA6D,KAAA,GAAAF,SAAA,CAAAvJ,CAAA,IAAA0J,IAAA,GAAuB;MAAA,IAAZoB,CAAC,GAAArB,KAAA,CAAAhK,KAAA;MACV,IAAIqL,CAAC,CAAClI,GAAG,KAAK,MAAM,EAAE;QACpB,OAAOkI,CAAC,CAACrL,KAAK;MAChB;IACF;EAAC,SAAA2H,GAAA;IAAAmC,SAAA,CAAAhJ,CAAA,CAAA6G,GAAA;EAAA;IAAAmC,SAAA,CAAA3K,CAAA;EAAA;EACD,OAAO,IAAI;AACb;AAEA,SAASssC,oBAAoBA,CAACx+B,WAAW,EAAE;EACzC,IAAMy+B,QAAQ,GAAG,EAAE;EAAC,IAAAhhC,UAAA,GAAAX,mCAAA,CACAkD,WAAW;IAAAtC,MAAA;EAAA;IAA/B,KAAAD,UAAA,CAAAvE,CAAA,MAAAwE,MAAA,GAAAD,UAAA,CAAAnK,CAAA,IAAA0J,IAAA,GAAiC;MAAA,IAAtB8F,KAAK,GAAApF,MAAA,CAAA3K,KAAA;MACd0rC,QAAQ,CAAChnC,IAAI,CAAC,IAAI7E,MAAM,CAACkQ,KAAK,EAAE,GAAG,CAAC,CAAC;IACvC;EAAC,SAAApI,GAAA;IAAA+C,UAAA,CAAA5J,CAAA,CAAA6G,GAAA;EAAA;IAAA+C,UAAA,CAAAvL,CAAA;EAAA;EACD,OAAO,UAAUwlB,WAAW,EAAE;IAC5B,IAAMhmB,IAAI,GAAG6sC,mBAAmB,CAAC7mB,WAAW,CAAC;IAC7C,IAAI,CAAChmB,IAAI,EAAE;MACT,OAAO,KAAK;IACd;IACA,SAAAmjB,EAAA,MAAA6pB,SAAA,GAAgBD,QAAQ,EAAA5pB,EAAA,GAAA6pB,SAAA,CAAA5nC,MAAA,EAAA+d,EAAA,IAAE;MAArB,IAAM9gB,CAAC,GAAA2qC,SAAA,CAAA7pB,EAAA;MACV,IAAI9gB,CAAC,CAACjB,IAAI,CAACpB,IAAI,CAAC,EAAE;QAChB,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd,CAAC;AACH;AAAC,IAEKmkC,YAAY;EAChB,SAAAA,aAAYz+B,OAAO,EAAE8wB,SAAS,EAAE4O,OAAO,EAAE6H,OAAO,EAAEC,SAAS,EAAE;IAAAl7B,wBAAA,OAAAmyB,YAAA;IAAArlB,wBAAA,mCAk4BlC,YAAY;MACrC,IAAI,CAACquB,eAAe,CAAC,cAAc,CAAC;IACtC,CAAC;IAn4BC,IAAI,CAACznC,OAAO,GAAGA,OAAO;IACtB,IAAI0nC,cAAc,GAAG1nC,OAAO,CAAC0nC,cAAc;IAC3C,IAAI1nC,OAAO,CAACosB,OAAO,KAAK,KAAK,IAAIsb,cAAc,KAAK,KAAK,EAAE;MACzD,IAAI,CAACA,cAAc,GAAG,CAAC,CAAC;IAC1B,CAAC,MAAM;MACL,IAAI,CAACrpC,MAAQ,CAACqpC,cAAc,EAAE,QAAQ,CAAC,EAAE;QACvCA,cAAc,GAAGxmB,kBAAQ;MAC3B;MACA,IAAI,CAACwmB,cAAc,GAAGrpC,KAAO,CAAC6iB,kBAAQ,EAAEwmB,cAAc,CAAC;IACzD;IACA,IAAI,CAACC,kBAAkB,CAAC,CAAC;IACzB,IAAI,CAAC7W,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAAC4O,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACl7B,UAAU,GAAGk7B,OAAO,CAAC9L,MAAM,CAAC5vB,QAAQ,CAACQ,UAAU;IACpD,IAAI,CAAC+iC,OAAO,GAAGA,OAAO,IAAI,CAAC,CAAC;IAC5B,IAAI,CAACC,SAAS,GAAGA,SAAS,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC1D,YAAY,GAAG;MAClBuC,OAAO,EAAE,EAAE;MACXt9B,GAAG,EAAE,EAAE;MACP+9B,UAAU,EAAE,EAAE;MACdC,YAAY,EAAE;IAChB,CAAC;IACD,IAAI,CAACa,aAAa,GAAG;MACnBf,GAAG,EAAE,EAAE;MACPE,YAAY,EAAE,EAAE;MAChBc,qBAAqB,EAAE;IACzB,CAAC;IAED,IAAI,CAACC,SAAS,GAAG,IAAI,CAACP,OAAO,CAAChlC,QAAQ;IACtC,IAAI,CAACwlC,SAAS,GAAG,IAAI,CAACD,SAAS,IAAI,IAAI,CAACA,SAAS,CAAChlC,IAAI;EACxD;EAAC,OAAAgK,qBAAA,CAAA2xB,YAAA;IAAA3/B,GAAA;IAAAnD,KAAA,EAED,SAAAgsC,kBAAkBA,CAAA,EAAG;MAAA,IAAAK,qBAAA,EAAAC,eAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA;MACnB,IAAMzoC,OAAO,GAAG,IAAI,CAACA,OAAO;MAC5B,IAAI,CAAC0oC,oBAAoB,GAAG/d,OAAO,EAAAqd,qBAAA,GACjChoC,OAAO,CAAC0oC,oBAAoB,cAAAV,qBAAA,cAAAA,qBAAA,IAAAC,eAAA,GAAIjoC,OAAO,CAAC+sB,MAAM,cAAAkb,eAAA,uBAAdA,eAAA,CAAgBpR,aAClD,CAAC;MACD,IAAI,CAAC8R,iBAAiB,GAAG3oC,OAAO,CAAC2oC,iBAAiB;MAClD,IAAI,CAACvB,oBAAoB,GAAGA,oBAAoB,CAACpnC,OAAO,CAAC4I,WAAW,CAAC;MACrE,IAAI,CAACggC,WAAW,IAAAV,gBAAA,GAAGloC,OAAO,CAAC+sB,MAAM,cAAAmb,gBAAA,uBAAdA,gBAAA,CAAgBU,WAAW;MAC9C,IAAI,CAACvS,gBAAgB,GAAG,EAAA8R,gBAAA,GAAAnoC,OAAO,CAAC+sB,MAAM,cAAAob,gBAAA,uBAAdA,gBAAA,CAAgB9R,gBAAgB,KAAI,CAAC,CAAC;MAC9D,IAAI,CAACwS,YAAY,GAAG,EAAAT,gBAAA,GAClBpoC,OAAO,CAAC+sB,MAAM,cAAAqb,gBAAA,uBAAdA,gBAAA,CAAgBtR,UAAU,GAAAuR,gBAAA,GAC1BroC,OAAO,CAAC+sB,MAAM,cAAAsb,gBAAA,uBAAdA,gBAAA,CAAgBrR,WAAW,GAAAsR,gBAAA,GAC3BtoC,OAAO,CAAC+sB,MAAM,cAAAub,gBAAA,uBAAdA,gBAAA,CAAgBvR,aAAa,CAC9B,CAACvpB,MAAM,CAACmd,OAAO,CAAC;MACjB,IAAI,CAACme,cAAc,GAAG,EAAAP,gBAAA,GACpBvoC,OAAO,CAAC+sB,MAAM,cAAAwb,gBAAA,uBAAdA,gBAAA,CAAgBQ,aAAa,GAAAP,gBAAA,GAC7BxoC,OAAO,CAAC+sB,MAAM,cAAAyb,gBAAA,uBAAdA,gBAAA,CAAgBQ,cAAc,GAAAP,gBAAA,GAC9BzoC,OAAO,CAAC+sB,MAAM,cAAA0b,gBAAA,uBAAdA,gBAAA,CAAgBQ,gBAAgB,CACjC,CAACz7B,MAAM,CAACmd,OAAO,CAAC;IACnB;EAAC;IAAA7rB,GAAA;IAAAnD,KAAA,EAED,SAAAoR,SAASA,CAAC/M,OAAO,EAAE;MACjB,IAAI,CAACA,OAAO,GAAG3B,KAAO,CAAC,IAAI,CAAC2B,OAAO,EAAEA,OAAO,CAAC;MAC7C,IAAI0nC,cAAc,GAAG1nC,OAAO,CAAC0nC,cAAc;MAC3C,IAAMwB,WAAW,GAAG7qC,KAAO,CAAC,IAAI,CAACqpC,cAAc,CAAC;MAChD,IAAI1nC,OAAO,CAACosB,OAAO,KAAK,KAAK,IAAIsb,cAAc,KAAK,KAAK,EAAE;QACzD,IAAI,CAACA,cAAc,GAAG,CAAC,CAAC;MAC1B,CAAC,MAAM;QACL,IAAI,CAACrpC,MAAQ,CAACqpC,cAAc,EAAE,QAAQ,CAAC,EAAE;UACvCA,cAAc,GAAGxmB,kBAAQ;QAC3B;QACA,IAAI,CAACwmB,cAAc,GAAGrpC,KAAO,CAAC6iB,kBAAQ,EAAEwmB,cAAc,CAAC;MACzD;MACA,IAAI,CAACC,kBAAkB,CAAC,CAAC;MACzB,IAAI,CAACnI,UAAU,CAAC0J,WAAW,CAAC;IAC9B;;IAEA;EAAA;IAAApqC,GAAA;IAAAnD,KAAA,EACA,SAAA6jC,UAAUA,CAAC0J,WAAW,EAAE;MACtB,IAAI,IAAI,CAACxB,cAAc,CAACrB,OAAO,IAAI,EAAE6C,WAAW,IAAIA,WAAW,CAAC7C,OAAO,CAAC,EAAE;QACxE,IAAI,CAAC8C,iBAAiB,CAAC,CAAC;MAC1B,CAAC,MAAM,IACL,CAAC,IAAI,CAACzB,cAAc,CAACrB,OAAO,IAC5B6C,WAAW,IACXA,WAAW,CAAC7C,OAAO,EACnB;QACA,IAAI,CAAC+C,mBAAmB,CAAC,CAAC;MAC5B;MAEA,IAAI,IAAI,CAAC1B,cAAc,CAAC3+B,GAAG,IAAI,EAAEmgC,WAAW,IAAIA,WAAW,CAACngC,GAAG,CAAC,EAAE;QAChE,IAAI,CAACsgC,iBAAiB,CAAC,CAAC;MAC1B,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC3B,cAAc,CAAC3+B,GAAG,IAAImgC,WAAW,IAAIA,WAAW,CAACngC,GAAG,EAAE;QACrE,IAAI,CAACugC,mBAAmB,CAAC,CAAC;MAC5B;MAEA,IAAI,IAAI,CAAC5B,cAAc,CAACb,GAAG,IAAI,EAAEqC,WAAW,IAAIA,WAAW,CAACrC,GAAG,CAAC,EAAE;QAChE,IAAI,CAAC0C,aAAa,CAAC,CAAC;MACtB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC7B,cAAc,CAACb,GAAG,IAAIqC,WAAW,IAAIA,WAAW,CAACrC,GAAG,EAAE;QACrE,IAAI,CAAC2C,eAAe,CAAC,CAAC;MACxB;MAEA,IACE,IAAI,CAAC9B,cAAc,CAACZ,UAAU,IAC9B,EAAEoC,WAAW,IAAIA,WAAW,CAACpC,UAAU,CAAC,EACxC;QACA,IAAI,CAAC2C,oBAAoB,CAAC,CAAC;MAC7B,CAAC,MAAM,IACL,CAAC,IAAI,CAAC/B,cAAc,CAACZ,UAAU,IAC/BoC,WAAW,IACXA,WAAW,CAACpC,UAAU,EACtB;QACA,IAAI,CAAC4C,sBAAsB,CAAC,CAAC;MAC/B;MAEA,IACE,IAAI,CAAChC,cAAc,CAACX,YAAY,IAChC,EAAEmC,WAAW,IAAIA,WAAW,CAACnC,YAAY,CAAC,EAC1C;QACA,IAAI,CAAC4C,sBAAsB,CAAC,CAAC;MAC/B,CAAC,MAAM,IACL,CAAC,IAAI,CAACjC,cAAc,CAACX,YAAY,IACjCmC,WAAW,IACXA,WAAW,CAACnC,YAAY,EACxB;QACA,IAAI,CAAC6C,wBAAwB,CAAC,CAAC;MACjC;MAEA,IACE,IAAI,CAAClC,cAAc,CAACV,qBAAqB,IACzC,EAAEkC,WAAW,IAAIA,WAAW,CAAClC,qBAAqB,CAAC,EACnD;QACA,IAAI,CAAC6C,+BAA+B,CAAC,CAAC;MACxC,CAAC,MAAM,IACL,CAAC,IAAI,CAACnC,cAAc,CAACV,qBAAqB,IAC1CkC,WAAW,IACXA,WAAW,CAAClC,qBAAqB,EACjC;QACA,IAAI,CAAC8C,iCAAiC,CAAC,CAAC;MAC1C;IACF;EAAC;IAAAhrC,GAAA;IAAAnD,KAAA,EAED,SAAAytC,mBAAmBA,CAAA,EAAG;MACpBlC,OAAO,CAAC,IAAI,CAACpD,YAAY,EAAE,SAAS,CAAC;IACvC;EAAC;IAAAhlC,GAAA;IAAAnD,KAAA,EAED,SAAAwtC,iBAAiBA,CAAA,EAAG;MAClB,IAAM11B,IAAI,GAAG,IAAI;MAEjB,SAASs2B,QAAQA,CAACjuC,IAAI,EAAEkuC,GAAG,EAAE;QAC3B,IAAIluC,IAAI,IAAIkuC,GAAG,IAAI3rC,UAAY,CAAC2rC,GAAG,CAACluC,IAAI,CAAC,CAAC,EAAE;UAC1CR,eAAO,CAAC0uC,GAAG,EAAEluC,IAAI,EAAE,UAAUioC,IAAI,EAAE;YACjC,OAAOtwB,IAAI,CAACisB,OAAO,CAACgB,IAAI,CAACqD,IAAI,CAAC;UAChC,CAAC,CAAC;QACJ;MACF;MAEA,IAAI,gBAAgB,IAAI,IAAI,CAACwD,OAAO,EAAE;QACpC,IAAM0C,IAAI,GAAG,IAAI,CAAC1C,OAAO,CAAC3lB,cAAc,CAACzmB,SAAS;QAClDG,eAAO,CACL2uC,IAAI,EACJ,MAAM,EACN,UAAUlG,IAAI,EAAE;UACd,OAAO,UAAUx0B,MAAM,EAAEvR,GAAG,EAAE;YAC5B,IAAMksC,WAAW,GAAGC,YAAY,CAACnsC,GAAG,CAAC;YACrC,IAAIK,MAAQ,CAACL,GAAG,EAAE,QAAQ,CAAC,IAAIksC,WAAW,EAAE;cAC1ClsC,GAAG,GAAGksC,WAAW,GAAGlsC,GAAG,CAACvD,QAAQ,CAAC,CAAC,GAAGuD,GAAG;cACxC,IAAI,IAAI,CAACosC,aAAa,EAAE;gBACtB,IAAI,CAACA,aAAa,CAAC76B,MAAM,GAAGA,MAAM;gBAClC,IAAI,CAAC66B,aAAa,CAACpsC,GAAG,GAAGA,GAAG;gBAC5B,IAAI,CAACosC,aAAa,CAACh7B,WAAW,GAAG,IAAI;gBACrC,IAAI,CAACg7B,aAAa,CAACt6B,aAAa,GAAGzR,GAAK,CAAC,CAAC;gBAC1C,IAAI,CAAC+rC,aAAa,CAAC96B,WAAW,GAAG,IAAI;cACvC,CAAC,MAAM;gBACL,IAAI,CAAC86B,aAAa,GAAG;kBACnB76B,MAAM,EAAEA,MAAM;kBACdvR,GAAG,EAAEA,GAAG;kBACRoR,WAAW,EAAE,IAAI;kBACjBU,aAAa,EAAEzR,GAAK,CAAC,CAAC;kBACtBiR,WAAW,EAAE;gBACf,CAAC;cACH;YACF;YACA,OAAOy0B,IAAI,CAACxvB,KAAK,CAAC,IAAI,EAAE9K,SAAS,CAAC;UACpC,CAAC;QACH,CAAC,EACD,IAAI,CAACq6B,YAAY,EACjB,SACF,CAAC;QAEDxoC,eAAO,CACL2uC,IAAI,EACJ,kBAAkB,EAClB,UAAUlG,IAAI,EAAE;UACd,OAAO,UAAUJ,MAAM,EAAEhoC,KAAK,EAAE;YAC9B;YACA,IAAI,CAAC,IAAI,CAACyuC,aAAa,EAAE;cACvB,IAAI,CAACA,aAAa,GAAG,CAAC,CAAC;YACzB;YACA,IAAI/rC,MAAQ,CAACslC,MAAM,EAAE,QAAQ,CAAC,IAAItlC,MAAQ,CAAC1C,KAAK,EAAE,QAAQ,CAAC,EAAE;cAC3D,IAAI8X,IAAI,CAACi0B,cAAc,CAAClB,qBAAqB,EAAE;gBAC7C,IAAI,CAAC,IAAI,CAAC4D,aAAa,CAAC36B,eAAe,EAAE;kBACvC,IAAI,CAAC26B,aAAa,CAAC36B,eAAe,GAAG,CAAC,CAAC;gBACzC;gBACA,IAAI,CAAC26B,aAAa,CAAC36B,eAAe,CAACk0B,MAAM,CAAC,GAAGhoC,KAAK;cACpD;cACA;cACA,IAAIgoC,MAAM,CAAC/oC,WAAW,CAAC,CAAC,KAAK,cAAc,EAAE;gBAC3C,IAAI,CAACwvC,aAAa,CAACC,oBAAoB,GAAG1uC,KAAK;cACjD;YACF;YACA,OAAOooC,IAAI,CAACxvB,KAAK,CAAC,IAAI,EAAE9K,SAAS,CAAC;UACpC,CAAC;QACH,CAAC,EACD,IAAI,CAACq6B,YAAY,EACjB,SACF,CAAC;QAEDxoC,eAAO,CACL2uC,IAAI,EACJ,MAAM,EACN,UAAUlG,IAAI,EAAE;UACd,OAAO,UAAU/+B,IAAI,EAAE;YACrB,IAAMglC,GAAG,GAAG,IAAI;YAEhB,SAASM,yBAAyBA,CAAA,EAAG;cACnC,IAAIN,GAAG,CAACI,aAAa,EAAE;gBACrB,IAAIJ,GAAG,CAACI,aAAa,CAACh7B,WAAW,KAAK,IAAI,EAAE;kBAC1C46B,GAAG,CAACI,aAAa,CAACh7B,WAAW,GAAG,CAAC;kBACjC,IAAIqE,IAAI,CAACi0B,cAAc,CAACjB,kBAAkB,EAAE;oBAC1CuD,GAAG,CAACI,aAAa,CAAC/lC,OAAO,GAAGW,IAAI;kBAClC;kBACAglC,GAAG,CAACO,eAAe,GAAG92B,IAAI,CAAC3E,cAAc,CACvCk7B,GAAG,CAACI,aAAa,EACjB,KAAK,EACLhrC,SACF,CAAC;gBACH;gBACA,IAAI4qC,GAAG,CAACtO,UAAU,GAAG,CAAC,EAAE;kBACtBsO,GAAG,CAACI,aAAa,CAACt6B,aAAa,GAAGzR,GAAK,CAAC,CAAC;gBAC3C;gBACA,IAAI2rC,GAAG,CAACtO,UAAU,GAAG,CAAC,EAAE;kBACtB,IAAMpsB,WAAW,GAAGjR,GAAK,CAAC,CAAC;kBAC3B2rC,GAAG,CAACI,aAAa,CAAC96B,WAAW,GAAGA,WAAW;kBAE3C,IAAIK,QAAO,GAAG,IAAI;kBAClBq6B,GAAG,CAACI,aAAa,CAACI,qBAAqB,GACrCR,GAAG,CAAClO,iBAAiB,CAAC,cAAc,CAAC;kBACvC,IAAIroB,IAAI,CAACi0B,cAAc,CAACpB,sBAAsB,EAAE;oBAC9C,IAAMmE,aAAa,GACjBh3B,IAAI,CAACi0B,cAAc,CAACpB,sBAAsB;oBAC5C32B,QAAO,GAAG,CAAC,CAAC;oBACZ,IAAI;sBACF,IAAIg0B,MAAM;sBACV,IAAI8G,aAAa,KAAK,IAAI,EAAE;wBAC1B,IAAMC,UAAU,GAAGV,GAAG,CAACW,qBAAqB,CAAC,CAAC;wBAC9C,IAAID,UAAU,EAAE;0BACd,IAAMvkC,GAAG,GAAGukC,UAAU,CAACE,IAAI,CAAC,CAAC,CAACzjC,KAAK,CAAC,SAAS,CAAC;0BAC9C,IAAIa,KAAK,EAAErM,KAAK;0BAAC,IAAAmL,UAAA,GAAApB,mCAAA,CACDS,GAAG;4BAAAY,MAAA;0BAAA;4BAAnB,KAAAD,UAAA,CAAAhF,CAAA,MAAAiF,MAAA,GAAAD,UAAA,CAAA5K,CAAA,IAAA0J,IAAA,GAAqB;8BAAA,IAAVjF,CAAC,GAAAoG,MAAA,CAAApL,KAAA;8BACVqM,KAAK,GAAGrH,CAAC,CAACwG,KAAK,CAAC,IAAI,CAAC;8BACrBw8B,MAAM,GAAG37B,KAAK,CAAC+K,KAAK,CAAC,CAAC;8BACtBpX,KAAK,GAAGqM,KAAK,CAAC1H,IAAI,CAAC,IAAI,CAAC;8BACxBqP,QAAO,CAACg0B,MAAM,CAAC,GAAGhoC,KAAK;4BACzB;0BAAC,SAAA2H,GAAA;4BAAAwD,UAAA,CAAArK,CAAA,CAAA6G,GAAA;0BAAA;4BAAAwD,UAAA,CAAAhM,CAAA;0BAAA;wBACH;sBACF,CAAC,MAAM;wBAAA,IAAAmQ,UAAA,GAAAvF,mCAAA,CACW+kC,aAAa;0BAAAt/B,MAAA;wBAAA;0BAA7B,KAAAF,UAAA,CAAAnJ,CAAA,MAAAqJ,MAAA,GAAAF,UAAA,CAAA/O,CAAA,IAAA0J,IAAA,GAA+B;4BAAA,IAApBjF,EAAC,GAAAwK,MAAA,CAAAxP,KAAA;4BACVgU,QAAO,CAAChP,EAAC,CAAC,GAAGqpC,GAAG,CAAClO,iBAAiB,CAACn7B,EAAC,CAAC;0BACvC;wBAAC,SAAA2C,GAAA;0BAAA2H,UAAA,CAAAxO,CAAA,CAAA6G,GAAA;wBAAA;0BAAA2H,UAAA,CAAAnQ,CAAA;wBAAA;sBACH;oBACF,CAAC,CAAC,OAAOsM,EAAE,EAAE;sBACX;AACtB;oBADsB;kBAGJ;kBACA,IAAIiH,IAAI,GAAG,IAAI;kBACf,IAAIoF,IAAI,CAACi0B,cAAc,CAACnB,mBAAmB,EAAE;oBAC3C,IAAI;sBACFl4B,IAAI,GAAG27B,GAAG,CAACpO,YAAY;oBACzB,CAAC,CAAC,OAAOx0B,EAAE,EAAE;sBACX;oBAAA;kBAEJ;kBACA,IAAIsI,QAAQ,GAAG,IAAI;kBACnB,IAAIrB,IAAI,IAAIsB,QAAO,EAAE;oBACnBD,QAAQ,GAAG,CAAC,CAAC;oBACb,IAAIrB,IAAI,EAAE;sBACR,IACEoF,IAAI,CAACo3B,iBAAiB,CACpBb,GAAG,CAACI,aAAa,CAACI,qBACpB,CAAC,EACD;wBACA96B,QAAQ,CAACrB,IAAI,GAAGoF,IAAI,CAACq3B,SAAS,CAACz8B,IAAI,CAAC;sBACtC,CAAC,MAAM;wBACLqB,QAAQ,CAACrB,IAAI,GAAGA,IAAI;sBACtB;oBACF;oBACA,IAAIsB,QAAO,EAAE;sBACXD,QAAQ,CAACC,OAAO,GAAGA,QAAO;oBAC5B;kBACF;kBACA,IAAID,QAAQ,EAAE;oBACZs6B,GAAG,CAACI,aAAa,CAAC16B,QAAQ,GAAGA,QAAQ;kBACvC;kBACA,IAAI;oBACF,IAAI/N,IAAI,GAAGqoC,GAAG,CAAC9sB,MAAM;oBACrBvb,IAAI,GAAGA,IAAI,KAAK,IAAI,GAAG,GAAG,GAAGA,IAAI;oBACjCqoC,GAAG,CAACI,aAAa,CAACh7B,WAAW,GAAGzN,IAAI;oBACpC8R,IAAI,CAACs3B,sBAAsB,CACzBf,GAAG,CAACO,eAAe,EACnBj7B,WAAW,EACX3N,IACF,CAAC;oBACDqoC,GAAG,CAACO,eAAe,CAACnlC,KAAK,GACvBqO,IAAI,CAACqd,SAAS,CAAC3hB,eAAe,CAACxN,IAAI,CAAC;oBACtC8R,IAAI,CAACu3B,iBAAiB,CAAChB,GAAG,CAACI,aAAa,CAAC;kBAC3C,CAAC,CAAC,OAAOhjC,EAAE,EAAE;oBACX;kBAAA;gBAEJ;cACF;YACF;YAEA2iC,QAAQ,CAAC,QAAQ,EAAEC,GAAG,CAAC;YACvBD,QAAQ,CAAC,SAAS,EAAEC,GAAG,CAAC;YACxBD,QAAQ,CAAC,YAAY,EAAEC,GAAG,CAAC;YAE3B,IACE,oBAAoB,IAAIA,GAAG,IAC3B3rC,UAAY,CAAC2rC,GAAG,CAACvO,kBAAkB,CAAC,EACpC;cACAngC,eAAO,CAAC0uC,GAAG,EAAE,oBAAoB,EAAE,UAAUjG,IAAI,EAAE;gBACjD,OAAOtwB,IAAI,CAACisB,OAAO,CAACgB,IAAI,CACtBqD,IAAI,EACJ3kC,SAAS,EACTkrC,yBACF,CAAC;cACH,CAAC,CAAC;YACJ,CAAC,MAAM;cACLN,GAAG,CAACvO,kBAAkB,GAAG6O,yBAAyB;YACpD;YACA,IAAIN,GAAG,CAACI,aAAa,IAAI32B,IAAI,CAACw3B,eAAe,CAAC,CAAC,EAAE;cAC/CjB,GAAG,CAACI,aAAa,CAACjnC,KAAK,GAAG,IAAI3I,KAAK,CAAC,CAAC,CAAC2I,KAAK;YAC7C;YACA,OAAO4gC,IAAI,CAACxvB,KAAK,CAAC,IAAI,EAAE9K,SAAS,CAAC;UACpC,CAAC;QACH,CAAC,EACD,IAAI,CAACq6B,YAAY,EACjB,SACF,CAAC;MACH;MAEA,IAAI,OAAO,IAAI,IAAI,CAACyD,OAAO,EAAE;QAC3BjsC,eAAO,CACL,IAAI,CAACisC,OAAO,EACZ,OAAO,EACP,UAAUxD,IAAI,EAAE;UACd,OAAO,UAAUmH,GAAG,EAAEC,EAAE,EAAE;YACxB,IAAMpnC,IAAI,GAAAuJ,KAAA,CAAAnS,SAAA,CAAA0I,KAAA,CAAAnJ,IAAA,CAAO+O,SAAS,CAAC;YAC3B,IAAMjB,KAAK,GAAGzE,IAAI,CAAC,CAAC,CAAC;YACrB,IAAIwL,MAAM,GAAG,KAAK;YAClB,IAAIvR,GAAG;YACP,IAAMksC,WAAW,GAAGC,YAAY,CAAC3hC,KAAK,CAAC;YACvC,IAAInK,MAAQ,CAACmK,KAAK,EAAE,QAAQ,CAAC,IAAI0hC,WAAW,EAAE;cAC5ClsC,GAAG,GAAGksC,WAAW,GAAG1hC,KAAK,CAAC/N,QAAQ,CAAC,CAAC,GAAG+N,KAAK;YAC9C,CAAC,MAAM,IAAIA,KAAK,EAAE;cAChBxK,GAAG,GAAGwK,KAAK,CAACxK,GAAG;cACf,IAAIwK,KAAK,CAAC+G,MAAM,EAAE;gBAChBA,MAAM,GAAG/G,KAAK,CAAC+G,MAAM;cACvB;YACF;YACA,IAAIxL,IAAI,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,CAACwL,MAAM,EAAE;cAC7BA,MAAM,GAAGxL,IAAI,CAAC,CAAC,CAAC,CAACwL,MAAM;YACzB;YACA,IAAM9I,QAAQ,GAAG;cACf8I,MAAM,EAAEA,MAAM;cACdvR,GAAG,EAAEA,GAAG;cACRoR,WAAW,EAAE,IAAI;cACjBU,aAAa,EAAEzR,GAAK,CAAC,CAAC;cACtBiR,WAAW,EAAE;YACf,CAAC;YACD,IAAIvL,IAAI,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,CAAC4L,OAAO,EAAE;cAC9B;cACA;cACA,IAAMy7B,UAAU,GAAGz7B,eAAO,CAAC5L,IAAI,CAAC,CAAC,CAAC,CAAC4L,OAAO,CAAC;cAE3ClJ,QAAQ,CAAC4jC,oBAAoB,GAAGe,UAAU,CAACnkC,GAAG,CAAC,cAAc,CAAC;cAE9D,IAAIwM,IAAI,CAACi0B,cAAc,CAAClB,qBAAqB,EAAE;gBAC7C//B,QAAQ,CAACgJ,eAAe,GAAGgE,IAAI,CAAC43B,YAAY,CAC1CD,UAAU,EACV33B,IAAI,CAACi0B,cAAc,CAAClB,qBACtB,CAAC;cACH;YACF;YAEA,IAAI/yB,IAAI,CAACi0B,cAAc,CAACjB,kBAAkB,EAAE;cAC1C,IAAI1iC,IAAI,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,CAACsK,IAAI,EAAE;gBAC3B5H,QAAQ,CAACpC,OAAO,GAAGN,IAAI,CAAC,CAAC,CAAC,CAACsK,IAAI;cACjC,CAAC,MAAM,IACLtK,IAAI,CAAC,CAAC,CAAC,IACP,CAAC1F,MAAQ,CAAC0F,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAC5BA,IAAI,CAAC,CAAC,CAAC,CAACsK,IAAI,EACZ;gBACA5H,QAAQ,CAACpC,OAAO,GAAGN,IAAI,CAAC,CAAC,CAAC,CAACsK,IAAI;cACjC;YACF;YACA,IAAMi9B,cAAc,GAAG73B,IAAI,CAAC3E,cAAc,CACxCrI,QAAQ,EACR,OAAO,EACPrH,SACF,CAAC;YACD,IAAIqU,IAAI,CAACw3B,eAAe,CAAC,CAAC,EAAE;cAC1BxkC,QAAQ,CAACtD,KAAK,GAAG,IAAI3I,KAAK,CAAC,CAAC,CAAC2I,KAAK;YACpC;;YAEA;YACA;YACA,OAAO4gC,IAAI,CAACxvB,KAAK,CAAC,IAAI,EAAExQ,IAAI,CAAC,CAACnH,IAAI,CAAC,UAAU2G,IAAI,EAAE;cACjD,IAAM+L,WAAW,GAAGjR,GAAK,CAAC,CAAC;cAC3BoI,QAAQ,CAAC6I,WAAW,GAAGA,WAAW;cAClC7I,QAAQ,CAAC2I,WAAW,GAAG7L,IAAI,CAAC2Z,MAAM;cAClCzJ,IAAI,CAACs3B,sBAAsB,CACzBO,cAAc,EACdh8B,WAAW,EACX/L,IAAI,CAAC2Z,MACP,CAAC;cAEDzW,QAAQ,CAAC+jC,qBAAqB,GAAGjnC,IAAI,CAACoM,OAAO,CAAC1I,GAAG,CAAC,cAAc,CAAC;cACjE,IAAI0I,OAAO,GAAG,IAAI;cAClB,IAAI8D,IAAI,CAACi0B,cAAc,CAACpB,sBAAsB,EAAE;gBAC9C32B,OAAO,GAAG8D,IAAI,CAAC43B,YAAY,CACzB9nC,IAAI,CAACoM,OAAO,EACZ8D,IAAI,CAACi0B,cAAc,CAACpB,sBACtB,CAAC;cACH;cACA,IAAIj4B,IAAI,GAAG,IAAI;cACf,IAAIoF,IAAI,CAACi0B,cAAc,CAACnB,mBAAmB,EAAE;gBAC3C,IAAI,OAAOhjC,IAAI,CAACgzB,IAAI,KAAK,UAAU,EAAE;kBACnC;kBACA;kBACA;kBACAloB,IAAI,GAAG9K,IAAI,CAACG,KAAK,CAAC,CAAC,CAAC6yB,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC9B;cACF;cACA,IAAI5mB,OAAO,IAAItB,IAAI,EAAE;gBACnB5H,QAAQ,CAACiJ,QAAQ,GAAG,CAAC,CAAC;gBACtB,IAAIrB,IAAI,EAAE;kBACR;kBACA,IAAI,OAAOA,IAAI,CAACzR,IAAI,KAAK,UAAU,EAAE;oBACnCyR,IAAI,CAACzR,IAAI,CAAC,UAAU25B,IAAI,EAAE;sBACxB,IACEA,IAAI,IACJ9iB,IAAI,CAACo3B,iBAAiB,CAACpkC,QAAQ,CAAC+jC,qBAAqB,CAAC,EACtD;wBACA/jC,QAAQ,CAACiJ,QAAQ,CAACrB,IAAI,GAAGoF,IAAI,CAACq3B,SAAS,CAACvU,IAAI,CAAC;sBAC/C,CAAC,MAAM;wBACL9vB,QAAQ,CAACiJ,QAAQ,CAACrB,IAAI,GAAGkoB,IAAI;sBAC/B;oBACF,CAAC,CAAC;kBACJ,CAAC,MAAM;oBACL9vB,QAAQ,CAACiJ,QAAQ,CAACrB,IAAI,GAAGA,IAAI;kBAC/B;gBACF;gBACA,IAAIsB,OAAO,EAAE;kBACXlJ,QAAQ,CAACiJ,QAAQ,CAACC,OAAO,GAAGA,OAAO;gBACrC;cACF;cACA8D,IAAI,CAACu3B,iBAAiB,CAACvkC,QAAQ,CAAC;cAChC,OAAOlD,IAAI;YACb,CAAC,CAAC;UACJ,CAAC;QACH,CAAC,EACD,IAAI,CAACugC,YAAY,EACjB,SACF,CAAC;MACH;IACF;EAAC;IAAAhlC,GAAA;IAAAnD,KAAA,EAED,SAAAmT,cAAcA,CAACrI,QAAQ,EAAEsI,OAAO,EAAEb,WAAW,EAAE;MAC7C,IACEzH,QAAQ,CAACpC,OAAO,IAChB,IAAI,CAACwmC,iBAAiB,CAACpkC,QAAQ,CAAC4jC,oBAAoB,CAAC,EACrD;QACA5jC,QAAQ,CAACpC,OAAO,GAAG,IAAI,CAACymC,SAAS,CAACrkC,QAAQ,CAACpC,OAAO,CAAC;MACrD;MACA,OAAO,IAAI,CAACysB,SAAS,CAAChiB,cAAc,CAACrI,QAAQ,EAAEsI,OAAO,EAAEb,WAAW,CAAC;IACtE;EAAC;IAAApP,GAAA;IAAAnD,KAAA,EAED,SAAAkvC,iBAAiBA,CAACU,WAAW,EAAE;MAC7B,OAAOA,WAAW,IAChBltC,MAAQ,CAACktC,WAAW,EAAE,QAAQ,CAAC,IAC/BA,WAAW,CAAC3wC,WAAW,CAAC,CAAC,CAACgJ,QAAQ,CAAC,MAAM,CAAC,GACxC,IAAI,GACJ,KAAK;IACX;EAAC;IAAA9E,GAAA;IAAAnD,KAAA,EAED,SAAAovC,sBAAsBA,CAACrkC,KAAK,EAAE8kC,SAAS,EAAEh8B,UAAU,EAAE;MACnD,IAAI9I,KAAK,CAACkH,cAAc,EAAE;QACxBlH,KAAK,CAACkH,cAAc,CAAC,uBAAuB,CAAC,GAAG,CAC9C49B,SAAS,GAAG,GAAG,EACf/wC,QAAQ,CAAC,CAAC;QACZiM,KAAK,CAACkH,cAAc,CAAC4B,UAAU,GAAGA,UAAU;MAC9C;IACF;EAAC;IAAA1Q,GAAA;IAAAnD,KAAA,EAED,SAAAmvC,SAASA,CAAC1P,IAAI,EAAE;MACd,OAAO/5B,IAAI,CAACF,SAAS,CAAC8I,SAAK,CAAC5I,IAAI,CAACU,KAAK,CAACq5B,IAAI,CAAC,EAAE,IAAI,CAACp7B,OAAO,CAAC4I,WAAW,CAAC,CAAC;IAC1E;EAAC;IAAA9J,GAAA;IAAAnD,KAAA,EAED,SAAA0vC,YAAYA,CAACI,SAAS,EAAEhB,aAAa,EAAE;MACrC,IAAMiB,UAAU,GAAG,CAAC,CAAC;MACrB,IAAI;QACF,IAAIjB,aAAa,KAAK,IAAI,EAAE;UAC1B,IAAI,OAAOgB,SAAS,CAACvgC,OAAO,KAAK,UAAU,EAAE;YAC3C;YACA,IAAMw/B,UAAU,GAAGe,SAAS,CAACvgC,OAAO,CAAC,CAAC;YACtC,IAAIygC,aAAa,GAAGjB,UAAU,CAAC9d,IAAI,CAAC,CAAC;YACrC,OAAO,CAAC+e,aAAa,CAAC/lC,IAAI,EAAE;cAC1B8lC,UAAU,CAACC,aAAa,CAAChwC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAGgwC,aAAa,CAAChwC,KAAK,CAAC,CAAC,CAAC;cAC3DgwC,aAAa,GAAGjB,UAAU,CAAC9d,IAAI,CAAC,CAAC;YACnC;UACF;QACF,CAAC,MAAM;UAAA,IAAAphB,UAAA,GAAA9F,mCAAA,CACW+kC,aAAa;YAAAh/B,MAAA;UAAA;YAA7B,KAAAD,UAAA,CAAA1J,CAAA,MAAA2J,MAAA,GAAAD,UAAA,CAAAtP,CAAA,IAAA0J,IAAA,GAA+B;cAAA,IAApBjF,CAAC,GAAA8K,MAAA,CAAA9P,KAAA;cACV+vC,UAAU,CAAC/qC,CAAC,CAAC,GAAG8qC,SAAS,CAACxkC,GAAG,CAACtG,CAAC,CAAC;YAClC;UAAC,SAAA2C,GAAA;YAAAkI,UAAA,CAAA/O,CAAA,CAAA6G,GAAA;UAAA;YAAAkI,UAAA,CAAA1Q,CAAA;UAAA;QACH;MACF,CAAC,CAAC,OAAOsM,EAAE,EAAE;QACX;MAAA;MAEF,OAAOskC,UAAU;IACnB;EAAC;IAAA5sC,GAAA;IAAAnD,KAAA,EAED,SAAAsvC,eAAeA,CAAA,EAAG;MAChB,OACE,IAAI,CAACvD,cAAc,CAAChB,qBAAqB,IACzC,IAAI,CAACgB,cAAc,CAACf,qBAAqB,IACzC,IAAI,CAACe,cAAc,CAACd,mBAAmB;IAE3C;EAAC;IAAA9nC,GAAA;IAAAnD,KAAA,EAED,SAAAqvC,iBAAiBA,CAACvkC,QAAQ,EAAE;MAC1B,IAAMyW,MAAM,GAAGzW,QAAQ,CAAC2I,WAAW;MAEnC,IACG8N,MAAM,IAAI,GAAG,IAAI,IAAI,CAACwqB,cAAc,CAAChB,qBAAqB,IAC1DxpB,MAAM,IAAI,GAAG,IAAI,IAAI,CAACwqB,cAAc,CAACf,qBAAsB,IAC3DzpB,MAAM,KAAK,CAAC,IAAI,IAAI,CAACwqB,cAAc,CAACd,mBAAoB,EACzD;QACA,IAAM/oC,KAAK,GAAG,IAAIrD,KAAK,CAAC,kCAAkC,GAAG0iB,MAAM,CAAC;QACpErf,KAAK,CAACsF,KAAK,GAAGsD,QAAQ,CAACtD,KAAK;QAC5B,IAAI,CAACu8B,OAAO,CAAC7hC,KAAK,CAACA,KAAK,EAAE;UAAEwH,UAAU,EAAE;QAAE,CAAC,CAAC;MAC9C;IACF;EAAC;IAAAvG,GAAA;IAAAnD,KAAA,EAED,SAAA2tC,mBAAmBA,CAAA,EAAG;MACpB,IAAIv0B,CAAC;MACL,OAAO,IAAI,CAAC+uB,YAAY,CAAC,KAAK,CAAC,CAACpkC,MAAM,EAAE;QACtCqV,CAAC,GAAG,IAAI,CAAC+uB,YAAY,CAAC,KAAK,CAAC,CAAC/wB,KAAK,CAAC,CAAC;QACpC,IAAI,CAACw0B,OAAO,CAACxrB,OAAO,CAAChH,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;MACnC;IACF;EAAC;IAAAjW,GAAA;IAAAnD,KAAA,EAED,SAAA0tC,iBAAiBA,CAAA,EAAG;MAAA,IAAAuC,aAAA;MAClB,IAAI,GAAAA,aAAA,GAAC,IAAI,CAACrE,OAAO,cAAAqE,aAAA,gBAAAA,aAAA,GAAZA,aAAA,CAAc7vB,OAAO,cAAA6vB,aAAA,eAArBA,aAAA,CAAuB7iC,GAAG,GAAE;QAC/B;MACF;MAEA,IAAM0K,IAAI,GAAG,IAAI;MACjB,IAAMrW,CAAC,GAAG,IAAI,CAACmqC,OAAO,CAACxrB,OAAO;MAE9B,SAAS8vB,WAAWA,CAACt8B,MAAM,EAAE;QAC3B;QACA,YAAY;;QAAE;QAEd,IAAMw0B,IAAI,GAAG3mC,CAAC,CAACmS,MAAM,CAAC;QACtB,IAAMu8B,WAAW,GAAG1uC,CAAC;QACrB,IAAMgI,KAAK,GAAGmK,MAAM,KAAK,MAAM,GAAG,SAAS,GAAGA,MAAM;QACpDnS,CAAC,CAACmS,MAAM,CAAC,GAAG,YAAY;UACtB,IAAMxL,IAAI,GAAGuJ,KAAK,CAACnS,SAAS,CAAC0I,KAAK,CAACnJ,IAAI,CAAC+O,SAAS,CAAC;UAClD,IAAMxH,OAAO,GAAG5D,kBAAoB,CAAC0F,IAAI,CAAC;UAC1C0P,IAAI,CAACqd,SAAS,CAACniB,UAAU,CAAC1M,OAAO,EAAEmD,KAAK,EAAE,IAAI,EAAE/G,GAAK,CAAC,CAAC,CAAC;UACxD,IAAI0lC,IAAI,EAAE;YACR7oC,QAAQ,CAACC,SAAS,CAACoZ,KAAK,CAAC7Z,IAAI,CAACqpC,IAAI,EAAE+H,WAAW,EAAE/nC,IAAI,CAAC;UACxD;QACF,CAAC;QACD0P,IAAI,CAACqwB,YAAY,CAAC,KAAK,CAAC,CAACzjC,IAAI,CAAC,CAACkP,MAAM,EAAEw0B,IAAI,CAAC,CAAC;MAC/C;MACA,IAAMgI,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;MACzD,IAAI;QACF,SAAAC,GAAA,MAAAC,QAAA,GAAgBF,OAAO,EAAAC,GAAA,GAAAC,QAAA,CAAAvsC,MAAA,EAAAssC,GAAA,IAAE;UAApB,IAAM1sC,CAAC,GAAA2sC,QAAA,CAAAD,GAAA;UACVH,WAAW,CAACvsC,CAAC,CAAC;QAChB;MACF,CAAC,CAAC,OAAO7C,CAAC,EAAE;QACV,IAAI,CAAC+H,UAAU,CAAC6kC,iBAAiB,GAAG;UAAExrC,KAAK,EAAEpB,CAAC,CAACwF;QAAQ,CAAC;MAC1D;IACF;EAAC;IAAAnD,GAAA;IAAAnD,KAAA,EAED,SAAA6tC,eAAeA,CAAA,EAAG;MAChB,IAAI,CAAC/B,eAAe,CAAC,KAAK,CAAC;IAC7B;EAAC;IAAA3oC,GAAA;IAAAnD,KAAA,EAED,SAAA4tC,aAAaA,CAAA,EAAG;MAAA,IAAA3zB,KAAA;MACd,IAAI,CAACs2B,WAAW,CACd,KAAK,EACL,IAAI,CAAC3E,OAAO,EACZ,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,EACpC,UAAC9qC,CAAC;QAAA,OAAKmZ,KAAI,CAACu2B,WAAW,CAAC,OAAO,EAAE1vC,CAAC,CAAC;MAAA,CACrC,CAAC;MACD,IAAI,CAACyvC,WAAW,CACd,KAAK,EACL,IAAI,CAAC3E,OAAO,EACZ,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,EAC1D,UAAC9qC,CAAC;QAAA,OAAKmZ,KAAI,CAACu2B,WAAW,CAAC,UAAU,EAAE1vC,CAAC,CAAC;MAAA,CACxC,CAAC;MACD,IAAI,CAACyvC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC3E,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAC9qC,CAAC;QAAA,OACzDmZ,KAAI,CAACu2B,WAAW,CAAC,OAAO,EAAE1vC,CAAC,CAAC;MAAA,CAC9B,CAAC;MACD,IAAI,CAACyvC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC3E,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,UAAC9qC,CAAC;QAAA,OAC7DmZ,KAAI,CAACu2B,WAAW,CAAC,MAAM,EAAE1vC,CAAC,CAAC;MAAA,CAC7B,CAAC;MACD,IAAI,CAACyvC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC3E,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,UAAC9qC,CAAC;QAAA,OAC3DmZ,KAAI,CAACu2B,WAAW,CAAC,OAAO,EAAE1vC,CAAC,CAAC;MAAA,CAC9B,CAAC;MACD,IAAI,CAACyvC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC3E,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,UAAC9qC,CAAC;QAAA,OAClDmZ,KAAI,CAACu2B,WAAW,CAAC,QAAQ,EAAE1vC,CAAC,CAAC;MAAA,CAC/B,CAAC;MACD,IAAI,CAACyvC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC1E,SAAS,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAC/qC,CAAC;QAAA,OAC9DmZ,KAAI,CAACu2B,WAAW,CAAC,eAAe,EAAE1vC,CAAC,CAAC;MAAA,CACtC,CAAC;IACH;EAAC;IAAAqC,GAAA;IAAAnD,KAAA,EAED,SAAAwwC,WAAWA,CAAC7xC,IAAI,EAAE86B,GAAG,EAAE;MACrB,IAAI;QACF,OAAO;UACLgX,KAAK,EAAE,IAAI,CAACC,WAAW;UACvBC,QAAQ,EAAE,IAAI,CAACC,UAAU;UACzBC,KAAK,EAAE,IAAI,CAACC,WAAW;UACvBC,IAAI,EAAE,IAAI,CAACC,UAAU;UACrBnkC,KAAK,EAAE,IAAI,CAACokC,WAAW;UACvBC,MAAM,EAAE,IAAI,CAACC,YAAY;UACzBC,aAAa,EAAE,IAAI,CAACC;QACtB,CAAC,CAAC1yC,IAAI,CAAC,CAACI,IAAI,CAAC,IAAI,EAAE06B,GAAG,CAAC;MACzB,CAAC,CAAC,OAAO8G,GAAG,EAAE;QACZ74B,UAAM,CAAC0F,GAAG,IAAAV,MAAA,CAAI/N,IAAI,qBAAkB86B,GAAG,EAAE8G,GAAG,EAAEA,GAAG,CAAC/4B,KAAK,CAAC;MAC1D;IACF;EAAC;IAAArE,GAAA;IAAAnD,KAAA,EAED,SAAAqxC,mBAAmBA,CAACC,IAAI,EAAE;MACxB,IAAI,CAACvN,OAAO,CAACI,aAAa,CAAC;QACzBvjC,IAAI,EAAE,YAAY;QAClBiE,IAAI,EAAE,IAAItC,GAAG,CAAC,IAAI,CAAC4pC,SAAS,CAAChlC,IAAI,CAAC,CAAC2e;MACrC,CAAC,CAAC;IACJ;EAAC;IAAA3iB,GAAA;IAAAnD,KAAA,EAED,SAAA0wC,WAAWA,CAACjX,GAAG,EAAE;MAAA,IAAA8X,WAAA;MACf,IAAM9I,OAAO,IAAA8I,WAAA,GAAG9X,GAAG,CAACtkB,MAAM,cAAAo8B,WAAA,uBAAVA,WAAA,CAAY9I,OAAO,CAACxpC,WAAW,CAAC,CAAC;MACjD,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAACgJ,QAAQ,CAACwgC,OAAO,CAAC,EAAE;MAEvD,IAAI,CAACtT,SAAS,CAACrgB,YAAY,CAAC;QAC1BlU,IAAI,EAAE64B,GAAG,CAAC74B,IAAI;QACd8T,WAAW,EAAE,CAAC+kB,GAAG,CAAC+X,SAAS;QAC3Bn9B,OAAO,EAAEm2B,aAAqB,CAAC/Q,GAAG,CAACtkB,MAAM,CAAC;QAC1C/L,SAAS,EAAE1G,GAAK,CAAC;MACnB,CAAC,CAAC;IACJ;EAAC;IAAAS,GAAA;IAAAnD,KAAA,EAED,SAAA8wC,WAAWA,CAACrX,GAAG,EAAE;MAAA,IAAAgY,YAAA;MACf,IAAM7wC,IAAI,GAAG64B,GAAG,CAAC74B,IAAI;MACrB,IAAMyT,OAAO,GAAG,CAAAo9B,YAAA,GAAAhY,GAAG,CAACtkB,MAAM,cAAAs8B,YAAA,eAAVA,YAAA,CAAYtwC,MAAM,GAC9B,QAAQ,GACRqpC,aAAqB,CAAC/Q,GAAG,CAACtkB,MAAM,CAAC;MAErC,IAAI,CAACggB,SAAS,CAACzf,YAAY,CAAC;QAC1B9U,IAAI,EAAEA,IAAI;QACV8T,WAAW,EAAE,CAAC+kB,GAAG,CAAC+X,SAAS;QAC3Bn9B,OAAO,EAAPA,OAAO;QACPjL,SAAS,EAAE1G,GAAK,CAAC;MACnB,CAAC,CAAC;IACJ;EAAC;IAAAS,GAAA;IAAAnD,KAAA,EAED,SAAAgxC,UAAUA,CAACM,IAAI,EAAE;MACf;MACA;MACA;MACA;MACA;IAAA;EACD;IAAAnuC,GAAA;IAAAnD,KAAA,EAED,SAAAmxC,YAAYA,CAAC1X,GAAG,EAAE;MAChB,IAAMlkB,aAAa,GAAGpU,MAAM,CAAC87B,MAAM,CAAC3nB,KAAK,GAAGnU,MAAM,CAACuwC,UAAU;MAE7D,IAAI,CAACvc,SAAS,CAACtf,aAAa,CAAC;QAC3BjV,IAAI,EAAE64B,GAAG,CAAC74B,IAAI;QACd8T,WAAW,EAAE,CAAC+kB,GAAG,CAAC+X,SAAS;QAC3Bl8B,KAAK,EAAEnU,MAAM,CAACuwC,UAAU;QACxBr8B,MAAM,EAAElU,MAAM,CAACwwC,WAAW;QAC1Bp8B,aAAa,EAAEA,aAAa;QAC5BnM,SAAS,EAAE1G,GAAK,CAAC;MACnB,CAAC,CAAC;IACJ;EAAC;IAAAS,GAAA;IAAAnD,KAAA,EAED,SAAA4wC,UAAUA,CAACnX,GAAG,EAAE;MACd,IAAM74B,IAAI,GAAG64B,GAAG,CAAC74B,IAAI;MACrB,IAAIyV,KAAK,EAAEC,UAAU,EAAEH,UAAU,EAAEC,aAAa;MAEhD,IAAIxV,IAAI,KAAK,MAAM,EAAE;QACnByV,KAAK,GAAG,EAAE;QACVC,UAAU,GAAG,EAAE;QACf,IAAMs7B,IAAI,MAAAllC,MAAA,CAAAqN,2BAAA,CAAO0f,GAAG,CAACoY,YAAY,CAACC,KAAK,GAAA/3B,2BAAA,CAAK0f,GAAG,CAACoY,YAAY,CAAChK,KAAK,EAAC;QAAC,IAAA53B,UAAA,GAAAlG,mCAAA,CACpD6nC,IAAI;UAAA1hC,MAAA;QAAA;UAApB,KAAAD,UAAA,CAAA9J,CAAA,MAAA+J,MAAA,GAAAD,UAAA,CAAA1P,CAAA,IAAA0J,IAAA,GAAsB;YAAA,IAAXvG,CAAC,GAAAwM,MAAA,CAAAlQ,KAAA;YACV,IAAI0D,CAAC,CAACmY,IAAI,IAAInY,CAAC,CAAC9C,IAAI,EAAE;cACpByV,KAAK,CAAC3R,IAAI,CAAChB,CAAC,CAACmY,IAAI,CAAC;cAClBvF,UAAU,CAAC5R,IAAI,CAAChB,CAAC,CAAC9C,IAAI,CAAC;YACzB;UACF;QAAC,SAAA+G,GAAA;UAAAsI,UAAA,CAAAnP,CAAA,CAAA6G,GAAA;QAAA;UAAAsI,UAAA,CAAA9Q,CAAA;QAAA;MACH;MACA,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC8I,QAAQ,CAACrH,IAAI,CAAC,EAAE;QAAA,IAAAmxC,iBAAA,EAAAC,kBAAA;QACxC77B,UAAU,IAAA47B,iBAAA,GAAGtY,GAAG,CAACoY,YAAY,cAAAE,iBAAA,uBAAhBA,iBAAA,CAAkB57B,UAAU;QACzCC,aAAa,IAAA47B,kBAAA,GAAGvY,GAAG,CAACoY,YAAY,cAAAG,kBAAA,uBAAhBA,kBAAA,CAAkB57B,aAAa;MACjD;MAEA,IAAI,CAAC+e,SAAS,CAACnf,eAAe,CAAC;QAC7BpV,IAAI,EAAJA,IAAI;QACJ8T,WAAW,EAAE,CAAC+kB,GAAG,CAAC+X,SAAS;QAC3Bn9B,OAAO,EAAEm2B,aAAqB,CAAC/Q,GAAG,CAACtkB,MAAM,CAAC;QAC1CgB,UAAU,EAAEA,UAAU;QACtBC,aAAa,EAAEA,aAAa;QAC5BC,KAAK,EAAE3Q,IAAI,CAACF,SAAS,CAAC6Q,KAAK,CAAC;QAC5BC,UAAU,EAAE5Q,IAAI,CAACF,SAAS,CAAC8Q,UAAU,CAAC;QACtClN,SAAS,EAAE1G,GAAK,CAAC;MACnB,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;EAHE;IAAAS,GAAA;IAAAnD,KAAA,EAIA,SAAAiyC,eAAeA,CAACjyC,KAAK,EAAEqU,OAAO,EAAEo0B,OAAO,EAAEyJ,SAAS,EAAE;MAClD,IAAMC,IAAI,GAAG,QAAQ;MAErB,IAAID,SAAS,KAAK,UAAU,EAAE;QAC5B,OAAOC,IAAI;MACb;MAEA,IAAI,IAAI,CAACpF,oBAAoB,EAAE;QAC7B,OAAOoF,IAAI;MACb,CAAC,MAAM;QACL,IAAMxtB,WAAW,GAAG6lB,eAAuB,CAACn2B,OAAO,CAAC;QACpD,IAAI,IAAI,CAAC24B,iBAAiB,EAAE;UAC1B,IAAI,IAAI,CAACA,iBAAiB,CAACroB,WAAW,CAAC,EAAE;YACvC,OAAOwtB,IAAI;UACb;QACF,CAAC,MAAM,IAAI,IAAI,CAAC1G,oBAAoB,CAAC9mB,WAAW,CAAC,EAAE;UACjD,OAAOwtB,IAAI;QACb;MACF;;MAEA;MACA,IACE3H,iBAAyB,CAACn2B,OAAO,EAAE,IAAI,CAAC64B,YAAY,EAAE,IAAI,CAACC,cAAc,CAAC,EAC1E;QACA,OAAOgF,IAAI;MACb;;MAEA;MACA;MACA;MACA,IACE,IAAI,CAACzX,gBAAgB,CAAC+N,OAAO,CAACxpC,WAAW,CAAC,CAAC,CAAC,IAC5C,IAAI,CAACy7B,gBAAgB,CAACwX,SAAS,CAAC,EAChC;QACA,IAAI,IAAI,CAACjF,WAAW,EAAE;UACpB,OAAO,IAAI,CAACA,WAAW,CAACjtC,KAAK,EAAEqU,OAAO,CAAC;QACzC,CAAC,MAAM;UACL,OAAO89B,IAAI;QACb;MACF;MAEA,OAAOnyC,KAAK;IACd;;IAEA;AACF;AACA;AACA;EAHE;IAAAmD,GAAA;IAAAnD,KAAA,EAIA,SAAAixC,WAAWA,CAACxX,GAAG,EAAE;MAAA,IAAA2Y,YAAA,EAAAC,YAAA,EAAAC,YAAA,EAAAC,YAAA;MACf,IAAM3xC,IAAI,GAAG64B,GAAG,CAAC74B,IAAI;MACrB,IAAM6nC,OAAO,IAAA2J,YAAA,GAAG3Y,GAAG,CAACtkB,MAAM,cAAAi9B,YAAA,uBAAVA,YAAA,CAAY3J,OAAO,CAACxpC,WAAW,CAAC,CAAC;MACjD,IAAIe,KAAK,IAAAqyC,YAAA,GAAG5Y,GAAG,CAACtkB,MAAM,cAAAk9B,YAAA,uBAAVA,YAAA,CAAYryC,KAAK;MAC7B,IAAIkyC,SAAS,GAAG,EAAAI,YAAA,GAAA7Y,GAAG,CAACtkB,MAAM,cAAAm9B,YAAA,gBAAAA,YAAA,GAAVA,YAAA,CAAYpnC,UAAU,cAAAonC,YAAA,gBAAAA,YAAA,GAAtBA,YAAA,CAAwB1xC,IAAI,cAAA0xC,YAAA,uBAA5BA,YAAA,CAA8BtyC,KAAK,OAAAuyC,YAAA,GAAI9Y,GAAG,CAACtkB,MAAM,cAAAo9B,YAAA,uBAAVA,YAAA,CAAY3xC,IAAI;MAEvE,IAAIZ,KAAK,KAAKyD,SAAS,EAAE;QACvBzD,KAAK,GAAG,IAAI,CAACiyC,eAAe,CAACjyC,KAAK,EAAEy5B,GAAG,CAACtkB,MAAM,EAAEszB,OAAO,EAAEyJ,SAAS,CAAC;MACrE;MAEA,QAAQtxC,IAAI;QACV,KAAK,OAAO;UACV,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAACqH,QAAQ,CAACiqC,SAAS,CAAC,EAAE;UAC/C,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAACjqC,QAAQ,CAACwgC,OAAO,CAAC,EAAE;YAC5CyJ,SAAS,GAAGzJ,OAAO;UACrB;UACA;QAEF,KAAK,QAAQ;UACX,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAACxgC,QAAQ,CAACiqC,SAAS,CAAC,EAAE;UAChD,IAAIA,SAAS,KAAK,UAAU,EAAE;YAAA,IAAAM,YAAA;YAC5BxyC,KAAK,IAAAwyC,YAAA,GAAG/Y,GAAG,CAACtkB,MAAM,cAAAq9B,YAAA,uBAAVA,YAAA,CAAYl+B,OAAO;UAC7B;UACA;MACJ;MAEA,IAAI,CAAC6gB,SAAS,CAAC5gB,YAAY,CAAC;QAC1B3T,IAAI,EAAEsxC,SAAS;QACfx9B,WAAW,EAAE,CAAC+kB,GAAG,CAAC+X,SAAS;QAC3Bn9B,OAAO,EAAEm2B,aAAqB,CAAC/Q,GAAG,CAACtkB,MAAM,CAAC;QAC1CnV,KAAK,EAALA,KAAK;QACLoJ,SAAS,EAAE1G,GAAK,CAAC;MACnB,CAAC,CAAC;IACJ;EAAC;IAAAS,GAAA;IAAAnD,KAAA,EAED,SAAA+tC,sBAAsBA,CAAA,EAAG;MACvB,IAAMvK,MAAM,GAAG,IAAI,CAACoI,OAAO,CAACpI,MAAM;MAClC,IAAMiP,iBAAiB,GAAGjP,MAAM,IAAIA,MAAM,CAACkP,GAAG,IAAIlP,MAAM,CAACkP,GAAG,CAACjP,OAAO;MACpE;MACA,IAAMkP,YAAY,GAChB,CAACF,iBAAiB,IAClB,IAAI,CAAC7G,OAAO,CAACgH,OAAO,IACpB,IAAI,CAAChH,OAAO,CAACgH,OAAO,CAACC,SAAS;MAChC,IAAI,CAACF,YAAY,EAAE;QACjB;MACF;MACApH,OAAO,CAAC,IAAI,CAACpD,YAAY,EAAE,YAAY,CAAC;IAC1C;EAAC;IAAAhlC,GAAA;IAAAnD,KAAA,EAED,SAAA8tC,oBAAoBA,CAAA,EAAG;MACrB,IAAMtK,MAAM,GAAG,IAAI,CAACoI,OAAO,CAACpI,MAAM;MAClC,IAAMiP,iBAAiB,GAAGjP,MAAM,IAAIA,MAAM,CAACkP,GAAG,IAAIlP,MAAM,CAACkP,GAAG,CAACjP,OAAO;MACpE;MACA,IAAMkP,YAAY,GAChB,CAACF,iBAAiB,IAClB,IAAI,CAAC7G,OAAO,CAACgH,OAAO,IACpB,IAAI,CAAChH,OAAO,CAACgH,OAAO,CAACC,SAAS;MAChC,IAAI,CAACF,YAAY,EAAE;QACjB;MACF;MACA,IAAM76B,IAAI,GAAG,IAAI;MACjBnY,eAAO,CACL,IAAI,CAACisC,OAAO,EACZ,YAAY,EACZ,UAAUxD,IAAI,EAAE;QACd,OAAO,YAAY;UACjB,IAAMx7B,OAAO,GAAGkL,IAAI,CAACq0B,SAAS,CAAChlC,IAAI;UACnC2Q,IAAI,CAACg7B,eAAe,CAACh7B,IAAI,CAACs0B,SAAS,EAAEx/B,OAAO,CAAC;UAC7C,IAAIw7B,IAAI,EAAE;YACRA,IAAI,CAACxvB,KAAK,CAAC,IAAI,EAAE9K,SAAS,CAAC;UAC7B;QACF,CAAC;MACH,CAAC,EACD,IAAI,CAACq6B,YAAY,EACjB,YACF,CAAC;MAEDxoC,eAAO,CACL,IAAI,CAACisC,OAAO,CAACgH,OAAO,EACpB,WAAW,EACX,UAAUxK,IAAI,EAAE;QACd,OAAO,YAAY;UACjB,IAAM/lC,GAAG,GAAGyL,SAAS,CAAC/J,MAAM,GAAG,CAAC,GAAG+J,SAAS,CAAC,CAAC,CAAC,GAAGrK,SAAS;UAC3D,IAAIpB,GAAG,EAAE;YACPyV,IAAI,CAACg7B,eAAe,CAACh7B,IAAI,CAACs0B,SAAS,EAAE/rC,MAAM,CAACgC,GAAG,CAAC,CAAC;UACnD;UACA,OAAO+lC,IAAI,CAACxvB,KAAK,CAAC,IAAI,EAAE9K,SAAS,CAAC;QACpC,CAAC;MACH,CAAC,EACD,IAAI,CAACq6B,YAAY,EACjB,YACF,CAAC;IACH;EAAC;IAAAhlC,GAAA;IAAAnD,KAAA,EAED,SAAA8yC,eAAeA,CAACt8B,IAAI,EAAEC,EAAE,EAAE;MACxB,IAAMs8B,UAAU,GAAGtI,SAAe,CAAC,IAAI,CAAC0B,SAAS,CAAChlC,IAAI,CAAC;MACvD,IAAM6rC,QAAQ,GAAGvI,SAAe,CAACh0B,EAAE,CAAC;MACpC,IAAMw8B,UAAU,GAAGxI,SAAe,CAACj0B,IAAI,CAAC;MACxC,IAAI,CAAC41B,SAAS,GAAG31B,EAAE;MACnB,IACEs8B,UAAU,CAAC3tC,QAAQ,KAAK4tC,QAAQ,CAAC5tC,QAAQ,IACzC2tC,UAAU,CAAC3sB,IAAI,KAAK4sB,QAAQ,CAAC5sB,IAAI,EACjC;QACA3P,EAAE,GAAGu8B,QAAQ,CAACnuC,IAAI,IAAImuC,QAAQ,CAAC/Q,IAAI,IAAI,EAAE,CAAC;MAC5C;MACA,IACE8Q,UAAU,CAAC3tC,QAAQ,KAAK6tC,UAAU,CAAC7tC,QAAQ,IAC3C2tC,UAAU,CAAC3sB,IAAI,KAAK6sB,UAAU,CAAC7sB,IAAI,EACnC;QACA5P,IAAI,GAAGy8B,UAAU,CAACpuC,IAAI,IAAIouC,UAAU,CAAChR,IAAI,IAAI,EAAE,CAAC;MAClD;MACA,IAAI,CAAC9M,SAAS,CAAC5e,iBAAiB,CAACC,IAAI,EAAEC,EAAE,EAAE,IAAI,EAAE/T,GAAK,CAAC,CAAC,CAAC;MACzD,IAAI,CAACqhC,OAAO,CAACI,aAAa,CAAC;QACzBvjC,IAAI,EAAE,YAAY;QAClBiE,IAAI,EAAE4R;MACR,CAAC,CAAC;IACJ;EAAC;IAAAtT,GAAA;IAAAnD,KAAA,EAMD,SAAAguC,sBAAsBA,CAAA,EAAG;MACvB,IAAMl2B,IAAI,GAAG,IAAI;MACjB,IAAI,CAACy4B,WAAW,CACd,cAAc,EACd,IAAI,CAAC3E,OAAO,EACZ,CAAC,QAAQ,EAAE,SAAS,CAAC,EACrB,UAACnS,GAAG;QAAA,OAAK3hB,IAAI,CAACo7B,kBAAkB,CAACzZ,GAAG,CAAC;MAAA,CACvC,CAAC;IACH;EAAC;IAAAt2B,GAAA;IAAAnD,KAAA,EAED,SAAAkzC,kBAAkBA,CAACzZ,GAAG,EAAE;MACtB,IAAM74B,IAAI,GAAG64B,GAAG,CAAC74B,IAAI;MAErB,IAAI,CAACu0B,SAAS,CAACpe,yBAAyB,CAAC;QACvCnW,IAAI,EAAJA,IAAI;QACJ8T,WAAW,EAAE,CAAC+kB,GAAG,CAAC+X,SAAS;QAC3BpoC,SAAS,EAAE1G,GAAK,CAAC;MACnB,CAAC,CAAC;IACJ;EAAC;IAAAS,GAAA;IAAAnD,KAAA,EAED,SAAAmzC,cAAcA,CAACC,QAAQ,EAAE;MACvB,IAAI9sC,OAAO,GACT,6BAA6B,GAC7B,cAAc,GACd8sC,QAAQ,CAACC,UAAU,GACnB,IAAI,GACJ,qBAAqB,GACrBD,QAAQ,CAACE,iBAAiB,GAC1B,IAAI,GACJ,sBAAsB,GACtBF,QAAQ,CAACG,kBAAkB,GAC3B,IAAI;MAEN,IAAIH,QAAQ,CAACI,UAAU,EAAE;QACvBltC,OAAO,IACL,YAAY,GACZ8sC,QAAQ,CAACI,UAAU,GACnB,IAAI,GACJ,QAAQ,GACRJ,QAAQ,CAACjmB,UAAU,GACnB,IAAI,GACJ,OAAO,GACPimB,QAAQ,CAAChmB,YAAY,GACrB,IAAI;MACR;MAEA9mB,OAAO,IAAI,kBAAkB,GAAG8sC,QAAQ,CAACK,cAAc;MAEvD,IAAI,CAACte,SAAS,CAACniB,UAAU,CAAC1M,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE5D,GAAK,CAAC,CAAC,CAAC;MAC1D,IAAI,CAACgxC,cAAc,CAACptC,OAAO,CAAC;IAC9B;EAAC;IAAAnD,GAAA;IAAAnD,KAAA,EAED,SAAA0zC,cAAcA,CAACptC,OAAO,EAAE;MACtB,IAAI,IAAI,CAACylC,cAAc,CAACT,4BAA4B,EAAE;QACpD,IAAI,CAACvH,OAAO,CAAC7hC,KAAK,CAACoE,OAAO,CAAC;MAC7B;IACF;EAAC;IAAAnD,GAAA;IAAAnD,KAAA,EAED,SAAAmuC,iCAAiCA,CAAA,EAAG;MAClC,IAAI,CAACrC,eAAe,CAAC,uBAAuB,CAAC;IAC/C;EAAC;IAAA3oC,GAAA;IAAAnD,KAAA,EAED,SAAAkuC,+BAA+BA,CAAA,EAAG;MAChC,IAAI,EAAE,kBAAkB,IAAI,IAAI,CAACrC,SAAS,CAAC,EAAE;QAC3C;MACF;MAEA,IAAM8H,UAAU,GAAG,IAAI,CAACR,cAAc,CAACzyB,IAAI,CAAC,IAAI,CAAC;MACjD,IAAI,CAAC6vB,WAAW,CACd,uBAAuB,EACvB,IAAI,CAAC1E,SAAS,EACd,CAAC,yBAAyB,CAAC,EAC3B8H,UACF,CAAC;IACH;EAAC;IAAAxwC,GAAA;IAAAnD,KAAA,EAED,SAAAuwC,WAAWA,CAACqD,OAAO,EAAE1zC,GAAG,EAAE2zC,KAAK,EAAErb,OAAO,EAAE;MAAA,IAAArd,MAAA;MACxC,IAAIjb,GAAG,CAAC45B,gBAAgB,EAAE;QAAA,IAAAga,UAAA,GAAA/pC,mCAAA,CACR8pC,KAAK;UAAAE,MAAA;QAAA;UAAA,IAAAC,KAAA,YAAAA,MAAA,EAAE;YAAA,IAAZv1C,CAAC,GAAAs1C,MAAA,CAAA/zC,KAAA;YACV,IAAMqE,OAAO,GAAG;cAAEiO,OAAO,EAAE,IAAI;cAAE2hC,OAAO,EAAE;YAAK,CAAC;YAChD/zC,GAAG,CAAC45B,gBAAgB,CAACr7B,CAAC,EAAE+5B,OAAO,EAAEn0B,OAAO,EAAE,IAAI,CAAC;YAC/C8W,MAAI,CAAC8wB,aAAa,CAAC2H,OAAO,CAAC,CAAClvC,IAAI,CAAC,YAAY;cAC3CxE,GAAG,CAACq5B,mBAAmB,CAAC96B,CAAC,EAAE+5B,OAAO,EAAEn0B,OAAO,CAAC;YAC9C,CAAC,CAAC;UACJ,CAAC;UAND,KAAAyvC,UAAA,CAAA3tC,CAAA,MAAA4tC,MAAA,GAAAD,UAAA,CAAAvzC,CAAA,IAAA0J,IAAA;YAAA+pC,KAAA;UAAA;QAMC,SAAArsC,GAAA;UAAAmsC,UAAA,CAAAhzC,CAAA,CAAA6G,GAAA;QAAA;UAAAmsC,UAAA,CAAA30C,CAAA;QAAA;MACH;IACF;EAAC;IAAAgE,GAAA;IAAAnD,KAAA,EAED,SAAA8rC,eAAeA,CAAC8H,OAAO,EAAE;MACvB,IAAIlyC,CAAC;MACL,OAAO,IAAI,CAACuqC,aAAa,CAAC2H,OAAO,CAAC,CAAC7vC,MAAM,EAAE;QACzCrC,CAAC,GAAG,IAAI,CAACuqC,aAAa,CAAC2H,OAAO,CAAC,CAACx8B,KAAK,CAAC,CAAC;QACvC1V,CAAC,CAAC,CAAC;MACL;IACF;EAAC;AAAA;AAGH,SAAS8sC,YAAYA,CAAC3hC,KAAK,EAAE;EAC3B,OAAO,OAAOtK,GAAG,KAAK,WAAW,IAAIsK,KAAK,YAAYtK,GAAG;AAC3D;AAEA,sDAAeugC,YAAY,E;;ACjjCY;AAEvC,SAASE,WAAWA,CAAC7hC,MAAM,EAAEq3B,OAAO,EAAEC,IAAI,EAAE;EAC1C,IAAI,CAACt3B,MAAM,EAAE;IACX;EACF;EACA;EACA,IAAIuhC,OAAO,GACT,2YAA2Y,CAACl3B,KAAK,CAC/Y,GACF,CAAC;EACH,IAAI7K,CAAC,EAAE80B,MAAM;EACb,KAAK90B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+hC,OAAO,CAAC3+B,MAAM,EAAE,EAAEpD,CAAC,EAAE;IACnC80B,MAAM,GAAGiN,OAAO,CAAC/hC,CAAC,CAAC;IAEnB,IAAIQ,MAAM,CAACs0B,MAAM,CAAC,IAAIt0B,MAAM,CAACs0B,MAAM,CAAC,CAACj2B,SAAS,EAAE;MAC9C00C,wBAAwB,CAAC1b,OAAO,EAAEr3B,MAAM,CAACs0B,MAAM,CAAC,CAACj2B,SAAS,EAAEi5B,IAAI,CAAC;IACnE;EACF;AACF;AAEA,SAASyb,wBAAwBA,CAAC1b,OAAO,EAAEh5B,SAAS,EAAEi5B,IAAI,EAAE;EAC1D,IAAIx4B,MAAM,CAACT,SAAS,EAAE,kBAAkB,CAAC,EAAE;IACzC,IAAI20C,mBAAmB,GAAG30C,SAAS,CAACs6B,gBAAgB;IACpD,OACEqa,mBAAmB,CAACC,cAAc,IAClCD,mBAAmB,CAAC7a,aAAa,EACjC;MACA6a,mBAAmB,GAAGA,mBAAmB,CAACC,cAAc;IAC1D;IACA,IAAIC,KAAK,GAAG,SAARA,KAAKA,CAAatpC,KAAK,EAAEtC,QAAQ,EAAE6rC,MAAM,EAAE;MAC7CH,mBAAmB,CAACp1C,IAAI,CAAC,IAAI,EAAEgM,KAAK,EAAEytB,OAAO,CAACuM,IAAI,CAACt8B,QAAQ,CAAC,EAAE6rC,MAAM,CAAC;IACvE,CAAC;IACDD,KAAK,CAACD,cAAc,GAAGD,mBAAmB;IAC1CE,KAAK,CAAC/a,aAAa,GAAGb,IAAI;IAC1Bj5B,SAAS,CAACs6B,gBAAgB,GAAGua,KAAK;IAElC,IAAIE,sBAAsB,GAAG/0C,SAAS,CAAC+5B,mBAAmB;IAC1D,OACEgb,sBAAsB,CAACC,iBAAiB,IACxCD,sBAAsB,CAACjb,aAAa,EACpC;MACAib,sBAAsB,GAAGA,sBAAsB,CAACC,iBAAiB;IACnE;IACA,IAAIC,QAAQ,GAAG,SAAXA,QAAQA,CAAa1pC,KAAK,EAAEtC,QAAQ,EAAE6rC,MAAM,EAAE;MAChDC,sBAAsB,CAACx1C,IAAI,CACzB,IAAI,EACJgM,KAAK,EACJtC,QAAQ,IAAIA,QAAQ,CAAC08B,gBAAgB,IAAK18B,QAAQ,EACnD6rC,MACF,CAAC;IACH,CAAC;IACDG,QAAQ,CAACD,iBAAiB,GAAGD,sBAAsB;IACnDE,QAAQ,CAACnb,aAAa,GAAGb,IAAI;IAC7Bj5B,SAAS,CAAC+5B,mBAAmB,GAAGkb,QAAQ;EAC1C;AACF;AAEA,wDAAezR,WAAW,E;;AC1DM;AACQ;AACI;AACF;AAEV;AACU;AACC;AAE3C9N,IAAO,CAAC+Q,aAAa,CAAC;EACpB9Q,SAAS,EAAE3kB,SAAS;EACpBuyB,YAAY,EAAED,iBAAY;EAC1BE,WAAW,EAAEA,mBAAW;EACxB10B,KAAK,EAAEA,SAAK;EACZua,UAAU,EAAEA,UAAU;EACtBpY,OAAO,EAAEoS,OAAOA;AAClB,CAAC,CAAC;AAEF,oDAAeqS,IAAO,E;;AClBc;AAEpC,IAAI7wB,OAAO,GAAI,OAAOlD,MAAM,KAAK,WAAW,IAAKA,MAAM,CAACuzC,cAAc;AACtE,IAAIC,KAAK,GAAGtwC,OAAO,IAAIA,OAAO,CAACuwC,WAAW,IAAI,SAAS;AACvD,IAAIC,WAAW,GAAI,OAAO1zC,MAAM,KAAK,WAAW,IAAKA,MAAM,CAACwzC,KAAK,CAAC,IAAI,OAAOxzC,MAAM,CAACwzC,KAAK,CAAC,CAACG,MAAM,KAAK,UAAU,IAAI3zC,MAAM,CAACwzC,KAAK,CAAC,CAACG,MAAM,CAAC,CAAC,KAAKrxC,SAAS;AAExJ,IAAK,OAAOtC,MAAM,KAAK,WAAW,IAAK,CAACA,MAAM,CAACg8B,iBAAiB,EAAE;EAChEh8B,MAAM,CAACg8B,iBAAiB,GAAI,IAAInxB,IAAI,CAAC,CAAC,CAAE6K,OAAO,CAAC,CAAC;AACnD;AAEA,IAAI,CAACg+B,WAAW,IAAIxwC,OAAO,EAAE;EAC3B,IAAI6wB,eAAO,GAAG,IAAI6O,eAAO,CAAC1/B,OAAO,CAAC;EAClClD,MAAM,CAACwzC,KAAK,CAAC,GAAGzf,eAAO;AACzB,CAAC,MAAM,IAAI,OAAO/zB,MAAM,KAAK,WAAW,EAAE;EACxCA,MAAM,CAAC4iC,OAAO,GAAGA,eAAO;EACxB5iC,MAAM,CAAC4zC,eAAe,GAAG,IAAI;AAC/B,CAAC,MAAM,IAAI,OAAOj9B,IAAI,KAAK,WAAW,EAAE;EACtCA,IAAI,CAACisB,OAAO,GAAGA,eAAO;EACtBjsB,IAAI,CAACi9B,eAAe,GAAG,IAAI;AAC7B;AAEA,oDAAehR,eAAO,E","sources":["webpack://rollbar/webpack/bootstrap","webpack://rollbar/webpack/runtime/define property getters","webpack://rollbar/webpack/runtime/hasOwnProperty shorthand","webpack://rollbar/webpack/runtime/make namespace object","webpack://rollbar/./src/utility.js","webpack://rollbar/./src/utility/traverse.js","webpack://rollbar/./src/scrub.js","webpack://rollbar/./src/telemetry.js","webpack://rollbar/./src/tracing/context.js","webpack://rollbar/./src/tracing/contextManager.js","webpack://rollbar/./src/tracing/hrtime.js","webpack://rollbar/./src/tracing/exporter.js","webpack://rollbar/./src/tracing/id.js","webpack://rollbar/./src/tracing/session.js","webpack://rollbar/./src/logger.js","webpack://rollbar/./src/tracing/spanProcessor.js","webpack://rollbar/./src/tracing/span.js","webpack://rollbar/./src/tracing/tracer.js","webpack://rollbar/./src/tracing/tracing.js","webpack://rollbar/./src/truncation.js","webpack://rollbar/./src/apiUtility.js","webpack://rollbar/./src/api.js","webpack://rollbar/./src/defaults.js","webpack://rollbar/./node_modules/error-stack-parser-es/dist/lite.mjs","webpack://rollbar/./node_modules/error-stack-parser-es/dist/index.mjs","webpack://rollbar/./src/errorParser.js","webpack://rollbar/./src/predicates.js","webpack://rollbar/./src/notifier.js","webpack://rollbar/./src/queue.js","webpack://rollbar/./src/rateLimiter.js","webpack://rollbar/./src/rollbar.js","webpack://rollbar/./src/tracing/defaults.js","webpack://rollbar/./src/transforms.js","webpack://rollbar/./src/browser/defaults.js","webpack://rollbar/./src/browser/globalSetup.js","webpack://rollbar/./src/browser/predicates.js","webpack://rollbar/./src/browser/replay/defaults.js","webpack://rollbar/./src/browser/transforms.js","webpack://rollbar/./src/browser/transport/fetch.js","webpack://rollbar/./src/browser/transport/xhr.js","webpack://rollbar/./src/browser/transport.js","webpack://rollbar/./src/browser/url.js","webpack://rollbar/./src/browser/core.js","webpack://rollbar/./src/utility/headers.js","webpack://rollbar/./src/utility/replace.js","webpack://rollbar/./src/browser/domUtility.js","webpack://rollbar/./src/browser/telemetry.js","webpack://rollbar/./src/browser/wrapGlobals.js","webpack://rollbar/./src/browser/rollbar.js","webpack://rollbar/./src/browser/bundles/rollbar.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(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__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*\n * isType - Given a Javascript value and a string, returns true if the type of the value matches the\n * given string.\n *\n * @param x - any value\n * @param t - a lowercase string containing one of the following type names:\n * - undefined\n * - null\n * - error\n * - number\n * - boolean\n * - string\n * - symbol\n * - function\n * - object\n * - array\n * @returns true if x is of type t, otherwise false\n */\nfunction isType(x, t) {\n return t === typeName(x);\n}\n\n/*\n * typeName - Given a Javascript value, returns the type of the object as a string\n */\nfunction typeName(x) {\n var name = typeof x;\n if (name !== 'object') {\n return name;\n }\n if (!x) {\n return 'null';\n }\n if (x instanceof Error) {\n return 'error';\n }\n return {}.toString\n .call(x)\n .match(/\\s([a-zA-Z]+)/)[1]\n .toLowerCase();\n}\n\n/* isFunction - a convenience function for checking if a value is a function\n *\n * @param f - any value\n * @returns true if f is a function, otherwise false\n */\nfunction isFunction(f) {\n return isType(f, 'function');\n}\n\n/* isNativeFunction - a convenience function for checking if a value is a native JS function\n *\n * @param f - any value\n * @returns true if f is a native JS function, otherwise false\n */\nfunction isNativeFunction(f) {\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n var funcMatchString = Function.prototype.toString\n .call(Object.prototype.hasOwnProperty)\n .replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?');\n var reIsNative = RegExp('^' + funcMatchString + '$');\n return isObject(f) && reIsNative.test(f);\n}\n\n/* isObject - Checks if the argument is an object\n *\n * @param value - any value\n * @returns true is value is an object function is an object)\n */\nfunction isObject(value) {\n return (\n value != null && (typeof value == 'object' || typeof value == 'function')\n );\n}\n\n/* hasOwn - safe helper around Object.hasOwnProperty */\nfunction hasOwn(obj, prop) {\n if (obj == null) {\n return false;\n }\n if (Object.hasOwn) {\n return Object.hasOwn(obj, prop);\n }\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n/* isString - Checks if the argument is a string\n *\n * @param value - any value\n * @returns true if value is a string\n */\nfunction isString(value) {\n return typeof value === 'string' || value instanceof String;\n}\n\n/**\n * isFiniteNumber - determines whether the passed value is a finite number\n *\n * @param {*} n - any value\n * @returns true if value is a finite number\n */\nfunction isFiniteNumber(n) {\n return Number.isFinite(n);\n}\n\n/*\n * isIterable - convenience function for checking if a value can be iterated, essentially\n * whether it is an object or an array.\n *\n * @param i - any value\n * @returns true if i is an object or an array as determined by `typeName`\n */\nfunction isIterable(i) {\n var type = typeName(i);\n return type === 'object' || type === 'array';\n}\n\n/*\n * isError - convenience function for checking if a value is of an error type\n *\n * @param e - any value\n * @returns true if e is an error\n */\nfunction isError(e) {\n // Detect both Error and Firefox Exception type\n return isType(e, 'error') || isType(e, 'exception');\n}\n\n/* isPromise - a convenience function for checking if a value is a promise\n *\n * @param p - any value\n * @returns true if f is a function, otherwise false\n */\nfunction isPromise(p) {\n return isObject(p) && isType(p.then, 'function');\n}\n\n/**\n * isBrowser - a convenience function for checking if the code is running in a browser\n *\n * @returns true if the code is running in a browser environment\n */\nfunction isBrowser() {\n return typeof window !== 'undefined';\n}\n\nfunction redact() {\n return '********';\n}\n\n// from http://stackoverflow.com/a/8809472/1138191\nfunction uuid4() {\n var d = now();\n var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(\n /[xy]/g,\n function (c) {\n var r = ((d + Math.random() * 16) % 16) | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : (r & 0x7) | 0x8).toString(16);\n },\n );\n return uuid;\n}\n\nvar LEVELS = {\n debug: 0,\n info: 1,\n warning: 2,\n error: 3,\n critical: 4,\n};\n\nfunction sanitizeHref(url) {\n try {\n const urlObject = new URL(url);\n if (urlObject.password) {\n urlObject.password = redact();\n }\n if (urlObject.search) {\n urlObject.search = redact();\n }\n return urlObject.toString();\n } catch (_) {\n return url; // Return original URL if parsing fails\n }\n}\n\nfunction sanitizeUrl(url) {\n var baseUrlParts = parseUri(url);\n if (!baseUrlParts) {\n return '(unknown)';\n }\n\n // remove a trailing # if there is no anchor\n if (baseUrlParts.anchor === '') {\n baseUrlParts.source = baseUrlParts.source.replace('#', '');\n }\n\n url = baseUrlParts.source.replace('?' + baseUrlParts.query, '');\n return url;\n}\n\nvar parseUriOptions = {\n strictMode: false,\n key: [\n 'source',\n 'protocol',\n 'authority',\n 'userInfo',\n 'user',\n 'password',\n 'host',\n 'port',\n 'relative',\n 'path',\n 'directory',\n 'file',\n 'query',\n 'anchor',\n ],\n q: {\n name: 'queryKey',\n parser: /(?:^|&)([^&=]*)=?([^&]*)/g,\n },\n parser: {\n strict:\n /^(?:([^:/?#]+):)?(?:\\/\\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\\d*))?))?((((?:[^?#/]*\\/)*)([^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n loose:\n /^(?:(?![^:@]+:[^:@/]*@)([^:/?#.]+):)?(?:\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[?#]|$)))*\\/?)?([^?#/]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n },\n};\n\nfunction parseUri(str) {\n if (!isType(str, 'string')) {\n return undefined;\n }\n\n var o = parseUriOptions;\n var m = o.parser[o.strictMode ? 'strict' : 'loose'].exec(str);\n var uri = {};\n\n for (var i = 0, l = o.key.length; i < l; ++i) {\n uri[o.key[i]] = m[i] || '';\n }\n\n uri[o.q.name] = {};\n uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {\n if ($1) {\n uri[o.q.name][$1] = $2;\n }\n });\n\n return uri;\n}\n\nfunction addParamsAndAccessTokenToPath(accessToken, options, params) {\n params = params || {};\n params.access_token = accessToken;\n var paramsArray = [];\n var k;\n for (k in params) {\n if (Object.prototype.hasOwnProperty.call(params, k)) {\n paramsArray.push([k, params[k]].join('='));\n }\n }\n var query = '?' + paramsArray.sort().join('&');\n\n options = options || {};\n options.path = options.path || '';\n var qs = options.path.indexOf('?');\n var h = options.path.indexOf('#');\n var p;\n if (qs !== -1 && (h === -1 || h > qs)) {\n p = options.path;\n options.path = p.substring(0, qs) + query + '&' + p.substring(qs + 1);\n } else {\n if (h !== -1) {\n p = options.path;\n options.path = p.substring(0, h) + query + p.substring(h);\n } else {\n options.path = options.path + query;\n }\n }\n}\n\nfunction formatUrl(u, protocol) {\n protocol = protocol || u.protocol;\n if (!protocol && u.port) {\n if (u.port === 80) {\n protocol = 'http:';\n } else if (u.port === 443) {\n protocol = 'https:';\n }\n }\n protocol = protocol || 'https:';\n\n if (!u.hostname) {\n return null;\n }\n var result = protocol + '//' + u.hostname;\n if (u.port) {\n result = result + ':' + u.port;\n }\n if (u.path) {\n result = result + u.path;\n }\n return result;\n}\n\nfunction stringify(obj, backup) {\n var value, error;\n try {\n value = JSON.stringify(obj);\n } catch (jsonError) {\n if (backup && isFunction(backup)) {\n try {\n value = backup(obj);\n } catch (backupError) {\n error = backupError;\n }\n } else {\n error = jsonError;\n }\n }\n return { error: error, value: value };\n}\n\nfunction maxByteSize(string) {\n // The transport will use utf-8, so assume utf-8 encoding.\n //\n // This minimal implementation will accurately count bytes for all UCS-2 and\n // single code point UTF-16. If presented with multi code point UTF-16,\n // which should be rare, it will safely overcount, not undercount.\n //\n // While robust utf-8 encoders exist, this is far smaller and far more performant.\n // For quickly counting payload size for truncation, smaller is better.\n\n var count = 0;\n var length = string.length;\n\n for (var i = 0; i < length; i++) {\n var code = string.charCodeAt(i);\n if (code < 128) {\n // up to 7 bits\n count = count + 1;\n } else if (code < 2048) {\n // up to 11 bits\n count = count + 2;\n } else if (code < 65536) {\n // up to 16 bits\n count = count + 3;\n }\n }\n\n return count;\n}\n\nfunction jsonParse(s) {\n var value, error;\n try {\n value = JSON.parse(s);\n } catch (e) {\n error = e;\n }\n return { error, value };\n}\n\nfunction makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n mode,\n backupMessage,\n errorParser,\n) {\n var location = {\n url: url || '',\n line: lineno,\n column: colno,\n };\n location.func = errorParser.guessFunctionName(location.url, location.line);\n location.context = errorParser.gatherContext(location.url, location.line);\n var href =\n typeof document !== 'undefined' &&\n document &&\n document.location &&\n document.location.href;\n var useragent =\n typeof window !== 'undefined' &&\n window &&\n window.navigator &&\n window.navigator.userAgent;\n return {\n mode: mode,\n message: error ? String(error) : message || backupMessage,\n url: href,\n stack: [location],\n useragent: useragent,\n };\n}\n\nfunction wrapCallback(logger, f) {\n return function (err, resp) {\n try {\n f(err, resp);\n } catch (e) {\n logger.error(e);\n }\n };\n}\n\nfunction nonCircularClone(obj) {\n var seen = [obj];\n\n function clone(obj, seen) {\n var value,\n name,\n newSeen,\n result = {};\n\n try {\n for (name in obj) {\n value = obj[name];\n\n if (value && (isType(value, 'object') || isType(value, 'array'))) {\n if (seen.includes(value)) {\n result[name] = 'Removed circular reference: ' + typeName(value);\n } else {\n newSeen = seen.slice();\n newSeen.push(value);\n result[name] = clone(value, newSeen);\n }\n continue;\n }\n\n result[name] = value;\n }\n } catch (e) {\n result = 'Failed cloning custom data: ' + e.message;\n }\n return result;\n }\n return clone(obj, seen);\n}\n\nfunction createItem(args, logger, notifier, requestKeys, lambdaContext) {\n var message, err, custom, callback, request;\n var arg;\n var extraArgs = [];\n var diagnostic = {};\n var argTypes = [];\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n argTypes.push(typ);\n switch (typ) {\n case 'undefined':\n break;\n case 'string':\n if (message) {\n extraArgs.push(arg);\n } else {\n message = arg;\n }\n break;\n case 'function':\n callback = wrapCallback(logger, arg);\n break;\n case 'date':\n extraArgs.push(arg);\n break;\n case 'error':\n case 'domexception':\n case 'exception': // Firefox Exception type\n if (err) {\n extraArgs.push(arg);\n } else {\n err = arg;\n }\n break;\n case 'object':\n case 'array':\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n if (err) {\n extraArgs.push(arg);\n } else {\n err = arg;\n }\n break;\n }\n if (requestKeys && typ === 'object' && !request) {\n for (var j = 0, len = requestKeys.length; j < len; ++j) {\n if (arg[requestKeys[j]] !== undefined) {\n request = arg;\n break;\n }\n }\n if (request) {\n break;\n }\n }\n if (custom) {\n extraArgs.push(arg);\n } else {\n custom = arg;\n }\n break;\n default:\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n if (err) {\n extraArgs.push(arg);\n } else {\n err = arg;\n }\n break;\n }\n extraArgs.push(arg);\n }\n }\n\n // if custom is an array this turns it into an object with integer keys\n if (custom) custom = nonCircularClone(custom);\n\n if (extraArgs.length > 0) {\n if (!custom) custom = nonCircularClone({});\n custom.extraArgs = nonCircularClone(extraArgs);\n }\n\n var item = {\n message: message,\n err: err,\n custom: custom,\n timestamp: now(),\n callback: callback,\n notifier: notifier,\n diagnostic: diagnostic,\n uuid: uuid4(),\n };\n\n item.data = item.data || {};\n\n setCustomItemKeys(item, custom);\n\n if (requestKeys && request) {\n item.request = request;\n }\n if (lambdaContext) {\n item.lambdaContext = lambdaContext;\n }\n item._originalArgs = args;\n item.diagnostic.original_arg_types = argTypes;\n return item;\n}\n\nfunction setCustomItemKeys(item, custom) {\n if (custom && custom.level !== undefined) {\n item.level = custom.level;\n delete custom.level;\n }\n if (custom && custom.skipFrames !== undefined) {\n item.skipFrames = custom.skipFrames;\n delete custom.skipFrames;\n }\n}\n\nfunction addErrorContext(item, errors) {\n var custom = item.data.custom || {};\n var contextAdded = false;\n\n try {\n for (const error of errors) {\n if (hasOwn(error, 'rollbarContext')) {\n custom = merge(custom, nonCircularClone(error.rollbarContext));\n contextAdded = true;\n }\n }\n\n // Avoid adding an empty object to the data.\n if (contextAdded) {\n item.data.custom = custom;\n }\n } catch (e) {\n item.diagnostic.error_context = 'Failed: ' + e.message;\n }\n}\n\nvar TELEMETRY_TYPES = [\n 'log',\n 'network',\n 'dom',\n 'navigation',\n 'error',\n 'manual',\n];\nvar TELEMETRY_LEVELS = ['critical', 'error', 'warning', 'info', 'debug'];\n\nfunction arrayIncludes(arr, val) {\n for (const entry of arr) {\n if (entry === val) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction createTelemetryEvent(args) {\n var type, metadata, level;\n var arg;\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n switch (typ) {\n case 'string':\n if (!type && arrayIncludes(TELEMETRY_TYPES, arg)) {\n type = arg;\n } else if (!level && arrayIncludes(TELEMETRY_LEVELS, arg)) {\n level = arg;\n }\n break;\n case 'object':\n metadata = arg;\n break;\n default:\n break;\n }\n }\n var event = {\n type: type || 'manual',\n metadata: metadata || {},\n level: level,\n };\n\n return event;\n}\n\nfunction addItemAttributes(itemData, attributes) {\n itemData.attributes = itemData.attributes || [];\n for (const a of attributes) {\n if (a.value === undefined) {\n continue;\n }\n itemData.attributes.push(a);\n }\n}\n\n/*\n * get - given an obj/array and a keypath, return the value at that keypath or\n * undefined if not possible.\n *\n * @param obj - an object or array\n * @param path - a string of keys separated by '.' such as 'plugin.jquery.0.message'\n * which would correspond to 42 in `{plugin: {jquery: [{message: 42}]}}`\n */\nfunction get(obj, path) {\n if (!obj) {\n return undefined;\n }\n var keys = path.split('.');\n var result = obj;\n try {\n for (var i = 0, len = keys.length; i < len; ++i) {\n result = result[keys[i]];\n }\n } catch (_e) {\n result = undefined;\n }\n return result;\n}\n\nfunction set(obj, path, value) {\n if (!obj) {\n return;\n }\n\n // Prevent prototype pollution by setting the prototype to null.\n Object.setPrototypeOf(obj, null);\n\n var keys = path.split('.');\n var len = keys.length;\n if (len < 1) {\n return;\n }\n if (len === 1) {\n obj[keys[0]] = value;\n return;\n }\n try {\n var temp = obj[keys[0]] || {};\n var replacement = temp;\n for (var i = 1; i < len - 1; ++i) {\n temp[keys[i]] = temp[keys[i]] || {};\n temp = temp[keys[i]];\n }\n temp[keys[len - 1]] = value;\n obj[keys[0]] = replacement;\n } catch (_e) {\n return;\n }\n}\n\nfunction formatArgsAsString(args) {\n var i, len, arg;\n var result = [];\n for (i = 0, len = args.length; i < len; ++i) {\n arg = args[i];\n switch (typeName(arg)) {\n case 'object':\n arg = stringify(arg);\n arg = arg.error || arg.value;\n if (arg.length > 500) {\n arg = arg.substr(0, 497) + '...';\n }\n break;\n case 'null':\n arg = 'null';\n break;\n case 'undefined':\n arg = 'undefined';\n break;\n case 'symbol':\n arg = arg.toString();\n break;\n }\n result.push(arg);\n }\n return result.join(' ');\n}\n\nfunction now() {\n if (Date.now) {\n return Date.now();\n }\n return Number(new Date());\n}\n\nfunction filterIp(requestData, captureIp) {\n if (!requestData || !requestData['user_ip'] || captureIp === true) {\n return;\n }\n var newIp = requestData['user_ip'];\n if (!captureIp) {\n newIp = null;\n } else {\n try {\n var parts;\n if (newIp.indexOf('.') !== -1) {\n parts = newIp.split('.');\n parts.pop();\n parts.push('0');\n newIp = parts.join('.');\n } else if (newIp.indexOf(':') !== -1) {\n parts = newIp.split(':');\n if (parts.length > 2) {\n var beginning = parts.slice(0, 3);\n var slashIdx = beginning[2].indexOf('/');\n if (slashIdx !== -1) {\n beginning[2] = beginning[2].substring(0, slashIdx);\n }\n var terminal = '0000:0000:0000:0000:0000';\n newIp = beginning.concat(terminal).join(':');\n }\n } else {\n newIp = null;\n }\n } catch (_e) {\n newIp = null;\n }\n }\n requestData['user_ip'] = newIp;\n}\n\nfunction handleOptions(current, input, payload, logger) {\n var result = merge(current, input, payload);\n result = updateDeprecatedOptions(result, logger);\n if (!input || input.overwriteScrubFields) {\n return result;\n }\n if (input.scrubFields) {\n result.scrubFields = (current.scrubFields || []).concat(input.scrubFields);\n }\n return result;\n}\n\nfunction updateDeprecatedOptions(options, logger) {\n if (options.hostWhiteList && !options.hostSafeList) {\n options.hostSafeList = options.hostWhiteList;\n options.hostWhiteList = undefined;\n logger && logger.log('hostWhiteList is deprecated. Use hostSafeList.');\n }\n if (options.hostBlackList && !options.hostBlockList) {\n options.hostBlockList = options.hostBlackList;\n options.hostBlackList = undefined;\n logger && logger.log('hostBlackList is deprecated. Use hostBlockList.');\n }\n return options;\n}\n\nfunction merge() {\n function isPlainObject(obj) {\n if (!obj || Object.prototype.toString.call(obj) !== '[object Object]') {\n return false;\n }\n\n var hasOwnConstructor = hasOwn(obj, 'constructor');\n var hasIsPrototypeOf =\n obj.constructor &&\n obj.constructor.prototype &&\n hasOwn(obj.constructor.prototype, 'isPrototypeOf');\n // Not own constructor property must be Object\n if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n return false;\n }\n\n // Own properties are enumerated firstly, so to speed up,\n // if last one is own, then all properties are own.\n var key;\n for (key in obj) {\n /**/\n }\n\n return typeof key === 'undefined' || hasOwn(obj, key);\n }\n\n var i,\n src,\n copy,\n clone,\n name,\n result = Object.create(null), // no prototype pollution on Object\n current = null,\n length = arguments.length;\n\n for (i = 0; i < length; i++) {\n current = arguments[i];\n if (current === null || current === undefined) {\n continue;\n }\n\n for (name in current) {\n src = result[name];\n copy = current[name];\n if (result !== copy) {\n if (copy && isPlainObject(copy)) {\n clone = src && isPlainObject(src) ? src : {};\n result[name] = merge(clone, copy);\n } else if (typeof copy !== 'undefined') {\n result[name] = copy;\n }\n }\n }\n }\n return result;\n}\n\nexport {\n addParamsAndAccessTokenToPath,\n createItem,\n addErrorContext,\n createTelemetryEvent,\n addItemAttributes,\n filterIp,\n formatArgsAsString,\n formatUrl,\n get,\n handleOptions,\n isError,\n isFiniteNumber,\n isFunction,\n hasOwn,\n isIterable,\n isNativeFunction,\n isObject,\n isString,\n isType,\n isPromise,\n isBrowser,\n jsonParse,\n LEVELS,\n makeUnhandledStackInfo,\n merge,\n now,\n redact,\n sanitizeHref,\n sanitizeUrl,\n set,\n stringify,\n maxByteSize,\n typeName,\n uuid4,\n};\n","import * as _ from '../utility.js';\n\nfunction traverse(obj, func, seen) {\n var k, v, i;\n var isObj = _.isType(obj, 'object');\n var isArray = _.isType(obj, 'array');\n var keys = [];\n var seenIndex;\n\n // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11.\n seen = seen || { obj: [], mapped: [] };\n\n if (isObj) {\n seenIndex = seen.obj.indexOf(obj);\n\n if (isObj && seenIndex !== -1) {\n // Prefer the mapped object if there is one.\n return seen.mapped[seenIndex] || seen.obj[seenIndex];\n }\n\n seen.obj.push(obj);\n seenIndex = seen.obj.length - 1;\n }\n\n if (isObj) {\n for (k in obj) {\n if (_.hasOwn(obj, k)) {\n keys.push(k);\n }\n }\n } else if (isArray) {\n for (i = 0; i < obj.length; ++i) {\n keys.push(i);\n }\n }\n\n var result = isObj ? {} : [];\n var same = true;\n for (i = 0; i < keys.length; ++i) {\n k = keys[i];\n v = obj[k];\n result[k] = func(k, v, seen);\n same = same && result[k] === obj[k];\n }\n\n if (isObj && !same) {\n seen.mapped[seenIndex] = result;\n }\n\n return !same ? result : obj;\n}\n\nexport default traverse;\n","import traverse from './utility/traverse.js';\nimport * as _ from './utility.js';\n\nfunction scrub(data, scrubFields, scrubPaths) {\n scrubFields = scrubFields || [];\n\n if (scrubPaths) {\n for (const path of scrubPaths) {\n scrubPath(data, path);\n }\n }\n\n var paramRes = _getScrubFieldRegexs(scrubFields);\n var queryRes = _getScrubQueryParamRegexs(scrubFields);\n\n function redactQueryParam(dummy0, paramPart) {\n return paramPart + _.redact();\n }\n\n function paramScrubber(v) {\n if (_.isType(v, 'string')) {\n for (const regex of queryRes) {\n v = v.replace(regex, redactQueryParam);\n }\n }\n return v;\n }\n\n function valScrubber(k, v) {\n for (const regex of paramRes) {\n if (regex.test(k)) {\n v = _.redact();\n break;\n }\n }\n return v;\n }\n\n function scrubber(k, v, seen) {\n var tmpV = valScrubber(k, v);\n if (tmpV === v) {\n if (_.isType(v, 'object') || _.isType(v, 'array')) {\n return traverse(v, scrubber, seen);\n }\n return paramScrubber(tmpV);\n } else {\n return tmpV;\n }\n }\n\n return traverse(data, scrubber);\n}\n\nfunction scrubPath(obj, path) {\n var keys = path.split('.');\n var last = keys.length - 1;\n try {\n for (const [index, key] of keys.entries()) {\n if (index < last) {\n obj = obj[key];\n } else {\n obj[key] = _.redact();\n }\n }\n } catch (_e) {\n // Missing key is OK;\n }\n}\n\nfunction _getScrubFieldRegexs(scrubFields) {\n var ret = [];\n for (const field of scrubFields) {\n var pat = '^\\\\[?(%5[bB])?' + field + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?$';\n ret.push(new RegExp(pat, 'i'));\n }\n return ret;\n}\n\nfunction _getScrubQueryParamRegexs(scrubFields) {\n var ret = [];\n for (const field of scrubFields) {\n var pat = '\\\\[?(%5[bB])?' + field + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?';\n ret.push(new RegExp('(' + pat + '=)([^&\\\\n]+)', 'igm'));\n }\n return ret;\n}\n\nexport default scrub;\n","import * as _ from './utility.js';\n\nconst MAX_EVENTS = 100;\n\n// Temporary workaround while solving commonjs -> esm issues in Node 18 - 20.\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\nclass Telemeter {\n constructor(options, tracing) {\n this.queue = [];\n this.options = _.merge(options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n this.tracing = tracing;\n this.telemetrySpan = this.tracing?.startSpan('rollbar-telemetry', {});\n }\n\n configure(options) {\n var oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n var newMaxEvents = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n var deleteCount = 0;\n if (this.queue.length > newMaxEvents) {\n deleteCount = this.queue.length - newMaxEvents;\n }\n this.maxQueueSize = newMaxEvents;\n this.queue.splice(0, deleteCount);\n }\n\n copyEvents() {\n var events = Array.prototype.slice.call(this.queue, 0);\n if (_.isFunction(this.options.filterTelemetry)) {\n try {\n var i = events.length;\n while (i--) {\n if (this.options.filterTelemetry(events[i])) {\n events.splice(i, 1);\n }\n }\n } catch (_e) {\n this.options.filterTelemetry = null;\n }\n }\n\n // Filter until supported in legacy telemetry\n events = events.filter((e) => e.type !== 'connectivity');\n\n // Remove internal keys from output\n events = events.map(\n ({ otelAttributes: _otelAttributes, ...event }) => event,\n );\n\n return events;\n }\n\n exportTelemetrySpan(attributes = {}) {\n if (this.telemetrySpan) {\n this.telemetrySpan.end(attributes);\n this.telemetrySpan = this.tracing.startSpan('rollbar-telemetry', {});\n }\n }\n\n capture(\n type,\n metadata,\n level,\n rollbarUUID,\n timestamp = null,\n otelAttributes = null,\n ) {\n var e = {\n level: getLevel(type, level),\n type: type,\n timestamp_ms: timestamp || _.now(),\n body: metadata,\n source: 'client',\n };\n if (rollbarUUID) {\n e.uuid = rollbarUUID;\n }\n if (otelAttributes) {\n e.otelAttributes = otelAttributes;\n }\n\n try {\n if (\n _.isFunction(this.options.filterTelemetry) &&\n this.options.filterTelemetry(e)\n ) {\n return false;\n }\n } catch (_exc) {\n this.options.filterTelemetry = null;\n }\n\n this.push(e);\n return e;\n }\n\n captureEvent(type, metadata, level, rollbarUUID) {\n return this.capture(type, metadata, level, rollbarUUID);\n }\n\n captureError(err, level, rollbarUUID, timestamp) {\n const message = err.message || String(err);\n var metadata = { message };\n if (err.stack) {\n metadata.stack = err.stack;\n }\n const otelAttributes = {\n message,\n level,\n type: 'error',\n uuid: rollbarUUID,\n };\n\n this.telemetrySpan?.addEvent(\n 'rollbar-occurrence-event',\n otelAttributes,\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'error',\n metadata,\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureLog(message, level, rollbarUUID, timestamp) {\n const event = rollbarUUID\n ? 'rollbar-occurrence-event'\n : 'rollbar-log-event';\n const otelAttributes = {\n message,\n level,\n ...(rollbarUUID ? { type: 'message', uuid: rollbarUUID } : {}),\n };\n\n this.telemetrySpan?.addEvent(event, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'log',\n { message },\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNetwork(metadata, subtype, rollbarUUID, requestData) {\n subtype = subtype || 'xhr';\n metadata.subtype = metadata.subtype || subtype;\n if (requestData) {\n metadata.request = requestData;\n }\n const level = this.levelFromStatus(metadata.status_code);\n const endTimeNano = (metadata.end_time_ms || 0) * 1e6;\n const otelAttributes = {\n type: metadata.subtype,\n method: metadata.method,\n url: metadata.url,\n statusCode: metadata.status_code,\n 'request.headers': JSON.stringify(metadata.request_headers || {}),\n 'response.headers': JSON.stringify(metadata.response?.headers || {}),\n 'response.timeUnixNano': endTimeNano.toString(),\n };\n const requestBody = metadata.request;\n const responseBody = metadata.response?.body;\n if (requestBody) {\n otelAttributes['request.body'] = JSON.stringify(requestBody);\n }\n if (responseBody) {\n otelAttributes['response.body'] = JSON.stringify(responseBody);\n }\n\n this.telemetrySpan?.addEvent(\n 'rollbar-network-event',\n otelAttributes,\n fromMillis(metadata.start_time_ms),\n );\n\n return this.capture(\n 'network',\n metadata,\n level,\n rollbarUUID,\n metadata.start_time_ms,\n otelAttributes,\n );\n }\n\n levelFromStatus(statusCode) {\n if (statusCode >= 200 && statusCode < 400) {\n return 'info';\n }\n if (statusCode === 0 || statusCode >= 400) {\n return 'error';\n }\n return 'info';\n }\n\n captureDom(subtype, element, value, checked, rollbarUUID) {\n var metadata = {\n subtype: subtype,\n element: element,\n };\n if (value !== undefined) {\n metadata.value = value;\n }\n if (checked !== undefined) {\n metadata.checked = checked;\n }\n return this.capture('dom', metadata, 'info', rollbarUUID);\n }\n\n captureInput({ type, isSynthetic, element, value, timestamp }) {\n const name = 'rollbar-input-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n value,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n value,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureClick({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-click-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n _getRepeatedEvent(name, attributes) {\n const lastEvent = this._lastEvent(this.queue);\n\n if (\n lastEvent &&\n lastEvent.body.type === name &&\n lastEvent.otelAttributes.target === attributes.target\n ) {\n return lastEvent;\n }\n }\n\n _updateRepeatedEvent(event, attributes, timestamp) {\n const duration = Math.max(timestamp - event.timestamp_ms, 1);\n event.body.value = attributes.value;\n event.otelAttributes.value = attributes.value;\n event.otelAttributes.height = attributes.height;\n event.otelAttributes.width = attributes.width;\n event.otelAttributes.textZoomRatio = attributes.textZoomRatio;\n event.otelAttributes['endTimeUnixNano'] = fromMillis(timestamp);\n event.otelAttributes['durationUnixNano'] = fromMillis(duration);\n event.otelAttributes.count = (event.otelAttributes.count || 1) + 1;\n event.otelAttributes.rate = event.otelAttributes.count / (duration / 1000);\n }\n\n _lastEvent(list) {\n return list.length > 0 ? list[list.length - 1] : null;\n }\n\n captureFocus({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-focus-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureResize({\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n timestamp,\n }) {\n const name = 'rollbar-resize-event';\n const metadata = {\n type: name,\n subtype: type,\n width,\n height,\n textZoomRatio,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n };\n\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureDragDrop({\n type,\n isSynthetic,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n timestamp,\n }) {\n const name = 'rollbar-dragdrop-event';\n let metadata = {\n type: name,\n subtype: type,\n isSynthetic,\n };\n\n let otelAttributes = {\n type,\n isSynthetic,\n };\n\n if (type === 'dragstart') {\n metadata = { ...metadata, element, dropEffect, effectAllowed };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n };\n }\n\n if (type === 'drop') {\n metadata = {\n ...metadata,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNavigation(from, to, rollbarUUID, timestamp) {\n this.telemetrySpan?.addEvent(\n 'rollbar-navigation-event',\n { 'previous.url.full': from, 'url.full': to },\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'navigation',\n { from, to },\n 'info',\n rollbarUUID,\n timestamp,\n );\n }\n\n captureDomContentLoaded(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'DOMContentLoaded' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'DOMContentLoaded'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureLoad(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'load' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'load'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureConnectivityChange({ type, isSynthetic, timestamp }) {\n const name = 'rollbar-connectivity-event';\n const metadata = {\n type: name,\n subtype: type,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'connectivity',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n // Only intended to be used internally by the notifier\n _captureRollbarItem(item) {\n if (!this.options.includeItemsInTelemetry) {\n return;\n }\n if (item.err) {\n return this.captureError(item.err, item.level, item.uuid, item.timestamp);\n }\n if (item.message) {\n return this.captureLog(\n item.message,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n if (item.custom) {\n return this.capture(\n 'log',\n item.custom,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n }\n\n push(e) {\n this.queue.push(e);\n if (this.queue.length > this.maxQueueSize) {\n this.queue.shift();\n }\n }\n}\n\nfunction getLevel(type, level) {\n if (level) {\n return level;\n }\n var defaultLevel = {\n error: 'error',\n manual: 'info',\n };\n return defaultLevel[type] || 'info';\n}\n\nexport default Telemeter;\n","export class Context {\n constructor(parentContext) {\n this._currentContext = parentContext ? new Map(parentContext) : new Map();\n }\n\n getValue(key) {\n return this._currentContext.get(key);\n }\n\n setValue(key, value) {\n const context = new Context(this._currentContext);\n context._currentContext.set(key, value);\n return context;\n }\n\n deleteValue(key) {\n const context = new Context(self._currentContext);\n context._currentContext.delete(key);\n return context;\n }\n}\n\nexport const ROOT_CONTEXT = new Context();\n","import { ROOT_CONTEXT } from './context.js';\n\nexport class ContextManager {\n constructor() {\n this.currentContext = ROOT_CONTEXT;\n }\n\n active() {\n return this.currentContext;\n }\n\n enterContext(context) {\n const previousContext = this.currentContext;\n this.currentContext = context || ROOT_CONTEXT;\n return previousContext;\n }\n\n exitContext(context) {\n this.currentContext = context;\n return this.currentContext;\n }\n\n with(context, fn, thisArg, ...args) {\n const previousContext = this.enterContext(context);\n try {\n return fn.call(thisArg, ...args);\n } finally {\n this.exitContext(previousContext);\n }\n }\n}\n\nexport function createContextKey(key) {\n // Use Symbol for OpenTelemetry compatibility.\n return Symbol.for(key);\n}\n","/**\n * @module hrtime\n *\n * @description Methods for handling OpenTelemetry hrtime.\n */\n\n/**\n * Convert a duration in milliseconds to an OpenTelemetry hrtime tuple.\n *\n * @param {number} millis - The duration in milliseconds.\n * @returns {[number, number]} An array where the first element is seconds\n * and the second is nanoseconds.\n */\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in milliseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in milliseconds.\n */\nfunction toMillis(hrtime) {\n return hrtime[0] * 1e3 + Math.round(hrtime[1] / 1e6);\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in nanoseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in nanoseconds.\n */\nfunction toNanos(hrtime) {\n return hrtime[0] * 1e9 + hrtime[1];\n}\n\n/**\n * Adds two OpenTelemetry hrtime tuples.\n *\n * @param {[number, number]} a - The first hrtime tuple [s, ns].\n * @param {[number, number]} b - The second hrtime tuple [s, ns].\n * @returns {[number, number]} Summed hrtime tuple, normalized.\n *\n */\nfunction add(a, b) {\n return [a[0] + b[0] + Math.trunc((a[1] + b[1]) / 1e9), (a[1] + b[1]) % 1e9];\n}\n\n/**\n * Get the current high-resolution time as an OpenTelemetry hrtime tuple.\n *\n * @param {boolean} usePerformance=false - If true, uses the Performance API (timeOrigin + now()).\n *\n * @returns {[number, number]} The current hrtime tuple [s, ns].\n */\nfunction now(usePerformance = false) {\n if (usePerformance) {\n return add(\n fromMillis(performance.timeOrigin),\n fromMillis(performance.now()),\n );\n }\n return fromMillis(Date.now());\n}\n\n/**\n * Check if a value is a valid OpenTelemetry hrtime tuple.\n *\n * An hrtime tuple is an Array of exactly two numbers:\n * [seconds, nanoseconds]\n *\n * @param {*} value – anything to test\n * @returns {boolean} true if `value` is a [number, number] array of length 2\n *\n * @example\n * isHrTime([ 1, 500 ]); // true\n * isHrTime([ 0, 1e9 ]); // true\n * isHrTime([ '1', 500 ]); // false\n * isHrTime({ 0: 1, 1: 500 }); // false\n */\nfunction isHrTime(value) {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number'\n );\n}\n\n/**\n * Methods for handling hrtime. OpenTelemetry uses the [seconds, nanoseconds]\n * format for hrtime in the `ReadableSpan` interface.\n *\n * @example\n * import hrtime from '@tracing/hrtime.js';\n *\n * hrtime.fromMillis(1000);\n * hrtime.toMillis([0, 1000]);\n * hrtime.add([0, 0], [0, 1000]);\n * hrtime.now();\n * hrtime.isHrTime([0, 1000]);\n */\nexport default { fromMillis, toMillis, toNanos, add, now, isHrTime };\n","import hrtime from './hrtime.js';\n\n/**\n * SpanExporter is responsible for exporting ReadableSpan objects\n * and transforming them into the OTLP-compatible format.\n */\nexport class SpanExporter {\n constructor(api, options = {}) {\n this.api = api;\n this.options = options;\n }\n\n /**\n * Export spans to the span export queue\n *\n * @param {Array} spans - Array of ReadableSpan objects to export\n * @param {Function} _resultCallback - Optional callback (not used)\n */\n export(spans, _resultCallback) {\n spanExportQueue.push(...spans);\n }\n\n /**\n * Transforms an array of ReadableSpan objects into the OTLP format payload\n * compatible with the Rollbar API. This follows the OpenTelemetry protocol\n * specification for traces.\n *\n * @returns {Object} OTLP format payload for API transmission\n */\n toPayload() {\n const spans = spanExportQueue.slice();\n spanExportQueue.length = 0;\n\n if (!spans || !spans.length) {\n return { resourceSpans: [] };\n }\n\n const resource = (spans[0] && spans[0].resource) || {};\n\n const scopeMap = new Map();\n\n for (const span of spans) {\n const scopeKey = span.instrumentationScope\n ? `${span.instrumentationScope.name}:${span.instrumentationScope.version}`\n : 'default:1.0.0';\n\n if (!scopeMap.has(scopeKey)) {\n scopeMap.set(scopeKey, {\n scope: span.instrumentationScope || {\n name: 'default',\n version: '1.0.0',\n attributes: [],\n },\n spans: [],\n });\n }\n\n scopeMap.get(scopeKey).spans.push(this._transformSpan(span));\n }\n\n return {\n resourceSpans: [\n {\n resource: this._transformResource(resource),\n scopeSpans: Array.from(scopeMap.values()).map((scopeData) => ({\n scope: this._transformInstrumentationScope(scopeData.scope),\n spans: scopeData.spans,\n })),\n },\n ],\n };\n }\n\n /**\n * Sends the given payload to the Rollbar API.\n *\n * @param {String} payload - Serialized OTLP format payload\n * @param {Object} headers - Optional request headers\n * @returns {Promise} Promise that resolves when the request completes\n */\n post(payload, headers = {}) {\n return this.api.postSpans(payload, headers);\n }\n\n /**\n * Transforms a ReadableSpan into the OTLP Span format\n *\n * @private\n * @param {Object} span - ReadableSpan object to transform\n * @returns {Object} OTLP Span format\n */\n _transformSpan(span) {\n const transformAttributes = (attributes) => {\n return Object.entries(attributes || {}).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n };\n\n const transformEvents = (events) => {\n return (events || []).map((event) => ({\n timeUnixNano: hrtime.toNanos(event.time),\n name: event.name,\n attributes: transformAttributes(event.attributes),\n }));\n };\n\n return {\n traceId: span.spanContext.traceId,\n spanId: span.spanContext.spanId,\n parentSpanId: span.parentSpanId || '',\n name: span.name,\n kind: span.kind || 1, // INTERNAL by default\n startTimeUnixNano: hrtime.toNanos(span.startTime),\n endTimeUnixNano: hrtime.toNanos(span.endTime),\n attributes: transformAttributes(span.attributes),\n events: transformEvents(span.events),\n };\n }\n\n /**\n * Transforms a resource object into OTLP Resource format\n *\n * @private\n * @param {Object} resource - Resource information\n * @returns {Object} OTLP Resource format\n */\n _transformResource(resource) {\n const attributes = resource.attributes || {};\n const keyValues = Object.entries(attributes).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n\n return {\n attributes: keyValues,\n };\n }\n\n /**\n * Transforms an instrumentation scope into OTLP InstrumentationScope format\n *\n * @private\n * @param {Object} scope - Instrumentation scope information\n * @returns {Object} OTLP InstrumentationScope format\n */\n _transformInstrumentationScope(scope) {\n return {\n name: scope.name || '',\n version: scope.version || '',\n attributes: (scope.attributes || []).map((attr) => ({\n key: attr.key,\n value: this._transformAnyValue(attr.value),\n })),\n };\n }\n\n /**\n * Transforms a JavaScript value into an OTLP AnyValue\n *\n * @private\n * @param {any} value - Value to transform\n * @returns {Object} OTLP AnyValue format\n */\n _transformAnyValue(value) {\n if (value === null || value === undefined) {\n return { stringValue: '' };\n }\n\n const type = typeof value;\n\n if (type === 'string') {\n return { stringValue: value };\n } else if (type === 'number') {\n if (Number.isInteger(value)) {\n return { intValue: value.toString() };\n } else {\n return { doubleValue: value };\n }\n } else if (type === 'boolean') {\n return { boolValue: value };\n } else if (Array.isArray(value)) {\n return {\n arrayValue: {\n values: value.map((v) => this._transformAnyValue(v)),\n },\n };\n } else if (type === 'object') {\n return {\n kvlistValue: {\n values: Object.entries(value).map(([k, v]) => ({\n key: k,\n value: this._transformAnyValue(v),\n })),\n },\n };\n }\n\n return { stringValue: String(value) };\n }\n}\n\nexport const spanExportQueue = [];\n","/**\n * Generate a random hexadecimal ID of specified byte length\n *\n * @param {number} bytes - Number of bytes for the ID (default: 16)\n * @returns {string} - Hexadecimal string representation\n */\nfunction gen(bytes = 16) {\n let randomBytes = new Uint8Array(bytes);\n crypto.getRandomValues(randomBytes);\n let randHex = Array.from(randomBytes, (byte) =>\n byte.toString(16).padStart(2, '0'),\n ).join('');\n return randHex;\n}\n\n/**\n * Tracing id generation utils\n *\n * @example\n * import id from './id.js';\n *\n * const spanId = id.gen(8); // => \"a1b2c3d4e5f6...\"\n */\nexport default { gen };\n","import id from './id.js';\n\nconst SESSION_KEY = 'RollbarSession';\n\nexport class Session {\n _attributes;\n\n constructor(tracing, options) {\n this.options = options;\n this.tracing = tracing;\n this.window = tracing.window;\n this.session = null;\n this._attributes = {};\n }\n\n init(attrs = {}) {\n if (this.session) {\n return this;\n }\n this.getSession() || this.createSession();\n\n this.initSessionAttributes(attrs);\n\n return this;\n }\n\n getSession() {\n try {\n const serializedSession = this.window.sessionStorage.getItem(SESSION_KEY);\n\n if (!serializedSession) {\n return null;\n }\n\n this.session = JSON.parse(serializedSession);\n } catch {\n return null;\n }\n return this;\n }\n\n createSession() {\n this.session = {\n id: id.gen(),\n createdAt: Date.now(),\n };\n\n return this.setSession(this.session);\n }\n\n setSession(session) {\n const sessionString = JSON.stringify(session);\n\n try {\n this.window.sessionStorage.setItem(SESSION_KEY, sessionString);\n } catch {\n return null;\n }\n return this;\n }\n\n get attributes() {\n return this._attributes;\n }\n\n setAttributes(attributes) {\n this._attributes = { ...this._attributes, ...attributes };\n return this;\n }\n\n setUser(user) {\n this.setAttributes({\n 'user.id': user?.id,\n 'user.email': user?.email,\n 'user.name': user?.name || user?.username,\n });\n return this;\n }\n\n initSessionAttributes(attrs) {\n this.setAttributes({\n 'session.id': this.session.id,\n 'browser.brands': navigator.userAgentData?.brands,\n 'browser.language': navigator.language,\n 'browser.mobile': navigator.userAgentData?.mobile,\n 'browser.platform': navigator.userAgentData?.platform,\n 'client.address': '$remote_ip', // updated at the API\n 'rollbar.notifier.framework': 'browser-js',\n 'user_agent.original': navigator.userAgent,\n ...attrs,\n });\n return this;\n }\n}\n","let log = () => {};\n\nconst levels = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n disable: 4,\n};\n\nconst logger = {\n error: (...args) => log('error', args),\n warn: (...args) => log('warn', args),\n info: (...args) => log('info', args),\n debug: (...args) => log('debug', args),\n log: (...args) => log('info', args),\n init: ({ logLevel }) => {\n log = function (level, args) {\n if (levels[level] < levels[logLevel]) return;\n\n args.unshift('Rollbar:');\n\n // eslint-disable-next-line no-console\n console[level].apply(console, args);\n };\n },\n};\n\nexport default logger;\n","import logger from '../logger.js';\n\nexport class SpanProcessor {\n constructor(exporter, options = {}) {\n this.exporter = exporter;\n this.options = options;\n this.pendingSpans = new Map();\n this.transforms = [this.userTransform.bind(this)];\n }\n\n addTransform(transformFn) {\n this.transforms.unshift(transformFn);\n }\n\n userTransform(span) {\n if (this.options.transformSpan) {\n this.options.transformSpan({ span: span });\n }\n }\n\n applyTransforms(span) {\n for (const transform of this.transforms) {\n try {\n transform(span);\n } catch (e) {\n logger.error('Error running span transform callback', e);\n }\n }\n }\n\n onStart(span, _parentContext) {\n this.pendingSpans.set(span.span.spanContext.spanId, span);\n }\n\n onEnd(span) {\n this.applyTransforms(span.span);\n this.exporter.export([span.export()]);\n this.pendingSpans.delete(span.span.spanContext.spanId);\n }\n}\n","import hrtime from './hrtime.js';\n\nexport class Span {\n constructor(options) {\n this.usePerformance = options.usePerformance;\n this.initReadableSpan(options);\n\n this.spanProcessor = options.spanProcessor;\n this.spanProcessor.onStart(this, options.context);\n\n if (options.attributes) {\n this.setAttributes(options.attributes);\n }\n return this;\n }\n\n initReadableSpan(options) {\n this.span = {\n name: options.name,\n kind: options.kind,\n spanContext: options.spanContext,\n parentSpanId: options.parentSpanId,\n startTime: options.startTime || hrtime.now(options.usePerformance),\n endTime: [0, 0],\n status: { code: 0, message: '' },\n attributes: { 'session.id': options.session?.id },\n links: [],\n events: [],\n duration: 0,\n ended: false,\n resource: options.resource,\n instrumentationScope: options.scope,\n droppedAttributesCount: 0,\n droppedEventsCount: 0,\n droppedLinksCount: 0,\n };\n }\n\n spanContext() {\n return this.span.spanContext;\n }\n\n get spanId() {\n return this.span.spanContext.spanId;\n }\n\n get traceId() {\n return this.span.spanContext.traceId;\n }\n\n setAttribute(key, value) {\n if (value == null || this.span.ended) return this;\n if (key.length === 0) return this;\n\n this.span.attributes[key] = value;\n return this;\n }\n\n setAttributes(attributes) {\n for (const [k, v] of Object.entries(attributes)) {\n this.setAttribute(k, v);\n }\n return this;\n }\n\n addEvent(name, attributes = {}, time) {\n if (this.span.ended) return this;\n\n this.span.events.push({\n name,\n attributes,\n time: time || hrtime.now(),\n droppedAttributesCount: 0,\n });\n\n return this;\n }\n\n isRecording() {\n return this.span.ended === false;\n }\n\n end(attributes, time) {\n if (attributes) this.setAttributes(attributes);\n this.span.endTime = time || hrtime.now(this.usePerformance);\n this.span.ended = true;\n this.spanProcessor.onEnd(this);\n }\n\n export() {\n return this.span;\n }\n}\n","import id from './id.js';\nimport { Span } from './span.js';\n\nexport class Tracer {\n constructor(tracing, spanProcessor) {\n this.spanProcessor = spanProcessor;\n this.tracing = tracing;\n }\n\n startSpan(\n name,\n options = {},\n context = this.tracing.contextManager.active(),\n ) {\n const parentSpan = this.tracing.getSpan(context);\n const parentSpanContext = parentSpan?.spanContext();\n const spanId = id.gen(8);\n let traceId;\n let traceFlags = 0;\n let traceState = null;\n let parentSpanId;\n if (parentSpanContext) {\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n parentSpanId = parentSpanContext.spanId;\n } else {\n traceId = id.gen(16);\n }\n\n const kind = 0;\n const spanContext = { traceId, spanId, traceFlags, traceState };\n const resource = {\n attributes: {\n ...(this.tracing.resource?.attributes || {}),\n ...(options.resource?.attributes || {}),\n },\n };\n\n const span = new Span({\n resource: resource,\n scope: this.tracing.scope,\n session: this.tracing.session?.session,\n context,\n spanContext,\n name,\n kind,\n parentSpanId,\n spanProcessor: this.spanProcessor,\n startTime: options.startTime,\n usePerformance: options.usePerformance,\n });\n return span;\n }\n}\n","import { ContextManager, createContextKey } from './contextManager.js';\nimport { SpanExporter } from './exporter.js';\nimport id from './id.js';\nimport { Session } from './session.js';\nimport { SpanProcessor } from './spanProcessor.js';\nimport { Tracer } from './tracer.js';\n\nconst SPAN_KEY = createContextKey('Rollbar Context Key SPAN');\n\nexport default class Tracing {\n constructor(gWindow, api, options) {\n this.api = api;\n this.options = options;\n this.window = gWindow;\n\n if (this.window.sessionStorage) {\n this.session = new Session(this, options);\n }\n this.createTracer();\n }\n\n configure(options) {\n // Options merge happens before configure is called, so we can just replace.\n this.options = options;\n }\n\n initSession() {\n if (this.session) {\n this.session.init();\n }\n }\n\n get sessionId() {\n if (this.session) {\n return this.session.session.id;\n }\n return null;\n }\n\n get resource() {\n return {\n attributes: {\n ...(this.options.resource || {}),\n 'rollbar.environment':\n this.options.payload?.environment ?? this.options.environment,\n },\n };\n }\n\n get scope() {\n return {\n name: 'rollbar-browser-js',\n version: this.options.version,\n };\n }\n\n idGen(bytes = 16) {\n return id.gen(bytes);\n }\n\n createTracer() {\n this.contextManager = new ContextManager();\n this.exporter = new SpanExporter(this.api, this.options);\n this.spanProcessor = new SpanProcessor(this.exporter, this.options.tracing);\n this.tracer = new Tracer(this, this.spanProcessor);\n }\n\n getTracer() {\n return this.tracer;\n }\n\n addSpanTransform(transformFn) {\n this.spanProcessor.addTransform(transformFn);\n }\n\n getSpan(context = this.contextManager.active()) {\n return context.getValue(SPAN_KEY);\n }\n\n setSpan(context = this.contextManager.active(), span) {\n return context.setValue(SPAN_KEY, span);\n }\n\n startSpan(name, options = {}, context = this.contextManager.active()) {\n return this.tracer.startSpan(name, options, context);\n }\n\n with(context, fn, thisArg, ...args) {\n return this.contextManager.with(context, fn, thisArg, ...args);\n }\n\n withSpan(name, options, fn, thisArg) {\n const span = this.startSpan(name, options);\n return this.with(\n this.setSpan(this.contextManager.active(), span),\n fn,\n thisArg,\n span,\n );\n }\n}\n","import traverse from './utility/traverse.js';\nimport * as _ from './utility.js';\n\nfunction raw(payload, jsonBackup) {\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction selectFrames(frames, range) {\n var len = frames.length;\n if (len > range * 2) {\n return frames.slice(0, range).concat(frames.slice(len - range));\n }\n return frames;\n}\n\nfunction truncateFrames(payload, jsonBackup, range) {\n range = typeof range === 'undefined' ? 30 : range;\n var body = payload.data.body;\n var frames;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (const trace of chain) {\n frames = trace.frames;\n frames = selectFrames(frames, range);\n trace.frames = frames;\n }\n } else if (body.trace) {\n frames = body.trace.frames;\n frames = selectFrames(frames, range);\n body.trace.frames = frames;\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction maybeTruncateValue(len, val) {\n if (!val) {\n return val;\n }\n if (val.length > len) {\n return val.slice(0, len - 3).concat('...');\n }\n return val;\n}\n\nfunction truncateStrings(len, payload, jsonBackup) {\n function truncator(k, v, seen) {\n switch (_.typeName(v)) {\n case 'string':\n return maybeTruncateValue(len, v);\n case 'object':\n case 'array':\n return traverse(v, truncator, seen);\n default:\n return v;\n }\n }\n payload = traverse(payload, truncator);\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction truncateTraceData(traceData) {\n if (traceData.exception) {\n delete traceData.exception.description;\n traceData.exception.message = maybeTruncateValue(\n 255,\n traceData.exception.message,\n );\n }\n traceData.frames = selectFrames(traceData.frames, 1);\n return traceData;\n}\n\nfunction minBody(payload, jsonBackup) {\n var body = payload.data.body;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (const [index, trace] of chain.entries()) {\n chain[index] = truncateTraceData(trace);\n }\n } else if (body.trace) {\n body.trace = truncateTraceData(body.trace);\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction needsTruncation(payload, maxSize) {\n return _.maxByteSize(payload) > maxSize;\n}\n\nfunction truncate(payload, jsonBackup, maxSize) {\n maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize;\n var strategies = [\n raw,\n truncateFrames,\n truncateStrings.bind(null, 1024),\n truncateStrings.bind(null, 512),\n truncateStrings.bind(null, 256),\n minBody,\n ];\n var strategy, results, result;\n\n while ((strategy = strategies.shift())) {\n results = strategy(payload, jsonBackup);\n payload = results[0];\n result = results[1];\n if (result.error || !needsTruncation(result.value, maxSize)) {\n return result;\n }\n }\n return result;\n}\n\nexport default {\n truncate,\n\n /* for testing */\n raw,\n truncateFrames,\n truncateStrings,\n maybeTruncateValue,\n};\n","import * as _ from './utility.js';\n\nfunction buildPayload(data) {\n if (!_.isType(data.context, 'string')) {\n var contextResult = _.stringify(data.context);\n if (contextResult.error) {\n data.context = \"Error: could not serialize 'context'\";\n } else {\n data.context = contextResult.value || '';\n }\n if (data.context.length > 255) {\n data.context = data.context.substr(0, 255);\n }\n }\n return {\n data: data,\n };\n}\n\nfunction getTransportFromOptions(options, defaults, url) {\n var hostname = defaults.hostname;\n var protocol = defaults.protocol;\n var port = defaults.port;\n var path = defaults.path;\n var search = defaults.search;\n var timeout = options.timeout;\n var transport = detectTransport(options);\n\n var proxy = options.proxy;\n if (options.endpoint) {\n var opts = url.parse(options.endpoint);\n hostname = opts.hostname;\n protocol = opts.protocol;\n port = opts.port;\n path = opts.pathname;\n search = opts.search;\n }\n return {\n timeout: timeout,\n hostname: hostname,\n protocol: protocol,\n port: port,\n path: path,\n search: search,\n proxy: proxy,\n transport: transport,\n };\n}\n\nfunction detectTransport(options) {\n var gWindow =\n (typeof window !== 'undefined' && window) ||\n (typeof self !== 'undefined' && self);\n var transport = options.defaultTransport || 'xhr';\n if (typeof gWindow.fetch === 'undefined') transport = 'xhr';\n if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch';\n return transport;\n}\n\nfunction transportOptions(transport, method) {\n var protocol = transport.protocol || 'https:';\n var port =\n transport.port ||\n (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined);\n var hostname = transport.hostname;\n var path = transport.path;\n var timeout = transport.timeout;\n var transportAPI = transport.transport;\n if (transport.search) {\n path = path + transport.search;\n }\n if (transport.proxy) {\n path = protocol + '//' + hostname + path;\n hostname = transport.proxy.host || transport.proxy.hostname;\n port = transport.proxy.port;\n protocol = transport.proxy.protocol || protocol;\n }\n return {\n timeout: timeout,\n protocol: protocol,\n hostname: hostname,\n path: path,\n port: port,\n method: method,\n transport: transportAPI,\n };\n}\n\nfunction appendPathToPath(base, path) {\n var baseTrailingSlash = /\\/$/.test(base);\n var pathBeginningSlash = /^\\//.test(path);\n\n if (baseTrailingSlash && pathBeginningSlash) {\n path = path.substring(1);\n } else if (!baseTrailingSlash && !pathBeginningSlash) {\n path = '/' + path;\n }\n\n return base + path;\n}\n\nexport {\n buildPayload,\n getTransportFromOptions,\n transportOptions,\n appendPathToPath,\n};\n","import * as helpers from './apiUtility.js';\nimport { stringify, merge } from './utility.js';\n\nconst defaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/item/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\nconst OTLPDefaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/session/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\n/**\n * Api encapsulates methods of communicating with the Rollbar API. It is a\n * standard interface with some parts implemented differently for server or\n * browser contexts. It is an object that should be instantiated when used so\n * it can contain non-global options that may be different for another instance\n * of RollbarApi.\n */\nclass Api {\n /**\n * @param {Object} options - Configuration supplied from the parent Rollbar instance.\n * @param {string} options.accessToken - Token used to authenticate API calls.\n * @param {string} [options.endpoint] - Optional fully qualified URL overriding\n * the default `https://api.rollbar.com/api/1/item`.\n * @param {Object} [options.proxy] - Optional proxy descriptor containing:\n * `host`/`hostname` (required), `port`, and `protocol`.\n * @param {Object} transport - Adapter implementing `post` and `postJsonPayload`.\n * @param {Object} urllib - Minimal URL helper used for option normalization.\n * @param {Object} truncation - Optional truncation helper for payload size enforcement.\n */\n constructor(options, transport, urllib, truncation) {\n this.options = options;\n this.transport = transport;\n this.url = urllib;\n this.truncation = truncation;\n this.accessToken = options.accessToken;\n this.transportOptions = _getTransport(options, urllib);\n this.OTLPTransportOptions = _getOTLPTransport(options, urllib);\n }\n\n /**\n * Wraps transport.post in a Promise to support async/await\n *\n * @param {Object} options - Options for the API request\n * @param {string} options.accessToken - The access token for authentication\n * @param {Object} options.transportOptions - Options for the transport\n * @param {Object} options.payload - The data payload to send\n * @returns {Promise} A promise that resolves with the response or rejects with an error\n * @private\n */\n _postPromise({ accessToken, options, payload, headers }) {\n return new Promise((resolve, reject) => {\n this.transport.post({\n accessToken,\n options,\n payload,\n headers,\n callback: (err, resp) => (err ? reject(err) : resolve(resp)),\n });\n });\n }\n\n /**\n *\n * @param data\n * @param callback\n */\n postItem(data, callback) {\n const options = helpers.transportOptions(this.transportOptions, 'POST');\n const payload = helpers.buildPayload(data);\n\n // ensure the network request is scheduled after the current tick.\n setTimeout(() => {\n this.transport.post({\n accessToken: this.accessToken,\n options,\n payload,\n callback,\n });\n }, 0);\n }\n\n /**\n * Posts spans to the Rollbar API using the session endpoint\n *\n * @param {Array} payload - The spans to send\n * @returns {Promise} A promise that resolves with the API response\n */\n async postSpans(payload, headers = {}) {\n const options = helpers.transportOptions(this.OTLPTransportOptions, 'POST');\n\n return this._postPromise({\n accessToken: this.accessToken,\n options,\n payload,\n headers,\n });\n }\n\n /**\n *\n * @param data\n * @param callback\n */\n buildJsonPayload(data, callback) {\n const payload = helpers.buildPayload(data);\n\n let stringifyResult;\n if (this.truncation) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = stringify(payload);\n }\n\n if (stringifyResult.error) {\n if (callback) {\n callback(stringifyResult.error);\n }\n return null;\n }\n\n return stringifyResult.value;\n }\n\n /**\n *\n * @param jsonPayload\n * @param callback\n */\n postJsonPayload(jsonPayload, callback) {\n const transportOptions = helpers.transportOptions(\n this.transportOptions,\n 'POST',\n );\n this.transport.postJsonPayload(\n this.accessToken,\n transportOptions,\n jsonPayload,\n callback,\n );\n }\n\n configure(options) {\n const oldOptions = this.options;\n this.options = merge(oldOptions, options);\n this.transportOptions = _getTransport(this.options, this.url);\n this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url);\n if (this.options.accessToken !== undefined) {\n this.accessToken = this.options.accessToken;\n }\n return this;\n }\n}\n\nfunction _getTransport(options, url) {\n return helpers.getTransportFromOptions(options, defaultOptions, url);\n}\n\nfunction _getOTLPTransport(options, url) {\n options = { ...options, endpoint: options.tracing?.endpoint };\n return helpers.getTransportFromOptions(options, OTLPDefaultOptions, url);\n}\n\nexport default Api;\n","/**\n * Default options shared across platforms\n */\nexport const version = '3.0.0';\nexport const endpoint = 'api.rollbar.com/api/1/item/';\nexport const logLevel = 'debug';\nexport const reportLevel = 'debug';\nexport const uncaughtErrorLevel = 'error';\nexport const maxItems = 0;\nexport const itemsPerMin = 60;\n\nexport const commonScrubFields = [\n 'pw',\n 'pass',\n 'passwd',\n 'password',\n 'secret',\n 'confirm_password',\n 'confirmPassword',\n 'password_confirmation',\n 'passwordConfirmation',\n 'access_token',\n 'accessToken',\n 'X-Rollbar-Access-Token',\n 'secret_key',\n 'secretKey',\n 'secretToken',\n];\n\nexport const apiScrubFields = [\n 'api_key',\n 'authenticity_token',\n 'oauth_token',\n 'token',\n 'user_session_secret',\n];\n\nexport const requestScrubFields = [\n 'request.session.csrf',\n 'request.session._csrf',\n 'request.params._csrf',\n 'request.cookie',\n 'request.cookies',\n];\n\nexport const commonScrubHeaders = [\n 'authorization',\n 'www-authorization',\n 'http_authorization',\n 'omniauth.auth',\n 'cookie',\n 'oauth-access-token',\n 'x-access-token',\n 'x_csrf_token',\n 'http_x_csrf_token',\n 'x-csrf-token',\n];\n\n// For backward compatibility with default export\nexport default {\n version,\n endpoint,\n logLevel,\n reportLevel,\n uncaughtErrorLevel,\n maxItems,\n itemsPerMin,\n};\n","const FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\nfunction parse(error, options) {\n if (typeof error.stacktrace !== \"undefined\" || typeof error[\"opera#sourceloc\"] !== \"undefined\")\n return parseOpera(error, options);\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIE(error, options);\n else if (error.stack)\n return parseFFOrSafari(error, options);\n else if (options?.allowEmpty)\n return [];\n else\n throw new Error(\"Cannot parse given Error object\");\n}\nfunction parseStack(stackString, options) {\n if (stackString.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIeString(stackString, options);\n else\n return parseFFOrSafariString(stackString, options);\n}\nfunction extractLocation(urlLike) {\n if (!urlLike.includes(\":\"))\n return [urlLike, undefined, undefined];\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n const parts = regExp.exec(urlLike.replace(/[()]/g, \"\"));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n}\nfunction applySlice(lines, options) {\n if (options && options.slice != null) {\n if (Array.isArray(options.slice))\n return lines.slice(options.slice[0], options.slice[1]);\n return lines.slice(0, options.slice);\n }\n return lines;\n}\nfunction parseV8OrIE(error, options) {\n return parseV8OrIeString(error.stack, options);\n}\nfunction parseV8OrIeString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\"(eval \")) {\n line = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(,.*$)/g, \"\");\n }\n let sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\").replace(/^.*?\\s+/, \"\");\n const location = sanitizedLine.match(/ (\\(.+\\)$)/);\n sanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n const locationParts = extractLocation(location ? location[1] : sanitizedLine);\n const functionName = location && sanitizedLine || undefined;\n const fileName = [\"eval\", \"\"].includes(locationParts[0]) ? undefined : locationParts[0];\n return {\n function: functionName,\n file: fileName,\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\nfunction parseFFOrSafari(error, options) {\n return parseFFOrSafariString(error.stack, options);\n}\nfunction parseFFOrSafariString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\" > eval\"))\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, \":$1\");\n if (!line.includes(\"@\") && !line.includes(\":\")) {\n return {\n function: line\n };\n } else {\n const functionNameRegex = /(([^\\n\\r\"\\u2028\\u2029]*\".[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*(?:@[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*)*(?:[\\n\\r\\u2028\\u2029][^@]*)?)?[^@]*)@/;\n const matches = line.match(functionNameRegex);\n const functionName = matches && matches[1] ? matches[1] : undefined;\n const locationParts = extractLocation(line.replace(functionNameRegex, \"\"));\n return {\n function: functionName,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n }\n });\n}\nfunction parseOpera(e, options) {\n if (!e.stacktrace || e.message.includes(\"\\n\") && e.message.split(\"\\n\").length > e.stacktrace.split(\"\\n\").length)\n return parseOpera9(e);\n else if (!e.stack)\n return parseOpera10(e);\n else\n return parseOpera11(e, options);\n}\nfunction parseOpera9(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n const lines = e.message.split(\"\\n\");\n const result = [];\n for (let i = 2, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n file: match[2],\n line: +match[1],\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera10(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n const lines = e.stacktrace.split(\"\\n\");\n const result = [];\n for (let i = 0, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n function: match[3] || undefined,\n file: match[2],\n line: match[1] ? +match[1] : undefined,\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera11(error, options) {\n const filtered = applySlice(\n // @ts-expect-error missing stack property\n error.stack.split(\"\\n\").filter((line) => {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }),\n options\n );\n return filtered.map((line) => {\n const tokens = line.split(\"@\");\n const locationParts = extractLocation(tokens.pop());\n const functionCall = tokens.shift() || \"\";\n const functionName = functionCall.replace(//, \"$2\").replace(/\\([^)]*\\)/g, \"\") || undefined;\n let argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/))\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, \"$1\");\n const args = argsRaw === undefined || argsRaw === \"[arguments not available]\" ? undefined : argsRaw.split(\",\");\n return {\n function: functionName,\n args,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\n\nexport { extractLocation, parse, parseFFOrSafari, parseFFOrSafariString, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseStack, parseV8OrIE, parseV8OrIeString };\n","import { parse as parse$1, parseV8OrIE as parseV8OrIE$1, parseFFOrSafari as parseFFOrSafari$1, parseOpera as parseOpera$1, parseOpera9 as parseOpera9$1, parseOpera10 as parseOpera10$1, parseOpera11 as parseOpera11$1 } from './lite.mjs';\nexport { extractLocation } from './lite.mjs';\n\nfunction stackframesLiteToStackframes(liteStackframes) {\n return liteStackframes.map((liteStackframe) => {\n return {\n functionName: liteStackframe.function,\n args: liteStackframe.args,\n fileName: liteStackframe.file,\n lineNumber: liteStackframe.line,\n columnNumber: liteStackframe.col,\n source: liteStackframe.raw\n };\n });\n}\nfunction parse(error, options) {\n return stackframesLiteToStackframes(parse$1(error, options));\n}\nfunction parseV8OrIE(error) {\n return stackframesLiteToStackframes(parseV8OrIE$1(error));\n}\nfunction parseFFOrSafari(error) {\n return stackframesLiteToStackframes(parseFFOrSafari$1(error));\n}\nfunction parseOpera(e) {\n return stackframesLiteToStackframes(parseOpera$1(e));\n}\nfunction parseOpera9(e) {\n return stackframesLiteToStackframes(parseOpera9$1(e));\n}\nfunction parseOpera10(e) {\n return stackframesLiteToStackframes(parseOpera10$1(e));\n}\nfunction parseOpera11(error) {\n return stackframesLiteToStackframes(parseOpera11$1(error));\n}\n\nexport { parse, parseFFOrSafari, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseV8OrIE };\n","import { parse as parseErrorStack } from 'error-stack-parser-es';\n\nvar UNKNOWN_FUNCTION = '?';\nvar ERR_CLASS_REGEXP = new RegExp(\n '^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): ',\n);\n\nfunction guessFunctionName() {\n return UNKNOWN_FUNCTION;\n}\n\nfunction gatherContext() {\n return null;\n}\n\nfunction Frame(stackFrame) {\n var data = {};\n\n data._stackFrame = stackFrame;\n\n data.url = stackFrame.fileName;\n data.line = stackFrame.lineNumber;\n data.func = stackFrame.functionName;\n data.column = stackFrame.columnNumber;\n data.args = stackFrame.args;\n\n data.context = gatherContext();\n\n return data;\n}\n\nfunction Stack(exception, skip) {\n function getStack() {\n var parserStack = [];\n\n skip = skip || 0;\n\n try {\n parserStack = parseErrorStack(exception);\n } catch (_e) {\n parserStack = [];\n }\n\n var stack = [];\n\n for (var i = skip; i < parserStack.length; i++) {\n stack.push(new Frame(parserStack[i]));\n }\n\n return stack;\n }\n\n return {\n stack: getStack(),\n message: exception.message,\n name: _mostSpecificErrorName(exception),\n rawStack: exception.stack,\n rawException: exception,\n };\n}\n\nfunction parse(e, skip) {\n var err = e;\n\n if (err.nested || err.cause) {\n var traceChain = [];\n while (err) {\n traceChain.push(new Stack(err, skip));\n err = err.nested || err.cause;\n\n skip = 0; // Only apply skip value to primary error\n }\n\n // Return primary error with full trace chain attached.\n traceChain[0].traceChain = traceChain;\n return traceChain[0];\n } else {\n return new Stack(err, skip);\n }\n}\n\nfunction guessErrorClass(errMsg) {\n if (!errMsg || !errMsg.match) {\n return ['Unknown error. There was no error message to display.', ''];\n }\n var errClassMatch = errMsg.match(ERR_CLASS_REGEXP);\n var errClass = '(unknown)';\n\n if (errClassMatch) {\n errClass = errClassMatch[errClassMatch.length - 1];\n errMsg = errMsg.replace(\n (errClassMatch[errClassMatch.length - 2] || '') + errClass + ':',\n '',\n );\n errMsg = errMsg.replace(/(^[\\s]+|[\\s]+$)/g, '');\n }\n return [errClass, errMsg];\n}\n\n// * Prefers any value over an empty string\n// * Prefers any value over 'Error' where possible\n// * Prefers name over constructor.name when both are more specific than 'Error'\nfunction _mostSpecificErrorName(error) {\n var name = error.name && error.name.length && error.name;\n var constructorName =\n error.constructor.name &&\n error.constructor.name.length &&\n error.constructor.name;\n\n if (!name || !constructorName) {\n return name || constructorName;\n }\n\n if (name === 'Error') {\n return constructorName;\n }\n return name;\n}\n\nexport default {\n guessFunctionName,\n guessErrorClass,\n gatherContext,\n parse,\n Stack,\n Frame,\n};\n","import * as _ from './utility.js';\n\nfunction checkLevel(item, settings) {\n var level = item.level;\n var levelVal = _.LEVELS[level] || 0;\n var reportLevel = settings.reportLevel;\n var reportLevelVal = _.LEVELS[reportLevel] || 0;\n\n if (levelVal < reportLevelVal) {\n return false;\n }\n return true;\n}\n\nfunction userCheckIgnore(logger) {\n return function (item, settings) {\n var isUncaught = Boolean(item._isUncaught);\n delete item._isUncaught;\n var args = item._originalArgs;\n delete item._originalArgs;\n try {\n if (_.isFunction(settings.onSendCallback)) {\n settings.onSendCallback(isUncaught, args, item);\n }\n } catch (e) {\n settings.onSendCallback = null;\n logger.error('Error while calling onSendCallback, removing', e);\n }\n try {\n if (\n _.isFunction(settings.checkIgnore) &&\n settings.checkIgnore(isUncaught, args, item)\n ) {\n return false;\n }\n } catch (e) {\n settings.checkIgnore = null;\n logger.error('Error while calling custom checkIgnore(), removing', e);\n }\n return true;\n };\n}\n\nfunction urlIsNotBlockListed(logger) {\n return function (item, settings) {\n return !urlIsOnAList(item, settings, 'blocklist', logger);\n };\n}\n\nfunction urlIsSafeListed(logger) {\n return function (item, settings) {\n return urlIsOnAList(item, settings, 'safelist', logger);\n };\n}\n\nfunction matchFrames(trace, list, block) {\n if (!trace) {\n return !block;\n }\n\n var frames = trace.frames;\n\n if (!frames || frames.length === 0) {\n return !block;\n }\n\n var frame, filename, url, urlRegex;\n var listLength = list.length;\n var frameLength = frames.length;\n for (var i = 0; i < frameLength; i++) {\n frame = frames[i];\n filename = frame.filename;\n\n if (!_.isType(filename, 'string')) {\n return !block;\n }\n\n for (var j = 0; j < listLength; j++) {\n url = list[j];\n urlRegex = new RegExp(url);\n\n if (urlRegex.test(filename)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction urlIsOnAList(item, settings, safeOrBlock, logger) {\n // safelist is the default\n var block = false;\n if (safeOrBlock === 'blocklist') {\n block = true;\n }\n\n var list, traces;\n try {\n list = block ? settings.hostBlockList : settings.hostSafeList;\n traces = _.get(item, 'body.trace_chain') || [_.get(item, 'body.trace')];\n\n // These two checks are important to come first as they are defaults\n // in case the list is missing or the trace is missing or not well-formed\n if (!list || list.length === 0) {\n return !block;\n }\n if (traces.length === 0 || !traces[0]) {\n return !block;\n }\n\n var tracesLength = traces.length;\n for (var i = 0; i < tracesLength; i++) {\n if (matchFrames(traces[i], list, block)) {\n return true;\n }\n }\n } catch (\n e\n /* istanbul ignore next */\n ) {\n if (block) {\n settings.hostBlockList = null;\n } else {\n settings.hostSafeList = null;\n }\n var listName = block ? 'hostBlockList' : 'hostSafeList';\n logger.error(\n \"Error while reading your configuration's \" +\n listName +\n ' option. Removing custom ' +\n listName +\n '.',\n e,\n );\n return !block;\n }\n return false;\n}\n\nfunction messageIsIgnored(logger) {\n return function (item, settings) {\n var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages;\n\n try {\n messageIsIgnored = false;\n ignoredMessages = settings.ignoredMessages;\n\n if (!ignoredMessages || ignoredMessages.length === 0) {\n return true;\n }\n\n messages = messagesFromItem(item);\n\n if (messages.length === 0) {\n return true;\n }\n\n len = ignoredMessages.length;\n for (i = 0; i < len; i++) {\n rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi');\n\n for (j = 0; j < messages.length; j++) {\n messageIsIgnored = rIgnoredMessage.test(messages[j]);\n\n if (messageIsIgnored) {\n return false;\n }\n }\n }\n } catch (\n _e\n /* istanbul ignore next */\n ) {\n settings.ignoredMessages = null;\n logger.error(\n \"Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages.\",\n );\n }\n\n return true;\n };\n}\n\nfunction messagesFromItem(item) {\n var body = item.body;\n var messages = [];\n\n // The payload schema only allows one of trace_chain, message, or trace.\n // However, existing test cases are based on having both trace and message present.\n // So here we preserve the ability to collect strings from any combination of these keys.\n if (body.trace_chain) {\n var traceChain = body.trace_chain;\n for (const trace of traceChain) {\n messages.push(_.get(trace, 'exception.message'));\n }\n }\n if (body.trace) {\n messages.push(_.get(body, 'trace.exception.message'));\n }\n if (body.message) {\n messages.push(_.get(body, 'message.body'));\n }\n return messages;\n}\n\nexport {\n checkLevel,\n userCheckIgnore,\n urlIsNotBlockListed,\n urlIsSafeListed,\n messageIsIgnored,\n};\n","import { merge, isFunction } from './utility.js';\n\n/*\n * Notifier - delegates between the client exposed API, the chain of transforms\n * necessary to turn an item into something that can be sent to Rollbar, and the\n * queue which handles the communcation with the Rollbar API servers.\n */\nexport default class Notifier {\n /**\n *\n * @param {Object} queue - an object that conforms to the interface:\n * `addItem(item, callback)`\n * @param {Object} options - an object representing the options to be set for\n * this notifier, this should have any defaults already set by the caller\n */\n constructor(queue, options) {\n this.queue = queue;\n this.options = options;\n this.transforms = [];\n this.diagnostic = {};\n }\n\n /**\n * configure - updates the options for this notifier with the passed in object\n *\n * @param {Object} options - an object which gets merged with the current\n * options set on this notifier\n * @returns this\n */\n configure(options) {\n this.queue?.configure(options);\n const oldOptions = this.options;\n this.options = merge(oldOptions, options);\n return this;\n }\n\n /**\n * Adds a transform onto the end of the queue of transforms for this notifier\n *\n * @param {Function} transform - a function which takes three arguments:\n * - item: An Object representing the data to eventually be sent to Rollbar\n * - options: The current value of the options for this notifier\n * - callback: `function(err: (Null|Error), item: (Null|Object))` the\n * transform must call this callback with a null value for error if it\n * wants the processing chain to continue, otherwise with an error to\n * terminate the processing. The item should be the updated item after\n * this transform is finished modifying it.\n */\n addTransform(transform) {\n if (isFunction(transform)) {\n this.transforms.push(transform);\n }\n return this;\n }\n\n /**\n * The internal log function which applies the configured transforms and then\n * pushes onto the queue to be sent to the backend.\n *\n * @param {Object} item - An object with the following structure:\n * - message [String] - An optional string to be sent to rollbar\n * - error [Error] - An optional error\n * @param {Function} callback - A function of type `function(err, resp)` which\n * will be called with exactly one null argument and one non-null argument.\n * The callback will be called once, either during the transform stage if\n * an error occurs inside a transform, or in response to the communication\n * with the backend. The second argument will be the response from the\n * backend in case of success.\n */\n log(item, callback) {\n callback = isFunction(callback) ? callback : () => {};\n\n if (!this.options.enabled) {\n return callback(new Error('Rollbar is not enabled'), null);\n }\n\n this.queue.addPendingItem(item);\n const originalError = item.err;\n this._applyTransforms(item, (err, i) => {\n if (err) {\n this.queue.removePendingItem(item);\n return callback(err, null);\n }\n this.queue.addItem(i, callback, originalError, item);\n });\n }\n\n /* Internal */\n\n /**\n * Applies the transforms that have been added to this notifier sequentially.\n * See `addTransform` for more information.\n *\n * @param {Object} item - An item to be transformed\n * @param {Function} callback - A function of type `function(err, item)` which\n * will be called with a non-null error and a null item in the case of a\n * transform failure, or a null error and non-null item after all\n * transforms have been applied.\n */\n _applyTransforms(item, callback) {\n let transformIndex = -1;\n const transformsLength = this.transforms.length;\n const transforms = this.transforms;\n const options = this.options;\n\n const next = (err, i) => {\n if (err) {\n callback(err, null);\n return;\n }\n\n transformIndex++;\n\n if (transformIndex === transformsLength) {\n callback(null, i);\n return;\n }\n\n transforms[transformIndex](i, options, next);\n };\n\n next(null, item);\n }\n}\n","import * as _ from './utility.js';\n\n/**\n * Queue - an object which handles which handles a queue of items to be sent to Rollbar.\n * This object handles rate limiting via a passed in rate limiter, retries based on connection\n * errors, and filtering of items based on a set of configurable predicates. The communication to\n * the backend is performed via a given API object.\n */\nclass Queue {\n /**\n * @param rateLimiter - An object which conforms to the interface\n * `rateLimiter.shouldSend(item) -> bool`\n * @param api - An object which conforms to the interface\n * `api.postItem(payload, function(err, response))`\n * @param logger - An object used to log verbose messages if desired\n * @param options - see `Queue.prototype.configure`\n * @param replay - Optional `Replay` for coordinating session replay with error occurrences\n */\n constructor(rateLimiter, api, logger, options, replay) {\n this.rateLimiter = rateLimiter;\n this.api = api;\n this.logger = logger;\n this.options = options;\n this.replay = replay;\n this.predicates = [];\n this.pendingItems = [];\n this.pendingRequests = [];\n this.retryQueue = [];\n this.retryHandle = null;\n this.waitCallback = null;\n this.waitIntervalID = null;\n }\n\n /**\n * configure - updates the options this queue uses\n *\n * @param options\n */\n configure(options) {\n this.api?.configure(options);\n const oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n return this;\n }\n\n /**\n * addPredicate - adds a predicate to the end of the list of predicates for this queue\n *\n * @param predicate - function(item, options) -> (bool|{err: Error})\n * Returning true means that this predicate passes and the item is okay to go on the queue\n * Returning false means do not add the item to the queue, but it is not an error\n * Returning {err: Error} means do not add the item to the queue, and the given error explains why\n * Returning {err: undefined} is equivalent to returning true but don't do that\n */\n addPredicate(predicate) {\n if (_.isFunction(predicate)) {\n this.predicates.push(predicate);\n }\n return this;\n }\n\n addPendingItem(item) {\n this.pendingItems.push(item);\n }\n\n removePendingItem(item) {\n const idx = this.pendingItems.indexOf(item);\n if (idx !== -1) {\n this.pendingItems.splice(idx, 1);\n }\n }\n\n /**\n * addItem - Send an item to the Rollbar API if all of the predicates are satisfied\n *\n * @param item - Item instance with the payload to send to the backend\n * @param callback - function(error, repsonse) which will be called with the response from the API\n * in the case of a success, otherwise response will be null and error will have a value. If both\n * error and response are null then the item was stopped by a predicate which did not consider this\n * to be an error condition, but nonetheless did not send the item to the API.\n * @param originalError - The original error before any transformations that is to be logged if any\n * @param originalItem - The original item before transforms, used in pendingItems queue\n */\n addItem(item, callback, originalError, originalItem) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {\n return;\n };\n }\n const data = item.data;\n const predicateResult = this._applyPredicates(data);\n if (predicateResult.stop) {\n this.removePendingItem(originalItem);\n callback(predicateResult.err);\n return;\n }\n this._maybeLog(data, originalError);\n this.removePendingItem(originalItem);\n if (!this.options.transmit) {\n callback(new Error('Transmit disabled'));\n return;\n }\n\n if (this.replay && data.body) {\n item.replayId = this.replay.capture(null, data.uuid, {\n type: 'occurrence',\n level: item.level,\n });\n\n if (item.replayId) {\n _.addItemAttributes(item.data, [\n { key: 'replay_id', value: item.replayId },\n ]);\n }\n }\n\n this.pendingRequests.push(data);\n try {\n this._makeApiRequest(data, (err, resp, headers) => {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers);\n }\n\n callback(err, resp);\n });\n } catch (err) {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay?.discard(item.replayId);\n }\n\n callback(err);\n }\n }\n\n /**\n * wait - Stop any further errors from being added to the queue, and get called back when all items\n * currently processing have finished sending to the backend.\n *\n * @param callback - function() called when all pending items have been sent\n */\n wait(callback) {\n if (!_.isFunction(callback)) {\n return;\n }\n this.waitCallback = callback;\n if (this._maybeCallWait()) {\n return;\n }\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitIntervalID = setInterval(() => {\n this._maybeCallWait();\n }, 500);\n }\n\n /**\n * Sequentially applies the predicates that have been added to the queue to the\n * given item with the currently configured options.\n *\n * @param item - An item in the queue\n * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue,\n * the error value should be passed up to a callbak if we are stopping.\n */\n _applyPredicates(item) {\n let p = null;\n for (let i = 0, len = this.predicates.length; i < len; i++) {\n p = this.predicates[i](item, this.options);\n if (!p || p.err !== undefined) {\n return { stop: true, err: p.err };\n }\n }\n return { stop: false, err: null };\n }\n\n /**\n * Send an item to Rollbar, callback when done, if there is an error make an\n * effort to retry if we are configured to do so.\n *\n * @param item - an item ready to send to the backend\n * @param callback - function(err, response)\n */\n _makeApiRequest(item, callback) {\n const rateLimitResponse = this.rateLimiter.shouldSend(item);\n if (rateLimitResponse.shouldSend) {\n this.api.postItem(item, (err, resp, headers) => {\n if (err) {\n this._maybeRetry(err, item, callback);\n } else {\n callback(err, resp, headers);\n }\n });\n } else if (rateLimitResponse.error) {\n callback(rateLimitResponse.error);\n } else {\n this.api.postItem(rateLimitResponse.payload, callback);\n }\n }\n\n // These are errors basically mean there is no internet connection\n static RETRIABLE_ERRORS = [\n 'ECONNRESET',\n 'ENOTFOUND',\n 'ESOCKETTIMEDOUT',\n 'ETIMEDOUT',\n 'ECONNREFUSED',\n 'EHOSTUNREACH',\n 'EPIPE',\n 'EAI_AGAIN',\n ];\n\n /**\n * Given the error returned by the API, decide if we should retry or just callback\n * with the error.\n *\n * @param err - an error returned by the API transport\n * @param item - the item that was trying to be sent when this error occured\n * @param callback - function(err, response)\n */\n _maybeRetry(err, item, callback) {\n let shouldRetry = false;\n if (this.options.retryInterval) {\n for (let i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) {\n if (err.code === Queue.RETRIABLE_ERRORS[i]) {\n shouldRetry = true;\n break;\n }\n }\n if (shouldRetry && _.isFiniteNumber(this.options.maxRetries)) {\n item.retries = item.retries ? item.retries + 1 : 1;\n if (item.retries > this.options.maxRetries) {\n shouldRetry = false;\n }\n }\n }\n if (shouldRetry) {\n this._retryApiRequest(item, callback);\n } else {\n callback(err);\n }\n }\n\n /**\n * Add an item and a callback to a queue and possibly start a timer to process\n * that queue based on the retryInterval in the options for this queue.\n *\n * @param item - an item that failed to send due to an error we deem retriable\n * @param callback - function(err, response)\n */\n _retryApiRequest(item, callback) {\n this.retryQueue.push({ item, callback });\n\n if (!this.retryHandle) {\n this.retryHandle = setInterval(() => {\n while (this.retryQueue.length) {\n const retryObject = this.retryQueue.shift();\n this._makeApiRequest(retryObject.item, retryObject.callback);\n }\n }, this.options.retryInterval);\n }\n }\n\n /**\n * Removes the item from the pending request queue, this queue is used to\n * enable to functionality of providing a callback that clients can pass to `wait` to be notified\n * when the pending request queue has been emptied. This must be called when the API finishes\n * processing this item. If a `wait` callback is configured, it is called by this function.\n *\n * @param item - the item previously added to the pending request queue\n */\n _dequeuePendingRequest(item) {\n const idx = this.pendingRequests.indexOf(item);\n if (idx !== -1) {\n this.pendingRequests.splice(idx, 1);\n this._maybeCallWait();\n }\n }\n\n _maybeLog(data, originalError) {\n if (this.logger && this.options.verbose) {\n let message =\n originalError ||\n _.get(data, 'body.trace.exception.message') ||\n _.get(data, 'body.trace_chain.0.exception.message');\n if (message) {\n this.logger.error(message);\n return;\n }\n message = _.get(data, 'body.message.body');\n if (message) {\n this.logger.log(message);\n }\n }\n }\n\n _maybeCallWait() {\n if (\n _.isFunction(this.waitCallback) &&\n this.pendingItems.length === 0 &&\n this.pendingRequests.length === 0\n ) {\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitCallback();\n return true;\n }\n return false;\n }\n}\n\nexport default Queue;\n","/*\n * RateLimiter - encapsulates the logic for counting items sent to Rollbar.\n *\n * @param options - the same options that are accepted by configureGlobal offered as a convenience\n */\nclass RateLimiter {\n static globalSettings = {\n startTime: Date.now(),\n maxItems: undefined,\n itemsPerMinute: undefined,\n };\n\n constructor(options = {}) {\n this.startTime = Date.now();\n this.counter = 0;\n this.perMinCounter = 0;\n this.platform = null;\n this.platformOptions = {};\n this.configureGlobal(options);\n }\n\n /*\n * configureGlobal - set the global rate limiter options\n *\n * @param options - Only the following values are recognized:\n * startTime: a timestamp of the form returned by (new Date()).getTime()\n * maxItems: the maximum items\n * itemsPerMinute: the max number of items to send in a given minute\n */\n configureGlobal(options = {}) {\n const { startTime, maxItems, itemsPerMinute } = options;\n\n if (startTime !== undefined) {\n RateLimiter.globalSettings.startTime = startTime;\n }\n if (maxItems !== undefined) {\n RateLimiter.globalSettings.maxItems = maxItems;\n }\n if (itemsPerMinute !== undefined) {\n RateLimiter.globalSettings.itemsPerMinute = itemsPerMinute;\n }\n }\n\n /*\n * shouldSend - determine if we should send a given item based on rate limit settings\n *\n * @param item - the item we are about to send\n * @returns An object with the following structure:\n * error: (Error|null)\n * shouldSend: bool\n * payload: (Object|null)\n * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and\n * exactly one of error or payload will be non-null. If error is non-null, the returned Error will\n * describe the situation, but it means that we were already over a rate limit (either globally or\n * per minute) when this item was checked. If error is null, and therefore payload is non-null, it\n * means this item put us over the global rate limit and the payload should be sent to Rollbar in\n * place of the passed in item.\n */\n shouldSend(item, now = Date.now()) {\n const elapsedTime = now - this.startTime;\n if (elapsedTime < 0 || elapsedTime >= 60000) {\n this.startTime = now;\n this.perMinCounter = 0;\n }\n\n const globalRateLimit = RateLimiter.globalSettings.maxItems;\n const globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute;\n\n if (checkRate(item, globalRateLimit, this.counter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n `${globalRateLimit} max items reached`,\n false,\n );\n }\n\n if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n `${globalRateLimitPerMin} items per minute reached`,\n false,\n );\n }\n\n this.counter += 1;\n this.perMinCounter += 1;\n\n const underGlobalLimit = !checkRate(item, globalRateLimit, this.counter);\n const perMinute = underGlobalLimit;\n const shouldSend =\n underGlobalLimit &&\n !checkRate(item, globalRateLimitPerMin, this.perMinCounter);\n\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n null,\n shouldSend,\n globalRateLimit,\n globalRateLimitPerMin,\n perMinute,\n );\n }\n\n setPlatformOptions(platform, options) {\n this.platform = platform;\n this.platformOptions = options;\n }\n}\n\n/* Helpers */\n\nfunction checkRate(item, limit, counter) {\n return !item.ignoreRateLimit && limit >= 1 && counter > limit;\n}\n\nfunction shouldSendValue(\n platform,\n options,\n error,\n shouldSend,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n let payload = null;\n const errorResult = error ? new Error(error) : null;\n\n if (!errorResult && !shouldSend) {\n payload = rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n );\n }\n\n return { error: errorResult, shouldSend, payload };\n}\n\nfunction rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n const environment =\n options.environment || (options.payload && options.payload.environment);\n const msg = perMinute\n ? 'item per minute limit reached, ignoring errors until timeout'\n : 'maxItems has been hit, ignoring errors until reset.';\n const item = {\n body: {\n message: {\n body: msg,\n extra: {\n maxItems: globalRateLimit,\n itemsPerMinute: limitPerMin,\n },\n },\n },\n language: 'javascript',\n environment: environment,\n notifier: {\n version:\n (options.notifier && options.notifier.version) || options.version,\n },\n };\n if (platform === 'browser') {\n item.platform = 'browser';\n item.framework = 'browser-js';\n item.notifier.name = 'rollbar-browser-js';\n } else if (platform === 'server') {\n item.framework = options.framework || 'node-js';\n item.notifier.name = options.notifier.name;\n } else if (platform === 'react-native') {\n item.framework = options.framework || 'react-native';\n item.notifier.name = options.notifier.name;\n }\n return item;\n}\n\nexport default RateLimiter;\n","import Notifier from './notifier.js';\nimport Queue from './queue.js';\nimport RateLimiter from './rateLimiter.js';\nimport * as _ from './utility.js';\n\n/*\n * Rollbar - the interface to Rollbar\n *\n * @param options\n * @param api\n * @param logger\n */\nfunction Rollbar(options, api, logger, telemeter, tracing, replay, platform) {\n this.options = _.merge(options);\n this.logger = logger;\n Rollbar.rateLimiter.configureGlobal(this.options);\n Rollbar.rateLimiter.setPlatformOptions(platform, this.options);\n this.api = api;\n this.queue = new Queue(\n Rollbar.rateLimiter,\n api,\n logger,\n this.options,\n replay,\n );\n\n this.tracing = tracing;\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is created\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier = new Notifier(this.queue, this.options);\n this.telemeter = telemeter;\n setStackTraceLimit(options);\n this.lastError = null;\n this.lastErrorHash = 'none';\n}\n\nvar defaultOptions = {\n maxItems: 0,\n itemsPerMinute: 60,\n};\n\nRollbar.rateLimiter = new RateLimiter(defaultOptions);\n\nRollbar.prototype.global = function (options) {\n Rollbar.rateLimiter.configureGlobal(options);\n return this;\n};\n\nRollbar.prototype.configure = function (options, payloadData) {\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.merge(oldOptions, options, payload);\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is configured\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier && this.notifier.configure(this.options);\n this.telemeter && this.telemeter.configure(this.options);\n setStackTraceLimit(options);\n this.global(this.options);\n\n if (validateTracer(options.tracer)) {\n this.tracer = options.tracer;\n }\n\n return this;\n};\n\nRollbar.prototype.log = function (item) {\n var level = this._defaultLogLevel();\n return this._log(level, item);\n};\n\nRollbar.prototype.debug = function (item) {\n this._log('debug', item);\n};\n\nRollbar.prototype.info = function (item) {\n this._log('info', item);\n};\n\nRollbar.prototype.warn = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.warning = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.error = function (item) {\n this._log('error', item);\n};\n\nRollbar.prototype.critical = function (item) {\n this._log('critical', item);\n};\n\nRollbar.prototype.wait = function (callback) {\n this.queue.wait(callback);\n};\n\nRollbar.prototype.captureEvent = function (type, metadata, level) {\n return this.telemeter && this.telemeter.captureEvent(type, metadata, level);\n};\n\nRollbar.prototype.captureDomContentLoaded = function (ts) {\n return this.telemeter && this.telemeter.captureDomContentLoaded(ts);\n};\n\nRollbar.prototype.captureLoad = function (ts) {\n return this.telemeter && this.telemeter.captureLoad(ts);\n};\n\nRollbar.prototype.buildJsonPayload = function (item) {\n return this.api.buildJsonPayload(item);\n};\n\nRollbar.prototype.sendJsonPayload = function (jsonPayload) {\n this.api.postJsonPayload(jsonPayload);\n};\n\n/* Internal */\n\nRollbar.prototype._log = function (defaultLevel, item) {\n var callback;\n if (item.callback) {\n callback = item.callback;\n delete item.callback;\n }\n if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) {\n if (callback) {\n var error = new Error('ignored identical item');\n error.item = item;\n callback(error);\n }\n return;\n }\n try {\n item.level = item.level || defaultLevel;\n\n this._addItemAttributes(item);\n\n // Legacy OpenTracing support\n this._addTracingInfo(item);\n\n const telemeter = this.telemeter;\n if (telemeter) {\n telemeter._captureRollbarItem(item);\n item.telemetryEvents = telemeter.copyEvents() || [];\n }\n\n this.notifier.log(item, callback);\n } catch (e) {\n if (callback) {\n callback(e);\n }\n this.logger.error(e);\n }\n};\n\nRollbar.prototype._addItemAttributes = function (item) {\n const span = this.tracing?.getSpan();\n\n const attributes = [\n { key: 'session_id', value: this.tracing?.sessionId },\n { key: 'span_id', value: span?.spanId },\n { key: 'trace_id', value: span?.traceId },\n ];\n if (item._isUncaught) {\n attributes.push({ key: 'is_uncaught', value: 'true' });\n }\n _.addItemAttributes(item.data, attributes);\n\n span?.addEvent('rollbar.occurrence', [\n { key: 'rollbar.occurrence.uuid', value: item.uuid },\n ]);\n};\n\nRollbar.prototype._defaultLogLevel = function () {\n return this.options.logLevel || 'debug';\n};\n\nRollbar.prototype._sameAsLastError = function (item) {\n if (!item._isUncaught) {\n return false;\n }\n var itemHash = generateItemHash(item);\n if (this.lastErrorHash === itemHash) {\n return true;\n }\n this.lastError = item.err;\n this.lastErrorHash = itemHash;\n return false;\n};\n\nRollbar.prototype._addTracingInfo = function (item) {\n // Tracer validation occurs in the constructor\n // or in the Rollbar.prototype.configure methods\n if (this.tracer) {\n // add rollbar occurrence uuid to span\n var span = this.tracer.scope().active();\n\n if (validateSpan(span)) {\n span.setTag('rollbar.error_uuid', item.uuid);\n span.setTag('rollbar.has_error', true);\n span.setTag('error', true);\n span.setTag(\n 'rollbar.item_url',\n `https://rollbar.com/item/uuid/?uuid=${item.uuid}`,\n );\n span.setTag(\n 'rollbar.occurrence_url',\n `https://rollbar.com/occurrence/uuid/?uuid=${item.uuid}`,\n );\n\n // add span ID & trace ID to occurrence\n var opentracingSpanId = span.context().toSpanId();\n var opentracingTraceId = span.context().toTraceId();\n\n if (item.custom) {\n item.custom.opentracing_span_id = opentracingSpanId;\n item.custom.opentracing_trace_id = opentracingTraceId;\n } else {\n item.custom = {\n opentracing_span_id: opentracingSpanId,\n opentracing_trace_id: opentracingTraceId,\n };\n }\n }\n }\n};\n\nfunction generateItemHash(item) {\n var message = item.message || '';\n var stack = (item.err || {}).stack || String(item.err);\n return message + '::' + stack;\n}\n\n// Node.js, Chrome, Safari, and some other browsers support this property\n// which globally sets the number of stack frames returned in an Error object.\n// If a browser can't use it, no harm done.\nfunction setStackTraceLimit(options) {\n if (options.stackTraceLimit) {\n Error.stackTraceLimit = options.stackTraceLimit;\n }\n}\n\n/**\n * Validate the Tracer object provided to the Client\n * is valid for our Opentracing use case.\n * @param {opentracer.Tracer} tracer\n */\nfunction validateTracer(tracer) {\n if (!tracer) {\n return false;\n }\n\n if (!tracer.scope || typeof tracer.scope !== 'function') {\n return false;\n }\n\n var scope = tracer.scope();\n\n if (!scope || !scope.active || typeof scope.active !== 'function') {\n return false;\n }\n\n return true;\n}\n\n/**\n * Validate the Span object provided\n * @param {opentracer.Span} span\n */\nfunction validateSpan(span) {\n if (!span || !span.context || typeof span.context !== 'function') {\n return false;\n }\n\n var spanContext = span.context();\n\n if (\n !spanContext ||\n !spanContext.toSpanId ||\n !spanContext.toTraceId ||\n typeof spanContext.toSpanId !== 'function' ||\n typeof spanContext.toTraceId !== 'function'\n ) {\n return false;\n }\n\n return true;\n}\n\nexport default Rollbar;\n","/**\n * Default tracing options\n */\nexport default {\n enabled: false,\n endpoint: 'api.rollbar.com/api/1/session/',\n};\n","import * as _ from './utility.js';\n\nfunction itemToPayload(item, options, callback) {\n if (item._isUncaught) {\n item.data._isUncaught = true;\n }\n if (item._originalArgs) {\n item.data._originalArgs = item._originalArgs;\n }\n callback(null, item);\n}\n\nfunction addPayloadOptions(item, options, callback) {\n var payloadOptions = options.payload || {};\n if (payloadOptions.body) {\n delete payloadOptions.body;\n }\n\n item.data = _.merge(item.data, payloadOptions);\n callback(null, item);\n}\n\nfunction addTelemetryData(item, options, callback) {\n if (item.telemetryEvents) {\n _.set(item, 'data.body.telemetry', item.telemetryEvents);\n }\n callback(null, item);\n}\n\nfunction addMessageWithError(item, options, callback) {\n if (!item.message) {\n callback(null, item);\n return;\n }\n var tracePath = 'data.body.trace_chain.0';\n var trace = _.get(item, tracePath);\n if (!trace) {\n tracePath = 'data.body.trace';\n trace = _.get(item, tracePath);\n }\n if (trace) {\n if (!(trace.exception && trace.exception.description)) {\n _.set(item, tracePath + '.exception.description', item.message);\n callback(null, item);\n return;\n }\n var extra = _.get(item, tracePath + '.extra') || {};\n var newExtra = _.merge(extra, { message: item.message });\n _.set(item, tracePath + '.extra', newExtra);\n }\n callback(null, item);\n}\n\nfunction userTransform(logger) {\n return function (item, options, callback) {\n var newItem = _.merge(item);\n var response = null;\n try {\n if (_.isFunction(options.transform)) {\n response = options.transform(newItem.data, item);\n }\n } catch (e) {\n options.transform = null;\n logger.error(\n 'Error while calling custom transform() function. Removing custom transform().',\n e,\n );\n callback(null, item);\n return;\n }\n if (_.isPromise(response)) {\n response.then(\n function (promisedItem) {\n if (promisedItem) {\n newItem.data = promisedItem;\n }\n callback(null, newItem);\n },\n function (error) {\n callback(error, item);\n },\n );\n } else {\n callback(null, newItem);\n }\n };\n}\n\nfunction addConfigToPayload(item, options, callback) {\n if (!options.sendConfig) {\n return callback(null, item);\n }\n var configKey = '_rollbarConfig';\n var custom = _.get(item, 'data.custom') || {};\n custom[configKey] = options;\n item.data.custom = custom;\n callback(null, item);\n}\n\nfunction addFunctionOption(options, name) {\n if (_.isFunction(options[name])) {\n options[name] = options[name].toString();\n }\n}\n\nfunction addConfiguredOptions(item, options, callback) {\n var configuredOptions = options._configuredOptions;\n\n // These must be stringified or they'll get dropped during serialization.\n addFunctionOption(configuredOptions, 'transform');\n addFunctionOption(configuredOptions, 'checkIgnore');\n addFunctionOption(configuredOptions, 'onSendCallback');\n\n delete configuredOptions.accessToken;\n item.data.notifier.configured_options = configuredOptions;\n callback(null, item);\n}\n\nfunction addDiagnosticKeys(item, options, callback) {\n var diagnostic = _.merge(\n item.notifier.client.notifier.diagnostic,\n item.diagnostic,\n );\n\n if (_.get(item, 'err._isAnonymous')) {\n diagnostic.is_anonymous = true;\n }\n\n if (item._isUncaught) {\n diagnostic.is_uncaught = item._isUncaught;\n }\n\n if (item.err) {\n try {\n diagnostic.raw_error = {\n message: item.err.message,\n name: item.err.name,\n constructor_name: item.err.constructor && item.err.constructor.name,\n filename: item.err.fileName,\n line: item.err.lineNumber,\n column: item.err.columnNumber,\n stack: item.err.stack,\n };\n } catch (e) {\n diagnostic.raw_error = { failed: String(e) };\n }\n }\n\n item.data.notifier.diagnostic = _.merge(\n item.data.notifier.diagnostic,\n diagnostic,\n );\n callback(null, item);\n}\n\nexport {\n itemToPayload,\n addPayloadOptions,\n addTelemetryData,\n addMessageWithError,\n userTransform,\n addConfigToPayload,\n addConfiguredOptions,\n addDiagnosticKeys,\n};\n","/**\n * Default browser options\n */\nimport { commonScrubFields } from '../defaults.js';\n\nexport const scrubFields = [\n ...commonScrubFields,\n 'cc-number',\n 'card number',\n 'cardnumber',\n 'cardnum',\n 'ccnum',\n 'ccnumber',\n 'cc num',\n 'creditcardnumber',\n 'credit card number',\n 'newcreditcardnumber',\n 'new credit card',\n 'creditcardno',\n 'credit card no',\n 'card#',\n 'card #',\n 'cc-csc',\n 'cvc',\n 'cvc2',\n 'cvv2',\n 'ccv2',\n 'security code',\n 'card verification',\n 'name on credit card',\n 'name on card',\n 'nameoncard',\n 'cardholder',\n 'card holder',\n 'name des karteninhabers',\n 'ccname',\n 'card type',\n 'cardtype',\n 'cc type',\n 'cctype',\n 'payment type',\n 'expiration date',\n 'expirationdate',\n 'expdate',\n 'cc-exp',\n 'ccmonth',\n 'ccyear',\n];\n\n// For compatibility with existing code that expects default export with scrubFields property\nexport default { scrubFields };\n","function captureUncaughtExceptions(window, handler, shim) {\n if (!window) {\n return;\n }\n var oldOnError;\n\n if (typeof handler._rollbarOldOnError === 'function') {\n oldOnError = handler._rollbarOldOnError;\n } else if (window.onerror) {\n oldOnError = window.onerror;\n while (oldOnError._rollbarOldOnError) {\n oldOnError = oldOnError._rollbarOldOnError;\n }\n handler._rollbarOldOnError = oldOnError;\n }\n\n handler.handleAnonymousErrors();\n\n var fn = function () {\n var args = Array.prototype.slice.call(arguments, 0);\n _rollbarWindowOnError(window, handler, oldOnError, args);\n };\n if (shim) {\n fn._rollbarOldOnError = oldOnError;\n }\n window.onerror = fn;\n}\n\nfunction _rollbarWindowOnError(window, r, old, args) {\n if (window._rollbarWrappedError) {\n if (!args[4]) {\n args[4] = window._rollbarWrappedError;\n }\n if (!args[5]) {\n args[5] = window._rollbarWrappedError._rollbarContext;\n }\n window._rollbarWrappedError = null;\n }\n\n var ret = r.handleUncaughtException.apply(r, args);\n\n if (old) {\n old.apply(window, args);\n }\n\n // Let other chained onerror handlers above run before setting this.\n // If an error is thrown and caught within a chained onerror handler,\n // Error.prepareStackTrace() will see that one before the one we want.\n if (ret === 'anonymous') {\n r.anonymousErrorsPending += 1; // See Rollbar.prototype.handleAnonymousErrors()\n }\n}\n\nfunction captureUnhandledRejections(window, handler, shim) {\n if (!window) {\n return;\n }\n\n if (\n typeof window._rollbarURH === 'function' &&\n window._rollbarURH.belongsToShim\n ) {\n window.removeEventListener('unhandledrejection', window._rollbarURH);\n }\n\n var rejectionHandler = function (evt) {\n var reason, promise, detail;\n try {\n reason = evt.reason;\n } catch (_e) {\n reason = undefined;\n }\n try {\n promise = evt.promise;\n } catch (_e) {\n promise = '[unhandledrejection] error getting `promise` from event';\n }\n try {\n detail = evt.detail;\n if (!reason && detail) {\n reason = detail.reason;\n promise = detail.promise;\n }\n } catch (_e) {\n // Ignore\n }\n if (!reason) {\n reason = '[unhandledrejection] error getting `reason` from event';\n }\n\n if (handler && handler.handleUnhandledRejection) {\n handler.handleUnhandledRejection(reason, promise);\n }\n };\n rejectionHandler.belongsToShim = shim;\n window._rollbarURH = rejectionHandler;\n window.addEventListener('unhandledrejection', rejectionHandler);\n}\n\nexport { captureUncaughtExceptions, captureUnhandledRejections };\n","import * as _ from '../utility.js';\n\nfunction checkIgnore(item, settings) {\n if (_.get(settings, 'plugins.jquery.ignoreAjaxErrors')) {\n return !_.get(item, 'body.message.extra.isAjax');\n }\n return true;\n}\n\nexport { checkIgnore };\n","/**\n * Default session replay recording options\n * See https://github.com/rrweb-io/rrweb/blob/master/guide.md#options for details\n */\nexport default {\n enabled: false, // Whether recording is enabled\n autoStart: true, // Start recording automatically when Rollbar initializes\n\n // defaults used by triggers that don't specify them\n triggerDefaults: {\n samplingRatio: 1.0,\n preDuration: 300,\n postDuration: 5,\n },\n triggers: [\n {\n type: 'occurrence',\n level: ['error', 'critical'],\n },\n ],\n\n debug: {\n logErrors: true, // Whether to log errors emitted by rrweb.\n logEmits: false, // Whether to log emitted events\n },\n\n // Recording options\n inlineStylesheet: true, // Whether to inline stylesheets to improve replay accuracy\n inlineImages: false, // Whether to record the image content\n collectFonts: true, // Whether to collect fonts in the website\n\n // Privacy options\n // Fine-grained control over which input types to mask\n // By default only password inputs are masked if maskInputs is true\n maskInputOptions: {\n password: true,\n email: false,\n tel: false,\n text: false,\n color: false,\n date: false,\n 'datetime-local': false,\n month: false,\n number: false,\n range: false,\n search: false,\n time: false,\n url: false,\n week: false,\n },\n\n // Mask all input values\n maskAllInputs: false,\n\n // Class names to block, mask, or ignore the content of elements.\n blockClass: 'rb-block',\n maskTextClass: 'rb-mask',\n ignoreClass: 'rb-ignore',\n\n // Remove unnecessary parts of the DOM\n // By default all removable elements are removed\n slimDOMOptions: {\n script: true, // Remove script elements\n comment: true, // Remove comments\n headFavicon: true, // Remove favicons in the head\n headWhitespace: true, // Remove whitespace in head\n headMetaDescKeywords: true, // Remove meta description and keywords\n headMetaSocial: true, // Remove social media meta tags\n headMetaRobots: true, // Remove robots meta directives\n headMetaHttpEquiv: true, // Remove http-equiv meta directives\n headMetaAuthorship: true, // Remove authorship meta directives\n headMetaVerification: true, // Remove verification meta directives\n },\n\n // Custom callbacks for advanced use cases\n // These are undefined by default and can be set programmatically\n // maskInputFn: undefined, // Custom function to mask input values\n // maskTextFn: undefined, // Custom function to mask text content\n // errorHandler: undefined, // Custom error handler for recording errors\n\n // Plugin system\n // plugins: [] // List of plugins to use (must be set programmatically)\n};\n","import errorParser from '../errorParser.js';\nimport logger from '../logger.js';\nimport * as _ from '../utility.js';\n\nfunction handleDomException(item, options, callback) {\n if (item.err && errorParser.Stack(item.err).name === 'DOMException') {\n var originalError = new Error();\n originalError.name = item.err.name;\n originalError.message = item.err.message;\n originalError.stack = item.err.stack;\n originalError.nested = item.err;\n item.err = originalError;\n }\n callback(null, item);\n}\n\nfunction handleItemWithError(item, options, callback) {\n item.data = item.data || {};\n if (item.err) {\n try {\n item.stackInfo =\n item.err._savedStackTrace ||\n errorParser.parse(item.err, item.skipFrames);\n\n if (options.addErrorContext) {\n addErrorContext(item);\n }\n } catch (e) {\n logger.error('Error while parsing the error object.', e);\n try {\n item.message =\n item.err.message ||\n item.err.description ||\n item.message ||\n String(item.err);\n } catch (e2) {\n item.message = String(item.err) || String(e2);\n }\n delete item.err;\n }\n }\n callback(null, item);\n}\n\nfunction addErrorContext(item) {\n var chain = [];\n var err = item.err;\n\n chain.push(err);\n\n while (err.nested || err.cause) {\n err = err.nested || err.cause;\n chain.push(err);\n }\n\n _.addErrorContext(item, chain);\n}\n\nfunction ensureItemHasSomethingToSay(item, options, callback) {\n if (!item.message && !item.stackInfo && !item.custom) {\n callback(new Error('No message, stack info, or custom data'), null);\n }\n callback(null, item);\n}\n\nfunction addBaseInfo(item, options, callback) {\n var environment =\n (options.payload && options.payload.environment) || options.environment;\n item.data = _.merge(item.data, {\n environment: environment,\n level: item.level,\n endpoint: options.endpoint,\n platform: 'browser',\n framework: 'browser-js',\n language: 'javascript',\n server: {},\n uuid: item.uuid,\n notifier: {\n name: 'rollbar-browser-js',\n version: options.version,\n },\n custom: item.custom,\n });\n callback(null, item);\n}\n\nfunction addRequestInfo(window) {\n return function (item, options, callback) {\n var requestInfo = {};\n\n if (window && window.location) {\n requestInfo.url = window.location.href;\n requestInfo.query_string = window.location.search;\n }\n\n var remoteString = '$remote_ip';\n if (!options.captureIp) {\n remoteString = null;\n } else if (options.captureIp !== true) {\n remoteString += '_anonymize';\n }\n if (remoteString) requestInfo.user_ip = remoteString;\n\n if (Object.keys(requestInfo).length > 0) {\n _.set(item, 'data.request', requestInfo);\n }\n\n callback(null, item);\n };\n}\n\nfunction addClientInfo(window) {\n return function (item, options, callback) {\n if (!window) {\n return callback(null, item);\n }\n var nav = window.navigator || {};\n var scr = window.screen || {};\n _.set(item, 'data.client', {\n runtime_ms: item.timestamp - window._rollbarStartTime,\n timestamp: Math.round(item.timestamp / 1000),\n javascript: {\n browser: nav.userAgent,\n language: nav.language,\n cookie_enabled: nav.cookieEnabled,\n screen: {\n width: scr.width,\n height: scr.height,\n },\n },\n });\n callback(null, item);\n };\n}\n\nfunction addPluginInfo(window) {\n return function (item, options, callback) {\n if (!window || !window.navigator) {\n return callback(null, item);\n }\n var plugins = [];\n var navPlugins = window.navigator.plugins || [];\n var cur;\n for (var i = 0, l = navPlugins.length; i < l; ++i) {\n cur = navPlugins[i];\n plugins.push({ name: cur.name, description: cur.description });\n }\n _.set(item, 'data.client.javascript.plugins', plugins);\n callback(null, item);\n };\n}\n\nfunction addBody(item, options, callback) {\n if (item.stackInfo) {\n if (item.stackInfo.traceChain) {\n addBodyTraceChain(item, options, callback);\n } else {\n addBodyTrace(item, options, callback);\n }\n } else {\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction addBodyMessage(item, options, callback) {\n var message = item.message;\n var custom = item.custom;\n\n if (!message) {\n message = 'Item sent with null or missing arguments.';\n }\n var result = {\n body: message,\n };\n\n if (custom) {\n result.extra = _.merge(custom);\n }\n\n _.set(item, 'data.body', { message: result });\n callback(null, item);\n}\n\nfunction stackFromItem(item, stackInfo = null) {\n // Transform a TraceKit stackInfo object into a Rollbar trace\n let stack = (stackInfo || item.stackInfo).stack;\n if (\n stack &&\n stack.length === 0 &&\n item._unhandledStackInfo &&\n item._unhandledStackInfo.stack\n ) {\n stack = item._unhandledStackInfo.stack;\n }\n return stack;\n}\n\nfunction addBodyTraceChain(item, options, callback) {\n var traceChain = item.stackInfo.traceChain;\n var traces = [];\n\n var traceChainLength = traceChain.length;\n for (var i = 0; i < traceChainLength; i++) {\n var trace = buildTrace(item, traceChain[i], options);\n traces.push(trace);\n }\n\n _.set(item, 'data.body', { trace_chain: traces });\n callback(null, item);\n}\n\nfunction addBodyTrace(item, options, callback) {\n var stack = stackFromItem(item);\n\n if (stack) {\n var trace = buildTrace(item, item.stackInfo, options);\n _.set(item, 'data.body', { trace: trace });\n callback(null, item);\n } else {\n var stackInfo = item.stackInfo;\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n\n item.message = className + ': ' + message;\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction buildTrace(item, stackInfo, options) {\n var description = item && item.data.description;\n var custom = item && item.custom;\n var stack = stackFromItem(item, stackInfo);\n\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n var trace = {\n exception: {\n class: className,\n message: message,\n },\n };\n\n if (description) {\n trace.exception.description = description;\n }\n\n if (stack) {\n if (stack.length === 0) {\n trace.exception.stack = stackInfo.rawStack;\n trace.exception.raw = String(stackInfo.rawException);\n }\n var stackFrame;\n var frame;\n var code;\n var pre;\n var post;\n var contextLength;\n var i, mid;\n\n trace.frames = [];\n for (i = 0; i < stack.length; ++i) {\n stackFrame = stack[i];\n frame = {\n filename: stackFrame.url ? _.sanitizeUrl(stackFrame.url) : '(unknown)',\n lineno: stackFrame.line || null,\n method:\n !stackFrame.func || stackFrame.func === '?'\n ? '[anonymous]'\n : stackFrame.func,\n colno: stackFrame.column,\n };\n if (options.sendFrameUrl) {\n frame.url = stackFrame.url;\n }\n if (\n frame.method &&\n frame.method.endsWith &&\n frame.method.endsWith('_rollbar_wrapped')\n ) {\n continue;\n }\n\n code = pre = post = null;\n contextLength = stackFrame.context ? stackFrame.context.length : 0;\n if (contextLength) {\n mid = Math.floor(contextLength / 2);\n pre = stackFrame.context.slice(0, mid);\n code = stackFrame.context[mid];\n post = stackFrame.context.slice(mid);\n }\n\n if (code) {\n frame.code = code;\n }\n\n if (pre || post) {\n frame.context = {};\n if (pre && pre.length) {\n frame.context.pre = pre;\n }\n if (post && post.length) {\n frame.context.post = post;\n }\n }\n\n if (stackFrame.args) {\n frame.args = stackFrame.args;\n }\n\n trace.frames.push(frame);\n }\n\n // NOTE(cory): reverse the frames since rollbar.com expects the most recent call last\n trace.frames.reverse();\n\n if (custom) {\n trace.extra = _.merge(custom);\n }\n }\n\n return trace;\n}\n\nfunction errorClass(stackInfo, guess, options) {\n if (stackInfo.name) {\n return stackInfo.name;\n } else if (options.guessErrorClass) {\n return guess;\n } else {\n return '(unknown)';\n }\n}\n\nfunction addScrubber(scrubFn) {\n return function (item, options, callback) {\n if (scrubFn) {\n var scrubFields = options.scrubFields || [];\n var scrubPaths = options.scrubPaths || [];\n item.data = scrubFn(item.data, scrubFields, scrubPaths);\n }\n callback(null, item);\n };\n}\n\nexport {\n handleDomException,\n handleItemWithError,\n ensureItemHasSomethingToSay,\n addBaseInfo,\n addRequestInfo,\n addClientInfo,\n addPluginInfo,\n addBody,\n addScrubber,\n};\n","import logger from '../../logger.js';\nimport * as _ from '../../utility.js';\n\nfunction makeFetchRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n timeout,\n}) {\n var controller;\n var timeoutId;\n\n if (_.isFiniteNumber(timeout)) {\n controller = new AbortController();\n timeoutId = setTimeout(function () {\n controller.abort();\n }, timeout);\n }\n\n headers = {\n 'Content-Type': 'application/json',\n 'X-Rollbar-Access-Token': accessToken,\n signal: controller && controller.signal,\n ...headers,\n };\n\n fetch(url, {\n method,\n headers,\n body: payload,\n })\n .then(function (response) {\n if (timeoutId) clearTimeout(timeoutId);\n const respHeaders = response.headers;\n\n const isItemRoute = url.endsWith('/api/1/item/');\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': respHeaders.get('Rollbar-Replay-Enabled'),\n 'Rollbar-Replay-RateLimit-Remaining': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n\n const json = response.json();\n callback(null, json, headers);\n })\n .catch(function (error) {\n logger.error(error.message);\n callback(error);\n });\n}\n\nexport default makeFetchRequest;\n","/*global XDomainRequest*/\n\nimport logger from '../../logger.js';\nimport * as _ from '../../utility.js';\n\nfunction makeXhrRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n requestFactory,\n timeout,\n}) {\n var request;\n if (requestFactory) {\n request = requestFactory();\n } else {\n request = _createXMLHTTPObject();\n }\n if (!request) {\n // Give up, no way to send requests\n return callback(new Error('No way to send a request'));\n }\n try {\n try {\n var onreadystatechange = function () {\n try {\n if (onreadystatechange && request.readyState === 4) {\n onreadystatechange = undefined;\n\n var parseResponse = _.jsonParse(request.responseText);\n if (_isSuccess(request)) {\n const isItemRoute = url.endsWith('/api/1/item/');\n\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': request.getResponseHeader(\n 'Rollbar-Replay-Enabled',\n ),\n 'Rollbar-Replay-RateLimit-Remaining':\n request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n callback(parseResponse.error, parseResponse.value, headers);\n return;\n } else if (_isNormalFailure(request)) {\n if (request.status === 403) {\n // likely caused by using a server access token\n var message =\n parseResponse.value && parseResponse.value.message;\n logger.error(message);\n }\n // return valid http status codes\n callback(new Error(String(request.status)));\n } else {\n // IE will return a status 12000+ on some sort of connection failure,\n // so we return a blank error\n // http://msdn.microsoft.com/en-us/library/aa383770%28VS.85%29.aspx\n var msg =\n 'XHR response had no status code (likely connection failure)';\n callback(_newRetriableError(msg));\n }\n }\n } catch (ex) {\n //jquery source mentions firefox may error out while accessing the\n //request members if there is a network error\n //https://github.com/jquery/jquery/blob/a938d7b1282fc0e5c52502c225ae8f0cef219f0a/src/ajax/xhr.js#L111\n var exc;\n if (ex && ex.stack) {\n exc = ex;\n } else {\n exc = new Error(ex);\n }\n callback(exc);\n }\n };\n\n request.open(method, url, true);\n if (request.setRequestHeader) {\n request.setRequestHeader('Content-Type', 'application/json');\n request.setRequestHeader('X-Rollbar-Access-Token', accessToken);\n for (const [h, v] of Object.entries(headers ?? {})) {\n request.setRequestHeader(h, v);\n }\n }\n\n if (_.isFiniteNumber(timeout)) {\n request.timeout = timeout;\n }\n\n request.onreadystatechange = onreadystatechange;\n request.send(payload);\n } catch (_e1) {\n // Sending using the normal xmlhttprequest object didn't work, try XDomainRequest\n if (typeof XDomainRequest !== 'undefined') {\n // Assume we are in a really old browser which has a bunch of limitations:\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n\n // Extreme paranoia: if we have XDomainRequest then we have a window, but just in case\n if (!window || !window.location) {\n return callback(\n new Error(\n 'No window available during request, unknown environment',\n ),\n );\n }\n\n // If the current page is http, try and send over http\n if (\n window.location.href.substring(0, 5) === 'http:' &&\n url.substring(0, 5) === 'https'\n ) {\n url = 'http' + url.substring(5);\n }\n\n var xdomainrequest = new XDomainRequest();\n xdomainrequest.onprogress = () => {};\n xdomainrequest.ontimeout = function () {\n var msg = 'Request timed out';\n var code = 'ETIMEDOUT';\n callback(_newRetriableError(msg, code));\n };\n xdomainrequest.onerror = function () {\n callback(new Error('Error during request'));\n };\n xdomainrequest.onload = function () {\n var parseResponse = _.jsonParse(xdomainrequest.responseText);\n callback(parseResponse.error, parseResponse.value);\n };\n xdomainrequest.open(method, url, true);\n xdomainrequest.send(payload);\n } else {\n callback(new Error('Cannot find a method to transport a request'));\n }\n }\n } catch (e2) {\n callback(e2);\n }\n}\n\nfunction _createXMLHTTPObject() {\n /* global ActiveXObject:false */\n\n var factories = [\n function () {\n return new XMLHttpRequest();\n },\n function () {\n return new ActiveXObject('Msxml2.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Msxml3.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Microsoft.XMLHTTP');\n },\n ];\n var xmlhttp;\n var i;\n var numFactories = factories.length;\n for (i = 0; i < numFactories; i++) {\n try {\n xmlhttp = factories[i]();\n break;\n } catch (_e) {\n // pass\n }\n }\n return xmlhttp;\n}\n\nfunction _isSuccess(r) {\n return r && r.status && r.status === 200;\n}\n\nfunction _isNormalFailure(r) {\n return r && _.isType(r.status, 'number') && r.status >= 400 && r.status < 600;\n}\n\nfunction _newRetriableError(message, code) {\n var err = new Error(message);\n err.code = code || 'ENOTFOUND';\n return err;\n}\n\nexport default makeXhrRequest;\n","import * as _ from '../utility.js';\n\nimport makeFetchRequest from './transport/fetch.js';\nimport makeXhrRequest from './transport/xhr.js';\n\n/*\n * accessToken may be embedded in payload but that should not\n * be assumed\n *\n * options: {\n * hostname\n * protocol\n * path\n * port\n * method\n * transport ('xhr' | 'fetch')\n * }\n *\n * params is an object containing key/value pairs. These\n * will be appended to the path as 'key=value&key=value'\n *\n * payload is an unserialized object\n */\nfunction Transport(truncation) {\n this.truncation = truncation;\n}\n\nTransport.prototype.get = function (\n accessToken,\n options,\n params,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = () => {};\n }\n _.addParamsAndAccessTokenToPath(accessToken, options, params);\n\n var method = 'GET';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.post = function ({\n accessToken,\n options,\n payload,\n headers,\n callback,\n requestFactory,\n}) {\n if (!callback || !_.isFunction(callback)) {\n callback = () => {};\n }\n\n if (!payload) {\n return callback(new Error('Cannot send empty request'));\n }\n\n var stringifyResult;\n // Check payload.body to ensure only items are truncated.\n if (this.truncation && payload.body) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = _.stringify(payload);\n }\n if (stringifyResult.error) {\n return callback(stringifyResult.error);\n }\n\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload: stringifyResult.value,\n headers,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.postJsonPayload = function (\n accessToken,\n options,\n payload,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = () => {};\n }\n\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\n// Wraps `_makeRequest` if zone.js is being used, ensuring that Rollbar\n// API calls are not intercepted by any child forked zones.\n// This is equivalent to `NgZone.runOutsideAngular` in Angular.\nTransport.prototype._makeZoneRequest = function () {\n var gWindow =\n (typeof window !== 'undefined' && window) ||\n (typeof self !== 'undefined' && self);\n // Whenever zone.js is loaded and `Zone` is exposed globally, access\n // the root zone to ensure that requests are always made within it.\n // This approach is framework-agnostic, regardless of which\n // framework zone.js is used with.\n var rootZone = gWindow && gWindow.Zone && gWindow.Zone.root;\n var args = Array.prototype.slice.call(arguments);\n\n if (rootZone) {\n rootZone.run(() => {\n this._makeRequest.apply(undefined, args);\n });\n } else {\n this._makeRequest.apply(undefined, args);\n }\n};\n\nTransport.prototype._makeRequest = function (params) {\n const { payload, callback, transport } = params;\n if (typeof RollbarProxy !== 'undefined') {\n return _proxyRequest(payload, callback);\n }\n\n if (transport === 'fetch') {\n makeFetchRequest(params);\n } else {\n makeXhrRequest(params);\n }\n};\n\n/* global RollbarProxy */\nfunction _proxyRequest(json, callback) {\n var rollbarProxy = new RollbarProxy();\n rollbarProxy.sendJsonPayload(\n json,\n function (_msg) {\n /* do nothing */\n },\n function (err) {\n callback(new Error(err));\n },\n );\n}\n\nexport default Transport;\n","// See https://nodejs.org/docs/latest/api/url.html\nfunction parse(url) {\n var result = {\n protocol: null,\n auth: null,\n host: null,\n path: null,\n hash: null,\n href: url,\n hostname: null,\n port: null,\n pathname: null,\n search: null,\n query: null,\n };\n\n var i, last;\n i = url.indexOf('//');\n if (i !== -1) {\n result.protocol = url.substring(0, i);\n last = i + 2;\n } else {\n last = 0;\n }\n\n i = url.indexOf('@', last);\n if (i !== -1) {\n result.auth = url.substring(last, i);\n last = i + 1;\n }\n\n i = url.indexOf('/', last);\n if (i === -1) {\n i = url.indexOf('?', last);\n if (i === -1) {\n i = url.indexOf('#', last);\n if (i === -1) {\n result.host = url.substring(last);\n } else {\n result.host = url.substring(last, i);\n result.hash = url.substring(i);\n }\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n return result;\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n\n i = url.indexOf('#', last);\n if (i === -1) {\n result.path = url.substring(last);\n } else {\n result.path = url.substring(last, i);\n result.hash = url.substring(i);\n }\n\n if (result.path) {\n var pathParts = result.path.split('?');\n result.pathname = pathParts[0];\n result.query = pathParts[1];\n result.search = result.query ? '?' + result.query : null;\n }\n return result;\n}\n\nexport { parse };\n","import API from '../api.js';\nimport defaults from '../defaults.js';\nimport errorParser from '../errorParser.js';\nimport logger from '../logger.js';\nimport * as sharedPredicates from '../predicates.js';\nimport Client from '../rollbar.js';\nimport tracingDefaults from '../tracing/defaults.js';\nimport * as sharedTransforms from '../transforms.js';\nimport * as _ from '../utility.js';\n\nimport browserDefaults from './defaults.js';\nimport * as globals from './globalSetup.js';\nimport * as predicates from './predicates.js';\nimport replayDefaults from './replay/defaults.js';\nimport * as transforms from './transforms.js';\nimport Transport from './transport.js';\nimport * as urllib from './url.js';\n\n// Used to support global `Rollbar` instance.\nlet _instance = null;\n\nclass Rollbar {\n constructor(options, client) {\n logger.init({ logLevel: options.logLevel || 'error' });\n this.options = _.handleOptions(defaultOptions, options, null, logger);\n this.options._configuredOptions = options;\n this.components = this.components || {};\n const Telemeter = this.components.telemeter;\n const Instrumenter = this.components.instrumenter;\n this.wrapGlobals = this.components.wrapGlobals;\n this.scrub = this.components.scrub;\n const truncation = this.components.truncation;\n const Tracing = this.components.tracing;\n const Replay = this.components.replay;\n\n const transport = new Transport(truncation);\n const api = new API(this.options, transport, urllib, truncation);\n if (Tracing) {\n this.tracing = new Tracing(_gWindow(), api, this.options);\n this.tracing.initSession();\n }\n if (Telemeter) {\n this.telemeter = new Telemeter(this.options, this.tracing);\n }\n\n if (Replay && _.isBrowser()) {\n const replayOptions = this.options.replay;\n this.replay = new Replay({\n tracing: this.tracing,\n telemeter: this.telemeter,\n options: replayOptions,\n });\n\n if (replayOptions.enabled && replayOptions.autoStart) {\n this.replay.recorder.start();\n }\n }\n\n this.client =\n client ||\n new Client(\n this.options,\n api,\n logger,\n this.telemeter,\n this.tracing,\n this.replay,\n 'browser',\n );\n var gWindow = _gWindow();\n var gDocument = typeof document !== 'undefined' && document;\n this.isChrome = gWindow.chrome && gWindow.chrome.runtime; // check .runtime to avoid Edge browsers\n this.anonymousErrorsPending = 0;\n addTransformsToNotifier(this.client.notifier, this, gWindow);\n addPredicatesToQueue(this.client.queue);\n this.setupUnhandledCapture();\n if (Instrumenter) {\n this.instrumenter = new Instrumenter(\n this.options,\n this.client.telemeter,\n this,\n gWindow,\n gDocument,\n );\n this.instrumenter.instrument();\n }\n\n this.setSessionAttributesFromOptions(options);\n\n // Used with rollbar-react for rollbar-react-native compatibility.\n this.rollbar = this;\n }\n\n static init(options, client) {\n if (_instance) {\n return _instance.global(options).configure(options);\n }\n _instance = new Rollbar(options, client);\n return _instance;\n }\n\n static setComponents(components) {\n Rollbar.prototype.components = components;\n }\n\n global(options) {\n this.client.global(options);\n return this;\n }\n\n configure(options, payloadData) {\n if (options.logLevel) {\n logger.init({ logLevel: options.logLevel });\n }\n this.setSessionAttributesFromOptions(options);\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.handleOptions(oldOptions, options, payload, logger);\n this.options._configuredOptions = _.handleOptions(\n oldOptions._configuredOptions,\n options,\n payload,\n );\n\n this.tracing?.configure(this.options);\n this.replay?.configure(this.options.replay);\n this.client.configure(this.options, payloadData);\n this.instrumenter?.configure(this.options);\n this.setupUnhandledCapture();\n return this;\n }\n\n lastError() {\n return this.client.lastError;\n }\n\n log() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.log(item);\n return { uuid: uuid };\n }\n\n debug() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.debug(item);\n return { uuid: uuid };\n }\n\n info() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.info(item);\n return { uuid: uuid };\n }\n\n warn() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warn(item);\n return { uuid: uuid };\n }\n\n warning() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warning(item);\n return { uuid: uuid };\n }\n\n error() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.error(item);\n return { uuid: uuid };\n }\n\n critical() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.critical(item);\n return { uuid: uuid };\n }\n\n buildJsonPayload(item) {\n return this.client.buildJsonPayload(item);\n }\n\n sendJsonPayload(jsonPayload) {\n return this.client.sendJsonPayload(jsonPayload);\n }\n\n triggerDirectReplay(context) {\n return this.triggerReplay({ type: 'direct', ...context });\n }\n\n triggerReplay(context) {\n if (!this.replay) return null;\n\n return this.replay.triggerReplay(context);\n }\n\n setupUnhandledCapture() {\n var gWindow = _gWindow();\n\n if (!this.unhandledExceptionsInitialized) {\n if (\n this.options.captureUncaught ||\n this.options.handleUncaughtExceptions\n ) {\n globals.captureUncaughtExceptions(gWindow, this);\n if (this.wrapGlobals && this.options.wrapGlobalEventHandlers) {\n this.wrapGlobals(gWindow, this);\n }\n this.unhandledExceptionsInitialized = true;\n }\n }\n if (!this.unhandledRejectionsInitialized) {\n if (\n this.options.captureUnhandledRejections ||\n this.options.handleUnhandledRejections\n ) {\n globals.captureUnhandledRejections(gWindow, this);\n this.unhandledRejectionsInitialized = true;\n }\n }\n }\n\n handleUncaughtException(message, url, lineno, colno, error, context) {\n if (\n !this.options.captureUncaught &&\n !this.options.handleUncaughtExceptions\n ) {\n return;\n }\n\n // Chrome will always send 5+ arguments and error will be valid or null, not undefined.\n // If error is undefined, we have a different caller.\n // Chrome also sends errors from web workers with null error, but does not invoke\n // prepareStackTrace() for these. Test for empty url to skip them.\n if (\n this.options.inspectAnonymousErrors &&\n this.isChrome &&\n error === null &&\n url === ''\n ) {\n return 'anonymous';\n }\n\n var item;\n var stackInfo = _.makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n 'onerror',\n 'uncaught exception',\n errorParser,\n );\n if (_.isError(error)) {\n item = this._createItem([message, error, context]);\n item._unhandledStackInfo = stackInfo;\n } else if (_.isError(url)) {\n item = this._createItem([message, url, context]);\n item._unhandledStackInfo = stackInfo;\n } else {\n item = this._createItem([message, context]);\n item.stackInfo = stackInfo;\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n this.client.log(item);\n }\n\n /**\n * Chrome only. Other browsers will ignore.\n *\n * Use Error.prepareStackTrace to extract information about errors that\n * do not have a valid error object in onerror().\n *\n * In tested version of Chrome, onerror is called first but has no way\n * to communicate with prepareStackTrace. Use a counter to let this\n * handler know which errors to send to Rollbar.\n *\n * In config options, set inspectAnonymousErrors to enable.\n */\n handleAnonymousErrors() {\n if (!this.options.inspectAnonymousErrors || !this.isChrome) {\n return;\n }\n\n const prepareStackTrace = (error, _stack) => {\n if (this.options.inspectAnonymousErrors) {\n if (this.anonymousErrorsPending) {\n // This is the only known way to detect that onerror saw an anonymous error.\n // It depends on onerror reliably being called before Error.prepareStackTrace,\n // which so far holds true on tested versions of Chrome. If versions of Chrome\n // are tested that behave differently, this logic will need to be updated\n // accordingly.\n this.anonymousErrorsPending -= 1;\n\n if (!error) {\n // Not likely to get here, but calling handleUncaughtException from here\n // without an error object would throw off the anonymousErrorsPending counter,\n // so return now.\n return;\n }\n\n // Allow this to be tracked later.\n error._isAnonymous = true;\n\n // url, lineno, colno shouldn't be needed for these errors.\n // If that changes, update this accordingly, using the unused\n // _stack param as needed (rather than parse error.toString()).\n this.handleUncaughtException(error.message, null, null, null, error);\n }\n }\n\n // Workaround to ensure stack is preserved for normal errors.\n return error.stack;\n };\n\n // https://v8.dev/docs/stack-trace-api\n try {\n Error.prepareStackTrace = prepareStackTrace;\n } catch (e) {\n this.options.inspectAnonymousErrors = false;\n this.error('anonymous error handler failed', e);\n }\n }\n\n handleUnhandledRejection(reason, promise) {\n if (\n !this.options.captureUnhandledRejections &&\n !this.options.handleUnhandledRejections\n ) {\n return;\n }\n\n var message = 'unhandled rejection was null or undefined!';\n if (reason) {\n if (reason.message) {\n message = reason.message;\n } else {\n var reasonResult = _.stringify(reason);\n if (reasonResult.value) {\n message = reasonResult.value;\n }\n }\n }\n var context =\n (reason && reason._rollbarContext) ||\n (promise && promise._rollbarContext);\n\n var item;\n if (_.isError(reason)) {\n item = this._createItem([message, reason, context]);\n } else {\n item = this._createItem([message, reason, context]);\n item.stackInfo = _.makeUnhandledStackInfo(\n message,\n '',\n 0,\n 0,\n null,\n 'unhandledrejection',\n '',\n errorParser,\n );\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n item._originalArgs = item._originalArgs || [];\n item._originalArgs.push(promise);\n this.client.log(item);\n }\n\n wrap(f, context, _before) {\n try {\n var ctxFn;\n if (_.isFunction(context)) {\n ctxFn = context;\n } else {\n ctxFn = function () {\n return context || {};\n };\n }\n\n if (!_.isFunction(f)) {\n return f;\n }\n\n if (f._isWrap) {\n return f;\n }\n\n if (!f._rollbar_wrapped) {\n f._rollbar_wrapped = function () {\n if (_before && _.isFunction(_before)) {\n _before.apply(this, arguments);\n }\n try {\n return f.apply(this, arguments);\n } catch (exc) {\n var e = exc;\n if (e && window._rollbarWrappedError !== e) {\n if (_.isType(e, 'string')) {\n e = new String(e);\n }\n e._rollbarContext = ctxFn() || {};\n e._rollbarContext._wrappedSource = f.toString();\n\n window._rollbarWrappedError = e;\n }\n throw e;\n }\n };\n\n f._rollbar_wrapped._isWrap = true;\n\n for (var prop in f) {\n if (_.hasOwn(f, prop) && prop !== '_rollbar_wrapped') {\n f._rollbar_wrapped[prop] = f[prop];\n }\n }\n }\n\n return f._rollbar_wrapped;\n } catch (_e) {\n // Return the original function if the wrap fails.\n return f;\n }\n }\n\n captureEvent() {\n var event = _.createTelemetryEvent(arguments);\n return this.client.captureEvent(event.type, event.metadata, event.level);\n }\n\n setSessionUser(user) {\n if (!this.tracing?.session) return;\n\n this.tracing.session.setUser(user);\n }\n\n setSessionAttributes(attrs) {\n if (!this.tracing?.session) return;\n\n attrs = { ...attrs };\n\n this.tracing.session.setAttributes(attrs);\n }\n\n setSessionAttributesFromOptions(options) {\n const person = options.person || options.payload?.person;\n if (person) {\n this.setSessionUser(person);\n }\n const code_version =\n options.client?.javascript?.code_version ||\n options.codeVersion ||\n options.code_version ||\n options.payload?.client?.javascript?.code_version ||\n options.payload?.code_version ||\n options.payload?.codeVersion;\n this.setSessionAttributes({\n 'rollbar.codeVersion': code_version,\n 'rollbar.notifier.name': 'rollbar-browser-js',\n 'rollbar.notifier.version': options.version,\n });\n }\n\n // The following two methods are used internally and are not meant for public use\n captureDomContentLoaded(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureDomContentLoaded(ts);\n }\n\n captureLoad(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureLoad(ts);\n }\n\n loadFull() {\n logger.info(\n 'Unexpected Rollbar.loadFull() called on a Notifier instance. This can happen when Rollbar is loaded multiple times.',\n );\n }\n\n _createItem(args) {\n return _.createItem(args, logger, this);\n }\n\n // Static version of instance methods support the legacy pattern of a\n // global `Rollbar` instance, where after calling `Rollbar.init()`,\n // `Rollbar` can be used as if it were an instance.\n // If support for this pattern is dropped, these static methods can be removed.\n static callInstance(method, args) {\n if (!_instance) {\n const message = 'Rollbar is not initialized';\n logger.error(message);\n const maybeCallback = _getFirstFunction(args);\n if (maybeCallback) {\n maybeCallback(new Error(message));\n }\n return;\n }\n return _instance[method].apply(_instance, args);\n }\n\n static global = (...args) => Rollbar.callInstance('global', args);\n static configure = (...args) => Rollbar.callInstance('configure', args);\n static lastError = (...args) => Rollbar.callInstance('lastError', args);\n static log = (...args) => Rollbar.callInstance('log', args);\n static debug = (...args) => Rollbar.callInstance('debug', args);\n static info = (...args) => Rollbar.callInstance('info', args);\n static warn = (...args) => Rollbar.callInstance('warn', args);\n static warning = (...args) => Rollbar.callInstance('warning', args);\n static error = (...args) => Rollbar.callInstance('error', args);\n static critical = (...args) => Rollbar.callInstance('critical', args);\n static buildJsonPayload = (...args) =>\n Rollbar.callInstance('buildJsonPayload', args);\n static sendJsonPayload = (...args) =>\n Rollbar.callInstance('sendJsonPayload', args);\n static wrap = (...args) => Rollbar.callInstance('wrap', args);\n static captureEvent = (...args) => Rollbar.callInstance('captureEvent', args);\n}\n\n/* Internal */\n\nfunction addTransformsToNotifier(notifier, rollbar, gWindow) {\n notifier\n .addTransform(transforms.handleDomException)\n .addTransform(transforms.handleItemWithError)\n .addTransform(transforms.ensureItemHasSomethingToSay)\n .addTransform(transforms.addBaseInfo)\n .addTransform(transforms.addRequestInfo(gWindow))\n .addTransform(transforms.addClientInfo(gWindow))\n .addTransform(transforms.addPluginInfo(gWindow))\n .addTransform(transforms.addBody)\n .addTransform(sharedTransforms.addMessageWithError)\n .addTransform(sharedTransforms.addTelemetryData)\n .addTransform(sharedTransforms.addConfigToPayload)\n .addTransform(transforms.addScrubber(rollbar.scrub))\n .addTransform(sharedTransforms.addPayloadOptions)\n .addTransform(sharedTransforms.userTransform(logger))\n .addTransform(sharedTransforms.addConfiguredOptions)\n .addTransform(sharedTransforms.addDiagnosticKeys)\n .addTransform(sharedTransforms.itemToPayload);\n}\n\nfunction addPredicatesToQueue(queue) {\n queue\n .addPredicate(sharedPredicates.checkLevel)\n .addPredicate(predicates.checkIgnore)\n .addPredicate(sharedPredicates.userCheckIgnore(logger))\n .addPredicate(sharedPredicates.urlIsNotBlockListed(logger))\n .addPredicate(sharedPredicates.urlIsSafeListed(logger))\n .addPredicate(sharedPredicates.messageIsIgnored(logger));\n}\n\nfunction _getFirstFunction(args) {\n for (var i = 0, len = args.length; i < len; ++i) {\n if (_.isFunction(args[i])) {\n return args[i];\n }\n }\n return undefined;\n}\n\nfunction _gWindow() {\n return (\n (typeof window !== 'undefined' && window) ||\n (typeof self !== 'undefined' && self)\n );\n}\n\nconst defaultOptions = {\n environment: 'unknown',\n version: defaults.version,\n scrubFields: browserDefaults.scrubFields,\n logLevel: defaults.logLevel,\n reportLevel: defaults.reportLevel,\n uncaughtErrorLevel: defaults.uncaughtErrorLevel,\n endpoint: defaults.endpoint,\n verbose: false,\n enabled: true,\n transmit: true,\n sendConfig: false,\n includeItemsInTelemetry: true,\n captureIp: true,\n inspectAnonymousErrors: true,\n ignoreDuplicateErrors: true,\n wrapGlobalEventHandlers: false,\n replay: replayDefaults,\n tracing: tracingDefaults,\n};\n\nexport default Rollbar;\n","import { hasOwn } from '../utility.js';\n\n/*\n * headers - Detect when fetch Headers are undefined and use a partial polyfill.\n *\n * A full polyfill is not used in order to keep package size as small as possible.\n * Since this is only used internally and is not added to the window object,\n * the full interface doesn't need to be supported.\n *\n * This implementation is modified from whatwg-fetch:\n * https://github.com/github/fetch\n */\nfunction headers(headers) {\n if (typeof Headers === 'undefined') {\n return new FetchHeaders(headers);\n }\n\n return new Headers(headers);\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n return name.toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value;\n}\n\nfunction iteratorFor(items) {\n var iterator = {\n next: function () {\n var value = items.shift();\n return { done: value === undefined, value: value };\n },\n };\n\n return iterator;\n}\n\nfunction FetchHeaders(headers) {\n this.map = {};\n\n if (headers instanceof FetchHeaders) {\n headers.forEach(function (value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function (header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function (name) {\n this.append(name, headers[name]);\n }, this);\n }\n}\n\nFetchHeaders.prototype.append = function (name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n};\n\nFetchHeaders.prototype.get = function (name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null;\n};\n\nFetchHeaders.prototype.has = function (name) {\n return hasOwn(this.map, normalizeName(name));\n};\n\nFetchHeaders.prototype.forEach = function (callback, thisArg) {\n for (var name in this.map) {\n if (hasOwn(this.map, name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n};\n\nFetchHeaders.prototype.entries = function () {\n var items = [];\n this.forEach(function (value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items);\n};\n\nexport default headers;\n","function replace(obj, name, replacement, replacements, type) {\n var orig = obj[name];\n obj[name] = replacement(orig);\n if (replacements) {\n replacements[type].push([obj, name, orig]);\n }\n}\n\nexport default replace;\n","function getElementType(e) {\n return (e.getAttribute('type') || '').toLowerCase();\n}\n\nfunction isDescribedElement(element, type, subtypes) {\n if (element.tagName.toLowerCase() !== type.toLowerCase()) {\n return false;\n }\n if (!subtypes) {\n return true;\n }\n const elementType = getElementType(element);\n for (const subtype of subtypes) {\n if (subtype === elementType) {\n return true;\n }\n }\n return false;\n}\n\nfunction getElementFromEvent(evt, doc) {\n if (evt.target) {\n return evt.target;\n }\n if (doc && doc.elementFromPoint) {\n return doc.elementFromPoint(evt.clientX, evt.clientY);\n }\n return undefined;\n}\n\nfunction treeToArray(elem) {\n var MAX_HEIGHT = 5;\n var out = [];\n var nextDescription;\n for (var height = 0; elem && height < MAX_HEIGHT; height++) {\n nextDescription = describeElement(elem);\n if (!nextDescription || nextDescription.tagName === 'html') {\n break;\n }\n out.unshift(nextDescription);\n elem = elem.parentNode;\n }\n return out;\n}\n\nfunction elementArrayToString(a) {\n var MAX_LENGTH = 80;\n var separator = ' > ',\n separatorLength = separator.length;\n var out = [],\n len = 0,\n nextStr,\n totalLength;\n\n for (var i = a.length - 1; i >= 0; i--) {\n nextStr = descriptionToString(a[i]);\n totalLength = len + out.length * separatorLength + nextStr.length;\n if (i < a.length - 1 && totalLength >= MAX_LENGTH + 3) {\n out.unshift('...');\n break;\n }\n out.unshift(nextStr);\n len += nextStr.length;\n }\n return out.join(separator);\n}\n\nfunction elementString(elem) {\n return elementArrayToString(treeToArray(elem));\n}\n\nfunction descriptionToString(desc) {\n if (!desc || !desc.tagName) {\n return '';\n }\n var out = [desc.tagName];\n if (desc.id) {\n out.push('#' + desc.id);\n }\n if (desc.classes) {\n out.push('.' + desc.classes.join('.'));\n }\n for (const attribute of desc.attributes) {\n out.push('[' + attribute.key + '=\"' + attribute.value + '\"]');\n }\n\n return out.join('');\n}\n\n/**\n * Input: a dom element\n * Output: null if tagName is falsey or input is falsey, else\n * {\n * tagName: String,\n * id: String | undefined,\n * classes: [String] | undefined,\n * attributes: [\n * {\n * key: OneOf(type, name, title, alt),\n * value: String\n * }\n * ]\n * }\n */\nfunction describeElement(elem) {\n if (!elem || !elem.tagName) {\n return null;\n }\n var out = {},\n className;\n out.tagName = elem.tagName.toLowerCase();\n if (elem.id) {\n out.id = elem.id;\n }\n className = elem.className;\n if (className && typeof className === 'string') {\n out.classes = className.split(/\\s+/);\n }\n var attributes = ['type', 'name', 'title', 'alt'];\n out.attributes = [];\n for (const attribute of attributes) {\n const attr = elem.getAttribute(attribute);\n if (attr) {\n out.attributes.push({ key: attribute, value: attr });\n }\n }\n return out;\n}\n\n/*\n * Detects if the given element matches any of the given class names (string or regex),\n * or CSS selectors.\n * @param {HTMLElement} element - The DOM element to check.\n * @param {Array} classes - An array of class names (string or regex) to match against.\n * @param {Array} selectors - An array of CSS selectors to match against.\n * @return {boolean} - True if the element matches any of the classes or selectors, false otherwise.\n */\nfunction isMatchingElement(element, classes, selectors) {\n try {\n for (const cls of classes) {\n if (typeof cls === 'string') {\n if (element.classList.contains(cls)) {\n return true;\n }\n } else {\n for (const c of element.classList) {\n if (cls.test(c)) {\n return true;\n }\n }\n }\n }\n for (const sel of selectors) {\n if (element.matches(sel)) {\n return true;\n }\n }\n } catch (_e) {\n // ignore errors from invalid arguments\n }\n return false;\n}\n\nexport {\n describeElement,\n descriptionToString,\n elementArrayToString,\n elementString,\n treeToArray,\n getElementFromEvent,\n isDescribedElement,\n getElementType,\n isMatchingElement,\n};\n","/* eslint-disable @typescript-eslint/no-this-alias */\n// TODO(matux): refactor to remove no-this-alias disable\n\nimport logger from '../logger.js';\nimport scrub from '../scrub.js';\nimport headers from '../utility/headers.js';\nimport replace from '../utility/replace.js';\nimport * as _ from '../utility.js';\n\nimport * as domUtil from './domUtility.js';\nimport * as urlparser from './url.js';\n\nconst defaults = {\n network: true,\n networkResponseHeaders: false,\n networkResponseBody: false,\n networkRequestHeaders: false,\n networkRequestBody: false,\n networkErrorOnHttp5xx: false,\n networkErrorOnHttp4xx: false,\n networkErrorOnHttp0: false,\n log: true,\n dom: true,\n navigation: true,\n connectivity: true,\n contentSecurityPolicy: true,\n errorOnContentSecurityPolicy: false,\n};\n\nfunction restore(replacements, type) {\n let b;\n while (replacements[type].length) {\n b = replacements[type].shift();\n b[0][b[1]] = b[2];\n }\n}\n\nfunction nameFromDescription(description) {\n if (!description || !description.attributes) {\n return null;\n }\n const attrs = description.attributes;\n for (const a of attrs) {\n if (a.key === 'name') {\n return a.value;\n }\n }\n return null;\n}\n\nfunction defaultValueScrubber(scrubFields) {\n const patterns = [];\n for (const field of scrubFields) {\n patterns.push(new RegExp(field, 'i'));\n }\n return function (description) {\n const name = nameFromDescription(description);\n if (!name) {\n return false;\n }\n for (const p of patterns) {\n if (p.test(name)) {\n return true;\n }\n }\n return false;\n };\n}\n\nclass Instrumenter {\n constructor(options, telemeter, rollbar, _window, _document) {\n this.options = options;\n let autoInstrument = options.autoInstrument;\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.telemeter = telemeter;\n this.rollbar = rollbar;\n this.diagnostic = rollbar.client.notifier.diagnostic;\n this._window = _window || {};\n this._document = _document || {};\n this.replacements = {\n network: [],\n log: [],\n navigation: [],\n connectivity: [],\n };\n this.eventRemovers = {\n dom: [],\n connectivity: [],\n contentsecuritypolicy: [],\n };\n\n this._location = this._window.location;\n this._lastHref = this._location && this._location.href;\n }\n\n configureScrubbing() {\n const options = this.options;\n this.scrubTelemetryInputs = Boolean(\n options.scrubTelemetryInputs ?? options.replay?.maskAllInputs,\n );\n this.telemetryScrubber = options.telemetryScrubber;\n this.defaultValueScrubber = defaultValueScrubber(options.scrubFields);\n this.maskInputFn = options.replay?.maskInputFn;\n this.maskInputOptions = options.replay?.maskInputOptions || {};\n this.scrubClasses = [\n options.replay?.blockClass,\n options.replay?.ignoreClass,\n options.replay?.maskTextClass,\n ].filter(Boolean);\n this.scrubSelectors = [\n options.replay?.blockSelector,\n options.replay?.ignoreSelector,\n options.replay?.maskTextSelector,\n ].filter(Boolean);\n }\n\n configure(options) {\n this.options = _.merge(this.options, options);\n let autoInstrument = options.autoInstrument;\n const oldSettings = _.merge(this.autoInstrument);\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.instrument(oldSettings);\n }\n\n // eslint-disable-next-line complexity\n instrument(oldSettings) {\n if (this.autoInstrument.network && !(oldSettings && oldSettings.network)) {\n this.instrumentNetwork();\n } else if (\n !this.autoInstrument.network &&\n oldSettings &&\n oldSettings.network\n ) {\n this.deinstrumentNetwork();\n }\n\n if (this.autoInstrument.log && !(oldSettings && oldSettings.log)) {\n this.instrumentConsole();\n } else if (!this.autoInstrument.log && oldSettings && oldSettings.log) {\n this.deinstrumentConsole();\n }\n\n if (this.autoInstrument.dom && !(oldSettings && oldSettings.dom)) {\n this.instrumentDom();\n } else if (!this.autoInstrument.dom && oldSettings && oldSettings.dom) {\n this.deinstrumentDom();\n }\n\n if (\n this.autoInstrument.navigation &&\n !(oldSettings && oldSettings.navigation)\n ) {\n this.instrumentNavigation();\n } else if (\n !this.autoInstrument.navigation &&\n oldSettings &&\n oldSettings.navigation\n ) {\n this.deinstrumentNavigation();\n }\n\n if (\n this.autoInstrument.connectivity &&\n !(oldSettings && oldSettings.connectivity)\n ) {\n this.instrumentConnectivity();\n } else if (\n !this.autoInstrument.connectivity &&\n oldSettings &&\n oldSettings.connectivity\n ) {\n this.deinstrumentConnectivity();\n }\n\n if (\n this.autoInstrument.contentSecurityPolicy &&\n !(oldSettings && oldSettings.contentSecurityPolicy)\n ) {\n this.instrumentContentSecurityPolicy();\n } else if (\n !this.autoInstrument.contentSecurityPolicy &&\n oldSettings &&\n oldSettings.contentSecurityPolicy\n ) {\n this.deinstrumentContentSecurityPolicy();\n }\n }\n\n deinstrumentNetwork() {\n restore(this.replacements, 'network');\n }\n\n instrumentNetwork() {\n const self = this;\n\n function wrapProp(prop, xhr) {\n if (prop in xhr && _.isFunction(xhr[prop])) {\n replace(xhr, prop, function (orig) {\n return self.rollbar.wrap(orig);\n });\n }\n }\n\n if ('XMLHttpRequest' in this._window) {\n const xhrp = this._window.XMLHttpRequest.prototype;\n replace(\n xhrp,\n 'open',\n function (orig) {\n return function (method, url) {\n const isUrlObject = _isUrlObject(url);\n if (_.isType(url, 'string') || isUrlObject) {\n url = isUrlObject ? url.toString() : url;\n if (this.__rollbar_xhr) {\n this.__rollbar_xhr.method = method;\n this.__rollbar_xhr.url = url;\n this.__rollbar_xhr.status_code = null;\n this.__rollbar_xhr.start_time_ms = _.now();\n this.__rollbar_xhr.end_time_ms = null;\n } else {\n this.__rollbar_xhr = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'setRequestHeader',\n function (orig) {\n return function (header, value) {\n // If xhr.open is async, __rollbar_xhr may not be initialized yet.\n if (!this.__rollbar_xhr) {\n this.__rollbar_xhr = {};\n }\n if (_.isType(header, 'string') && _.isType(value, 'string')) {\n if (self.autoInstrument.networkRequestHeaders) {\n if (!this.__rollbar_xhr.request_headers) {\n this.__rollbar_xhr.request_headers = {};\n }\n this.__rollbar_xhr.request_headers[header] = value;\n }\n // We want the content type even if request header telemetry is off.\n if (header.toLowerCase() === 'content-type') {\n this.__rollbar_xhr.request_content_type = value;\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'send',\n function (orig) {\n return function (data) {\n const xhr = this;\n\n function onreadystatechangeHandler() {\n if (xhr.__rollbar_xhr) {\n if (xhr.__rollbar_xhr.status_code === null) {\n xhr.__rollbar_xhr.status_code = 0;\n if (self.autoInstrument.networkRequestBody) {\n xhr.__rollbar_xhr.request = data;\n }\n xhr.__rollbar_event = self.captureNetwork(\n xhr.__rollbar_xhr,\n 'xhr',\n undefined,\n );\n }\n if (xhr.readyState < 2) {\n xhr.__rollbar_xhr.start_time_ms = _.now();\n }\n if (xhr.readyState > 3) {\n const end_time_ms = _.now();\n xhr.__rollbar_xhr.end_time_ms = end_time_ms;\n\n let headers = null;\n xhr.__rollbar_xhr.response_content_type =\n xhr.getResponseHeader('Content-Type');\n if (self.autoInstrument.networkResponseHeaders) {\n const headersConfig =\n self.autoInstrument.networkResponseHeaders;\n headers = {};\n try {\n let header;\n if (headersConfig === true) {\n const allHeaders = xhr.getAllResponseHeaders();\n if (allHeaders) {\n const arr = allHeaders.trim().split(/[\\r\\n]+/);\n let parts, value;\n for (const h of arr) {\n parts = h.split(': ');\n header = parts.shift();\n value = parts.join(': ');\n headers[header] = value;\n }\n }\n } else {\n for (const h of headersConfig) {\n headers[h] = xhr.getResponseHeader(h);\n }\n }\n } catch (_e) {\n /* we ignore the errors here that could come from different\n * browser issues with the xhr methods */\n }\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n try {\n body = xhr.responseText;\n } catch (_e) {\n /* ignore errors from reading responseText */\n }\n }\n let response = null;\n if (body || headers) {\n response = {};\n if (body) {\n if (\n self.isJsonContentType(\n xhr.__rollbar_xhr.response_content_type,\n )\n ) {\n response.body = self.scrubJson(body);\n } else {\n response.body = body;\n }\n }\n if (headers) {\n response.headers = headers;\n }\n }\n if (response) {\n xhr.__rollbar_xhr.response = response;\n }\n try {\n let code = xhr.status;\n code = code === 1223 ? 204 : code;\n xhr.__rollbar_xhr.status_code = code;\n self.addOtelNetworkResponse(\n xhr.__rollbar_event,\n end_time_ms,\n code,\n );\n xhr.__rollbar_event.level =\n self.telemeter.levelFromStatus(code);\n self.errorOnHttpStatus(xhr.__rollbar_xhr);\n } catch (_e) {\n /* ignore possible exception from xhr.status */\n }\n }\n }\n }\n\n wrapProp('onload', xhr);\n wrapProp('onerror', xhr);\n wrapProp('onprogress', xhr);\n\n if (\n 'onreadystatechange' in xhr &&\n _.isFunction(xhr.onreadystatechange)\n ) {\n replace(xhr, 'onreadystatechange', function (orig) {\n return self.rollbar.wrap(\n orig,\n undefined,\n onreadystatechangeHandler,\n );\n });\n } else {\n xhr.onreadystatechange = onreadystatechangeHandler;\n }\n if (xhr.__rollbar_xhr && self.trackHttpErrors()) {\n xhr.__rollbar_xhr.stack = new Error().stack;\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n }\n\n if ('fetch' in this._window) {\n replace(\n this._window,\n 'fetch',\n function (orig) {\n return function (_fn, _t) {\n const args = [...arguments];\n const input = args[0];\n let method = 'GET';\n let url;\n const isUrlObject = _isUrlObject(input);\n if (_.isType(input, 'string') || isUrlObject) {\n url = isUrlObject ? input.toString() : input;\n } else if (input) {\n url = input.url;\n if (input.method) {\n method = input.method;\n }\n }\n if (args[1] && args[1].method) {\n method = args[1].method;\n }\n const metadata = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n if (args[1] && args[1].headers) {\n // Argument may be a Headers object, or plain object. Ensure here that\n // we are working with a Headers object with case-insensitive keys.\n const reqHeaders = headers(args[1].headers);\n\n metadata.request_content_type = reqHeaders.get('Content-Type');\n\n if (self.autoInstrument.networkRequestHeaders) {\n metadata.request_headers = self.fetchHeaders(\n reqHeaders,\n self.autoInstrument.networkRequestHeaders,\n );\n }\n }\n\n if (self.autoInstrument.networkRequestBody) {\n if (args[1] && args[1].body) {\n metadata.request = args[1].body;\n } else if (\n args[0] &&\n !_.isType(args[0], 'string') &&\n args[0].body\n ) {\n metadata.request = args[0].body;\n }\n }\n const telemetryEvent = self.captureNetwork(\n metadata,\n 'fetch',\n undefined,\n );\n if (self.trackHttpErrors()) {\n metadata.stack = new Error().stack;\n }\n\n // Start our handler before returning the promise. This allows resp.clone()\n // to execute before other handlers touch the response.\n return orig.apply(this, args).then(function (resp) {\n const end_time_ms = _.now();\n metadata.end_time_ms = end_time_ms;\n metadata.status_code = resp.status;\n self.addOtelNetworkResponse(\n telemetryEvent,\n end_time_ms,\n resp.status,\n );\n\n metadata.response_content_type = resp.headers.get('Content-Type');\n let headers = null;\n if (self.autoInstrument.networkResponseHeaders) {\n headers = self.fetchHeaders(\n resp.headers,\n self.autoInstrument.networkResponseHeaders,\n );\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n if (typeof resp.text === 'function') {\n // Response.text() is not implemented on some platforms\n // The response must be cloned to prevent reading (and locking) the original stream.\n // This must be done before other handlers touch the response.\n body = resp.clone().text(); //returns a Promise\n }\n }\n if (headers || body) {\n metadata.response = {};\n if (body) {\n // Test to ensure body is a Promise, which it should always be.\n if (typeof body.then === 'function') {\n body.then(function (text) {\n if (\n text &&\n self.isJsonContentType(metadata.response_content_type)\n ) {\n metadata.response.body = self.scrubJson(text);\n } else {\n metadata.response.body = text;\n }\n });\n } else {\n metadata.response.body = body;\n }\n }\n if (headers) {\n metadata.response.headers = headers;\n }\n }\n self.errorOnHttpStatus(metadata);\n return resp;\n });\n };\n },\n this.replacements,\n 'network',\n );\n }\n }\n\n captureNetwork(metadata, subtype, rollbarUUID) {\n if (\n metadata.request &&\n this.isJsonContentType(metadata.request_content_type)\n ) {\n metadata.request = this.scrubJson(metadata.request);\n }\n return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID);\n }\n\n isJsonContentType(contentType) {\n return contentType &&\n _.isType(contentType, 'string') &&\n contentType.toLowerCase().includes('json')\n ? true\n : false;\n }\n\n addOtelNetworkResponse(event, endTimeMs, statusCode) {\n if (event.otelAttributes) {\n event.otelAttributes['response.timeUnixNano'] = (\n endTimeMs * 1e6\n ).toString();\n event.otelAttributes.statusCode = statusCode;\n }\n }\n\n scrubJson(json) {\n return JSON.stringify(scrub(JSON.parse(json), this.options.scrubFields));\n }\n\n fetchHeaders(inHeaders, headersConfig) {\n const outHeaders = {};\n try {\n if (headersConfig === true) {\n if (typeof inHeaders.entries === 'function') {\n // Headers.entries() is not implemented in IE\n const allHeaders = inHeaders.entries();\n let currentHeader = allHeaders.next();\n while (!currentHeader.done) {\n outHeaders[currentHeader.value[0]] = currentHeader.value[1];\n currentHeader = allHeaders.next();\n }\n }\n } else {\n for (const h of headersConfig) {\n outHeaders[h] = inHeaders.get(h);\n }\n }\n } catch (_e) {\n /* ignore probable IE errors */\n }\n return outHeaders;\n }\n\n trackHttpErrors() {\n return (\n this.autoInstrument.networkErrorOnHttp5xx ||\n this.autoInstrument.networkErrorOnHttp4xx ||\n this.autoInstrument.networkErrorOnHttp0\n );\n }\n\n errorOnHttpStatus(metadata) {\n const status = metadata.status_code;\n\n if (\n (status >= 500 && this.autoInstrument.networkErrorOnHttp5xx) ||\n (status >= 400 && this.autoInstrument.networkErrorOnHttp4xx) ||\n (status === 0 && this.autoInstrument.networkErrorOnHttp0)\n ) {\n const error = new Error('HTTP request failed with Status ' + status);\n error.stack = metadata.stack;\n this.rollbar.error(error, { skipFrames: 1 });\n }\n }\n\n deinstrumentConsole() {\n let b;\n while (this.replacements['log'].length) {\n b = this.replacements['log'].shift();\n this._window.console[b[0]] = b[1];\n }\n }\n\n instrumentConsole() {\n if (!this._window?.console?.log) {\n return;\n }\n\n const self = this;\n const c = this._window.console;\n\n function wrapConsole(method) {\n // eslint-disable-next-line strict\n 'use strict'; // See https://github.com/rollbar/rollbar.js/pull/778\n\n const orig = c[method];\n const origConsole = c;\n const level = method === 'warn' ? 'warning' : method;\n c[method] = function () {\n const args = Array.prototype.slice.call(arguments);\n const message = _.formatArgsAsString(args);\n self.telemeter.captureLog(message, level, null, _.now());\n if (orig) {\n Function.prototype.apply.call(orig, origConsole, args);\n }\n };\n self.replacements['log'].push([method, orig]);\n }\n const methods = ['debug', 'info', 'warn', 'error', 'log'];\n try {\n for (const m of methods) {\n wrapConsole(m);\n }\n } catch (e) {\n this.diagnostic.instrumentConsole = { error: e.message };\n }\n }\n\n deinstrumentDom() {\n this.removeListeners('dom');\n }\n\n instrumentDom() {\n this.addListener(\n 'dom',\n this._window,\n ['click', 'dblclick', 'contextmenu'],\n (e) => this.handleEvent('click', e),\n );\n this.addListener(\n 'dom',\n this._window,\n ['dragstart', 'dragend', 'dragenter', 'dragleave', 'drop'],\n (e) => this.handleEvent('dragdrop', e),\n );\n this.addListener('dom', this._window, ['blur', 'focus'], (e) =>\n this.handleEvent('focus', e),\n );\n this.addListener('dom', this._window, ['submit', 'invalid'], (e) =>\n this.handleEvent('form', e),\n );\n this.addListener('dom', this._window, ['input', 'change'], (e) =>\n this.handleEvent('input', e),\n );\n this.addListener('dom', this._window, ['resize'], (e) =>\n this.handleEvent('resize', e),\n );\n this.addListener('dom', this._document, ['DOMContentLoaded'], (e) =>\n this.handleEvent('contentLoaded', e),\n );\n }\n\n handleEvent(name, evt) {\n try {\n return {\n click: this.handleClick,\n dragdrop: this.handleDrag,\n focus: this.handleFocus,\n form: this.handleForm,\n input: this.handleInput,\n resize: this.handleResize,\n contentLoaded: this.handleContentLoaded,\n }[name].call(this, evt);\n } catch (exc) {\n logger.log(`${name} handler error`, evt, exc, exc.stack);\n }\n }\n\n handleContentLoaded(_evt) {\n this.rollbar.triggerReplay({\n type: 'navigation',\n path: new URL(this._location.href).pathname,\n });\n }\n\n handleClick(evt) {\n const tagName = evt.target?.tagName.toLowerCase();\n if (['input', 'select', 'textarea'].includes(tagName)) return;\n\n this.telemeter.captureClick({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n timestamp: _.now(),\n });\n }\n\n handleFocus(evt) {\n const type = evt.type;\n const element = evt.target?.window\n ? 'window'\n : domUtil.elementString(evt.target);\n\n this.telemeter.captureFocus({\n type: type,\n isSynthetic: !evt.isTrusted,\n element,\n timestamp: _.now(),\n });\n }\n\n handleForm(_evt) {\n // TODO: implement form event handling\n //const type = evt.type;\n //const elementString = evt.target?.window\n // ? 'window'\n // : domUtil.elementString(evt.target);\n }\n\n handleResize(evt) {\n const textZoomRatio = window.screen.width / window.innerWidth;\n\n this.telemeter.captureResize({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n width: window.innerWidth,\n height: window.innerHeight,\n textZoomRatio: textZoomRatio,\n timestamp: _.now(),\n });\n }\n\n handleDrag(evt) {\n const type = evt.type;\n let kinds, mediaTypes, dropEffect, effectAllowed;\n\n if (type === 'drop') {\n kinds = [];\n mediaTypes = [];\n const objs = [...evt.dataTransfer.files, ...evt.dataTransfer.items];\n for (const o of objs) {\n if (o.kind && o.type) {\n kinds.push(o.kind);\n mediaTypes.push(o.type);\n }\n }\n }\n if (['drop', 'dragstart'].includes(type)) {\n dropEffect = evt.dataTransfer?.dropEffect;\n effectAllowed = evt.dataTransfer?.effectAllowed;\n }\n\n this.telemeter.captureDragDrop({\n type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n dropEffect: dropEffect,\n effectAllowed: effectAllowed,\n kinds: JSON.stringify(kinds),\n mediaTypes: JSON.stringify(mediaTypes),\n timestamp: _.now(),\n });\n }\n\n /*\n * Applies Rollbar telemetry scrubbing options to the dom input value.\n * When replay options are present, applies those as well.\n */\n scrubInputValue(value, element, tagName, inputType) {\n const mask = '******';\n\n if (inputType === 'password') {\n return mask;\n }\n\n if (this.scrubTelemetryInputs) {\n return mask;\n } else {\n const description = domUtil.describeElement(element);\n if (this.telemetryScrubber) {\n if (this.telemetryScrubber(description)) {\n return mask;\n }\n } else if (this.defaultValueScrubber(description)) {\n return mask;\n }\n }\n\n // Apply replay options regardless of other scrubbing\n if (\n domUtil.isMatchingElement(element, this.scrubClasses, this.scrubSelectors)\n ) {\n return mask;\n }\n\n // This check is last since maskInputFn returns a modified value rather\n // than a boolean, which would cause an early return even if the value\n // was not scrubbed.\n if (\n this.maskInputOptions[tagName.toLowerCase()] ||\n this.maskInputOptions[inputType]\n ) {\n if (this.maskInputFn) {\n return this.maskInputFn(value, element);\n } else {\n return mask;\n }\n }\n\n return value;\n }\n\n /*\n * Uses the `input` event for everything except radio and checkbox inputs.\n * For those, it uses the `change` event.\n */\n handleInput(evt) {\n const type = evt.type;\n const tagName = evt.target?.tagName.toLowerCase();\n let value = evt.target?.value;\n let inputType = evt.target?.attributes?.type?.value || evt.target?.type;\n\n if (value !== undefined) {\n value = this.scrubInputValue(value, evt.target, tagName, inputType);\n }\n\n switch (type) {\n case 'input':\n if (['radio', 'checkbox'].includes(inputType)) return;\n if (['select', 'textarea'].includes(tagName)) {\n inputType = tagName;\n }\n break;\n\n case 'change':\n if (!['radio', 'checkbox'].includes(inputType)) return;\n if (inputType === 'checkbox') {\n value = evt.target?.checked;\n }\n break;\n }\n\n this.telemeter.captureInput({\n type: inputType,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n value,\n timestamp: _.now(),\n });\n }\n\n deinstrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n restore(this.replacements, 'navigation');\n }\n\n instrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n const self = this;\n replace(\n this._window,\n 'onpopstate',\n function (orig) {\n return function () {\n const current = self._location.href;\n self.handleUrlChange(self._lastHref, current);\n if (orig) {\n orig.apply(this, arguments);\n }\n };\n },\n this.replacements,\n 'navigation',\n );\n\n replace(\n this._window.history,\n 'pushState',\n function (orig) {\n return function () {\n const url = arguments.length > 2 ? arguments[2] : undefined;\n if (url) {\n self.handleUrlChange(self._lastHref, String(url));\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'navigation',\n );\n }\n\n handleUrlChange(from, to) {\n const parsedHref = urlparser.parse(this._location.href);\n const parsedTo = urlparser.parse(to);\n const parsedFrom = urlparser.parse(from);\n this._lastHref = to;\n if (\n parsedHref.protocol === parsedTo.protocol &&\n parsedHref.host === parsedTo.host\n ) {\n to = parsedTo.path + (parsedTo.hash || '');\n }\n if (\n parsedHref.protocol === parsedFrom.protocol &&\n parsedHref.host === parsedFrom.host\n ) {\n from = parsedFrom.path + (parsedFrom.hash || '');\n }\n this.telemeter.captureNavigation(from, to, null, _.now());\n this.rollbar.triggerReplay({\n type: 'navigation',\n path: to,\n });\n }\n\n deinstrumentConnectivity = function () {\n this.removeListeners('connectivity');\n };\n\n instrumentConnectivity() {\n const self = this;\n this.addListener(\n 'connectivity',\n this._window,\n ['online', 'offline'],\n (evt) => self.handleConnectivity(evt),\n );\n }\n\n handleConnectivity(evt) {\n const type = evt.type;\n\n this.telemeter.captureConnectivityChange({\n type,\n isSynthetic: !evt.isTrusted,\n timestamp: _.now(),\n });\n }\n\n handleCspEvent(cspEvent) {\n let message =\n 'Security Policy Violation: ' +\n 'blockedURI: ' +\n cspEvent.blockedURI +\n ', ' +\n 'violatedDirective: ' +\n cspEvent.violatedDirective +\n ', ' +\n 'effectiveDirective: ' +\n cspEvent.effectiveDirective +\n ', ';\n\n if (cspEvent.sourceFile) {\n message +=\n 'location: ' +\n cspEvent.sourceFile +\n ', ' +\n 'line: ' +\n cspEvent.lineNumber +\n ', ' +\n 'col: ' +\n cspEvent.columnNumber +\n ', ';\n }\n\n message += 'originalPolicy: ' + cspEvent.originalPolicy;\n\n this.telemeter.captureLog(message, 'error', null, _.now());\n this.handleCspError(message);\n }\n\n handleCspError(message) {\n if (this.autoInstrument.errorOnContentSecurityPolicy) {\n this.rollbar.error(message);\n }\n }\n\n deinstrumentContentSecurityPolicy() {\n this.removeListeners('contentsecuritypolicy');\n }\n\n instrumentContentSecurityPolicy() {\n if (!('addEventListener' in this._document)) {\n return;\n }\n\n const cspHandler = this.handleCspEvent.bind(this);\n this.addListener(\n 'contentsecuritypolicy',\n this._document,\n ['securitypolicyviolation'],\n cspHandler,\n );\n }\n\n addListener(section, obj, types, handler) {\n if (obj.addEventListener) {\n for (const t of types) {\n const options = { capture: true, passive: true };\n obj.addEventListener(t, handler, options, true);\n this.eventRemovers[section].push(function () {\n obj.removeEventListener(t, handler, options);\n });\n }\n }\n }\n\n removeListeners(section) {\n let r;\n while (this.eventRemovers[section].length) {\n r = this.eventRemovers[section].shift();\n r();\n }\n }\n}\n\nfunction _isUrlObject(input) {\n return typeof URL !== 'undefined' && input instanceof URL;\n}\n\nexport default Instrumenter;\n","import { hasOwn } from '../utility.js';\n\nfunction wrapGlobals(window, handler, shim) {\n if (!window) {\n return;\n }\n // Adapted from https://github.com/bugsnag/bugsnag-js\n var globals =\n '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'.split(\n ',',\n );\n var i, global;\n for (i = 0; i < globals.length; ++i) {\n global = globals[i];\n\n if (window[global] && window[global].prototype) {\n _extendListenerPrototype(handler, window[global].prototype, shim);\n }\n }\n}\n\nfunction _extendListenerPrototype(handler, prototype, shim) {\n if (hasOwn(prototype, 'addEventListener')) {\n var oldAddEventListener = prototype.addEventListener;\n while (\n oldAddEventListener._rollbarOldAdd &&\n oldAddEventListener.belongsToShim\n ) {\n oldAddEventListener = oldAddEventListener._rollbarOldAdd;\n }\n var addFn = function (event, callback, bubble) {\n oldAddEventListener.call(this, event, handler.wrap(callback), bubble);\n };\n addFn._rollbarOldAdd = oldAddEventListener;\n addFn.belongsToShim = shim;\n prototype.addEventListener = addFn;\n\n var oldRemoveEventListener = prototype.removeEventListener;\n while (\n oldRemoveEventListener._rollbarOldRemove &&\n oldRemoveEventListener.belongsToShim\n ) {\n oldRemoveEventListener = oldRemoveEventListener._rollbarOldRemove;\n }\n var removeFn = function (event, callback, bubble) {\n oldRemoveEventListener.call(\n this,\n event,\n (callback && callback._rollbar_wrapped) || callback,\n bubble,\n );\n };\n removeFn._rollbarOldRemove = oldRemoveEventListener;\n removeFn.belongsToShim = shim;\n prototype.removeEventListener = removeFn;\n }\n}\n\nexport default wrapGlobals;\n","import scrub from '../scrub.js';\nimport Telemeter from '../telemetry.js';\nimport Tracing from '../tracing/tracing.js';\nimport truncation from '../truncation.js';\n\nimport Rollbar from './core.js';\nimport Instrumenter from './telemetry.js';\nimport wrapGlobals from './wrapGlobals.js';\n\nRollbar.setComponents({\n telemeter: Telemeter,\n instrumenter: Instrumenter,\n wrapGlobals: wrapGlobals,\n scrub: scrub,\n truncation: truncation,\n tracing: Tracing,\n});\n\nexport default Rollbar;\n","import rollbar from '../rollbar.js';\n\nvar options = (typeof window !== 'undefined') && window._rollbarConfig;\nvar alias = options && options.globalAlias || 'Rollbar';\nvar shimRunning = (typeof window !== 'undefined') && window[alias] && typeof window[alias].shimId === 'function' && window[alias].shimId() !== undefined;\n\nif ((typeof window !== 'undefined') && !window._rollbarStartTime) {\n window._rollbarStartTime = (new Date()).getTime();\n}\n\nif (!shimRunning && options) {\n var Rollbar = new rollbar(options);\n window[alias] = Rollbar;\n} else if (typeof window !== 'undefined') {\n window.rollbar = rollbar;\n window._rollbarDidLoad = true;\n} else if (typeof self !== 'undefined') {\n self.rollbar = rollbar;\n self._rollbarDidLoad = true;\n}\n\nexport default rollbar;\n"],"names":["isType","x","t","typeName","name","_typeof","Error","toString","call","match","toLowerCase","isFunction","f","isNativeFunction","reRegExpChar","funcMatchString","Function","prototype","Object","hasOwnProperty","replace","reIsNative","RegExp","isObject","test","value","hasOwn","obj","prop","isString","String","isFiniteNumber","n","Number","isFinite","isIterable","i","type","isError","e","isPromise","p","then","isBrowser","window","redact","uuid4","d","now","uuid","c","r","Math","random","floor","LEVELS","debug","info","warning","error","critical","sanitizeHref","url","urlObject","URL","password","search","_","sanitizeUrl","baseUrlParts","parseUri","anchor","source","query","parseUriOptions","strictMode","key","q","parser","strict","loose","str","undefined","o","m","exec","uri","l","length","$0","$1","$2","addParamsAndAccessTokenToPath","accessToken","options","params","access_token","paramsArray","k","push","join","sort","path","qs","indexOf","h","substring","formatUrl","u","protocol","port","hostname","result","stringify","backup","JSON","jsonError","backupError","maxByteSize","string","count","code","charCodeAt","jsonParse","s","parse","makeUnhandledStackInfo","message","lineno","colno","mode","backupMessage","errorParser","location","line","column","func","guessFunctionName","context","gatherContext","href","document","useragent","navigator","userAgent","stack","wrapCallback","logger","err","resp","nonCircularClone","seen","clone","newSeen","includes","slice","createItem","args","notifier","requestKeys","lambdaContext","custom","callback","request","arg","extraArgs","diagnostic","argTypes","typ","DOMException","j","len","item","timestamp","data","setCustomItemKeys","_originalArgs","original_arg_types","level","skipFrames","addErrorContext","errors","contextAdded","_iterator","_createForOfIteratorHelper","_step","done","merge","rollbarContext","error_context","TELEMETRY_TYPES","TELEMETRY_LEVELS","arrayIncludes","arr","val","_iterator2","_step2","entry","createTelemetryEvent","metadata","event","addItemAttributes","itemData","attributes","_iterator3","_step3","a","get","keys","split","_e","set","setPrototypeOf","temp","replacement","formatArgsAsString","substr","Date","filterIp","requestData","captureIp","newIp","parts","pop","beginning","slashIdx","terminal","concat","handleOptions","current","input","payload","updateDeprecatedOptions","overwriteScrubFields","scrubFields","hostWhiteList","hostSafeList","log","hostBlackList","hostBlockList","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","constructor","src","copy","create","arguments","traverse","v","isObj","isArray","seenIndex","mapped","same","scrub","scrubPaths","scrubPath","paramRes","_getScrubFieldRegexs","queryRes","_getScrubQueryParamRegexs","redactQueryParam","dummy0","paramPart","paramScrubber","regex","valScrubber","scrubber","tmpV","last","_iterator4","entries","_step4","_step4$value","_slicedToArray","index","ret","_iterator5","_step5","field","pat","_iterator6","_step6","MAX_EVENTS","fromMillis","millis","trunc","round","Telemeter","tracing","_this$tracing","_classCallCheck","queue","maxTelemetryEvents","maxQueueSize","max","min","telemetrySpan","startSpan","_createClass","configure","oldOptions","newMaxEvents","deleteCount","splice","copyEvents","events","Array","filterTelemetry","filter","map","_ref","_otelAttributes","otelAttributes","_objectWithoutProperties","_excluded","exportTelemetrySpan","end","capture","rollbarUUID","getLevel","timestamp_ms","body","_exc","captureEvent","captureError","_this$telemetrySpan","addEvent","captureLog","_this$telemetrySpan2","_objectSpread","captureNetwork","subtype","_metadata$response","_metadata$response2","_this$telemetrySpan3","levelFromStatus","status_code","endTimeNano","end_time_ms","method","statusCode","request_headers","response","headers","requestBody","responseBody","start_time_ms","captureDom","element","checked","captureInput","_ref2","_this$telemetrySpan4","isSynthetic","endTimeUnixNano","_getRepeatedEvent","_updateRepeatedEvent","captureClick","_ref3","_this$telemetrySpan5","lastEvent","_lastEvent","target","duration","height","width","textZoomRatio","rate","list","captureFocus","_ref4","_this$telemetrySpan6","captureResize","_ref5","_this$telemetrySpan7","captureDragDrop","_ref6","_this$telemetrySpan8","dropEffect","effectAllowed","kinds","mediaTypes","captureNavigation","from","to","_this$telemetrySpan9","captureDomContentLoaded","ts","getTime","captureLoad","captureConnectivityChange","_ref7","_this$telemetrySpan0","_captureRollbarItem","includeItemsInTelemetry","shift","defaultLevel","manual","Context","parentContext","_currentContext","Map","getValue","setValue","deleteValue","self","delete","ROOT_CONTEXT","ContextManager","currentContext","active","enterContext","previousContext","exitContext","with","fn","thisArg","_len","_key","apply","createContextKey","Symbol","for","toMillis","hrtime","toNanos","add","b","usePerformance","performance","timeOrigin","isHrTime","SpanExporter","api","export","spans","_resultCallback","spanExportQueue","_toConsumableArray","toPayload","_this","resourceSpans","resource","scopeMap","span","scopeKey","instrumentationScope","version","has","scope","_transformSpan","_transformResource","scopeSpans","values","scopeData","_transformInstrumentationScope","post","postSpans","_this2","transformAttributes","_transformAnyValue","transformEvents","timeUnixNano","time","traceId","spanContext","spanId","parentSpanId","kind","startTimeUnixNano","startTime","endTime","_this3","keyValues","_this4","attr","_this5","stringValue","isInteger","intValue","doubleValue","boolValue","arrayValue","kvlistValue","gen","bytes","randomBytes","Uint8Array","crypto","getRandomValues","randHex","byte","padStart","id","SESSION_KEY","Session","_defineProperty","session","_attributes","init","attrs","getSession","createSession","initSessionAttributes","serializedSession","sessionStorage","getItem","_unused","createdAt","setSession","sessionString","setItem","_unused2","setAttributes","setUser","user","email","username","_navigator$userAgentD","_navigator$userAgentD2","_navigator$userAgentD3","userAgentData","brands","language","mobile","platform","levels","warn","disable","_len2","_key2","_len3","_key3","_len4","_key4","_len5","_key5","logLevel","unshift","console","SpanProcessor","exporter","pendingSpans","transforms","userTransform","bind","addTransform","transformFn","transformSpan","applyTransforms","transform","onStart","_parentContext","onEnd","Span","initReadableSpan","spanProcessor","_options$session","status","links","ended","droppedAttributesCount","droppedEventsCount","droppedLinksCount","setAttribute","_i","_Object$entries","_Object$entries$_i","isRecording","Tracer","_this$tracing$resourc","_options$resource","_this$tracing$session","contextManager","parentSpan","getSpan","parentSpanContext","traceFlags","traceState","SPAN_KEY","Tracing","gWindow","createTracer","initSession","_this$options$payload","_this$options$payload2","environment","idGen","tracer","getTracer","addSpanTransform","setSpan","_this$contextManager","withSpan","default","raw","jsonBackup","selectFrames","frames","range","truncateFrames","trace_chain","chain","trace","maybeTruncateValue","truncateStrings","truncator","truncateTraceData","traceData","exception","description","minBody","_step2$value","needsTruncation","maxSize","truncate","strategies","strategy","results","buildPayload","contextResult","getTransportFromOptions","defaults","timeout","transport","detectTransport","proxy","endpoint","opts","pathname","defaultTransport","fetch","XMLHttpRequest","transportOptions","transportAPI","host","appendPathToPath","base","baseTrailingSlash","pathBeginningSlash","iterator","toStringTag","Generator","_regeneratorDefine2","y","G","TypeError","return","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","__proto__","displayName","_regenerator","w","defineProperty","_regeneratorDefine","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","_asyncToGenerator","_next","_throw","_defineProperties","_toPropertyKey","_toPrimitive","toPrimitive","helpers","defaultOptions","OTLPDefaultOptions","Api","urllib","truncation","_getTransport","OTLPTransportOptions","_getOTLPTransport","_postPromise","reject","postItem","setTimeout","_postSpans","_callee","_args","_context","_x","buildJsonPayload","stringifyResult","postJsonPayload","jsonPayload","_options$tracing","reportLevel","uncaughtErrorLevel","maxItems","itemsPerMin","commonScrubFields","apiScrubFields","requestScrubFields","commonScrubHeaders","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","allowEmpty","parseStack","stackString","parseV8OrIeString","parseFFOrSafariString","extractLocation","urlLike","regExp","applySlice","lines","filtered","sanitizedLine","locationParts","functionName","fileName","function","file","col","functionNameRegex","matches","parseOpera9","parseOpera10","parseOpera11","lineRE","tokens","functionCall","argsRaw","parse$1","parseV8OrIE$1","parseFFOrSafari$1","parseOpera$1","parseOpera9$1","parseOpera10$1","parseOpera11$1","stackframesLiteToStackframes","liteStackframes","liteStackframe","lineNumber","columnNumber","parseErrorStack","UNKNOWN_FUNCTION","ERR_CLASS_REGEXP","Frame","stackFrame","_stackFrame","Stack","skip","getStack","parserStack","_mostSpecificErrorName","rawStack","rawException","nested","cause","traceChain","guessErrorClass","errMsg","errClassMatch","errClass","constructorName","checkLevel","settings","levelVal","reportLevelVal","userCheckIgnore","isUncaught","Boolean","_isUncaught","onSendCallback","checkIgnore","urlIsNotBlockListed","urlIsOnAList","urlIsSafeListed","matchFrames","block","frame","filename","urlRegex","listLength","frameLength","safeOrBlock","traces","tracesLength","listName","messageIsIgnored","ignoredMessages","rIgnoredMessage","messages","messagesFromItem","Notifier","_this$queue","enabled","addPendingItem","originalError","_applyTransforms","removePendingItem","addItem","transformIndex","transformsLength","next","Queue","rateLimiter","replay","predicates","pendingItems","pendingRequests","retryQueue","retryHandle","waitCallback","waitIntervalID","_this$api","addPredicate","predicate","idx","originalItem","predicateResult","_applyPredicates","stop","_maybeLog","transmit","replayId","_makeApiRequest","_dequeuePendingRequest","sendOrDiscardReplay","_this$replay","discard","wait","_maybeCallWait","clearInterval","setInterval","rateLimitResponse","shouldSend","_maybeRetry","shouldRetry","retryInterval","RETRIABLE_ERRORS","maxRetries","retries","_retryApiRequest","retryObject","verbose","RateLimiter","counter","perMinCounter","platformOptions","configureGlobal","itemsPerMinute","globalSettings","elapsedTime","globalRateLimit","globalRateLimitPerMin","checkRate","shouldSendValue","underGlobalLimit","perMinute","setPlatformOptions","limit","ignoreRateLimit","limitPerMin","errorResult","rateLimitPayload","msg","extra","framework","Rollbar","telemeter","validateTracer","_configuredOptions","setStackTraceLimit","lastError","lastErrorHash","global","payloadData","_defaultLogLevel","_log","sendJsonPayload","ignoreDuplicateErrors","_sameAsLastError","_addItemAttributes","_addTracingInfo","telemetryEvents","_this$tracing2","sessionId","itemHash","generateItemHash","validateSpan","setTag","opentracingSpanId","toSpanId","opentracingTraceId","toTraceId","opentracing_span_id","opentracing_trace_id","stackTraceLimit","itemToPayload","addPayloadOptions","payloadOptions","addTelemetryData","addMessageWithError","tracePath","newExtra","newItem","promisedItem","addConfigToPayload","sendConfig","configKey","addFunctionOption","addConfiguredOptions","configuredOptions","configured_options","addDiagnosticKeys","client","is_anonymous","is_uncaught","raw_error","constructor_name","failed","captureUncaughtExceptions","handler","shim","oldOnError","_rollbarOldOnError","onerror","handleAnonymousErrors","_rollbarWindowOnError","old","_rollbarWrappedError","_rollbarContext","handleUncaughtException","anonymousErrorsPending","captureUnhandledRejections","_rollbarURH","belongsToShim","removeEventListener","rejectionHandler","evt","reason","promise","detail","handleUnhandledRejection","addEventListener","autoStart","triggerDefaults","samplingRatio","preDuration","postDuration","triggers","logErrors","logEmits","inlineStylesheet","inlineImages","collectFonts","maskInputOptions","tel","text","color","date","month","number","week","maskAllInputs","blockClass","maskTextClass","ignoreClass","slimDOMOptions","script","comment","headFavicon","headWhitespace","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","handleDomException","handleItemWithError","stackInfo","_savedStackTrace","e2","ensureItemHasSomethingToSay","addBaseInfo","server","addRequestInfo","requestInfo","query_string","remoteString","user_ip","addClientInfo","nav","scr","screen","runtime_ms","_rollbarStartTime","javascript","browser","cookie_enabled","cookieEnabled","addPluginInfo","plugins","navPlugins","cur","addBody","addBodyTraceChain","addBodyTrace","addBodyMessage","stackFromItem","_unhandledStackInfo","traceChainLength","buildTrace","guess","className","errorClass","class","pre","contextLength","mid","sendFrameUrl","endsWith","reverse","addScrubber","scrubFn","makeFetchRequest","controller","timeoutId","AbortController","abort","signal","clearTimeout","respHeaders","isItemRoute","json","catch","makeXhrRequest","requestFactory","_createXMLHTTPObject","onreadystatechange","readyState","parseResponse","responseText","_isSuccess","getResponseHeader","_isNormalFailure","_newRetriableError","ex","exc","open","setRequestHeader","send","_e1","XDomainRequest","xdomainrequest","onprogress","ontimeout","onload","factories","ActiveXObject","xmlhttp","numFactories","Transport","_makeZoneRequest","rootZone","Zone","root","run","_makeRequest","RollbarProxy","_proxyRequest","rollbarProxy","_msg","auth","hash","parseInt","pathParts","API","sharedPredicates","Client","tracingDefaults","sharedTransforms","browserDefaults","globals","replayDefaults","_instance","components","Instrumenter","instrumenter","wrapGlobals","Replay","_gWindow","replayOptions","recorder","start","gDocument","isChrome","chrome","runtime","addTransformsToNotifier","addPredicatesToQueue","setupUnhandledCapture","instrument","setSessionAttributesFromOptions","rollbar","_this$instrumenter","_createItem","triggerDirectReplay","triggerReplay","unhandledExceptionsInitialized","captureUncaught","handleUncaughtExceptions","wrapGlobalEventHandlers","unhandledRejectionsInitialized","handleUnhandledRejections","inspectAnonymousErrors","prepareStackTrace","_stack","_isAnonymous","reasonResult","wrap","_before","ctxFn","_isWrap","_rollbar_wrapped","_wrappedSource","setSessionUser","setSessionAttributes","_this$tracing3","_options$payload","_options$client","_options$payload2","_options$payload3","_options$payload4","person","code_version","codeVersion","loadFull","setComponents","callInstance","maybeCallback","_getFirstFunction","_Rollbar","_len6","_key6","_len7","_key7","_len8","_key8","_len9","_key9","_len0","_key0","_len1","_key1","_len10","_key10","_len11","_key11","_len12","_key12","Headers","FetchHeaders","normalizeName","normalizeValue","iteratorFor","items","forEach","append","header","getOwnPropertyNames","oldValue","replacements","orig","getElementType","getAttribute","isDescribedElement","subtypes","tagName","elementType","getElementFromEvent","doc","elementFromPoint","clientX","clientY","treeToArray","elem","MAX_HEIGHT","out","nextDescription","describeElement","parentNode","elementArrayToString","MAX_LENGTH","separator","separatorLength","nextStr","totalLength","descriptionToString","elementString","desc","classes","attribute","isMatchingElement","selectors","cls","classList","contains","sel","domUtil","urlparser","network","networkResponseHeaders","networkResponseBody","networkRequestHeaders","networkRequestBody","networkErrorOnHttp5xx","networkErrorOnHttp4xx","networkErrorOnHttp0","dom","navigation","connectivity","contentSecurityPolicy","errorOnContentSecurityPolicy","restore","nameFromDescription","defaultValueScrubber","patterns","_patterns","_window","_document","removeListeners","autoInstrument","configureScrubbing","eventRemovers","contentsecuritypolicy","_location","_lastHref","_options$scrubTelemet","_options$replay","_options$replay2","_options$replay3","_options$replay4","_options$replay5","_options$replay6","_options$replay7","_options$replay8","_options$replay9","scrubTelemetryInputs","telemetryScrubber","maskInputFn","scrubClasses","scrubSelectors","blockSelector","ignoreSelector","maskTextSelector","oldSettings","instrumentNetwork","deinstrumentNetwork","instrumentConsole","deinstrumentConsole","instrumentDom","deinstrumentDom","instrumentNavigation","deinstrumentNavigation","instrumentConnectivity","deinstrumentConnectivity","instrumentContentSecurityPolicy","deinstrumentContentSecurityPolicy","wrapProp","xhr","xhrp","isUrlObject","_isUrlObject","__rollbar_xhr","request_content_type","onreadystatechangeHandler","__rollbar_event","response_content_type","headersConfig","allHeaders","getAllResponseHeaders","trim","isJsonContentType","scrubJson","addOtelNetworkResponse","errorOnHttpStatus","trackHttpErrors","_fn","_t","reqHeaders","fetchHeaders","telemetryEvent","contentType","endTimeMs","inHeaders","outHeaders","currentHeader","_this$_window","wrapConsole","origConsole","methods","_i2","_methods","addListener","handleEvent","click","handleClick","dragdrop","handleDrag","focus","handleFocus","form","handleForm","handleInput","resize","handleResize","contentLoaded","handleContentLoaded","_evt","_evt$target","isTrusted","_evt$target2","innerWidth","innerHeight","objs","dataTransfer","files","_evt$dataTransfer","_evt$dataTransfer2","scrubInputValue","inputType","mask","_evt$target3","_evt$target4","_evt$target5","_evt$target6","_evt$target7","chromePackagedApp","app","hasPushState","history","pushState","handleUrlChange","parsedHref","parsedTo","parsedFrom","handleConnectivity","handleCspEvent","cspEvent","blockedURI","violatedDirective","effectiveDirective","sourceFile","originalPolicy","handleCspError","cspHandler","section","types","_iterator7","_step7","_loop","passive","_extendListenerPrototype","oldAddEventListener","_rollbarOldAdd","addFn","bubble","oldRemoveEventListener","_rollbarOldRemove","removeFn","_rollbarConfig","alias","globalAlias","shimRunning","shimId","_rollbarDidLoad"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/rollbar.named-amd.min.js b/dist/rollbar.named-amd.min.js index 04ffe667d..7601aeffa 100644 --- a/dist/rollbar.named-amd.min.js +++ b/dist/rollbar.named-amd.min.js @@ -1,3 +1,3 @@ /*! For license information please see rollbar.named-amd.min.js.LICENSE.txt */ -define("rollbar",[],(function(){return function(){"use strict";var t={d:function(e,r){for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o:function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r:function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.d(e,{default:function(){return qn}});var r={};t.r(r),t.d(r,{parse:function(){return It}});var n=Object.prototype.hasOwnProperty,o=Object.prototype.toString,i=function(t){if(!t||"[object Object]"!==o.call(t))return!1;var e,r=n.call(t,"constructor"),i=t.constructor&&t.constructor.prototype&&n.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!r&&!i)return!1;for(e in t);return void 0===e||n.call(t,e)};var a=function t(){var e,r,n,o,a,s=Object.create(null),u=null,l=arguments.length;for(e=0;e=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r0&&(s||(s=O({})),s.extraArgs=O(p));var g,w={message:i,err:a,custom:s,timestamp:R(),callback:u,notifier:r,diagnostic:{},uuid:(g=R(),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){var e=(g+16*Math.random())%16|0;return g=Math.floor(g/16),("x"===t?e:7&e|8).toString(16)})))};return w.data=w.data||{},function(t,e){e&&void 0!==e.level&&(t.level=e.level,delete e.level);e&&void 0!==e.skipFrames&&(t.skipFrames=e.skipFrames,delete e.skipFrames)}(w,s),n&&l&&(w.request=l),o&&(w.lambdaContext=o),w._originalArgs=t,w.diagnostic.original_arg_types=h,w}var E=["log","network","dom","navigation","error","manual"],I=["critical","error","warning","info","debug"];function j(t,e){for(var r=0;r=1&&r>e}function q(t,e,r,n,o,i,a){var s=null;return r&&(r=new Error(r)),r||n||(s=function(t,e,r,n,o){var i,a=e.environment||e.payload&&e.payload.environment;i=o?"item per minute limit reached, ignoring errors until timeout":"maxItems has been hit, ignoring errors until reset.";var s={body:{message:{body:i,extra:{maxItems:r,itemsPerMinute:n}}},language:"javascript",environment:a,notifier:{version:e.notifier&&e.notifier.version||e.version}};"browser"===t?(s.platform="browser",s.framework="browser-js",s.notifier.name="rollbar-browser-js"):"server"===t?(s.framework=e.framework||"node-js",s.notifier.name=e.notifier.name):"react-native"===t&&(s.framework=e.framework||"react-native",s.notifier.name=e.notifier.name);return s}(t,e,o,i,a)),{error:r,shouldSend:n,payload:s}}L.globalSettings={startTime:R(),maxItems:void 0,itemsPerMinute:void 0},L.prototype.configureGlobal=function(t){void 0!==t.startTime&&(L.globalSettings.startTime=t.startTime),void 0!==t.maxItems&&(L.globalSettings.maxItems=t.maxItems),void 0!==t.itemsPerMinute&&(L.globalSettings.itemsPerMinute=t.itemsPerMinute)},L.prototype.shouldSend=function(t,e){var r=(e=e||R())-this.startTime;(r<0||r>=6e4)&&(this.startTime=e,this.perMinCounter=0);var n=L.globalSettings.maxItems,o=L.globalSettings.itemsPerMinute;if(N(t,n,this.counter))return q(this.platform,this.platformOptions,n+" max items reached",!1);if(N(t,o,this.perMinCounter))return q(this.platform,this.platformOptions,o+" items per minute reached",!1);this.counter++,this.perMinCounter++;var i=!N(t,n,this.counter),a=i;return i=i&&!N(t,o,this.perMinCounter),q(this.platform,this.platformOptions,null,i,n,o,a)},L.prototype.setPlatformOptions=function(t,e){this.platform=t,this.platformOptions=e};var D=L;function M(t){return M="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},M(t)}function U(t,e){for(var r=0;rthis.options.maxRetries&&(o=!1))}o?this._retryApiRequest(r,n):n(e)}},{key:"_retryApiRequest",value:function(t,e){var r=this;this.retryQueue.push({item:t,callback:e}),this.retryHandle||(this.retryHandle=setInterval((function(){for(;r.retryQueue.length;){var t=r.retryQueue.shift();r._makeApiRequest(t.item,t.callback)}}),this.options.retryInterval))}},{key:"_dequeuePendingRequest",value:function(t){var e=this.pendingRequests.indexOf(t);-1!==e&&(this.pendingRequests.splice(e,1),this._maybeCallWait())}},{key:"_maybeLog",value:function(t,e){if(this.logger&&this.options.verbose){var r=e||T(t,"body.trace.exception.message")||T(t,"body.trace_chain.0.exception.message");if(r)return void this.logger.error(r);(r=T(t,"body.message.body"))&&this.logger.log(r)}}},{key:"_maybeCallWait",value:function(){return!(!p(this.waitCallback)||0!==this.pendingItems.length||0!==this.pendingRequests.length||(this.waitIntervalID&&(this.waitIntervalID=clearInterval(this.waitIntervalID)),this.waitCallback(),0))}}],r&&U(e.prototype,r),n&&U(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r,n}();F=W,V=["ECONNRESET","ENOTFOUND","ESOCKETTIMEDOUT","ETIMEDOUT","ECONNREFUSED","EHOSTUNREACH","EPIPE","EAI_AGAIN"],(J=H(J="RETRIABLE_ERRORS"))in F?Object.defineProperty(F,J,{value:V,enumerable:!0,configurable:!0,writable:!0}):F[J]=V;var B=W;function G(t,e){this.queue=t,this.options=e,this.transforms=[],this.diagnostic={}}G.prototype.configure=function(t){this.queue&&this.queue.configure(t);var e=this.options;return this.options=a(e,t),this},G.prototype.addTransform=function(t){return p(t)&&this.transforms.push(t),this},G.prototype.log=function(t,e){if(e&&p(e)||(e=function(){}),!this.options.enabled)return e(new Error("Rollbar is not enabled"));this.queue.addPendingItem(t);var r=t.err;this._applyTransforms(t,function(n,o){if(n)return this.queue.removePendingItem(t),e(n,null);this.queue.addItem(o,e,r,t)}.bind(this))},G.prototype._applyTransforms=function(t,e){var r=-1,n=this.transforms.length,o=this.transforms,i=this.options,a=function(t,s){t?e(t,null):++r!==n?o[r](s,i,a):e(null,s)};a(null,t)};var $=G;function z(t,e,r,n,o,i,s){this.options=a(t),this.logger=r,z.rateLimiter.configureGlobal(this.options),z.rateLimiter.setPlatformOptions(s,this.options),this.api=e,this.queue=new B(z.rateLimiter,e,r,this.options,i),this.tracing=o;var u=this.options.tracer||null;Z(u)?(this.tracer=u,this.options.tracer="opentracing-tracer-enabled",this.options._configuredOptions.tracer="opentracing-tracer-enabled"):this.tracer=null,this.notifier=new $(this.queue,this.options),this.telemeter=n,X(t),this.lastError=null,this.lastErrorHash="none"}function X(t){t.stackTraceLimit&&(Error.stackTraceLimit=t.stackTraceLimit)}function Z(t){if(!t)return!1;if(!t.scope||"function"!=typeof t.scope)return!1;var e=t.scope();return!(!e||!e.active||"function"!=typeof e.active)}z.rateLimiter=new D({maxItems:0,itemsPerMinute:60}),z.prototype.global=function(t){return z.rateLimiter.configureGlobal(t),this},z.prototype.configure=function(t,e){var r=this.options,n={};e&&(n={payload:e}),this.options=a(r,t,n);var o=this.options.tracer||null;return Z(o)?(this.tracer=o,this.options.tracer="opentracing-tracer-enabled",this.options._configuredOptions.tracer="opentracing-tracer-enabled"):this.tracer=null,this.notifier&&this.notifier.configure(this.options),this.telemeter&&this.telemeter.configure(this.options),X(t),this.global(this.options),Z(t.tracer)&&(this.tracer=t.tracer),this},z.prototype.log=function(t){var e=this._defaultLogLevel();return this._log(e,t)},z.prototype.debug=function(t){this._log("debug",t)},z.prototype.info=function(t){this._log("info",t)},z.prototype.warn=function(t){this._log("warning",t)},z.prototype.warning=function(t){this._log("warning",t)},z.prototype.error=function(t){this._log("error",t)},z.prototype.critical=function(t){this._log("critical",t)},z.prototype.wait=function(t){this.queue.wait(t)},z.prototype.captureEvent=function(t,e,r){return this.telemeter&&this.telemeter.captureEvent(t,e,r)},z.prototype.captureDomContentLoaded=function(t){return this.telemeter&&this.telemeter.captureDomContentLoaded(t)},z.prototype.captureLoad=function(t){return this.telemeter&&this.telemeter.captureLoad(t)},z.prototype.buildJsonPayload=function(t){return this.api.buildJsonPayload(t)},z.prototype.sendJsonPayload=function(t){this.api.postJsonPayload(t)},z.prototype._log=function(t,e){var r;if(e.callback&&(r=e.callback,delete e.callback),this.options.ignoreDuplicateErrors&&this._sameAsLastError(e)){if(r){var n=new Error("ignored identical item");n.item=e,r(n)}}else try{e.level=e.level||t,this._addTracingAttributes(e),this._addTracingInfo(e);var o=this.telemeter;o&&(o._captureRollbarItem(e),e.telemetryEvents=o.copyEvents()||[]),this.notifier.log(e,r)}catch(t){r&&r(t),this.logger.error(t)}},z.prototype._addTracingAttributes=function(t){var e,r,n=null===(e=this.tracing)||void 0===e?void 0:e.getSpan(),o=[{key:"session_id",value:null===(r=this.tracing)||void 0===r?void 0:r.sessionId},{key:"span_id",value:null==n?void 0:n.spanId},{key:"trace_id",value:null==n?void 0:n.traceId}];P(t.data,o),null==n||n.addEvent("rollbar.occurrence",[{key:"rollbar.occurrence.uuid",value:t.uuid}])},z.prototype._defaultLogLevel=function(){return this.options.logLevel||"debug"},z.prototype._sameAsLastError=function(t){if(!t._isUncaught)return!1;var e=function(t){var e=t.message||"",r=(t.err||{}).stack||String(t.err);return e+"::"+r}(t);return this.lastErrorHash===e||(this.lastError=t.err,this.lastErrorHash=e,!1)},z.prototype._addTracingInfo=function(t){if(this.tracer){var e=this.tracer.scope().active();if(function(t){if(!t||!t.context||"function"!=typeof t.context)return!1;var e=t.context();if(!e||!e.toSpanId||!e.toTraceId||"function"!=typeof e.toSpanId||"function"!=typeof e.toTraceId)return!1;return!0}(e)){e.setTag("rollbar.error_uuid",t.uuid),e.setTag("rollbar.has_error",!0),e.setTag("error",!0),e.setTag("rollbar.item_url","https://rollbar.com/item/uuid/?uuid=".concat(t.uuid)),e.setTag("rollbar.occurrence_url","https://rollbar.com/occurrence/uuid/?uuid=".concat(t.uuid));var r=e.context().toSpanId(),n=e.context().toTraceId();t.custom?(t.custom.opentracing_span_id=r,t.custom.opentracing_trace_id=n):t.custom={opentracing_span_id:r,opentracing_trace_id:n}}}};var Q=z;function K(t){if(!c(t.context,"string")){var e=w(t.context);e.error?t.context="Error: could not serialize 'context'":t.context=e.value||"",t.context.length>255&&(t.context=t.context.substr(0,255))}return{data:t}}function Y(t,e,r){var n=e.hostname,o=e.protocol,i=e.port,a=e.path,s=e.search,u=t.timeout,l=function(t){var e="undefined"!=typeof window&&window||"undefined"!=typeof self&&self,r=t.defaultTransport||"xhr";void 0===e.fetch&&(r="xhr");void 0===e.XMLHttpRequest&&(r="fetch");return r}(t),c=t.proxy;if(t.endpoint){var f=r.parse(t.endpoint);n=f.hostname,o=f.protocol,i=f.port,a=f.pathname,s=f.search}return{timeout:u,hostname:n,protocol:o,port:i,path:a,search:s,proxy:c,transport:l}}function tt(t,e){var r=t.protocol||"https:",n=t.port||("http:"===r?80:"https:"===r?443:void 0),o=t.hostname,i=t.path,a=t.timeout,s=t.transport;return t.search&&(i+=t.search),t.proxy&&(i=r+"//"+o+i,o=t.proxy.host||t.proxy.hostname,n=t.proxy.port,r=t.proxy.protocol||r),{timeout:a,protocol:r,hostname:o,path:i,port:n,method:e,transport:s}}function et(t){return et="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},et(t)}function rt(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function nt(t){for(var e=1;e=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(u&&l){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),P(r),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;P(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:A(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),v}},e}function at(t,e,r,n,o,i,a){try{var s=t[i](a),u=s.value}catch(t){return void r(t)}s.done?e(u):Promise.resolve(u).then(n,o)}var st={hostname:"api.rollbar.com",path:"/api/1/item/",search:null,version:"1",protocol:"https:",port:443},ut={hostname:"api.rollbar.com",path:"/api/1/session/",search:null,version:"1",protocol:"https:",port:443};function lt(t,e,r,n){this.options=t,this.transport=e,this.url=r,this.truncation=n,this.accessToken=t.accessToken,this.transportOptions=ct(t,r),this.OTLPTransportOptions=ft(t,r)}function ct(t,e){return Y(t,st,e)}function ft(t,e){var r;return Y(t=nt(nt({},t),{},{endpoint:null===(r=t.tracing)||void 0===r?void 0:r.endpoint}),ut,e)}lt.prototype._postPromise=function(t){var e=t.accessToken,r=t.options,n=t.payload,o=t.headers,i=this;return new Promise((function(t,a){i.transport.post({accessToken:e,options:r,payload:n,headers:o,callback:function(e,r){return e?a(e):t(r)}})}))},lt.prototype.postItem=function(t,e){var r=tt(this.transportOptions,"POST"),n=K(t),o=this;setTimeout((function(){o.transport.post({accessToken:o.accessToken,options:r,payload:n,callback:e})}),0)},lt.prototype.postSpans=function(){var t,e=(t=it().mark((function t(e){var r,n,o=arguments;return it().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=o.length>1&&void 0!==o[1]?o[1]:{},n=tt(this.OTLPTransportOptions,"POST"),t.next=4,this._postPromise({accessToken:this.accessToken,options:n,payload:e,headers:r});case 4:return t.abrupt("return",t.sent);case 5:case"end":return t.stop()}}),t,this)})),function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){at(i,n,o,a,s,"next",t)}function s(t){at(i,n,o,a,s,"throw",t)}a(void 0)}))});return function(t){return e.apply(this,arguments)}}(),lt.prototype.buildJsonPayload=function(t,e){var r,n=K(t);return(r=this.truncation?this.truncation.truncate(n):w(n)).error?(e&&e(r.error),null):r.value},lt.prototype.postJsonPayload=function(t,e){var r=tt(this.transportOptions,"POST");this.transport.postJsonPayload(this.accessToken,r,t,e)},lt.prototype.configure=function(t){var e=this.oldOptions;return this.options=a(e,t),this.transportOptions=ct(this.options,this.url),this.OTLPTransportOptions=ft(this.options,this.url),void 0!==this.options.accessToken&&(this.accessToken=this.options.accessToken),this};var pt=lt,ht=function(){},dt={debug:0,info:1,warn:2,error:3,disable:4},yt={error:function(){for(var t=arguments.length,e=new Array(t),r=0;rt.length)&&(e=t.length);for(var r=0,n=Array(e);r=400&&t.status<600}(e)){if(403===e.status){var o=t.value&&t.value.message;vt.error(o)}s(new Error(String(e.status)))}else{s(St("XHR response had no status code (likely connection failure)"))}}}catch(t){var i;i=t&&t.stack?t:new Error(t),s(i)}};if(e.open(o,n,!0),e.setRequestHeader){e.setRequestHeader("Content-Type","application/json"),e.setRequestHeader("X-Rollbar-Access-Token",r);for(var p=0,h=Object.entries(null!=a?a:{});ps)?(a=e.path,e.path=a.substring(0,s)+i+"&"+a.substring(s+1)):-1!==u?(a=e.path,e.path=a.substring(0,u)+i+a.substring(u)):e.path=e.path+i}(t,e,r);var i=g(e);this._makeZoneRequest({accessToken:t,url:i,method:"GET",callback:n,requestFactory:o,timeout:e.timeout,transport:e.transport})},xt.prototype.post=function(t){var e=this,r=t.accessToken,n=t.options,o=t.payload,i=t.headers,a=t.callback,s=t.requestFactory;return function(t){if(a&&p(a)||(a=function(){}),!t)return a(new Error("Cannot send empty request"));var o;if((o=e.truncation&&t.body?e.truncation.truncate(t):w(t)).error)return a(o.error);t=o.value;var u=g(n);e._makeZoneRequest({accessToken:r,url:u,method:"POST",payload:t,headers:i,callback:a,requestFactory:s,timeout:n.timeout,transport:n.transport})}(o)},xt.prototype.postJsonPayload=function(t,e,r,n,o){n&&p(n)||(n=function(){});var i=g(e);this._makeZoneRequest({accessToken:t,url:i,method:"POST",payload:r,callback:n,requestFactory:o,timeout:e.timeout,transport:e.transport})},xt.prototype._makeZoneRequest=function(){var t="undefined"!=typeof window&&window||void 0!==n&&n,e=t&&t.Zone&&t.Zone.root,r=Array.prototype.slice.call(arguments);if(e){var n=this;e.run((function(){n._makeRequest.apply(void 0,r)}))}else this._makeRequest.apply(void 0,r)},xt.prototype._makeRequest=function(t){var e=t.payload,r=t.callback,n=t.transport;if("undefined"!=typeof RollbarProxy)return function(t,e){(new RollbarProxy).sendJsonPayload(t,(function(t){}),(function(t){e(new Error(t))}))}(e,r);"fetch"===n?wt(t):Ot(t)};var Et=xt;function It(t){var e,r,n={protocol:null,auth:null,host:null,path:null,hash:null,href:t,hostname:null,port:null,pathname:null,search:null,query:null};if(-1!==(e=t.indexOf("//"))?(n.protocol=t.substring(0,e),r=e+2):r=0,-1!==(e=t.indexOf("@",r))&&(n.auth=t.substring(r,e),r=e+1),-1===(e=t.indexOf("/",r))){if(-1===(e=t.indexOf("?",r)))return-1===(e=t.indexOf("#",r))?n.host=t.substring(r):(n.host=t.substring(r,e),n.hash=t.substring(e)),n.hostname=n.host.split(":")[0],n.port=n.host.split(":")[1],n.port&&(n.port=parseInt(n.port,10)),n;n.host=t.substring(r,e),n.hostname=n.host.split(":")[0],n.port=n.host.split(":")[1],n.port&&(n.port=parseInt(n.port,10)),r=e}else n.host=t.substring(r,e),n.hostname=n.host.split(":")[0],n.port=n.host.split(":")[1],n.port&&(n.port=parseInt(n.port,10)),r=e;if(-1===(e=t.indexOf("#",r))?n.path=t.substring(r):(n.path=t.substring(r,e),n.hash=t.substring(e)),n.path){var o=n.path.split("?");n.pathname=o[0],n.query=o[1],n.search=n.query?"?"+n.query:null}return n}var jt=/(^|@)\S+:\d+/,Pt=/^\s*at .*(\S+:\d+|\(native\))/m,Tt=/^(eval@)?(\[native code\])?$/;function At(t,e){if(void 0!==t.stacktrace||void 0!==t["opera#sourceloc"])return function(t,e){return!t.stacktrace||t.message.includes("\n")&&t.message.split("\n").length>t.stacktrace.split("\n").length?function(t,e){for(var r=/Line (\d+).*script (?:in )?(\S+)/i,n=t.message.split("\n"),o=[],i=2,a=n.length;i/,"$2").replace(/\([^)]*\)/g,"")||void 0;return o.match(/\(([^)]*)\)/)&&(e=o.replace(/^[^(]+\(([^)]*)\)$/,"$1")),{function:i,args:void 0===e||"[arguments not available]"===e?void 0:e.split(","),file:n[0],line:n[1]?+n[1]:void 0,col:n[2]?+n[2]:void 0,raw:t}}))}(t,e):function(t,e){for(var r=/Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i,n=t.stacktrace.split("\n"),o=[],i=0,a=n.length;i"].includes(n[0])?void 0:n[0],line:n[1]?+n[1]:void 0,col:n[2]?+n[2]:void 0,raw:t}}))}function Nt(t,e){return Ct(t.split("\n").filter((function(t){return!t.match(Tt)})),e).map((function(t){if(t.includes(" > eval")&&(t=t.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),t.includes("@")||t.includes(":")){var e=/(([^\n\r"\u2028\u2029]*".[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*(?:@[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*)*(?:[\n\r\u2028\u2029][^@]*)?)?[^@]*)@/,r=t.match(e),n=r&&r[1]?r[1]:void 0,o=Rt(t.replace(e,""));return{function:n,file:o[0],line:o[1]?+o[1]:void 0,col:o[2]?+o[2]:void 0,raw:t}}return{function:t}}))}function qt(t){return t.map((function(t){return{functionName:t.function,args:t.args,fileName:t.file,lineNumber:t.line,columnNumber:t.col,source:t.raw}}))}var Dt=new RegExp("^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): ");function Mt(){return null}function Ut(t){var e={};return e._stackFrame=t,e.url=t.fileName,e.line=t.lineNumber,e.func=t.functionName,e.column=t.columnNumber,e.args=t.args,e.context=null,e}function Ht(t,e){return{stack:function(){var r=[];e=e||0;try{r=function(t,e){return qt(At(t,e))}(t)}catch(t){r=[]}for(var n=[],o=e;ot.length)&&(e=t.length);for(var r=0,n=Array(e);r0&&A(e,"data.request",o),n(null,e)}}(r)).addTransform(function(t){return function(e,r,n){if(!t)return n(null,e);var o=t.navigator||{},i=t.screen||{};A(e,"data.client",{runtime_ms:e.timestamp-t._rollbarStartTime,timestamp:Math.round(e.timestamp/1e3),javascript:{browser:o.userAgent,language:o.language,cookie_enabled:o.cookieEnabled,screen:{width:i.width,height:i.height}}}),n(null,e)}}(r)).addTransform(function(t){return function(e,r,n){if(!t||!t.navigator)return n(null,e);for(var o,i=[],a=t.navigator.plugins||[],s=0,u=a.length;sn&&(o=this.queue.length-n),this.maxQueueSize=n,this.queue.splice(0,o)}},{key:"copyEvents",value:function(){var t=Array.prototype.slice.call(this.queue,0);if(p(this.options.filterTelemetry))try{for(var e=t.length;e--;)this.options.filterTelemetry(t[e])&&t.splice(e,1)}catch(t){this.options.filterTelemetry=null}return t=t.filter((function(t){return"connectivity"!==t.type})),t=t.map((function(t){t.otelAttributes;var e=function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(-1!==e.indexOf(n))continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.telemetrySpan&&(this.telemetrySpan.end(t),this.telemetrySpan=this.tracing.startSpan("rollbar-telemetry",{}))}},{key:"capture",value:function(t,e,r,n){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,a={level:Je(t,r),type:t,timestamp_ms:o||R(),body:e,source:"client"};n&&(a.uuid=n),i&&(a.otelAttributes=i);try{if(p(this.options.filterTelemetry)&&this.options.filterTelemetry(a))return!1}catch(t){this.options.filterTelemetry=null}return this.push(a),a}},{key:"captureEvent",value:function(t,e,r,n){return this.capture(t,e,r,n)}},{key:"captureError",value:function(t,e,r,n){var o,i=t.message||String(t),a={message:i};t.stack&&(a.stack=t.stack);var s={message:i,level:e,type:"error",uuid:r};return null===(o=this.telemetrySpan)||void 0===o||o.addEvent("rollbar-occurrence-event",s,He(n)),this.capture("error",a,e,r,n,s)}},{key:"captureLog",value:function(t,e,r,n){var o,i,a=null;r?(a={message:t,level:e,type:"message",uuid:r},null===(o=this.telemetrySpan)||void 0===o||o.addEvent("rollbar-occurrence-event",a,He(n))):(a={message:t,level:e},null===(i=this.telemetrySpan)||void 0===i||i.addEvent("rollbar-log-event",a,He(n)));return this.capture("log",{message:t},e,r,n,a)}},{key:"captureNetwork",value:function(t,e,r,n){var o,i;e=e||"xhr",t.subtype=t.subtype||e,n&&(t.request=n);var a=this.levelFromStatus(t.status_code),s=1e6*(t.end_time_ms||0),u={type:t.subtype,method:t.method,url:t.url,statusCode:t.status_code,"request.headers":JSON.stringify(t.request_headers||{}),"response.headers":JSON.stringify((null===(o=t.response)||void 0===o?void 0:o.headers)||{}),"response.timeUnixNano":s.toString()};return null===(i=this.telemetrySpan)||void 0===i||i.addEvent("rollbar-network-event",u,He(t.start_time_ms)),this.capture("network",t,a,r,t.start_time_ms,u)}},{key:"levelFromStatus",value:function(t){return t>=200&&t<400?"info":0===t||t>=400?"error":"info"}},{key:"captureDom",value:function(t,e,r,n,o){var i={subtype:t,element:e};return void 0!==r&&(i.value=r),void 0!==n&&(i.checked=n),this.capture("dom",i,"info",o)}},{key:"captureInput",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.value,a=t.timestamp,s="rollbar-input-event",u={type:s,subtype:r,element:o,value:i},l={type:r,isSynthetic:n,element:o,value:i,endTimeUnixNano:He(a)},c=this._getRepeatedEvent(s,l);return c?this._updateRepeatedEvent(c,l,a):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(s,l,He(a)),this.capture("dom",u,"info",null,a,l))}},{key:"captureClick",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.timestamp,a="rollbar-click-event",s={type:a,subtype:r,element:o},u={type:r,isSynthetic:n,element:o,endTimeUnixNano:He(i)},l=this._getRepeatedEvent(a,u);return l?this._updateRepeatedEvent(l,u,i):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(a,u,He(i)),this.capture("dom",s,"info",null,i,u))}},{key:"_getRepeatedEvent",value:function(t,e){var r=this._lastEvent(this.queue);if(r&&r.body.type===t&&r.otelAttributes.target===e.target)return r}},{key:"_updateRepeatedEvent",value:function(t,e,r){var n=Math.max(r-t.timestamp_ms,1);t.body.value=e.value,t.otelAttributes.value=e.value,t.otelAttributes.height=e.height,t.otelAttributes.width=e.width,t.otelAttributes.textZoomRatio=e.textZoomRatio,t.otelAttributes.endTimeUnixNano=He(r),t.otelAttributes.durationUnixNano=He(n),t.otelAttributes.count=(t.otelAttributes.count||1)+1,t.otelAttributes.rate=t.otelAttributes.count/(n/1e3)}},{key:"_lastEvent",value:function(t){return t.length>0?t[t.length-1]:null}},{key:"captureFocus",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.timestamp,a="rollbar-focus-event",s={type:a,subtype:r,element:o},u={type:r,isSynthetic:n,element:o};return null===(e=this.telemetrySpan)||void 0===e||e.addEvent(a,u,He(i)),this.capture("dom",s,"info",null,i,u)}},{key:"captureResize",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.width,i=t.height,a=t.textZoomRatio,s=t.timestamp,u="rollbar-resize-event",l={type:u,subtype:r,width:o,height:i,textZoomRatio:a},c={type:r,isSynthetic:n,width:o,height:i,textZoomRatio:a},f=this._getRepeatedEvent(u,c);return f?this._updateRepeatedEvent(f,c,s):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(u,c,He(s)),this.capture("dom",l,"info",null,s,c))}},{key:"captureDragDrop",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.dropEffect,a=t.effectAllowed,s=t.kinds,u=t.mediaTypes,l=t.timestamp,c="rollbar-dragdrop-event",f={type:c,subtype:r,isSynthetic:n},p={type:r,isSynthetic:n};return"dragstart"===r&&(f=Ne(Ne({},f),{},{element:o,dropEffect:i,effectAllowed:a}),p=Ne(Ne({},p),{},{element:o,dropEffect:i,effectAllowed:a})),"drop"===r&&(f=Ne(Ne({},f),{},{element:o,dropEffect:i,effectAllowed:a,kinds:s,mediaTypes:u}),p=Ne(Ne({},p),{},{element:o,dropEffect:i,effectAllowed:a,kinds:s,mediaTypes:u})),null===(e=this.telemetrySpan)||void 0===e||e.addEvent(c,p,He(l)),this.capture("dom",f,"info",null,l,p)}},{key:"captureNavigation",value:function(t,e,r,n){var o;return null===(o=this.telemetrySpan)||void 0===o||o.addEvent("rollbar-navigation-event",{"previous.url.full":t,"url.full":e},He(n)),this.capture("navigation",{from:t,to:e},"info",r,n)}},{key:"captureDomContentLoaded",value:function(t){return this.capture("navigation",{subtype:"DOMContentLoaded"},"info",void 0,t&&t.getTime())}},{key:"captureLoad",value:function(t){return this.capture("navigation",{subtype:"load"},"info",void 0,t&&t.getTime())}},{key:"captureConnectivityChange",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.timestamp,i="rollbar-connectivity-event",a={type:i,subtype:r},s={type:r,isSynthetic:n};return null===(e=this.telemetrySpan)||void 0===e||e.addEvent(i,s,He(o)),this.capture("connectivity",a,"info",null,o,s)}},{key:"_captureRollbarItem",value:function(t){if(this.options.includeItemsInTelemetry)return t.err?this.captureError(t.err,t.level,t.uuid,t.timestamp):t.message?this.captureLog(t.message,t.level,t.uuid,t.timestamp):t.custom?this.capture("log",t.custom,t.level,t.uuid,t.timestamp):void 0}},{key:"push",value:function(t){this.queue.push(t),this.queue.length>this.maxQueueSize&&this.queue.shift()}}])}();function Je(t,e){if(e)return e;return{error:"error",manual:"info"}[t]||"info"}var Ve=Fe;function We(t){return"string"!=typeof t&&(t=String(t)),t.toLowerCase()}function Be(t){this.map={},t instanceof Be?t.forEach((function(t,e){this.append(e,t)}),this):Array.isArray(t)?t.forEach((function(t){this.append(t[0],t[1])}),this):t&&Object.getOwnPropertyNames(t).forEach((function(e){this.append(e,t[e])}),this)}Be.prototype.append=function(t,e){t=We(t),e=function(t){return"string"!=typeof t&&(t=String(t)),t}(e);var r=this.map[t];this.map[t]=r?r+", "+e:e},Be.prototype.get=function(t){return t=We(t),this.has(t)?this.map[t]:null},Be.prototype.has=function(t){return this.map.hasOwnProperty(We(t))},Be.prototype.forEach=function(t,e){for(var r in this.map)this.map.hasOwnProperty(r)&&t.call(e,this.map[r],r,this)},Be.prototype.entries=function(){var t=[];return this.forEach((function(e,r){t.push([r,e])})),function(t){return{next:function(){var e=t.shift();return{done:void 0===e,value:e}}}}(t)};var Ge=function(t){return"undefined"==typeof Headers?new Be(t):new Headers(t)};var $e=function(t,e,r,n,o){var i=t[e];t[e]=r(i),n&&n[o].push([t,e,i])};var ze=function(t,e,r){var n,o,i,a,s=c(t,"object"),u=c(t,"array"),l=[];if(r=r||{obj:[],mapped:[]},s){if(a=r.obj.indexOf(t),s&&-1!==a)return r.mapped[a]||r.obj[a];r.obj.push(t),a=r.obj.length-1}if(s)for(n in t)Object.prototype.hasOwnProperty.call(t,n)&&l.push(n);else if(u)for(i=0;i=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function Ke(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=0;i--){if(e=tr(t[i]),r=o+3*n.length+e.length,i=83){n.unshift("...");break}n.unshift(e),o+=e.length}return n.join(" > ")}(function(t){for(var e,r=[],n=0;t&&n<5&&"html"!==(e=er(t)).tagName;n++)r.unshift(e),t=t.parentNode;return r}(t))}function tr(t){if(!t||!t.tagName)return"";var e=[t.tagName];t.id&&e.push("#"+t.id),t.classes&&e.push("."+t.classes.join("."));for(var r=0;r=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function sr(t,e){if(t){if("string"==typeof t)return ur(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ur(t,e):void 0}}function ur(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r3)){var e=R();o.__rollbar_xhr.end_time_ms=e;var r=null;if(o.__rollbar_xhr.response_content_type=o.getResponseHeader("Content-Type"),t.autoInstrument.networkResponseHeaders){var i=t.autoInstrument.networkResponseHeaders;r={};try{var a;if(!0===i){var s=o.getAllResponseHeaders();if(s){var u,l,c,f=ar(s.trim().split(/[\r\n]+/));try{for(f.s();!(c=f.n()).done;){a=(u=c.value.split(": ")).shift(),l=u.join(": "),r[a]=l}}catch(t){f.e(t)}finally{f.f()}}}else{var p,h=ar(i);try{for(h.s();!(p=h.n()).done;){var d=p.value;r[d]=o.getResponseHeader(d)}}catch(t){h.e(t)}finally{h.f()}}}catch(t){}}var y=null;if(t.autoInstrument.networkResponseBody)try{y=o.responseText}catch(t){}var v=null;(y||r)&&(v={},y&&(t.isJsonContentType(o.__rollbar_xhr.response_content_type)?v.body=t.scrubJson(y):v.body=y),r&&(v.headers=r)),v&&(o.__rollbar_xhr.response=v);try{var m=o.status;m=1223===m?204:m,o.__rollbar_xhr.status_code=m,t.addOtelNetworkResponse(o.__rollbar_event,e,m),o.__rollbar_event.level=t.telemeter.levelFromStatus(m),t.errorOnHttpStatus(o.__rollbar_xhr)}catch(t){}}}return e("onload",o),e("onerror",o),e("onprogress",o),"onreadystatechange"in o&&p(o.onreadystatechange)?$e(o,"onreadystatechange",(function(e){return t.rollbar.wrap(e,void 0,i)})):o.onreadystatechange=i,o.__rollbar_xhr&&t.trackHttpErrors()&&(o.__rollbar_xhr.stack=(new Error).stack),r.apply(this,arguments)}}),this.replacements,"network")}"fetch"in this._window&&$e(this._window,"fetch",(function(e){return function(r,n){var o,i=Array.prototype.slice.call(arguments),a=i[0],s="GET",u=hr(a);c(a,"string")||u?o=u?a.toString():a:a&&(o=a.url,a.method&&(s=a.method)),i[1]&&i[1].method&&(s=i[1].method);var l={method:s,url:o,status_code:null,start_time_ms:R(),end_time_ms:null};if(i[1]&&i[1].headers){var f=Ge(i[1].headers);l.request_content_type=f.get("Content-Type"),t.autoInstrument.networkRequestHeaders&&(l.request_headers=t.fetchHeaders(f,t.autoInstrument.networkRequestHeaders))}t.autoInstrument.networkRequestBody&&(i[1]&&i[1].body?l.request=i[1].body:i[0]&&!c(i[0],"string")&&i[0].body&&(l.request=i[0].body));var p=t.captureNetwork(l,"fetch",void 0);return t.trackHttpErrors()&&(l.stack=(new Error).stack),e.apply(this,i).then((function(e){var r=R();l.end_time_ms=r,l.status_code=e.status,t.addOtelNetworkResponse(p,r,e.status),l.response_content_type=e.headers.get("Content-Type");var n=null;t.autoInstrument.networkResponseHeaders&&(n=t.fetchHeaders(e.headers,t.autoInstrument.networkResponseHeaders));var o=null;return t.autoInstrument.networkResponseBody&&"function"==typeof e.text&&(o=e.clone().text()),(n||o)&&(l.response={},o&&("function"==typeof o.then?o.then((function(e){e&&t.isJsonContentType(l.response_content_type)?l.response.body=t.scrubJson(e):l.response.body=e})):l.response.body=o),n&&(l.response.headers=n)),t.errorOnHttpStatus(l),e}))}}),this.replacements,"network")}},{key:"captureNetwork",value:function(t,e,r){return t.request&&this.isJsonContentType(t.request_content_type)&&(t.request=this.scrubJson(t.request)),this.telemeter.captureNetwork(t,e,r)}},{key:"isJsonContentType",value:function(t){return!!(t&&c(t,"string")&&t.toLowerCase().includes("json"))}},{key:"addOtelNetworkResponse",value:function(t,e,r){t.otelAttributes&&(t.otelAttributes["response.timeUnixNano"]=(1e6*e).toString(),t.otelAttributes.statusCode=r)}},{key:"scrubJson",value:function(t){return JSON.stringify(Ze(JSON.parse(t),this.options.scrubFields))}},{key:"fetchHeaders",value:function(t,e){var r={};try{if(!0===e){if("function"==typeof t.entries)for(var n=t.entries(),o=n.next();!o.done;)r[o.value[0]]=o.value[1],o=n.next()}else{var i,a=ar(e);try{for(a.s();!(i=a.n()).done;){var s=i.value;r[s]=t.get(s)}}catch(t){a.e(t)}finally{a.f()}}}catch(t){}return r}},{key:"trackHttpErrors",value:function(){return this.autoInstrument.networkErrorOnHttp5xx||this.autoInstrument.networkErrorOnHttp4xx||this.autoInstrument.networkErrorOnHttp0}},{key:"errorOnHttpStatus",value:function(t){var e=t.status_code;if(e>=500&&this.autoInstrument.networkErrorOnHttp5xx||e>=400&&this.autoInstrument.networkErrorOnHttp4xx||0===e&&this.autoInstrument.networkErrorOnHttp0){var r=new Error("HTTP request failed with Status "+e);r.stack=t.stack,this.rollbar.error(r,{skipFrames:1})}}},{key:"deinstrumentConsole",value:function(){for(var t;this.replacements.log.length;)t=this.replacements.log.shift(),this._window.console[t[0]]=t[1]}},{key:"instrumentConsole",value:function(){var t;if(null!==(t=this._window)&&void 0!==t&&null!==(t=t.console)&&void 0!==t&&t.log){var e=this,r=this._window.console;try{for(var n=0,o=["debug","info","warn","error","log"];n500&&(n=n.substr(0,497)+"...");break;case"null":n="null";break;case"undefined":n="undefined";break;case"symbol":n=n.toString()}o.push(n)}return o.join(" ")}(t);e.telemeter.captureLog(r,i,null,R()),n&&Function.prototype.apply.call(n,o,t)},e.replacements.log.push([t,n])}}},{key:"deinstrumentDom",value:function(){this.removeListeners("dom")}},{key:"instrumentDom",value:function(){var t=this;this.addListener("dom",this._window,["click","dblclick","contextmenu"],(function(e){return t.handleEvent("click",e)})),this.addListener("dom",this._window,["dragstart","dragend","dragenter","dragleave","drop"],(function(e){return t.handleEvent("dragdrop",e)})),this.addListener("dom",this._window,["blur","focus"],(function(e){return t.handleEvent("focus",e)})),this.addListener("dom",this._window,["submit","invalid"],(function(e){return t.handleEvent("form",e)})),this.addListener("dom",this._window,["input","change"],(function(e){return t.handleEvent("input",e)})),this.addListener("dom",this._window,["resize"],(function(e){return t.handleEvent("resize",e)})),this.addListener("dom",this._document,["DOMContentLoaded"],(function(e){return t.handleEvent("contentLoaded",e)}))}},{key:"handleEvent",value:function(t,e){try{return{click:this.handleClick,dragdrop:this.handleDrag,focus:this.handleFocus,form:this.handleForm,input:this.handleInput,resize:this.handleResize,contentLoaded:this.handleContentLoaded}[t].call(this,e)}catch(r){console.log("".concat(t," handler error"),e,r,r.stack)}}},{key:"handleContentLoaded",value:function(t){this.rollbar.triggerReplay({type:"navigation",path:new URL(this._location.href).pathname})}},{key:"handleClick",value:function(t){var e,r=null===(e=t.target)||void 0===e?void 0:e.tagName.toLowerCase();["input","select","textarea"].includes(r)||this.telemeter.captureClick({type:t.type,isSynthetic:!t.isTrusted,element:Ye(t.target),timestamp:R()})}},{key:"handleFocus",value:function(t){var e,r=t.type,n=null!==(e=t.target)&&void 0!==e&&e.window?"window":Ye(t.target);this.telemeter.captureFocus({type:r,isSynthetic:!t.isTrusted,element:n,timestamp:R()})}},{key:"handleForm",value:function(t){var e;t.type,null!==(e=t.target)&&void 0!==e&&e.window||Ye(t.target)}},{key:"handleResize",value:function(t){var e=window.screen.width/window.innerWidth;this.telemeter.captureResize({type:t.type,isSynthetic:!t.isTrusted,width:window.innerWidth,height:window.innerHeight,textZoomRatio:e,timestamp:R()})}},{key:"handleDrag",value:function(t){var e,r,n,o,i,a,s=t.type;if("drop"===s){e=[],r=[];var u,l=ar([].concat(nr(t.dataTransfer.files),nr(t.dataTransfer.items)));try{for(l.s();!(u=l.n()).done;){var c=u.value;c.kind&&c.type&&(e.push(c.kind),r.push(c.type))}}catch(t){l.e(t)}finally{l.f()}}["drop","dragstart"].includes(s)&&(n=null===(i=t.dataTransfer)||void 0===i?void 0:i.dropEffect,o=null===(a=t.dataTransfer)||void 0===a?void 0:a.effectAllowed);this.telemeter.captureDragDrop({type:s,isSynthetic:!t.isTrusted,element:Ye(t.target),dropEffect:n,effectAllowed:o,kinds:JSON.stringify(e),mediaTypes:JSON.stringify(r),timestamp:R()})}},{key:"scrubInputValue",value:function(t,e,r,n){var o="******";if("password"===n)return o;if(this.scrubTelemetryInputs)return o;var i=er(e);if(this.telemetryScrubber){if(this.telemetryScrubber(i))return o}else if(this.defaultValueScrubber(i))return o;return function(t,e,r){try{var n,o=Qe(e);try{for(o.s();!(n=o.n()).done;){var i=n.value;if("string"==typeof i){if(t.classList.contains(i))return!0}else{var a,s=Qe(t.classList);try{for(s.s();!(a=s.n()).done;){var u=a.value;if(i.test(u))return!0}}catch(t){s.e(t)}finally{s.f()}}}}catch(t){o.e(t)}finally{o.f()}var l,c=Qe(r);try{for(c.s();!(l=c.n()).done;){var f=l.value;if(t.matches(f))return!0}}catch(t){c.e(t)}finally{c.f()}}catch(t){}return!1}(e,this.scrubClasses,this.scrubSelectors)?o:this.maskInputOptions[r.toLowerCase()]||this.maskInputOptions[n]?this.maskInputFn?this.maskInputFn(t,e):o:t}},{key:"handleInput",value:function(t){var e,r,n,o,i=t.type,a=null===(e=t.target)||void 0===e?void 0:e.tagName.toLowerCase(),s=null===(r=t.target)||void 0===r?void 0:r.value,u=(null===(n=t.target)||void 0===n||null===(n=n.attributes)||void 0===n||null===(n=n.type)||void 0===n?void 0:n.value)||(null===(o=t.target)||void 0===o?void 0:o.type);switch(void 0!==s&&(s=this.scrubInputValue(s,t.target,a,u)),i){case"input":if(["radio","checkbox"].includes(u))return;["select","textarea"].includes(a)&&(u=a);break;case"change":if(!["radio","checkbox"].includes(u))return;var l;if("checkbox"===u)s=null===(l=t.target)||void 0===l?void 0:l.checked}this.telemeter.captureInput({type:u,isSynthetic:!t.isTrusted,element:Ye(t.target),value:s,timestamp:R()})}},{key:"deinstrumentNavigation",value:function(){var t=this._window.chrome;!(t&&t.app&&t.app.runtime)&&this._window.history&&this._window.history.pushState&&cr(this.replacements,"navigation")}},{key:"instrumentNavigation",value:function(){var t=this._window.chrome;if(!(t&&t.app&&t.app.runtime)&&this._window.history&&this._window.history.pushState){var e=this;$e(this._window,"onpopstate",(function(t){return function(){var r=e._location.href;e.handleUrlChange(e._lastHref,r),t&&t.apply(this,arguments)}}),this.replacements,"navigation"),$e(this._window.history,"pushState",(function(t){return function(){var r=arguments.length>2?arguments[2]:void 0;return r&&e.handleUrlChange(e._lastHref,r+""),t.apply(this,arguments)}}),this.replacements,"navigation")}}},{key:"handleUrlChange",value:function(t,e){var r=It(this._location.href),n=It(e),o=It(t);this._lastHref=e,r.protocol===n.protocol&&r.host===n.host&&(e=n.path+(n.hash||"")),r.protocol===o.protocol&&r.host===o.host&&(t=o.path+(o.hash||"")),this.telemeter.captureNavigation(t,e,null,R());this.rollbar.triggerReplay({type:"navigation",path:e})}},{key:"instrumentConnectivity",value:function(){var t=this;this.addListener("connectivity",this._window,["online","offline"],(function(e){return t.handleConnectivity(e)}))}},{key:"handleConnectivity",value:function(t){var e=t.type;this.telemeter.captureConnectivityChange({type:e,isSynthetic:!t.isTrusted,timestamp:R()})}},{key:"handleCspEvent",value:function(t){var e="Security Policy Violation: blockedURI: "+t.blockedURI+", violatedDirective: "+t.violatedDirective+", effectiveDirective: "+t.effectiveDirective+", ";t.sourceFile&&(e+="location: "+t.sourceFile+", line: "+t.lineNumber+", col: "+t.columnNumber+", "),e+="originalPolicy: "+t.originalPolicy,this.telemeter.captureLog(e,"error",null,R()),this.handleCspError(e)}},{key:"handleCspError",value:function(t){this.autoInstrument.errorOnContentSecurityPolicy&&this.rollbar.error(t)}},{key:"deinstrumentContentSecurityPolicy",value:function(){this.removeListeners("contentsecuritypolicy")}},{key:"instrumentContentSecurityPolicy",value:function(){if("addEventListener"in this._document){var t=this.handleCspEvent.bind(this);this.addListener("contentsecuritypolicy",this._document,["securitypolicyviolation"],t)}}},{key:"addListener",value:function(t,e,r,n){var o=this;if(e.addEventListener){var i,a=ar(r);try{var s=function(){var r=i.value,a={capture:!0,passive:!0};e.addEventListener(r,n,a,!0),o.eventRemovers[t].push((function(){e.removeEventListener(r,n,a)}))};for(a.s();!(i=a.n()).done;)s()}catch(t){a.e(t)}finally{a.f()}}}},{key:"removeListeners",value:function(t){for(;this.eventRemovers[t].length;)this.eventRemovers[t].shift()()}}])}();function hr(t){return"undefined"!=typeof URL&&t instanceof URL}var dr=pr;function yr(t,e,r){if(e.hasOwnProperty&&e.hasOwnProperty("addEventListener")){for(var n=e.addEventListener;n._rollbarOldAdd&&n.belongsToShim;)n=n._rollbarOldAdd;var o=function(e,r,o){n.call(this,e,t.wrap(r),o)};o._rollbarOldAdd=n,o.belongsToShim=r,e.addEventListener=o;for(var i=e.removeEventListener;i._rollbarOldRemove&&i.belongsToShim;)i=i._rollbarOldRemove;var a=function(t,e,r){i.call(this,t,e&&e._rollbar_wrapped||e,r)};a._rollbarOldRemove=i,a.belongsToShim=r,e.removeEventListener=a}}var vr=function(t,e,r){if(t){var n,o,i="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".split(",");for(n=0;n2*e?t.slice(0,e).concat(t.slice(r-e)):t}function gr(t,e,r){r=void 0===r?30:r;var n,o=t.data.body;if(o.trace_chain)for(var i=o.trace_chain,a=0;at?e.slice(0,t-3).concat("..."):e}function kr(t,e,r){return e=ze(e,(function e(r,n,o){switch(f(n)){case"string":return wr(t,n);case"object":case"array":return ze(n,e,o);default:return n}})),[e,w(e,r)]}function _r(t){return t.exception&&(delete t.exception.description,t.exception.message=wr(255,t.exception.message)),t.frames=br(t.frames,1),t}function Sr(t,e){var r=t.data.body;if(r.trace_chain)for(var n=r.trace_chain,o=0;oe}var xr={truncate:function(t,e,r){r=void 0===r?524288:r;for(var n,o,i,a=[mr,gr,kr.bind(null,1024),kr.bind(null,512),kr.bind(null,256),Sr];n=a.shift();)if(t=(o=n(t,e))[0],(i=o[1]).error||!Or(i.value,r))return i;return i},raw:mr,truncateFrames:gr,truncateStrings:kr,maybeTruncateValue:wr};function Er(t){return Er="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Er(t)}function Ir(t,e){for(var r=0;r3?o-3:0),a=3;a0&&void 0!==arguments[0]?arguments[0]:16);return crypto.getRandomValues(t),Array.from(t,(function(t){return t.toString(16).padStart(2,"0")})).join("")}};function qr(t){return qr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},qr(t)}function Dr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function Mr(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return this.session||(this.getSession()||this.createSession(),this.initSessionAttributes(t)),this}},{key:"getSession",value:function(){try{var t=this.window.sessionStorage.getItem(Jr);if(!t)return null;this.session=JSON.parse(t)}catch(t){return null}return this}},{key:"createSession",value:function(){return this.session={id:Nr.gen(),createdAt:Date.now()},this.setSession(this.session)}},{key:"setSession",value:function(t){var e=JSON.stringify(t);try{this.window.sessionStorage.setItem(Jr,e)}catch(t){return null}return this}},{key:"attributes",get:function(){return this._attributes}},{key:"setAttributes",value:function(t){return this._attributes=Mr(Mr({},this._attributes),t),this}},{key:"setUser",value:function(t){return this.setAttributes({"user.id":null==t?void 0:t.id,"user.email":null==t?void 0:t.email,"user.name":(null==t?void 0:t.name)||(null==t?void 0:t.username)}),this}},{key:"initSessionAttributes",value:function(t){var e,r,n;return this.setAttributes(Mr({"session.id":this.session.id,"browser.brands":null===(e=navigator.userAgentData)||void 0===e?void 0:e.brands,"browser.language":navigator.language,"browser.mobile":null===(r=navigator.userAgentData)||void 0===r?void 0:r.mobile,"browser.platform":null===(n=navigator.userAgentData)||void 0===n?void 0:n.platform,"client.address":"$remote_ip","rollbar.notifier.framework":"browser-js","user_agent.original":navigator.userAgent},t)),this}}])}();function Wr(t){return[Math.trunc(t/1e3),Math.round(t%1e3*1e6)]}function Br(t,e){return[t[0]+e[0]+Math.trunc((t[1]+e[1])/1e9),(t[1]+e[1])%1e9]}var Gr={fromMillis:Wr,toMillis:function(t){return 1e3*t[0]+Math.round(t[1]/1e6)},toNanos:function(t){return 1e9*t[0]+t[1]},add:Br,now:function(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]?Br(Wr(performance.timeOrigin),Wr(performance.now())):Wr(Date.now())},isHrTime:function(t){return Array.isArray(t)&&2===t.length&&"number"==typeof t[0]&&"number"==typeof t[1]}};function $r(t){return $r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},$r(t)}function zr(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,s=[],u=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(s.push(n.value),s.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(t,e)||Zr(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Xr(t){return function(t){if(Array.isArray(t))return Qr(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||Zr(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Zr(t,e){if(t){if("string"==typeof t)return Qr(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Qr(t,e):void 0}}function Qr(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.api=e,this.options=r}),[{key:"export",value:function(t,e){en.push.apply(en,Xr(t))}},{key:"toPayload",value:function(){var t=this,e=en.slice();if(en.length=0,!e||!e.length)return{resourceSpans:[]};var r,n=e[0]&&e[0].resource||{},o=new Map,i=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=Zr(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}(e);try{for(i.s();!(r=i.n()).done;){var a=r.value,s=a.instrumentationScope?"".concat(a.instrumentationScope.name,":").concat(a.instrumentationScope.version):"default:1.0.0";o.has(s)||o.set(s,{scope:a.instrumentationScope||{name:"default",version:"1.0.0",attributes:[]},spans:[]}),o.get(s).spans.push(this._transformSpan(a))}}catch(t){i.e(t)}finally{i.f()}return{resourceSpans:[{resource:this._transformResource(n),scopeSpans:Array.from(o.values()).map((function(e){return{scope:t._transformInstrumentationScope(e.scope),spans:e.spans}}))}]}}},{key:"post",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.api.postSpans(t,e)}},{key:"_transformSpan",value:function(t){var e,r=this,n=function(t){return Object.entries(t||{}).map((function(t){var e=zr(t,2),n=e[0],o=e[1];return{key:n,value:r._transformAnyValue(o)}}))};return{traceId:t.spanContext.traceId,spanId:t.spanContext.spanId,parentSpanId:t.parentSpanId||"",name:t.name,kind:t.kind||1,startTimeUnixNano:Gr.toNanos(t.startTime),endTimeUnixNano:Gr.toNanos(t.endTime),attributes:n(t.attributes),events:(e=t.events,(e||[]).map((function(t){return{timeUnixNano:Gr.toNanos(t.time),name:t.name,attributes:n(t.attributes)}})))}}},{key:"_transformResource",value:function(t){var e=this,r=t.attributes||{};return{attributes:Object.entries(r).map((function(t){var r=zr(t,2),n=r[0],o=r[1];return{key:n,value:e._transformAnyValue(o)}}))}}},{key:"_transformInstrumentationScope",value:function(t){var e=this;return{name:t.name||"",version:t.version||"",attributes:(t.attributes||[]).map((function(t){return{key:t.key,value:e._transformAnyValue(t.value)}}))}}},{key:"_transformAnyValue",value:function(t){var e=this;if(null==t)return{stringValue:""};var r=$r(t);return"string"===r?{stringValue:t}:"number"===r?Number.isInteger(t)?{intValue:t.toString()}:{doubleValue:t}:"boolean"===r?{boolValue:t}:Array.isArray(t)?{arrayValue:{values:t.map((function(t){return e._transformAnyValue(t)}))}}:"object"===r?{kvlistValue:{values:Object.entries(t).map((function(t){var r=zr(t,2),n=r[0],o=r[1];return{key:n,value:e._transformAnyValue(o)}}))}}:{stringValue:String(t)}}}])}(),en=[];function rn(t){return rn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},rn(t)}function nn(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return on(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?on(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function on(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.exporter=e,this.options=r,this.pendingSpans=new Map,this.transforms=[this.userTransform.bind(this)]}),[{key:"addTransform",value:function(t){this.transforms.unshift(t)}},{key:"userTransform",value:function(t){this.options.transformSpan&&this.options.transformSpan({span:t})}},{key:"applyTransforms",value:function(t){var e,r=nn(this.transforms);try{for(r.s();!(e=r.n()).done;){var n=e.value;try{n(t)}catch(t){vt.error("Error running span transform callback",t)}}}catch(t){r.e(t)}finally{r.f()}}},{key:"onStart",value:function(t,e){this.pendingSpans.set(t.span.spanContext.spanId,t)}},{key:"onEnd",value:function(t){this.applyTransforms(t.span),this.exporter.export([t.export()]),this.pendingSpans.delete(t.span.spanContext.spanId)}}])}();function ln(t){return ln="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ln(t)}function cn(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,s=[],u=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(s.push(n.value),s.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(t,e)||function(t,e){if(t){if("string"==typeof t)return fn(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?fn(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function fn(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0;return this.span.ended||this.span.events.push({name:t,attributes:e,time:r||Gr.now(),droppedAttributesCount:0}),this}},{key:"isRecording",value:function(){return!1===this.span.ended}},{key:"end",value:function(t,e){t&&this.setAttributes(t),this.span.endTime=e||Gr.now(this.usePerformance),this.span.ended=!0,this.spanProcessor.onEnd(this)}},{key:"export",value:function(){return this.span}}])}();function yn(t){return yn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},yn(t)}function vn(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function mn(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.tracing.contextManager.active(),u=this.tracing.getSpan(s),l=null==u?void 0:u.spanContext(),c=Nr.gen(8),f=null;l?(o=l.traceId,f=l.traceState,i=l.spanId):o=Nr.gen(16);var p={traceId:o,spanId:c,traceFlags:0,traceState:f},h={attributes:mn(mn({},(null===(e=this.tracing.resource)||void 0===e?void 0:e.attributes)||{}),(null===(r=a.resource)||void 0===r?void 0:r.attributes)||{})};return new dn({resource:h,scope:this.tracing.scope,session:null===(n=this.tracing.session)||void 0===n?void 0:n.session,context:s,spanContext:p,name:t,kind:0,parentSpanId:i,spanProcessor:this.spanProcessor,startTime:a.startTime,usePerformance:a.usePerformance})}}])}();function _n(t){return _n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_n(t)}function Sn(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function On(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:16;return Nr.gen(t)}},{key:"createTracer",value:function(){this.contextManager=new Lr,this.exporter=new tn(this.api,this.options),this.spanProcessor=new un(this.exporter,this.options.tracing),this.tracer=new kn(this,this.spanProcessor)}},{key:"getTracer",value:function(){return this.tracer}},{key:"addSpanTransform",value:function(t){this.spanProcessor.addTransform(t)}},{key:"getSpan",value:function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.contextManager.active()).getValue(Pn)}},{key:"setSpan",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.contextManager.active(),e=arguments.length>1?arguments[1]:void 0;return t.setValue(Pn,e)}},{key:"startSpan",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.contextManager.active();return this.tracer.startSpan(t,e,r)}},{key:"with",value:function(t,e,r){for(var n,o=arguments.length,i=new Array(o>3?o-3:0),a=3;a=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return s=t.done,t},e:function(t){u=!0,a=t},f:function(){try{s||null==r.return||r.return()}finally{if(u)throw a}}}}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r0&&(u||(u=S({})),u.extraArgs=S(p));var g,w={message:i,err:a,custom:u,timestamp:P(),callback:l,notifier:r,diagnostic:{},uuid:(g=P(),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){var e=(g+16*Math.random())%16|0;return g=Math.floor(g/16),("x"===t?e:7&e|8).toString(16)}))};return w.data=w.data||{},function(t,e){e&&void 0!==e.level&&(t.level=e.level,delete e.level);e&&void 0!==e.skipFrames&&(t.skipFrames=e.skipFrames,delete e.skipFrames)}(w,u),n&&c&&(w.request=c),o&&(w.lambdaContext=o),w._originalArgs=t,w.diagnostic.original_arg_types=d,w}var O=["log","network","dom","navigation","error","manual"],x=["critical","error","warning","info","debug"];function E(t,e){var r,o=n(t);try{for(o.s();!(r=o.n()).done;){if(r.value===e)return!0}}catch(t){o.e(t)}finally{o.f()}return!1}function j(t,e){t.attributes=t.attributes||[];var r,o=n(e);try{for(o.s();!(r=o.n()).done;){var i=r.value;void 0!==i.value&&t.attributes.push(i)}}catch(t){o.e(t)}finally{o.f()}}function I(t,e){if(t){var r=e.split("."),n=t;try{for(var o=0,i=r.length;o=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function N(t,e){if(t){if("string"==typeof t)return D(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?D(t,e):void 0}}function D(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);rn&&(o=this.queue.length-n),this.maxQueueSize=n,this.queue.splice(0,o)}},{key:"copyEvents",value:function(){var t=Array.prototype.slice.call(this.queue,0);if(u(this.options.filterTelemetry))try{for(var e=t.length;e--;)this.options.filterTelemetry(t[e])&&t.splice(e,1)}catch(t){this.options.filterTelemetry=null}return t=(t=t.filter(function(t){return"connectivity"!==t.type})).map(function(t){t.otelAttributes;var e=function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(-1!==e.indexOf(n))continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.telemetrySpan&&(this.telemetrySpan.end(t),this.telemetrySpan=this.tracing.startSpan("rollbar-telemetry",{}))}},{key:"capture",value:function(t,e,r,n){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,a={level:Z(t,r),type:t,timestamp_ms:o||P(),body:e,source:"client"};n&&(a.uuid=n),i&&(a.otelAttributes=i);try{if(u(this.options.filterTelemetry)&&this.options.filterTelemetry(a))return!1}catch(t){this.options.filterTelemetry=null}return this.push(a),a}},{key:"captureEvent",value:function(t,e,r,n){return this.capture(t,e,r,n)}},{key:"captureError",value:function(t,e,r,n){var o,i=t.message||String(t),a={message:i};t.stack&&(a.stack=t.stack);var s={message:i,level:e,type:"error",uuid:r};return null===(o=this.telemetrySpan)||void 0===o||o.addEvent("rollbar-occurrence-event",s,z(n)),this.capture("error",a,e,r,n,s)}},{key:"captureLog",value:function(t,e,r,n){var o,i=r?"rollbar-occurrence-event":"rollbar-log-event",a=V({message:t,level:e},r?{type:"message",uuid:r}:{});return null===(o=this.telemetrySpan)||void 0===o||o.addEvent(i,a,z(n)),this.capture("log",{message:t},e,r,n,a)}},{key:"captureNetwork",value:function(t,e,r,n){var o,i,a;e=e||"xhr",t.subtype=t.subtype||e,n&&(t.request=n);var s=this.levelFromStatus(t.status_code),u=1e6*(t.end_time_ms||0),l={type:t.subtype,method:t.method,url:t.url,statusCode:t.status_code,"request.headers":JSON.stringify(t.request_headers||{}),"response.headers":JSON.stringify((null===(o=t.response)||void 0===o?void 0:o.headers)||{}),"response.timeUnixNano":u.toString()},c=t.request,f=null===(i=t.response)||void 0===i?void 0:i.body;return c&&(l["request.body"]=JSON.stringify(c)),f&&(l["response.body"]=JSON.stringify(f)),null===(a=this.telemetrySpan)||void 0===a||a.addEvent("rollbar-network-event",l,z(t.start_time_ms)),this.capture("network",t,s,r,t.start_time_ms,l)}},{key:"levelFromStatus",value:function(t){return t>=200&&t<400?"info":0===t||t>=400?"error":"info"}},{key:"captureDom",value:function(t,e,r,n,o){var i={subtype:t,element:e};return void 0!==r&&(i.value=r),void 0!==n&&(i.checked=n),this.capture("dom",i,"info",o)}},{key:"captureInput",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.value,a=t.timestamp,s="rollbar-input-event",u={type:s,subtype:r,element:o,value:i},l={type:r,isSynthetic:n,element:o,value:i,endTimeUnixNano:z(a)},c=this._getRepeatedEvent(s,l);return c?this._updateRepeatedEvent(c,l,a):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(s,l,z(a)),this.capture("dom",u,"info",null,a,l))}},{key:"captureClick",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.timestamp,a="rollbar-click-event",s={type:a,subtype:r,element:o},u={type:r,isSynthetic:n,element:o,endTimeUnixNano:z(i)},l=this._getRepeatedEvent(a,u);return l?this._updateRepeatedEvent(l,u,i):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(a,u,z(i)),this.capture("dom",s,"info",null,i,u))}},{key:"_getRepeatedEvent",value:function(t,e){var r=this._lastEvent(this.queue);if(r&&r.body.type===t&&r.otelAttributes.target===e.target)return r}},{key:"_updateRepeatedEvent",value:function(t,e,r){var n=Math.max(r-t.timestamp_ms,1);t.body.value=e.value,t.otelAttributes.value=e.value,t.otelAttributes.height=e.height,t.otelAttributes.width=e.width,t.otelAttributes.textZoomRatio=e.textZoomRatio,t.otelAttributes.endTimeUnixNano=z(r),t.otelAttributes.durationUnixNano=z(n),t.otelAttributes.count=(t.otelAttributes.count||1)+1,t.otelAttributes.rate=t.otelAttributes.count/(n/1e3)}},{key:"_lastEvent",value:function(t){return t.length>0?t[t.length-1]:null}},{key:"captureFocus",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.timestamp,a="rollbar-focus-event",s={type:a,subtype:r,element:o},u={type:r,isSynthetic:n,element:o};return null===(e=this.telemetrySpan)||void 0===e||e.addEvent(a,u,z(i)),this.capture("dom",s,"info",null,i,u)}},{key:"captureResize",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.width,i=t.height,a=t.textZoomRatio,s=t.timestamp,u="rollbar-resize-event",l={type:u,subtype:r,width:o,height:i,textZoomRatio:a},c={type:r,isSynthetic:n,width:o,height:i,textZoomRatio:a},f=this._getRepeatedEvent(u,c);return f?this._updateRepeatedEvent(f,c,s):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(u,c,z(s)),this.capture("dom",l,"info",null,s,c))}},{key:"captureDragDrop",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.dropEffect,a=t.effectAllowed,s=t.kinds,u=t.mediaTypes,l=t.timestamp,c="rollbar-dragdrop-event",f={type:c,subtype:r,isSynthetic:n},p={type:r,isSynthetic:n};return"dragstart"===r&&(f=V(V({},f),{},{element:o,dropEffect:i,effectAllowed:a}),p=V(V({},p),{},{element:o,dropEffect:i,effectAllowed:a})),"drop"===r&&(f=V(V({},f),{},{element:o,dropEffect:i,effectAllowed:a,kinds:s,mediaTypes:u}),p=V(V({},p),{},{element:o,dropEffect:i,effectAllowed:a,kinds:s,mediaTypes:u})),null===(e=this.telemetrySpan)||void 0===e||e.addEvent(c,p,z(l)),this.capture("dom",f,"info",null,l,p)}},{key:"captureNavigation",value:function(t,e,r,n){var o;return null===(o=this.telemetrySpan)||void 0===o||o.addEvent("rollbar-navigation-event",{"previous.url.full":t,"url.full":e},z(n)),this.capture("navigation",{from:t,to:e},"info",r,n)}},{key:"captureDomContentLoaded",value:function(t){return this.capture("navigation",{subtype:"DOMContentLoaded"},"info",void 0,t&&t.getTime())}},{key:"captureLoad",value:function(t){return this.capture("navigation",{subtype:"load"},"info",void 0,t&&t.getTime())}},{key:"captureConnectivityChange",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.timestamp,i="rollbar-connectivity-event",a={type:i,subtype:r},s={type:r,isSynthetic:n};return null===(e=this.telemetrySpan)||void 0===e||e.addEvent(i,s,z(o)),this.capture("connectivity",a,"info",null,o,s)}},{key:"_captureRollbarItem",value:function(t){if(this.options.includeItemsInTelemetry)return t.err?this.captureError(t.err,t.level,t.uuid,t.timestamp):t.message?this.captureLog(t.message,t.level,t.uuid,t.timestamp):t.custom?this.capture("log",t.custom,t.level,t.uuid,t.timestamp):void 0}},{key:"push",value:function(t){this.queue.push(t),this.queue.length>this.maxQueueSize&&this.queue.shift()}}],e&&W(t.prototype,e),r&&W(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function Z(t,e){if(e)return e;return{error:"error",manual:"info"}[t]||"info"}var Q=X;function K(t){return K="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},K(t)}function Y(t,e){for(var r=0;r3?o-3:0),a=3;a0&&void 0!==arguments[0]&&arguments[0]?ut(st(performance.timeOrigin),st(performance.now())):st(Date.now())},isHrTime:function(t){return Array.isArray(t)&&2===t.length&&"number"==typeof t[0]&&"number"==typeof t[1]}};function ct(t){return ct="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ct(t)}function ft(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,s=[],u=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(s.push(n.value),s.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(t,e)||dt(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function pt(t){return function(t){if(Array.isArray(t))return ht(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||dt(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function dt(t,e){if(t){if("string"==typeof t)return ht(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ht(t,e):void 0}}function ht(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.api=e,this.options=r},e=[{key:"export",value:function(t,e){bt.push.apply(bt,pt(t))}},{key:"toPayload",value:function(){var t=this,e=bt.slice();if(bt.length=0,!e||!e.length)return{resourceSpans:[]};var r,n=e[0]&&e[0].resource||{},o=new Map,i=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=dt(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}(e);try{for(i.s();!(r=i.n()).done;){var a=r.value,s=a.instrumentationScope?"".concat(a.instrumentationScope.name,":").concat(a.instrumentationScope.version):"default:1.0.0";o.has(s)||o.set(s,{scope:a.instrumentationScope||{name:"default",version:"1.0.0",attributes:[]},spans:[]}),o.get(s).spans.push(this._transformSpan(a))}}catch(t){i.e(t)}finally{i.f()}return{resourceSpans:[{resource:this._transformResource(n),scopeSpans:Array.from(o.values()).map(function(e){return{scope:t._transformInstrumentationScope(e.scope),spans:e.spans}})}]}}},{key:"post",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.api.postSpans(t,e)}},{key:"_transformSpan",value:function(t){var e,r=this,n=function(t){return Object.entries(t||{}).map(function(t){var e=ft(t,2),n=e[0],o=e[1];return{key:n,value:r._transformAnyValue(o)}})};return{traceId:t.spanContext.traceId,spanId:t.spanContext.spanId,parentSpanId:t.parentSpanId||"",name:t.name,kind:t.kind||1,startTimeUnixNano:lt.toNanos(t.startTime),endTimeUnixNano:lt.toNanos(t.endTime),attributes:n(t.attributes),events:(e=t.events,(e||[]).map(function(t){return{timeUnixNano:lt.toNanos(t.time),name:t.name,attributes:n(t.attributes)}}))}}},{key:"_transformResource",value:function(t){var e=this,r=t.attributes||{};return{attributes:Object.entries(r).map(function(t){var r=ft(t,2),n=r[0],o=r[1];return{key:n,value:e._transformAnyValue(o)}})}}},{key:"_transformInstrumentationScope",value:function(t){var e=this;return{name:t.name||"",version:t.version||"",attributes:(t.attributes||[]).map(function(t){return{key:t.key,value:e._transformAnyValue(t.value)}})}}},{key:"_transformAnyValue",value:function(t){var e=this;if(null==t)return{stringValue:""};var r=ct(t);return"string"===r?{stringValue:t}:"number"===r?Number.isInteger(t)?{intValue:t.toString()}:{doubleValue:t}:"boolean"===r?{boolValue:t}:Array.isArray(t)?{arrayValue:{values:t.map(function(t){return e._transformAnyValue(t)})}}:"object"===r?{kvlistValue:{values:Object.entries(t).map(function(t){var r=ft(t,2),n=r[0],o=r[1];return{key:n,value:e._transformAnyValue(o)}})}}:{stringValue:String(t)}}}],e&&yt(t.prototype,e),r&&yt(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}(),bt=[];var gt={gen:function(){var t=new Uint8Array(arguments.length>0&&void 0!==arguments[0]?arguments[0]:16);return crypto.getRandomValues(t),Array.from(t,function(t){return t.toString(16).padStart(2,"0")}).join("")}};function wt(t){return wt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},wt(t)}function kt(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function St(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return this.session||(this.getSession()||this.createSession(),this.initSessionAttributes(t)),this}},{key:"getSession",value:function(){try{var t=this.window.sessionStorage.getItem(Et);if(!t)return null;this.session=JSON.parse(t)}catch(t){return null}return this}},{key:"createSession",value:function(){return this.session={id:gt.gen(),createdAt:Date.now()},this.setSession(this.session)}},{key:"setSession",value:function(t){var e=JSON.stringify(t);try{this.window.sessionStorage.setItem(Et,e)}catch(t){return null}return this}},{key:"attributes",get:function(){return this._attributes}},{key:"setAttributes",value:function(t){return this._attributes=St(St({},this._attributes),t),this}},{key:"setUser",value:function(t){return this.setAttributes({"user.id":null==t?void 0:t.id,"user.email":null==t?void 0:t.email,"user.name":(null==t?void 0:t.name)||(null==t?void 0:t.username)}),this}},{key:"initSessionAttributes",value:function(t){var e,r,n;return this.setAttributes(St({"session.id":this.session.id,"browser.brands":null===(e=navigator.userAgentData)||void 0===e?void 0:e.brands,"browser.language":navigator.language,"browser.mobile":null===(r=navigator.userAgentData)||void 0===r?void 0:r.mobile,"browser.platform":null===(n=navigator.userAgentData)||void 0===n?void 0:n.platform,"client.address":"$remote_ip","rollbar.notifier.framework":"browser-js","user_agent.original":navigator.userAgent},t)),this}}],e&&_t(t.prototype,e),r&&_t(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}(),It=function(){},Tt={debug:0,info:1,warn:2,error:3,disable:4},Pt={error:function(){for(var t=arguments.length,e=new Array(t),r=0;r=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function Lt(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.exporter=e,this.options=r,this.pendingSpans=new Map,this.transforms=[this.userTransform.bind(this)]},e=[{key:"addTransform",value:function(t){this.transforms.unshift(t)}},{key:"userTransform",value:function(t){this.options.transformSpan&&this.options.transformSpan({span:t})}},{key:"applyTransforms",value:function(t){var e,r=Ct(this.transforms);try{for(r.s();!(e=r.n()).done;){var n=e.value;try{n(t)}catch(t){At.error("Error running span transform callback",t)}}}catch(t){r.e(t)}finally{r.f()}}},{key:"onStart",value:function(t,e){this.pendingSpans.set(t.span.spanContext.spanId,t)}},{key:"onEnd",value:function(t){this.applyTransforms(t.span),this.exporter.export([t.export()]),this.pendingSpans.delete(t.span.spanContext.spanId)}}],e&&qt(t.prototype,e),r&&qt(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function Mt(t){return Mt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Mt(t)}function Ut(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,s=[],u=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(s.push(n.value),s.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(t,e)||function(t,e){if(t){if("string"==typeof t)return Ht(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Ht(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ht(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0;return this.span.ended||this.span.events.push({name:t,attributes:e,time:r||lt.now(),droppedAttributesCount:0}),this}},{key:"isRecording",value:function(){return!1===this.span.ended}},{key:"end",value:function(t,e){t&&this.setAttributes(t),this.span.endTime=e||lt.now(this.usePerformance),this.span.ended=!0,this.spanProcessor.onEnd(this)}},{key:"export",value:function(){return this.span}}],e&&Ft(t.prototype,e),r&&Ft(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function Bt(t){return Bt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Bt(t)}function Wt(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function $t(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.tracing.contextManager.active(),u=this.tracing.getSpan(s),l=null==u?void 0:u.spanContext(),c=gt.gen(8),f=null;l?(o=l.traceId,f=l.traceState,i=l.spanId):o=gt.gen(16);var p={traceId:o,spanId:c,traceFlags:0,traceState:f},d={attributes:$t($t({},(null===(e=this.tracing.resource)||void 0===e?void 0:e.attributes)||{}),(null===(r=a.resource)||void 0===r?void 0:r.attributes)||{})};return new Vt({resource:d,scope:this.tracing.scope,session:null===(n=this.tracing.session)||void 0===n?void 0:n.session,context:s,spanContext:p,name:t,kind:0,parentSpanId:i,spanProcessor:this.spanProcessor,startTime:a.startTime,usePerformance:a.usePerformance})}}],e&&zt(t.prototype,e),r&&zt(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function Qt(t){return Qt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Qt(t)}function Kt(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function Yt(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:16;return gt.gen(t)}},{key:"createTracer",value:function(){this.contextManager=new at,this.exporter=new mt(this.api,this.options),this.spanProcessor=new Dt(this.exporter,this.options.tracing),this.tracer=new Zt(this,this.spanProcessor)}},{key:"getTracer",value:function(){return this.tracer}},{key:"addSpanTransform",value:function(t){this.spanProcessor.addTransform(t)}},{key:"getSpan",value:function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.contextManager.active()).getValue(oe)}},{key:"setSpan",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.contextManager.active(),e=arguments.length>1?arguments[1]:void 0;return t.setValue(oe,e)}},{key:"startSpan",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.contextManager.active();return this.tracer.startSpan(t,e,r)}},{key:"with",value:function(t,e,r){for(var n,o=arguments.length,i=new Array(o>3?o-3:0),a=3;a=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function ue(t,e){if(t){if("string"==typeof t)return le(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?le(t,e):void 0}}function le(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r2*e?t.slice(0,e).concat(t.slice(r-e)):t}function pe(t,e,r){r=void 0===r?30:r;var n,o=t.data.body;if(o.trace_chain){var i,a=se(o.trace_chain);try{for(a.s();!(i=a.n()).done;){var s=i.value;n=fe(n=s.frames,r),s.frames=n}}catch(t){a.e(t)}finally{a.f()}}else o.trace&&(n=fe(n=o.trace.frames,r),o.trace.frames=n);return[t,b(t,e)]}function de(t,e){return e&&e.length>t?e.slice(0,t-3).concat("..."):e}function he(t,e,r){return e=C(e,function e(r,n,o){switch(s(n)){case"string":return de(t,n);case"object":case"array":return C(n,e,o);default:return n}}),[e,b(e,r)]}function ye(t){return t.exception&&(delete t.exception.description,t.exception.message=de(255,t.exception.message)),t.frames=fe(t.frames,1),t}function ve(t,e){var r=t.data.body;if(r.trace_chain){var n,o=r.trace_chain,i=se(o.entries());try{for(i.s();!(n=i.n()).done;){var a=ae(n.value,2),s=a[0],u=a[1];o[s]=ye(u)}}catch(t){i.e(t)}finally{i.f()}}else r.trace&&(r.trace=ye(r.trace));return[t,b(t,e)]}function me(t,e){return function(t){for(var e=0,r=t.length,n=0;ne}var be={truncate:function(t,e,r){r=void 0===r?524288:r;for(var n,o,i,a=[ce,pe,he.bind(null,1024),he.bind(null,512),he.bind(null,256),ve];n=a.shift();)if(t=(o=n(t,e))[0],(i=o[1]).error||!me(i.value,r))return i;return i},raw:ce,truncateFrames:pe,truncateStrings:he,maybeTruncateValue:de};function ge(t){if(!a(t.context,"string")){var e=b(t.context);e.error?t.context="Error: could not serialize 'context'":t.context=e.value||"",t.context.length>255&&(t.context=t.context.substr(0,255))}return{data:t}}function we(t,e,r){var n=e.hostname,o=e.protocol,i=e.port,a=e.path,s=e.search,u=t.timeout,l=function(t){var e="undefined"!=typeof window&&window||"undefined"!=typeof self&&self,r=t.defaultTransport||"xhr";void 0===e.fetch&&(r="xhr");void 0===e.XMLHttpRequest&&(r="fetch");return r}(t),c=t.proxy;if(t.endpoint){var f=r.parse(t.endpoint);n=f.hostname,o=f.protocol,i=f.port,a=f.pathname,s=f.search}return{timeout:u,hostname:n,protocol:o,port:i,path:a,search:s,proxy:c,transport:l}}function ke(t,e){var r=t.protocol||"https:",n=t.port||("http:"===r?80:"https:"===r?443:void 0),o=t.hostname,i=t.path,a=t.timeout,s=t.transport;return t.search&&(i+=t.search),t.proxy&&(i=r+"//"+o+i,o=t.proxy.host||t.proxy.hostname,n=t.proxy.port,r=t.proxy.protocol||r),{timeout:a,protocol:r,hostname:o,path:i,port:n,method:e,transport:s}}function Se(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function _e(t){for(var e=1;e3?(o=h===n)&&(u=i[(s=i[4])?5:(s=3,3)],i[4]=i[5]=t):i[0]<=d&&((o=r<2&&dn||n>h)&&(i[4]=r,i[5]=n,p.n=h,s=0))}if(o||r>1)return a;throw f=!0,n}return function(o,c,h){if(l>1)throw TypeError("Generator is already running");for(f&&1===c&&d(c,h),s=c,u=h;(e=s<2?t:u)||!f;){i||(s?s<3?(s>1&&(p.n=-1),d(s,u)):p.n=u:p.v=u);try{if(l=2,i){if(s||(o="next"),e=i[o]){if(!(e=e.call(i,u)))throw TypeError("iterator result is not an object");if(!e.done)return e;u=e.value,s<2&&(s=0)}else 1===s&&(e=i.return)&&e.call(i),s<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),s=1);i=t}else if((e=(f=p.n<0)?u:r.call(n,p))!==a)break}catch(e){i=t,s=1,u=e}finally{l=1}}return{value:e,done:f}}}(r,o,i),!0),l}var a={};function s(){}function u(){}function l(){}e=Object.getPrototypeOf;var c=[][n]?e(e([][n]())):(je(e={},n,function(){return this}),e),f=l.prototype=s.prototype=Object.create(c);function p(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,l):(t.__proto__=l,je(t,o,"GeneratorFunction")),t.prototype=Object.create(f),t}return u.prototype=l,je(f,"constructor",l),je(l,"constructor",u),u.displayName="GeneratorFunction",je(l,o,"GeneratorFunction"),je(f),je(f,o,"Generator"),je(f,n,function(){return this}),je(f,"toString",function(){return"[object Generator]"}),(Ee=function(){return{w:i,m:p}})()}function je(t,e,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}je=function(t,e,r,n){function i(e,r){je(t,e,function(t){return this._invoke(e,r,t)})}e?o?o(t,e,{value:r,enumerable:!n,configurable:!n,writable:!n}):t[e]=r:(i("next",0),i("throw",1),i("return",2))},je(t,e,r,n)}function Ie(t,e,r,n,o,i,a){try{var s=t[i](a),u=s.value}catch(t){return void r(t)}s.done?e(u):Promise.resolve(u).then(n,o)}function Te(t,e){for(var r=0;r1&&void 0!==o[1]?o[1]:{},n=ke(this.OTLPTransportOptions,"POST"),t.a(2,this._postPromise({accessToken:this.accessToken,options:n,payload:e,headers:r}))},t,this)}),o=function(){var t=this,e=arguments;return new Promise(function(r,o){var i=n.apply(t,e);function a(t){Ie(i,r,o,a,s,"next",t)}function s(t){Ie(i,r,o,a,s,"throw",t)}a(void 0)})},function(t){return o.apply(this,arguments)})},{key:"buildJsonPayload",value:function(t,e){var r,n=ge(t);return(r=this.truncation?this.truncation.truncate(n):b(n)).error?(e&&e(r.error),null):r.value}},{key:"postJsonPayload",value:function(t,e){var r=ke(this.transportOptions,"POST");this.transport.postJsonPayload(this.accessToken,r,t,e)}},{key:"configure",value:function(t){var e=this.options;return this.options=R(e,t),this.transportOptions=Le(this.options,this.url),this.OTLPTransportOptions=qe(this.options,this.url),void 0!==this.options.accessToken&&(this.accessToken=this.options.accessToken),this}}],e&&Te(t.prototype,e),r&&Te(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r,n,o}();function Le(t,e){return we(t,Ae,e)}function qe(t,e){var r;return we(t=_e(_e({},t),{},{endpoint:null===(r=t.tracing)||void 0===r?void 0:r.endpoint}),Re,e)}var Ne=Ce,De="3.0.0",Me="api.rollbar.com/api/1/item/",Ue="debug",He="debug",Fe="error",Je=/(^|@)\S+:\d+/,Ve=/^\s*at .*(\S+:\d+|\(native\))/m,Be=/^(eval@)?(\[native code\])?$/;function We(t,e){if(void 0!==t.stacktrace||void 0!==t["opera#sourceloc"])return function(t,e){return!t.stacktrace||t.message.includes("\n")&&t.message.split("\n").length>t.stacktrace.split("\n").length?function(t,e){for(var r=/Line (\d+).*script (?:in )?(\S+)/i,n=t.message.split("\n"),o=[],i=2,a=n.length;i/,"$2").replace(/\([^)]*\)/g,"")||void 0;return o.match(/\(([^)]*)\)/)&&(e=o.replace(/^[^(]+\(([^)]*)\)$/,"$1")),{function:i,args:void 0===e||"[arguments not available]"===e?void 0:e.split(","),file:n[0],line:n[1]?+n[1]:void 0,col:n[2]?+n[2]:void 0,raw:t}})}(t,e):function(t,e){for(var r=/Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i,n=t.stacktrace.split("\n"),o=[],i=0,a=n.length;i"].includes(n[0])?void 0:n[0],line:n[1]?+n[1]:void 0,col:n[2]?+n[2]:void 0,raw:t}})}function Xe(t,e){return Ge(t.split("\n").filter(function(t){return!t.match(Be)}),e).map(function(t){if(t.includes(" > eval")&&(t=t.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),t.includes("@")||t.includes(":")){var e=/(([^\n\r"\u2028\u2029]*".[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*(?:@[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*)*(?:[\n\r\u2028\u2029][^@]*)?)?[^@]*)@/,r=t.match(e),n=r&&r[1]?r[1]:void 0,o=$e(t.replace(e,""));return{function:n,file:o[0],line:o[1]?+o[1]:void 0,col:o[2]?+o[2]:void 0,raw:t}}return{function:t}})}function Ze(t){return t.map(function(t){return{functionName:t.function,args:t.args,fileName:t.file,lineNumber:t.line,columnNumber:t.col,source:t.raw}})}var Qe=new RegExp("^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): ");function Ke(){return null}function Ye(t){var e={};return e._stackFrame=t,e.url=t.fileName,e.line=t.lineNumber,e.func=t.functionName,e.column=t.columnNumber,e.args=t.args,e.context=null,e}function tr(t,e){return{stack:function(){var r=[];e=e||0;try{r=function(t,e){return Ze(We(t,e))}(t)}catch(t){r=[]}for(var n=[],o=e;o=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function or(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);rthis.options.maxRetries&&(o=!1))}o?this._retryApiRequest(r,n):n(e)}},{key:"_retryApiRequest",value:function(t,e){var r=this;this.retryQueue.push({item:t,callback:e}),this.retryHandle||(this.retryHandle=setInterval(function(){for(;r.retryQueue.length;){var t=r.retryQueue.shift();r._makeApiRequest(t.item,t.callback)}},this.options.retryInterval))}},{key:"_dequeuePendingRequest",value:function(t){var e=this.pendingRequests.indexOf(t);-1!==e&&(this.pendingRequests.splice(e,1),this._maybeCallWait())}},{key:"_maybeLog",value:function(t,e){if(this.logger&&this.options.verbose){var r=e||I(t,"body.trace.exception.message")||I(t,"body.trace_chain.0.exception.message");if(r)return void this.logger.error(r);(r=I(t,"body.message.body"))&&this.logger.log(r)}}},{key:"_maybeCallWait",value:function(){return!(!u(this.waitCallback)||0!==this.pendingItems.length||0!==this.pendingRequests.length||(this.waitIntervalID&&(this.waitIntervalID=clearInterval(this.waitIntervalID)),this.waitCallback(),0))}}],r&&hr(e.prototype,r),n&&hr(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r,n}();vr=gr,br=["ECONNRESET","ENOTFOUND","ESOCKETTIMEDOUT","ETIMEDOUT","ECONNREFUSED","EHOSTUNREACH","EPIPE","EAI_AGAIN"],(mr=yr(mr="RETRIABLE_ERRORS"))in vr?Object.defineProperty(vr,mr,{value:br,enumerable:!0,configurable:!0,writable:!0}):vr[mr]=br;var wr=gr;function kr(t){return kr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},kr(t)}function Sr(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.startTime=Date.now(),this.counter=0,this.perMinCounter=0,this.platform=null,this.platformOptions={},this.configureGlobal(e)}return function(t,e,r){return e&&Sr(t.prototype,e),r&&Sr(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}(t,[{key:"configureGlobal",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.startTime,n=e.maxItems,o=e.itemsPerMinute;void 0!==r&&(t.globalSettings.startTime=r),void 0!==n&&(t.globalSettings.maxItems=n),void 0!==o&&(t.globalSettings.itemsPerMinute=o)}},{key:"shouldSend",value:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now(),n=r-this.startTime;(n<0||n>=6e4)&&(this.startTime=r,this.perMinCounter=0);var o=t.globalSettings.maxItems,i=t.globalSettings.itemsPerMinute;if(xr(e,o,this.counter))return Er(this.platform,this.platformOptions,"".concat(o," max items reached"),!1);if(xr(e,i,this.perMinCounter))return Er(this.platform,this.platformOptions,"".concat(i," items per minute reached"),!1);this.counter+=1,this.perMinCounter+=1;var a=!xr(e,o,this.counter),s=a,u=a&&!xr(e,i,this.perMinCounter);return Er(this.platform,this.platformOptions,null,u,o,i,s)}},{key:"setPlatformOptions",value:function(t,e){this.platform=t,this.platformOptions=e}}])}();function xr(t,e,r){return!t.ignoreRateLimit&&e>=1&&r>e}function Er(t,e,r,n,o,i,a){var s=null,u=r?new Error(r):null;return u||n||(s=function(t,e,r,n,o){var i=e.environment||e.payload&&e.payload.environment,a=o?"item per minute limit reached, ignoring errors until timeout":"maxItems has been hit, ignoring errors until reset.",s={body:{message:{body:a,extra:{maxItems:r,itemsPerMinute:n}}},language:"javascript",environment:i,notifier:{version:e.notifier&&e.notifier.version||e.version}};"browser"===t?(s.platform="browser",s.framework="browser-js",s.notifier.name="rollbar-browser-js"):"server"===t?(s.framework=e.framework||"node-js",s.notifier.name=e.notifier.name):"react-native"===t&&(s.framework=e.framework||"react-native",s.notifier.name=e.notifier.name);return s}(t,e,o,i,a)),{error:u,shouldSend:n,payload:s}}!function(t,e,r){(e=_r(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r}(Or,"globalSettings",{startTime:Date.now(),maxItems:void 0,itemsPerMinute:void 0});var jr=Or;function Ir(t,e,r,n,o,i,a){this.options=R(t),this.logger=r,Ir.rateLimiter.configureGlobal(this.options),Ir.rateLimiter.setPlatformOptions(a,this.options),this.api=e,this.queue=new wr(Ir.rateLimiter,e,r,this.options,i),this.tracing=o;var s=this.options.tracer||null;Pr(s)?(this.tracer=s,this.options.tracer="opentracing-tracer-enabled",this.options._configuredOptions.tracer="opentracing-tracer-enabled"):this.tracer=null,this.notifier=new pr(this.queue,this.options),this.telemeter=n,Tr(t),this.lastError=null,this.lastErrorHash="none"}function Tr(t){t.stackTraceLimit&&(Error.stackTraceLimit=t.stackTraceLimit)}function Pr(t){if(!t)return!1;if(!t.scope||"function"!=typeof t.scope)return!1;var e=t.scope();return!(!e||!e.active||"function"!=typeof e.active)}Ir.rateLimiter=new jr({maxItems:0,itemsPerMinute:60}),Ir.prototype.global=function(t){return Ir.rateLimiter.configureGlobal(t),this},Ir.prototype.configure=function(t,e){var r=this.options,n={};e&&(n={payload:e}),this.options=R(r,t,n);var o=this.options.tracer||null;return Pr(o)?(this.tracer=o,this.options.tracer="opentracing-tracer-enabled",this.options._configuredOptions.tracer="opentracing-tracer-enabled"):this.tracer=null,this.notifier&&this.notifier.configure(this.options),this.telemeter&&this.telemeter.configure(this.options),Tr(t),this.global(this.options),Pr(t.tracer)&&(this.tracer=t.tracer),this},Ir.prototype.log=function(t){var e=this._defaultLogLevel();return this._log(e,t)},Ir.prototype.debug=function(t){this._log("debug",t)},Ir.prototype.info=function(t){this._log("info",t)},Ir.prototype.warn=function(t){this._log("warning",t)},Ir.prototype.warning=function(t){this._log("warning",t)},Ir.prototype.error=function(t){this._log("error",t)},Ir.prototype.critical=function(t){this._log("critical",t)},Ir.prototype.wait=function(t){this.queue.wait(t)},Ir.prototype.captureEvent=function(t,e,r){return this.telemeter&&this.telemeter.captureEvent(t,e,r)},Ir.prototype.captureDomContentLoaded=function(t){return this.telemeter&&this.telemeter.captureDomContentLoaded(t)},Ir.prototype.captureLoad=function(t){return this.telemeter&&this.telemeter.captureLoad(t)},Ir.prototype.buildJsonPayload=function(t){return this.api.buildJsonPayload(t)},Ir.prototype.sendJsonPayload=function(t){this.api.postJsonPayload(t)},Ir.prototype._log=function(t,e){var r;if(e.callback&&(r=e.callback,delete e.callback),this.options.ignoreDuplicateErrors&&this._sameAsLastError(e)){if(r){var n=new Error("ignored identical item");n.item=e,r(n)}}else try{e.level=e.level||t,this._addItemAttributes(e),this._addTracingInfo(e);var o=this.telemeter;o&&(o._captureRollbarItem(e),e.telemetryEvents=o.copyEvents()||[]),this.notifier.log(e,r)}catch(t){r&&r(t),this.logger.error(t)}},Ir.prototype._addItemAttributes=function(t){var e,r,n=null===(e=this.tracing)||void 0===e?void 0:e.getSpan(),o=[{key:"session_id",value:null===(r=this.tracing)||void 0===r?void 0:r.sessionId},{key:"span_id",value:null==n?void 0:n.spanId},{key:"trace_id",value:null==n?void 0:n.traceId}];t._isUncaught&&o.push({key:"is_uncaught",value:"true"}),j(t.data,o),null==n||n.addEvent("rollbar.occurrence",[{key:"rollbar.occurrence.uuid",value:t.uuid}])},Ir.prototype._defaultLogLevel=function(){return this.options.logLevel||"debug"},Ir.prototype._sameAsLastError=function(t){if(!t._isUncaught)return!1;var e=function(t){var e=t.message||"",r=(t.err||{}).stack||String(t.err);return e+"::"+r}(t);return this.lastErrorHash===e||(this.lastError=t.err,this.lastErrorHash=e,!1)},Ir.prototype._addTracingInfo=function(t){if(this.tracer){var e=this.tracer.scope().active();if(function(t){if(!t||!t.context||"function"!=typeof t.context)return!1;var e=t.context();if(!e||!e.toSpanId||!e.toTraceId||"function"!=typeof e.toSpanId||"function"!=typeof e.toTraceId)return!1;return!0}(e)){e.setTag("rollbar.error_uuid",t.uuid),e.setTag("rollbar.has_error",!0),e.setTag("error",!0),e.setTag("rollbar.item_url","https://rollbar.com/item/uuid/?uuid=".concat(t.uuid)),e.setTag("rollbar.occurrence_url","https://rollbar.com/occurrence/uuid/?uuid=".concat(t.uuid));var r=e.context().toSpanId(),n=e.context().toTraceId();t.custom?(t.custom.opentracing_span_id=r,t.custom.opentracing_trace_id=n):t.custom={opentracing_span_id:r,opentracing_trace_id:n}}}};var Ar=Ir;function Rr(t,e,r){t._isUncaught&&(t.data._isUncaught=!0),t._originalArgs&&(t.data._originalArgs=t._originalArgs),r(null,t)}function Cr(t,e,r){var n=e.payload||{};n.body&&delete n.body,t.data=R(t.data,n),r(null,t)}function Lr(t,e,r){t.telemetryEvents&&T(t,"data.body.telemetry",t.telemetryEvents),r(null,t)}function qr(t,e,r){if(t.message){var n="data.body.trace_chain.0",o=I(t,n);if(o||(o=I(t,n="data.body.trace")),o){if(!o.exception||!o.exception.description)return T(t,n+".exception.description",t.message),void r(null,t);T(t,n+".extra",R(I(t,n+".extra")||{},{message:t.message}))}r(null,t)}else r(null,t)}function Nr(t){return function(e,r,n){var o,i=R(e),s=null;try{u(r.transform)&&(s=r.transform(i.data,e))}catch(o){return r.transform=null,t.error("Error while calling custom transform() function. Removing custom transform().",o),void n(null,e)}l(o=s)&&a(o.then,"function")?s.then(function(t){t&&(i.data=t),n(null,i)},function(t){n(t,e)}):n(null,i)}}function Dr(t,e,r){if(!e.sendConfig)return r(null,t);var n=I(t,"data.custom")||{};n._rollbarConfig=e,t.data.custom=n,r(null,t)}function Mr(t,e){u(t[e])&&(t[e]=t[e].toString())}function Ur(t,e,r){var n=e._configuredOptions;Mr(n,"transform"),Mr(n,"checkIgnore"),Mr(n,"onSendCallback"),delete n.accessToken,t.data.notifier.configured_options=n,r(null,t)}function Hr(t,e,r){var n=R(t.notifier.client.notifier.diagnostic,t.diagnostic);if(I(t,"err._isAnonymous")&&(n.is_anonymous=!0),t._isUncaught&&(n.is_uncaught=t._isUncaught),t.err)try{n.raw_error={message:t.err.message,name:t.err.name,constructor_name:t.err.constructor&&t.err.constructor.name,filename:t.err.fileName,line:t.err.lineNumber,column:t.err.columnNumber,stack:t.err.stack}}catch(t){n.raw_error={failed:String(t)}}t.data.notifier.diagnostic=R(t.data.notifier.diagnostic,n),r(null,t)}function Fr(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:null)||t.stackInfo).stack;return e&&0===e.length&&t._unhandledStackInfo&&t._unhandledStackInfo.stack&&(e=t._unhandledStackInfo.stack),e}function Kr(t,e,r){var n=t&&t.data.description,o=t&&t.custom,i=Qr(t,e),a=rr.guessErrorClass(e.message),s={exception:{class:Yr(e,a[0],r),message:a[1]}};if(n&&(s.exception.description=n),i){var u,l,c,f,p,d,h,v;for(0===i.length&&(s.exception.stack=e.rawStack,s.exception.raw=String(e.rawException)),s.frames=[],h=0;ht.length)&&(e=t.length);for(var r=0,n=Array(e);r=400&&t.status<600}(e)){if(403===e.status){var o=t.value&&t.value.message;At.error(o)}u(new Error(String(e.status)))}else{u(sn("XHR response had no status code (likely connection failure)"))}}}catch(t){var i;i=t&&t.stack?t:new Error(t),u(i)}};if(e.open(o,n,!0),e.setRequestHeader){e.setRequestHeader("Content-Type","application/json"),e.setRequestHeader("X-Rollbar-Access-Token",r);for(var d=0,h=Object.entries(null!=s?s:{});ds)?(a=e.path,e.path=a.substring(0,s)+i+"&"+a.substring(s+1)):-1!==u?(a=e.path,e.path=a.substring(0,u)+i+a.substring(u)):e.path=e.path+i}(t,e,r);var i=m(e);this._makeZoneRequest({accessToken:t,url:i,method:"GET",callback:n,requestFactory:o,timeout:e.timeout,transport:e.transport})},ln.prototype.post=function(t){var e,r=t.accessToken,n=t.options,o=t.payload,i=t.headers,a=t.callback,s=t.requestFactory;if(a&&u(a)||(a=function(){}),!o)return a(new Error("Cannot send empty request"));if((e=this.truncation&&o.body?this.truncation.truncate(o):b(o)).error)return a(e.error);var l=m(n);this._makeZoneRequest({accessToken:r,url:l,method:"POST",payload:e.value,headers:i,callback:a,requestFactory:s,timeout:n.timeout,transport:n.transport})},ln.prototype.postJsonPayload=function(t,e,r,n,o){n&&u(n)||(n=function(){});var i=m(e);this._makeZoneRequest({accessToken:t,url:i,method:"POST",payload:r,callback:n,requestFactory:o,timeout:e.timeout,transport:e.transport})},ln.prototype._makeZoneRequest=function(){var t=this,e="undefined"!=typeof window&&window||"undefined"!=typeof self&&self,r=e&&e.Zone&&e.Zone.root,n=Array.prototype.slice.call(arguments);r?r.run(function(){t._makeRequest.apply(void 0,n)}):this._makeRequest.apply(void 0,n)},ln.prototype._makeRequest=function(t){var e=t.payload,r=t.callback,n=t.transport;if("undefined"!=typeof RollbarProxy)return function(t,e){(new RollbarProxy).sendJsonPayload(t,function(t){},function(t){e(new Error(t))})}(e,r);"fetch"===n?nn(t):un(t)};var cn,fn=ln;function pn(t){var e,r,n={protocol:null,auth:null,host:null,path:null,hash:null,href:t,hostname:null,port:null,pathname:null,search:null,query:null};if(-1!==(e=t.indexOf("//"))?(n.protocol=t.substring(0,e),r=e+2):r=0,-1!==(e=t.indexOf("@",r))&&(n.auth=t.substring(r,e),r=e+1),-1===(e=t.indexOf("/",r))){if(-1===(e=t.indexOf("?",r)))return-1===(e=t.indexOf("#",r))?n.host=t.substring(r):(n.host=t.substring(r,e),n.hash=t.substring(e)),n.hostname=n.host.split(":")[0],n.port=n.host.split(":")[1],n.port&&(n.port=parseInt(n.port,10)),n;n.host=t.substring(r,e),n.hostname=n.host.split(":")[0],n.port=n.host.split(":")[1],n.port&&(n.port=parseInt(n.port,10)),r=e}else n.host=t.substring(r,e),n.hostname=n.host.split(":")[0],n.port=n.host.split(":")[1],n.port&&(n.port=parseInt(n.port,10)),r=e;if(-1===(e=t.indexOf("#",r))?n.path=t.substring(r):(n.path=t.substring(r,e),n.hash=t.substring(e)),n.path){var o=n.path.split("?");n.pathname=o[0],n.query=o[1],n.search=n.query?"?"+n.query:null}return n}function dn(t){return dn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},dn(t)}function hn(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function yn(t){for(var e=1;e0&&T(e,"data.request",o),n(null,e)}}(r)).addTransform(function(t){return function(e,r,n){if(!t)return n(null,e);var o=t.navigator||{},i=t.screen||{};T(e,"data.client",{runtime_ms:e.timestamp-t._rollbarStartTime,timestamp:Math.round(e.timestamp/1e3),javascript:{browser:o.userAgent,language:o.language,cookie_enabled:o.cookieEnabled,screen:{width:i.width,height:i.height}}}),n(null,e)}}(r)).addTransform(function(t){return function(e,r,n){if(!t||!t.navigator)return n(null,e);for(var o,i=[],a=t.navigator.plugins||[],s=0,u=a.length;s=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function Tn(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=0;i--){if(e=An(t[i]),r=o+3*n.length+e.length,i=83){n.unshift("...");break}n.unshift(e),o+=e.length}return n.join(" > ")}(function(t){for(var e,r=[],n=0;t&&n<5&&(e=Rn(t))&&"html"!==e.tagName;n++)r.unshift(e),t=t.parentNode;return r}(t))}function An(t){if(!t||!t.tagName)return"";var e=[t.tagName];t.id&&e.push("#"+t.id),t.classes&&e.push("."+t.classes.join("."));var r,n=In(t.attributes);try{for(n.s();!(r=n.n()).done;){var o=r.value;e.push("["+o.key+'="'+o.value+'"]')}}catch(t){n.e(t)}finally{n.f()}return e.join("")}function Rn(t){if(!t||!t.tagName)return null;var e,r={};r.tagName=t.tagName.toLowerCase(),t.id&&(r.id=t.id),(e=t.className)&&"string"==typeof e&&(r.classes=e.split(/\s+/));r.attributes=[];for(var n=0,o=["type","name","title","alt"];n=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function Mn(t,e){if(t){if("string"==typeof t)return Un(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Un(t,e):void 0}}function Un(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r3)){var e=P();o.__rollbar_xhr.end_time_ms=e;var r=null;if(o.__rollbar_xhr.response_content_type=o.getResponseHeader("Content-Type"),t.autoInstrument.networkResponseHeaders){var i=t.autoInstrument.networkResponseHeaders;r={};try{var a;if(!0===i){var s=o.getAllResponseHeaders();if(s){var u,l,c,f=Dn(s.trim().split(/[\r\n]+/));try{for(f.s();!(c=f.n()).done;){a=(u=c.value.split(": ")).shift(),l=u.join(": "),r[a]=l}}catch(t){f.e(t)}finally{f.f()}}}else{var p,d=Dn(i);try{for(d.s();!(p=d.n()).done;){var h=p.value;r[h]=o.getResponseHeader(h)}}catch(t){d.e(t)}finally{d.f()}}}catch(t){}}var y=null;if(t.autoInstrument.networkResponseBody)try{y=o.responseText}catch(t){}var v=null;(y||r)&&(v={},y&&(t.isJsonContentType(o.__rollbar_xhr.response_content_type)?v.body=t.scrubJson(y):v.body=y),r&&(v.headers=r)),v&&(o.__rollbar_xhr.response=v);try{var m=o.status;m=1223===m?204:m,o.__rollbar_xhr.status_code=m,t.addOtelNetworkResponse(o.__rollbar_event,e,m),o.__rollbar_event.level=t.telemeter.levelFromStatus(m),t.errorOnHttpStatus(o.__rollbar_xhr)}catch(t){}}}return e("onload",o),e("onerror",o),e("onprogress",o),"onreadystatechange"in o&&u(o.onreadystatechange)?jn(o,"onreadystatechange",function(e){return t.rollbar.wrap(e,void 0,i)}):o.onreadystatechange=i,o.__rollbar_xhr&&t.trackHttpErrors()&&(o.__rollbar_xhr.stack=(new Error).stack),r.apply(this,arguments)}},this.replacements,"network")}"fetch"in this._window&&jn(this._window,"fetch",function(e){return function(r,n){var o,i=Array.prototype.slice.call(arguments),s=i[0],u="GET",l=Bn(s);a(s,"string")||l?o=l?s.toString():s:s&&(o=s.url,s.method&&(u=s.method)),i[1]&&i[1].method&&(u=i[1].method);var c={method:u,url:o,status_code:null,start_time_ms:P(),end_time_ms:null};if(i[1]&&i[1].headers){var f=En(i[1].headers);c.request_content_type=f.get("Content-Type"),t.autoInstrument.networkRequestHeaders&&(c.request_headers=t.fetchHeaders(f,t.autoInstrument.networkRequestHeaders))}t.autoInstrument.networkRequestBody&&(i[1]&&i[1].body?c.request=i[1].body:i[0]&&!a(i[0],"string")&&i[0].body&&(c.request=i[0].body));var p=t.captureNetwork(c,"fetch",void 0);return t.trackHttpErrors()&&(c.stack=(new Error).stack),e.apply(this,i).then(function(e){var r=P();c.end_time_ms=r,c.status_code=e.status,t.addOtelNetworkResponse(p,r,e.status),c.response_content_type=e.headers.get("Content-Type");var n=null;t.autoInstrument.networkResponseHeaders&&(n=t.fetchHeaders(e.headers,t.autoInstrument.networkResponseHeaders));var o=null;return t.autoInstrument.networkResponseBody&&"function"==typeof e.text&&(o=e.clone().text()),(n||o)&&(c.response={},o&&("function"==typeof o.then?o.then(function(e){e&&t.isJsonContentType(c.response_content_type)?c.response.body=t.scrubJson(e):c.response.body=e}):c.response.body=o),n&&(c.response.headers=n)),t.errorOnHttpStatus(c),e})}},this.replacements,"network")}},{key:"captureNetwork",value:function(t,e,r){return t.request&&this.isJsonContentType(t.request_content_type)&&(t.request=this.scrubJson(t.request)),this.telemeter.captureNetwork(t,e,r)}},{key:"isJsonContentType",value:function(t){return!!(t&&a(t,"string")&&t.toLowerCase().includes("json"))}},{key:"addOtelNetworkResponse",value:function(t,e,r){t.otelAttributes&&(t.otelAttributes["response.timeUnixNano"]=(1e6*e).toString(),t.otelAttributes.statusCode=r)}},{key:"scrubJson",value:function(t){return JSON.stringify(U(JSON.parse(t),this.options.scrubFields))}},{key:"fetchHeaders",value:function(t,e){var r={};try{if(!0===e){if("function"==typeof t.entries)for(var n=t.entries(),o=n.next();!o.done;)r[o.value[0]]=o.value[1],o=n.next()}else{var i,a=Dn(e);try{for(a.s();!(i=a.n()).done;){var s=i.value;r[s]=t.get(s)}}catch(t){a.e(t)}finally{a.f()}}}catch(t){}return r}},{key:"trackHttpErrors",value:function(){return this.autoInstrument.networkErrorOnHttp5xx||this.autoInstrument.networkErrorOnHttp4xx||this.autoInstrument.networkErrorOnHttp0}},{key:"errorOnHttpStatus",value:function(t){var e=t.status_code;if(e>=500&&this.autoInstrument.networkErrorOnHttp5xx||e>=400&&this.autoInstrument.networkErrorOnHttp4xx||0===e&&this.autoInstrument.networkErrorOnHttp0){var r=new Error("HTTP request failed with Status "+e);r.stack=t.stack,this.rollbar.error(r,{skipFrames:1})}}},{key:"deinstrumentConsole",value:function(){for(var t;this.replacements.log.length;)t=this.replacements.log.shift(),this._window.console[t[0]]=t[1]}},{key:"instrumentConsole",value:function(){var t;if(null!==(t=this._window)&&void 0!==t&&null!==(t=t.console)&&void 0!==t&&t.log){var e=this,r=this._window.console;try{for(var n=0,o=["debug","info","warn","error","log"];n500&&(n=n.substr(0,497)+"...");break;case"null":n="null";break;case"undefined":n="undefined";break;case"symbol":n=n.toString()}o.push(n)}return o.join(" ")}(t);e.telemeter.captureLog(r,i,null,P()),n&&Function.prototype.apply.call(n,o,t)},e.replacements.log.push([t,n])}}},{key:"deinstrumentDom",value:function(){this.removeListeners("dom")}},{key:"instrumentDom",value:function(){var t=this;this.addListener("dom",this._window,["click","dblclick","contextmenu"],function(e){return t.handleEvent("click",e)}),this.addListener("dom",this._window,["dragstart","dragend","dragenter","dragleave","drop"],function(e){return t.handleEvent("dragdrop",e)}),this.addListener("dom",this._window,["blur","focus"],function(e){return t.handleEvent("focus",e)}),this.addListener("dom",this._window,["submit","invalid"],function(e){return t.handleEvent("form",e)}),this.addListener("dom",this._window,["input","change"],function(e){return t.handleEvent("input",e)}),this.addListener("dom",this._window,["resize"],function(e){return t.handleEvent("resize",e)}),this.addListener("dom",this._document,["DOMContentLoaded"],function(e){return t.handleEvent("contentLoaded",e)})}},{key:"handleEvent",value:function(t,e){try{return{click:this.handleClick,dragdrop:this.handleDrag,focus:this.handleFocus,form:this.handleForm,input:this.handleInput,resize:this.handleResize,contentLoaded:this.handleContentLoaded}[t].call(this,e)}catch(r){At.log("".concat(t," handler error"),e,r,r.stack)}}},{key:"handleContentLoaded",value:function(t){this.rollbar.triggerReplay({type:"navigation",path:new URL(this._location.href).pathname})}},{key:"handleClick",value:function(t){var e,r=null===(e=t.target)||void 0===e?void 0:e.tagName.toLowerCase();["input","select","textarea"].includes(r)||this.telemeter.captureClick({type:t.type,isSynthetic:!t.isTrusted,element:Pn(t.target),timestamp:P()})}},{key:"handleFocus",value:function(t){var e,r=t.type,n=null!==(e=t.target)&&void 0!==e&&e.window?"window":Pn(t.target);this.telemeter.captureFocus({type:r,isSynthetic:!t.isTrusted,element:n,timestamp:P()})}},{key:"handleForm",value:function(t){}},{key:"handleResize",value:function(t){var e=window.screen.width/window.innerWidth;this.telemeter.captureResize({type:t.type,isSynthetic:!t.isTrusted,width:window.innerWidth,height:window.innerHeight,textZoomRatio:e,timestamp:P()})}},{key:"handleDrag",value:function(t){var e,r,n,o,i,a,s=t.type;if("drop"===s){e=[],r=[];var u,l=Dn([].concat(Ln(t.dataTransfer.files),Ln(t.dataTransfer.items)));try{for(l.s();!(u=l.n()).done;){var c=u.value;c.kind&&c.type&&(e.push(c.kind),r.push(c.type))}}catch(t){l.e(t)}finally{l.f()}}["drop","dragstart"].includes(s)&&(n=null===(i=t.dataTransfer)||void 0===i?void 0:i.dropEffect,o=null===(a=t.dataTransfer)||void 0===a?void 0:a.effectAllowed);this.telemeter.captureDragDrop({type:s,isSynthetic:!t.isTrusted,element:Pn(t.target),dropEffect:n,effectAllowed:o,kinds:JSON.stringify(e),mediaTypes:JSON.stringify(r),timestamp:P()})}},{key:"scrubInputValue",value:function(t,e,r,n){var o="******";if("password"===n)return o;if(this.scrubTelemetryInputs)return o;var i=Rn(e);if(this.telemetryScrubber){if(this.telemetryScrubber(i))return o}else if(this.defaultValueScrubber(i))return o;return function(t,e,r){try{var n,o=In(e);try{for(o.s();!(n=o.n()).done;){var i=n.value;if("string"==typeof i){if(t.classList.contains(i))return!0}else{var a,s=In(t.classList);try{for(s.s();!(a=s.n()).done;){var u=a.value;if(i.test(u))return!0}}catch(t){s.e(t)}finally{s.f()}}}}catch(t){o.e(t)}finally{o.f()}var l,c=In(r);try{for(c.s();!(l=c.n()).done;){var f=l.value;if(t.matches(f))return!0}}catch(t){c.e(t)}finally{c.f()}}catch(t){}return!1}(e,this.scrubClasses,this.scrubSelectors)?o:this.maskInputOptions[r.toLowerCase()]||this.maskInputOptions[n]?this.maskInputFn?this.maskInputFn(t,e):o:t}},{key:"handleInput",value:function(t){var e,r,n,o,i=t.type,a=null===(e=t.target)||void 0===e?void 0:e.tagName.toLowerCase(),s=null===(r=t.target)||void 0===r?void 0:r.value,u=(null===(n=t.target)||void 0===n||null===(n=n.attributes)||void 0===n||null===(n=n.type)||void 0===n?void 0:n.value)||(null===(o=t.target)||void 0===o?void 0:o.type);switch(void 0!==s&&(s=this.scrubInputValue(s,t.target,a,u)),i){case"input":if(["radio","checkbox"].includes(u))return;["select","textarea"].includes(a)&&(u=a);break;case"change":if(!["radio","checkbox"].includes(u))return;var l;if("checkbox"===u)s=null===(l=t.target)||void 0===l?void 0:l.checked}this.telemeter.captureInput({type:u,isSynthetic:!t.isTrusted,element:Pn(t.target),value:s,timestamp:P()})}},{key:"deinstrumentNavigation",value:function(){var t=this._window.chrome;!(t&&t.app&&t.app.runtime)&&this._window.history&&this._window.history.pushState&&Fn(this.replacements,"navigation")}},{key:"instrumentNavigation",value:function(){var t=this._window.chrome;if(!(t&&t.app&&t.app.runtime)&&this._window.history&&this._window.history.pushState){var e=this;jn(this._window,"onpopstate",function(t){return function(){var r=e._location.href;e.handleUrlChange(e._lastHref,r),t&&t.apply(this,arguments)}},this.replacements,"navigation"),jn(this._window.history,"pushState",function(t){return function(){var r=arguments.length>2?arguments[2]:void 0;return r&&e.handleUrlChange(e._lastHref,String(r)),t.apply(this,arguments)}},this.replacements,"navigation")}}},{key:"handleUrlChange",value:function(t,e){var r=pn(this._location.href),n=pn(e),o=pn(t);this._lastHref=e,r.protocol===n.protocol&&r.host===n.host&&(e=n.path+(n.hash||"")),r.protocol===o.protocol&&r.host===o.host&&(t=o.path+(o.hash||"")),this.telemeter.captureNavigation(t,e,null,P()),this.rollbar.triggerReplay({type:"navigation",path:e})}},{key:"instrumentConnectivity",value:function(){var t=this;this.addListener("connectivity",this._window,["online","offline"],function(e){return t.handleConnectivity(e)})}},{key:"handleConnectivity",value:function(t){var e=t.type;this.telemeter.captureConnectivityChange({type:e,isSynthetic:!t.isTrusted,timestamp:P()})}},{key:"handleCspEvent",value:function(t){var e="Security Policy Violation: blockedURI: "+t.blockedURI+", violatedDirective: "+t.violatedDirective+", effectiveDirective: "+t.effectiveDirective+", ";t.sourceFile&&(e+="location: "+t.sourceFile+", line: "+t.lineNumber+", col: "+t.columnNumber+", "),e+="originalPolicy: "+t.originalPolicy,this.telemeter.captureLog(e,"error",null,P()),this.handleCspError(e)}},{key:"handleCspError",value:function(t){this.autoInstrument.errorOnContentSecurityPolicy&&this.rollbar.error(t)}},{key:"deinstrumentContentSecurityPolicy",value:function(){this.removeListeners("contentsecuritypolicy")}},{key:"instrumentContentSecurityPolicy",value:function(){if("addEventListener"in this._document){var t=this.handleCspEvent.bind(this);this.addListener("contentsecuritypolicy",this._document,["securitypolicyviolation"],t)}}},{key:"addListener",value:function(t,e,r,n){var o=this;if(e.addEventListener){var i,a=Dn(r);try{var s=function(){var r=i.value,a={capture:!0,passive:!0};e.addEventListener(r,n,a,!0),o.eventRemovers[t].push(function(){e.removeEventListener(r,n,a)})};for(a.s();!(i=a.n()).done;)s()}catch(t){a.e(t)}finally{a.f()}}}},{key:"removeListeners",value:function(t){for(;this.eventRemovers[t].length;)this.eventRemovers[t].shift()()}}])}();function Bn(t){return"undefined"!=typeof URL&&t instanceof URL}var Wn=Vn;function $n(t,e,r){if(c(e,"addEventListener")){for(var n=e.addEventListener;n._rollbarOldAdd&&n.belongsToShim;)n=n._rollbarOldAdd;var o=function(e,r,o){n.call(this,e,t.wrap(r),o)};o._rollbarOldAdd=n,o.belongsToShim=r,e.addEventListener=o;for(var i=e.removeEventListener;i._rollbarOldRemove&&i.belongsToShim;)i=i._rollbarOldRemove;var a=function(t,e,r){i.call(this,t,e&&e._rollbar_wrapped||e,r)};a._rollbarOldRemove=i,a.belongsToShim=r,e.removeEventListener=a}}var Gn=function(t,e,r){if(t){var n,o,i="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".split(",");for(n=0;n qs)) {\n p = options.path;\n options.path = p.substring(0, qs) + query + '&' + p.substring(qs + 1);\n } else {\n if (h !== -1) {\n p = options.path;\n options.path = p.substring(0, h) + query + p.substring(h);\n } else {\n options.path = options.path + query;\n }\n }\n}\n\nfunction formatUrl(u, protocol) {\n protocol = protocol || u.protocol;\n if (!protocol && u.port) {\n if (u.port === 80) {\n protocol = 'http:';\n } else if (u.port === 443) {\n protocol = 'https:';\n }\n }\n protocol = protocol || 'https:';\n\n if (!u.hostname) {\n return null;\n }\n var result = protocol + '//' + u.hostname;\n if (u.port) {\n result = result + ':' + u.port;\n }\n if (u.path) {\n result = result + u.path;\n }\n return result;\n}\n\nfunction stringify(obj, backup) {\n var value, error;\n try {\n value = JSON.stringify(obj);\n } catch (jsonError) {\n if (backup && isFunction(backup)) {\n try {\n value = backup(obj);\n } catch (backupError) {\n error = backupError;\n }\n } else {\n error = jsonError;\n }\n }\n return { error: error, value: value };\n}\n\nfunction maxByteSize(string) {\n // The transport will use utf-8, so assume utf-8 encoding.\n //\n // This minimal implementation will accurately count bytes for all UCS-2 and\n // single code point UTF-16. If presented with multi code point UTF-16,\n // which should be rare, it will safely overcount, not undercount.\n //\n // While robust utf-8 encoders exist, this is far smaller and far more performant.\n // For quickly counting payload size for truncation, smaller is better.\n\n var count = 0;\n var length = string.length;\n\n for (var i = 0; i < length; i++) {\n var code = string.charCodeAt(i);\n if (code < 128) {\n // up to 7 bits\n count = count + 1;\n } else if (code < 2048) {\n // up to 11 bits\n count = count + 2;\n } else if (code < 65536) {\n // up to 16 bits\n count = count + 3;\n }\n }\n\n return count;\n}\n\nfunction jsonParse(s) {\n var value, error;\n try {\n value = JSON.parse(s);\n } catch (e) {\n error = e;\n }\n return { error: error, value: value };\n}\n\nfunction makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n mode,\n backupMessage,\n errorParser,\n) {\n var location = {\n url: url || '',\n line: lineno,\n column: colno,\n };\n location.func = errorParser.guessFunctionName(location.url, location.line);\n location.context = errorParser.gatherContext(location.url, location.line);\n var href =\n typeof document !== 'undefined' &&\n document &&\n document.location &&\n document.location.href;\n var useragent =\n typeof window !== 'undefined' &&\n window &&\n window.navigator &&\n window.navigator.userAgent;\n return {\n mode: mode,\n message: error ? String(error) : message || backupMessage,\n url: href,\n stack: [location],\n useragent: useragent,\n };\n}\n\nfunction wrapCallback(logger, f) {\n return function (err, resp) {\n try {\n f(err, resp);\n } catch (e) {\n logger.error(e);\n }\n };\n}\n\nfunction nonCircularClone(obj) {\n var seen = [obj];\n\n function clone(obj, seen) {\n var value,\n name,\n newSeen,\n result = {};\n\n try {\n for (name in obj) {\n value = obj[name];\n\n if (value && (isType(value, 'object') || isType(value, 'array'))) {\n if (seen.includes(value)) {\n result[name] = 'Removed circular reference: ' + typeName(value);\n } else {\n newSeen = seen.slice();\n newSeen.push(value);\n result[name] = clone(value, newSeen);\n }\n continue;\n }\n\n result[name] = value;\n }\n } catch (e) {\n result = 'Failed cloning custom data: ' + e.message;\n }\n return result;\n }\n return clone(obj, seen);\n}\n\nfunction createItem(args, logger, notifier, requestKeys, lambdaContext) {\n var message, err, custom, callback, request;\n var arg;\n var extraArgs = [];\n var diagnostic = {};\n var argTypes = [];\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n argTypes.push(typ);\n switch (typ) {\n case 'undefined':\n break;\n case 'string':\n message ? extraArgs.push(arg) : (message = arg);\n break;\n case 'function':\n callback = wrapCallback(logger, arg);\n break;\n case 'date':\n extraArgs.push(arg);\n break;\n case 'error':\n case 'domexception':\n case 'exception': // Firefox Exception type\n err ? extraArgs.push(arg) : (err = arg);\n break;\n case 'object':\n case 'array':\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n err ? extraArgs.push(arg) : (err = arg);\n break;\n }\n if (requestKeys && typ === 'object' && !request) {\n for (var j = 0, len = requestKeys.length; j < len; ++j) {\n if (arg[requestKeys[j]] !== undefined) {\n request = arg;\n break;\n }\n }\n if (request) {\n break;\n }\n }\n custom ? extraArgs.push(arg) : (custom = arg);\n break;\n default:\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n err ? extraArgs.push(arg) : (err = arg);\n break;\n }\n extraArgs.push(arg);\n }\n }\n\n // if custom is an array this turns it into an object with integer keys\n if (custom) custom = nonCircularClone(custom);\n\n if (extraArgs.length > 0) {\n if (!custom) custom = nonCircularClone({});\n custom.extraArgs = nonCircularClone(extraArgs);\n }\n\n var item = {\n message: message,\n err: err,\n custom: custom,\n timestamp: now(),\n callback: callback,\n notifier: notifier,\n diagnostic: diagnostic,\n uuid: uuid4(),\n };\n\n item.data = item.data || {};\n\n setCustomItemKeys(item, custom);\n\n if (requestKeys && request) {\n item.request = request;\n }\n if (lambdaContext) {\n item.lambdaContext = lambdaContext;\n }\n item._originalArgs = args;\n item.diagnostic.original_arg_types = argTypes;\n return item;\n}\n\nfunction setCustomItemKeys(item, custom) {\n if (custom && custom.level !== undefined) {\n item.level = custom.level;\n delete custom.level;\n }\n if (custom && custom.skipFrames !== undefined) {\n item.skipFrames = custom.skipFrames;\n delete custom.skipFrames;\n }\n}\n\nfunction addErrorContext(item, errors) {\n var custom = item.data.custom || {};\n var contextAdded = false;\n\n try {\n for (var i = 0; i < errors.length; ++i) {\n if (errors[i].hasOwnProperty('rollbarContext')) {\n custom = merge(custom, nonCircularClone(errors[i].rollbarContext));\n contextAdded = true;\n }\n }\n\n // Avoid adding an empty object to the data.\n if (contextAdded) {\n item.data.custom = custom;\n }\n } catch (e) {\n item.diagnostic.error_context = 'Failed: ' + e.message;\n }\n}\n\nvar TELEMETRY_TYPES = [\n 'log',\n 'network',\n 'dom',\n 'navigation',\n 'error',\n 'manual',\n];\nvar TELEMETRY_LEVELS = ['critical', 'error', 'warning', 'info', 'debug'];\n\nfunction arrayIncludes(arr, val) {\n for (var k = 0; k < arr.length; ++k) {\n if (arr[k] === val) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction createTelemetryEvent(args) {\n var type, metadata, level;\n var arg;\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n switch (typ) {\n case 'string':\n if (!type && arrayIncludes(TELEMETRY_TYPES, arg)) {\n type = arg;\n } else if (!level && arrayIncludes(TELEMETRY_LEVELS, arg)) {\n level = arg;\n }\n break;\n case 'object':\n metadata = arg;\n break;\n default:\n break;\n }\n }\n var event = {\n type: type || 'manual',\n metadata: metadata || {},\n level: level,\n };\n\n return event;\n}\n\nfunction addItemAttributes(itemData, attributes) {\n itemData.attributes = itemData.attributes || [];\n for (const a of attributes) {\n if (a.value === undefined) {\n continue;\n }\n itemData.attributes.push(a);\n }\n}\n\n/*\n * get - given an obj/array and a keypath, return the value at that keypath or\n * undefined if not possible.\n *\n * @param obj - an object or array\n * @param path - a string of keys separated by '.' such as 'plugin.jquery.0.message'\n * which would correspond to 42 in `{plugin: {jquery: [{message: 42}]}}`\n */\nfunction get(obj, path) {\n if (!obj) {\n return undefined;\n }\n var keys = path.split('.');\n var result = obj;\n try {\n for (var i = 0, len = keys.length; i < len; ++i) {\n result = result[keys[i]];\n }\n } catch (e) {\n result = undefined;\n }\n return result;\n}\n\nfunction set(obj, path, value) {\n if (!obj) {\n return;\n }\n\n // Prevent prototype pollution by setting the prototype to null.\n Object.setPrototypeOf(obj, null);\n\n var keys = path.split('.');\n var len = keys.length;\n if (len < 1) {\n return;\n }\n if (len === 1) {\n obj[keys[0]] = value;\n return;\n }\n try {\n var temp = obj[keys[0]] || {};\n var replacement = temp;\n for (var i = 1; i < len - 1; ++i) {\n temp[keys[i]] = temp[keys[i]] || {};\n temp = temp[keys[i]];\n }\n temp[keys[len - 1]] = value;\n obj[keys[0]] = replacement;\n } catch (e) {\n return;\n }\n}\n\nfunction formatArgsAsString(args) {\n var i, len, arg;\n var result = [];\n for (i = 0, len = args.length; i < len; ++i) {\n arg = args[i];\n switch (typeName(arg)) {\n case 'object':\n arg = stringify(arg);\n arg = arg.error || arg.value;\n if (arg.length > 500) {\n arg = arg.substr(0, 497) + '...';\n }\n break;\n case 'null':\n arg = 'null';\n break;\n case 'undefined':\n arg = 'undefined';\n break;\n case 'symbol':\n arg = arg.toString();\n break;\n }\n result.push(arg);\n }\n return result.join(' ');\n}\n\nfunction now() {\n if (Date.now) {\n return +Date.now();\n }\n return +new Date();\n}\n\nfunction filterIp(requestData, captureIp) {\n if (!requestData || !requestData['user_ip'] || captureIp === true) {\n return;\n }\n var newIp = requestData['user_ip'];\n if (!captureIp) {\n newIp = null;\n } else {\n try {\n var parts;\n if (newIp.indexOf('.') !== -1) {\n parts = newIp.split('.');\n parts.pop();\n parts.push('0');\n newIp = parts.join('.');\n } else if (newIp.indexOf(':') !== -1) {\n parts = newIp.split(':');\n if (parts.length > 2) {\n var beginning = parts.slice(0, 3);\n var slashIdx = beginning[2].indexOf('/');\n if (slashIdx !== -1) {\n beginning[2] = beginning[2].substring(0, slashIdx);\n }\n var terminal = '0000:0000:0000:0000:0000';\n newIp = beginning.concat(terminal).join(':');\n }\n } else {\n newIp = null;\n }\n } catch (e) {\n newIp = null;\n }\n }\n requestData['user_ip'] = newIp;\n}\n\nfunction handleOptions(current, input, payload, logger) {\n var result = merge(current, input, payload);\n result = updateDeprecatedOptions(result, logger);\n if (!input || input.overwriteScrubFields) {\n return result;\n }\n if (input.scrubFields) {\n result.scrubFields = (current.scrubFields || []).concat(input.scrubFields);\n }\n return result;\n}\n\nfunction updateDeprecatedOptions(options, logger) {\n if (options.hostWhiteList && !options.hostSafeList) {\n options.hostSafeList = options.hostWhiteList;\n options.hostWhiteList = undefined;\n logger && logger.log('hostWhiteList is deprecated. Use hostSafeList.');\n }\n if (options.hostBlackList && !options.hostBlockList) {\n options.hostBlockList = options.hostBlackList;\n options.hostBlackList = undefined;\n logger && logger.log('hostBlackList is deprecated. Use hostBlockList.');\n }\n return options;\n}\n\nexport {\n addParamsAndAccessTokenToPath,\n createItem,\n addErrorContext,\n createTelemetryEvent,\n addItemAttributes,\n filterIp,\n formatArgsAsString,\n formatUrl,\n get,\n handleOptions,\n isError,\n isFiniteNumber,\n isFunction,\n isIterable,\n isNativeFunction,\n isObject,\n isString,\n isType,\n isPromise,\n isBrowser,\n jsonParse,\n LEVELS,\n makeUnhandledStackInfo,\n merge,\n now,\n redact,\n sanitizeHref,\n sanitizeUrl,\n set,\n stringify,\n maxByteSize,\n typeName,\n uuid4,\n};\n","import * as _ from './utility.js';\n\n/*\n * RateLimiter - an object that encapsulates the logic for counting items sent to Rollbar\n *\n * @param options - the same options that are accepted by configureGlobal offered as a convenience\n */\nfunction RateLimiter(options) {\n this.startTime = _.now();\n this.counter = 0;\n this.perMinCounter = 0;\n this.platform = null;\n this.platformOptions = {};\n this.configureGlobal(options);\n}\n\nRateLimiter.globalSettings = {\n startTime: _.now(),\n maxItems: undefined,\n itemsPerMinute: undefined,\n};\n\n/*\n * configureGlobal - set the global rate limiter options\n *\n * @param options - Only the following values are recognized:\n * startTime: a timestamp of the form returned by (new Date()).getTime()\n * maxItems: the maximum items\n * itemsPerMinute: the max number of items to send in a given minute\n */\nRateLimiter.prototype.configureGlobal = function (options) {\n if (options.startTime !== undefined) {\n RateLimiter.globalSettings.startTime = options.startTime;\n }\n if (options.maxItems !== undefined) {\n RateLimiter.globalSettings.maxItems = options.maxItems;\n }\n if (options.itemsPerMinute !== undefined) {\n RateLimiter.globalSettings.itemsPerMinute = options.itemsPerMinute;\n }\n};\n\n/*\n * shouldSend - determine if we should send a given item based on rate limit settings\n *\n * @param item - the item we are about to send\n * @returns An object with the following structure:\n * error: (Error|null)\n * shouldSend: bool\n * payload: (Object|null)\n * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and\n * exactly one of error or payload will be non-null. If error is non-null, the returned Error will\n * describe the situation, but it means that we were already over a rate limit (either globally or\n * per minute) when this item was checked. If error is null, and therefore payload is non-null, it\n * means this item put us over the global rate limit and the payload should be sent to Rollbar in\n * place of the passed in item.\n */\nRateLimiter.prototype.shouldSend = function (item, now) {\n now = now || _.now();\n var elapsedTime = now - this.startTime;\n if (elapsedTime < 0 || elapsedTime >= 60000) {\n this.startTime = now;\n this.perMinCounter = 0;\n }\n\n var globalRateLimit = RateLimiter.globalSettings.maxItems;\n var globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute;\n\n if (checkRate(item, globalRateLimit, this.counter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n globalRateLimit + ' max items reached',\n false,\n );\n } else if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n globalRateLimitPerMin + ' items per minute reached',\n false,\n );\n }\n this.counter++;\n this.perMinCounter++;\n\n var shouldSend = !checkRate(item, globalRateLimit, this.counter);\n var perMinute = shouldSend;\n shouldSend =\n shouldSend && !checkRate(item, globalRateLimitPerMin, this.perMinCounter);\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n null,\n shouldSend,\n globalRateLimit,\n globalRateLimitPerMin,\n perMinute,\n );\n};\n\nRateLimiter.prototype.setPlatformOptions = function (platform, options) {\n this.platform = platform;\n this.platformOptions = options;\n};\n\n/* Helpers */\n\nfunction checkRate(item, limit, counter) {\n return !item.ignoreRateLimit && limit >= 1 && counter > limit;\n}\n\nfunction shouldSendValue(\n platform,\n options,\n error,\n shouldSend,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n var payload = null;\n if (error) {\n error = new Error(error);\n }\n if (!error && !shouldSend) {\n payload = rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n );\n }\n return { error: error, shouldSend: shouldSend, payload: payload };\n}\n\nfunction rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n var environment =\n options.environment || (options.payload && options.payload.environment);\n var msg;\n if (perMinute) {\n msg = 'item per minute limit reached, ignoring errors until timeout';\n } else {\n msg = 'maxItems has been hit, ignoring errors until reset.';\n }\n var item = {\n body: {\n message: {\n body: msg,\n extra: {\n maxItems: globalRateLimit,\n itemsPerMinute: limitPerMin,\n },\n },\n },\n language: 'javascript',\n environment: environment,\n notifier: {\n version:\n (options.notifier && options.notifier.version) || options.version,\n },\n };\n if (platform === 'browser') {\n item.platform = 'browser';\n item.framework = 'browser-js';\n item.notifier.name = 'rollbar-browser-js';\n } else if (platform === 'server') {\n item.framework = options.framework || 'node-js';\n item.notifier.name = options.notifier.name;\n } else if (platform === 'react-native') {\n item.framework = options.framework || 'react-native';\n item.notifier.name = options.notifier.name;\n }\n return item;\n}\n\nexport default RateLimiter;\n","import * as _ from './utility.js';\n\n/**\n * Queue - an object which handles which handles a queue of items to be sent to Rollbar.\n * This object handles rate limiting via a passed in rate limiter, retries based on connection\n * errors, and filtering of items based on a set of configurable predicates. The communication to\n * the backend is performed via a given API object.\n */\nclass Queue {\n /**\n * @param rateLimiter - An object which conforms to the interface\n * `rateLimiter.shouldSend(item) -> bool`\n * @param api - An object which conforms to the interface\n * `api.postItem(payload, function(err, response))`\n * @param logger - An object used to log verbose messages if desired\n * @param options - see `Queue.prototype.configure`\n * @param replay - Optional `Replay` for coordinating session replay with error occurrences\n */\n constructor(rateLimiter, api, logger, options, replay) {\n this.rateLimiter = rateLimiter;\n this.api = api;\n this.logger = logger;\n this.options = options;\n this.replay = replay;\n this.predicates = [];\n this.pendingItems = [];\n this.pendingRequests = [];\n this.retryQueue = [];\n this.retryHandle = null;\n this.waitCallback = null;\n this.waitIntervalID = null;\n }\n\n /**\n * configure - updates the options this queue uses\n *\n * @param options\n */\n configure(options) {\n this.api?.configure(options);\n const oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n return this;\n }\n\n /**\n * addPredicate - adds a predicate to the end of the list of predicates for this queue\n *\n * @param predicate - function(item, options) -> (bool|{err: Error})\n * Returning true means that this predicate passes and the item is okay to go on the queue\n * Returning false means do not add the item to the queue, but it is not an error\n * Returning {err: Error} means do not add the item to the queue, and the given error explains why\n * Returning {err: undefined} is equivalent to returning true but don't do that\n */\n addPredicate(predicate) {\n if (_.isFunction(predicate)) {\n this.predicates.push(predicate);\n }\n return this;\n }\n\n addPendingItem(item) {\n this.pendingItems.push(item);\n }\n\n removePendingItem(item) {\n const idx = this.pendingItems.indexOf(item);\n if (idx !== -1) {\n this.pendingItems.splice(idx, 1);\n }\n }\n\n /**\n * addItem - Send an item to the Rollbar API if all of the predicates are satisfied\n *\n * @param item - Item instance with the payload to send to the backend\n * @param callback - function(error, repsonse) which will be called with the response from the API\n * in the case of a success, otherwise response will be null and error will have a value. If both\n * error and response are null then the item was stopped by a predicate which did not consider this\n * to be an error condition, but nonetheless did not send the item to the API.\n * @param originalError - The original error before any transformations that is to be logged if any\n * @param originalItem - The original item before transforms, used in pendingItems queue\n */\n addItem(item, callback, originalError, originalItem) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {\n return;\n };\n }\n const data = item.data;\n const predicateResult = this._applyPredicates(data);\n if (predicateResult.stop) {\n this.removePendingItem(originalItem);\n callback(predicateResult.err);\n return;\n }\n this._maybeLog(data, originalError);\n this.removePendingItem(originalItem);\n if (!this.options.transmit) {\n callback(new Error('Transmit disabled'));\n return;\n }\n\n if (this.replay && data.body) {\n item.replayId = this.replay.capture(null, data.uuid, {\n type: 'occurrence',\n level: item.level,\n });\n\n if (item.replayId) {\n _.addItemAttributes(item.data, [\n { key: 'replay_id', value: item.replayId },\n ]);\n }\n }\n\n this.pendingRequests.push(data);\n try {\n this._makeApiRequest(data, (err, resp, headers) => {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers);\n }\n\n callback(err, resp);\n });\n } catch (err) {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay?.discard(item.replayId);\n }\n\n callback(err);\n }\n }\n\n /**\n * wait - Stop any further errors from being added to the queue, and get called back when all items\n * currently processing have finished sending to the backend.\n *\n * @param callback - function() called when all pending items have been sent\n */\n wait(callback) {\n if (!_.isFunction(callback)) {\n return;\n }\n this.waitCallback = callback;\n if (this._maybeCallWait()) {\n return;\n }\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitIntervalID = setInterval(() => {\n this._maybeCallWait();\n }, 500);\n }\n\n /**\n * Sequentially applies the predicates that have been added to the queue to the\n * given item with the currently configured options.\n *\n * @param item - An item in the queue\n * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue,\n * the error value should be passed up to a callbak if we are stopping.\n */\n _applyPredicates(item) {\n let p = null;\n for (let i = 0, len = this.predicates.length; i < len; i++) {\n p = this.predicates[i](item, this.options);\n if (!p || p.err !== undefined) {\n return { stop: true, err: p.err };\n }\n }\n return { stop: false, err: null };\n }\n\n /**\n * Send an item to Rollbar, callback when done, if there is an error make an\n * effort to retry if we are configured to do so.\n *\n * @param item - an item ready to send to the backend\n * @param callback - function(err, response)\n */\n _makeApiRequest(item, callback) {\n const rateLimitResponse = this.rateLimiter.shouldSend(item);\n if (rateLimitResponse.shouldSend) {\n this.api.postItem(item, (err, resp, headers) => {\n if (err) {\n this._maybeRetry(err, item, callback);\n } else {\n callback(err, resp, headers);\n }\n });\n } else if (rateLimitResponse.error) {\n callback(rateLimitResponse.error);\n } else {\n this.api.postItem(rateLimitResponse.payload, callback);\n }\n }\n\n // These are errors basically mean there is no internet connection\n static RETRIABLE_ERRORS = [\n 'ECONNRESET',\n 'ENOTFOUND',\n 'ESOCKETTIMEDOUT',\n 'ETIMEDOUT',\n 'ECONNREFUSED',\n 'EHOSTUNREACH',\n 'EPIPE',\n 'EAI_AGAIN',\n ];\n\n /**\n * Given the error returned by the API, decide if we should retry or just callback\n * with the error.\n *\n * @param err - an error returned by the API transport\n * @param item - the item that was trying to be sent when this error occured\n * @param callback - function(err, response)\n */\n _maybeRetry(err, item, callback) {\n let shouldRetry = false;\n if (this.options.retryInterval) {\n for (let i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) {\n if (err.code === Queue.RETRIABLE_ERRORS[i]) {\n shouldRetry = true;\n break;\n }\n }\n if (shouldRetry && _.isFiniteNumber(this.options.maxRetries)) {\n item.retries = item.retries ? item.retries + 1 : 1;\n if (item.retries > this.options.maxRetries) {\n shouldRetry = false;\n }\n }\n }\n if (shouldRetry) {\n this._retryApiRequest(item, callback);\n } else {\n callback(err);\n }\n }\n\n /**\n * Add an item and a callback to a queue and possibly start a timer to process\n * that queue based on the retryInterval in the options for this queue.\n *\n * @param item - an item that failed to send due to an error we deem retriable\n * @param callback - function(err, response)\n */\n _retryApiRequest(item, callback) {\n this.retryQueue.push({ item, callback });\n\n if (!this.retryHandle) {\n this.retryHandle = setInterval(() => {\n while (this.retryQueue.length) {\n const retryObject = this.retryQueue.shift();\n this._makeApiRequest(retryObject.item, retryObject.callback);\n }\n }, this.options.retryInterval);\n }\n }\n\n /**\n * Removes the item from the pending request queue, this queue is used to\n * enable to functionality of providing a callback that clients can pass to `wait` to be notified\n * when the pending request queue has been emptied. This must be called when the API finishes\n * processing this item. If a `wait` callback is configured, it is called by this function.\n *\n * @param item - the item previously added to the pending request queue\n */\n _dequeuePendingRequest(item) {\n const idx = this.pendingRequests.indexOf(item);\n if (idx !== -1) {\n this.pendingRequests.splice(idx, 1);\n this._maybeCallWait();\n }\n }\n\n _maybeLog(data, originalError) {\n if (this.logger && this.options.verbose) {\n let message =\n originalError ||\n _.get(data, 'body.trace.exception.message') ||\n _.get(data, 'body.trace_chain.0.exception.message');\n if (message) {\n this.logger.error(message);\n return;\n }\n message = _.get(data, 'body.message.body');\n if (message) {\n this.logger.log(message);\n }\n }\n }\n\n _maybeCallWait() {\n if (\n _.isFunction(this.waitCallback) &&\n this.pendingItems.length === 0 &&\n this.pendingRequests.length === 0\n ) {\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitCallback();\n return true;\n }\n return false;\n }\n}\n\nexport default Queue;\n","import * as _ from './utility.js';\n\n/*\n * Notifier - the internal object responsible for delegating between the client exposed API, the\n * chain of transforms necessary to turn an item into something that can be sent to Rollbar, and the\n * queue which handles the communcation with the Rollbar API servers.\n *\n * @param queue - an object that conforms to the interface: addItem(item, callback)\n * @param options - an object representing the options to be set for this notifier, this should have\n * any defaults already set by the caller\n */\nfunction Notifier(queue, options) {\n this.queue = queue;\n this.options = options;\n this.transforms = [];\n this.diagnostic = {};\n}\n\n/*\n * configure - updates the options for this notifier with the passed in object\n *\n * @param options - an object which gets merged with the current options set on this notifier\n * @returns this\n */\nNotifier.prototype.configure = function (options) {\n this.queue && this.queue.configure(options);\n var oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n return this;\n};\n\n/*\n * addTransform - adds a transform onto the end of the queue of transforms for this notifier\n *\n * @param transform - a function which takes three arguments:\n * * item: An Object representing the data to eventually be sent to Rollbar\n * * options: The current value of the options for this notifier\n * * callback: function(err: (Null|Error), item: (Null|Object)) the transform must call this\n * callback with a null value for error if it wants the processing chain to continue, otherwise\n * with an error to terminate the processing. The item should be the updated item after this\n * transform is finished modifying it.\n */\nNotifier.prototype.addTransform = function (transform) {\n if (_.isFunction(transform)) {\n this.transforms.push(transform);\n }\n return this;\n};\n\n/*\n * log - the internal log function which applies the configured transforms and then pushes onto the\n * queue to be sent to the backend.\n *\n * @param item - An object with the following structure:\n * message [String] - An optional string to be sent to rollbar\n * error [Error] - An optional error\n *\n * @param callback - A function of type function(err, resp) which will be called with exactly one\n * null argument and one non-null argument. The callback will be called once, either during the\n * transform stage if an error occurs inside a transform, or in response to the communication with\n * the backend. The second argument will be the response from the backend in case of success.\n */\nNotifier.prototype.log = function (item, callback) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n\n if (!this.options.enabled) {\n return callback(new Error('Rollbar is not enabled'));\n }\n\n this.queue.addPendingItem(item);\n var originalError = item.err;\n this._applyTransforms(\n item,\n function (err, i) {\n if (err) {\n this.queue.removePendingItem(item);\n return callback(err, null);\n }\n this.queue.addItem(i, callback, originalError, item);\n }.bind(this),\n );\n};\n\n/* Internal */\n\n/*\n * _applyTransforms - Applies the transforms that have been added to this notifier sequentially. See\n * `addTransform` for more information.\n *\n * @param item - An item to be transformed\n * @param callback - A function of type function(err, item) which will be called with a non-null\n * error and a null item in the case of a transform failure, or a null error and non-null item after\n * all transforms have been applied.\n */\nNotifier.prototype._applyTransforms = function (item, callback) {\n var transformIndex = -1;\n var transformsLength = this.transforms.length;\n var transforms = this.transforms;\n var options = this.options;\n\n var cb = function (err, i) {\n if (err) {\n callback(err, null);\n return;\n }\n\n transformIndex++;\n\n if (transformIndex === transformsLength) {\n callback(null, i);\n return;\n }\n\n transforms[transformIndex](i, options, cb);\n };\n\n cb(null, item);\n};\n\nexport default Notifier;\n","import RateLimiter from './rateLimiter.js';\nimport Queue from './queue.js';\nimport Notifier from './notifier.js';\nimport * as _ from './utility.js';\n\n/*\n * Rollbar - the interface to Rollbar\n *\n * @param options\n * @param api\n * @param logger\n */\nfunction Rollbar(options, api, logger, telemeter, tracing, replay, platform) {\n this.options = _.merge(options);\n this.logger = logger;\n Rollbar.rateLimiter.configureGlobal(this.options);\n Rollbar.rateLimiter.setPlatformOptions(platform, this.options);\n this.api = api;\n this.queue = new Queue(\n Rollbar.rateLimiter,\n api,\n logger,\n this.options,\n replay,\n );\n\n this.tracing = tracing;\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is created\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier = new Notifier(this.queue, this.options);\n this.telemeter = telemeter;\n setStackTraceLimit(options);\n this.lastError = null;\n this.lastErrorHash = 'none';\n}\n\nvar defaultOptions = {\n maxItems: 0,\n itemsPerMinute: 60,\n};\n\nRollbar.rateLimiter = new RateLimiter(defaultOptions);\n\nRollbar.prototype.global = function (options) {\n Rollbar.rateLimiter.configureGlobal(options);\n return this;\n};\n\nRollbar.prototype.configure = function (options, payloadData) {\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.merge(oldOptions, options, payload);\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is configured\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier && this.notifier.configure(this.options);\n this.telemeter && this.telemeter.configure(this.options);\n setStackTraceLimit(options);\n this.global(this.options);\n\n if (validateTracer(options.tracer)) {\n this.tracer = options.tracer;\n }\n\n return this;\n};\n\nRollbar.prototype.log = function (item) {\n var level = this._defaultLogLevel();\n return this._log(level, item);\n};\n\nRollbar.prototype.debug = function (item) {\n this._log('debug', item);\n};\n\nRollbar.prototype.info = function (item) {\n this._log('info', item);\n};\n\nRollbar.prototype.warn = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.warning = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.error = function (item) {\n this._log('error', item);\n};\n\nRollbar.prototype.critical = function (item) {\n this._log('critical', item);\n};\n\nRollbar.prototype.wait = function (callback) {\n this.queue.wait(callback);\n};\n\nRollbar.prototype.captureEvent = function (type, metadata, level) {\n return this.telemeter && this.telemeter.captureEvent(type, metadata, level);\n};\n\nRollbar.prototype.captureDomContentLoaded = function (ts) {\n return this.telemeter && this.telemeter.captureDomContentLoaded(ts);\n};\n\nRollbar.prototype.captureLoad = function (ts) {\n return this.telemeter && this.telemeter.captureLoad(ts);\n};\n\nRollbar.prototype.buildJsonPayload = function (item) {\n return this.api.buildJsonPayload(item);\n};\n\nRollbar.prototype.sendJsonPayload = function (jsonPayload) {\n this.api.postJsonPayload(jsonPayload);\n};\n\n/* Internal */\n\nRollbar.prototype._log = function (defaultLevel, item) {\n var callback;\n if (item.callback) {\n callback = item.callback;\n delete item.callback;\n }\n if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) {\n if (callback) {\n var error = new Error('ignored identical item');\n error.item = item;\n callback(error);\n }\n return;\n }\n try {\n item.level = item.level || defaultLevel;\n\n this._addTracingAttributes(item);\n\n // Legacy OpenTracing support\n this._addTracingInfo(item);\n\n const telemeter = this.telemeter;\n if (telemeter) {\n telemeter._captureRollbarItem(item);\n item.telemetryEvents = telemeter.copyEvents() || [];\n }\n\n this.notifier.log(item, callback);\n } catch (e) {\n if (callback) {\n callback(e);\n }\n this.logger.error(e);\n }\n};\n\nRollbar.prototype._addTracingAttributes = function (item) {\n const span = this.tracing?.getSpan();\n\n const attributes = [\n { key: 'session_id', value: this.tracing?.sessionId },\n { key: 'span_id', value: span?.spanId },\n { key: 'trace_id', value: span?.traceId },\n ];\n _.addItemAttributes(item.data, attributes);\n\n span?.addEvent('rollbar.occurrence', [\n { key: 'rollbar.occurrence.uuid', value: item.uuid },\n ]);\n};\n\nRollbar.prototype._defaultLogLevel = function () {\n return this.options.logLevel || 'debug';\n};\n\nRollbar.prototype._sameAsLastError = function (item) {\n if (!item._isUncaught) {\n return false;\n }\n var itemHash = generateItemHash(item);\n if (this.lastErrorHash === itemHash) {\n return true;\n }\n this.lastError = item.err;\n this.lastErrorHash = itemHash;\n return false;\n};\n\nRollbar.prototype._addTracingInfo = function (item) {\n // Tracer validation occurs in the constructor\n // or in the Rollbar.prototype.configure methods\n if (this.tracer) {\n // add rollbar occurrence uuid to span\n var span = this.tracer.scope().active();\n\n if (validateSpan(span)) {\n span.setTag('rollbar.error_uuid', item.uuid);\n span.setTag('rollbar.has_error', true);\n span.setTag('error', true);\n span.setTag(\n 'rollbar.item_url',\n `https://rollbar.com/item/uuid/?uuid=${item.uuid}`,\n );\n span.setTag(\n 'rollbar.occurrence_url',\n `https://rollbar.com/occurrence/uuid/?uuid=${item.uuid}`,\n );\n\n // add span ID & trace ID to occurrence\n var opentracingSpanId = span.context().toSpanId();\n var opentracingTraceId = span.context().toTraceId();\n\n if (item.custom) {\n item.custom.opentracing_span_id = opentracingSpanId;\n item.custom.opentracing_trace_id = opentracingTraceId;\n } else {\n item.custom = {\n opentracing_span_id: opentracingSpanId,\n opentracing_trace_id: opentracingTraceId,\n };\n }\n }\n }\n};\n\nfunction generateItemHash(item) {\n var message = item.message || '';\n var stack = (item.err || {}).stack || String(item.err);\n return message + '::' + stack;\n}\n\n// Node.js, Chrome, Safari, and some other browsers support this property\n// which globally sets the number of stack frames returned in an Error object.\n// If a browser can't use it, no harm done.\nfunction setStackTraceLimit(options) {\n if (options.stackTraceLimit) {\n Error.stackTraceLimit = options.stackTraceLimit;\n }\n}\n\n/**\n * Validate the Tracer object provided to the Client\n * is valid for our Opentracing use case.\n * @param {opentracer.Tracer} tracer\n */\nfunction validateTracer(tracer) {\n if (!tracer) {\n return false;\n }\n\n if (!tracer.scope || typeof tracer.scope !== 'function') {\n return false;\n }\n\n var scope = tracer.scope();\n\n if (!scope || !scope.active || typeof scope.active !== 'function') {\n return false;\n }\n\n return true;\n}\n\n/**\n * Validate the Span object provided\n * @param {opentracer.Span} span\n */\nfunction validateSpan(span) {\n if (!span || !span.context || typeof span.context !== 'function') {\n return false;\n }\n\n var spanContext = span.context();\n\n if (\n !spanContext ||\n !spanContext.toSpanId ||\n !spanContext.toTraceId ||\n typeof spanContext.toSpanId !== 'function' ||\n typeof spanContext.toTraceId !== 'function'\n ) {\n return false;\n }\n\n return true;\n}\n\nexport default Rollbar;\n","import * as _ from './utility.js';\n\nfunction buildPayload(data) {\n if (!_.isType(data.context, 'string')) {\n var contextResult = _.stringify(data.context);\n if (contextResult.error) {\n data.context = \"Error: could not serialize 'context'\";\n } else {\n data.context = contextResult.value || '';\n }\n if (data.context.length > 255) {\n data.context = data.context.substr(0, 255);\n }\n }\n return {\n data: data,\n };\n}\n\nfunction getTransportFromOptions(options, defaults, url) {\n var hostname = defaults.hostname;\n var protocol = defaults.protocol;\n var port = defaults.port;\n var path = defaults.path;\n var search = defaults.search;\n var timeout = options.timeout;\n var transport = detectTransport(options);\n\n var proxy = options.proxy;\n if (options.endpoint) {\n var opts = url.parse(options.endpoint);\n hostname = opts.hostname;\n protocol = opts.protocol;\n port = opts.port;\n path = opts.pathname;\n search = opts.search;\n }\n return {\n timeout: timeout,\n hostname: hostname,\n protocol: protocol,\n port: port,\n path: path,\n search: search,\n proxy: proxy,\n transport: transport,\n };\n}\n\nfunction detectTransport(options) {\n var gWindow =\n (typeof window != 'undefined' && window) ||\n (typeof self != 'undefined' && self);\n var transport = options.defaultTransport || 'xhr';\n if (typeof gWindow.fetch === 'undefined') transport = 'xhr';\n if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch';\n return transport;\n}\n\nfunction transportOptions(transport, method) {\n var protocol = transport.protocol || 'https:';\n var port =\n transport.port ||\n (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined);\n var hostname = transport.hostname;\n var path = transport.path;\n var timeout = transport.timeout;\n var transportAPI = transport.transport;\n if (transport.search) {\n path = path + transport.search;\n }\n if (transport.proxy) {\n path = protocol + '//' + hostname + path;\n hostname = transport.proxy.host || transport.proxy.hostname;\n port = transport.proxy.port;\n protocol = transport.proxy.protocol || protocol;\n }\n return {\n timeout: timeout,\n protocol: protocol,\n hostname: hostname,\n path: path,\n port: port,\n method: method,\n transport: transportAPI,\n };\n}\n\nfunction appendPathToPath(base, path) {\n var baseTrailingSlash = /\\/$/.test(base);\n var pathBeginningSlash = /^\\//.test(path);\n\n if (baseTrailingSlash && pathBeginningSlash) {\n path = path.substring(1);\n } else if (!baseTrailingSlash && !pathBeginningSlash) {\n path = '/' + path;\n }\n\n return base + path;\n}\n\nexport {\n buildPayload,\n getTransportFromOptions,\n transportOptions,\n appendPathToPath,\n};\n","import * as _ from './utility.js';\nimport * as helpers from './apiUtility.js';\n\nvar defaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/item/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\nvar OTLPDefaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/session/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\n/**\n * Api is an object that encapsulates methods of communicating with\n * the Rollbar API. It is a standard interface with some parts implemented\n * differently for server or browser contexts. It is an object that should\n * be instantiated when used so it can contain non-global options that may\n * be different for another instance of RollbarApi.\n *\n * @param options {\n * accessToken: the accessToken to use for posting items to rollbar\n * endpoint: an alternative endpoint to send errors to\n * must be a valid, fully qualified URL.\n * The default is: https://api.rollbar.com/api/1/item\n * proxy: if you wish to proxy requests provide an object\n * with the following keys:\n * host or hostname (required): foo.example.com\n * port (optional): 123\n * protocol (optional): https\n * }\n */\nfunction Api(options, transport, urllib, truncation) {\n this.options = options;\n this.transport = transport;\n this.url = urllib;\n this.truncation = truncation;\n this.accessToken = options.accessToken;\n this.transportOptions = _getTransport(options, urllib);\n this.OTLPTransportOptions = _getOTLPTransport(options, urllib);\n}\n\n/**\n * Wraps transport.post in a Promise to support async/await\n *\n * @param {Object} options - Options for the API request\n * @param {string} options.accessToken - The access token for authentication\n * @param {Object} options.transportOptions - Options for the transport\n * @param {Object} options.payload - The data payload to send\n * @returns {Promise} A promise that resolves with the response or rejects with an error\n * @private\n */\nApi.prototype._postPromise = function ({\n accessToken,\n options,\n payload,\n headers,\n}) {\n const self = this;\n return new Promise((resolve, reject) => {\n self.transport.post({\n accessToken,\n options,\n payload,\n headers,\n callback: (err, resp) => (err ? reject(err) : resolve(resp)),\n });\n });\n};\n\n/**\n *\n * @param data\n * @param callback\n */\nApi.prototype.postItem = function (data, callback) {\n const options = helpers.transportOptions(this.transportOptions, 'POST');\n const payload = helpers.buildPayload(data);\n const self = this;\n\n // ensure the network request is scheduled after the current tick.\n setTimeout(function () {\n self.transport.post({\n accessToken: self.accessToken,\n options,\n payload,\n callback,\n });\n }, 0);\n};\n\n/**\n * Posts spans to the Rollbar API using the session endpoint\n *\n * @param {Array} payload - The spans to send\n * @returns {Promise} A promise that resolves with the API response\n */\nApi.prototype.postSpans = async function (payload, headers = {}) {\n const options = helpers.transportOptions(this.OTLPTransportOptions, 'POST');\n\n return await this._postPromise({\n accessToken: this.accessToken,\n options,\n payload,\n headers,\n });\n};\n\n/**\n *\n * @param data\n * @param callback\n */\nApi.prototype.buildJsonPayload = function (data, callback) {\n var payload = helpers.buildPayload(data);\n\n var stringifyResult;\n if (this.truncation) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = _.stringify(payload);\n }\n\n if (stringifyResult.error) {\n if (callback) {\n callback(stringifyResult.error);\n }\n return null;\n }\n\n return stringifyResult.value;\n};\n\n/**\n *\n * @param jsonPayload\n * @param callback\n */\nApi.prototype.postJsonPayload = function (jsonPayload, callback) {\n var transportOptions = helpers.transportOptions(\n this.transportOptions,\n 'POST',\n );\n this.transport.postJsonPayload(\n this.accessToken,\n transportOptions,\n jsonPayload,\n callback,\n );\n};\n\nApi.prototype.configure = function (options) {\n var oldOptions = this.oldOptions;\n this.options = _.merge(oldOptions, options);\n this.transportOptions = _getTransport(this.options, this.url);\n this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url);\n if (this.options.accessToken !== undefined) {\n this.accessToken = this.options.accessToken;\n }\n return this;\n};\n\nfunction _getTransport(options, url) {\n return helpers.getTransportFromOptions(options, defaultOptions, url);\n}\n\nfunction _getOTLPTransport(options, url) {\n options = { ...options, endpoint: options.tracing?.endpoint };\n return helpers.getTransportFromOptions(options, OTLPDefaultOptions, url);\n}\n\nexport default Api;\n","let log = () => {};\n\nconst levels = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n disable: 4,\n};\n\nconst logger = {\n error: (...args) => log('error', args),\n warn: (...args) => log('warn', args),\n info: (...args) => log('info', args),\n debug: (...args) => log('debug', args),\n log: (...args) => log('info', args),\n init: ({ logLevel }) => {\n log = function (level, args) {\n if (levels[level] < levels[logLevel]) return;\n\n args.unshift('Rollbar:');\n\n console[level].apply(console, args);\n };\n },\n};\n\nexport default logger;\n","import logger from '../../logger.js';\nimport * as _ from '../../utility.js';\n\nfunction makeFetchRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n timeout,\n}) {\n var controller;\n var timeoutId;\n\n if (_.isFiniteNumber(timeout)) {\n controller = new AbortController();\n timeoutId = setTimeout(function () {\n controller.abort();\n }, timeout);\n }\n\n headers = {\n 'Content-Type': 'application/json',\n 'X-Rollbar-Access-Token': accessToken,\n signal: controller && controller.signal,\n ...headers,\n };\n\n fetch(url, {\n method,\n headers,\n body: payload,\n })\n .then(function (response) {\n if (timeoutId) clearTimeout(timeoutId);\n const respHeaders = response.headers;\n\n const isItemRoute = url.endsWith('/api/1/item/');\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': respHeaders.get('Rollbar-Replay-Enabled'),\n 'Rollbar-Replay-RateLimit-Remaining': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n\n const json = response.json();\n callback(null, json, headers);\n })\n .catch(function (error) {\n logger.error(error.message);\n callback(error);\n });\n}\n\nexport default makeFetchRequest;\n","/*global XDomainRequest*/\n\nimport * as _ from '../../utility.js';\nimport logger from '../../logger.js';\n\nfunction makeXhrRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n requestFactory,\n timeout,\n}) {\n var request;\n if (requestFactory) {\n request = requestFactory();\n } else {\n request = _createXMLHTTPObject();\n }\n if (!request) {\n // Give up, no way to send requests\n return callback(new Error('No way to send a request'));\n }\n try {\n try {\n var onreadystatechange = function () {\n try {\n if (onreadystatechange && request.readyState === 4) {\n onreadystatechange = undefined;\n\n var parseResponse = _.jsonParse(request.responseText);\n if (_isSuccess(request)) {\n const isItemRoute = url.endsWith('/api/1/item/');\n\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': request.getResponseHeader(\n 'Rollbar-Replay-Enabled',\n ),\n 'Rollbar-Replay-RateLimit-Remaining':\n request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n callback(parseResponse.error, parseResponse.value, headers);\n return;\n } else if (_isNormalFailure(request)) {\n if (request.status === 403) {\n // likely caused by using a server access token\n var message =\n parseResponse.value && parseResponse.value.message;\n logger.error(message);\n }\n // return valid http status codes\n callback(new Error(String(request.status)));\n } else {\n // IE will return a status 12000+ on some sort of connection failure,\n // so we return a blank error\n // http://msdn.microsoft.com/en-us/library/aa383770%28VS.85%29.aspx\n var msg =\n 'XHR response had no status code (likely connection failure)';\n callback(_newRetriableError(msg));\n }\n }\n } catch (ex) {\n //jquery source mentions firefox may error out while accessing the\n //request members if there is a network error\n //https://github.com/jquery/jquery/blob/a938d7b1282fc0e5c52502c225ae8f0cef219f0a/src/ajax/xhr.js#L111\n var exc;\n if (ex && ex.stack) {\n exc = ex;\n } else {\n exc = new Error(ex);\n }\n callback(exc);\n }\n };\n\n request.open(method, url, true);\n if (request.setRequestHeader) {\n request.setRequestHeader('Content-Type', 'application/json');\n request.setRequestHeader('X-Rollbar-Access-Token', accessToken);\n for (const [h, v] of Object.entries(headers ?? {})) {\n request.setRequestHeader(h, v);\n }\n }\n\n if (_.isFiniteNumber(timeout)) {\n request.timeout = timeout;\n }\n\n request.onreadystatechange = onreadystatechange;\n request.send(payload);\n } catch (e1) {\n // Sending using the normal xmlhttprequest object didn't work, try XDomainRequest\n if (typeof XDomainRequest !== 'undefined') {\n // Assume we are in a really old browser which has a bunch of limitations:\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n\n // Extreme paranoia: if we have XDomainRequest then we have a window, but just in case\n if (!window || !window.location) {\n return callback(\n new Error(\n 'No window available during request, unknown environment',\n ),\n );\n }\n\n // If the current page is http, try and send over http\n if (\n window.location.href.substring(0, 5) === 'http:' &&\n url.substring(0, 5) === 'https'\n ) {\n url = 'http' + url.substring(5);\n }\n\n var xdomainrequest = new XDomainRequest();\n xdomainrequest.onprogress = function () {};\n xdomainrequest.ontimeout = function () {\n var msg = 'Request timed out';\n var code = 'ETIMEDOUT';\n callback(_newRetriableError(msg, code));\n };\n xdomainrequest.onerror = function () {\n callback(new Error('Error during request'));\n };\n xdomainrequest.onload = function () {\n var parseResponse = _.jsonParse(xdomainrequest.responseText);\n callback(parseResponse.error, parseResponse.value);\n };\n xdomainrequest.open(method, url, true);\n xdomainrequest.send(payload);\n } else {\n callback(new Error('Cannot find a method to transport a request'));\n }\n }\n } catch (e2) {\n callback(e2);\n }\n}\n\nfunction _createXMLHTTPObject() {\n /* global ActiveXObject:false */\n\n var factories = [\n function () {\n return new XMLHttpRequest();\n },\n function () {\n return new ActiveXObject('Msxml2.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Msxml3.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Microsoft.XMLHTTP');\n },\n ];\n var xmlhttp;\n var i;\n var numFactories = factories.length;\n for (i = 0; i < numFactories; i++) {\n try {\n xmlhttp = factories[i]();\n break;\n } catch (e) {\n // pass\n }\n }\n return xmlhttp;\n}\n\nfunction _isSuccess(r) {\n return r && r.status && r.status === 200;\n}\n\nfunction _isNormalFailure(r) {\n return r && _.isType(r.status, 'number') && r.status >= 400 && r.status < 600;\n}\n\nfunction _newRetriableError(message, code) {\n var err = new Error(message);\n err.code = code || 'ENOTFOUND';\n return err;\n}\n\nexport default makeXhrRequest;\n","import * as _ from '../utility.js';\nimport makeFetchRequest from './transport/fetch.js';\nimport makeXhrRequest from './transport/xhr.js';\n\n/*\n * accessToken may be embedded in payload but that should not\n * be assumed\n *\n * options: {\n * hostname\n * protocol\n * path\n * port\n * method\n * transport ('xhr' | 'fetch')\n * }\n *\n * params is an object containing key/value pairs. These\n * will be appended to the path as 'key=value&key=value'\n *\n * payload is an unserialized object\n */\nfunction Transport(truncation) {\n this.truncation = truncation;\n}\n\nTransport.prototype.get = function (\n accessToken,\n options,\n params,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n _.addParamsAndAccessTokenToPath(accessToken, options, params);\n\n var method = 'GET';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.post = function ({\n accessToken,\n options,\n payload,\n headers,\n callback,\n requestFactory,\n}) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n\n if (!payload) {\n return callback(new Error('Cannot send empty request'));\n }\n\n var stringifyResult;\n // Check payload.body to ensure only items are truncated.\n if (this.truncation && payload.body) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = _.stringify(payload);\n }\n if (stringifyResult.error) {\n return callback(stringifyResult.error);\n }\n\n var payload = stringifyResult.value;\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.postJsonPayload = function (\n accessToken,\n options,\n payload,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\n// Wraps `_makeRequest` if zone.js is being used, ensuring that Rollbar\n// API calls are not intercepted by any child forked zones.\n// This is equivalent to `NgZone.runOutsideAngular` in Angular.\nTransport.prototype._makeZoneRequest = function () {\n var gWindow =\n (typeof window != 'undefined' && window) ||\n (typeof self != 'undefined' && self);\n // Whenever zone.js is loaded and `Zone` is exposed globally, access\n // the root zone to ensure that requests are always made within it.\n // This approach is framework-agnostic, regardless of which\n // framework zone.js is used with.\n var rootZone = gWindow && gWindow.Zone && gWindow.Zone.root;\n var args = Array.prototype.slice.call(arguments);\n\n if (rootZone) {\n var self = this;\n rootZone.run(function () {\n self._makeRequest.apply(undefined, args);\n });\n } else {\n this._makeRequest.apply(undefined, args);\n }\n};\n\nTransport.prototype._makeRequest = function (params) {\n const { payload, callback, transport } = params;\n if (typeof RollbarProxy !== 'undefined') {\n return _proxyRequest(payload, callback);\n }\n\n if (transport === 'fetch') {\n makeFetchRequest(params);\n } else {\n makeXhrRequest(params);\n }\n};\n\n/* global RollbarProxy */\nfunction _proxyRequest(json, callback) {\n var rollbarProxy = new RollbarProxy();\n rollbarProxy.sendJsonPayload(\n json,\n function (_msg) {\n /* do nothing */\n },\n function (err) {\n callback(new Error(err));\n },\n );\n}\n\nexport default Transport;\n","// See https://nodejs.org/docs/latest/api/url.html\nfunction parse(url) {\n var result = {\n protocol: null,\n auth: null,\n host: null,\n path: null,\n hash: null,\n href: url,\n hostname: null,\n port: null,\n pathname: null,\n search: null,\n query: null,\n };\n\n var i, last;\n i = url.indexOf('//');\n if (i !== -1) {\n result.protocol = url.substring(0, i);\n last = i + 2;\n } else {\n last = 0;\n }\n\n i = url.indexOf('@', last);\n if (i !== -1) {\n result.auth = url.substring(last, i);\n last = i + 1;\n }\n\n i = url.indexOf('/', last);\n if (i === -1) {\n i = url.indexOf('?', last);\n if (i === -1) {\n i = url.indexOf('#', last);\n if (i === -1) {\n result.host = url.substring(last);\n } else {\n result.host = url.substring(last, i);\n result.hash = url.substring(i);\n }\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n return result;\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n\n i = url.indexOf('#', last);\n if (i === -1) {\n result.path = url.substring(last);\n } else {\n result.path = url.substring(last, i);\n result.hash = url.substring(i);\n }\n\n if (result.path) {\n var pathParts = result.path.split('?');\n result.pathname = pathParts[0];\n result.query = pathParts[1];\n result.search = result.query ? '?' + result.query : null;\n }\n return result;\n}\n\nexport { parse };\n","const FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\nfunction parse(error, options) {\n if (typeof error.stacktrace !== \"undefined\" || typeof error[\"opera#sourceloc\"] !== \"undefined\")\n return parseOpera(error, options);\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIE(error, options);\n else if (error.stack)\n return parseFFOrSafari(error, options);\n else if (options?.allowEmpty)\n return [];\n else\n throw new Error(\"Cannot parse given Error object\");\n}\nfunction parseStack(stackString, options) {\n if (stackString.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIeString(stackString, options);\n else\n return parseFFOrSafariString(stackString, options);\n}\nfunction extractLocation(urlLike) {\n if (!urlLike.includes(\":\"))\n return [urlLike, undefined, undefined];\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n const parts = regExp.exec(urlLike.replace(/[()]/g, \"\"));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n}\nfunction applySlice(lines, options) {\n if (options && options.slice != null) {\n if (Array.isArray(options.slice))\n return lines.slice(options.slice[0], options.slice[1]);\n return lines.slice(0, options.slice);\n }\n return lines;\n}\nfunction parseV8OrIE(error, options) {\n return parseV8OrIeString(error.stack, options);\n}\nfunction parseV8OrIeString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\"(eval \")) {\n line = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(,.*$)/g, \"\");\n }\n let sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\").replace(/^.*?\\s+/, \"\");\n const location = sanitizedLine.match(/ (\\(.+\\)$)/);\n sanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n const locationParts = extractLocation(location ? location[1] : sanitizedLine);\n const functionName = location && sanitizedLine || undefined;\n const fileName = [\"eval\", \"\"].includes(locationParts[0]) ? undefined : locationParts[0];\n return {\n function: functionName,\n file: fileName,\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\nfunction parseFFOrSafari(error, options) {\n return parseFFOrSafariString(error.stack, options);\n}\nfunction parseFFOrSafariString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\" > eval\"))\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, \":$1\");\n if (!line.includes(\"@\") && !line.includes(\":\")) {\n return {\n function: line\n };\n } else {\n const functionNameRegex = /(([^\\n\\r\"\\u2028\\u2029]*\".[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*(?:@[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*)*(?:[\\n\\r\\u2028\\u2029][^@]*)?)?[^@]*)@/;\n const matches = line.match(functionNameRegex);\n const functionName = matches && matches[1] ? matches[1] : undefined;\n const locationParts = extractLocation(line.replace(functionNameRegex, \"\"));\n return {\n function: functionName,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n }\n });\n}\nfunction parseOpera(e, options) {\n if (!e.stacktrace || e.message.includes(\"\\n\") && e.message.split(\"\\n\").length > e.stacktrace.split(\"\\n\").length)\n return parseOpera9(e);\n else if (!e.stack)\n return parseOpera10(e);\n else\n return parseOpera11(e, options);\n}\nfunction parseOpera9(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n const lines = e.message.split(\"\\n\");\n const result = [];\n for (let i = 2, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n file: match[2],\n line: +match[1],\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera10(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n const lines = e.stacktrace.split(\"\\n\");\n const result = [];\n for (let i = 0, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n function: match[3] || undefined,\n file: match[2],\n line: match[1] ? +match[1] : undefined,\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera11(error, options) {\n const filtered = applySlice(\n // @ts-expect-error missing stack property\n error.stack.split(\"\\n\").filter((line) => {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }),\n options\n );\n return filtered.map((line) => {\n const tokens = line.split(\"@\");\n const locationParts = extractLocation(tokens.pop());\n const functionCall = tokens.shift() || \"\";\n const functionName = functionCall.replace(//, \"$2\").replace(/\\([^)]*\\)/g, \"\") || undefined;\n let argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/))\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, \"$1\");\n const args = argsRaw === undefined || argsRaw === \"[arguments not available]\" ? undefined : argsRaw.split(\",\");\n return {\n function: functionName,\n args,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\n\nexport { extractLocation, parse, parseFFOrSafari, parseFFOrSafariString, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseStack, parseV8OrIE, parseV8OrIeString };\n","import { parse as parse$1, parseV8OrIE as parseV8OrIE$1, parseFFOrSafari as parseFFOrSafari$1, parseOpera as parseOpera$1, parseOpera9 as parseOpera9$1, parseOpera10 as parseOpera10$1, parseOpera11 as parseOpera11$1 } from './lite.mjs';\nexport { extractLocation } from './lite.mjs';\n\nfunction stackframesLiteToStackframes(liteStackframes) {\n return liteStackframes.map((liteStackframe) => {\n return {\n functionName: liteStackframe.function,\n args: liteStackframe.args,\n fileName: liteStackframe.file,\n lineNumber: liteStackframe.line,\n columnNumber: liteStackframe.col,\n source: liteStackframe.raw\n };\n });\n}\nfunction parse(error, options) {\n return stackframesLiteToStackframes(parse$1(error, options));\n}\nfunction parseV8OrIE(error) {\n return stackframesLiteToStackframes(parseV8OrIE$1(error));\n}\nfunction parseFFOrSafari(error) {\n return stackframesLiteToStackframes(parseFFOrSafari$1(error));\n}\nfunction parseOpera(e) {\n return stackframesLiteToStackframes(parseOpera$1(e));\n}\nfunction parseOpera9(e) {\n return stackframesLiteToStackframes(parseOpera9$1(e));\n}\nfunction parseOpera10(e) {\n return stackframesLiteToStackframes(parseOpera10$1(e));\n}\nfunction parseOpera11(error) {\n return stackframesLiteToStackframes(parseOpera11$1(error));\n}\n\nexport { parse, parseFFOrSafari, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseV8OrIE };\n","import { parse as parseErrorStack } from 'error-stack-parser-es';\n\nvar UNKNOWN_FUNCTION = '?';\nvar ERR_CLASS_REGEXP = new RegExp(\n '^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): ',\n);\n\nfunction guessFunctionName() {\n return UNKNOWN_FUNCTION;\n}\n\nfunction gatherContext() {\n return null;\n}\n\nfunction Frame(stackFrame) {\n var data = {};\n\n data._stackFrame = stackFrame;\n\n data.url = stackFrame.fileName;\n data.line = stackFrame.lineNumber;\n data.func = stackFrame.functionName;\n data.column = stackFrame.columnNumber;\n data.args = stackFrame.args;\n\n data.context = gatherContext();\n\n return data;\n}\n\nfunction Stack(exception, skip) {\n function getStack() {\n var parserStack = [];\n\n skip = skip || 0;\n\n try {\n parserStack = parseErrorStack(exception);\n } catch (e) {\n parserStack = [];\n }\n\n var stack = [];\n\n for (var i = skip; i < parserStack.length; i++) {\n stack.push(new Frame(parserStack[i]));\n }\n\n return stack;\n }\n\n return {\n stack: getStack(),\n message: exception.message,\n name: _mostSpecificErrorName(exception),\n rawStack: exception.stack,\n rawException: exception,\n };\n}\n\nfunction parse(e, skip) {\n var err = e;\n\n if (err.nested || err.cause) {\n var traceChain = [];\n while (err) {\n traceChain.push(new Stack(err, skip));\n err = err.nested || err.cause;\n\n skip = 0; // Only apply skip value to primary error\n }\n\n // Return primary error with full trace chain attached.\n traceChain[0].traceChain = traceChain;\n return traceChain[0];\n } else {\n return new Stack(err, skip);\n }\n}\n\nfunction guessErrorClass(errMsg) {\n if (!errMsg || !errMsg.match) {\n return ['Unknown error. There was no error message to display.', ''];\n }\n var errClassMatch = errMsg.match(ERR_CLASS_REGEXP);\n var errClass = '(unknown)';\n\n if (errClassMatch) {\n errClass = errClassMatch[errClassMatch.length - 1];\n errMsg = errMsg.replace(\n (errClassMatch[errClassMatch.length - 2] || '') + errClass + ':',\n '',\n );\n errMsg = errMsg.replace(/(^[\\s]+|[\\s]+$)/g, '');\n }\n return [errClass, errMsg];\n}\n\n// * Prefers any value over an empty string\n// * Prefers any value over 'Error' where possible\n// * Prefers name over constructor.name when both are more specific than 'Error'\nfunction _mostSpecificErrorName(error) {\n var name = error.name && error.name.length && error.name;\n var constructorName =\n error.constructor.name &&\n error.constructor.name.length &&\n error.constructor.name;\n\n if (!name || !constructorName) {\n return name || constructorName;\n }\n\n if (name === 'Error') {\n return constructorName;\n }\n return name;\n}\n\nexport default {\n guessFunctionName,\n guessErrorClass,\n gatherContext,\n parse,\n Stack,\n Frame,\n};\n","import * as _ from '../utility.js';\nimport errorParser from '../errorParser.js';\nimport logger from '../logger.js';\n\nfunction handleDomException(item, options, callback) {\n if (item.err && errorParser.Stack(item.err).name === 'DOMException') {\n var originalError = new Error();\n originalError.name = item.err.name;\n originalError.message = item.err.message;\n originalError.stack = item.err.stack;\n originalError.nested = item.err;\n item.err = originalError;\n }\n callback(null, item);\n}\n\nfunction handleItemWithError(item, options, callback) {\n item.data = item.data || {};\n if (item.err) {\n try {\n item.stackInfo =\n item.err._savedStackTrace ||\n errorParser.parse(item.err, item.skipFrames);\n\n if (options.addErrorContext) {\n addErrorContext(item);\n }\n } catch (e) {\n logger.error('Error while parsing the error object.', e);\n try {\n item.message =\n item.err.message ||\n item.err.description ||\n item.message ||\n String(item.err);\n } catch (e2) {\n item.message = String(item.err) || String(e2);\n }\n delete item.err;\n }\n }\n callback(null, item);\n}\n\nfunction addErrorContext(item) {\n var chain = [];\n var err = item.err;\n\n chain.push(err);\n\n while (err.nested || err.cause) {\n err = err.nested || err.cause;\n chain.push(err);\n }\n\n _.addErrorContext(item, chain);\n}\n\nfunction ensureItemHasSomethingToSay(item, options, callback) {\n if (!item.message && !item.stackInfo && !item.custom) {\n callback(new Error('No message, stack info, or custom data'), null);\n }\n callback(null, item);\n}\n\nfunction addBaseInfo(item, options, callback) {\n var environment =\n (options.payload && options.payload.environment) || options.environment;\n item.data = _.merge(item.data, {\n environment: environment,\n level: item.level,\n endpoint: options.endpoint,\n platform: 'browser',\n framework: 'browser-js',\n language: 'javascript',\n server: {},\n uuid: item.uuid,\n notifier: {\n name: 'rollbar-browser-js',\n version: options.version,\n },\n custom: item.custom,\n });\n callback(null, item);\n}\n\nfunction addRequestInfo(window) {\n return function (item, options, callback) {\n var requestInfo = {};\n\n if (window && window.location) {\n requestInfo.url = window.location.href;\n requestInfo.query_string = window.location.search;\n }\n\n var remoteString = '$remote_ip';\n if (!options.captureIp) {\n remoteString = null;\n } else if (options.captureIp !== true) {\n remoteString += '_anonymize';\n }\n if (remoteString) requestInfo.user_ip = remoteString;\n\n if (Object.keys(requestInfo).length > 0) {\n _.set(item, 'data.request', requestInfo);\n }\n\n callback(null, item);\n };\n}\n\nfunction addClientInfo(window) {\n return function (item, options, callback) {\n if (!window) {\n return callback(null, item);\n }\n var nav = window.navigator || {};\n var scr = window.screen || {};\n _.set(item, 'data.client', {\n runtime_ms: item.timestamp - window._rollbarStartTime,\n timestamp: Math.round(item.timestamp / 1000),\n javascript: {\n browser: nav.userAgent,\n language: nav.language,\n cookie_enabled: nav.cookieEnabled,\n screen: {\n width: scr.width,\n height: scr.height,\n },\n },\n });\n callback(null, item);\n };\n}\n\nfunction addPluginInfo(window) {\n return function (item, options, callback) {\n if (!window || !window.navigator) {\n return callback(null, item);\n }\n var plugins = [];\n var navPlugins = window.navigator.plugins || [];\n var cur;\n for (var i = 0, l = navPlugins.length; i < l; ++i) {\n cur = navPlugins[i];\n plugins.push({ name: cur.name, description: cur.description });\n }\n _.set(item, 'data.client.javascript.plugins', plugins);\n callback(null, item);\n };\n}\n\nfunction addBody(item, options, callback) {\n if (item.stackInfo) {\n if (item.stackInfo.traceChain) {\n addBodyTraceChain(item, options, callback);\n } else {\n addBodyTrace(item, options, callback);\n }\n } else {\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction addBodyMessage(item, options, callback) {\n var message = item.message;\n var custom = item.custom;\n\n if (!message) {\n message = 'Item sent with null or missing arguments.';\n }\n var result = {\n body: message,\n };\n\n if (custom) {\n result.extra = _.merge(custom);\n }\n\n _.set(item, 'data.body', { message: result });\n callback(null, item);\n}\n\nfunction stackFromItem(item) {\n // Transform a TraceKit stackInfo object into a Rollbar trace\n var stack = item.stackInfo.stack;\n if (\n stack &&\n stack.length === 0 &&\n item._unhandledStackInfo &&\n item._unhandledStackInfo.stack\n ) {\n stack = item._unhandledStackInfo.stack;\n }\n return stack;\n}\n\nfunction addBodyTraceChain(item, options, callback) {\n var traceChain = item.stackInfo.traceChain;\n var traces = [];\n\n var traceChainLength = traceChain.length;\n for (var i = 0; i < traceChainLength; i++) {\n var trace = buildTrace(item, traceChain[i], options);\n traces.push(trace);\n }\n\n _.set(item, 'data.body', { trace_chain: traces });\n callback(null, item);\n}\n\nfunction addBodyTrace(item, options, callback) {\n var stack = stackFromItem(item);\n\n if (stack) {\n var trace = buildTrace(item, item.stackInfo, options);\n _.set(item, 'data.body', { trace: trace });\n callback(null, item);\n } else {\n var stackInfo = item.stackInfo;\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n\n item.message = className + ': ' + message;\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction buildTrace(item, stackInfo, options) {\n var description = item && item.data.description;\n var custom = item && item.custom;\n var stack = stackFromItem(item);\n\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n var trace = {\n exception: {\n class: className,\n message: message,\n },\n };\n\n if (description) {\n trace.exception.description = description;\n }\n\n if (stack) {\n if (stack.length === 0) {\n trace.exception.stack = stackInfo.rawStack;\n trace.exception.raw = String(stackInfo.rawException);\n }\n var stackFrame;\n var frame;\n var code;\n var pre;\n var post;\n var contextLength;\n var i, mid;\n\n trace.frames = [];\n for (i = 0; i < stack.length; ++i) {\n stackFrame = stack[i];\n frame = {\n filename: stackFrame.url ? _.sanitizeUrl(stackFrame.url) : '(unknown)',\n lineno: stackFrame.line || null,\n method:\n !stackFrame.func || stackFrame.func === '?'\n ? '[anonymous]'\n : stackFrame.func,\n colno: stackFrame.column,\n };\n if (options.sendFrameUrl) {\n frame.url = stackFrame.url;\n }\n if (\n frame.method &&\n frame.method.endsWith &&\n frame.method.endsWith('_rollbar_wrapped')\n ) {\n continue;\n }\n\n code = pre = post = null;\n contextLength = stackFrame.context ? stackFrame.context.length : 0;\n if (contextLength) {\n mid = Math.floor(contextLength / 2);\n pre = stackFrame.context.slice(0, mid);\n code = stackFrame.context[mid];\n post = stackFrame.context.slice(mid);\n }\n\n if (code) {\n frame.code = code;\n }\n\n if (pre || post) {\n frame.context = {};\n if (pre && pre.length) {\n frame.context.pre = pre;\n }\n if (post && post.length) {\n frame.context.post = post;\n }\n }\n\n if (stackFrame.args) {\n frame.args = stackFrame.args;\n }\n\n trace.frames.push(frame);\n }\n\n // NOTE(cory): reverse the frames since rollbar.com expects the most recent call last\n trace.frames.reverse();\n\n if (custom) {\n trace.extra = _.merge(custom);\n }\n }\n\n return trace;\n}\n\nfunction errorClass(stackInfo, guess, options) {\n if (stackInfo.name) {\n return stackInfo.name;\n } else if (options.guessErrorClass) {\n return guess;\n } else {\n return '(unknown)';\n }\n}\n\nfunction addScrubber(scrubFn) {\n return function (item, options, callback) {\n if (scrubFn) {\n var scrubFields = options.scrubFields || [];\n var scrubPaths = options.scrubPaths || [];\n item.data = scrubFn(item.data, scrubFields, scrubPaths);\n }\n callback(null, item);\n };\n}\n\nexport {\n handleDomException,\n handleItemWithError,\n ensureItemHasSomethingToSay,\n addBaseInfo,\n addRequestInfo,\n addClientInfo,\n addPluginInfo,\n addBody,\n addScrubber,\n};\n","import * as _ from './utility.js';\n\nfunction itemToPayload(item, options, callback) {\n if (item._isUncaught) {\n item.data._isUncaught = true;\n }\n if (item._originalArgs) {\n item.data._originalArgs = item._originalArgs;\n }\n callback(null, item);\n}\n\nfunction addPayloadOptions(item, options, callback) {\n var payloadOptions = options.payload || {};\n if (payloadOptions.body) {\n delete payloadOptions.body;\n }\n\n item.data = _.merge(item.data, payloadOptions);\n callback(null, item);\n}\n\nfunction addTelemetryData(item, options, callback) {\n if (item.telemetryEvents) {\n _.set(item, 'data.body.telemetry', item.telemetryEvents);\n }\n callback(null, item);\n}\n\nfunction addMessageWithError(item, options, callback) {\n if (!item.message) {\n callback(null, item);\n return;\n }\n var tracePath = 'data.body.trace_chain.0';\n var trace = _.get(item, tracePath);\n if (!trace) {\n tracePath = 'data.body.trace';\n trace = _.get(item, tracePath);\n }\n if (trace) {\n if (!(trace.exception && trace.exception.description)) {\n _.set(item, tracePath + '.exception.description', item.message);\n callback(null, item);\n return;\n }\n var extra = _.get(item, tracePath + '.extra') || {};\n var newExtra = _.merge(extra, { message: item.message });\n _.set(item, tracePath + '.extra', newExtra);\n }\n callback(null, item);\n}\n\nfunction userTransform(logger) {\n return function (item, options, callback) {\n var newItem = _.merge(item);\n var response = null;\n try {\n if (_.isFunction(options.transform)) {\n response = options.transform(newItem.data, item);\n }\n } catch (e) {\n options.transform = null;\n logger.error(\n 'Error while calling custom transform() function. Removing custom transform().',\n e,\n );\n callback(null, item);\n return;\n }\n if (_.isPromise(response)) {\n response.then(\n function (promisedItem) {\n if (promisedItem) {\n newItem.data = promisedItem;\n }\n callback(null, newItem);\n },\n function (error) {\n callback(error, item);\n },\n );\n } else {\n callback(null, newItem);\n }\n };\n}\n\nfunction addConfigToPayload(item, options, callback) {\n if (!options.sendConfig) {\n return callback(null, item);\n }\n var configKey = '_rollbarConfig';\n var custom = _.get(item, 'data.custom') || {};\n custom[configKey] = options;\n item.data.custom = custom;\n callback(null, item);\n}\n\nfunction addFunctionOption(options, name) {\n if (_.isFunction(options[name])) {\n options[name] = options[name].toString();\n }\n}\n\nfunction addConfiguredOptions(item, options, callback) {\n var configuredOptions = options._configuredOptions;\n\n // These must be stringified or they'll get dropped during serialization.\n addFunctionOption(configuredOptions, 'transform');\n addFunctionOption(configuredOptions, 'checkIgnore');\n addFunctionOption(configuredOptions, 'onSendCallback');\n\n delete configuredOptions.accessToken;\n item.data.notifier.configured_options = configuredOptions;\n callback(null, item);\n}\n\nfunction addDiagnosticKeys(item, options, callback) {\n var diagnostic = _.merge(\n item.notifier.client.notifier.diagnostic,\n item.diagnostic,\n );\n\n if (_.get(item, 'err._isAnonymous')) {\n diagnostic.is_anonymous = true;\n }\n\n if (item._isUncaught) {\n diagnostic.is_uncaught = item._isUncaught;\n }\n\n if (item.err) {\n try {\n diagnostic.raw_error = {\n message: item.err.message,\n name: item.err.name,\n constructor_name: item.err.constructor && item.err.constructor.name,\n filename: item.err.fileName,\n line: item.err.lineNumber,\n column: item.err.columnNumber,\n stack: item.err.stack,\n };\n } catch (e) {\n diagnostic.raw_error = { failed: String(e) };\n }\n }\n\n item.data.notifier.diagnostic = _.merge(\n item.data.notifier.diagnostic,\n diagnostic,\n );\n callback(null, item);\n}\n\nexport {\n itemToPayload,\n addPayloadOptions,\n addTelemetryData,\n addMessageWithError,\n userTransform,\n addConfigToPayload,\n addConfiguredOptions,\n addDiagnosticKeys,\n};\n","import * as _ from '../utility.js';\n\nfunction checkIgnore(item, settings) {\n if (_.get(settings, 'plugins.jquery.ignoreAjaxErrors')) {\n return !_.get(item, 'body.message.extra.isAjax');\n }\n return true;\n}\n\nexport { checkIgnore };\n","import * as _ from './utility.js';\n\nfunction checkLevel(item, settings) {\n var level = item.level;\n var levelVal = _.LEVELS[level] || 0;\n var reportLevel = settings.reportLevel;\n var reportLevelVal = _.LEVELS[reportLevel] || 0;\n\n if (levelVal < reportLevelVal) {\n return false;\n }\n return true;\n}\n\nfunction userCheckIgnore(logger) {\n return function (item, settings) {\n var isUncaught = !!item._isUncaught;\n delete item._isUncaught;\n var args = item._originalArgs;\n delete item._originalArgs;\n try {\n if (_.isFunction(settings.onSendCallback)) {\n settings.onSendCallback(isUncaught, args, item);\n }\n } catch (e) {\n settings.onSendCallback = null;\n logger.error('Error while calling onSendCallback, removing', e);\n }\n try {\n if (\n _.isFunction(settings.checkIgnore) &&\n settings.checkIgnore(isUncaught, args, item)\n ) {\n return false;\n }\n } catch (e) {\n settings.checkIgnore = null;\n logger.error('Error while calling custom checkIgnore(), removing', e);\n }\n return true;\n };\n}\n\nfunction urlIsNotBlockListed(logger) {\n return function (item, settings) {\n return !urlIsOnAList(item, settings, 'blocklist', logger);\n };\n}\n\nfunction urlIsSafeListed(logger) {\n return function (item, settings) {\n return urlIsOnAList(item, settings, 'safelist', logger);\n };\n}\n\nfunction matchFrames(trace, list, block) {\n if (!trace) {\n return !block;\n }\n\n var frames = trace.frames;\n\n if (!frames || frames.length === 0) {\n return !block;\n }\n\n var frame, filename, url, urlRegex;\n var listLength = list.length;\n var frameLength = frames.length;\n for (var i = 0; i < frameLength; i++) {\n frame = frames[i];\n filename = frame.filename;\n\n if (!_.isType(filename, 'string')) {\n return !block;\n }\n\n for (var j = 0; j < listLength; j++) {\n url = list[j];\n urlRegex = new RegExp(url);\n\n if (urlRegex.test(filename)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction urlIsOnAList(item, settings, safeOrBlock, logger) {\n // safelist is the default\n var block = false;\n if (safeOrBlock === 'blocklist') {\n block = true;\n }\n\n var list, traces;\n try {\n list = block ? settings.hostBlockList : settings.hostSafeList;\n traces = _.get(item, 'body.trace_chain') || [_.get(item, 'body.trace')];\n\n // These two checks are important to come first as they are defaults\n // in case the list is missing or the trace is missing or not well-formed\n if (!list || list.length === 0) {\n return !block;\n }\n if (traces.length === 0 || !traces[0]) {\n return !block;\n }\n\n var tracesLength = traces.length;\n for (var i = 0; i < tracesLength; i++) {\n if (matchFrames(traces[i], list, block)) {\n return true;\n }\n }\n } catch (\n e\n /* istanbul ignore next */\n ) {\n if (block) {\n settings.hostBlockList = null;\n } else {\n settings.hostSafeList = null;\n }\n var listName = block ? 'hostBlockList' : 'hostSafeList';\n logger.error(\n \"Error while reading your configuration's \" +\n listName +\n ' option. Removing custom ' +\n listName +\n '.',\n e,\n );\n return !block;\n }\n return false;\n}\n\nfunction messageIsIgnored(logger) {\n return function (item, settings) {\n var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages;\n\n try {\n messageIsIgnored = false;\n ignoredMessages = settings.ignoredMessages;\n\n if (!ignoredMessages || ignoredMessages.length === 0) {\n return true;\n }\n\n messages = messagesFromItem(item);\n\n if (messages.length === 0) {\n return true;\n }\n\n len = ignoredMessages.length;\n for (i = 0; i < len; i++) {\n rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi');\n\n for (j = 0; j < messages.length; j++) {\n messageIsIgnored = rIgnoredMessage.test(messages[j]);\n\n if (messageIsIgnored) {\n return false;\n }\n }\n }\n } catch (\n e\n /* istanbul ignore next */\n ) {\n settings.ignoredMessages = null;\n logger.error(\n \"Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages.\",\n );\n }\n\n return true;\n };\n}\n\nfunction messagesFromItem(item) {\n var body = item.body;\n var messages = [];\n\n // The payload schema only allows one of trace_chain, message, or trace.\n // However, existing test cases are based on having both trace and message present.\n // So here we preserve the ability to collect strings from any combination of these keys.\n if (body.trace_chain) {\n var traceChain = body.trace_chain;\n for (var i = 0; i < traceChain.length; i++) {\n var trace = traceChain[i];\n messages.push(_.get(trace, 'exception.message'));\n }\n }\n if (body.trace) {\n messages.push(_.get(body, 'trace.exception.message'));\n }\n if (body.message) {\n messages.push(_.get(body, 'message.body'));\n }\n return messages;\n}\n\nexport {\n checkLevel,\n userCheckIgnore,\n urlIsNotBlockListed,\n urlIsSafeListed,\n messageIsIgnored,\n};\n","/**\n * Default session replay recording options\n * See https://github.com/rrweb-io/rrweb/blob/master/guide.md#options for details\n */\nexport default {\n enabled: false, // Whether recording is enabled\n autoStart: true, // Start recording automatically when Rollbar initializes\n\n // defaults used by triggers that don't specify them\n triggerDefaults: {\n samplingRatio: 1.0,\n preDuration: 300,\n postDuration: 5,\n },\n triggers: [\n {\n type: 'occurrence',\n level: ['error', 'critical'],\n },\n ],\n\n debug: {\n logErrors: true, // Whether to log errors emitted by rrweb.\n logEmits: false, // Whether to log emitted events\n },\n\n // Recording options\n inlineStylesheet: true, // Whether to inline stylesheets to improve replay accuracy\n inlineImages: false, // Whether to record the image content\n collectFonts: true, // Whether to collect fonts in the website\n\n // Privacy options\n // Fine-grained control over which input types to mask\n // By default only password inputs are masked if maskInputs is true\n maskInputOptions: {\n password: true,\n email: false,\n tel: false,\n text: false,\n color: false,\n date: false,\n 'datetime-local': false,\n month: false,\n number: false,\n range: false,\n search: false,\n time: false,\n url: false,\n week: false,\n },\n\n // Mask all input values\n maskAllInputs: false,\n\n // Class names to block, mask, or ignore the content of elements.\n blockClass: 'rb-block',\n maskTextClass: 'rb-mask',\n ignoreClass: 'rb-ignore',\n\n // Remove unnecessary parts of the DOM\n // By default all removable elements are removed\n slimDOMOptions: {\n script: true, // Remove script elements\n comment: true, // Remove comments\n headFavicon: true, // Remove favicons in the head\n headWhitespace: true, // Remove whitespace in head\n headMetaDescKeywords: true, // Remove meta description and keywords\n headMetaSocial: true, // Remove social media meta tags\n headMetaRobots: true, // Remove robots meta directives\n headMetaHttpEquiv: true, // Remove http-equiv meta directives\n headMetaAuthorship: true, // Remove authorship meta directives\n headMetaVerification: true, // Remove verification meta directives\n },\n\n // Custom callbacks for advanced use cases\n // These are undefined by default and can be set programmatically\n // maskInputFn: undefined, // Custom function to mask input values\n // maskTextFn: undefined, // Custom function to mask text content\n // errorHandler: undefined, // Custom error handler for recording errors\n\n // Plugin system\n // plugins: [] // List of plugins to use (must be set programmatically)\n};\n","/**\n * Default options shared across platforms\n */\nexport const version = '3.0.0-rc.1';\nexport const endpoint = 'api.rollbar.com/api/1/item/';\nexport const logLevel = 'debug';\nexport const reportLevel = 'debug';\nexport const uncaughtErrorLevel = 'error';\nexport const maxItems = 0;\nexport const itemsPerMin = 60;\n\nexport const commonScrubFields = [\n 'pw',\n 'pass',\n 'passwd',\n 'password',\n 'secret',\n 'confirm_password',\n 'confirmPassword',\n 'password_confirmation',\n 'passwordConfirmation',\n 'access_token',\n 'accessToken',\n 'X-Rollbar-Access-Token',\n 'secret_key',\n 'secretKey',\n 'secretToken',\n];\n\nexport const apiScrubFields = [\n 'api_key',\n 'authenticity_token',\n 'oauth_token',\n 'token',\n 'user_session_secret',\n];\n\nexport const requestScrubFields = [\n 'request.session.csrf',\n 'request.session._csrf',\n 'request.params._csrf',\n 'request.cookie',\n 'request.cookies',\n];\n\nexport const commonScrubHeaders = [\n 'authorization',\n 'www-authorization',\n 'http_authorization',\n 'omniauth.auth',\n 'cookie',\n 'oauth-access-token',\n 'x-access-token',\n 'x_csrf_token',\n 'http_x_csrf_token',\n 'x-csrf-token',\n];\n\n// For backward compatibility with default export\nexport default {\n version,\n endpoint,\n logLevel,\n reportLevel,\n uncaughtErrorLevel,\n maxItems,\n itemsPerMin,\n};\n","/**\n * Default browser options\n */\nimport { commonScrubFields } from '../defaults.js';\n\nexport const scrubFields = [\n ...commonScrubFields,\n 'cc-number',\n 'card number',\n 'cardnumber',\n 'cardnum',\n 'ccnum',\n 'ccnumber',\n 'cc num',\n 'creditcardnumber',\n 'credit card number',\n 'newcreditcardnumber',\n 'new credit card',\n 'creditcardno',\n 'credit card no',\n 'card#',\n 'card #',\n 'cc-csc',\n 'cvc',\n 'cvc2',\n 'cvv2',\n 'ccv2',\n 'security code',\n 'card verification',\n 'name on credit card',\n 'name on card',\n 'nameoncard',\n 'cardholder',\n 'card holder',\n 'name des karteninhabers',\n 'ccname',\n 'card type',\n 'cardtype',\n 'cc type',\n 'cctype',\n 'payment type',\n 'expiration date',\n 'expirationdate',\n 'expdate',\n 'cc-exp',\n 'ccmonth',\n 'ccyear',\n];\n\n// For compatibility with existing code that expects default export with scrubFields property\nexport default { scrubFields };\n","import Client from '../rollbar.js';\nimport * as _ from '../utility.js';\nimport API from '../api.js';\nimport logger from '../logger.js';\nimport * as globals from './globalSetup.js';\n\nimport Transport from './transport.js';\nimport * as urllib from './url.js';\n\nimport * as transforms from './transforms.js';\nimport * as sharedTransforms from '../transforms.js';\nimport * as predicates from './predicates.js';\nimport * as sharedPredicates from '../predicates.js';\nimport errorParser from '../errorParser.js';\nimport replayDefaults from './replay/defaults.js';\nimport tracingDefaults from '../tracing/defaults.js';\n\n// Used to support global `Rollbar` instance.\nlet _instance = null;\n\nclass Rollbar {\n constructor(options, client) {\n logger.init({ logLevel: options.logLevel || 'error' });\n this.options = _.handleOptions(defaultOptions, options, null, logger);\n this.options._configuredOptions = options;\n this.components = this.components || {};\n const Telemeter = this.components.telemeter;\n const Instrumenter = this.components.instrumenter;\n this.wrapGlobals = this.components.wrapGlobals;\n this.scrub = this.components.scrub;\n const truncation = this.components.truncation;\n const Tracing = this.components.tracing;\n const Replay = this.components.replay;\n\n const transport = new Transport(truncation);\n const api = new API(this.options, transport, urllib, truncation);\n if (Tracing) {\n this.tracing = new Tracing(_gWindow(), api, this.options);\n this.tracing.initSession();\n }\n if (Telemeter) {\n this.telemeter = new Telemeter(this.options, this.tracing);\n }\n\n if (Replay && _.isBrowser()) {\n const replayOptions = this.options.replay;\n this.replay = new Replay({\n tracing: this.tracing,\n telemeter: this.telemeter,\n options: replayOptions,\n });\n\n if (replayOptions.enabled && replayOptions.autoStart) {\n this.replay.recorder.start();\n }\n }\n\n this.client =\n client ||\n new Client(\n this.options,\n api,\n logger,\n this.telemeter,\n this.tracing,\n this.replay,\n 'browser',\n );\n var gWindow = _gWindow();\n var gDocument = typeof document != 'undefined' && document;\n this.isChrome = gWindow.chrome && gWindow.chrome.runtime; // check .runtime to avoid Edge browsers\n this.anonymousErrorsPending = 0;\n addTransformsToNotifier(this.client.notifier, this, gWindow);\n addPredicatesToQueue(this.client.queue);\n this.setupUnhandledCapture();\n if (Instrumenter) {\n this.instrumenter = new Instrumenter(\n this.options,\n this.client.telemeter,\n this,\n gWindow,\n gDocument,\n );\n this.instrumenter.instrument();\n }\n\n this.setSessionAttributesFromOptions(options);\n\n // Used with rollbar-react for rollbar-react-native compatibility.\n this.rollbar = this;\n }\n\n static init(options, client) {\n if (_instance) {\n return _instance.global(options).configure(options);\n }\n _instance = new Rollbar(options, client);\n return _instance;\n }\n\n static setComponents(components) {\n Rollbar.prototype.components = components;\n }\n\n global(options) {\n this.client.global(options);\n return this;\n }\n\n configure(options, payloadData) {\n if (options.logLevel) {\n logger.init({ logLevel: options.logLevel });\n }\n this.setSessionAttributesFromOptions(options);\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.handleOptions(oldOptions, options, payload, logger);\n this.options._configuredOptions = _.handleOptions(\n oldOptions._configuredOptions,\n options,\n payload,\n );\n\n this.tracing?.configure(this.options);\n this.replay?.configure(this.options.replay);\n this.client.configure(this.options, payloadData);\n this.instrumenter?.configure(this.options);\n this.setupUnhandledCapture();\n return this;\n }\n\n lastError() {\n return this.client.lastError;\n }\n\n log() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.log(item);\n return { uuid: uuid };\n }\n\n debug() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.debug(item);\n return { uuid: uuid };\n }\n\n info() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.info(item);\n return { uuid: uuid };\n }\n\n warn() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warn(item);\n return { uuid: uuid };\n }\n\n warning() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warning(item);\n return { uuid: uuid };\n }\n\n error() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.error(item);\n return { uuid: uuid };\n }\n\n critical() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.critical(item);\n return { uuid: uuid };\n }\n\n buildJsonPayload(item) {\n return this.client.buildJsonPayload(item);\n }\n\n sendJsonPayload(jsonPayload) {\n return this.client.sendJsonPayload(jsonPayload);\n }\n\n triggerDirectReplay(context) {\n return this.triggerReplay({ type: 'direct', ...context });\n }\n\n triggerReplay(context) {\n if (!this.replay) return null;\n\n return this.replay.triggerReplay(context);\n }\n\n setupUnhandledCapture() {\n var gWindow = _gWindow();\n\n if (!this.unhandledExceptionsInitialized) {\n if (\n this.options.captureUncaught ||\n this.options.handleUncaughtExceptions\n ) {\n globals.captureUncaughtExceptions(gWindow, this);\n if (this.wrapGlobals && this.options.wrapGlobalEventHandlers) {\n this.wrapGlobals(gWindow, this);\n }\n this.unhandledExceptionsInitialized = true;\n }\n }\n if (!this.unhandledRejectionsInitialized) {\n if (\n this.options.captureUnhandledRejections ||\n this.options.handleUnhandledRejections\n ) {\n globals.captureUnhandledRejections(gWindow, this);\n this.unhandledRejectionsInitialized = true;\n }\n }\n }\n\n handleUncaughtException(message, url, lineno, colno, error, context) {\n if (\n !this.options.captureUncaught &&\n !this.options.handleUncaughtExceptions\n ) {\n return;\n }\n\n // Chrome will always send 5+ arguments and error will be valid or null, not undefined.\n // If error is undefined, we have a different caller.\n // Chrome also sends errors from web workers with null error, but does not invoke\n // prepareStackTrace() for these. Test for empty url to skip them.\n if (\n this.options.inspectAnonymousErrors &&\n this.isChrome &&\n error === null &&\n url === ''\n ) {\n return 'anonymous';\n }\n\n var item;\n var stackInfo = _.makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n 'onerror',\n 'uncaught exception',\n errorParser,\n );\n if (_.isError(error)) {\n item = this._createItem([message, error, context]);\n item._unhandledStackInfo = stackInfo;\n } else if (_.isError(url)) {\n item = this._createItem([message, url, context]);\n item._unhandledStackInfo = stackInfo;\n } else {\n item = this._createItem([message, context]);\n item.stackInfo = stackInfo;\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n this.client.log(item);\n }\n\n /**\n * Chrome only. Other browsers will ignore.\n *\n * Use Error.prepareStackTrace to extract information about errors that\n * do not have a valid error object in onerror().\n *\n * In tested version of Chrome, onerror is called first but has no way\n * to communicate with prepareStackTrace. Use a counter to let this\n * handler know which errors to send to Rollbar.\n *\n * In config options, set inspectAnonymousErrors to enable.\n */\n handleAnonymousErrors() {\n if (!this.options.inspectAnonymousErrors || !this.isChrome) {\n return;\n }\n\n var r = this;\n function prepareStackTrace(error, _stack) {\n if (r.options.inspectAnonymousErrors) {\n if (r.anonymousErrorsPending) {\n // This is the only known way to detect that onerror saw an anonymous error.\n // It depends on onerror reliably being called before Error.prepareStackTrace,\n // which so far holds true on tested versions of Chrome. If versions of Chrome\n // are tested that behave differently, this logic will need to be updated\n // accordingly.\n r.anonymousErrorsPending -= 1;\n\n if (!error) {\n // Not likely to get here, but calling handleUncaughtException from here\n // without an error object would throw off the anonymousErrorsPending counter,\n // so return now.\n return;\n }\n\n // Allow this to be tracked later.\n error._isAnonymous = true;\n\n // url, lineno, colno shouldn't be needed for these errors.\n // If that changes, update this accordingly, using the unused\n // _stack param as needed (rather than parse error.toString()).\n r.handleUncaughtException(error.message, null, null, null, error);\n }\n }\n\n // Workaround to ensure stack is preserved for normal errors.\n return error.stack;\n }\n\n // https://v8.dev/docs/stack-trace-api\n try {\n Error.prepareStackTrace = prepareStackTrace;\n } catch (e) {\n this.options.inspectAnonymousErrors = false;\n this.error('anonymous error handler failed', e);\n }\n }\n\n handleUnhandledRejection(reason, promise) {\n if (\n !this.options.captureUnhandledRejections &&\n !this.options.handleUnhandledRejections\n ) {\n return;\n }\n\n var message = 'unhandled rejection was null or undefined!';\n if (reason) {\n if (reason.message) {\n message = reason.message;\n } else {\n var reasonResult = _.stringify(reason);\n if (reasonResult.value) {\n message = reasonResult.value;\n }\n }\n }\n var context =\n (reason && reason._rollbarContext) ||\n (promise && promise._rollbarContext);\n\n var item;\n if (_.isError(reason)) {\n item = this._createItem([message, reason, context]);\n } else {\n item = this._createItem([message, reason, context]);\n item.stackInfo = _.makeUnhandledStackInfo(\n message,\n '',\n 0,\n 0,\n null,\n 'unhandledrejection',\n '',\n errorParser,\n );\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n item._originalArgs = item._originalArgs || [];\n item._originalArgs.push(promise);\n this.client.log(item);\n }\n\n wrap(f, context, _before) {\n try {\n var ctxFn;\n if (_.isFunction(context)) {\n ctxFn = context;\n } else {\n ctxFn = function () {\n return context || {};\n };\n }\n\n if (!_.isFunction(f)) {\n return f;\n }\n\n if (f._isWrap) {\n return f;\n }\n\n if (!f._rollbar_wrapped) {\n f._rollbar_wrapped = function () {\n if (_before && _.isFunction(_before)) {\n _before.apply(this, arguments);\n }\n try {\n return f.apply(this, arguments);\n } catch (exc) {\n var e = exc;\n if (e && window._rollbarWrappedError !== e) {\n if (_.isType(e, 'string')) {\n e = new String(e);\n }\n e._rollbarContext = ctxFn() || {};\n e._rollbarContext._wrappedSource = f.toString();\n\n window._rollbarWrappedError = e;\n }\n throw e;\n }\n };\n\n f._rollbar_wrapped._isWrap = true;\n\n if (f.hasOwnProperty) {\n for (var prop in f) {\n if (f.hasOwnProperty(prop) && prop !== '_rollbar_wrapped') {\n f._rollbar_wrapped[prop] = f[prop];\n }\n }\n }\n }\n\n return f._rollbar_wrapped;\n } catch (e) {\n // Return the original function if the wrap fails.\n return f;\n }\n }\n\n captureEvent() {\n var event = _.createTelemetryEvent(arguments);\n return this.client.captureEvent(event.type, event.metadata, event.level);\n }\n\n setSessionUser(user) {\n if (!this.tracing?.session) return;\n\n this.tracing.session.setUser(user);\n }\n\n setSessionAttributes(attrs) {\n if (!this.tracing?.session) return;\n\n attrs = { ...attrs };\n\n this.tracing.session.setAttributes(attrs);\n }\n\n setSessionAttributesFromOptions(options) {\n const person = options.person || options.payload?.person;\n if (person) {\n this.setSessionUser(person);\n }\n const code_version =\n options.client?.javascript?.code_version ||\n options.codeVersion ||\n options.code_version ||\n options.payload?.client?.javascript?.code_version ||\n options.payload?.code_version ||\n options.payload?.codeVersion;\n this.setSessionAttributes({\n 'rollbar.codeVersion': code_version,\n 'rollbar.notifier.name': 'rollbar-browser-js',\n 'rollbar.notifier.version': options.version,\n });\n }\n\n // The following two methods are used internally and are not meant for public use\n captureDomContentLoaded(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureDomContentLoaded(ts);\n }\n\n captureLoad(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureLoad(ts);\n }\n\n loadFull() {\n logger.info(\n 'Unexpected Rollbar.loadFull() called on a Notifier instance. This can happen when Rollbar is loaded multiple times.',\n );\n }\n\n _createItem(args) {\n return _.createItem(args, logger, this);\n }\n\n // Static version of instance methods support the legacy pattern of a\n // global `Rollbar` instance, where after calling `Rollbar.init()`,\n // `Rollbar` can be used as if it were an instance.\n // If support for this pattern is dropped, these static methods can be removed.\n static callInstance(method, args) {\n if (!_instance) {\n const message = 'Rollbar is not initialized';\n logger.error(message);\n const maybeCallback = _getFirstFunction(args);\n if (maybeCallback) {\n maybeCallback(new Error(message));\n }\n return;\n }\n return _instance[method].apply(_instance, args);\n }\n\n static global = (...args) => Rollbar.callInstance('global', args);\n static configure = (...args) => Rollbar.callInstance('configure', args);\n static lastError = (...args) => Rollbar.callInstance('lastError', args);\n static log = (...args) => Rollbar.callInstance('log', args);\n static debug = (...args) => Rollbar.callInstance('debug', args);\n static info = (...args) => Rollbar.callInstance('info', args);\n static warn = (...args) => Rollbar.callInstance('warn', args);\n static warning = (...args) => Rollbar.callInstance('warning', args);\n static error = (...args) => Rollbar.callInstance('error', args);\n static critical = (...args) => Rollbar.callInstance('critical', args);\n static buildJsonPayload = (...args) =>\n Rollbar.callInstance('buildJsonPayload', args);\n static sendJsonPayload = (...args) =>\n Rollbar.callInstance('sendJsonPayload', args);\n static wrap = (...args) => Rollbar.callInstance('wrap', args);\n static captureEvent = (...args) => Rollbar.callInstance('captureEvent', args);\n}\n\n/* Internal */\n\nfunction addTransformsToNotifier(notifier, rollbar, gWindow) {\n notifier\n .addTransform(transforms.handleDomException)\n .addTransform(transforms.handleItemWithError)\n .addTransform(transforms.ensureItemHasSomethingToSay)\n .addTransform(transforms.addBaseInfo)\n .addTransform(transforms.addRequestInfo(gWindow))\n .addTransform(transforms.addClientInfo(gWindow))\n .addTransform(transforms.addPluginInfo(gWindow))\n .addTransform(transforms.addBody)\n .addTransform(sharedTransforms.addMessageWithError)\n .addTransform(sharedTransforms.addTelemetryData)\n .addTransform(sharedTransforms.addConfigToPayload)\n .addTransform(transforms.addScrubber(rollbar.scrub))\n .addTransform(sharedTransforms.addPayloadOptions)\n .addTransform(sharedTransforms.userTransform(logger))\n .addTransform(sharedTransforms.addConfiguredOptions)\n .addTransform(sharedTransforms.addDiagnosticKeys)\n .addTransform(sharedTransforms.itemToPayload);\n}\n\nfunction addPredicatesToQueue(queue) {\n queue\n .addPredicate(sharedPredicates.checkLevel)\n .addPredicate(predicates.checkIgnore)\n .addPredicate(sharedPredicates.userCheckIgnore(logger))\n .addPredicate(sharedPredicates.urlIsNotBlockListed(logger))\n .addPredicate(sharedPredicates.urlIsSafeListed(logger))\n .addPredicate(sharedPredicates.messageIsIgnored(logger));\n}\n\nfunction _getFirstFunction(args) {\n for (var i = 0, len = args.length; i < len; ++i) {\n if (_.isFunction(args[i])) {\n return args[i];\n }\n }\n return undefined;\n}\n\nfunction _gWindow() {\n return (\n (typeof window != 'undefined' && window) ||\n (typeof self != 'undefined' && self)\n );\n}\n\nimport {\n version,\n logLevel,\n reportLevel,\n uncaughtErrorLevel,\n endpoint,\n} from '../defaults.js';\nimport browserDefaults from './defaults.js';\n\nconst defaultOptions = {\n environment: 'unknown',\n version: version,\n scrubFields: browserDefaults.scrubFields,\n logLevel: logLevel,\n reportLevel: reportLevel,\n uncaughtErrorLevel: uncaughtErrorLevel,\n endpoint: endpoint,\n verbose: false,\n enabled: true,\n transmit: true,\n sendConfig: false,\n includeItemsInTelemetry: true,\n captureIp: true,\n inspectAnonymousErrors: true,\n ignoreDuplicateErrors: true,\n wrapGlobalEventHandlers: false,\n replay: replayDefaults,\n tracing: tracingDefaults,\n};\n\nexport default Rollbar;\n","function captureUncaughtExceptions(window, handler, shim) {\n if (!window) {\n return;\n }\n var oldOnError;\n\n if (typeof handler._rollbarOldOnError === 'function') {\n oldOnError = handler._rollbarOldOnError;\n } else if (window.onerror) {\n oldOnError = window.onerror;\n while (oldOnError._rollbarOldOnError) {\n oldOnError = oldOnError._rollbarOldOnError;\n }\n handler._rollbarOldOnError = oldOnError;\n }\n\n handler.handleAnonymousErrors();\n\n var fn = function () {\n var args = Array.prototype.slice.call(arguments, 0);\n _rollbarWindowOnError(window, handler, oldOnError, args);\n };\n if (shim) {\n fn._rollbarOldOnError = oldOnError;\n }\n window.onerror = fn;\n}\n\nfunction _rollbarWindowOnError(window, r, old, args) {\n if (window._rollbarWrappedError) {\n if (!args[4]) {\n args[4] = window._rollbarWrappedError;\n }\n if (!args[5]) {\n args[5] = window._rollbarWrappedError._rollbarContext;\n }\n window._rollbarWrappedError = null;\n }\n\n var ret = r.handleUncaughtException.apply(r, args);\n\n if (old) {\n old.apply(window, args);\n }\n\n // Let other chained onerror handlers above run before setting this.\n // If an error is thrown and caught within a chained onerror handler,\n // Error.prepareStackTrace() will see that one before the one we want.\n if (ret === 'anonymous') {\n r.anonymousErrorsPending += 1; // See Rollbar.prototype.handleAnonymousErrors()\n }\n}\n\nfunction captureUnhandledRejections(window, handler, shim) {\n if (!window) {\n return;\n }\n\n if (\n typeof window._rollbarURH === 'function' &&\n window._rollbarURH.belongsToShim\n ) {\n window.removeEventListener('unhandledrejection', window._rollbarURH);\n }\n\n var rejectionHandler = function (evt) {\n var reason, promise, detail;\n try {\n reason = evt.reason;\n } catch (e) {\n reason = undefined;\n }\n try {\n promise = evt.promise;\n } catch (e) {\n promise = '[unhandledrejection] error getting `promise` from event';\n }\n try {\n detail = evt.detail;\n if (!reason && detail) {\n reason = detail.reason;\n promise = detail.promise;\n }\n } catch (e) {\n // Ignore\n }\n if (!reason) {\n reason = '[unhandledrejection] error getting `reason` from event';\n }\n\n if (handler && handler.handleUnhandledRejection) {\n handler.handleUnhandledRejection(reason, promise);\n }\n };\n rejectionHandler.belongsToShim = shim;\n window._rollbarURH = rejectionHandler;\n window.addEventListener('unhandledrejection', rejectionHandler);\n}\n\nexport { captureUncaughtExceptions, captureUnhandledRejections };\n","/**\n * Default tracing options\n */\nexport default {\n enabled: false,\n endpoint: 'api.rollbar.com/api/1/session/',\n};\n","import * as _ from './utility.js';\n\nconst MAX_EVENTS = 100;\n\n// Temporary workaround while solving commonjs -> esm issues in Node 18 - 20.\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\nclass Telemeter {\n constructor(options, tracing) {\n this.queue = [];\n this.options = _.merge(options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n this.tracing = tracing;\n this.telemetrySpan = this.tracing?.startSpan('rollbar-telemetry', {});\n }\n\n configure(options) {\n var oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n var newMaxEvents = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n var deleteCount = 0;\n if (this.queue.length > newMaxEvents) {\n deleteCount = this.queue.length - newMaxEvents;\n }\n this.maxQueueSize = newMaxEvents;\n this.queue.splice(0, deleteCount);\n }\n\n copyEvents() {\n var events = Array.prototype.slice.call(this.queue, 0);\n if (_.isFunction(this.options.filterTelemetry)) {\n try {\n var i = events.length;\n while (i--) {\n if (this.options.filterTelemetry(events[i])) {\n events.splice(i, 1);\n }\n }\n } catch (e) {\n this.options.filterTelemetry = null;\n }\n }\n\n // Filter until supported in legacy telemetry\n events = events.filter((e) => e.type !== 'connectivity');\n\n // Remove internal keys from output\n events = events.map(({ otelAttributes, ...event }) => event);\n\n return events;\n }\n\n exportTelemetrySpan(attributes = {}) {\n if (this.telemetrySpan) {\n this.telemetrySpan.end(attributes);\n this.telemetrySpan = this.tracing.startSpan('rollbar-telemetry', {});\n }\n }\n\n capture(\n type,\n metadata,\n level,\n rollbarUUID,\n timestamp = null,\n otelAttributes = null,\n ) {\n var e = {\n level: getLevel(type, level),\n type: type,\n timestamp_ms: timestamp || _.now(),\n body: metadata,\n source: 'client',\n };\n if (rollbarUUID) {\n e.uuid = rollbarUUID;\n }\n if (otelAttributes) {\n e.otelAttributes = otelAttributes;\n }\n\n try {\n if (\n _.isFunction(this.options.filterTelemetry) &&\n this.options.filterTelemetry(e)\n ) {\n return false;\n }\n } catch (exc) {\n this.options.filterTelemetry = null;\n }\n\n this.push(e);\n return e;\n }\n\n captureEvent(type, metadata, level, rollbarUUID) {\n return this.capture(type, metadata, level, rollbarUUID);\n }\n\n captureError(err, level, rollbarUUID, timestamp) {\n const message = err.message || String(err);\n var metadata = { message };\n if (err.stack) {\n metadata.stack = err.stack;\n }\n const otelAttributes = {\n message,\n level,\n type: 'error',\n uuid: rollbarUUID,\n };\n\n this.telemetrySpan?.addEvent(\n 'rollbar-occurrence-event',\n otelAttributes,\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'error',\n metadata,\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureLog(message, level, rollbarUUID, timestamp) {\n let otelAttributes = null;\n\n // If the uuid is present, this is a message occurrence.\n if (rollbarUUID) {\n ((otelAttributes = {\n message,\n level,\n type: 'message',\n uuid: rollbarUUID,\n }),\n this.telemetrySpan?.addEvent(\n 'rollbar-occurrence-event',\n otelAttributes,\n fromMillis(timestamp),\n ));\n } else {\n otelAttributes = { message, level };\n this.telemetrySpan?.addEvent(\n 'rollbar-log-event',\n otelAttributes,\n fromMillis(timestamp),\n );\n }\n\n return this.capture(\n 'log',\n { message },\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNetwork(metadata, subtype, rollbarUUID, requestData) {\n subtype = subtype || 'xhr';\n metadata.subtype = metadata.subtype || subtype;\n if (requestData) {\n metadata.request = requestData;\n }\n const level = this.levelFromStatus(metadata.status_code);\n const endTimeNano = (metadata.end_time_ms || 0) * 1e6;\n const otelAttributes = {\n type: metadata.subtype,\n method: metadata.method,\n url: metadata.url,\n statusCode: metadata.status_code,\n 'request.headers': JSON.stringify(metadata.request_headers || {}),\n 'response.headers': JSON.stringify(metadata.response?.headers || {}),\n 'response.timeUnixNano': endTimeNano.toString(),\n };\n\n this.telemetrySpan?.addEvent(\n 'rollbar-network-event',\n otelAttributes,\n fromMillis(metadata.start_time_ms),\n );\n\n return this.capture(\n 'network',\n metadata,\n level,\n rollbarUUID,\n metadata.start_time_ms,\n otelAttributes,\n );\n }\n\n levelFromStatus(statusCode) {\n if (statusCode >= 200 && statusCode < 400) {\n return 'info';\n }\n if (statusCode === 0 || statusCode >= 400) {\n return 'error';\n }\n return 'info';\n }\n\n captureDom(subtype, element, value, checked, rollbarUUID) {\n var metadata = {\n subtype: subtype,\n element: element,\n };\n if (value !== undefined) {\n metadata.value = value;\n }\n if (checked !== undefined) {\n metadata.checked = checked;\n }\n return this.capture('dom', metadata, 'info', rollbarUUID);\n }\n\n captureInput({ type, isSynthetic, element, value, timestamp }) {\n const name = 'rollbar-input-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n value,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n value,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureClick({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-click-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n _getRepeatedEvent(name, attributes) {\n const lastEvent = this._lastEvent(this.queue);\n\n if (\n lastEvent &&\n lastEvent.body.type === name &&\n lastEvent.otelAttributes.target === attributes.target\n ) {\n return lastEvent;\n }\n }\n\n _updateRepeatedEvent(event, attributes, timestamp) {\n const duration = Math.max(timestamp - event.timestamp_ms, 1);\n event.body.value = attributes.value;\n event.otelAttributes.value = attributes.value;\n event.otelAttributes.height = attributes.height;\n event.otelAttributes.width = attributes.width;\n event.otelAttributes.textZoomRatio = attributes.textZoomRatio;\n event.otelAttributes['endTimeUnixNano'] = fromMillis(timestamp);\n event.otelAttributes['durationUnixNano'] = fromMillis(duration);\n event.otelAttributes.count = (event.otelAttributes.count || 1) + 1;\n event.otelAttributes.rate = event.otelAttributes.count / (duration / 1000);\n }\n\n _lastEvent(list) {\n return list.length > 0 ? list[list.length - 1] : null;\n }\n\n captureFocus({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-focus-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureResize({\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n timestamp,\n }) {\n const name = 'rollbar-resize-event';\n const metadata = {\n type: name,\n subtype: type,\n width,\n height,\n textZoomRatio,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n };\n\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureDragDrop({\n type,\n isSynthetic,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n timestamp,\n }) {\n const name = 'rollbar-dragdrop-event';\n let metadata = {\n type: name,\n subtype: type,\n isSynthetic,\n };\n\n let otelAttributes = {\n type,\n isSynthetic,\n };\n\n if (type === 'dragstart') {\n metadata = { ...metadata, element, dropEffect, effectAllowed };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n };\n }\n\n if (type === 'drop') {\n metadata = {\n ...metadata,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNavigation(from, to, rollbarUUID, timestamp) {\n this.telemetrySpan?.addEvent(\n 'rollbar-navigation-event',\n { 'previous.url.full': from, 'url.full': to },\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'navigation',\n { from, to },\n 'info',\n rollbarUUID,\n timestamp,\n );\n }\n\n captureDomContentLoaded(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'DOMContentLoaded' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'DOMContentLoaded'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureLoad(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'load' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'load'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureConnectivityChange({ type, isSynthetic, timestamp }) {\n const name = 'rollbar-connectivity-event';\n const metadata = {\n type: name,\n subtype: type,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'connectivity',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n // Only intended to be used internally by the notifier\n _captureRollbarItem(item) {\n if (!this.options.includeItemsInTelemetry) {\n return;\n }\n if (item.err) {\n return this.captureError(item.err, item.level, item.uuid, item.timestamp);\n }\n if (item.message) {\n return this.captureLog(\n item.message,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n if (item.custom) {\n return this.capture(\n 'log',\n item.custom,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n }\n\n push(e) {\n this.queue.push(e);\n if (this.queue.length > this.maxQueueSize) {\n this.queue.shift();\n }\n }\n}\n\nfunction getLevel(type, level) {\n if (level) {\n return level;\n }\n var defaultLevel = {\n error: 'error',\n manual: 'info',\n };\n return defaultLevel[type] || 'info';\n}\n\nexport default Telemeter;\n","/*\n * headers - Detect when fetch Headers are undefined and use a partial polyfill.\n *\n * A full polyfill is not used in order to keep package size as small as possible.\n * Since this is only used internally and is not added to the window object,\n * the full interface doesn't need to be supported.\n *\n * This implementation is modified from whatwg-fetch:\n * https://github.com/github/fetch\n */\nfunction headers(headers) {\n if (typeof Headers === 'undefined') {\n return new FetchHeaders(headers);\n }\n\n return new Headers(headers);\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n return name.toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value;\n}\n\nfunction iteratorFor(items) {\n var iterator = {\n next: function () {\n var value = items.shift();\n return { done: value === undefined, value: value };\n },\n };\n\n return iterator;\n}\n\nfunction FetchHeaders(headers) {\n this.map = {};\n\n if (headers instanceof FetchHeaders) {\n headers.forEach(function (value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function (header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function (name) {\n this.append(name, headers[name]);\n }, this);\n }\n}\n\nFetchHeaders.prototype.append = function (name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n};\n\nFetchHeaders.prototype.get = function (name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null;\n};\n\nFetchHeaders.prototype.has = function (name) {\n return this.map.hasOwnProperty(normalizeName(name));\n};\n\nFetchHeaders.prototype.forEach = function (callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n};\n\nFetchHeaders.prototype.entries = function () {\n var items = [];\n this.forEach(function (value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items);\n};\n\nexport default headers;\n","function replace(obj, name, replacement, replacements, type) {\n var orig = obj[name];\n obj[name] = replacement(orig);\n if (replacements) {\n replacements[type].push([obj, name, orig]);\n }\n}\n\nexport default replace;\n","import * as _ from '../utility.js';\n\nfunction traverse(obj, func, seen) {\n var k, v, i;\n var isObj = _.isType(obj, 'object');\n var isArray = _.isType(obj, 'array');\n var keys = [];\n var seenIndex;\n\n // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11.\n seen = seen || { obj: [], mapped: [] };\n\n if (isObj) {\n seenIndex = seen.obj.indexOf(obj);\n\n if (isObj && seenIndex !== -1) {\n // Prefer the mapped object if there is one.\n return seen.mapped[seenIndex] || seen.obj[seenIndex];\n }\n\n seen.obj.push(obj);\n seenIndex = seen.obj.length - 1;\n }\n\n if (isObj) {\n for (k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k)) {\n keys.push(k);\n }\n }\n } else if (isArray) {\n for (i = 0; i < obj.length; ++i) {\n keys.push(i);\n }\n }\n\n var result = isObj ? {} : [];\n var same = true;\n for (i = 0; i < keys.length; ++i) {\n k = keys[i];\n v = obj[k];\n result[k] = func(k, v, seen);\n same = same && result[k] === obj[k];\n }\n\n if (isObj && !same) {\n seen.mapped[seenIndex] = result;\n }\n\n return !same ? result : obj;\n}\n\nexport default traverse;\n","import * as _ from './utility.js';\nimport traverse from './utility/traverse.js';\n\nfunction scrub(data, scrubFields, scrubPaths) {\n scrubFields = scrubFields || [];\n\n if (scrubPaths) {\n for (var i = 0; i < scrubPaths.length; ++i) {\n scrubPath(data, scrubPaths[i]);\n }\n }\n\n var paramRes = _getScrubFieldRegexs(scrubFields);\n var queryRes = _getScrubQueryParamRegexs(scrubFields);\n\n function redactQueryParam(dummy0, paramPart) {\n return paramPart + _.redact();\n }\n\n function paramScrubber(v) {\n var i;\n if (_.isType(v, 'string')) {\n for (i = 0; i < queryRes.length; ++i) {\n v = v.replace(queryRes[i], redactQueryParam);\n }\n }\n return v;\n }\n\n function valScrubber(k, v) {\n var i;\n for (i = 0; i < paramRes.length; ++i) {\n if (paramRes[i].test(k)) {\n v = _.redact();\n break;\n }\n }\n return v;\n }\n\n function scrubber(k, v, seen) {\n var tmpV = valScrubber(k, v);\n if (tmpV === v) {\n if (_.isType(v, 'object') || _.isType(v, 'array')) {\n return traverse(v, scrubber, seen);\n }\n return paramScrubber(tmpV);\n } else {\n return tmpV;\n }\n }\n\n return traverse(data, scrubber);\n}\n\nfunction scrubPath(obj, path) {\n var keys = path.split('.');\n var last = keys.length - 1;\n try {\n for (var i = 0; i <= last; ++i) {\n if (i < last) {\n obj = obj[keys[i]];\n } else {\n obj[keys[i]] = _.redact();\n }\n }\n } catch (e) {\n // Missing key is OK;\n }\n}\n\nfunction _getScrubFieldRegexs(scrubFields) {\n var ret = [];\n var pat;\n for (var i = 0; i < scrubFields.length; ++i) {\n pat = '^\\\\[?(%5[bB])?' + scrubFields[i] + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?$';\n ret.push(new RegExp(pat, 'i'));\n }\n return ret;\n}\n\nfunction _getScrubQueryParamRegexs(scrubFields) {\n var ret = [];\n var pat;\n for (var i = 0; i < scrubFields.length; ++i) {\n pat = '\\\\[?(%5[bB])?' + scrubFields[i] + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?';\n ret.push(new RegExp('(' + pat + '=)([^&\\\\n]+)', 'igm'));\n }\n return ret;\n}\n\nexport default scrub;\n","function getElementType(e) {\n return (e.getAttribute('type') || '').toLowerCase();\n}\n\nfunction isDescribedElement(element, type, subtypes) {\n if (element.tagName.toLowerCase() !== type.toLowerCase()) {\n return false;\n }\n if (!subtypes) {\n return true;\n }\n element = getElementType(element);\n for (var i = 0; i < subtypes.length; i++) {\n if (subtypes[i] === element) {\n return true;\n }\n }\n return false;\n}\n\nfunction getElementFromEvent(evt, doc) {\n if (evt.target) {\n return evt.target;\n }\n if (doc && doc.elementFromPoint) {\n return doc.elementFromPoint(evt.clientX, evt.clientY);\n }\n return undefined;\n}\n\nfunction treeToArray(elem) {\n var MAX_HEIGHT = 5;\n var out = [];\n var nextDescription;\n for (var height = 0; elem && height < MAX_HEIGHT; height++) {\n nextDescription = describeElement(elem);\n if (nextDescription.tagName === 'html') {\n break;\n }\n out.unshift(nextDescription);\n elem = elem.parentNode;\n }\n return out;\n}\n\nfunction elementArrayToString(a) {\n var MAX_LENGTH = 80;\n var separator = ' > ',\n separatorLength = separator.length;\n var out = [],\n len = 0,\n nextStr,\n totalLength;\n\n for (var i = a.length - 1; i >= 0; i--) {\n nextStr = descriptionToString(a[i]);\n totalLength = len + out.length * separatorLength + nextStr.length;\n if (i < a.length - 1 && totalLength >= MAX_LENGTH + 3) {\n out.unshift('...');\n break;\n }\n out.unshift(nextStr);\n len += nextStr.length;\n }\n return out.join(separator);\n}\n\nfunction elementString(elem) {\n return elementArrayToString(treeToArray(elem));\n}\n\nfunction descriptionToString(desc) {\n if (!desc || !desc.tagName) {\n return '';\n }\n var out = [desc.tagName];\n if (desc.id) {\n out.push('#' + desc.id);\n }\n if (desc.classes) {\n out.push('.' + desc.classes.join('.'));\n }\n for (var i = 0; i < desc.attributes.length; i++) {\n out.push(\n '[' + desc.attributes[i].key + '=\"' + desc.attributes[i].value + '\"]',\n );\n }\n\n return out.join('');\n}\n\n/**\n * Input: a dom element\n * Output: null if tagName is falsey or input is falsey, else\n * {\n * tagName: String,\n * id: String | undefined,\n * classes: [String] | undefined,\n * attributes: [\n * {\n * key: OneOf(type, name, title, alt),\n * value: String\n * }\n * ]\n * }\n */\nfunction describeElement(elem) {\n if (!elem || !elem.tagName) {\n return null;\n }\n var out = {},\n className,\n key,\n attr,\n i;\n out.tagName = elem.tagName.toLowerCase();\n if (elem.id) {\n out.id = elem.id;\n }\n className = elem.className;\n if (className && typeof className === 'string') {\n out.classes = className.split(/\\s+/);\n }\n var attributes = ['type', 'name', 'title', 'alt'];\n out.attributes = [];\n for (i = 0; i < attributes.length; i++) {\n key = attributes[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.attributes.push({ key: key, value: attr });\n }\n }\n return out;\n}\n\n/*\n * Detects if the given element matches any of the given class names (string or regex),\n * or CSS selectors.\n * @param {HTMLElement} element - The DOM element to check.\n * @param {Array} classes - An array of class names (string or regex) to match against.\n * @param {Array} selectors - An array of CSS selectors to match against.\n * @return {boolean} - True if the element matches any of the classes or selectors, false otherwise.\n */\nfunction isMatchingElement(element, classes, selectors) {\n try {\n for (const cls of classes) {\n if (typeof cls === 'string') {\n if (element.classList.contains(cls)) {\n return true;\n }\n } else {\n for (const c of element.classList) {\n if (cls.test(c)) {\n return true;\n }\n }\n }\n }\n for (const sel of selectors) {\n if (element.matches(sel)) {\n return true;\n }\n }\n } catch (e) {\n // ignore errors from invalid arguments\n }\n return false;\n}\n\nexport {\n describeElement,\n descriptionToString,\n elementArrayToString,\n elementString,\n treeToArray,\n getElementFromEvent,\n isDescribedElement,\n getElementType,\n isMatchingElement,\n};\n","import * as _ from '../utility.js';\nimport headers from '../utility/headers.js';\nimport replace from '../utility/replace.js';\nimport scrub from '../scrub.js';\nimport * as urlparser from './url.js';\nimport * as domUtil from './domUtility.js';\n\nconst defaults = {\n network: true,\n networkResponseHeaders: false,\n networkResponseBody: false,\n networkRequestHeaders: false,\n networkRequestBody: false,\n networkErrorOnHttp5xx: false,\n networkErrorOnHttp4xx: false,\n networkErrorOnHttp0: false,\n log: true,\n dom: true,\n navigation: true,\n connectivity: true,\n contentSecurityPolicy: true,\n errorOnContentSecurityPolicy: false,\n};\n\nfunction restore(replacements, type) {\n let b;\n while (replacements[type].length) {\n b = replacements[type].shift();\n b[0][b[1]] = b[2];\n }\n}\n\nfunction nameFromDescription(description) {\n if (!description || !description.attributes) {\n return null;\n }\n const attrs = description.attributes;\n for (const a of attrs) {\n if (a.key === 'name') {\n return a.value;\n }\n }\n return null;\n}\n\nfunction defaultValueScrubber(scrubFields) {\n const patterns = [];\n for (const field of scrubFields) {\n patterns.push(new RegExp(field, 'i'));\n }\n return function (description) {\n const name = nameFromDescription(description);\n if (!name) {\n return false;\n }\n for (const p of patterns) {\n if (p.test(name)) {\n return true;\n }\n }\n return false;\n };\n}\n\nclass Instrumenter {\n constructor(options, telemeter, rollbar, _window, _document) {\n this.options = options;\n let autoInstrument = options.autoInstrument;\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.telemeter = telemeter;\n this.rollbar = rollbar;\n this.diagnostic = rollbar.client.notifier.diagnostic;\n this._window = _window || {};\n this._document = _document || {};\n this.replacements = {\n network: [],\n log: [],\n navigation: [],\n connectivity: [],\n };\n this.eventRemovers = {\n dom: [],\n connectivity: [],\n contentsecuritypolicy: [],\n };\n\n this._location = this._window.location;\n this._lastHref = this._location && this._location.href;\n }\n\n configureScrubbing() {\n const options = this.options;\n this.scrubTelemetryInputs = !!(\n options.scrubTelemetryInputs ?? options.replay?.maskAllInputs\n );\n this.telemetryScrubber = options.telemetryScrubber;\n this.defaultValueScrubber = defaultValueScrubber(options.scrubFields);\n this.maskInputFn = options.replay?.maskInputFn;\n this.maskInputOptions = options.replay?.maskInputOptions || {};\n this.scrubClasses = [\n options.replay?.blockClass,\n options.replay?.ignoreClass,\n options.replay?.maskTextClass,\n ].filter(Boolean);\n this.scrubSelectors = [\n options.replay?.blockSelector,\n options.replay?.ignoreSelector,\n options.replay?.maskTextSelector,\n ].filter(Boolean);\n }\n\n configure(options) {\n this.options = _.merge(this.options, options);\n let autoInstrument = options.autoInstrument;\n const oldSettings = _.merge(this.autoInstrument);\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.instrument(oldSettings);\n }\n\n // eslint-disable-next-line complexity\n instrument(oldSettings) {\n if (this.autoInstrument.network && !(oldSettings && oldSettings.network)) {\n this.instrumentNetwork();\n } else if (\n !this.autoInstrument.network &&\n oldSettings &&\n oldSettings.network\n ) {\n this.deinstrumentNetwork();\n }\n\n if (this.autoInstrument.log && !(oldSettings && oldSettings.log)) {\n this.instrumentConsole();\n } else if (!this.autoInstrument.log && oldSettings && oldSettings.log) {\n this.deinstrumentConsole();\n }\n\n if (this.autoInstrument.dom && !(oldSettings && oldSettings.dom)) {\n this.instrumentDom();\n } else if (!this.autoInstrument.dom && oldSettings && oldSettings.dom) {\n this.deinstrumentDom();\n }\n\n if (\n this.autoInstrument.navigation &&\n !(oldSettings && oldSettings.navigation)\n ) {\n this.instrumentNavigation();\n } else if (\n !this.autoInstrument.navigation &&\n oldSettings &&\n oldSettings.navigation\n ) {\n this.deinstrumentNavigation();\n }\n\n if (\n this.autoInstrument.connectivity &&\n !(oldSettings && oldSettings.connectivity)\n ) {\n this.instrumentConnectivity();\n } else if (\n !this.autoInstrument.connectivity &&\n oldSettings &&\n oldSettings.connectivity\n ) {\n this.deinstrumentConnectivity();\n }\n\n if (\n this.autoInstrument.contentSecurityPolicy &&\n !(oldSettings && oldSettings.contentSecurityPolicy)\n ) {\n this.instrumentContentSecurityPolicy();\n } else if (\n !this.autoInstrument.contentSecurityPolicy &&\n oldSettings &&\n oldSettings.contentSecurityPolicy\n ) {\n this.deinstrumentContentSecurityPolicy();\n }\n }\n\n deinstrumentNetwork() {\n restore(this.replacements, 'network');\n }\n\n instrumentNetwork() {\n const self = this;\n\n function wrapProp(prop, xhr) {\n if (prop in xhr && _.isFunction(xhr[prop])) {\n replace(xhr, prop, function (orig) {\n return self.rollbar.wrap(orig);\n });\n }\n }\n\n if ('XMLHttpRequest' in this._window) {\n const xhrp = this._window.XMLHttpRequest.prototype;\n replace(\n xhrp,\n 'open',\n function (orig) {\n return function (method, url) {\n const isUrlObject = _isUrlObject(url);\n if (_.isType(url, 'string') || isUrlObject) {\n url = isUrlObject ? url.toString() : url;\n if (this.__rollbar_xhr) {\n this.__rollbar_xhr.method = method;\n this.__rollbar_xhr.url = url;\n this.__rollbar_xhr.status_code = null;\n this.__rollbar_xhr.start_time_ms = _.now();\n this.__rollbar_xhr.end_time_ms = null;\n } else {\n this.__rollbar_xhr = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'setRequestHeader',\n function (orig) {\n return function (header, value) {\n // If xhr.open is async, __rollbar_xhr may not be initialized yet.\n if (!this.__rollbar_xhr) {\n this.__rollbar_xhr = {};\n }\n if (_.isType(header, 'string') && _.isType(value, 'string')) {\n if (self.autoInstrument.networkRequestHeaders) {\n if (!this.__rollbar_xhr.request_headers) {\n this.__rollbar_xhr.request_headers = {};\n }\n this.__rollbar_xhr.request_headers[header] = value;\n }\n // We want the content type even if request header telemetry is off.\n if (header.toLowerCase() === 'content-type') {\n this.__rollbar_xhr.request_content_type = value;\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'send',\n function (orig) {\n return function (data) {\n const xhr = this;\n\n function onreadystatechangeHandler() {\n if (xhr.__rollbar_xhr) {\n if (xhr.__rollbar_xhr.status_code === null) {\n xhr.__rollbar_xhr.status_code = 0;\n if (self.autoInstrument.networkRequestBody) {\n xhr.__rollbar_xhr.request = data;\n }\n xhr.__rollbar_event = self.captureNetwork(\n xhr.__rollbar_xhr,\n 'xhr',\n undefined,\n );\n }\n if (xhr.readyState < 2) {\n xhr.__rollbar_xhr.start_time_ms = _.now();\n }\n if (xhr.readyState > 3) {\n const end_time_ms = _.now();\n xhr.__rollbar_xhr.end_time_ms = end_time_ms;\n\n let headers = null;\n xhr.__rollbar_xhr.response_content_type =\n xhr.getResponseHeader('Content-Type');\n if (self.autoInstrument.networkResponseHeaders) {\n const headersConfig =\n self.autoInstrument.networkResponseHeaders;\n headers = {};\n try {\n let header;\n if (headersConfig === true) {\n const allHeaders = xhr.getAllResponseHeaders();\n if (allHeaders) {\n const arr = allHeaders.trim().split(/[\\r\\n]+/);\n let parts, value;\n for (const h of arr) {\n parts = h.split(': ');\n header = parts.shift();\n value = parts.join(': ');\n headers[header] = value;\n }\n }\n } else {\n for (const h of headersConfig) {\n headers[h] = xhr.getResponseHeader(h);\n }\n }\n } catch (e) {\n /* we ignore the errors here that could come from different\n * browser issues with the xhr methods */\n }\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n try {\n body = xhr.responseText;\n } catch (e) {\n /* ignore errors from reading responseText */\n }\n }\n let response = null;\n if (body || headers) {\n response = {};\n if (body) {\n if (\n self.isJsonContentType(\n xhr.__rollbar_xhr.response_content_type,\n )\n ) {\n response.body = self.scrubJson(body);\n } else {\n response.body = body;\n }\n }\n if (headers) {\n response.headers = headers;\n }\n }\n if (response) {\n xhr.__rollbar_xhr.response = response;\n }\n try {\n let code = xhr.status;\n code = code === 1223 ? 204 : code;\n xhr.__rollbar_xhr.status_code = code;\n self.addOtelNetworkResponse(\n xhr.__rollbar_event,\n end_time_ms,\n code,\n );\n xhr.__rollbar_event.level =\n self.telemeter.levelFromStatus(code);\n self.errorOnHttpStatus(xhr.__rollbar_xhr);\n } catch (e) {\n /* ignore possible exception from xhr.status */\n }\n }\n }\n }\n\n wrapProp('onload', xhr);\n wrapProp('onerror', xhr);\n wrapProp('onprogress', xhr);\n\n if (\n 'onreadystatechange' in xhr &&\n _.isFunction(xhr.onreadystatechange)\n ) {\n replace(xhr, 'onreadystatechange', function (orig) {\n return self.rollbar.wrap(\n orig,\n undefined,\n onreadystatechangeHandler,\n );\n });\n } else {\n xhr.onreadystatechange = onreadystatechangeHandler;\n }\n if (xhr.__rollbar_xhr && self.trackHttpErrors()) {\n xhr.__rollbar_xhr.stack = new Error().stack;\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n }\n\n if ('fetch' in this._window) {\n replace(\n this._window,\n 'fetch',\n function (orig) {\n return function (fn, t) {\n const args = [...arguments];\n const input = args[0];\n let method = 'GET';\n let url;\n const isUrlObject = _isUrlObject(input);\n if (_.isType(input, 'string') || isUrlObject) {\n url = isUrlObject ? input.toString() : input;\n } else if (input) {\n url = input.url;\n if (input.method) {\n method = input.method;\n }\n }\n if (args[1] && args[1].method) {\n method = args[1].method;\n }\n const metadata = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n if (args[1] && args[1].headers) {\n // Argument may be a Headers object, or plain object. Ensure here that\n // we are working with a Headers object with case-insensitive keys.\n const reqHeaders = headers(args[1].headers);\n\n metadata.request_content_type = reqHeaders.get('Content-Type');\n\n if (self.autoInstrument.networkRequestHeaders) {\n metadata.request_headers = self.fetchHeaders(\n reqHeaders,\n self.autoInstrument.networkRequestHeaders,\n );\n }\n }\n\n if (self.autoInstrument.networkRequestBody) {\n if (args[1] && args[1].body) {\n metadata.request = args[1].body;\n } else if (\n args[0] &&\n !_.isType(args[0], 'string') &&\n args[0].body\n ) {\n metadata.request = args[0].body;\n }\n }\n const telemetryEvent = self.captureNetwork(\n metadata,\n 'fetch',\n undefined,\n );\n if (self.trackHttpErrors()) {\n metadata.stack = new Error().stack;\n }\n\n // Start our handler before returning the promise. This allows resp.clone()\n // to execute before other handlers touch the response.\n return orig.apply(this, args).then(function (resp) {\n const end_time_ms = _.now();\n metadata.end_time_ms = end_time_ms;\n metadata.status_code = resp.status;\n self.addOtelNetworkResponse(\n telemetryEvent,\n end_time_ms,\n resp.status,\n );\n\n metadata.response_content_type = resp.headers.get('Content-Type');\n let headers = null;\n if (self.autoInstrument.networkResponseHeaders) {\n headers = self.fetchHeaders(\n resp.headers,\n self.autoInstrument.networkResponseHeaders,\n );\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n if (typeof resp.text === 'function') {\n // Response.text() is not implemented on some platforms\n // The response must be cloned to prevent reading (and locking) the original stream.\n // This must be done before other handlers touch the response.\n body = resp.clone().text(); //returns a Promise\n }\n }\n if (headers || body) {\n metadata.response = {};\n if (body) {\n // Test to ensure body is a Promise, which it should always be.\n if (typeof body.then === 'function') {\n body.then(function (text) {\n if (\n text &&\n self.isJsonContentType(metadata.response_content_type)\n ) {\n metadata.response.body = self.scrubJson(text);\n } else {\n metadata.response.body = text;\n }\n });\n } else {\n metadata.response.body = body;\n }\n }\n if (headers) {\n metadata.response.headers = headers;\n }\n }\n self.errorOnHttpStatus(metadata);\n return resp;\n });\n };\n },\n this.replacements,\n 'network',\n );\n }\n }\n\n captureNetwork(metadata, subtype, rollbarUUID) {\n if (\n metadata.request &&\n this.isJsonContentType(metadata.request_content_type)\n ) {\n metadata.request = this.scrubJson(metadata.request);\n }\n return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID);\n }\n\n isJsonContentType(contentType) {\n return contentType &&\n _.isType(contentType, 'string') &&\n contentType.toLowerCase().includes('json')\n ? true\n : false;\n }\n\n addOtelNetworkResponse(event, endTimeMs, statusCode) {\n if (event.otelAttributes) {\n event.otelAttributes['response.timeUnixNano'] = (\n endTimeMs * 1e6\n ).toString();\n event.otelAttributes.statusCode = statusCode;\n }\n }\n\n scrubJson(json) {\n return JSON.stringify(scrub(JSON.parse(json), this.options.scrubFields));\n }\n\n fetchHeaders(inHeaders, headersConfig) {\n const outHeaders = {};\n try {\n if (headersConfig === true) {\n if (typeof inHeaders.entries === 'function') {\n // Headers.entries() is not implemented in IE\n const allHeaders = inHeaders.entries();\n let currentHeader = allHeaders.next();\n while (!currentHeader.done) {\n outHeaders[currentHeader.value[0]] = currentHeader.value[1];\n currentHeader = allHeaders.next();\n }\n }\n } else {\n for (const h of headersConfig) {\n outHeaders[h] = inHeaders.get(h);\n }\n }\n } catch (e) {\n /* ignore probable IE errors */\n }\n return outHeaders;\n }\n\n trackHttpErrors() {\n return (\n this.autoInstrument.networkErrorOnHttp5xx ||\n this.autoInstrument.networkErrorOnHttp4xx ||\n this.autoInstrument.networkErrorOnHttp0\n );\n }\n\n errorOnHttpStatus(metadata) {\n const status = metadata.status_code;\n\n if (\n (status >= 500 && this.autoInstrument.networkErrorOnHttp5xx) ||\n (status >= 400 && this.autoInstrument.networkErrorOnHttp4xx) ||\n (status === 0 && this.autoInstrument.networkErrorOnHttp0)\n ) {\n const error = new Error('HTTP request failed with Status ' + status);\n error.stack = metadata.stack;\n this.rollbar.error(error, { skipFrames: 1 });\n }\n }\n\n deinstrumentConsole() {\n let b;\n while (this.replacements['log'].length) {\n b = this.replacements['log'].shift();\n this._window.console[b[0]] = b[1];\n }\n }\n\n instrumentConsole() {\n if (!this._window?.console?.log) {\n return;\n }\n\n const self = this;\n const c = this._window.console;\n\n function wrapConsole(method) {\n 'use strict'; // See https://github.com/rollbar/rollbar.js/pull/778\n\n const orig = c[method];\n const origConsole = c;\n const level = method === 'warn' ? 'warning' : method;\n c[method] = function () {\n const args = Array.prototype.slice.call(arguments);\n const message = _.formatArgsAsString(args);\n self.telemeter.captureLog(message, level, null, _.now());\n if (orig) {\n Function.prototype.apply.call(orig, origConsole, args);\n }\n };\n self.replacements['log'].push([method, orig]);\n }\n const methods = ['debug', 'info', 'warn', 'error', 'log'];\n try {\n for (const m of methods) {\n wrapConsole(m);\n }\n } catch (e) {\n this.diagnostic.instrumentConsole = { error: e.message };\n }\n }\n\n deinstrumentDom() {\n this.removeListeners('dom');\n }\n\n instrumentDom() {\n const self = this;\n this.addListener(\n 'dom',\n this._window,\n ['click', 'dblclick', 'contextmenu'],\n (e) => this.handleEvent('click', e),\n );\n this.addListener(\n 'dom',\n this._window,\n ['dragstart', 'dragend', 'dragenter', 'dragleave', 'drop'],\n (e) => this.handleEvent('dragdrop', e),\n );\n this.addListener('dom', this._window, ['blur', 'focus'], (e) =>\n this.handleEvent('focus', e),\n );\n this.addListener('dom', this._window, ['submit', 'invalid'], (e) =>\n this.handleEvent('form', e),\n );\n this.addListener('dom', this._window, ['input', 'change'], (e) =>\n this.handleEvent('input', e),\n );\n this.addListener('dom', this._window, ['resize'], (e) =>\n this.handleEvent('resize', e),\n );\n this.addListener('dom', this._document, ['DOMContentLoaded'], (e) =>\n this.handleEvent('contentLoaded', e),\n );\n }\n\n handleEvent(name, evt) {\n try {\n return {\n click: this.handleClick,\n dragdrop: this.handleDrag,\n focus: this.handleFocus,\n form: this.handleForm,\n input: this.handleInput,\n resize: this.handleResize,\n contentLoaded: this.handleContentLoaded,\n }[name].call(this, evt);\n } catch (exc) {\n console.log(`${name} handler error`, evt, exc, exc.stack);\n }\n }\n\n handleContentLoaded(evt) {\n const replayId = this.rollbar.triggerReplay({\n type: 'navigation',\n path: new URL(this._location.href).pathname,\n });\n }\n\n handleClick(evt) {\n const tagName = evt.target?.tagName.toLowerCase();\n if (['input', 'select', 'textarea'].includes(tagName)) return;\n\n this.telemeter.captureClick({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n timestamp: _.now(),\n });\n }\n\n handleFocus(evt) {\n const type = evt.type;\n const element = evt.target?.window\n ? 'window'\n : domUtil.elementString(evt.target);\n\n this.telemeter.captureFocus({\n type: type,\n isSynthetic: !evt.isTrusted,\n element,\n timestamp: _.now(),\n });\n }\n\n handleForm(evt) {\n // TODO: implement form event handling\n const type = evt.type;\n const elementString = evt.target?.window\n ? 'window'\n : domUtil.elementString(evt.target);\n }\n\n handleResize(evt) {\n const textZoomRatio = window.screen.width / window.innerWidth;\n\n this.telemeter.captureResize({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n width: window.innerWidth,\n height: window.innerHeight,\n textZoomRatio: textZoomRatio,\n timestamp: _.now(),\n });\n }\n\n handleDrag(evt) {\n const type = evt.type;\n let kinds, mediaTypes, dropEffect, effectAllowed;\n\n if (type === 'drop') {\n kinds = [];\n mediaTypes = [];\n const objs = [...evt.dataTransfer.files, ...evt.dataTransfer.items];\n for (const o of objs) {\n if (o.kind && o.type) {\n kinds.push(o.kind);\n mediaTypes.push(o.type);\n }\n }\n }\n if (['drop', 'dragstart'].includes(type)) {\n dropEffect = evt.dataTransfer?.dropEffect;\n effectAllowed = evt.dataTransfer?.effectAllowed;\n }\n\n this.telemeter.captureDragDrop({\n type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n dropEffect: dropEffect,\n effectAllowed: effectAllowed,\n kinds: JSON.stringify(kinds),\n mediaTypes: JSON.stringify(mediaTypes),\n timestamp: _.now(),\n });\n }\n\n /*\n * Applies Rollbar telemetry scrubbing options to the dom input value.\n * When replay options are present, applies those as well.\n */\n scrubInputValue(value, element, tagName, inputType) {\n const mask = '******';\n\n if (inputType === 'password') {\n return mask;\n }\n\n if (this.scrubTelemetryInputs) {\n return mask;\n } else {\n const description = domUtil.describeElement(element);\n if (this.telemetryScrubber) {\n if (this.telemetryScrubber(description)) {\n return mask;\n }\n } else if (this.defaultValueScrubber(description)) {\n return mask;\n }\n }\n\n // Apply replay options regardless of other scrubbing\n if (\n domUtil.isMatchingElement(element, this.scrubClasses, this.scrubSelectors)\n ) {\n return mask;\n }\n\n // This check is last since maskInputFn returns a modified value rather\n // than a boolean, which would cause an early return even if the value\n // was not scrubbed.\n if (\n this.maskInputOptions[tagName.toLowerCase()] ||\n this.maskInputOptions[inputType]\n ) {\n if (this.maskInputFn) {\n return this.maskInputFn(value, element);\n } else {\n return mask;\n }\n }\n\n return value;\n }\n\n /*\n * Uses the `input` event for everything except radio and checkbox inputs.\n * For those, it uses the `change` event.\n */\n handleInput(evt) {\n const type = evt.type;\n const tagName = evt.target?.tagName.toLowerCase();\n let value = evt.target?.value;\n let inputType = evt.target?.attributes?.type?.value || evt.target?.type;\n\n if (value !== undefined) {\n value = this.scrubInputValue(value, evt.target, tagName, inputType);\n }\n\n switch (type) {\n case 'input':\n if (['radio', 'checkbox'].includes(inputType)) return;\n if (['select', 'textarea'].includes(tagName)) {\n inputType = tagName;\n }\n break;\n\n case 'change':\n if (!['radio', 'checkbox'].includes(inputType)) return;\n if (inputType === 'checkbox') {\n value = evt.target?.checked;\n }\n break;\n }\n\n this.telemeter.captureInput({\n type: inputType,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n value,\n timestamp: _.now(),\n });\n }\n\n deinstrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n restore(this.replacements, 'navigation');\n }\n\n instrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n const self = this;\n replace(\n this._window,\n 'onpopstate',\n function (orig) {\n return function () {\n const current = self._location.href;\n self.handleUrlChange(self._lastHref, current);\n if (orig) {\n orig.apply(this, arguments);\n }\n };\n },\n this.replacements,\n 'navigation',\n );\n\n replace(\n this._window.history,\n 'pushState',\n function (orig) {\n return function () {\n const url = arguments.length > 2 ? arguments[2] : undefined;\n if (url) {\n self.handleUrlChange(self._lastHref, url + '');\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'navigation',\n );\n }\n\n handleUrlChange(from, to) {\n const parsedHref = urlparser.parse(this._location.href);\n const parsedTo = urlparser.parse(to);\n const parsedFrom = urlparser.parse(from);\n this._lastHref = to;\n if (\n parsedHref.protocol === parsedTo.protocol &&\n parsedHref.host === parsedTo.host\n ) {\n to = parsedTo.path + (parsedTo.hash || '');\n }\n if (\n parsedHref.protocol === parsedFrom.protocol &&\n parsedHref.host === parsedFrom.host\n ) {\n from = parsedFrom.path + (parsedFrom.hash || '');\n }\n this.telemeter.captureNavigation(from, to, null, _.now());\n const replayId = this.rollbar.triggerReplay({\n type: 'navigation',\n path: to,\n });\n }\n\n deinstrumentConnectivity = function () {\n this.removeListeners('connectivity');\n };\n\n instrumentConnectivity() {\n const self = this;\n this.addListener(\n 'connectivity',\n this._window,\n ['online', 'offline'],\n (evt) => self.handleConnectivity(evt),\n );\n }\n\n handleConnectivity(evt) {\n const type = evt.type;\n\n this.telemeter.captureConnectivityChange({\n type,\n isSynthetic: !evt.isTrusted,\n timestamp: _.now(),\n });\n }\n\n handleCspEvent(cspEvent) {\n let message =\n 'Security Policy Violation: ' +\n 'blockedURI: ' +\n cspEvent.blockedURI +\n ', ' +\n 'violatedDirective: ' +\n cspEvent.violatedDirective +\n ', ' +\n 'effectiveDirective: ' +\n cspEvent.effectiveDirective +\n ', ';\n\n if (cspEvent.sourceFile) {\n message +=\n 'location: ' +\n cspEvent.sourceFile +\n ', ' +\n 'line: ' +\n cspEvent.lineNumber +\n ', ' +\n 'col: ' +\n cspEvent.columnNumber +\n ', ';\n }\n\n message += 'originalPolicy: ' + cspEvent.originalPolicy;\n\n this.telemeter.captureLog(message, 'error', null, _.now());\n this.handleCspError(message);\n }\n\n handleCspError(message) {\n if (this.autoInstrument.errorOnContentSecurityPolicy) {\n this.rollbar.error(message);\n }\n }\n\n deinstrumentContentSecurityPolicy() {\n this.removeListeners('contentsecuritypolicy');\n }\n\n instrumentContentSecurityPolicy() {\n if (!('addEventListener' in this._document)) {\n return;\n }\n\n const cspHandler = this.handleCspEvent.bind(this);\n this.addListener(\n 'contentsecuritypolicy',\n this._document,\n ['securitypolicyviolation'],\n cspHandler,\n );\n }\n\n addListener(section, obj, types, handler) {\n if (obj.addEventListener) {\n for (const t of types) {\n const options = { capture: true, passive: true };\n obj.addEventListener(t, handler, options, true);\n this.eventRemovers[section].push(function () {\n obj.removeEventListener(t, handler, options);\n });\n }\n }\n }\n\n removeListeners(section) {\n let r;\n while (this.eventRemovers[section].length) {\n r = this.eventRemovers[section].shift();\n r();\n }\n }\n}\n\nfunction _isUrlObject(input) {\n return typeof URL !== 'undefined' && input instanceof URL;\n}\n\nexport default Instrumenter;\n","function wrapGlobals(window, handler, shim) {\n if (!window) {\n return;\n }\n // Adapted from https://github.com/bugsnag/bugsnag-js\n var globals =\n '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'.split(\n ',',\n );\n var i, global;\n for (i = 0; i < globals.length; ++i) {\n global = globals[i];\n\n if (window[global] && window[global].prototype) {\n _extendListenerPrototype(handler, window[global].prototype, shim);\n }\n }\n}\n\nfunction _extendListenerPrototype(handler, prototype, shim) {\n if (\n prototype.hasOwnProperty &&\n prototype.hasOwnProperty('addEventListener')\n ) {\n var oldAddEventListener = prototype.addEventListener;\n while (\n oldAddEventListener._rollbarOldAdd &&\n oldAddEventListener.belongsToShim\n ) {\n oldAddEventListener = oldAddEventListener._rollbarOldAdd;\n }\n var addFn = function (event, callback, bubble) {\n oldAddEventListener.call(this, event, handler.wrap(callback), bubble);\n };\n addFn._rollbarOldAdd = oldAddEventListener;\n addFn.belongsToShim = shim;\n prototype.addEventListener = addFn;\n\n var oldRemoveEventListener = prototype.removeEventListener;\n while (\n oldRemoveEventListener._rollbarOldRemove &&\n oldRemoveEventListener.belongsToShim\n ) {\n oldRemoveEventListener = oldRemoveEventListener._rollbarOldRemove;\n }\n var removeFn = function (event, callback, bubble) {\n oldRemoveEventListener.call(\n this,\n event,\n (callback && callback._rollbar_wrapped) || callback,\n bubble,\n );\n };\n removeFn._rollbarOldRemove = oldRemoveEventListener;\n removeFn.belongsToShim = shim;\n prototype.removeEventListener = removeFn;\n }\n}\n\nexport default wrapGlobals;\n","import * as _ from './utility.js';\nimport traverse from './utility/traverse.js';\n\nfunction raw(payload, jsonBackup) {\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction selectFrames(frames, range) {\n var len = frames.length;\n if (len > range * 2) {\n return frames.slice(0, range).concat(frames.slice(len - range));\n }\n return frames;\n}\n\nfunction truncateFrames(payload, jsonBackup, range) {\n range = typeof range === 'undefined' ? 30 : range;\n var body = payload.data.body;\n var frames;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (var i = 0; i < chain.length; i++) {\n frames = chain[i].frames;\n frames = selectFrames(frames, range);\n chain[i].frames = frames;\n }\n } else if (body.trace) {\n frames = body.trace.frames;\n frames = selectFrames(frames, range);\n body.trace.frames = frames;\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction maybeTruncateValue(len, val) {\n if (!val) {\n return val;\n }\n if (val.length > len) {\n return val.slice(0, len - 3).concat('...');\n }\n return val;\n}\n\nfunction truncateStrings(len, payload, jsonBackup) {\n function truncator(k, v, seen) {\n switch (_.typeName(v)) {\n case 'string':\n return maybeTruncateValue(len, v);\n case 'object':\n case 'array':\n return traverse(v, truncator, seen);\n default:\n return v;\n }\n }\n payload = traverse(payload, truncator);\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction truncateTraceData(traceData) {\n if (traceData.exception) {\n delete traceData.exception.description;\n traceData.exception.message = maybeTruncateValue(\n 255,\n traceData.exception.message,\n );\n }\n traceData.frames = selectFrames(traceData.frames, 1);\n return traceData;\n}\n\nfunction minBody(payload, jsonBackup) {\n var body = payload.data.body;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (var i = 0; i < chain.length; i++) {\n chain[i] = truncateTraceData(chain[i]);\n }\n } else if (body.trace) {\n body.trace = truncateTraceData(body.trace);\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction needsTruncation(payload, maxSize) {\n return _.maxByteSize(payload) > maxSize;\n}\n\nfunction truncate(payload, jsonBackup, maxSize) {\n maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize;\n var strategies = [\n raw,\n truncateFrames,\n truncateStrings.bind(null, 1024),\n truncateStrings.bind(null, 512),\n truncateStrings.bind(null, 256),\n minBody,\n ];\n var strategy, results, result;\n\n while ((strategy = strategies.shift())) {\n results = strategy(payload, jsonBackup);\n payload = results[0];\n result = results[1];\n if (result.error || !needsTruncation(result.value, maxSize)) {\n return result;\n }\n }\n return result;\n}\n\nexport default {\n truncate,\n\n /* for testing */\n raw,\n truncateFrames,\n truncateStrings,\n maybeTruncateValue,\n};\n","export class Context {\n constructor(parentContext) {\n this._currentContext = parentContext ? new Map(parentContext) : new Map();\n }\n\n getValue(key) {\n return this._currentContext.get(key);\n }\n\n setValue(key, value) {\n const context = new Context(this._currentContext);\n context._currentContext.set(key, value);\n return context;\n }\n\n deleteValue(key) {\n const context = new Context(self._currentContext);\n context._currentContext.delete(key);\n return context;\n }\n}\n\nexport const ROOT_CONTEXT = new Context();\n","import { ROOT_CONTEXT } from './context.js';\n\nexport class ContextManager {\n constructor() {\n this.currentContext = ROOT_CONTEXT;\n }\n\n active() {\n return this.currentContext;\n }\n\n enterContext(context) {\n const previousContext = this.currentContext;\n this.currentContext = context || ROOT_CONTEXT;\n return previousContext;\n }\n\n exitContext(context) {\n this.currentContext = context;\n return this.currentContext;\n }\n\n with(context, fn, thisArg, ...args) {\n const previousContext = this.enterContext(context);\n try {\n return fn.call(thisArg, ...args);\n } finally {\n this.exitContext(previousContext);\n }\n }\n}\n\nexport function createContextKey(key) {\n // Use Symbol for OpenTelemetry compatibility.\n return Symbol.for(key);\n}\n","/**\n * Generate a random hexadecimal ID of specified byte length\n *\n * @param {number} bytes - Number of bytes for the ID (default: 16)\n * @returns {string} - Hexadecimal string representation\n */\nfunction gen(bytes = 16) {\n let randomBytes = new Uint8Array(bytes);\n crypto.getRandomValues(randomBytes);\n let randHex = Array.from(randomBytes, (byte) =>\n byte.toString(16).padStart(2, '0'),\n ).join('');\n return randHex;\n}\n\n/**\n * Tracing id generation utils\n *\n * @example\n * import id from './id.js';\n *\n * const spanId = id.gen(8); // => \"a1b2c3d4e5f6...\"\n */\nexport default { gen };\n","import id from './id.js';\n\nconst SESSION_KEY = 'RollbarSession';\n\nexport class Session {\n _attributes;\n\n constructor(tracing, options) {\n this.options = options;\n this.tracing = tracing;\n this.window = tracing.window;\n this.session = null;\n this._attributes = {};\n }\n\n init(attrs = {}) {\n if (this.session) {\n return this;\n }\n this.getSession() || this.createSession();\n\n this.initSessionAttributes(attrs);\n\n return this;\n }\n\n getSession() {\n try {\n const serializedSession = this.window.sessionStorage.getItem(SESSION_KEY);\n\n if (!serializedSession) {\n return null;\n }\n\n this.session = JSON.parse(serializedSession);\n } catch {\n return null;\n }\n return this;\n }\n\n createSession() {\n this.session = {\n id: id.gen(),\n createdAt: Date.now(),\n };\n\n return this.setSession(this.session);\n }\n\n setSession(session) {\n const sessionString = JSON.stringify(session);\n\n try {\n this.window.sessionStorage.setItem(SESSION_KEY, sessionString);\n } catch {\n return null;\n }\n return this;\n }\n\n get attributes() {\n return this._attributes;\n }\n\n setAttributes(attributes) {\n this._attributes = { ...this._attributes, ...attributes };\n return this;\n }\n\n setUser(user) {\n this.setAttributes({\n 'user.id': user?.id,\n 'user.email': user?.email,\n 'user.name': user?.name || user?.username,\n });\n return this;\n }\n\n initSessionAttributes(attrs) {\n this.setAttributes({\n 'session.id': this.session.id,\n 'browser.brands': navigator.userAgentData?.brands,\n 'browser.language': navigator.language,\n 'browser.mobile': navigator.userAgentData?.mobile,\n 'browser.platform': navigator.userAgentData?.platform,\n 'client.address': '$remote_ip', // updated at the API\n 'rollbar.notifier.framework': 'browser-js',\n 'user_agent.original': navigator.userAgent,\n ...attrs,\n });\n return this;\n }\n}\n","/**\n * @module hrtime\n *\n * @description Methods for handling OpenTelemetry hrtime.\n */\n\n/**\n * Convert a duration in milliseconds to an OpenTelemetry hrtime tuple.\n *\n * @param {number} millis - The duration in milliseconds.\n * @returns {[number, number]} An array where the first element is seconds\n * and the second is nanoseconds.\n */\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in milliseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in milliseconds.\n */\nfunction toMillis(hrtime) {\n return hrtime[0] * 1e3 + Math.round(hrtime[1] / 1e6);\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in nanoseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in nanoseconds.\n */\nfunction toNanos(hrtime) {\n return hrtime[0] * 1e9 + hrtime[1];\n}\n\n/**\n * Adds two OpenTelemetry hrtime tuples.\n *\n * @param {[number, number]} a - The first hrtime tuple [s, ns].\n * @param {[number, number]} b - The second hrtime tuple [s, ns].\n * @returns {[number, number]} Summed hrtime tuple, normalized.\n *\n */\nfunction add(a, b) {\n return [a[0] + b[0] + Math.trunc((a[1] + b[1]) / 1e9), (a[1] + b[1]) % 1e9];\n}\n\n/**\n * Get the current high-resolution time as an OpenTelemetry hrtime tuple.\n *\n * @param {boolean} usePerformance=false - If true, uses the Performance API (timeOrigin + now()).\n *\n * @returns {[number, number]} The current hrtime tuple [s, ns].\n */\nfunction now(usePerformance = false) {\n if (usePerformance) {\n return add(\n fromMillis(performance.timeOrigin),\n fromMillis(performance.now()),\n );\n }\n return fromMillis(Date.now());\n}\n\n/**\n * Check if a value is a valid OpenTelemetry hrtime tuple.\n *\n * An hrtime tuple is an Array of exactly two numbers:\n * [seconds, nanoseconds]\n *\n * @param {*} value – anything to test\n * @returns {boolean} true if `value` is a [number, number] array of length 2\n *\n * @example\n * isHrTime([ 1, 500 ]); // true\n * isHrTime([ 0, 1e9 ]); // true\n * isHrTime([ '1', 500 ]); // false\n * isHrTime({ 0: 1, 1: 500 }); // false\n */\nfunction isHrTime(value) {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number'\n );\n}\n\n/**\n * Methods for handling hrtime. OpenTelemetry uses the [seconds, nanoseconds]\n * format for hrtime in the `ReadableSpan` interface.\n *\n * @example\n * import hrtime from '@tracing/hrtime.js';\n *\n * hrtime.fromMillis(1000);\n * hrtime.toMillis([0, 1000]);\n * hrtime.add([0, 0], [0, 1000]);\n * hrtime.now();\n * hrtime.isHrTime([0, 1000]);\n */\nexport default { fromMillis, toMillis, toNanos, add, now, isHrTime };\n","import hrtime from './hrtime.js';\n\n/**\n * SpanExporter is responsible for exporting ReadableSpan objects\n * and transforming them into the OTLP-compatible format.\n */\nexport class SpanExporter {\n constructor(api, options = {}) {\n this.api = api;\n this.options = options;\n }\n\n /**\n * Export spans to the span export queue\n *\n * @param {Array} spans - Array of ReadableSpan objects to export\n * @param {Function} _resultCallback - Optional callback (not used)\n */\n export(spans, _resultCallback) {\n spanExportQueue.push(...spans);\n }\n\n /**\n * Transforms an array of ReadableSpan objects into the OTLP format payload\n * compatible with the Rollbar API. This follows the OpenTelemetry protocol\n * specification for traces.\n *\n * @returns {Object} OTLP format payload for API transmission\n */\n toPayload() {\n const spans = spanExportQueue.slice();\n spanExportQueue.length = 0;\n\n if (!spans || !spans.length) {\n return { resourceSpans: [] };\n }\n\n const resource = (spans[0] && spans[0].resource) || {};\n\n const scopeMap = new Map();\n\n for (const span of spans) {\n const scopeKey = span.instrumentationScope\n ? `${span.instrumentationScope.name}:${span.instrumentationScope.version}`\n : 'default:1.0.0';\n\n if (!scopeMap.has(scopeKey)) {\n scopeMap.set(scopeKey, {\n scope: span.instrumentationScope || {\n name: 'default',\n version: '1.0.0',\n attributes: [],\n },\n spans: [],\n });\n }\n\n scopeMap.get(scopeKey).spans.push(this._transformSpan(span));\n }\n\n return {\n resourceSpans: [\n {\n resource: this._transformResource(resource),\n scopeSpans: Array.from(scopeMap.values()).map((scopeData) => ({\n scope: this._transformInstrumentationScope(scopeData.scope),\n spans: scopeData.spans,\n })),\n },\n ],\n };\n }\n\n /**\n * Sends the given payload to the Rollbar API.\n *\n * @param {String} payload - Serialized OTLP format payload\n * @param {Object} headers - Optional request headers\n * @returns {Promise} Promise that resolves when the request completes\n */\n post(payload, headers = {}) {\n return this.api.postSpans(payload, headers);\n }\n\n /**\n * Transforms a ReadableSpan into the OTLP Span format\n *\n * @private\n * @param {Object} span - ReadableSpan object to transform\n * @returns {Object} OTLP Span format\n */\n _transformSpan(span) {\n const transformAttributes = (attributes) => {\n return Object.entries(attributes || {}).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n };\n\n const transformEvents = (events) => {\n return (events || []).map((event) => ({\n timeUnixNano: hrtime.toNanos(event.time),\n name: event.name,\n attributes: transformAttributes(event.attributes),\n }));\n };\n\n return {\n traceId: span.spanContext.traceId,\n spanId: span.spanContext.spanId,\n parentSpanId: span.parentSpanId || '',\n name: span.name,\n kind: span.kind || 1, // INTERNAL by default\n startTimeUnixNano: hrtime.toNanos(span.startTime),\n endTimeUnixNano: hrtime.toNanos(span.endTime),\n attributes: transformAttributes(span.attributes),\n events: transformEvents(span.events),\n };\n }\n\n /**\n * Transforms a resource object into OTLP Resource format\n *\n * @private\n * @param {Object} resource - Resource information\n * @returns {Object} OTLP Resource format\n */\n _transformResource(resource) {\n const attributes = resource.attributes || {};\n const keyValues = Object.entries(attributes).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n\n return {\n attributes: keyValues,\n };\n }\n\n /**\n * Transforms an instrumentation scope into OTLP InstrumentationScope format\n *\n * @private\n * @param {Object} scope - Instrumentation scope information\n * @returns {Object} OTLP InstrumentationScope format\n */\n _transformInstrumentationScope(scope) {\n return {\n name: scope.name || '',\n version: scope.version || '',\n attributes: (scope.attributes || []).map((attr) => ({\n key: attr.key,\n value: this._transformAnyValue(attr.value),\n })),\n };\n }\n\n /**\n * Transforms a JavaScript value into an OTLP AnyValue\n *\n * @private\n * @param {any} value - Value to transform\n * @returns {Object} OTLP AnyValue format\n */\n _transformAnyValue(value) {\n if (value === null || value === undefined) {\n return { stringValue: '' };\n }\n\n const type = typeof value;\n\n if (type === 'string') {\n return { stringValue: value };\n } else if (type === 'number') {\n if (Number.isInteger(value)) {\n return { intValue: value.toString() };\n } else {\n return { doubleValue: value };\n }\n } else if (type === 'boolean') {\n return { boolValue: value };\n } else if (Array.isArray(value)) {\n return {\n arrayValue: {\n values: value.map((v) => this._transformAnyValue(v)),\n },\n };\n } else if (type === 'object') {\n return {\n kvlistValue: {\n values: Object.entries(value).map(([k, v]) => ({\n key: k,\n value: this._transformAnyValue(v),\n })),\n },\n };\n }\n\n return { stringValue: String(value) };\n }\n}\n\nexport const spanExportQueue = [];\n","import logger from '../logger.js';\n\nexport class SpanProcessor {\n constructor(exporter, options = {}) {\n this.exporter = exporter;\n this.options = options;\n this.pendingSpans = new Map();\n this.transforms = [this.userTransform.bind(this)];\n }\n\n addTransform(transformFn) {\n this.transforms.unshift(transformFn);\n }\n\n userTransform(span) {\n if (this.options.transformSpan) {\n this.options.transformSpan({ span: span });\n }\n }\n\n applyTransforms(span) {\n for (const transform of this.transforms) {\n try {\n transform(span);\n } catch (e) {\n logger.error('Error running span transform callback', e);\n }\n }\n }\n\n onStart(span, _parentContext) {\n this.pendingSpans.set(span.span.spanContext.spanId, span);\n }\n\n onEnd(span) {\n this.applyTransforms(span.span);\n this.exporter.export([span.export()]);\n this.pendingSpans.delete(span.span.spanContext.spanId);\n }\n}\n","import hrtime from './hrtime.js';\n\nexport class Span {\n constructor(options) {\n this.usePerformance = options.usePerformance;\n this.initReadableSpan(options);\n\n this.spanProcessor = options.spanProcessor;\n this.spanProcessor.onStart(this, options.context);\n\n if (options.attributes) {\n this.setAttributes(options.attributes);\n }\n return this;\n }\n\n initReadableSpan(options) {\n this.span = {\n name: options.name,\n kind: options.kind,\n spanContext: options.spanContext,\n parentSpanId: options.parentSpanId,\n startTime: options.startTime || hrtime.now(options.usePerformance),\n endTime: [0, 0],\n status: { code: 0, message: '' },\n attributes: { 'session.id': options.session?.id },\n links: [],\n events: [],\n duration: 0,\n ended: false,\n resource: options.resource,\n instrumentationScope: options.scope,\n droppedAttributesCount: 0,\n droppedEventsCount: 0,\n droppedLinksCount: 0,\n };\n }\n\n spanContext() {\n return this.span.spanContext;\n }\n\n get spanId() {\n return this.span.spanContext.spanId;\n }\n\n get traceId() {\n return this.span.spanContext.traceId;\n }\n\n setAttribute(key, value) {\n if (value == null || this.span.ended) return this;\n if (key.length === 0) return this;\n\n this.span.attributes[key] = value;\n return this;\n }\n\n setAttributes(attributes) {\n for (const [k, v] of Object.entries(attributes)) {\n this.setAttribute(k, v);\n }\n return this;\n }\n\n addEvent(name, attributes = {}, time) {\n if (this.span.ended) return this;\n\n this.span.events.push({\n name,\n attributes,\n time: time || hrtime.now(),\n droppedAttributesCount: 0,\n });\n\n return this;\n }\n\n isRecording() {\n return this.span.ended === false;\n }\n\n end(attributes, time) {\n if (attributes) this.setAttributes(attributes);\n this.span.endTime = time || hrtime.now(this.usePerformance);\n this.span.ended = true;\n this.spanProcessor.onEnd(this);\n }\n\n export() {\n return this.span;\n }\n}\n","import { Span } from './span.js';\nimport id from './id.js';\n\nexport class Tracer {\n constructor(tracing, spanProcessor) {\n this.spanProcessor = spanProcessor;\n this.tracing = tracing;\n }\n\n startSpan(\n name,\n options = {},\n context = this.tracing.contextManager.active(),\n ) {\n const parentSpan = this.tracing.getSpan(context);\n const parentSpanContext = parentSpan?.spanContext();\n const spanId = id.gen(8);\n let traceId;\n let traceFlags = 0;\n let traceState = null;\n let parentSpanId;\n if (parentSpanContext) {\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n parentSpanId = parentSpanContext.spanId;\n } else {\n traceId = id.gen(16);\n }\n\n const kind = 0;\n const spanContext = { traceId, spanId, traceFlags, traceState };\n const resource = {\n attributes: {\n ...(this.tracing.resource?.attributes || {}),\n ...(options.resource?.attributes || {}),\n },\n };\n\n const span = new Span({\n resource: resource,\n scope: this.tracing.scope,\n session: this.tracing.session?.session,\n context,\n spanContext,\n name,\n kind,\n parentSpanId,\n spanProcessor: this.spanProcessor,\n startTime: options.startTime,\n usePerformance: options.usePerformance,\n });\n return span;\n }\n}\n","import { ContextManager, createContextKey } from './contextManager.js';\nimport { Session } from './session.js';\nimport { SpanExporter } from './exporter.js';\nimport { SpanProcessor } from './spanProcessor.js';\nimport { Tracer } from './tracer.js';\nimport id from './id.js';\n\nconst SPAN_KEY = createContextKey('Rollbar Context Key SPAN');\n\nexport default class Tracing {\n constructor(gWindow, api, options) {\n this.api = api;\n this.options = options;\n this.window = gWindow;\n\n if (this.window.sessionStorage) {\n this.session = new Session(this, options);\n }\n this.createTracer();\n }\n\n configure(options) {\n // Options merge happens before configure is called, so we can just replace.\n this.options = options;\n }\n\n initSession() {\n if (this.session) {\n this.session.init();\n }\n }\n\n get sessionId() {\n if (this.session) {\n return this.session.session.id;\n }\n return null;\n }\n\n get resource() {\n return {\n attributes: {\n ...(this.options.resource || {}),\n 'rollbar.environment':\n this.options.payload?.environment ?? this.options.environment,\n },\n };\n }\n\n get scope() {\n return {\n name: 'rollbar-browser-js',\n version: this.options.version,\n };\n }\n\n idGen(bytes = 16) {\n return id.gen(bytes);\n }\n\n createTracer() {\n this.contextManager = new ContextManager();\n this.exporter = new SpanExporter(this.api, this.options);\n this.spanProcessor = new SpanProcessor(this.exporter, this.options.tracing);\n this.tracer = new Tracer(this, this.spanProcessor);\n }\n\n getTracer() {\n return this.tracer;\n }\n\n addSpanTransform(transformFn) {\n this.spanProcessor.addTransform(transformFn);\n }\n\n getSpan(context = this.contextManager.active()) {\n return context.getValue(SPAN_KEY);\n }\n\n setSpan(context = this.contextManager.active(), span) {\n return context.setValue(SPAN_KEY, span);\n }\n\n startSpan(name, options = {}, context = this.contextManager.active()) {\n return this.tracer.startSpan(name, options, context);\n }\n\n with(context, fn, thisArg, ...args) {\n return this.contextManager.with(context, fn, thisArg, ...args);\n }\n\n withSpan(name, options, fn, thisArg) {\n const span = this.startSpan(name, options);\n return this.with(\n this.setSpan(this.contextManager.active(), span),\n fn,\n thisArg,\n span,\n );\n }\n}\n","import Rollbar from './core.js';\nimport Telemeter from '../telemetry.js';\nimport Instrumenter from './telemetry.js';\nimport wrapGlobals from './wrapGlobals.js';\nimport scrub from '../scrub.js';\nimport truncation from '../truncation.js';\nimport Tracing from '../tracing/tracing.js';\n\nRollbar.setComponents({\n telemeter: Telemeter,\n instrumenter: Instrumenter,\n wrapGlobals: wrapGlobals,\n scrub: scrub,\n truncation: truncation,\n tracing: Tracing,\n});\n\nexport default Rollbar;\n","import rollbar from '../rollbar.js';\n\nvar options = (typeof window !== 'undefined') && window._rollbarConfig;\nvar alias = options && options.globalAlias || 'Rollbar';\nvar shimRunning = (typeof window !== 'undefined') && window[alias] && typeof window[alias].shimId === 'function' && window[alias].shimId() !== undefined;\n\nif ((typeof window !== 'undefined') && !window._rollbarStartTime) {\n window._rollbarStartTime = (new Date()).getTime();\n}\n\nif (!shimRunning && options) {\n var Rollbar = new rollbar(options);\n window[alias] = Rollbar;\n} else if (typeof window !== 'undefined') {\n window.rollbar = rollbar;\n window._rollbarDidLoad = true;\n} else if (typeof self !== 'undefined') {\n self.rollbar = rollbar;\n self._rollbarDidLoad = true;\n}\n\nexport default rollbar;\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","hasOwn","toStr","toString","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","constructor","merge","i","src","copy","clone","name","result","create","current","length","arguments","isType","x","t","typeName","_typeof","Error","match","toLowerCase","isFunction","f","isObject","type","isFiniteNumber","n","Number","isFinite","isError","e","LEVELS","debug","info","warning","error","critical","sanitizeUrl","url","baseUrlParts","str","parseUriOptions","m","parser","strictMode","exec","uri","l","q","replace","$0","$1","$2","parseUri","anchor","source","query","strict","loose","formatUrl","u","protocol","port","hostname","path","stringify","backup","JSON","jsonError","backupError","jsonParse","s","parse","makeUnhandledStackInfo","message","lineno","colno","mode","backupMessage","errorParser","location","line","column","func","guessFunctionName","context","gatherContext","href","document","useragent","window","navigator","userAgent","String","stack","wrapCallback","logger","err","resp","nonCircularClone","seen","newSeen","includes","slice","push","createItem","args","notifier","requestKeys","lambdaContext","custom","callback","request","arg","extraArgs","argTypes","typ","DOMException","j","len","undefined","d","item","timestamp","now","diagnostic","uuid","c","r","Math","random","floor","data","level","skipFrames","setCustomItemKeys","_originalArgs","original_arg_types","TELEMETRY_TYPES","TELEMETRY_LEVELS","arrayIncludes","arr","val","k","addItemAttributes","itemData","attributes","_step","_iterator","_createForOfIteratorHelper","done","a","keys","split","set","setPrototypeOf","temp","replacement","Date","handleOptions","input","payload","options","hostWhiteList","hostSafeList","log","hostBlackList","hostBlockList","updateDeprecatedOptions","overwriteScrubFields","scrubFields","concat","RateLimiter","this","startTime","_","counter","perMinCounter","platform","platformOptions","configureGlobal","checkRate","limit","ignoreRateLimit","shouldSendValue","shouldSend","globalRateLimit","limitPerMin","perMinute","msg","environment","body","extra","maxItems","itemsPerMinute","language","version","framework","rateLimitPayload","globalSettings","elapsedTime","globalRateLimitPerMin","setPlatformOptions","Queue","rateLimiter","api","replay","_classCallCheck","predicates","pendingItems","pendingRequests","retryQueue","retryHandle","waitCallback","waitIntervalID","_this$api","configure","oldOptions","predicate","idx","indexOf","splice","originalError","originalItem","_this","predicateResult","_applyPredicates","stop","removePendingItem","_maybeLog","transmit","replayId","capture","_makeApiRequest","headers","_dequeuePendingRequest","sendOrDiscardReplay","_this$replay","discard","_this2","_maybeCallWait","clearInterval","setInterval","p","_this3","rateLimitResponse","postItem","_maybeRetry","shouldRetry","retryInterval","RETRIABLE_ERRORS","code","maxRetries","retries","_retryApiRequest","_this4","retryObject","shift","verbose","Notifier","queue","transforms","addTransform","transform","enabled","addPendingItem","_applyTransforms","addItem","bind","transformIndex","transformsLength","cb","Rollbar","telemeter","tracing","tracer","validateTracer","_configuredOptions","setStackTraceLimit","lastError","lastErrorHash","stackTraceLimit","scope","active","global","payloadData","_defaultLogLevel","_log","warn","wait","captureEvent","metadata","captureDomContentLoaded","ts","captureLoad","buildJsonPayload","sendJsonPayload","jsonPayload","postJsonPayload","defaultLevel","ignoreDuplicateErrors","_sameAsLastError","_addTracingAttributes","_addTracingInfo","_captureRollbarItem","telemetryEvents","copyEvents","_this$tracing","_this$tracing2","span","getSpan","sessionId","spanId","traceId","addEvent","logLevel","_isUncaught","itemHash","generateItemHash","spanContext","toSpanId","toTraceId","validateSpan","setTag","opentracingSpanId","opentracingTraceId","opentracing_span_id","opentracing_trace_id","buildPayload","contextResult","substr","getTransportFromOptions","defaults","search","timeout","transport","gWindow","self","defaultTransport","fetch","XMLHttpRequest","detectTransport","proxy","endpoint","opts","pathname","transportOptions","method","transportAPI","host","_regeneratorRuntime","iterator","asyncIterator","define","configurable","writable","wrap","Generator","Context","makeInvokeMethod","tryCatch","h","y","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","mark","__proto__","awrap","async","Promise","reverse","pop","prev","charAt","rval","handle","complete","finish","catch","delegateYield","asyncGeneratorStep","defaultOptions","OTLPDefaultOptions","Api","urllib","truncation","accessToken","_getTransport","OTLPTransportOptions","_getOTLPTransport","helpers","_options$tracing","_objectSpread","_postPromise","_ref","reject","post","setTimeout","postSpans","_ref2","_callee","_args","_context","apply","_next","_throw","_x","stringifyResult","truncate","levels","disable","_len","Array","_key","_len2","_key2","_len3","_key3","_len4","_key4","_len5","_key5","init","unshift","console","controller","timeoutId","AbortController","abort","signal","response","clearTimeout","respHeaders","endsWith","json","_newRetriableError","requestFactory","xmlhttp","factories","ActiveXObject","numFactories","_createXMLHTTPObject","onreadystatechange","readyState","parseResponse","responseText","status","_isSuccess","getResponseHeader","_isNormalFailure","ex","exc","open","setRequestHeader","_i","_Object$entries","entries","_Object$entries$_i","_slicedToArray","send","e1","XDomainRequest","substring","xdomainrequest","onprogress","ontimeout","onerror","onload","e2","Transport","params","access_token","paramsArray","join","sort","qs","_makeZoneRequest","rootZone","Zone","root","run","_makeRequest","RollbarProxy","_msg","_proxyRequest","makeFetchRequest","makeXhrRequest","last","auth","hash","parseInt","pathParts","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","stacktrace","lineRE","lines","file","raw","applySlice","parseOpera9","filtered","filter","map","argsRaw","tokens","locationParts","extractLocation","functionCall","functionName","function","col","parseOpera11","parseOpera10","parseOpera","parseV8OrIeString","parseV8OrIE","parseFFOrSafariString","parseFFOrSafari","allowEmpty","urlLike","parts","isArray","sanitizedLine","functionNameRegex","matches","stackframesLiteToStackframes","liteStackframes","liteStackframe","fileName","lineNumber","columnNumber","ERR_CLASS_REGEXP","RegExp","Frame","stackFrame","_stackFrame","Stack","exception","skip","parserStack","parse$1","parseErrorStack","getStack","_mostSpecificErrorName","rawStack","rawException","constructorName","guessErrorClass","errMsg","errClassMatch","errClass","nested","cause","traceChain","handleDomException","handleItemWithError","stackInfo","_savedStackTrace","addErrorContext","chain","errors","contextAdded","rollbarContext","error_context","description","ensureItemHasSomethingToSay","addBaseInfo","server","addBody","traces","traceChainLength","trace","buildTrace","trace_chain","addBodyTraceChain","stackFromItem","guess","className","errorClass","addBodyMessage","addBodyTrace","_unhandledStackInfo","class","frame","pre","contextLength","mid","frames","filename","sendFrameUrl","itemToPayload","addPayloadOptions","payloadOptions","addTelemetryData","addMessageWithError","tracePath","userTransform","newItem","promisedItem","addConfigToPayload","sendConfig","addFunctionOption","addConfiguredOptions","configuredOptions","configured_options","addDiagnosticKeys","client","is_anonymous","is_uncaught","raw_error","constructor_name","failed","checkIgnore","settings","checkLevel","levelVal","reportLevel","matchFrames","list","block","listLength","frameLength","test","urlIsOnAList","safeOrBlock","tracesLength","listName","messageIsIgnored","ignoredMessages","rIgnoredMessage","messages","messagesFromItem","uncaughtErrorLevel","_toConsumableArray","_instance","components","Telemeter","Instrumenter","instrumenter","wrapGlobals","scrub","Tracing","Replay","API","_gWindow","initSession","replayOptions","autoStart","recorder","start","Client","gDocument","isChrome","chrome","runtime","anonymousErrorsPending","rollbar","requestInfo","query_string","remoteString","captureIp","user_ip","nav","scr","screen","runtime_ms","_rollbarStartTime","round","javascript","browser","cookie_enabled","cookieEnabled","width","height","cur","plugins","navPlugins","sharedTransforms","scrubFn","scrubPaths","addTransformsToNotifier","addPredicate","sharedPredicates","isUncaught","onSendCallback","addPredicatesToQueue","setupUnhandledCapture","instrument","setSessionAttributesFromOptions","_createClass","_this$instrumenter","_createItem","triggerReplay","unhandledExceptionsInitialized","captureUncaught","handleUncaughtExceptions","handler","shim","oldOnError","_rollbarOldOnError","handleAnonymousErrors","fn","old","_rollbarWrappedError","_rollbarContext","ret","handleUncaughtException","_rollbarWindowOnError","globals","wrapGlobalEventHandlers","unhandledRejectionsInitialized","captureUnhandledRejections","handleUnhandledRejections","_rollbarURH","belongsToShim","removeEventListener","rejectionHandler","evt","reason","promise","detail","handleUnhandledRejection","addEventListener","inspectAnonymousErrors","prepareStackTrace","_stack","_isAnonymous","reasonResult","_before","ctxFn","_isWrap","_rollbar_wrapped","_wrappedSource","event","user","session","setUser","attrs","_this$tracing3","setAttributes","_options$payload","_options$client","_options$payload2","_options$payload3","_options$payload4","person","setSessionUser","code_version","codeVersion","setSessionAttributes","maybeCallback","_getFirstFunction","_Rollbar","_defineProperty","callInstance","_len6","_key6","_len7","_key7","_len8","_key8","_len9","_key9","_len10","_key10","_len11","_key11","_len12","_key12","_len13","_key13","_len14","_key14","browserDefaults","includeItemsInTelemetry","triggerDefaults","samplingRatio","preDuration","postDuration","triggers","logErrors","logEmits","inlineStylesheet","inlineImages","collectFonts","maskInputOptions","password","email","tel","text","color","date","month","number","range","time","week","maskAllInputs","blockClass","maskTextClass","ignoreClass","slimDOMOptions","script","comment","headFavicon","headWhitespace","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","MAX_EVENTS","fromMillis","millis","trunc","maxTelemetryEvents","maxQueueSize","max","min","telemetrySpan","startSpan","newMaxEvents","deleteCount","events","filterTelemetry","otelAttributes","_objectWithoutProperties","_excluded","end","rollbarUUID","getLevel","timestamp_ms","_this$telemetrySpan","_this$telemetrySpan2","_this$telemetrySpan3","subtype","requestData","_metadata$response","_this$telemetrySpan4","levelFromStatus","status_code","endTimeNano","end_time_ms","statusCode","request_headers","start_time_ms","element","checked","_this$telemetrySpan5","isSynthetic","endTimeUnixNano","_getRepeatedEvent","_updateRepeatedEvent","_ref3","_this$telemetrySpan6","lastEvent","_lastEvent","target","duration","textZoomRatio","count","rate","_ref4","_this$telemetrySpan7","_ref5","_this$telemetrySpan8","_ref6","_this$telemetrySpan9","dropEffect","effectAllowed","kinds","mediaTypes","from","to","_this$telemetrySpan10","getTime","_ref7","_this$telemetrySpan11","captureError","captureLog","manual","normalizeName","FetchHeaders","append","header","getOwnPropertyNames","normalizeValue","oldValue","has","thisArg","items","iteratorFor","Headers","replacements","orig","seenIndex","isObj","mapped","same","scrubPath","paramRes","pat","_getScrubFieldRegexs","queryRes","_getScrubQueryParamRegexs","redactQueryParam","dummy0","paramPart","traverse","scrubber","tmpV","valScrubber","paramScrubber","elementString","elem","nextStr","totalLength","out","descriptionToString","separator","MAX_LENGTH","elementArrayToString","nextDescription","describeElement","tagName","parentNode","treeToArray","desc","id","classes","attr","getAttribute","network","networkResponseHeaders","networkResponseBody","networkRequestHeaders","networkRequestBody","networkErrorOnHttp5xx","networkErrorOnHttp4xx","networkErrorOnHttp0","dom","navigation","connectivity","contentSecurityPolicy","errorOnContentSecurityPolicy","restore","b","defaultValueScrubber","_step2","patterns","_iterator2","field","nameFromDescription","_patterns","_window","_document","removeListeners","autoInstrument","configureScrubbing","eventRemovers","contentsecuritypolicy","_location","_lastHref","_options$scrubTelemet","_options$replay","_options$replay2","_options$replay3","_options$replay4","_options$replay5","_options$replay6","_options$replay7","_options$replay8","_options$replay9","scrubTelemetryInputs","telemetryScrubber","maskInputFn","scrubClasses","Boolean","scrubSelectors","blockSelector","ignoreSelector","maskTextSelector","oldSettings","deinstrumentNetwork","instrumentNetwork","deinstrumentConsole","instrumentConsole","deinstrumentDom","instrumentDom","deinstrumentNavigation","instrumentNavigation","deinstrumentConnectivity","instrumentConnectivity","deinstrumentContentSecurityPolicy","instrumentContentSecurityPolicy","wrapProp","xhr","xhrp","isUrlObject","_isUrlObject","__rollbar_xhr","request_content_type","onreadystatechangeHandler","__rollbar_event","captureNetwork","response_content_type","headersConfig","allHeaders","getAllResponseHeaders","_step3","_iterator3","trim","_step4","_iterator4","isJsonContentType","scrubJson","addOtelNetworkResponse","errorOnHttpStatus","trackHttpErrors","reqHeaders","fetchHeaders","telemetryEvent","contentType","endTimeMs","inHeaders","outHeaders","currentHeader","_step5","_iterator5","_this$_window","_i2","_methods","wrapConsole","origConsole","Function","addListener","handleEvent","click","handleClick","dragdrop","handleDrag","focus","handleFocus","form","handleForm","handleInput","resize","handleResize","contentLoaded","handleContentLoaded","URL","_evt$target","captureClick","isTrusted","domUtil","_evt$target2","captureFocus","_evt$target3","innerWidth","captureResize","innerHeight","_evt$dataTransfer","_evt$dataTransfer2","_step6","_iterator6","dataTransfer","files","kind","captureDragDrop","inputType","mask","selectors","cls","classList","contains","sel","_evt$target4","_evt$target5","_evt$target6","_evt$target7","scrubInputValue","_evt$target8","captureInput","app","history","pushState","handleUrlChange","parsedHref","urlparser","parsedTo","parsedFrom","captureNavigation","handleConnectivity","captureConnectivityChange","cspEvent","blockedURI","violatedDirective","effectiveDirective","sourceFile","originalPolicy","handleCspError","cspHandler","handleCspEvent","section","types","_step7","_iterator7","_loop","passive","_extendListenerPrototype","oldAddEventListener","_rollbarOldAdd","addFn","bubble","oldRemoveEventListener","_rollbarOldRemove","removeFn","jsonBackup","selectFrames","truncateFrames","maybeTruncateValue","truncateStrings","truncator","truncateTraceData","traceData","minBody","needsTruncation","maxSize","string","charCodeAt","strategy","results","strategies","parentContext","_currentContext","Map","delete","ROOT_CONTEXT","ContextManager","currentContext","previousContext","enterContext","exitContext","gen","randomBytes","Uint8Array","crypto","getRandomValues","byte","padStart","SESSION_KEY","Session","_attributes","getSession","createSession","initSessionAttributes","serializedSession","sessionStorage","getItem","_unused","createdAt","setSession","sessionString","setItem","_unused2","username","_navigator$userAgentD","_navigator$userAgentD2","_navigator$userAgentD3","userAgentData","brands","mobile","add","toMillis","hrtime","toNanos","performance","timeOrigin","isHrTime","SpanExporter","spans","_resultCallback","spanExportQueue","resourceSpans","resource","scopeMap","scopeKey","instrumentationScope","_transformSpan","_transformResource","scopeSpans","scopeData","_transformInstrumentationScope","transformAttributes","_transformAnyValue","parentSpanId","startTimeUnixNano","endTime","timeUnixNano","_this5","stringValue","isInteger","intValue","doubleValue","boolValue","arrayValue","kvlistValue","SpanProcessor","exporter","pendingSpans","transformFn","transformSpan","_parentContext","applyTransforms","export","Span","usePerformance","initReadableSpan","spanProcessor","onStart","_options$session","links","ended","droppedAttributesCount","droppedEventsCount","droppedLinksCount","setAttribute","onEnd","Tracer","_this$tracing$resourc","_options$resource","_this$tracing$session","contextManager","parentSpan","parentSpanContext","traceState","traceFlags","SPAN_KEY","for","createTracer","_this$options$payload","_this$options$payload2","bytes","getValue","setValue","_this$contextManager","with","setSpan","setComponents","_rollbarConfig","alias","globalAlias","shimRunning","shimId","_rollbarDidLoad"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"rollbar.named-amd.min.js","mappings":";8DACA,IAAIA,EAAsB,CCA1BA,EAAwB,SAASC,EAASC,GACzC,IAAI,IAAIC,KAAOD,EACXF,EAAoBI,EAAEF,EAAYC,KAASH,EAAoBI,EAAEH,EAASE,IAC5EE,OAAOC,eAAeL,EAASE,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,IAG3E,ECPAH,EAAwB,SAASS,EAAKC,GAAQ,OAAOL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,EAAO,ECCtGV,EAAwB,SAASC,GACX,oBAAXa,QAA0BA,OAAOC,aAC1CV,OAAOC,eAAeL,EAASa,OAAOC,YAAa,CAAEC,MAAO,WAE7DX,OAAOC,eAAeL,EAAS,aAAc,CAAEe,OAAO,GACvD,G,gxCCYA,SAASC,EAAOC,EAAGC,GACjB,OAAOA,IAAMC,EAASF,EACxB,CAKA,SAASE,EAASF,GAChB,IAAIG,EAAIC,EAAUJ,GAClB,MAAa,WAATG,EACKA,EAEJH,EAGDA,aAAaK,MACR,QAEF,CAAC,EAAEC,SACPX,KAAKK,GACLO,MAAM,iBAAiB,GACvBC,cARM,MASX,CAOA,SAASC,EAAWC,GAClB,OAAOX,EAAOW,EAAG,WACnB,CAsBA,SAASC,EAASb,GAChB,OACW,MAATA,IAAkC,UAAhBM,EAAON,IAAqC,mBAATA,EAEzD,CAGA,SAASc,EAAOrB,EAAKC,GACnB,OAAW,MAAPD,IAGAJ,OAAOyB,OACFzB,OAAOyB,OAAOrB,EAAKC,GAErBL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,GACnD,CAiBA,SAASqB,EAAeC,GACtB,OAAOC,OAAOC,SAASF,EACzB,CAoBA,SAASG,EAAQC,GAEf,OAAOnB,EAAOmB,EAAG,UAAYnB,EAAOmB,EAAG,YACzC,CAoBA,SAASC,IACP,MAAO,UACT,C,4CAgBA,IAAIC,EAAS,CACXC,MAAO,EACPC,KAAM,EACNC,QAAS,EACTC,MAAO,EACPC,SAAU,GAkBZ,SAASC,EAAYC,GACnB,IAAIC,EA4CN,SAAkBC,GAChB,IAAK9B,EAAO8B,EAAK,UACf,OAOF,IAJA,IAAI3C,EAAI4C,EACJC,EAAI7C,EAAE8C,OAAO9C,EAAE+C,WAAa,SAAW,SAASC,KAAKL,GACrDM,EAAM,CAAC,EAEFC,EAAI,EAAGC,EAAInD,EAAED,IAAIqD,OAAQF,EAAIC,IAAKD,EACzCD,EAAIjD,EAAED,IAAImD,IAAML,EAAEK,IAAM,GAU1B,OAPAD,EAAIjD,EAAEqD,EAAEpC,MAAQ,CAAC,EACjBgC,EAAIjD,EAAED,IAAI,KAAKuD,QAAQtD,EAAEqD,EAAEP,OAAQ,SAAUS,EAAIC,EAAIC,GAC/CD,IACFP,EAAIjD,EAAEqD,EAAEpC,MAAMuC,GAAMC,EAExB,GAEOR,CACT,CAjEqBS,CAASjB,GAC5B,OAAKC,GAKuB,KAAxBA,EAAaiB,SACfjB,EAAakB,OAASlB,EAAakB,OAAON,QAAQ,IAAK,KAGzDb,EAAMC,EAAakB,OAAON,QAAQ,IAAMZ,EAAamB,MAAO,KARnD,WAUX,CAEA,IAAIjB,EAAkB,CACpBG,YAAY,EACZhD,IAAK,CACH,SACA,WACA,YACA,WACA,OACA,WACA,OACA,OACA,WACA,OACA,YACA,OACA,QACA,UAEFsD,EAAG,CACDpC,KAAM,WACN6B,OAAQ,6BAEVA,OAAQ,CACNgB,OACE,uIACFC,MACE,+LAyDN,SAASC,EAAUC,EAAGC,GAWpB,KAVAA,EAAWA,GAAYD,EAAEC,WACRD,EAAEE,OACF,KAAXF,EAAEE,KACJD,EAAW,QACS,MAAXD,EAAEE,OACXD,EAAW,WAGfA,EAAWA,GAAY,UAElBD,EAAEG,SACL,OAAO,KAET,IAAIC,EAASH,EAAW,KAAOD,EAAEG,SAOjC,OANIH,EAAEE,OACJE,EAASA,EAAS,IAAMJ,EAAEE,MAExBF,EAAEK,OACJD,GAAkBJ,EAAEK,MAEfD,CACT,CAEA,SAASE,EAAUlE,EAAKmE,GACtB,IAAI5D,EAAO0B,EACX,IACE1B,EAAQ6D,KAAKF,UAAUlE,EACzB,CAAE,MAAOqE,GACP,GAAIF,GAAUjD,EAAWiD,GACvB,IACE5D,EAAQ4D,EAAOnE,EACjB,CAAE,MAAOsE,GACPrC,EAAQqC,CACV,MAEArC,EAAQoC,CAEZ,CACA,MAAO,CAAEpC,MAAOA,EAAO1B,MAAOA,EAChC,CAgCA,SAASgE,EAAUC,GACjB,IAAIjE,EAAO0B,EACX,IACE1B,EAAQ6D,KAAKK,MAAMD,EACrB,CAAE,MAAO7C,GACPM,EAAQN,CACV,CACA,MAAO,CAAEM,MAAAA,EAAO1B,MAAAA,EAClB,CAEA,SAASmE,EACPC,EACAvC,EACAwC,EACAC,EACA5C,EACA6C,EACAC,EACAC,GAEA,IAAIC,EAAW,CACb7C,IAAKA,GAAO,GACZ8C,KAAMN,EACNO,OAAQN,GAEVI,EAASG,KAAOJ,EAAYK,kBAAkBJ,EAAS7C,IAAK6C,EAASC,MACrED,EAASK,QAAUN,EAAYO,cAAcN,EAAS7C,IAAK6C,EAASC,MACpE,IAAIM,EACkB,oBAAbC,UACPA,UACAA,SAASR,UACTQ,SAASR,SAASO,KAChBE,EACgB,oBAAXC,QACPA,QACAA,OAAOC,WACPD,OAAOC,UAAUC,UACnB,MAAO,CACLf,KAAMA,EACNH,QAAS1C,EAAQ6D,OAAO7D,GAAS0C,GAAWI,EAC5C3C,IAAKoD,EACLO,MAAO,CAACd,GACRS,UAAWA,EAEf,CAEA,SAASM,EAAaC,EAAQ9E,GAC5B,OAAO,SAAU+E,EAAKC,GACpB,IACEhF,EAAE+E,EAAKC,EACT,CAAE,MAAOxE,GACPsE,EAAOhE,MAAMN,EACf,CACF,CACF,CAEA,SAASyE,EAAiBpG,GA+BxB,OA5BA,SAASqG,EAAMrG,EAAKsG,GAClB,IAAI/F,EACFK,EACA2F,EACAvC,EAAS,CAAC,EAEZ,IACE,IAAKpD,KAAQZ,GACXO,EAAQP,EAAIY,MAEEJ,EAAOD,EAAO,WAAaC,EAAOD,EAAO,UACjD+F,EAAKE,SAASjG,GAChByD,EAAOpD,GAAQ,+BAAiCD,EAASJ,KAEzDgG,EAAUD,EAAKG,SACPC,KAAKnG,GACbyD,EAAOpD,GAAQyF,EAAM9F,EAAOgG,IAKhCvC,EAAOpD,GAAQL,CAEnB,CAAE,MAAOoB,GACPqC,EAAS,+BAAiCrC,EAAEgD,OAC9C,CACA,OAAOX,CACT,CACOqC,CAAMrG,EA9BF,CAACA,GA+Bd,CAEA,SAAS2G,EAAWC,EAAMX,EAAQY,EAAUC,EAAaC,GAOvD,IANA,IAAIpC,EAASuB,EAAKc,EAAQC,EAAUC,EAChCC,EACAC,EAAY,GAEZC,EAAW,GAENxE,EAAI,EAAGC,EAAI8D,EAAK7D,OAAQF,EAAIC,IAAKD,EAAG,CAG3C,IAAIyE,EAAM3G,EAFVwG,EAAMP,EAAK/D,IAIX,OADAwE,EAASX,KAAKY,GACNA,GACN,IAAK,YACH,MACF,IAAK,SACC3C,EACFyC,EAAUV,KAAKS,GAEfxC,EAAUwC,EAEZ,MACF,IAAK,WACHF,EAAWjB,EAAaC,EAAQkB,GAChC,MACF,IAAK,OACHC,EAAUV,KAAKS,GACf,MACF,IAAK,QACL,IAAK,eACL,IAAK,YACCjB,EACFkB,EAAUV,KAAKS,GAEfjB,EAAMiB,EAER,MACF,IAAK,SACL,IAAK,QACH,GACEA,aAAerG,OACU,oBAAjByG,cAAgCJ,aAAeI,aACvD,CACIrB,EACFkB,EAAUV,KAAKS,GAEfjB,EAAMiB,EAER,KACF,CACA,GAAIL,GAAuB,WAARQ,IAAqBJ,EAAS,CAC/C,IAAK,IAAIM,EAAI,EAAGC,EAAMX,EAAY/D,OAAQyE,EAAIC,IAAOD,EACnD,QAA4BE,IAAxBP,EAAIL,EAAYU,IAAmB,CACrCN,EAAUC,EACV,KACF,CAEF,GAAID,EACF,KAEJ,CACIF,EACFI,EAAUV,KAAKS,GAEfH,EAASG,EAEX,MACF,QACE,GACEA,aAAerG,OACU,oBAAjByG,cAAgCJ,aAAeI,aACvD,CACIrB,EACFkB,EAAUV,KAAKS,GAEfjB,EAAMiB,EAER,KACF,CACAC,EAAUV,KAAKS,GAErB,CAGIH,IAAQA,EAASZ,EAAiBY,IAElCI,EAAUrE,OAAS,IAChBiE,IAAQA,EAASZ,EAAiB,CAAC,IACxCY,EAAOI,UAAYhB,EAAiBgB,IAGtC,IAlYIO,EAkYAC,EAAO,CACTjD,QAASA,EACTuB,IAAKA,EACLc,OAAQA,EACRa,UAAWC,IACXb,SAAUA,EACVJ,SAAUA,EACVkB,WA9Fe,CAAC,EA+FhBC,MA1YEL,EAAIG,IACG,uCAAuC7E,QAChD,QACA,SAAUgF,GACR,IAAIC,GAAMP,EAAoB,GAAhBQ,KAAKC,UAAiB,GAAM,EAE1C,OADAT,EAAIQ,KAAKE,MAAMV,EAAI,KACL,MAANM,EAAYC,EAAS,EAAJA,EAAW,GAAKnH,SAAS,GACpD,KAkZF,OAZA6G,EAAKU,KAAOV,EAAKU,MAAQ,CAAC,EAe5B,SAA2BV,EAAMZ,GAC3BA,QAA2BU,IAAjBV,EAAOuB,QACnBX,EAAKW,MAAQvB,EAAOuB,aACbvB,EAAOuB,OAEZvB,QAAgCU,IAAtBV,EAAOwB,aACnBZ,EAAKY,WAAaxB,EAAOwB,kBAClBxB,EAAOwB,WAElB,CAtBEC,CAAkBb,EAAMZ,GAEpBF,GAAeI,IACjBU,EAAKV,QAAUA,GAEbH,IACFa,EAAKb,cAAgBA,GAEvBa,EAAKc,cAAgB9B,EACrBgB,EAAKG,WAAWY,mBAAqBtB,EAC9BO,CACT,CAkCA,IAAIgB,EAAkB,CACpB,MACA,UACA,MACA,aACA,QACA,UAEEC,EAAmB,CAAC,WAAY,QAAS,UAAW,OAAQ,SAEhE,SAASC,EAAcC,EAAKC,GAAK,IACRC,EADQC,EAAAC,EACXJ,GAAG,IAAvB,IAAAG,EAAA1E,MAAAyE,EAAAC,EAAA3H,KAAA6H,MAAyB,CACvB,GADcH,EAAA1I,QACAyI,EACZ,OAAO,CAEX,CAAC,OAAA9C,GAAAgD,EAAAvH,EAAAuE,EAAA,SAAAgD,EAAA/H,GAAA,CAED,OAAO,CACT,CAkCA,SAASkI,EAAkBC,EAAUC,GACnCD,EAASC,WAAaD,EAASC,YAAc,GAAG,IACtBC,EADsBC,EAAAN,EAChCI,GAAU,IAA1B,IAAAE,EAAAjF,MAAAgF,EAAAC,EAAAlI,KAAA6H,MAA4B,KAAjBM,EAACF,EAAAjJ,WACMmH,IAAZgC,EAAEnJ,OAGN+I,EAASC,WAAW7C,KAAKgD,EAC3B,CAAC,OAAAxD,GAAAuD,EAAA9H,EAAAuE,EAAA,SAAAuD,EAAAtI,GAAA,CACH,CAUA,SAASpB,EAAIC,EAAKiE,GAChB,GAAKjE,EAAL,CAGA,IAAI2J,EAAO1F,EAAK2F,MAAM,KAClB5F,EAAShE,EACb,IACE,IAAK,IAAI6C,EAAI,EAAG4E,EAAMkC,EAAK5G,OAAQF,EAAI4E,IAAO5E,EAC5CmB,EAASA,EAAO2F,EAAK9G,GAEzB,CAAE,MAAOgH,GACP7F,OAAS0D,CACX,CACA,OAAO1D,CAVP,CAWF,CAEA,SAAS8F,EAAI9J,EAAKiE,EAAM1D,GACtB,GAAKP,EAAL,CAKAJ,OAAOmK,eAAe/J,EAAK,MAE3B,IAAI2J,EAAO1F,EAAK2F,MAAM,KAClBnC,EAAMkC,EAAK5G,OACf,KAAI0E,EAAM,GAGV,GAAY,IAARA,EAIJ,IAGE,IAFA,IAAIuC,EAAOhK,EAAI2J,EAAK,KAAO,CAAC,EACxBM,EAAcD,EACTnH,EAAI,EAAGA,EAAI4E,EAAM,IAAK5E,EAC7BmH,EAAKL,EAAK9G,IAAMmH,EAAKL,EAAK9G,KAAO,CAAC,EAClCmH,EAAOA,EAAKL,EAAK9G,IAEnBmH,EAAKL,EAAKlC,EAAM,IAAMlH,EACtBP,EAAI2J,EAAK,IAAMM,CACjB,CAAE,MAAOJ,GACP,MACF,MAdE7J,EAAI2J,EAAK,IAAMpJ,CAXjB,CA0BF,CA8BA,SAASuH,IACP,OAAIoC,KAAKpC,IACAoC,KAAKpC,MAEPtG,OAAO,IAAI0I,KACpB,CAsCA,SAASC,EAAcC,EAASC,EAAOC,EAASrE,GAC9C,IAAIjC,EAASuG,EAAMH,EAASC,EAAOC,GAEnC,OADAtG,EAUF,SAAiCwG,EAASvE,GACpCuE,EAAQC,gBAAkBD,EAAQE,eACpCF,EAAQE,aAAeF,EAAQC,cAC/BD,EAAQC,mBAAgB/C,EACxBzB,GAAUA,EAAO0E,IAAI,mDAEnBH,EAAQI,gBAAkBJ,EAAQK,gBACpCL,EAAQK,cAAgBL,EAAQI,cAChCJ,EAAQI,mBAAgBlD,EACxBzB,GAAUA,EAAO0E,IAAI,oDAEvB,OAAOH,CACT,CAtBWM,CAAwB9G,EAAQiC,IACpCoE,GAASA,EAAMU,sBAGhBV,EAAMW,cACRhH,EAAOgH,aAAeZ,EAAQY,aAAe,IAAIC,OAAOZ,EAAMW,cAHvDhH,CAMX,CAgBA,SAASuG,IACP,SAASW,EAAclL,GACrB,IAAKA,GAA+C,oBAAxCJ,OAAOM,UAAUa,SAASX,KAAKJ,GACzC,OAAO,EAGT,IAYIN,EAZAyL,EAAoB9J,EAAOrB,EAAK,eAChCoL,EACFpL,EAAIqL,aACJrL,EAAIqL,YAAYnL,WAChBmB,EAAOrB,EAAIqL,YAAYnL,UAAW,iBAEpC,GAAIF,EAAIqL,cAAgBF,IAAsBC,EAC5C,OAAO,EAMT,IAAK1L,KAAOM,GAIZ,YAAsB,IAARN,GAAuB2B,EAAOrB,EAAKN,EACnD,CAEA,IAAImD,EACFyI,EACAC,EACAlF,EACAzF,EACAoD,EAASpE,OAAO4L,OAAO,MACvBpB,EAAU,KACVrH,EAAS0I,UAAU1I,OAErB,IAAKF,EAAI,EAAGA,EAAIE,EAAQF,IAEtB,GAAIuH,OADJA,EAAUqB,UAAU5I,IAKpB,IAAKjC,KAAQwJ,EACXkB,EAAMtH,EAAOpD,GAEToD,KADJuH,EAAOnB,EAAQxJ,MAET2K,GAAQL,EAAcK,IACxBlF,EAAQiF,GAAOJ,EAAcI,GAAOA,EAAM,CAAC,EAC3CtH,EAAOpD,GAAQ2J,EAAMlE,EAAOkF,SACH,IAATA,IAChBvH,EAAOpD,GAAQ2K,IAKvB,OAAOvH,CACT,CC/yBA,MAlDA,SAAkBhE,EAAKoF,EAAMkB,GAC3B,IAAIoF,EAAGC,EAAG9I,EAIN+I,EAHAC,EAAQC,EAAS9L,EAAK,UACtB+L,EAAUD,EAAS9L,EAAK,SACxB2J,EAAO,GAMX,GAFArD,EAAOA,GAAQ,CAAEtG,IAAK,GAAIgM,OAAQ,IAE9BH,EAAO,CAGT,GAFAD,EAAYtF,EAAKtG,IAAIiM,QAAQjM,GAEzB6L,IAAwB,IAAfD,EAEX,OAAOtF,EAAK0F,OAAOJ,IAActF,EAAKtG,IAAI4L,GAG5CtF,EAAKtG,IAAI0G,KAAK1G,GACd4L,EAAYtF,EAAKtG,IAAI+C,OAAS,CAChC,CAEA,GAAI8I,EACF,IAAKH,KAAK1L,EACJ8L,EAAS9L,EAAK0L,IAChB/B,EAAKjD,KAAKgF,QAGT,GAAIK,EACT,IAAKlJ,EAAI,EAAGA,EAAI7C,EAAI+C,SAAUF,EAC5B8G,EAAKjD,KAAK7D,GAId,IAAImB,EAAS6H,EAAQ,CAAC,EAAI,GACtBK,GAAO,EACX,IAAKrJ,EAAI,EAAGA,EAAI8G,EAAK5G,SAAUF,EAE7B8I,EAAI3L,EADJ0L,EAAI/B,EAAK9G,IAETmB,EAAO0H,GAAKtG,EAAKsG,EAAGC,EAAGrF,GACvB4F,EAAOA,GAAQlI,EAAO0H,KAAO1L,EAAI0L,GAOnC,OAJIG,IAAUK,IACZ5F,EAAK0F,OAAOJ,GAAa5H,GAGnBkI,EAAgBlM,EAATgE,CACjB,E,qoDCGA,SAASmI,EAAUnM,EAAKiE,GACtB,IAAI0F,EAAO1F,EAAK2F,MAAM,KAClBwC,EAAOzC,EAAK5G,OAAS,EACzB,IAAI,IACuCsJ,EADvCC,EAAAnD,EACyBQ,EAAK4C,WAAS,IAAzC,IAAAD,EAAA9H,MAAA6H,EAAAC,EAAA/K,KAAA6H,MAA2C,KAAAoD,EAAAC,EAAAJ,EAAA9L,MAAA,GAA/BmM,EAAKF,EAAA,GAAE9M,EAAG8M,EAAA,GAChBE,EAAQN,EACVpM,EAAMA,EAAIN,GAEVM,EAAIN,GAAOoM,GAEf,CAAC,OAAA5F,GAAAoG,EAAA3K,EAAAuE,EAAA,SAAAoG,EAAAnL,GAAA,CACH,CAAE,MAAO0I,GACP,CAEJ,CAoBA,MApFA,SAAevB,EAAM0C,EAAa2B,GAGhC,GAFA3B,EAAcA,GAAe,GAEzB2B,EAAY,KACeC,EADfC,EAAA1D,EACKwD,GAAU,IAA7B,IAAAE,EAAArI,MAAAoI,EAAAC,EAAAtL,KAAA6H,MAA+B,CAC7B+C,EAAU7D,EADGsE,EAAArM,MAEf,CAAC,OAAA2F,GAAA2G,EAAAlL,EAAAuE,EAAA,SAAA2G,EAAA1L,GAAA,CACH,CAEA,IAAI2L,EAyDN,SAA8B9B,GAC5B,IAC+B+B,EAD3BC,EAAM,GAAGC,EAAA9D,EACO6B,GAAW,IAA/B,IAAAiC,EAAAzI,MAAAuI,EAAAE,EAAA1L,KAAA6H,MAAiC,KAC3B8D,EAAM,iBADIH,EAAAxM,MACuB,8BACrCyM,EAAItG,KAAK,IAAIyG,OAAOD,EAAK,KAC3B,CAAC,OAAAhH,GAAA+G,EAAAtL,EAAAuE,EAAA,SAAA+G,EAAA9L,GAAA,CACD,OAAO6L,CACT,CAhEiBI,CAAqBpC,GAChCqC,EAiEN,SAAmCrC,GACjC,IAC+BsC,EAD3BN,EAAM,GAAGO,EAAApE,EACO6B,GAAW,IAA/B,IAAAuC,EAAA/I,MAAA8I,EAAAC,EAAAhM,KAAA6H,MAAiC,KAC3B8D,EAAM,gBADII,EAAA/M,MACsB,6BACpCyM,EAAItG,KAAK,IAAIyG,OAAO,IAAMD,EAAM,eAAgB,OAClD,CAAC,OAAAhH,GAAAqH,EAAA5L,EAAAuE,EAAA,SAAAqH,EAAApM,GAAA,CACD,OAAO6L,CACT,CAxEiBQ,CAA0BxC,GAEzC,SAASyC,EAAiBC,EAAQC,GAChC,OAAOA,EFqIF,UEpIP,CAiCA,OAAOC,EAAStF,EAZhB,SAASuF,EAASnC,EAAGC,EAAGrF,GACtB,IAAIwH,EAXN,SAAqBpC,EAAGC,GAAG,IACGnC,EADHC,EAAAN,EACL2D,GAAQ,IAA5B,IAAArD,EAAAjF,MAAAgF,EAAAC,EAAAlI,KAAA6H,MACE,GADcI,EAAAjJ,MACJwN,KAAKrC,GAAI,CACjBC,EAAIG,IACJ,KACF,CACD,OAAA5F,GAAAuD,EAAA9H,EAAAuE,EAAA,SAAAuD,EAAAtI,GAAA,CACD,OAAOwK,CACT,CAGaqC,CAAYtC,EAAGC,GAC1B,OAAImC,IAASnC,EACPG,EAASH,EAAG,WAAaG,EAASH,EAAG,SAChCiC,EAASjC,EAAGkC,EAAUvH,GAvBnC,SAAuBqF,GACrB,GAAIG,EAASH,EAAG,UAAW,KACG1C,EADHC,EAAAC,EACLkE,GAAQ,IAA5B,IAAAnE,EAAA1E,MAAAyE,EAAAC,EAAA3H,KAAA6H,MAA8B,KAAnB6E,EAAKhF,EAAA1I,MACdoL,EAAIA,EAAE1I,QAAQgL,EAAOR,EACvB,CAAC,OAAAvH,GAAAgD,EAAAvH,EAAAuE,EAAA,SAAAgD,EAAA/H,GAAA,CACH,CACA,OAAOwK,CACT,CAkBWuC,CAAcJ,GAEdA,CAEX,EAGF,E,i5CCjDA,IAAMK,EAAa,IAGnB,SAASC,EAAWC,GAClB,MAAO,CAAClG,KAAKmG,MAAMD,EAAS,KAAOlG,KAAKoG,MAAOF,EAAS,IAAQ,KAClE,CAAC,IAEKG,EAAS,WAQZ,O,EAPD,SAAAA,EAAYhE,EAASiE,GAAS,IAAAC,G,4FAAAC,CAAA,KAAAH,GAC5BI,KAAKC,MAAQ,GACbD,KAAKpE,QAAUsB,EAAQtB,GACvB,IAAIsE,EAAqBF,KAAKpE,QAAQsE,oBAAsBX,EAC5DS,KAAKG,aAAe5G,KAAK6G,IAAI,EAAG7G,KAAK8G,IAAIH,EAAoBX,IAC7DS,KAAKH,QAAUA,EACfG,KAAKM,cAA4B,QAAfR,EAAGE,KAAKH,eAAO,IAAAC,OAAA,EAAZA,EAAcS,UAAU,oBAAqB,CAAC,EACrE,E,EAAC,EAAAzP,IAAA,YAAAa,MAED,SAAUiK,GACR,IAAI4E,EAAaR,KAAKpE,QACtBoE,KAAKpE,QAAUsB,EAAQsD,EAAY5E,GACnC,IAAIsE,EAAqBF,KAAKpE,QAAQsE,oBAAsBX,EACxDkB,EAAelH,KAAK6G,IAAI,EAAG7G,KAAK8G,IAAIH,EAAoBX,IACxDmB,EAAc,EACdV,KAAKC,MAAM9L,OAASsM,IACtBC,EAAcV,KAAKC,MAAM9L,OAASsM,GAEpCT,KAAKG,aAAeM,EACpBT,KAAKC,MAAMU,OAAO,EAAGD,EACvB,GAAC,CAAA5P,IAAA,aAAAa,MAED,WACE,IAAIiP,EAASC,MAAMvP,UAAUuG,MAAMrG,KAAKwO,KAAKC,MAAO,GACpD,GAAI/C,EAAa8C,KAAKpE,QAAQkF,iBAC5B,IAEE,IADA,IAAI7M,EAAI2M,EAAOzM,OACRF,KACD+L,KAAKpE,QAAQkF,gBAAgBF,EAAO3M,KACtC2M,EAAOD,OAAO1M,EAAG,EAGvB,CAAE,MAAOgH,GACP+E,KAAKpE,QAAQkF,gBAAkB,IACjC,CAWF,OAJAF,GAHAA,EAASA,EAAOG,OAAO,SAAChO,GAAC,MAAgB,iBAAXA,EAAEiO,IAAuB,IAGvCC,IACd,SAAAC,GAAkCA,EAA/BC,eAAH,IAAuCC,E,6WAAKC,CAAAH,EAAAI,GAAA,OAAOF,CAAK,GAGnDR,CACT,GAAC,CAAA9P,IAAA,sBAAAa,MAED,WAAqC,IAAjBgJ,EAAUkC,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC5BmD,KAAKM,gBACPN,KAAKM,cAAciB,IAAI5G,GACvBqF,KAAKM,cAAgBN,KAAKH,QAAQU,UAAU,oBAAqB,CAAC,GAEtE,GAAC,CAAAzP,IAAA,UAAAa,MAED,SACEqP,EACAQ,EACA7H,EACA8H,GAGA,IAFAxI,EAAS4D,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,KACZsE,EAActE,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,KAEb9J,EAAI,CACN4G,MAAO+H,EAASV,EAAMrH,GACtBqH,KAAMA,EACNW,aAAc1I,GAAaiE,IAC3B0E,KAAMJ,EACN7M,OAAQ,UAEN8M,IACF1O,EAAEqG,KAAOqI,GAEPN,IACFpO,EAAEoO,eAAiBA,GAGrB,IACE,GACEjE,EAAa8C,KAAKpE,QAAQkF,kBAC1Bd,KAAKpE,QAAQkF,gBAAgB/N,GAE7B,OAAO,CAEX,CAAE,MAAO8O,GACP7B,KAAKpE,QAAQkF,gBAAkB,IACjC,CAGA,OADAd,KAAKlI,KAAK/E,GACHA,CACT,GAAC,CAAAjC,IAAA,eAAAa,MAED,SAAaqP,EAAMQ,EAAU7H,EAAO8H,GAClC,OAAOzB,KAAK8B,QAAQd,EAAMQ,EAAU7H,EAAO8H,EAC7C,GAAC,CAAA3Q,IAAA,eAAAa,MAED,SAAa2F,EAAKqC,EAAO8H,EAAaxI,GAAW,IAAA8I,EACzChM,EAAUuB,EAAIvB,SAAWmB,OAAOI,GAClCkK,EAAW,CAAEzL,QAAAA,GACbuB,EAAIH,QACNqK,EAASrK,MAAQG,EAAIH,OAEvB,IAAMgK,EAAiB,CACrBpL,QAAAA,EACA4D,MAAAA,EACAqH,KAAM,QACN5H,KAAMqI,GASR,OANkB,QAAlBM,EAAA/B,KAAKM,qBAAa,IAAAyB,GAAlBA,EAAoBC,SAClB,2BACAb,EACA3B,EAAWvG,IAGN+G,KAAK8B,QACV,QACAN,EACA7H,EACA8H,EACAxI,EACAkI,EAEJ,GAAC,CAAArQ,IAAA,aAAAa,MAED,SAAWoE,EAAS4D,EAAO8H,EAAaxI,GAAW,IAAAgJ,EAC3Cb,EAAQK,EACV,2BACA,oBACEN,EAAce,EAAA,CAClBnM,QAAAA,EACA4D,MAAAA,GACI8H,EAAc,CAAET,KAAM,UAAW5H,KAAMqI,GAAgB,CAAC,GAK9D,OAFkB,QAAlBQ,EAAAjC,KAAKM,qBAAa,IAAA2B,GAAlBA,EAAoBD,SAASZ,EAAOD,EAAgB3B,EAAWvG,IAExD+G,KAAK8B,QACV,MACA,CAAE/L,QAAAA,GACF4D,EACA8H,EACAxI,EACAkI,EAEJ,GAAC,CAAArQ,IAAA,iBAAAa,MAED,SAAe6P,EAAUW,EAASV,EAAaW,GAAa,IAAAC,EAAAC,EAAAC,EAC1DJ,EAAUA,GAAW,MACrBX,EAASW,QAAUX,EAASW,SAAWA,EACnCC,IACFZ,EAASlJ,QAAU8J,GAErB,IAAMzI,EAAQqG,KAAKwC,gBAAgBhB,EAASiB,aACtCC,EAA4C,KAA7BlB,EAASmB,aAAe,GACvCxB,EAAiB,CACrBH,KAAMQ,EAASW,QACfS,OAAQpB,EAASoB,OACjBpP,IAAKgO,EAAShO,IACdqP,WAAYrB,EAASiB,YACrB,kBAAmBjN,KAAKF,UAAUkM,EAASsB,iBAAmB,CAAC,GAC/D,mBAAoBtN,KAAKF,WAA2B,QAAjB+M,EAAAb,EAASuB,gBAAQ,IAAAV,OAAA,EAAjBA,EAAmBW,UAAW,CAAC,GAClE,wBAAyBN,EAAYvQ,YAEjC8Q,EAAczB,EAASlJ,QACvB4K,EAAgC,QAApBZ,EAAGd,EAASuB,gBAAQ,IAAAT,OAAA,EAAjBA,EAAmBV,KAcxC,OAbIqB,IACF9B,EAAe,gBAAkB3L,KAAKF,UAAU2N,IAE9CC,IACF/B,EAAe,iBAAmB3L,KAAKF,UAAU4N,IAGjC,QAAlBX,EAAAvC,KAAKM,qBAAa,IAAAiC,GAAlBA,EAAoBP,SAClB,wBACAb,EACA3B,EAAWgC,EAAS2B,gBAGfnD,KAAK8B,QACV,UACAN,EACA7H,EACA8H,EACAD,EAAS2B,cACThC,EAEJ,GAAC,CAAArQ,IAAA,kBAAAa,MAED,SAAgBkR,GACd,OAAIA,GAAc,KAAOA,EAAa,IAC7B,OAEU,IAAfA,GAAoBA,GAAc,IAC7B,QAEF,MACT,GAAC,CAAA/R,IAAA,aAAAa,MAED,SAAWwQ,EAASiB,EAASzR,EAAO0R,EAAS5B,GAC3C,IAAID,EAAW,CACbW,QAASA,EACTiB,QAASA,GAQX,YANctK,IAAVnH,IACF6P,EAAS7P,MAAQA,QAEHmH,IAAZuK,IACF7B,EAAS6B,QAAUA,GAEdrD,KAAK8B,QAAQ,MAAON,EAAU,OAAQC,EAC/C,GAAC,CAAA3Q,IAAA,eAAAa,MAED,SAAY2R,GAAmD,IAAAC,EAAhDvC,EAAIsC,EAAJtC,KAAMwC,EAAWF,EAAXE,YAAaJ,EAAOE,EAAPF,QAASzR,EAAK2R,EAAL3R,MAAOsH,EAASqK,EAATrK,UAC1CjH,EAAO,sBACPwP,EAAW,CACfR,KAAMhP,EACNmQ,QAASnB,EACToC,QAAAA,EACAzR,MAAAA,GAEIwP,EAAiB,CACrBH,KAAAA,EACAwC,YAAAA,EACAJ,QAAAA,EACAzR,MAAAA,EACA8R,gBAAiBjE,EAAWvG,IAExBmI,EAAQpB,KAAK0D,kBAAkB1R,EAAMmP,GAC3C,OAAIC,EACKpB,KAAK2D,qBAAqBvC,EAAOD,EAAgBlI,IAGxC,QAAlBsK,EAAAvD,KAAKM,qBAAa,IAAAiD,GAAlBA,EAAoBvB,SAAShQ,EAAMmP,EAAgB3B,EAAWvG,IAEvD+G,KAAK8B,QACV,MACAN,EACA,OACA,KACAvI,EACAkI,GAEJ,GAAC,CAAArQ,IAAA,eAAAa,MAED,SAAYiS,GAA4C,IAAAC,EAAzC7C,EAAI4C,EAAJ5C,KAAMwC,EAAWI,EAAXJ,YAAaJ,EAAOQ,EAAPR,QAASnK,EAAS2K,EAAT3K,UACnCjH,EAAO,sBACPwP,EAAW,CACfR,KAAMhP,EACNmQ,QAASnB,EACToC,QAAAA,GAEIjC,EAAiB,CACrBH,KAAAA,EACAwC,YAAAA,EACAJ,QAAAA,EACAK,gBAAiBjE,EAAWvG,IAExBmI,EAAQpB,KAAK0D,kBAAkB1R,EAAMmP,GAC3C,OAAIC,EACKpB,KAAK2D,qBAAqBvC,EAAOD,EAAgBlI,IAGxC,QAAlB4K,EAAA7D,KAAKM,qBAAa,IAAAuD,GAAlBA,EAAoB7B,SAAShQ,EAAMmP,EAAgB3B,EAAWvG,IAEvD+G,KAAK8B,QACV,MACAN,EACA,OACA,KACAvI,EACAkI,GAEJ,GAAC,CAAArQ,IAAA,oBAAAa,MAED,SAAkBK,EAAM2I,GACtB,IAAMmJ,EAAY9D,KAAK+D,WAAW/D,KAAKC,OAEvC,GACE6D,GACAA,EAAUlC,KAAKZ,OAAShP,GACxB8R,EAAU3C,eAAe6C,SAAWrJ,EAAWqJ,OAE/C,OAAOF,CAEX,GAAC,CAAAhT,IAAA,uBAAAa,MAED,SAAqByP,EAAOzG,EAAY1B,GACtC,IAAMgL,EAAW1K,KAAK6G,IAAInH,EAAYmI,EAAMO,aAAc,GAC1DP,EAAMQ,KAAKjQ,MAAQgJ,EAAWhJ,MAC9ByP,EAAMD,eAAexP,MAAQgJ,EAAWhJ,MACxCyP,EAAMD,eAAe+C,OAASvJ,EAAWuJ,OACzC9C,EAAMD,eAAegD,MAAQxJ,EAAWwJ,MACxC/C,EAAMD,eAAeiD,cAAgBzJ,EAAWyJ,cAChDhD,EAAMD,eAAgC,gBAAI3B,EAAWvG,GACrDmI,EAAMD,eAAiC,iBAAI3B,EAAWyE,GACtD7C,EAAMD,eAAekD,OAASjD,EAAMD,eAAekD,OAAS,GAAK,EACjEjD,EAAMD,eAAemD,KAAOlD,EAAMD,eAAekD,OAASJ,EAAW,IACvE,GAAC,CAAAnT,IAAA,aAAAa,MAED,SAAW4S,GACT,OAAOA,EAAKpQ,OAAS,EAAIoQ,EAAKA,EAAKpQ,OAAS,GAAK,IACnD,GAAC,CAAArD,IAAA,eAAAa,MAED,SAAY6S,GAA4C,IAAAC,EAAzCzD,EAAIwD,EAAJxD,KAAMwC,EAAWgB,EAAXhB,YAAaJ,EAAOoB,EAAPpB,QAASnK,EAASuL,EAATvL,UACnCjH,EAAO,sBACPwP,EAAW,CACfR,KAAMhP,EACNmQ,QAASnB,EACToC,QAAAA,GAEIjC,EAAiB,CACrBH,KAAAA,EACAwC,YAAAA,EACAJ,QAAAA,GAKF,OAFkB,QAAlBqB,EAAAzE,KAAKM,qBAAa,IAAAmE,GAAlBA,EAAoBzC,SAAShQ,EAAMmP,EAAgB3B,EAAWvG,IAEvD+G,KAAK8B,QACV,MACAN,EACA,OACA,KACAvI,EACAkI,EAEJ,GAAC,CAAArQ,IAAA,gBAAAa,MAED,SAAa+S,GAOV,IAAAC,EAND3D,EAAI0D,EAAJ1D,KACAwC,EAAWkB,EAAXlB,YACAW,EAAKO,EAALP,MACAD,EAAMQ,EAANR,OACAE,EAAaM,EAAbN,cACAnL,EAASyL,EAATzL,UAEMjH,EAAO,uBACPwP,EAAW,CACfR,KAAMhP,EACNmQ,QAASnB,EACTmD,MAAAA,EACAD,OAAAA,EACAE,cAAAA,GAEIjD,EAAiB,CACrBH,KAAAA,EACAwC,YAAAA,EACAW,MAAAA,EACAD,OAAAA,EACAE,cAAAA,GAGIhD,EAAQpB,KAAK0D,kBAAkB1R,EAAMmP,GAC3C,OAAIC,EACKpB,KAAK2D,qBAAqBvC,EAAOD,EAAgBlI,IAGxC,QAAlB0L,EAAA3E,KAAKM,qBAAa,IAAAqE,GAAlBA,EAAoB3C,SAAShQ,EAAMmP,EAAgB3B,EAAWvG,IAEvD+G,KAAK8B,QACV,MACAN,EACA,OACA,KACAvI,EACAkI,GAEJ,GAAC,CAAArQ,IAAA,kBAAAa,MAED,SAAeiT,GASZ,IAAAC,EARD7D,EAAI4D,EAAJ5D,KACAwC,EAAWoB,EAAXpB,YACAJ,EAAOwB,EAAPxB,QACA0B,EAAUF,EAAVE,WACAC,EAAaH,EAAbG,cACAC,EAAKJ,EAALI,MACAC,EAAUL,EAAVK,WACAhM,EAAS2L,EAAT3L,UAEMjH,EAAO,yBACTwP,EAAW,CACbR,KAAMhP,EACNmQ,QAASnB,EACTwC,YAAAA,GAGErC,EAAiB,CACnBH,KAAAA,EACAwC,YAAAA,GAkCF,MA/Ba,cAATxC,IACFQ,EAAQU,EAAAA,EAAA,GAAQV,GAAQ,IAAE4B,QAAAA,EAAS0B,WAAAA,EAAYC,cAAAA,IAC/C5D,EAAce,EAAAA,EAAA,GACTf,GAAc,IACjBiC,QAAAA,EACA0B,WAAAA,EACAC,cAAAA,KAIS,SAAT/D,IACFQ,EAAQU,EAAAA,EAAA,GACHV,GAAQ,IACX4B,QAAAA,EACA0B,WAAAA,EACAC,cAAAA,EACAC,MAAAA,EACAC,WAAAA,IAEF9D,EAAce,EAAAA,EAAA,GACTf,GAAc,IACjBiC,QAAAA,EACA0B,WAAAA,EACAC,cAAAA,EACAC,MAAAA,EACAC,WAAAA,KAIc,QAAlBJ,EAAA7E,KAAKM,qBAAa,IAAAuE,GAAlBA,EAAoB7C,SAAShQ,EAAMmP,EAAgB3B,EAAWvG,IAEvD+G,KAAK8B,QACV,MACAN,EACA,OACA,KACAvI,EACAkI,EAEJ,GAAC,CAAArQ,IAAA,oBAAAa,MAED,SAAkBuT,EAAMC,EAAI1D,EAAaxI,GAAW,IAAAmM,EAOlD,OANkB,QAAlBA,EAAApF,KAAKM,qBAAa,IAAA8E,GAAlBA,EAAoBpD,SAClB,2BACA,CAAE,oBAAqBkD,EAAM,WAAYC,GACzC3F,EAAWvG,IAGN+G,KAAK8B,QACV,aACA,CAAEoD,KAAAA,EAAMC,GAAAA,GACR,OACA1D,EACAxI,EAEJ,GAAC,CAAAnI,IAAA,0BAAAa,MAED,SAAwB0T,GACtB,OAAOrF,KAAK8B,QACV,aACA,CAAEK,QAAS,oBACX,YACArJ,EACAuM,GAAMA,EAAGC,UAMb,GAAC,CAAAxU,IAAA,cAAAa,MAED,SAAY0T,GACV,OAAOrF,KAAK8B,QACV,aACA,CAAEK,QAAS,QACX,YACArJ,EACAuM,GAAMA,EAAGC,UAMb,GAAC,CAAAxU,IAAA,4BAAAa,MAED,SAAyB4T,GAAmC,IAAAC,EAAhCxE,EAAIuE,EAAJvE,KAAMwC,EAAW+B,EAAX/B,YAAavK,EAASsM,EAATtM,UACvCjH,EAAO,6BACPwP,EAAW,CACfR,KAAMhP,EACNmQ,QAASnB,GAELG,EAAiB,CACrBH,KAAAA,EACAwC,YAAAA,GAKF,OAFkB,QAAlBgC,EAAAxF,KAAKM,qBAAa,IAAAkF,GAAlBA,EAAoBxD,SAAShQ,EAAMmP,EAAgB3B,EAAWvG,IAEvD+G,KAAK8B,QACV,eACAN,EACA,OACA,KACAvI,EACAkI,EAEJ,GAEA,CAAArQ,IAAA,sBAAAa,MACA,SAAoBqH,GAClB,GAAKgH,KAAKpE,QAAQ6J,wBAGlB,OAAIzM,EAAK1B,IACA0I,KAAK0F,aAAa1M,EAAK1B,IAAK0B,EAAKW,MAAOX,EAAKI,KAAMJ,EAAKC,WAE7DD,EAAKjD,QACAiK,KAAK2F,WACV3M,EAAKjD,QACLiD,EAAKW,MACLX,EAAKI,KACLJ,EAAKC,WAGLD,EAAKZ,OACA4H,KAAK8B,QACV,MACA9I,EAAKZ,OACLY,EAAKW,MACLX,EAAKI,KACLJ,EAAKC,gBANT,CASF,GAAC,CAAAnI,IAAA,OAAAa,MAED,SAAKoB,GACHiN,KAAKC,MAAMnI,KAAK/E,GACZiN,KAAKC,MAAM9L,OAAS6L,KAAKG,cAC3BH,KAAKC,MAAM2F,OAEf,I,4FAAC,CArhBY,GAwhBf,SAASlE,EAASV,EAAMrH,GACtB,GAAIA,EACF,OAAOA,EAMT,MAJmB,CACjBtG,MAAO,QACPwS,OAAQ,QAEU7E,IAAS,MAC/B,CAEA,Q,wsBC5iBO,IAAM8E,GAAO,WAClB,SAAAA,EAAYC,I,4FAAehG,CAAA,KAAA+F,GACzB9F,KAAKgG,gBAAkBD,EAAgB,IAAIE,IAAIF,GAAiB,IAAIE,GACtE,CAAC,O,EAAAH,G,EAAA,EAAAhV,IAAA,WAAAa,MAED,SAASb,GACP,OAAOkP,KAAKgG,gBAAgB7U,IAAIL,EAClC,GAAC,CAAAA,IAAA,WAAAa,MAED,SAASb,EAAKa,GACZ,IAAM+E,EAAU,IAAIoP,EAAQ9F,KAAKgG,iBAEjC,OADAtP,EAAQsP,gBAAgB9K,IAAIpK,EAAKa,GAC1B+E,CACT,GAAC,CAAA5F,IAAA,cAAAa,MAED,SAAYb,GACV,IAAM4F,EAAU,IAAIoP,EAAQI,KAAKF,iBAEjC,OADAtP,EAAQsP,gBAAgBG,OAAOrV,GACxB4F,CACT,M,yFAAC,CAnBiB,GAsBP0P,GAAe,IAAIN,G,+sBCpBzB,IAAMO,GAAc,WAGxB,O,EAFD,SAAAA,K,4FAActG,CAAA,KAAAsG,GACZrG,KAAKsG,eAAiBF,EACxB,E,EAAC,EAAAtV,IAAA,SAAAa,MAED,WACE,OAAOqO,KAAKsG,cACd,GAAC,CAAAxV,IAAA,eAAAa,MAED,SAAa+E,GACX,IAAM6P,EAAkBvG,KAAKsG,eAE7B,OADAtG,KAAKsG,eAAiB5P,GAAW0P,GAC1BG,CACT,GAAC,CAAAzV,IAAA,cAAAa,MAED,SAAY+E,GAEV,OADAsJ,KAAKsG,eAAiB5P,EACfsJ,KAAKsG,cACd,GAAC,CAAAxV,IAAA,OAAAa,MAED,SAAK+E,EAAS8P,EAAIC,GAChB,IAAMF,EAAkBvG,KAAK0G,aAAahQ,GAC1C,IAAI,QAAAiQ,EAAA9J,UAAA1I,OAFwB6D,EAAI,IAAA6I,MAAA8F,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ5O,EAAI4O,EAAA,GAAA/J,UAAA+J,GAG9B,OAAOJ,EAAGhV,KAAIqV,MAAPL,EAAE,CAAMC,GAAOpK,OAAKrE,GAC7B,CAAE,QACAgI,KAAK8G,YAAYP,EACnB,CACF,I,8FAAC,CA3BwB,GCW3B,SAAS/G,GAAWC,GAClB,MAAO,CAAClG,KAAKmG,MAAMD,EAAS,KAAOlG,KAAKoG,MAAOF,EAAS,IAAQ,KAClE,CA8BA,SAASsH,GAAIjM,EAAGkM,GACd,MAAO,CAAClM,EAAE,GAAKkM,EAAE,GAAKzN,KAAKmG,OAAO5E,EAAE,GAAKkM,EAAE,IAAM,MAAOlM,EAAE,GAAKkM,EAAE,IAAM,IACzE,CAwDA,QAAiBxH,WAAAA,GAAYyH,SAhF7B,SAAkBC,GAChB,OAAmB,IAAZA,EAAO,GAAW3N,KAAKoG,MAAMuH,EAAO,GAAK,IAClD,EA8EuCC,QAtEvC,SAAiBD,GACf,OAAmB,IAAZA,EAAO,GAAWA,EAAO,EAClC,EAoEgDH,IAAAA,GAAK7N,IA/CrD,WACE,OADyB2D,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,IAAAA,UAAA,GAEhBkK,GACLvH,GAAW4H,YAAYC,YACvB7H,GAAW4H,YAAYlO,QAGpBsG,GAAWlE,KAAKpC,MACzB,EAuC0DoO,SAtB1D,SAAkB3V,GAChB,OACEkP,MAAM1D,QAAQxL,IACG,IAAjBA,EAAMwC,QACc,iBAAbxC,EAAM,IACO,iBAAbA,EAAM,EAEjB,G,skEClFO,IAAM4V,GAAY,WAMvB,O,EALA,SAAAA,EAAYC,GAAmB,IAAd5L,EAAOiB,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,CAAC,G,4FAACkD,CAAA,KAAAwH,GAC3BvH,KAAKwH,IAAMA,EACXxH,KAAKpE,QAAUA,CACjB,E,EAEA,EAAA9K,IAAA,SAAAa,MAMA,SAAO8V,EAAOC,GACZC,GAAgB7P,KAAI+O,MAApBc,GAAeC,GAASH,GAC1B,GAEA,CAAA3W,IAAA,YAAAa,MAOA,WAAY,IAAAkW,EAAA,KACJJ,EAAQE,GAAgB9P,QAG9B,GAFA8P,GAAgBxT,OAAS,GAEpBsT,IAAUA,EAAMtT,OACnB,MAAO,CAAE2T,cAAe,IAG1B,IAIwB9J,EAJlB+J,EAAYN,EAAM,IAAMA,EAAM,GAAGM,UAAa,CAAC,EAE/CC,EAAW,IAAI/B,IAAMhI,E,ioBAAA1D,CAERkN,GAAK,IAAxB,IAAAxJ,EAAArI,MAAAoI,EAAAC,EAAAtL,KAAA6H,MAA0B,KAAfyN,EAAIjK,EAAArM,MACPuW,EAAWD,EAAKE,qBAAoB,GAAA9L,OACnC4L,EAAKE,qBAAqBnW,KAAI,KAAAqK,OAAI4L,EAAKE,qBAAqBC,SAC/D,gBAECJ,EAASK,IAAIH,IAChBF,EAAS9M,IAAIgN,EAAU,CACrBI,MAAOL,EAAKE,sBAAwB,CAClCnW,KAAM,UACNoW,QAAS,QACTzN,WAAY,IAEd8M,MAAO,KAIXO,EAAS7W,IAAI+W,GAAUT,MAAM3P,KAAKkI,KAAKuI,eAAeN,GACxD,CAAC,OAAA3Q,GAAA2G,EAAAlL,EAAAuE,EAAA,SAAA2G,EAAA1L,GAAA,CAED,MAAO,CACLuV,cAAe,CACb,CACEC,SAAU/H,KAAKwI,mBAAmBT,GAClCU,WAAY5H,MAAMqE,KAAK8C,EAASU,UAAUzH,IAAI,SAAC0H,GAAS,MAAM,CAC5DL,MAAOT,EAAKe,+BAA+BD,EAAUL,OACrDb,MAAOkB,EAAUlB,MAClB,KAIT,GAEA,CAAA3W,IAAA,OAAAa,MAOA,SAAK+J,GAAuB,IAAdsH,EAAOnG,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,CAAC,EACvB,OAAOmD,KAAKwH,IAAIqB,UAAUnN,EAASsH,EACrC,GAEA,CAAAlS,IAAA,iBAAAa,MAOA,SAAesW,GAAM,IAQMrH,EARNkI,EAAA,KACbC,EAAsB,SAACpO,GAC3B,OAAO3J,OAAO2M,QAAQhD,GAAc,CAAC,GAAGsG,IAAI,SAAAC,GAAA,IAAAoC,EAAAzF,GAAAqD,EAAA,GAAEpQ,EAAGwS,EAAA,GAAE3R,EAAK2R,EAAA,SAAO,CAC7DxS,IAAAA,EACAa,MAAOmX,EAAKE,mBAAmBrX,GAChC,EACH,EAUA,MAAO,CACLsX,QAAShB,EAAKiB,YAAYD,QAC1BE,OAAQlB,EAAKiB,YAAYC,OACzBC,aAAcnB,EAAKmB,cAAgB,GACnCpX,KAAMiW,EAAKjW,KACXqX,KAAMpB,EAAKoB,MAAQ,EACnBC,kBAAmBpC,GAAOC,QAAQc,EAAKsB,WACvC9F,gBAAiByD,GAAOC,QAAQc,EAAKuB,SACrC7O,WAAYoO,EAAoBd,EAAKtN,YACrCiG,QAjBuBA,EAiBCqH,EAAKrH,QAhBrBA,GAAU,IAAIK,IAAI,SAACG,GAAK,MAAM,CACpCqI,aAAcvC,GAAOC,QAAQ/F,EAAMsI,MACnC1X,KAAMoP,EAAMpP,KACZ2I,WAAYoO,EAAoB3H,EAAMzG,YACvC,IAcL,GAEA,CAAA7J,IAAA,qBAAAa,MAOA,SAAmBoW,GAAU,IAAA4B,EAAA,KACrBhP,EAAaoN,EAASpN,YAAc,CAAC,EAM3C,MAAO,CACLA,WANgB3J,OAAO2M,QAAQhD,GAAYsG,IAAI,SAAA2C,GAAA,IAAAY,EAAA3G,GAAA+F,EAAA,GAAE9S,EAAG0T,EAAA,GAAE7S,EAAK6S,EAAA,SAAO,CAClE1T,IAAAA,EACAa,MAAOgY,EAAKX,mBAAmBrX,GAChC,GAKH,GAEA,CAAAb,IAAA,iCAAAa,MAOA,SAA+B2W,GAAO,IAAAsB,EAAA,KACpC,MAAO,CACL5X,KAAMsW,EAAMtW,MAAQ,GACpBoW,QAASE,EAAMF,SAAW,GAC1BzN,YAAa2N,EAAM3N,YAAc,IAAIsG,IAAI,SAAC4I,GAAI,MAAM,CAClD/Y,IAAK+Y,EAAK/Y,IACVa,MAAOiY,EAAKZ,mBAAmBa,EAAKlY,OACrC,GAEL,GAEA,CAAAb,IAAA,qBAAAa,MAOA,SAAmBA,GAAO,IAAAmY,EAAA,KACxB,GAAInY,QACF,MAAO,CAAEoY,YAAa,IAGxB,IAAM/I,EAAI/O,GAAUN,GAEpB,MAAa,WAATqP,EACK,CAAE+I,YAAapY,GACJ,WAATqP,EACLpO,OAAOoX,UAAUrY,GACZ,CAAEsY,SAAUtY,EAAMQ,YAElB,CAAE+X,YAAavY,GAEN,YAATqP,EACF,CAAEmJ,UAAWxY,GACXkP,MAAM1D,QAAQxL,GAChB,CACLyY,WAAY,CACV1B,OAAQ/W,EAAMsP,IAAI,SAAClE,GAAC,OAAK+M,EAAKd,mBAAmBjM,EAAE,KAGrC,WAATiE,EACF,CACLqJ,YAAa,CACX3B,OAAQ1X,OAAO2M,QAAQhM,GAAOsP,IAAI,SAAAyD,GAAA,IAAAE,EAAA/G,GAAA6G,EAAA,GAAE5H,EAAC8H,EAAA,GAAE7H,EAAC6H,EAAA,SAAO,CAC7C9T,IAAKgM,EACLnL,MAAOmY,EAAKd,mBAAmBjM,GAChC,KAKA,CAAEgN,YAAa7S,OAAOvF,GAC/B,I,8FAAC,CAjMsB,GAoMZgW,GAAkB,GCnL/B,QAAiB2C,IAjBjB,WAAyB,IACnBC,EAAc,IAAIC,WADN3N,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,IAMnB,OAJA4N,OAAOC,gBAAgBH,GACT1J,MAAMqE,KAAKqF,EAAa,SAACI,GAAI,OACzCA,EAAKxY,SAAS,IAAIyY,SAAS,EAAG,IAAI,GAClCC,KAAK,GAET,G,44CCXA,IAAMC,GAAc,iBAEPC,GAAO,WASjB,O,EAND,SAAAA,EAAYlL,EAASjE,I,4FAASmE,CAAA,KAAAgL,GAAAC,GAAA,2BAC5BhL,KAAKpE,QAAUA,EACfoE,KAAKH,QAAUA,EACfG,KAAKjJ,OAAS8I,EAAQ9I,OACtBiJ,KAAKiL,QAAU,KACfjL,KAAKkL,YAAc,CAAC,CACtB,E,EAAC,EAAApa,IAAA,OAAAa,MAED,WAAiB,IAAZwZ,EAAKtO,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,CAAC,EACZ,OAAImD,KAAKiL,UAGTjL,KAAKoL,cAAgBpL,KAAKqL,gBAE1BrL,KAAKsL,sBAAsBH,IAJlBnL,IAOX,GAAC,CAAAlP,IAAA,aAAAa,MAED,WACE,IACE,IAAM4Z,EAAoBvL,KAAKjJ,OAAOyU,eAAeC,QAAQX,IAE7D,IAAKS,EACH,OAAO,KAGTvL,KAAKiL,QAAUzV,KAAKK,MAAM0V,EAC5B,CAAE,MAAAG,GACA,OAAO,IACT,CACA,OAAO1L,IACT,GAAC,CAAAlP,IAAA,gBAAAa,MAED,WAME,OALAqO,KAAKiL,QAAU,CACbU,GAAIA,GAAGrB,MACPsB,UAAWtQ,KAAKpC,OAGX8G,KAAK6L,WAAW7L,KAAKiL,QAC9B,GAAC,CAAAna,IAAA,aAAAa,MAED,SAAWsZ,GACT,IAAMa,EAAgBtW,KAAKF,UAAU2V,GAErC,IACEjL,KAAKjJ,OAAOyU,eAAeO,QAAQjB,GAAagB,EAClD,CAAE,MAAAE,GACA,OAAO,IACT,CACA,OAAOhM,IACT,GAAC,CAAAlP,IAAA,aAAAK,IAED,WACE,OAAO6O,KAAKkL,WACd,GAAC,CAAApa,IAAA,gBAAAa,MAED,SAAcgJ,GAEZ,OADAqF,KAAKkL,YAAWhJ,GAAAA,GAAA,GAAQlC,KAAKkL,aAAgBvQ,GACtCqF,IACT,GAAC,CAAAlP,IAAA,UAAAa,MAED,SAAQsa,GAMN,OALAjM,KAAKkM,cAAc,CACjB,UAAWD,aAAI,EAAJA,EAAMN,GACjB,aAAcM,aAAI,EAAJA,EAAME,MACpB,aAAaF,aAAI,EAAJA,EAAMja,QAAQia,aAAI,EAAJA,EAAMG,YAE5BpM,IACT,GAAC,CAAAlP,IAAA,wBAAAa,MAED,SAAsBwZ,GAAO,IAAAkB,EAAAC,EAAAC,EAY3B,OAXAvM,KAAKkM,cAAahK,GAAC,CACjB,aAAclC,KAAKiL,QAAQU,GAC3B,iBAAyC,QAAzBU,EAAErV,UAAUwV,qBAAa,IAAAH,OAAA,EAAvBA,EAAyBI,OAC3C,mBAAoBzV,UAAU0V,SAC9B,iBAAyC,QAAzBJ,EAAEtV,UAAUwV,qBAAa,IAAAF,OAAA,EAAvBA,EAAyBK,OAC3C,mBAA2C,QAAzBJ,EAAEvV,UAAUwV,qBAAa,IAAAD,OAAA,EAAvBA,EAAyBK,SAC7C,iBAAkB,aAClB,6BAA8B,aAC9B,sBAAuB5V,UAAUC,WAC9BkU,IAEEnL,IACT,I,8FAAC,CAxFiB,GCJhBjE,GAAM,WAAO,EAEX8Q,GAAS,CACb3Z,MAAO,EACPC,KAAM,EACN2Z,KAAM,EACNzZ,MAAO,EACP0Z,QAAS,GAGL1V,GAAS,CACbhE,MAAO,WAAF,QAAAsT,EAAA9J,UAAA1I,OAAM6D,EAAI,IAAA6I,MAAA8F,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ5O,EAAI4O,GAAA/J,UAAA+J,GAAA,OAAK7K,GAAI,QAAS/D,EAAK,EACtC8U,KAAM,WAAF,QAAAE,EAAAnQ,UAAA1I,OAAM6D,EAAI,IAAA6I,MAAAmM,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJjV,EAAIiV,GAAApQ,UAAAoQ,GAAA,OAAKlR,GAAI,OAAQ/D,EAAK,EACpC7E,KAAM,WAAF,QAAA+Z,EAAArQ,UAAA1I,OAAM6D,EAAI,IAAA6I,MAAAqM,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJnV,EAAImV,GAAAtQ,UAAAsQ,GAAA,OAAKpR,GAAI,OAAQ/D,EAAK,EACpC9E,MAAO,WAAF,QAAAka,EAAAvQ,UAAA1I,OAAM6D,EAAI,IAAA6I,MAAAuM,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJrV,EAAIqV,GAAAxQ,UAAAwQ,GAAA,OAAKtR,GAAI,QAAS/D,EAAK,EACtC+D,IAAK,WAAF,QAAAuR,EAAAzQ,UAAA1I,OAAM6D,EAAI,IAAA6I,MAAAyM,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJvV,EAAIuV,GAAA1Q,UAAA0Q,GAAA,OAAKxR,GAAI,OAAQ/D,EAAK,EACnCwV,KAAM,SAAFtM,GAAoB,IAAfuM,EAAQvM,EAARuM,SACP1R,GAAM,SAAUpC,EAAO3B,GACjB6U,GAAOlT,GAASkT,GAAOY,KAE3BzV,EAAK0V,QAAQ,YAGbC,QAAQhU,GAAOkN,MAAM8G,QAAS3V,GAChC,CACF,GAGF,M,wsDC1BO,IAAM4V,GAAa,WAMvB,O,EALD,SAAAA,EAAYC,GAAwB,IAAdjS,EAAOiB,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,CAAC,G,4FAACkD,CAAA,KAAA6N,GAChC5N,KAAK6N,SAAWA,EAChB7N,KAAKpE,QAAUA,EACfoE,KAAK8N,aAAe,IAAI7H,IACxBjG,KAAK+N,WAAa,CAAC/N,KAAKgO,cAAcC,KAAKjO,MAC7C,E,EAAC,EAAAlP,IAAA,eAAAa,MAED,SAAauc,GACXlO,KAAK+N,WAAWL,QAAQQ,EAC1B,GAAC,CAAApd,IAAA,gBAAAa,MAED,SAAcsW,GACRjI,KAAKpE,QAAQuS,eACfnO,KAAKpE,QAAQuS,cAAc,CAAElG,KAAMA,GAEvC,GAAC,CAAAnX,IAAA,kBAAAa,MAED,SAAgBsW,GAAM,IACmBjK,EADnBC,EAAA1D,GACIyF,KAAK+N,YAAU,IAAvC,IAAA9P,EAAArI,MAAAoI,EAAAC,EAAAtL,KAAA6H,MAAyC,KAA9B4T,EAASpQ,EAAArM,MAClB,IACEyc,EAAUnG,EACZ,CAAE,MAAOlV,GACPsE,GAAOhE,MAAM,wCAAyCN,EACxD,CACF,CAAC,OAAAuE,GAAA2G,EAAAlL,EAAAuE,EAAA,SAAA2G,EAAA1L,GAAA,CACH,GAAC,CAAAzB,IAAA,UAAAa,MAED,SAAQsW,EAAMoG,GACZrO,KAAK8N,aAAa5S,IAAI+M,EAAKA,KAAKiB,YAAYC,OAAQlB,EACtD,GAAC,CAAAnX,IAAA,QAAAa,MAED,SAAMsW,GACJjI,KAAKsO,gBAAgBrG,EAAKA,MAC1BjI,KAAK6N,SAASU,OAAO,CAACtG,EAAKsG,WAC3BvO,KAAK8N,aAAa3H,OAAO8B,EAAKA,KAAKiB,YAAYC,OACjD,I,8FAAC,CApCuB,G,mtDCAnB,IAAMqF,GAAI,WAYd,O,EAXD,SAAAA,EAAY5S,GAUV,O,4FAVmBmE,CAAA,KAAAyO,GACnBxO,KAAKyO,eAAiB7S,EAAQ6S,eAC9BzO,KAAK0O,iBAAiB9S,GAEtBoE,KAAK2O,cAAgB/S,EAAQ+S,cAC7B3O,KAAK2O,cAAcC,QAAQ5O,KAAMpE,EAAQlF,SAErCkF,EAAQjB,YACVqF,KAAKkM,cAActQ,EAAQjB,YAEtBqF,IACT,E,EAAC,EAAAlP,IAAA,mBAAAa,MAED,SAAiBiK,GAAS,IAAAiT,EACxB7O,KAAKiI,KAAO,CACVjW,KAAM4J,EAAQ5J,KACdqX,KAAMzN,EAAQyN,KACdH,YAAatN,EAAQsN,YACrBE,aAAcxN,EAAQwN,aACtBG,UAAW3N,EAAQ2N,WAAarC,GAAOhO,IAAI0C,EAAQ6S,gBACnDjF,QAAS,CAAC,EAAG,GACbsF,OAAQ,CAAEC,KAAM,EAAGhZ,QAAS,IAC5B4E,WAAY,CAAE,aAA6B,QAAjBkU,EAAEjT,EAAQqP,eAAO,IAAA4D,OAAA,EAAfA,EAAiBlD,IAC7CqD,MAAO,GACPpO,OAAQ,GACRqD,SAAU,EACVgL,OAAO,EACPlH,SAAUnM,EAAQmM,SAClBI,qBAAsBvM,EAAQ0M,MAC9B4G,uBAAwB,EACxBC,mBAAoB,EACpBC,kBAAmB,EAEvB,GAAC,CAAAte,IAAA,cAAAa,MAED,WACE,OAAOqO,KAAKiI,KAAKiB,WACnB,GAAC,CAAApY,IAAA,SAAAK,IAED,WACE,OAAO6O,KAAKiI,KAAKiB,YAAYC,MAC/B,GAAC,CAAArY,IAAA,UAAAK,IAED,WACE,OAAO6O,KAAKiI,KAAKiB,YAAYD,OAC/B,GAAC,CAAAnY,IAAA,eAAAa,MAED,SAAab,EAAKa,GAChB,OAAa,MAATA,GAAiBqO,KAAKiI,KAAKgH,OACZ,IAAfne,EAAIqD,SAER6L,KAAKiI,KAAKtN,WAAW7J,GAAOa,GAHiBqO,IAK/C,GAAC,CAAAlP,IAAA,gBAAAa,MAED,SAAcgJ,GACZ,IAAK,IAAL0U,EAAA,EAAAC,EAAqBte,OAAO2M,QAAQhD,GAAW0U,EAAAC,EAAAnb,OAAAkb,IAAE,CAA5C,IAAAE,EAAA1R,GAAAyR,EAAAD,GAAA,GAAOvS,EAACyS,EAAA,GAAExS,EAACwS,EAAA,GACdvP,KAAKwP,aAAa1S,EAAGC,EACvB,CACA,OAAOiD,IACT,GAAC,CAAAlP,IAAA,WAAAa,MAED,SAASK,GAA6B,IAAvB2I,EAAUkC,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAG6M,EAAI7M,UAAA1I,OAAA,EAAA0I,UAAA,QAAA/D,EAClC,OAAIkH,KAAKiI,KAAKgH,OAEdjP,KAAKiI,KAAKrH,OAAO9I,KAAK,CACpB9F,KAAAA,EACA2I,WAAAA,EACA+O,KAAMA,GAAQxC,GAAOhO,MACrBgW,uBAAwB,IANElP,IAU9B,GAAC,CAAAlP,IAAA,cAAAa,MAED,WACE,OAA2B,IAApBqO,KAAKiI,KAAKgH,KACnB,GAAC,CAAAne,IAAA,MAAAa,MAED,SAAIgJ,EAAY+O,GACV/O,GAAYqF,KAAKkM,cAAcvR,GACnCqF,KAAKiI,KAAKuB,QAAUE,GAAQxC,GAAOhO,IAAI8G,KAAKyO,gBAC5CzO,KAAKiI,KAAKgH,OAAQ,EAClBjP,KAAK2O,cAAcc,MAAMzP,KAC3B,GAAC,CAAAlP,IAAA,SAAAa,MAED,WACE,OAAOqO,KAAKiI,IACd,I,8FAAC,CAzFc,G,44CCCV,IAAMyH,GAAM,WAIhB,O,EAHD,SAAAA,EAAY7P,EAAS8O,I,4FAAe5O,CAAA,KAAA2P,GAClC1P,KAAK2O,cAAgBA,EACrB3O,KAAKH,QAAUA,CACjB,E,EAAC,EAAA/O,IAAA,YAAAa,MAED,SACEK,GAGA,IAAA2d,EAAAC,EAAAC,EAII5G,EAGAG,EATJxN,EAAOiB,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,CAAC,EACXnG,EAAOmG,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAGmD,KAAKH,QAAQiQ,eAAeC,SAEhCC,EAAahQ,KAAKH,QAAQoQ,QAAQvZ,GAClCwZ,EAAoBF,aAAU,EAAVA,EAAY9G,cAChCC,EAASwC,GAAGrB,IAAI,GAGlB6F,EAAa,KAEbD,GACFjH,EAAUiH,EAAkBjH,QAC5BkH,EAAaD,EAAkBC,WAC/B/G,EAAe8G,EAAkB/G,QAEjCF,EAAU0C,GAAGrB,IAAI,IAGnB,IACMpB,EAAc,CAAED,QAAAA,EAASE,OAAAA,EAAQiH,WAZtB,EAYkCD,WAAAA,GAC7CpI,EAAW,CACfpN,WAAUuH,GAAAA,GAAA,IACiB,QAArByN,EAAA3P,KAAKH,QAAQkI,gBAAQ,IAAA4H,OAAA,EAArBA,EAAuBhV,aAAc,CAAC,IACtB,QAAhBiV,EAAAhU,EAAQmM,gBAAQ,IAAA6H,OAAA,EAAhBA,EAAkBjV,aAAc,CAAC,IAiBzC,OAba,IAAI6T,GAAK,CACpBzG,SAAUA,EACVO,MAAOtI,KAAKH,QAAQyI,MACpB2C,QAA6B,QAAtB4E,EAAE7P,KAAKH,QAAQoL,eAAO,IAAA4E,OAAA,EAApBA,EAAsB5E,QAC/BvU,QAAAA,EACAwS,YAAAA,EACAlX,KAAAA,EACAqX,KAhBW,EAiBXD,aAAAA,EACAuF,cAAe3O,KAAK2O,cACpBpF,UAAW3N,EAAQ2N,UACnBkF,eAAgB7S,EAAQ6S,gBAG5B,I,8FAAC,CAjDgB,G,44CCInB,ITyBiC3d,GSzB3Buf,ITyB2Bvf,GSzBC,2BT2BzBW,OAAO6e,IAAIxf,KSzBCyf,GAAO,WAUzB,O,EATD,SAAAA,EAAYC,EAAShJ,EAAK5L,I,4FAASmE,CAAA,KAAAwQ,GACjCvQ,KAAKwH,IAAMA,EACXxH,KAAKpE,QAAUA,EACfoE,KAAKjJ,OAASyZ,EAEVxQ,KAAKjJ,OAAOyU,iBACdxL,KAAKiL,QAAU,IAAIF,GAAQ/K,KAAMpE,IAEnCoE,KAAKyQ,cACP,E,EAAC,EAAA3f,IAAA,YAAAa,MAED,SAAUiK,GAERoE,KAAKpE,QAAUA,CACjB,GAAC,CAAA9K,IAAA,cAAAa,MAED,WACMqO,KAAKiL,SACPjL,KAAKiL,QAAQuC,MAEjB,GAAC,CAAA1c,IAAA,YAAAK,IAED,WACE,OAAI6O,KAAKiL,QACAjL,KAAKiL,QAAQA,QAAQU,GAEvB,IACT,GAAC,CAAA7a,IAAA,WAAAK,IAED,WAAe,IAAAuf,EAAAC,EACb,MAAO,CACLhW,WAAUuH,GAAAA,GAAA,GACJlC,KAAKpE,QAAQmM,UAAY,CAAC,GAAC,IAC/B,sBACmC,QADd2I,EACC,QADDC,EACnB3Q,KAAKpE,QAAQF,eAAO,IAAAiV,OAAA,EAApBA,EAAsBC,mBAAW,IAAAF,EAAAA,EAAI1Q,KAAKpE,QAAQgV,cAG1D,GAAC,CAAA9f,IAAA,QAAAK,IAED,WACE,MAAO,CACLa,KAAM,qBACNoW,QAASpI,KAAKpE,QAAQwM,QAE1B,GAAC,CAAAtX,IAAA,QAAAa,MAED,WAAkB,IAAZkf,EAAKhU,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,GACZ,OAAO8O,GAAGrB,IAAIuG,EAChB,GAAC,CAAA/f,IAAA,eAAAa,MAED,WACEqO,KAAK8P,eAAiB,IAAIzJ,GAC1BrG,KAAK6N,SAAW,IAAItG,GAAavH,KAAKwH,IAAKxH,KAAKpE,SAChDoE,KAAK2O,cAAgB,IAAIf,GAAc5N,KAAK6N,SAAU7N,KAAKpE,QAAQiE,SACnEG,KAAK8Q,OAAS,IAAIpB,GAAO1P,KAAMA,KAAK2O,cACtC,GAAC,CAAA7d,IAAA,YAAAa,MAED,WACE,OAAOqO,KAAK8Q,MACd,GAAC,CAAAhgB,IAAA,mBAAAa,MAED,SAAiBuc,GACflO,KAAK2O,cAAcoC,aAAa7C,EAClC,GAAC,CAAApd,IAAA,UAAAa,MAED,WACE,OADakL,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAGmD,KAAK8P,eAAeC,UACrBiB,SAASX,GAC1B,GAAC,CAAAvf,IAAA,UAAAa,MAED,WAAsD,IAA9C+E,EAAOmG,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAGmD,KAAK8P,eAAeC,SAAU9H,EAAIpL,UAAA1I,OAAA,EAAA0I,UAAA,QAAA/D,EAClD,OAAOpC,EAAQua,SAASZ,GAAUpI,EACpC,GAAC,CAAAnX,IAAA,YAAAa,MAED,SAAUK,GAA4D,IAAtD4J,EAAOiB,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAGnG,EAAOmG,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAGmD,KAAK8P,eAAeC,SAC1D,OAAO/P,KAAK8Q,OAAOvQ,UAAUvO,EAAM4J,EAASlF,EAC9C,GAAC,CAAA5F,IAAA,OAAAa,MAED,SAAK+E,EAAS8P,EAAIC,GAAkB,QAAAyK,EAAAvK,EAAA9J,UAAA1I,OAAN6D,EAAI,IAAA6I,MAAA8F,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ5O,EAAI4O,EAAA,GAAA/J,UAAA+J,GAChC,OAAOsK,EAAAlR,KAAK8P,gBAAeqB,KAAItK,MAAAqK,EAAA,CAACxa,EAAS8P,EAAIC,GAAOpK,OAAKrE,GAC3D,GAAC,CAAAlH,IAAA,WAAAa,MAED,SAASK,EAAM4J,EAAS4K,EAAIC,GAC1B,IAAMwB,EAAOjI,KAAKO,UAAUvO,EAAM4J,GAClC,OAAOoE,KAAKmR,KACVnR,KAAKoR,QAAQpR,KAAK8P,eAAeC,SAAU9H,GAC3CzB,EACAC,EACAwB,EAEJ,I,8FAAC,CA1FyB,G,6oDCN5B,SAASoJ,GAAI3V,EAAS4V,GACpB,MAAO,CAAC5V,EAASwB,EAAYxB,EAAS4V,GACxC,CAEA,SAASC,GAAaC,EAAQC,GAC5B,IAAI5Y,EAAM2Y,EAAOrd,OACjB,OAAI0E,EAAc,EAAR4Y,EACDD,EAAO3Z,MAAM,EAAG4Z,GAAOpV,OAAOmV,EAAO3Z,MAAMgB,EAAM4Y,IAEnDD,CACT,CAEA,SAASE,GAAehW,EAAS4V,EAAYG,GAC3CA,OAAyB,IAAVA,EAAwB,GAAKA,EAC5C,IACID,EADA5P,EAAOlG,EAAQhC,KAAKkI,KAExB,GAAIA,EAAK+P,YAAa,CACpB,IACyB3T,EADIC,EAAA1D,GAAjBqH,EAAK+P,aACQ,IAAzB,IAAA1T,EAAArI,MAAAoI,EAAAC,EAAAtL,KAAA6H,MAA2B,KAAhBoX,EAAK5T,EAAArM,MAEd6f,EAASD,GADTC,EAASI,EAAMJ,OACeC,GAC9BG,EAAMJ,OAASA,CACjB,CAAC,OAAAla,GAAA2G,EAAAlL,EAAAuE,EAAA,SAAA2G,EAAA1L,GAAA,CACH,MAAWqP,EAAKgQ,QAEdJ,EAASD,GADTC,EAAS5P,EAAKgQ,MAAMJ,OACUC,GAC9B7P,EAAKgQ,MAAMJ,OAASA,GAEtB,MAAO,CAAC9V,EAASwB,EAAYxB,EAAS4V,GACxC,CAEA,SAASO,GAAmBhZ,EAAKuB,GAC/B,OAAKA,GAGDA,EAAIjG,OAAS0E,EACRuB,EAAIvC,MAAM,EAAGgB,EAAM,GAAGwD,OAAO,OAH7BjC,CAMX,CAEA,SAAS0X,GAAgBjZ,EAAK6C,EAAS4V,GAarC,OADA5V,EAAUsD,EAAStD,EAXnB,SAASqW,EAAUjV,EAAGC,EAAGrF,GACvB,OAAQwF,EAAWH,IACjB,IAAK,SACH,OAAO8U,GAAmBhZ,EAAKkE,GACjC,IAAK,SACL,IAAK,QACH,OAAOiC,EAASjC,EAAGgV,EAAWra,GAChC,QACE,OAAOqF,EAEb,GAEO,CAACrB,EAASwB,EAAYxB,EAAS4V,GACxC,CAEA,SAASU,GAAkBC,GASzB,OARIA,EAAUC,mBACLD,EAAUC,UAAUC,YAC3BF,EAAUC,UAAUnc,QAAU8b,GAC5B,IACAI,EAAUC,UAAUnc,UAGxBkc,EAAUT,OAASD,GAAaU,EAAUT,OAAQ,GAC3CS,CACT,CAEA,SAASG,GAAQ1W,EAAS4V,GACxB,IAAI1P,EAAOlG,EAAQhC,KAAKkI,KACxB,GAAIA,EAAK+P,YAAa,CACpB,IAC4CtX,EADxCgY,EAAQzQ,EAAK+P,YAAYrX,EAAAC,GACA8X,EAAM1U,WAAS,IAA5C,IAAArD,EAAA1E,MAAAyE,EAAAC,EAAA3H,KAAA6H,MAA8C,KAAA8X,EAAAzU,GAAAxD,EAAA1I,MAAA,GAAlCmM,EAAKwU,EAAA,GAAEV,EAAKU,EAAA,GACtBD,EAAMvU,GAASkU,GAAkBJ,EACnC,CAAC,OAAAta,GAAAgD,EAAAvH,EAAAuE,EAAA,SAAAgD,EAAA/H,GAAA,CACH,MAAWqP,EAAKgQ,QACdhQ,EAAKgQ,MAAQI,GAAkBpQ,EAAKgQ,QAEtC,MAAO,CAAClW,EAASwB,EAAYxB,EAAS4V,GACxC,CAEA,SAASiB,GAAgB7W,EAAS8W,GAChC,OfmPF,SAAqBC,GAanB,IAHA,IAAIpO,EAAQ,EACRlQ,EAASse,EAAOte,OAEXF,EAAI,EAAGA,EAAIE,EAAQF,IAAK,CAC/B,IAAI8a,EAAO0D,EAAOC,WAAWze,GACzB8a,EAAO,IAET1K,GAAgB,EACP0K,EAAO,KAEhB1K,GAAgB,EACP0K,EAAO,QAEhB1K,GAAgB,EAEpB,CAEA,OAAOA,CACT,Ce/QSnH,CAAcxB,GAAW8W,CAClC,CAyBA,QACEG,SAxBF,SAAkBjX,EAAS4V,EAAYkB,GACrCA,OAA6B,IAAZA,EAA0B,OAAaA,EAWxD,IAVA,IAQII,EAAUC,EAASzd,EARnB0d,EAAa,CACfzB,GACAK,GACAI,GAAgB7D,KAAK,KAAM,MAC3B6D,GAAgB7D,KAAK,KAAM,KAC3B6D,GAAgB7D,KAAK,KAAM,KAC3BmE,IAIMQ,EAAWE,EAAWlN,SAI5B,GAFAlK,GADAmX,EAAUD,EAASlX,EAAS4V,IACV,IAClBlc,EAASyd,EAAQ,IACNxf,QAAUkf,GAAgBnd,EAAOzD,MAAO6gB,GACjD,OAAOpd,EAGX,OAAOA,CACT,EAMEic,IAAAA,GACAK,eAAAA,GACAI,gBAAAA,GACAD,mBAAAA,ICrHF,SAASkB,GAAarZ,GACpB,IAAKwD,EAASxD,EAAKhD,QAAS,UAAW,CACrC,IAAIsc,EAAgB9V,EAAYxD,EAAKhD,SACjCsc,EAAc3f,MAChBqG,EAAKhD,QAAU,uCAEfgD,EAAKhD,QAAUsc,EAAcrhB,OAAS,GAEpC+H,EAAKhD,QAAQvC,OAAS,MACxBuF,EAAKhD,QAAUgD,EAAKhD,QAAQuc,OAAO,EAAG,KAE1C,CACA,MAAO,CACLvZ,KAAMA,EAEV,CAEA,SAASwZ,GAAwBtX,EAASuX,EAAU3f,GAClD,IAAI2B,EAAWge,EAAShe,SACpBF,EAAWke,EAASle,SACpBC,EAAOie,EAASje,KAChBG,EAAO8d,EAAS9d,KAChB+d,EAASD,EAASC,OAClBC,EAAUzX,EAAQyX,QAClBC,EAuBN,SAAyB1X,GACvB,IAAI4U,EACiB,oBAAXzZ,QAA0BA,QACjB,oBAATmP,MAAwBA,KAC9BoN,EAAY1X,EAAQ2X,kBAAoB,WACf,IAAlB/C,EAAQgD,QAAuBF,EAAY,YAChB,IAA3B9C,EAAQiD,iBAAgCH,EAAY,SAC/D,OAAOA,CACT,CA/BkBI,CAAgB9X,GAE5B+X,EAAQ/X,EAAQ+X,MACpB,GAAI/X,EAAQgY,SAAU,CACpB,IAAIC,EAAOrgB,EAAIqC,MAAM+F,EAAQgY,UAC7Bze,EAAW0e,EAAK1e,SAChBF,EAAW4e,EAAK5e,SAChBC,EAAO2e,EAAK3e,KACZG,EAAOwe,EAAKC,SACZV,EAASS,EAAKT,MAChB,CACA,MAAO,CACLC,QAASA,EACTle,SAAUA,EACVF,SAAUA,EACVC,KAAMA,EACNG,KAAMA,EACN+d,OAAQA,EACRO,MAAOA,EACPL,UAAWA,EAEf,CAYA,SAASS,GAAiBT,EAAW1Q,GACnC,IAAI3N,EAAWqe,EAAUre,UAAY,SACjCC,EACFoe,EAAUpe,OACI,UAAbD,EAAuB,GAAkB,WAAbA,EAAwB,SAAM6D,GACzD3D,EAAWme,EAAUne,SACrBE,EAAOie,EAAUje,KACjBge,EAAUC,EAAUD,QACpBW,EAAeV,EAAUA,UAU7B,OATIA,EAAUF,SACZ/d,GAAcie,EAAUF,QAEtBE,EAAUK,QACZte,EAAOJ,EAAW,KAAOE,EAAWE,EACpCF,EAAWme,EAAUK,MAAMM,MAAQX,EAAUK,MAAMxe,SACnDD,EAAOoe,EAAUK,MAAMze,KACvBD,EAAWqe,EAAUK,MAAM1e,UAAYA,GAElC,CACLoe,QAASA,EACTpe,SAAUA,EACVE,SAAUA,EACVE,KAAMA,EACNH,KAAMA,EACN0N,OAAQA,EACR0Q,UAAWU,EAEf,C,o7BCrFA,IAAAjhB,EAAAjB,EAAAwH,EAAA,mBAAA7H,OAAAA,OAAA,GAAAkB,EAAA2G,EAAA4a,UAAA,aAAAnjB,EAAAuI,EAAA5H,aAAA,yBAAAuC,EAAAqF,EAAA3G,EAAA5B,EAAAkD,GAAA,IAAAoF,EAAA1G,GAAAA,EAAArB,qBAAA6iB,EAAAxhB,EAAAwhB,EAAAnf,EAAAhE,OAAA4L,OAAAvD,EAAA/H,WAAA,OAAA8iB,GAAApf,EAAA,mBAAAsE,EAAA3G,EAAA5B,GAAA,IAAAkD,EAAAoF,EAAArE,EAAAzC,EAAA,EAAA8hB,EAAAtjB,GAAA,GAAAujB,GAAA,EAAAC,EAAA,CAAAF,EAAA,EAAA1hB,EAAA,EAAAoK,EAAAhK,EAAA+H,EAAA/B,EAAAxG,EAAAwG,EAAAkV,KAAAlb,EAAA,GAAAgG,EAAA,SAAAjH,EAAAwH,GAAA,OAAArF,EAAAnC,EAAAuH,EAAA,EAAArE,EAAAjC,EAAAwhB,EAAA5hB,EAAA2G,EAAAwB,CAAA,YAAA/B,EAAAO,EAAA3G,GAAA,IAAA0G,EAAAC,EAAAtE,EAAArC,EAAAb,EAAA,GAAAwiB,GAAA/hB,IAAAxB,GAAAe,EAAAuiB,EAAAlgB,OAAArC,IAAA,KAAAf,EAAAkD,EAAAogB,EAAAviB,GAAAiH,EAAAwb,EAAAF,EAAAngB,EAAAD,EAAA,GAAAqF,EAAA,GAAAvI,EAAAmD,IAAAvB,KAAAqC,EAAAf,GAAAoF,EAAApF,EAAA,OAAAoF,EAAA,MAAApF,EAAA,GAAAA,EAAA,GAAAlB,GAAAkB,EAAA,IAAA8E,KAAAhI,EAAAuI,EAAA,GAAAP,EAAA9E,EAAA,KAAAoF,EAAA,EAAAkb,EAAAxX,EAAApK,EAAA4hB,EAAA5hB,EAAAsB,EAAA,IAAA8E,EAAA7E,IAAAnD,EAAAuI,EAAA,GAAArF,EAAA,GAAAtB,GAAAA,EAAAuB,KAAAD,EAAA,GAAAqF,EAAArF,EAAA,GAAAtB,EAAA4hB,EAAA5hB,EAAAuB,EAAAmF,EAAA,OAAAtI,GAAAuI,EAAA,SAAAwB,EAAA,MAAAwZ,GAAA,EAAA3hB,CAAA,iBAAA5B,EAAAsjB,EAAAngB,GAAA,GAAA3B,EAAA,QAAAiiB,UAAA,oCAAAF,GAAA,IAAAD,GAAAtb,EAAAsb,EAAAngB,GAAAmF,EAAAgb,EAAArf,EAAAd,GAAApC,EAAAuH,EAAA,EAAAtG,EAAAiC,KAAAsf,GAAA,CAAArgB,IAAAoF,EAAAA,EAAA,GAAAA,EAAA,IAAAkb,EAAA5hB,GAAA,GAAAoG,EAAAM,EAAArE,IAAAuf,EAAA5hB,EAAAqC,EAAAuf,EAAAxX,EAAA/H,GAAA,OAAAzC,EAAA,EAAA0B,EAAA,IAAAoF,IAAAtI,EAAA,QAAAe,EAAAmC,EAAAlD,GAAA,MAAAe,EAAAA,EAAAN,KAAAyC,EAAAe,IAAA,MAAAwf,UAAA,wCAAA1iB,EAAA0I,KAAA,OAAA1I,EAAAkD,EAAAlD,EAAAH,MAAA0H,EAAA,IAAAA,EAAA,YAAAA,IAAAvH,EAAAmC,EAAAwgB,SAAA3iB,EAAAN,KAAAyC,GAAAoF,EAAA,IAAArE,EAAAwf,UAAA,oCAAAzjB,EAAA,YAAAsI,EAAA,GAAApF,EAAAlB,CAAA,UAAAjB,GAAAwiB,EAAAC,EAAA5hB,EAAA,GAAAqC,EAAAsE,EAAA9H,KAAAmB,EAAA4hB,MAAAzZ,EAAA,YAAAhJ,GAAAmC,EAAAlB,EAAAsG,EAAA,EAAArE,EAAAlD,CAAA,SAAAS,EAAA,UAAAZ,MAAAG,EAAA0I,KAAA8Z,EAAA,GAAAhb,EAAAvI,EAAAkD,IAAA,GAAAe,CAAA,KAAA8F,EAAA,YAAAqZ,IAAA,UAAAO,IAAA,UAAAC,IAAA,CAAA7iB,EAAAd,OAAA4jB,eAAA,IAAAvb,EAAA,GAAA1G,GAAAb,EAAAA,EAAA,GAAAa,QAAAyhB,GAAAtiB,EAAA,GAAAa,EAAA,yBAAAb,GAAAkD,EAAA2f,EAAArjB,UAAA6iB,EAAA7iB,UAAAN,OAAA4L,OAAAvD,GAAA,SAAA9G,EAAAQ,GAAA,OAAA/B,OAAAmK,eAAAnK,OAAAmK,eAAApI,EAAA4hB,IAAA5hB,EAAA8hB,UAAAF,EAAAP,GAAArhB,EAAAhC,EAAA,sBAAAgC,EAAAzB,UAAAN,OAAA4L,OAAA5H,GAAAjC,CAAA,QAAA2hB,EAAApjB,UAAAqjB,EAAAP,GAAApf,EAAA,cAAA2f,GAAAP,GAAAO,EAAA,cAAAD,GAAAA,EAAAI,YAAA,oBAAAV,GAAAO,EAAA5jB,EAAA,qBAAAqjB,GAAApf,GAAAof,GAAApf,EAAAjE,EAAA,aAAAqjB,GAAApf,EAAArC,EAAA,yBAAAyhB,GAAApf,EAAA,oDAAA+f,GAAA,kBAAAC,EAAA/gB,EAAAL,EAAArB,EAAA,cAAA6hB,GAAArhB,EAAAuG,EAAA3G,EAAAb,GAAA,IAAAmC,EAAAjD,OAAAC,eAAA,IAAAgD,EAAA,gBAAAlB,GAAAkB,EAAA,EAAAmgB,GAAA,SAAArhB,EAAAuG,EAAA3G,EAAAb,GAAA,SAAAf,EAAAuI,EAAA3G,GAAAyhB,GAAArhB,EAAAuG,EAAA,SAAAvG,GAAA,YAAAkiB,QAAA3b,EAAA3G,EAAAI,EAAA,GAAAuG,EAAArF,EAAAA,EAAAlB,EAAAuG,EAAA,CAAA3H,MAAAgB,EAAAzB,YAAAY,EAAAojB,cAAApjB,EAAAqjB,UAAArjB,IAAAiB,EAAAuG,GAAA3G,GAAA5B,EAAA,UAAAA,EAAA,WAAAA,EAAA,cAAAqjB,GAAArhB,EAAAuG,EAAA3G,EAAAb,EAAA,UAAAsjB,GAAAziB,EAAAb,EAAAiB,EAAAuG,EAAAvI,EAAA+J,EAAAzB,GAAA,QAAApF,EAAAtB,EAAAmI,GAAAzB,GAAArE,EAAAf,EAAAtC,KAAA,OAAAgB,GAAA,YAAAI,EAAAJ,EAAA,CAAAsB,EAAAuG,KAAA1I,EAAAkD,GAAAqgB,QAAAC,QAAAtgB,GAAAugB,KAAAjc,EAAAvI,EAAA,UAAAykB,GAAAziB,EAAAuG,GAAA,QAAAxH,EAAA,EAAAA,EAAAwH,EAAAnF,OAAArC,IAAA,KAAAf,EAAAuI,EAAAxH,GAAAf,EAAAG,WAAAH,EAAAG,aAAA,EAAAH,EAAAmkB,cAAA,YAAAnkB,IAAAA,EAAAokB,UAAA,GAAAnkB,OAAAC,eAAA8B,EAAA0iB,GAAA1kB,EAAAD,KAAAC,EAAA,WAAA0kB,GAAA3jB,GAAA,IAAAmC,EAAA,SAAAnC,EAAAwH,GAAA,aAAArH,GAAAH,KAAAA,EAAA,OAAAA,EAAA,IAAAiB,EAAAjB,EAAAL,OAAAikB,aAAA,YAAA3iB,EAAA,KAAAkB,EAAAlB,EAAAvB,KAAAM,EAAAwH,GAAA,wBAAArH,GAAAgC,GAAA,OAAAA,EAAA,UAAAugB,UAAA,kEAAAlb,EAAApC,OAAAtE,QAAAd,EAAA,CAAA6jB,CAAA7jB,EAAA,0BAAAG,GAAAgC,GAAAA,EAAAA,EAAA,GAEA,IAAM2hB,GAAiB,CACrBzgB,SAAU,kBACVE,KAAM,eACN+d,OAAQ,KACRhL,QAAS,IACTnT,SAAU,SACVC,KAAM,KAGF2gB,GAAqB,CACzB1gB,SAAU,kBACVE,KAAM,kBACN+d,OAAQ,KACRhL,QAAS,IACTnT,SAAU,SACVC,KAAM,KAUF4gB,GAAG,WAsBP,OAjDF/iB,EAuCE,SAAA+iB,EAAYla,EAAS0X,EAAWyC,EAAQC,IAvC1C,SAAAlb,EAAAnI,GAAA,KAAAmI,aAAAnI,GAAA,UAAA6hB,UAAA,qCAuCsDzU,CAAA,KAAA+V,GAClD9V,KAAKpE,QAAUA,EACfoE,KAAKsT,UAAYA,EACjBtT,KAAKxM,IAAMuiB,EACX/V,KAAKgW,WAAaA,EAClBhW,KAAKiW,YAAcra,EAAQqa,YAC3BjW,KAAK+T,iBAAmBmC,GAActa,EAASma,GAC/C/V,KAAKmW,qBAAuBC,GAAkBxa,EAASma,EACzD,EA/CFzc,EAiDE,EAAAxI,IAAA,eAAAa,MAUA,SAAYuP,GAA6C,IAAA2G,EAAA,KAA1CoO,EAAW/U,EAAX+U,YAAara,EAAOsF,EAAPtF,QAASF,EAAOwF,EAAPxF,QAASsH,EAAO9B,EAAP8B,QAC5C,OAAO,IAAIqS,QAAQ,SAACC,EAASe,GAC3BxO,EAAKyL,UAAUgD,KAAK,CAClBL,YAAAA,EACAra,QAAAA,EACAF,QAAAA,EACAsH,QAAAA,EACA3K,SAAU,SAACf,EAAKC,GAAI,OAAMD,EAAM+e,EAAO/e,GAAOge,EAAQ/d,EAAK,GAE/D,EACF,GAEA,CAAAzG,IAAA,WAAAa,MAKA,SAAS+H,EAAMrB,GAAU,IAAAyQ,EAAA,KACjBlN,EAAU2a,GAAyBvW,KAAK+T,iBAAkB,QAC1DrY,EAAU6a,GAAqB7c,GAGrC8c,WAAW,WACT1N,EAAKwK,UAAUgD,KAAK,CAClBL,YAAanN,EAAKmN,YAClBra,QAAAA,EACAF,QAAAA,EACArD,SAAAA,GAEJ,EAAG,EACL,GAEA,CAAAvH,IAAA,YAAAa,OA3FFgB,EA2FEoiB,KAAAnhB,EAMA,SAAA6iB,EAAgB/a,GAAO,IAAAsH,EAAApH,EAAA8a,EAAA7Z,UAAA,OAAAkY,KAAAC,EAAA,SAAA2B,GAAA,cAAAA,EAAAhkB,EACsD,OADpDqQ,EAAO0T,EAAAviB,OAAA,QAAA2E,IAAA4d,EAAA,GAAAA,EAAA,GAAG,CAAC,EAC5B9a,EAAU2a,GAAyBvW,KAAKmW,qBAAsB,QAAOQ,EAAA7b,EAAA,EAEpEkF,KAAK4W,aAAa,CACvBX,YAAajW,KAAKiW,YAClBra,QAAAA,EACAF,QAAAA,EACAsH,QAAAA,IACA,EAAAyT,EAAA,QAdJI,EA3FF,eAAA/kB,EAAA,KAAAiB,EAAA8J,UAAA,WAAAwY,QAAA,SAAA/b,EAAAvI,GAAA,IAAA+J,EAAAnI,EAAAkU,MAAA/U,EAAAiB,GAAA,SAAA+jB,EAAAnkB,GAAAyiB,GAAAta,EAAAxB,EAAAvI,EAAA+lB,EAAAC,EAAA,OAAApkB,EAAA,UAAAokB,EAAApkB,GAAAyiB,GAAAta,EAAAxB,EAAAvI,EAAA+lB,EAAAC,EAAA,QAAApkB,EAAA,CAAAmkB,OAAA,MA0GG,SATcE,GAAA,OAAAH,EAAAhQ,MAAC,KAADhK,UAAA,IAWf,CAAA/L,IAAA,mBAAAa,MAKA,SAAiB+H,EAAMrB,GACrB,IAEI4e,EAFEvb,EAAU6a,GAAqB7c,GASrC,OALEud,EADEjX,KAAKgW,WACWhW,KAAKgW,WAAWrD,SAASjX,GAEzBpG,EAAUoG,IAGVrI,OACdgF,GACFA,EAAS4e,EAAgB5jB,OAEpB,MAGF4jB,EAAgBtlB,KACzB,GAEA,CAAAb,IAAA,kBAAAa,MAKA,SAAgBulB,EAAa7e,GAC3B,IAAM0b,EAAmBwC,GACvBvW,KAAK+T,iBACL,QAEF/T,KAAKsT,UAAU6D,gBACbnX,KAAKiW,YACLlC,EACAmD,EACA7e,EAEJ,GAAC,CAAAvH,IAAA,YAAAa,MAED,SAAUiK,GACR,IAAM4E,EAAaR,KAAKpE,QAOxB,OANAoE,KAAKpE,QAAUD,EAAM6E,EAAY5E,GACjCoE,KAAK+T,iBAAmBmC,GAAclW,KAAKpE,QAASoE,KAAKxM,KACzDwM,KAAKmW,qBAAuBC,GAAkBpW,KAAKpE,QAASoE,KAAKxM,UAChCsF,IAA7BkH,KAAKpE,QAAQqa,cACfjW,KAAKiW,YAAcjW,KAAKpE,QAAQqa,aAE3BjW,IACT,IAhKF1G,GAAAkc,GAAAziB,EAAAzB,UAAAgI,GAAAxH,GAAA0jB,GAAAziB,EAAAjB,GAAAd,OAAAC,eAAA8B,EAAA,aAAAoiB,UAAA,IAAApiB,EAAA,IAAAA,EAAAuG,EAAAxH,EAAAa,EA2FEkkB,CAqEC,CArIM,GAwIT,SAASX,GAActa,EAASpI,GAC9B,OAAO+iB,GAAgC3a,EAASga,GAAgBpiB,EAClE,CAEA,SAAS4iB,GAAkBxa,EAASpI,GAAK,IAAA4jB,EAEvC,OAAOb,GADP3a,EAAOsG,GAAAA,GAAA,GAAQtG,GAAO,IAAEgY,SAAyB,QAAjBwD,EAAExb,EAAQiE,eAAO,IAAAuX,OAAA,EAAfA,EAAiBxD,WACHiC,GAAoBriB,EACtE,CAEA,UClHA,GAxDuB,QAwDvB,GAvDwB,8BAuDxB,GAtDwB,QAsDxB,GArD2B,QAqD3B,GApDkC,QCP5B6jB,GAA8B,eAC9BC,GAAyB,iCACzBC,GAA4B,+BAClC,SAAS1hB,GAAMxC,EAAOuI,GACpB,QAAgC,IAArBvI,EAAMmkB,iBAAkE,IAA7BnkB,EAAM,mBAC1D,OA4FJ,SAAoBN,EAAG6I,GACrB,OAAK7I,EAAEykB,YAAczkB,EAAEgD,QAAQ6B,SAAS,OAAS7E,EAAEgD,QAAQiF,MAAM,MAAM7G,OAASpB,EAAEykB,WAAWxc,MAAM,MAAM7G,OAO3G,SAAqBpB,EAAG6I,GAItB,IAHA,IAAM6b,EAAS,oCACTC,EAAQ3kB,EAAEgD,QAAQiF,MAAM,MACxB5F,EAAS,GACNnB,EAAI,EAAG4E,EAAM6e,EAAMvjB,OAAQF,EAAI4E,EAAK5E,GAAK,EAAG,CACnD,IAAM7B,EAAQqlB,EAAO1jB,KAAK2jB,EAAMzjB,IAC5B7B,GACFgD,EAAO0C,KAAK,CACV6f,KAAMvlB,EAAM,GACZkE,MAAOlE,EAAM,GACbif,IAAKqG,EAAMzjB,IAGjB,CACA,OAAO2jB,GAAWxiB,EAAQwG,EAC5B,CArBWic,CAAY9kB,GACXA,EAAEoE,MAsCd,SAAsB9D,EAAOuI,GAC3B,IAAMkc,EAAWF,GAEfvkB,EAAM8D,MAAM6D,MAAM,MAAM+F,OAAO,SAACzK,GAC9B,QAASA,EAAKlE,MAAMilB,MAAiC/gB,EAAKlE,MAAM,oBAClE,GACAwJ,GAEF,OAAOkc,EAAS7W,IAAI,SAAC3K,GACnB,IAIIyhB,EAJEC,EAAS1hB,EAAK0E,MAAM,KACpBid,EAAgBC,GAAgBF,EAAOG,OACvCC,EAAeJ,EAAOpS,SAAW,GACjCyS,EAAeD,EAAa/jB,QAAQ,iCAAkC,MAAMA,QAAQ,aAAc,UAAOyE,EAK/G,OAHIsf,EAAahmB,MAAM,iBACrB2lB,EAAUK,EAAa/jB,QAAQ,qBAAsB,OAEhD,CACLikB,SAAUD,EACVrgB,UAHuBc,IAAZif,GAAqC,8BAAZA,OAA0Cjf,EAAYif,EAAQ/c,MAAM,KAIxG2c,KAAMM,EAAc,GACpB3hB,KAAM2hB,EAAc,IAAMA,EAAc,QAAKnf,EAC7Cyf,IAAKN,EAAc,IAAMA,EAAc,QAAKnf,EAC5CuY,IAAK/a,EAET,EACF,CA7DWkiB,CAAazlB,EAAG6I,GAkB3B,SAAsB7I,EAAG6I,GAIvB,IAHA,IAAM6b,EAAS,6DACTC,EAAQ3kB,EAAEykB,WAAWxc,MAAM,MAC3B5F,EAAS,GACNnB,EAAI,EAAG4E,EAAM6e,EAAMvjB,OAAQF,EAAI4E,EAAK5E,GAAK,EAAG,CACnD,IAAM7B,EAAQqlB,EAAO1jB,KAAK2jB,EAAMzjB,IAC5B7B,GACFgD,EAAO0C,KAAK,CACVwgB,SAAUlmB,EAAM,SAAM0G,EACtB6e,KAAMvlB,EAAM,GACZkE,KAAMlE,EAAM,IAAMA,EAAM,QAAK0G,EAC7BuY,IAAKqG,EAAMzjB,IAGjB,CACA,OAAO2jB,GAAWxiB,EAAQwG,EAC5B,CApCW6c,CAAa1lB,EAGxB,CAnGW2lB,CAAWrlB,EAAOuI,GACtB,GAAIvI,EAAM8D,OAAS9D,EAAM8D,MAAM/E,MAAMklB,IACxC,OA6BJ,SAAqBjkB,EAAOuI,GAC1B,OAAO+c,GAAkBtlB,EAAM8D,MAAOyE,EACxC,CA/BWgd,CAAYvlB,EAAOuI,GACvB,GAAIvI,EAAM8D,MACb,OAwDJ,SAAyB9D,EAAOuI,GAC9B,OAAOid,GAAsBxlB,EAAM8D,MAAOyE,EAC5C,CA1DWkd,CAAgBzlB,EAAOuI,GAC3B,GAAIA,SAAAA,EAASmd,WAChB,MAAO,GAEP,MAAM,IAAI7mB,MAAM,kCACpB,CAOA,SAASgmB,GAAgBc,GACvB,IAAKA,EAAQphB,SAAS,KACpB,MAAO,CAACohB,OAASlgB,OAAWA,GAC9B,IACMmgB,EADS,+BACMllB,KAAKilB,EAAQ3kB,QAAQ,QAAS,KACnD,MAAO,CAAC4kB,EAAM,GAAIA,EAAM,SAAMngB,EAAWmgB,EAAM,SAAMngB,EACvD,CACA,SAAS8e,GAAWF,EAAO9b,GACzB,OAAIA,GAA4B,MAAjBA,EAAQ/D,MACjBgJ,MAAM1D,QAAQvB,EAAQ/D,OACjB6f,EAAM7f,MAAM+D,EAAQ/D,MAAM,GAAI+D,EAAQ/D,MAAM,IAC9C6f,EAAM7f,MAAM,EAAG+D,EAAQ/D,OAEzB6f,CACT,CAIA,SAASiB,GAAkBxhB,EAAOyE,GAOhC,OANiBgc,GACfzgB,EAAM6D,MAAM,MAAM+F,OAAO,SAACzK,GACxB,QAASA,EAAKlE,MAAMklB,GACtB,GACA1b,GAEcqF,IAAI,SAAC3K,GACfA,EAAKsB,SAAS,YAChBtB,EAAOA,EAAKjC,QAAQ,aAAc,QAAQA,QAAQ,6BAA8B,KAElF,IAAI6kB,EAAgB5iB,EAAKjC,QAAQ,OAAQ,IAAIA,QAAQ,eAAgB,KAAKA,QAAQ,UAAW,IACvFgC,EAAW6iB,EAAc9mB,MAAM,cACrC8mB,EAAgB7iB,EAAW6iB,EAAc7kB,QAAQgC,EAAS,GAAI,IAAM6iB,EACpE,IAAMjB,EAAgBC,GAAgB7hB,EAAWA,EAAS,GAAK6iB,GAG/D,MAAO,CACLZ,SAHmBjiB,GAAY6iB,QAAiBpgB,EAIhD6e,KAHe,CAAC,OAAQ,eAAe/f,SAASqgB,EAAc,SAAMnf,EAAYmf,EAAc,GAI9F3hB,KAAM2hB,EAAc,IAAMA,EAAc,QAAKnf,EAC7Cyf,IAAKN,EAAc,IAAMA,EAAc,QAAKnf,EAC5CuY,IAAK/a,EAET,EACF,CAIA,SAASuiB,GAAsB1hB,EAAOyE,GAOpC,OANiBgc,GACfzgB,EAAM6D,MAAM,MAAM+F,OAAO,SAACzK,GACxB,OAAQA,EAAKlE,MAAMmlB,GACrB,GACA3b,GAEcqF,IAAI,SAAC3K,GAGnB,GAFIA,EAAKsB,SAAS,aAChBtB,EAAOA,EAAKjC,QAAQ,mDAAoD,QACrEiC,EAAKsB,SAAS,MAAStB,EAAKsB,SAAS,KAInC,CACL,IAAMuhB,EAAoB,6JACpBC,EAAU9iB,EAAKlE,MAAM+mB,GACrBd,EAAee,GAAWA,EAAQ,GAAKA,EAAQ,QAAKtgB,EACpDmf,EAAgBC,GAAgB5hB,EAAKjC,QAAQ8kB,EAAmB,KACtE,MAAO,CACLb,SAAUD,EACVV,KAAMM,EAAc,GACpB3hB,KAAM2hB,EAAc,IAAMA,EAAc,QAAKnf,EAC7Cyf,IAAKN,EAAc,IAAMA,EAAc,QAAKnf,EAC5CuY,IAAK/a,EAET,CAfE,MAAO,CACLgiB,SAAUhiB,EAehB,EACF,CC7FA,SAAS+iB,GAA6BC,GACpC,OAAOA,EAAgBrY,IAAI,SAACsY,GAC1B,MAAO,CACLlB,aAAckB,EAAejB,SAC7BtgB,KAAMuhB,EAAevhB,KACrBwhB,SAAUD,EAAe5B,KACzB8B,WAAYF,EAAejjB,KAC3BojB,aAAcH,EAAehB,IAC7B5jB,OAAQ4kB,EAAelI,IAE3B,EACF,CCZA,IACIsI,GAAmB,IAAIpb,OACzB,6DAOF,SAAS5H,KACP,OAAO,IACT,CAEA,SAASijB,GAAMC,GACb,IAAIngB,EAAO,CAAC,EAYZ,OAVAA,EAAKogB,YAAcD,EAEnBngB,EAAKlG,IAAMqmB,EAAWL,SACtB9f,EAAKpD,KAAOujB,EAAWJ,WACvB/f,EAAKlD,KAAOqjB,EAAWxB,aACvB3e,EAAKnD,OAASsjB,EAAWH,aACzBhgB,EAAK1B,KAAO6hB,EAAW7hB,KAEvB0B,EAAKhD,QAdE,KAgBAgD,CACT,CAEA,SAASqgB,GAAM7H,EAAW8H,GAqBxB,MAAO,CACL7iB,MArBF,WACE,IAAI8iB,EAAc,GAElBD,EAAOA,GAAQ,EAEf,IACEC,EDvBN,SAAe5mB,EAAOuI,GACpB,OAAOyd,GAA6Ba,GAAQ7mB,EAAOuI,GACrD,CCqBoBue,CAAgBjI,EAChC,CAAE,MAAOjX,GACPgf,EAAc,EAChB,CAIA,IAFA,IAAI9iB,EAAQ,GAEHlD,EAAI+lB,EAAM/lB,EAAIgmB,EAAY9lB,OAAQF,IACzCkD,EAAMW,KAAK,IAAI8hB,GAAMK,EAAYhmB,KAGnC,OAAOkD,CACT,CAGSijB,GACPrkB,QAASmc,EAAUnc,QACnB/D,KAAMqoB,GAAuBnI,GAC7BoI,SAAUpI,EAAU/a,MACpBojB,aAAcrI,EAElB,CA2CA,SAASmI,GAAuBhnB,GAC9B,IAAIrB,EAAOqB,EAAMrB,MAAQqB,EAAMrB,KAAKmC,QAAUd,EAAMrB,KAChDwoB,EACFnnB,EAAMoJ,YAAYzK,MAClBqB,EAAMoJ,YAAYzK,KAAKmC,QACvBd,EAAMoJ,YAAYzK,KAEpB,OAAKA,GAASwoB,EAID,UAATxoB,EACKwoB,EAEFxoB,EANEA,GAAQwoB,CAOnB,CAEA,QACE/jB,kBAjHF,WACE,MANqB,GAOvB,EAgHEgkB,gBAxCF,SAAyBC,GACvB,IAAKA,IAAWA,EAAOtoB,MACrB,MAAO,CAAC,wDAAyD,IAEnE,IAAIuoB,EAAgBD,EAAOtoB,MAAMunB,IAC7BiB,EAAW,YAUf,OARID,IACFC,EAAWD,EAAcA,EAAcxmB,OAAS,GAKhDumB,GAJAA,EAASA,EAAOrmB,SACbsmB,EAAcA,EAAcxmB,OAAS,IAAM,IAAMymB,EAAW,IAC7D,KAEcvmB,QAAQ,mBAAoB,KAEvC,CAACumB,EAAUF,EACpB,EAyBE/jB,cAAAA,GACAd,MA9DF,SAAe9C,EAAGinB,GAChB,IAAI1iB,EAAMvE,EAEV,GAAIuE,EAAIujB,QAAUvjB,EAAIwjB,MAAO,CAE3B,IADA,IAAIC,EAAa,GACVzjB,GACLyjB,EAAWjjB,KAAK,IAAIiiB,GAAMziB,EAAK0iB,IAC/B1iB,EAAMA,EAAIujB,QAAUvjB,EAAIwjB,MAExBd,EAAO,EAKT,OADAe,EAAW,GAAGA,WAAaA,EACpBA,EAAW,EACpB,CACE,OAAO,IAAIhB,GAAMziB,EAAK0iB,EAE1B,EA6CED,MAAAA,GACAH,MAAAA,I,y/BC3HF,SAASoB,GAAWhiB,EAAMiiB,GACxB,IAAIthB,EAAQX,EAAKW,MACbuhB,EAAWhe,EAASvD,IAAU,EAC9BwhB,EAAcF,EAASE,YAG3B,QAAID,GAFiBhe,EAASie,IAAgB,GAMhD,CA2CA,SAASC,GAAYxJ,EAAOrN,EAAM8W,GAChC,IAAKzJ,EACH,OAAQyJ,EAGV,IAMWC,EAAU9nB,EANjBge,EAASI,EAAMJ,OAEnB,IAAKA,GAA4B,IAAlBA,EAAOrd,OACpB,OAAQknB,EAMV,IAFA,IAAIE,EAAahX,EAAKpQ,OAClBqnB,EAAchK,EAAOrd,OAChBF,EAAI,EAAGA,EAAIunB,EAAavnB,IAAK,CAIpC,IAAKiJ,EAFLoe,EADQ9J,EAAOvd,GACEqnB,SAEO,UACtB,OAAQD,EAGV,IAAK,IAAIziB,EAAI,EAAGA,EAAI2iB,EAAY3iB,IAI9B,GAHApF,EAAM+Q,EAAK3L,GACA,IAAI2F,OAAO/K,GAET2L,KAAKmc,GAChB,OAAO,CAGb,CACA,OAAO,CACT,CAEA,SAASG,GAAaziB,EAAMiiB,EAAUS,EAAarkB,GAEjD,IAKIkN,EAAMoX,EALNN,GAAQ,EACQ,cAAhBK,IACFL,GAAQ,GAIV,IAME,GALA9W,EAAO8W,EAAQJ,EAAShf,cAAgBgf,EAASnf,aACjD6f,EAASze,EAAMlE,EAAM,qBAAuB,CAACkE,EAAMlE,EAAM,gBAIpDuL,GAAwB,IAAhBA,EAAKpQ,OAChB,OAAQknB,EAEV,GAAsB,IAAlBM,EAAOxnB,SAAiBwnB,EAAO,GACjC,OAAQN,EAIV,IADA,IAAIO,EAAeD,EAAOxnB,OACjBF,EAAI,EAAGA,EAAI2nB,EAAc3nB,IAChC,GAAImnB,GAAYO,EAAO1nB,GAAIsQ,EAAM8W,GAC/B,OAAO,CAGb,CAAE,MACAtoB,GAGIsoB,EACFJ,EAAShf,cAAgB,KAEzBgf,EAASnf,aAAe,KAE1B,IAAI+f,EAAWR,EAAQ,gBAAkB,eASzC,OARAhkB,EAAOhE,MACL,4CACEwoB,EACA,4BACAA,EACA,IACF9oB,IAEMsoB,CACV,CACA,OAAO,CACT,CAEA,SAASS,GAAiBzkB,GACxB,OAAO,SAAU2B,EAAMiiB,GACrB,IAAIhnB,EAAG2E,EAAGmjB,EAAiBljB,EAAuBmjB,EAAiBC,EAEnE,IAIE,KAFAF,EAAkBd,EAASc,kBAEwB,IAA3BA,EAAgB5nB,OACtC,OAAO,EAKT,GAFA8nB,EAgCN,SAA0BjjB,GACxB,IAAI4I,EAAO5I,EAAK4I,KACZqa,EAAW,GAKf,GAAIra,EAAK+P,YAAa,CACpB,IAC8B3T,EADIC,EAAA1D,GAAjBqH,EAAK+P,aACQ,IAA9B,IAAA1T,EAAArI,MAAAoI,EAAAC,EAAAtL,KAAA6H,MAAgC,KAArBoX,EAAK5T,EAAArM,MACdsqB,EAASnkB,KAAKoF,EAAM0U,EAAO,qBAC7B,CAAC,OAAAta,GAAA2G,EAAAlL,EAAAuE,EAAA,SAAA2G,EAAA1L,GAAA,CACH,CACIqP,EAAKgQ,OACPqK,EAASnkB,KAAKoF,EAAM0E,EAAM,4BAExBA,EAAK7L,SACPkmB,EAASnkB,KAAKoF,EAAM0E,EAAM,iBAE5B,OAAOqa,CACT,CApDiBC,CAAiBljB,GAEJ,IAApBijB,EAAS9nB,OACX,OAAO,EAIT,IADA0E,EAAMkjB,EAAgB5nB,OACjBF,EAAI,EAAGA,EAAI4E,EAAK5E,IAGnB,IAFA+nB,EAAkB,IAAIzd,OAAOwd,EAAgB9nB,GAAI,MAE5C2E,EAAI,EAAGA,EAAIqjB,EAAS9nB,OAAQyE,IAG/B,GAFmBojB,EAAgB7c,KAAK8c,EAASrjB,IAG/C,OAAO,CAIf,CAAE,MACAqC,GAGAggB,EAASc,gBAAkB,KAC3B1kB,EAAOhE,MACL,oGAEJ,CAEA,OAAO,CACT,CACF,C,+sBCnLA,IAKqB8oB,GAAQ,WAe3B,O,EAPA,SAAAA,EAAYlc,EAAOrE,I,4FAASmE,CAAA,KAAAoc,GAC1Bnc,KAAKC,MAAQA,EACbD,KAAKpE,QAAUA,EACfoE,KAAK+N,WAAa,GAClB/N,KAAK7G,WAAa,CAAC,CACrB,E,EAEA,EAAArI,IAAA,YAAAa,MAOA,SAAUiK,GAAS,IAAAwgB,EACP,QAAVA,EAAApc,KAAKC,aAAK,IAAAmc,GAAVA,EAAYC,UAAUzgB,GACtB,IAAM4E,EAAaR,KAAKpE,QAExB,OADAoE,KAAKpE,QAAUD,EAAM6E,EAAY5E,GAC1BoE,IACT,GAEA,CAAAlP,IAAA,eAAAa,MAYA,SAAayc,GAIX,OAHI9b,EAAW8b,IACbpO,KAAK+N,WAAWjW,KAAKsW,GAEhBpO,IACT,GAEA,CAAAlP,IAAA,MAAAa,MAcA,SAAIqH,EAAMX,GAAU,IAAAwP,EAAA,KAGlB,GAFAxP,EAAW/F,EAAW+F,GAAYA,EAAW,WAAO,GAE/C2H,KAAKpE,QAAQ0gB,QAChB,OAAOjkB,EAAS,IAAInG,MAAM,0BAA2B,MAGvD8N,KAAKC,MAAMsc,eAAevjB,GAC1B,IAAMwjB,EAAgBxjB,EAAK1B,IAC3B0I,KAAKyc,iBAAiBzjB,EAAM,SAAC1B,EAAKrD,GAChC,GAAIqD,EAEF,OADAuQ,EAAK5H,MAAMyc,kBAAkB1jB,GACtBX,EAASf,EAAK,MAEvBuQ,EAAK5H,MAAM0c,QAAQ1oB,EAAGoE,EAAUmkB,EAAexjB,EACjD,EACF,GAIA,CAAAlI,IAAA,mBAAAa,MAUA,SAAiBqH,EAAMX,GACrB,IAAIukB,GAAkB,EAChBC,EAAmB7c,KAAK+N,WAAW5Z,OACnC4Z,EAAa/N,KAAK+N,WAClBnS,EAAUoE,KAAKpE,QAEfkhB,EAAO,SAACxlB,EAAKrD,GACbqD,EACFe,EAASf,EAAK,QAIhBslB,IAEuBC,EAKvB9O,EAAW6O,GAAgB3oB,EAAG2H,EAASkhB,GAJrCzkB,EAAS,KAAMpE,EAKnB,EAEA6oB,EAAK,KAAM9jB,EACb,I,8FAAC,CAnH0B,G,+sBCL7B,I,SAMM+jB,GAAK,WAUT,SAAAA,EAAYC,EAAaxV,EAAKnQ,EAAQuE,EAASqhB,I,4FAAQld,CAAA,KAAAgd,GACrD/c,KAAKgd,YAAcA,EACnBhd,KAAKwH,IAAMA,EACXxH,KAAK3I,OAASA,EACd2I,KAAKpE,QAAUA,EACfoE,KAAKid,OAASA,EACdjd,KAAKkd,WAAa,GAClBld,KAAKmd,aAAe,GACpBnd,KAAKod,gBAAkB,GACvBpd,KAAKqd,WAAa,GAClBrd,KAAKsd,YAAc,KACnBtd,KAAKud,aAAe,KACpBvd,KAAKwd,eAAiB,IACxB,CAEA,O,EAAAT,E,EAAA,EAAAjsB,IAAA,YAAAa,MAKA,SAAUiK,GAAS,IAAA6hB,EACT,QAARA,EAAAzd,KAAKwH,WAAG,IAAAiW,GAARA,EAAUpB,UAAUzgB,GACpB,IAAM4E,EAAaR,KAAKpE,QAExB,OADAoE,KAAKpE,QAAUsB,EAAQsD,EAAY5E,GAC5BoE,IACT,GAEA,CAAAlP,IAAA,eAAAa,MASA,SAAa+rB,GAIX,OAHIxgB,EAAawgB,IACf1d,KAAKkd,WAAWplB,KAAK4lB,GAEhB1d,IACT,GAAC,CAAAlP,IAAA,iBAAAa,MAED,SAAeqH,GACbgH,KAAKmd,aAAarlB,KAAKkB,EACzB,GAAC,CAAAlI,IAAA,oBAAAa,MAED,SAAkBqH,GAChB,IAAM2kB,EAAM3d,KAAKmd,aAAa9f,QAAQrE,IACzB,IAAT2kB,GACF3d,KAAKmd,aAAaxc,OAAOgd,EAAK,EAElC,GAEA,CAAA7sB,IAAA,UAAAa,MAWA,SAAQqH,EAAMX,EAAUmkB,EAAeoB,GAAc,IAAA/V,EAAA,KAC9CxP,GAAa6E,EAAa7E,KAC7BA,EAAW,WAEX,GAEF,IAAMqB,EAAOV,EAAKU,KACZmkB,EAAkB7d,KAAK8d,iBAAiBpkB,GAC9C,GAAImkB,EAAgBE,KAGlB,OAFA/d,KAAK0c,kBAAkBkB,QACvBvlB,EAASwlB,EAAgBvmB,KAK3B,GAFA0I,KAAKge,UAAUtkB,EAAM8iB,GACrBxc,KAAK0c,kBAAkBkB,GAClB5d,KAAKpE,QAAQqiB,SAAlB,CAKIje,KAAKid,QAAUvjB,EAAKkI,OACtB5I,EAAKklB,SAAWle,KAAKid,OAAOnb,QAAQ,KAAMpI,EAAKN,KAAM,CACnD4H,KAAM,aACNrH,MAAOX,EAAKW,QAGVX,EAAKklB,UACPhhB,EAAoBlE,EAAKU,KAAM,CAC7B,CAAE5I,IAAK,YAAaa,MAAOqH,EAAKklB,aAKtCle,KAAKod,gBAAgBtlB,KAAK4B,GAC1B,IACEsG,KAAKme,gBAAgBzkB,EAAM,SAACpC,EAAKC,EAAMyL,GACrC6E,EAAKuW,uBAAuB1kB,GAExBV,EAAKklB,UACPrW,EAAKoV,OAAOoB,oBAAoBrlB,EAAKklB,SAAU5mB,EAAKC,EAAMyL,GAG5D3K,EAASf,EAAKC,EAChB,EACF,CAAE,MAAOD,GAGY,IAAAgnB,EAFnBte,KAAKoe,uBAAuB1kB,GAExBV,EAAKklB,WACI,QAAXI,EAAAte,KAAKid,cAAM,IAAAqB,GAAXA,EAAaC,QAAQvlB,EAAKklB,WAG5B7lB,EAASf,EACX,CAlCA,MAFEe,EAAS,IAAInG,MAAM,qBAqCvB,GAEA,CAAApB,IAAA,OAAAa,MAMA,SAAK0G,GAAU,IAAAyQ,EAAA,KACR5L,EAAa7E,KAGlB2H,KAAKud,aAAellB,EAChB2H,KAAKwe,mBAGLxe,KAAKwd,iBACPxd,KAAKwd,eAAiBiB,cAAcze,KAAKwd,iBAE3Cxd,KAAKwd,eAAiBkB,YAAY,WAChC5V,EAAK0V,gBACP,EAAG,MACL,GAEA,CAAA1tB,IAAA,mBAAAa,MAQA,SAAiBqH,GAEf,IADA,IAAIqb,EAAI,KACCpgB,EAAI,EAAG4E,EAAMmH,KAAKkd,WAAW/oB,OAAQF,EAAI4E,EAAK5E,IAErD,KADAogB,EAAIrU,KAAKkd,WAAWjpB,GAAG+E,EAAMgH,KAAKpE,gBACd9C,IAAVub,EAAE/c,IACV,MAAO,CAAEymB,MAAM,EAAMzmB,IAAK+c,EAAE/c,KAGhC,MAAO,CAAEymB,MAAM,EAAOzmB,IAAK,KAC7B,GAEA,CAAAxG,IAAA,kBAAAa,MAOA,SAAgBqH,EAAMX,GAAU,IAAAsR,EAAA,KACxBgV,EAAoB3e,KAAKgd,YAAY4B,WAAW5lB,GAClD2lB,EAAkBC,WACpB5e,KAAKwH,IAAIqX,SAAS7lB,EAAM,SAAC1B,EAAKC,EAAMyL,GAC9B1L,EACFqS,EAAKmV,YAAYxnB,EAAK0B,EAAMX,GAE5BA,EAASf,EAAKC,EAAMyL,EAExB,GACS2b,EAAkBtrB,MAC3BgF,EAASsmB,EAAkBtrB,OAE3B2M,KAAKwH,IAAIqX,SAASF,EAAkBjjB,QAASrD,EAEjD,GAEA,CAAAvH,IAAA,cAAAa,MAoBA,SAAY2F,EAAK0B,EAAMX,GACrB,IAAI0mB,GAAc,EAClB,GAAI/e,KAAKpE,QAAQojB,cAAe,CAC9B,IAAK,IAAI/qB,EAAI,EAAG4E,EAAMkkB,EAAMkC,iBAAiB9qB,OAAQF,EAAI4E,EAAK5E,IAC5D,GAAIqD,EAAIyX,OAASgO,EAAMkC,iBAAiBhrB,GAAI,CAC1C8qB,GAAc,EACd,KACF,CAEEA,GAAe7hB,EAAiB8C,KAAKpE,QAAQsjB,cAC/ClmB,EAAKmmB,QAAUnmB,EAAKmmB,QAAUnmB,EAAKmmB,QAAU,EAAI,EAC7CnmB,EAAKmmB,QAAUnf,KAAKpE,QAAQsjB,aAC9BH,GAAc,GAGpB,CACIA,EACF/e,KAAKof,iBAAiBpmB,EAAMX,GAE5BA,EAASf,EAEb,GAEA,CAAAxG,IAAA,mBAAAa,MAOA,SAAiBqH,EAAMX,GAAU,IAAAuR,EAAA,KAC/B5J,KAAKqd,WAAWvlB,KAAK,CAAEkB,KAAAA,EAAMX,SAAAA,IAExB2H,KAAKsd,cACRtd,KAAKsd,YAAcoB,YAAY,WAC7B,KAAO9U,EAAKyT,WAAWlpB,QAAQ,CAC7B,IAAMkrB,EAAczV,EAAKyT,WAAWzX,QACpCgE,EAAKuU,gBAAgBkB,EAAYrmB,KAAMqmB,EAAYhnB,SACrD,CACF,EAAG2H,KAAKpE,QAAQojB,eAEpB,GAEA,CAAAluB,IAAA,yBAAAa,MAQA,SAAuBqH,GACrB,IAAM2kB,EAAM3d,KAAKod,gBAAgB/f,QAAQrE,IAC5B,IAAT2kB,IACF3d,KAAKod,gBAAgBzc,OAAOgd,EAAK,GACjC3d,KAAKwe,iBAET,GAAC,CAAA1tB,IAAA,YAAAa,MAED,SAAU+H,EAAM8iB,GACd,GAAIxc,KAAK3I,QAAU2I,KAAKpE,QAAQ0jB,QAAS,CACvC,IAAIvpB,EACFymB,GACAtf,EAAMxD,EAAM,iCACZwD,EAAMxD,EAAM,wCACd,GAAI3D,EAEF,YADAiK,KAAK3I,OAAOhE,MAAM0C,IAGpBA,EAAUmH,EAAMxD,EAAM,uBAEpBsG,KAAK3I,OAAO0E,IAAIhG,EAEpB,CACF,GAAC,CAAAjF,IAAA,iBAAAa,MAED,WACE,SACEuL,EAAa8C,KAAKud,eACW,IAA7Bvd,KAAKmd,aAAahpB,QACc,IAAhC6L,KAAKod,gBAAgBjpB,SAEjB6L,KAAKwd,iBACPxd,KAAKwd,eAAiBiB,cAAcze,KAAKwd,iBAE3Cxd,KAAKud,eACE,GAGX,I,8FAAC,CAhTQ,G,GAALR,G,GAoMsB,CACxB,aACA,YACA,kBACA,YACA,eACA,eACA,QACA,c,SA5MO,uB,+FAmTX,U,+sBC3TA,IAKMwC,GAAW,WAOf,SAAAA,IAA0B,IAAd3jB,EAAOiB,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,CAAC,G,4FAACkD,CAAA,KAAAwf,GACtBvf,KAAKuJ,UAAYjO,KAAKpC,MACtB8G,KAAKwf,QAAU,EACfxf,KAAKyf,cAAgB,EACrBzf,KAAK4M,SAAW,KAChB5M,KAAK0f,gBAAkB,CAAC,EACxB1f,KAAK2f,gBAAgB/jB,EACvB,CAEA,O,4GAAAgkB,CAAAL,EAAA,EAAAzuB,IAAA,kBAAAa,MAQA,WAA8B,IAAdiK,EAAOiB,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,CAAC,EACjB0M,EAAwC3N,EAAxC2N,UAAWsW,EAA6BjkB,EAA7BikB,SAAUC,EAAmBlkB,EAAnBkkB,oBAEXhnB,IAAdyQ,IACFgW,EAAYQ,eAAexW,UAAYA,QAExBzQ,IAAb+mB,IACFN,EAAYQ,eAAeF,SAAWA,QAEjB/mB,IAAnBgnB,IACFP,EAAYQ,eAAeD,eAAiBA,EAEhD,GAEA,CAAAhvB,IAAA,aAAAa,MAeA,SAAWqH,GAAwB,IAAlBE,EAAG2D,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAGvB,KAAKpC,MACpB8mB,EAAc9mB,EAAM8G,KAAKuJ,WAC3ByW,EAAc,GAAKA,GAAe,OACpChgB,KAAKuJ,UAAYrQ,EACjB8G,KAAKyf,cAAgB,GAGvB,IAAMQ,EAAkBV,EAAYQ,eAAeF,SAC7CK,EAAwBX,EAAYQ,eAAeD,eAEzD,GAAIK,GAAUnnB,EAAMinB,EAAiBjgB,KAAKwf,SACxC,OAAOY,GACLpgB,KAAK4M,SACL5M,KAAK0f,gBAAe,GAAArjB,OACjB4jB,EAAe,uBAClB,GAIJ,GAAIE,GAAUnnB,EAAMknB,EAAuBlgB,KAAKyf,eAC9C,OAAOW,GACLpgB,KAAK4M,SACL5M,KAAK0f,gBAAe,GAAArjB,OACjB6jB,EAAqB,8BACxB,GAIJlgB,KAAKwf,SAAW,EAChBxf,KAAKyf,eAAiB,EAEtB,IAAMY,GAAoBF,GAAUnnB,EAAMinB,EAAiBjgB,KAAKwf,SAC1Dc,EAAYD,EACZzB,EACJyB,IACCF,GAAUnnB,EAAMknB,EAAuBlgB,KAAKyf,eAE/C,OAAOW,GACLpgB,KAAK4M,SACL5M,KAAK0f,gBACL,KACAd,EACAqB,EACAC,EACAI,EAEJ,GAAC,CAAAxvB,IAAA,qBAAAa,MAED,SAAmBib,EAAUhR,GAC3BoE,KAAK4M,SAAWA,EAChB5M,KAAK0f,gBAAkB9jB,CACzB,IAAC,CAxGc,GA6GjB,SAASukB,GAAUnnB,EAAMunB,EAAOf,GAC9B,OAAQxmB,EAAKwnB,iBAAmBD,GAAS,GAAKf,EAAUe,CAC1D,CAEA,SAASH,GACPxT,EACAhR,EACAvI,EACAurB,EACAqB,EACAQ,EACAH,GAEA,IAAI5kB,EAAU,KACRglB,EAAcrtB,EAAQ,IAAInB,MAAMmB,GAAS,KAY/C,OAVKqtB,GAAgB9B,IACnBljB,EAYJ,SACEkR,EACAhR,EACAqkB,EACAQ,EACAH,GAEA,IAAM1P,EACJhV,EAAQgV,aAAgBhV,EAAQF,SAAWE,EAAQF,QAAQkV,YACvD+P,EAAML,EACR,+DACA,sDACEtnB,EAAO,CACX4I,KAAM,CACJ7L,QAAS,CACP6L,KAAM+e,EACNC,MAAO,CACLf,SAAUI,EACVH,eAAgBW,KAItB/T,SAAU,aACVkE,YAAaA,EACb3Y,SAAU,CACRmQ,QACGxM,EAAQ3D,UAAY2D,EAAQ3D,SAASmQ,SAAYxM,EAAQwM,UAG/C,YAAbwE,GACF5T,EAAK4T,SAAW,UAChB5T,EAAK6nB,UAAY,aACjB7nB,EAAKf,SAASjG,KAAO,sBACC,WAAb4a,GACT5T,EAAK6nB,UAAYjlB,EAAQilB,WAAa,UACtC7nB,EAAKf,SAASjG,KAAO4J,EAAQ3D,SAASjG,MAChB,iBAAb4a,IACT5T,EAAK6nB,UAAYjlB,EAAQilB,WAAa,eACtC7nB,EAAKf,SAASjG,KAAO4J,EAAQ3D,SAASjG,MAExC,OAAOgH,CACT,CArDc8nB,CACRlU,EACAhR,EACAqkB,EACAQ,EACAH,IAIG,CAAEjtB,MAAOqtB,EAAa9B,WAAAA,EAAYljB,QAAAA,EAC3C,E,oHA7BAsP,CA3GMuU,GAAW,iBACS,CACtBhW,UAAWjO,KAAKpC,MAChB2mB,cAAU/mB,EACVgnB,oBAAgBhnB,IAiLpB,UC9KA,SAASioB,GAAQnlB,EAAS4L,EAAKnQ,EAAQ2pB,EAAWnhB,EAASod,EAAQrQ,GACjE5M,KAAKpE,QAAUsB,EAAQtB,GACvBoE,KAAK3I,OAASA,EACd0pB,GAAQ/D,YAAY2C,gBAAgB3f,KAAKpE,SACzCmlB,GAAQ/D,YAAYiE,mBAAmBrU,EAAU5M,KAAKpE,SACtDoE,KAAKwH,IAAMA,EACXxH,KAAKC,MAAQ,IAAI8c,GACfgE,GAAQ/D,YACRxV,EACAnQ,EACA2I,KAAKpE,QACLqhB,GAGFjd,KAAKH,QAAUA,EAIf,IAAIiR,EAAS9Q,KAAKpE,QAAQkV,QAAU,KAChCoQ,GAAepQ,IACjB9Q,KAAK8Q,OAASA,EAEd9Q,KAAKpE,QAAQkV,OAAS,6BACtB9Q,KAAKpE,QAAQulB,mBAAmBrQ,OAAS,8BAEzC9Q,KAAK8Q,OAAS,KAGhB9Q,KAAK/H,SAAW,IAAIkkB,GAASnc,KAAKC,MAAOD,KAAKpE,SAC9CoE,KAAKghB,UAAYA,EACjBI,GAAmBxlB,GACnBoE,KAAKqhB,UAAY,KACjBrhB,KAAKshB,cAAgB,MACvB,CA4NA,SAASF,GAAmBxlB,GACtBA,EAAQ2lB,kBACVrvB,MAAMqvB,gBAAkB3lB,EAAQ2lB,gBAEpC,CAOA,SAASL,GAAepQ,GACtB,IAAKA,EACH,OAAO,EAGT,IAAKA,EAAOxI,OAAiC,mBAAjBwI,EAAOxI,MACjC,OAAO,EAGT,IAAIA,EAAQwI,EAAOxI,QAEnB,SAAKA,IAAUA,EAAMyH,QAAkC,mBAAjBzH,EAAMyH,OAK9C,CAhPAgR,GAAQ/D,YAAc,IAAIuC,GALL,CACnBM,SAAU,EACVC,eAAgB,KAKlBiB,GAAQzvB,UAAUkwB,OAAS,SAAU5lB,GAEnC,OADAmlB,GAAQ/D,YAAY2C,gBAAgB/jB,GAC7BoE,IACT,EAEA+gB,GAAQzvB,UAAU+qB,UAAY,SAAUzgB,EAAS6lB,GAC/C,IAAIjhB,EAAaR,KAAKpE,QAClBF,EAAU,CAAC,EACX+lB,IACF/lB,EAAU,CAAEA,QAAS+lB,IAGvBzhB,KAAKpE,QAAUsB,EAAQsD,EAAY5E,EAASF,GAI5C,IAAIoV,EAAS9Q,KAAKpE,QAAQkV,QAAU,KAmBpC,OAlBIoQ,GAAepQ,IACjB9Q,KAAK8Q,OAASA,EAEd9Q,KAAKpE,QAAQkV,OAAS,6BACtB9Q,KAAKpE,QAAQulB,mBAAmBrQ,OAAS,8BAEzC9Q,KAAK8Q,OAAS,KAGhB9Q,KAAK/H,UAAY+H,KAAK/H,SAASokB,UAAUrc,KAAKpE,SAC9CoE,KAAKghB,WAAahhB,KAAKghB,UAAU3E,UAAUrc,KAAKpE,SAChDwlB,GAAmBxlB,GACnBoE,KAAKwhB,OAAOxhB,KAAKpE,SAEbslB,GAAetlB,EAAQkV,UACzB9Q,KAAK8Q,OAASlV,EAAQkV,QAGjB9Q,IACT,EAEA+gB,GAAQzvB,UAAUyK,IAAM,SAAU/C,GAChC,IAAIW,EAAQqG,KAAK0hB,mBACjB,OAAO1hB,KAAK2hB,KAAKhoB,EAAOX,EAC1B,EAEA+nB,GAAQzvB,UAAU4B,MAAQ,SAAU8F,GAClCgH,KAAK2hB,KAAK,QAAS3oB,EACrB,EAEA+nB,GAAQzvB,UAAU6B,KAAO,SAAU6F,GACjCgH,KAAK2hB,KAAK,OAAQ3oB,EACpB,EAEA+nB,GAAQzvB,UAAUwb,KAAO,SAAU9T,GACjCgH,KAAK2hB,KAAK,UAAW3oB,EACvB,EAEA+nB,GAAQzvB,UAAU8B,QAAU,SAAU4F,GACpCgH,KAAK2hB,KAAK,UAAW3oB,EACvB,EAEA+nB,GAAQzvB,UAAU+B,MAAQ,SAAU2F,GAClCgH,KAAK2hB,KAAK,QAAS3oB,EACrB,EAEA+nB,GAAQzvB,UAAUgC,SAAW,SAAU0F,GACrCgH,KAAK2hB,KAAK,WAAY3oB,EACxB,EAEA+nB,GAAQzvB,UAAUswB,KAAO,SAAUvpB,GACjC2H,KAAKC,MAAM2hB,KAAKvpB,EAClB,EAEA0oB,GAAQzvB,UAAUuwB,aAAe,SAAU7gB,EAAMQ,EAAU7H,GACzD,OAAOqG,KAAKghB,WAAahhB,KAAKghB,UAAUa,aAAa7gB,EAAMQ,EAAU7H,EACvE,EAEAonB,GAAQzvB,UAAUwwB,wBAA0B,SAAUzc,GACpD,OAAOrF,KAAKghB,WAAahhB,KAAKghB,UAAUc,wBAAwBzc,EAClE,EAEA0b,GAAQzvB,UAAUywB,YAAc,SAAU1c,GACxC,OAAOrF,KAAKghB,WAAahhB,KAAKghB,UAAUe,YAAY1c,EACtD,EAEA0b,GAAQzvB,UAAU0wB,iBAAmB,SAAUhpB,GAC7C,OAAOgH,KAAKwH,IAAIwa,iBAAiBhpB,EACnC,EAEA+nB,GAAQzvB,UAAU2wB,gBAAkB,SAAU/K,GAC5ClX,KAAKwH,IAAI2P,gBAAgBD,EAC3B,EAIA6J,GAAQzvB,UAAUqwB,KAAO,SAAUO,EAAclpB,GAC/C,IAAIX,EAKJ,GAJIW,EAAKX,WACPA,EAAWW,EAAKX,gBACTW,EAAKX,UAEV2H,KAAKpE,QAAQumB,uBAAyBniB,KAAKoiB,iBAAiBppB,IAC9D,GAAIX,EAAU,CACZ,IAAIhF,EAAQ,IAAInB,MAAM,0BACtBmB,EAAM2F,KAAOA,EACbX,EAAShF,EACX,OAGF,IACE2F,EAAKW,MAAQX,EAAKW,OAASuoB,EAE3BliB,KAAKqiB,mBAAmBrpB,GAGxBgH,KAAKsiB,gBAAgBtpB,GAErB,IAAMgoB,EAAYhhB,KAAKghB,UACnBA,IACFA,EAAUuB,oBAAoBvpB,GAC9BA,EAAKwpB,gBAAkBxB,EAAUyB,cAAgB,IAGnDziB,KAAK/H,SAAS8D,IAAI/C,EAAMX,EAC1B,CAAE,MAAOtF,GACHsF,GACFA,EAAStF,GAEXiN,KAAK3I,OAAOhE,MAAMN,EACpB,CACF,EAEAguB,GAAQzvB,UAAU+wB,mBAAqB,SAAUrpB,GAAM,IAAA8G,EAAA4iB,EAC/Cza,EAAmB,QAAfnI,EAAGE,KAAKH,eAAO,IAAAC,OAAA,EAAZA,EAAcmQ,UAErBtV,EAAa,CACjB,CAAE7J,IAAK,aAAca,MAAmB,QAAd+wB,EAAE1iB,KAAKH,eAAO,IAAA6iB,OAAA,EAAZA,EAAcC,WAC1C,CAAE7xB,IAAK,UAAWa,MAAOsW,aAAI,EAAJA,EAAMkB,QAC/B,CAAErY,IAAK,WAAYa,MAAOsW,aAAI,EAAJA,EAAMgB,UAE9BjQ,EAAK4pB,aACPjoB,EAAW7C,KAAK,CAAEhH,IAAK,cAAea,MAAO,SAE/CuL,EAAoBlE,EAAKU,KAAMiB,GAE/BsN,SAAAA,EAAMjG,SAAS,qBAAsB,CACnC,CAAElR,IAAK,0BAA2Ba,MAAOqH,EAAKI,OAElD,EAEA2nB,GAAQzvB,UAAUowB,iBAAmB,WACnC,OAAO1hB,KAAKpE,QAAQ6R,UAAY,OAClC,EAEAsT,GAAQzvB,UAAU8wB,iBAAmB,SAAUppB,GAC7C,IAAKA,EAAK4pB,YACR,OAAO,EAET,IAAIC,EA8CN,SAA0B7pB,GACxB,IAAIjD,EAAUiD,EAAKjD,SAAW,GAC1BoB,GAAS6B,EAAK1B,KAAO,CAAC,GAAGH,OAASD,OAAO8B,EAAK1B,KAClD,OAAOvB,EAAU,KAAOoB,CAC1B,CAlDiB2rB,CAAiB9pB,GAChC,OAAIgH,KAAKshB,gBAAkBuB,IAG3B7iB,KAAKqhB,UAAYroB,EAAK1B,IACtB0I,KAAKshB,cAAgBuB,GACd,EACT,EAEA9B,GAAQzvB,UAAUgxB,gBAAkB,SAAUtpB,GAG5C,GAAIgH,KAAK8Q,OAAQ,CAEf,IAAI7I,EAAOjI,KAAK8Q,OAAOxI,QAAQyH,SAE/B,GAwEJ,SAAsB9H,GACpB,IAAKA,IAASA,EAAKvR,SAAmC,mBAAjBuR,EAAKvR,QACxC,OAAO,EAGT,IAAIwS,EAAcjB,EAAKvR,UAEvB,IACGwS,IACAA,EAAY6Z,WACZ7Z,EAAY8Z,WACmB,mBAAzB9Z,EAAY6Z,UACc,mBAA1B7Z,EAAY8Z,UAEnB,OAAO,EAGT,OAAO,CACT,CA1FQC,CAAahb,GAAO,CACtBA,EAAKib,OAAO,qBAAsBlqB,EAAKI,MACvC6O,EAAKib,OAAO,qBAAqB,GACjCjb,EAAKib,OAAO,SAAS,GACrBjb,EAAKib,OACH,mBAAkB,uCAAA7mB,OACqBrD,EAAKI,OAE9C6O,EAAKib,OACH,yBAAwB,6CAAA7mB,OACqBrD,EAAKI,OAIpD,IAAI+pB,EAAoBlb,EAAKvR,UAAUqsB,WACnCK,EAAqBnb,EAAKvR,UAAUssB,YAEpChqB,EAAKZ,QACPY,EAAKZ,OAAOirB,oBAAsBF,EAClCnqB,EAAKZ,OAAOkrB,qBAAuBF,GAEnCpqB,EAAKZ,OAAS,CACZirB,oBAAqBF,EACrBG,qBAAsBF,EAG5B,CACF,CACF,EAgEA,UC5TA,SAASG,GAAcvqB,EAAM4C,EAASvD,GAChCW,EAAK4pB,cACP5pB,EAAKU,KAAKkpB,aAAc,GAEtB5pB,EAAKc,gBACPd,EAAKU,KAAKI,cAAgBd,EAAKc,eAEjCzB,EAAS,KAAMW,EACjB,CAEA,SAASwqB,GAAkBxqB,EAAM4C,EAASvD,GACxC,IAAIorB,EAAiB7nB,EAAQF,SAAW,CAAC,EACrC+nB,EAAe7hB,aACV6hB,EAAe7hB,KAGxB5I,EAAKU,KAAOwD,EAAQlE,EAAKU,KAAM+pB,GAC/BprB,EAAS,KAAMW,EACjB,CAEA,SAAS0qB,GAAiB1qB,EAAM4C,EAASvD,GACnCW,EAAKwpB,iBACPtlB,EAAMlE,EAAM,sBAAuBA,EAAKwpB,iBAE1CnqB,EAAS,KAAMW,EACjB,CAEA,SAAS2qB,GAAoB3qB,EAAM4C,EAASvD,GAC1C,GAAKW,EAAKjD,QAAV,CAIA,IAAI6tB,EAAY,0BACZhS,EAAQ1U,EAAMlE,EAAM4qB,GAKxB,GAJKhS,IAEHA,EAAQ1U,EAAMlE,EADd4qB,EAAY,oBAGVhS,EAAO,CACT,IAAMA,EAAMM,YAAaN,EAAMM,UAAUC,YAGvC,OAFAjV,EAAMlE,EAAM4qB,EAAY,yBAA0B5qB,EAAKjD,cACvDsC,EAAS,KAAMW,GAKjBkE,EAAMlE,EAAM4qB,EAAY,SADT1mB,EADHA,EAAMlE,EAAM4qB,EAAY,WAAa,CAAC,EACpB,CAAE7tB,QAASiD,EAAKjD,UAEhD,CACAsC,EAAS,KAAMW,EAjBf,MAFEX,EAAS,KAAMW,EAoBnB,CAEA,SAASgV,GAAc3W,GACrB,OAAO,SAAU2B,EAAM4C,EAASvD,GAC9B,I3BgFegc,E2BhFXwP,EAAU3mB,EAAQlE,GAClB+J,EAAW,KACf,IACM7F,EAAatB,EAAQwS,aACvBrL,EAAWnH,EAAQwS,UAAUyV,EAAQnqB,KAAMV,GAE/C,CAAE,MAAOjG,GAOP,OANA6I,EAAQwS,UAAY,KACpB/W,EAAOhE,MACL,gFACAN,QAEFsF,EAAS,KAAMW,EAEjB,C3BmEKxG,EADU6hB,E2BjECtR,I3BkEInR,EAAOyiB,EAAEkB,KAAM,Y2BjEjCxS,EAASwS,KACP,SAAUuO,GACJA,IACFD,EAAQnqB,KAAOoqB,GAEjBzrB,EAAS,KAAMwrB,EACjB,EACA,SAAUxwB,GACRgF,EAAShF,EAAO2F,EAClB,GAGFX,EAAS,KAAMwrB,EAEnB,CACF,CAEA,SAASE,GAAmB/qB,EAAM4C,EAASvD,GACzC,IAAKuD,EAAQooB,WACX,OAAO3rB,EAAS,KAAMW,GAExB,IACIZ,EAAS8E,EAAMlE,EAAM,gBAAkB,CAAC,EAC5CZ,EAAgB,eAAIwD,EACpB5C,EAAKU,KAAKtB,OAASA,EACnBC,EAAS,KAAMW,EACjB,CAEA,SAASirB,GAAkBroB,EAAS5J,GAC9BkL,EAAatB,EAAQ5J,MACvB4J,EAAQ5J,GAAQ4J,EAAQ5J,GAAMG,WAElC,CAEA,SAAS+xB,GAAqBlrB,EAAM4C,EAASvD,GAC3C,IAAI8rB,EAAoBvoB,EAAQulB,mBAGhC8C,GAAkBE,EAAmB,aACrCF,GAAkBE,EAAmB,eACrCF,GAAkBE,EAAmB,yBAE9BA,EAAkBlO,YACzBjd,EAAKU,KAAKzB,SAASmsB,mBAAqBD,EACxC9rB,EAAS,KAAMW,EACjB,CAEA,SAASqrB,GAAkBrrB,EAAM4C,EAASvD,GACxC,IAAIc,EAAa+D,EACflE,EAAKf,SAASqsB,OAAOrsB,SAASkB,WAC9BH,EAAKG,YAWP,GARI+D,EAAMlE,EAAM,sBACdG,EAAWorB,cAAe,GAGxBvrB,EAAK4pB,cACPzpB,EAAWqrB,YAAcxrB,EAAK4pB,aAG5B5pB,EAAK1B,IACP,IACE6B,EAAWsrB,UAAY,CACrB1uB,QAASiD,EAAK1B,IAAIvB,QAClB/D,KAAMgH,EAAK1B,IAAItF,KACf0yB,iBAAkB1rB,EAAK1B,IAAImF,aAAezD,EAAK1B,IAAImF,YAAYzK,KAC/DspB,SAAUtiB,EAAK1B,IAAIkiB,SACnBljB,KAAM0C,EAAK1B,IAAImiB,WACfljB,OAAQyC,EAAK1B,IAAIoiB,aACjBviB,MAAO6B,EAAK1B,IAAIH,MAEpB,CAAE,MAAOpE,GACPoG,EAAWsrB,UAAY,CAAEE,OAAQztB,OAAOnE,GAC1C,CAGFiG,EAAKU,KAAKzB,SAASkB,WAAa+D,EAC9BlE,EAAKU,KAAKzB,SAASkB,WACnBA,GAEFd,EAAS,KAAMW,EACjB,C,uGCpJO,IAAMoD,GAAc,GAAHC,O,ynBAAAuL,CVMS,CAC/B,KACA,OACA,SACA,WACA,SACA,mBACA,kBACA,wBACA,uBACA,eACA,cACA,yBACA,aACA,YACA,gBUpBoB,CACpB,YACA,cACA,aACA,UACA,QACA,WACA,SACA,mBACA,qBACA,sBACA,kBACA,eACA,iBACA,QACA,SACA,SACA,MACA,OACA,OACA,OACA,gBACA,oBACA,sBACA,eACA,aACA,aACA,cACA,0BACA,SACA,YACA,WACA,UACA,SACA,eACA,kBACA,iBACA,UACA,SACA,UACA,WAIF,IAAiBxL,YAAAA,IChDjB,SAASwoB,GAAY5rB,EAAMiiB,GACzB,OAAI/d,EAAM+d,EAAU,qCACV/d,EAAMlE,EAAM,4BAGxB,CCHA,SAAS6rB,GAAmB7rB,EAAM4C,EAASvD,GACzC,GAAIW,EAAK1B,KAA4C,iBAArClB,GAAY2jB,MAAM/gB,EAAK1B,KAAKtF,KAAyB,CACnE,IAAIwqB,EAAgB,IAAItqB,MACxBsqB,EAAcxqB,KAAOgH,EAAK1B,IAAItF,KAC9BwqB,EAAczmB,QAAUiD,EAAK1B,IAAIvB,QACjCymB,EAAcrlB,MAAQ6B,EAAK1B,IAAIH,MAC/BqlB,EAAc3B,OAAS7hB,EAAK1B,IAC5B0B,EAAK1B,IAAMklB,CACb,CACAnkB,EAAS,KAAMW,EACjB,CAEA,SAAS8rB,GAAoB9rB,EAAM4C,EAASvD,GAE1C,GADAW,EAAKU,KAAOV,EAAKU,MAAQ,CAAC,EACtBV,EAAK1B,IACP,IACE0B,EAAK+rB,UACH/rB,EAAK1B,IAAI0tB,kBACT5uB,GAAYP,MAAMmD,EAAK1B,IAAK0B,EAAKY,YAE/BgC,EAAQqpB,iBAoBlB,SAAyBjsB,GACvB,IAAIqZ,EAAQ,GACR/a,EAAM0B,EAAK1B,IAEf+a,EAAMva,KAAKR,GAEX,KAAOA,EAAIujB,QAAUvjB,EAAIwjB,OACvBxjB,EAAMA,EAAIujB,QAAUvjB,EAAIwjB,MACxBzI,EAAMva,KAAKR,I9B6gBf,SAAyB0B,EAAMksB,GAC7B,IAAI9sB,EAASY,EAAKU,KAAKtB,QAAU,CAAC,EAC9B+sB,GAAe,EAEnB,IAAI,IACwBnnB,EADxBC,EAAA1D,EACkB2qB,GAAM,IAA1B,IAAAjnB,EAAArI,MAAAoI,EAAAC,EAAAtL,KAAA6H,MAA4B,KAAjBnH,EAAK2K,EAAArM,MACVc,EAAOY,EAAO,oBAChB+E,EAASuD,EAAMvD,EAAQZ,EAAiBnE,EAAM+xB,iBAC9CD,GAAe,EAEnB,CAEA,OAAA7tB,GAAA2G,EAAAlL,EAAAuE,EAAA,SAAA2G,EAAA1L,GAAA,CACI4yB,IACFnsB,EAAKU,KAAKtB,OAASA,EAEvB,CAAE,MAAOrF,GACPiG,EAAKG,WAAWksB,cAAgB,WAAatyB,EAAEgD,OACjD,CACF,C8B7hBEmH,CAAkBlE,EAAMqZ,EAC1B,CA/BQ4S,CAAgBjsB,EAEpB,CAAE,MAAOjG,GACPsE,GAAOhE,MAAM,wCAAyCN,GACtD,IACEiG,EAAKjD,QACHiD,EAAK1B,IAAIvB,SACTiD,EAAK1B,IAAI6a,aACTnZ,EAAKjD,SACLmB,OAAO8B,EAAK1B,IAChB,CAAE,MAAOguB,GACPtsB,EAAKjD,QAAUmB,OAAO8B,EAAK1B,MAAQJ,OAAOouB,EAC5C,QACOtsB,EAAK1B,GACd,CAEFe,EAAS,KAAMW,EACjB,CAgBA,SAASusB,GAA4BvsB,EAAM4C,EAASvD,GAC7CW,EAAKjD,SAAYiD,EAAK+rB,WAAc/rB,EAAKZ,QAC5CC,EAAS,IAAInG,MAAM,0CAA2C,MAEhEmG,EAAS,KAAMW,EACjB,CAEA,SAASwsB,GAAYxsB,EAAM4C,EAASvD,GAClC,IAAIuY,EACDhV,EAAQF,SAAWE,EAAQF,QAAQkV,aAAgBhV,EAAQgV,YAC9D5X,EAAKU,KAAOwD,EAAQlE,EAAKU,KAAM,CAC7BkX,YAAaA,EACbjX,MAAOX,EAAKW,MACZia,SAAUhY,EAAQgY,SAClBhH,SAAU,UACViU,UAAW,aACXnU,SAAU,aACV+Y,OAAQ,CAAC,EACTrsB,KAAMJ,EAAKI,KACXnB,SAAU,CACRjG,KAAM,qBACNoW,QAASxM,EAAQwM,SAEnBhQ,OAAQY,EAAKZ,SAEfC,EAAS,KAAMW,EACjB,CAoEA,SAAS0sB,GAAQ1sB,EAAM4C,EAASvD,GAC1BW,EAAK+rB,UACH/rB,EAAK+rB,UAAUhK,WA2CvB,SAA2B/hB,EAAM4C,EAASvD,GAKxC,IAJA,IAAI0iB,EAAa/hB,EAAK+rB,UAAUhK,WAC5BY,EAAS,GAETgK,EAAmB5K,EAAW5mB,OACzBF,EAAI,EAAGA,EAAI0xB,EAAkB1xB,IAAK,CACzC,IAAI2d,EAAQgU,GAAW5sB,EAAM+hB,EAAW9mB,GAAI2H,GAC5C+f,EAAO7jB,KAAK8Z,EACd,CAEA1U,EAAMlE,EAAM,YAAa,CAAE2Y,YAAagK,IACxCtjB,EAAS,KAAMW,EACjB,CAtDM6sB,CAAkB7sB,EAAM4C,EAASvD,GAwDvC,SAAsBW,EAAM4C,EAASvD,GACnC,IAAIlB,EAAQ2uB,GAAc9sB,GAE1B,GAAI7B,EAAO,CAET+F,EAAMlE,EAAM,YAAa,CAAE4Y,MADfgU,GAAW5sB,EAAMA,EAAK+rB,UAAWnpB,KAE7CvD,EAAS,KAAMW,EACjB,KAAO,CACL,IAAI+rB,EAAY/rB,EAAK+rB,UACjBgB,EAAQ3vB,GAAYqkB,gBAAgBsK,EAAUhvB,SAC9CiwB,EAAYC,GAAWlB,EAAWgB,EAAM,GAAInqB,GAC5C7F,EAAUgwB,EAAM,GAEpB/sB,EAAKjD,QAAUiwB,EAAY,KAAOjwB,EAClCmwB,GAAeltB,EAAM4C,EAASvD,EAChC,CACF,CAtEM8tB,CAAantB,EAAM4C,EAASvD,GAG9B6tB,GAAeltB,EAAM4C,EAASvD,EAElC,CAEA,SAAS6tB,GAAeltB,EAAM4C,EAASvD,GACrC,IAAItC,EAAUiD,EAAKjD,QACfqC,EAASY,EAAKZ,OAEbrC,IACHA,EAAU,6CAEZ,IAAIX,EAAS,CACXwM,KAAM7L,GAGJqC,IACFhD,EAAOwrB,MAAQ1jB,EAAQ9E,IAGzB8E,EAAMlE,EAAM,YAAa,CAAEjD,QAASX,IACpCiD,EAAS,KAAMW,EACjB,CAEA,SAAS8sB,GAAc9sB,GAAwB,IAEzC7B,IAFgC0F,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,OAEb7D,EAAK+rB,WAAW5tB,MAS1C,OAPEA,GACiB,IAAjBA,EAAMhD,QACN6E,EAAKotB,qBACLptB,EAAKotB,oBAAoBjvB,QAEzBA,EAAQ6B,EAAKotB,oBAAoBjvB,OAE5BA,CACT,CAkCA,SAASyuB,GAAW5sB,EAAM+rB,EAAWnpB,GACnC,IAAIuW,EAAcnZ,GAAQA,EAAKU,KAAKyY,YAChC/Z,EAASY,GAAQA,EAAKZ,OACtBjB,EAAQ2uB,GAAc9sB,EAAM+rB,GAE5BgB,EAAQ3vB,GAAYqkB,gBAAgBsK,EAAUhvB,SAG9C6b,EAAQ,CACVM,UAAW,CACTmU,MAJYJ,GAAWlB,EAAWgB,EAAM,GAAInqB,GAK5C7F,QAJUgwB,EAAM,KAYpB,GAJI5T,IACFP,EAAMM,UAAUC,YAAcA,GAG5Bhb,EAAO,CAKT,IAAI0iB,EACAyM,EACAvX,EACAwX,EACAjQ,EACAkQ,EACAvyB,EAAGwyB,EAGP,IAbqB,IAAjBtvB,EAAMhD,SACRyd,EAAMM,UAAU/a,MAAQ4tB,EAAUzK,SAClC1I,EAAMM,UAAUb,IAAMna,OAAO6tB,EAAUxK,eAUzC3I,EAAMJ,OAAS,GACVvd,EAAI,EAAGA,EAAIkD,EAAMhD,SAAUF,EAE9BqyB,EAAQ,CACNhL,UAFFzB,EAAa1iB,EAAMlD,IAEIT,IAAM0J,EAAc2c,EAAWrmB,KAAO,YAC3DwC,OAAQ6jB,EAAWvjB,MAAQ,KAC3BsM,OACGiX,EAAWrjB,MAA4B,MAApBqjB,EAAWrjB,KAE3BqjB,EAAWrjB,KADX,cAENP,MAAO4jB,EAAWtjB,QAEhBqF,EAAQ8qB,eACVJ,EAAM9yB,IAAMqmB,EAAWrmB,KAGvB8yB,EAAM1jB,QACN0jB,EAAM1jB,OAAO+jB,UACbL,EAAM1jB,OAAO+jB,SAAS,sBAKxB5X,EAAOwX,EAAMjQ,EAAO,MACpBkQ,EAAgB3M,EAAWnjB,QAAUmjB,EAAWnjB,QAAQvC,OAAS,KAE/DsyB,EAAMltB,KAAKE,MAAM+sB,EAAgB,GACjCD,EAAM1M,EAAWnjB,QAAQmB,MAAM,EAAG4uB,GAClC1X,EAAO8K,EAAWnjB,QAAQ+vB,GAC1BnQ,EAAOuD,EAAWnjB,QAAQmB,MAAM4uB,IAG9B1X,IACFuX,EAAMvX,KAAOA,IAGXwX,GAAOjQ,KACTgQ,EAAM5vB,QAAU,CAAC,EACb6vB,GAAOA,EAAIpyB,SACbmyB,EAAM5vB,QAAQ6vB,IAAMA,GAElBjQ,GAAQA,EAAKniB,SACfmyB,EAAM5vB,QAAQ4f,KAAOA,IAIrBuD,EAAW7hB,OACbsuB,EAAMtuB,KAAO6hB,EAAW7hB,MAG1B4Z,EAAMJ,OAAO1Z,KAAKwuB,IAIpB1U,EAAMJ,OAAOoV,UAETxuB,IACFwZ,EAAMgP,MAAQ1jB,EAAQ9E,GAE1B,CAEA,OAAOwZ,CACT,CAEA,SAASqU,GAAWlB,EAAWgB,EAAOnqB,GACpC,OAAImpB,EAAU/yB,KACL+yB,EAAU/yB,KACR4J,EAAQ6e,gBACVsL,EAEA,WAEX,C,23BCjRA,OAzDA,SAAyB7kB,GAQtB,IACG2lB,EACAC,EATJ7Q,EAAW/U,EAAX+U,YACAziB,EAAG0N,EAAH1N,IACAoP,EAAM1B,EAAN0B,OACAlH,EAAOwF,EAAPxF,QACAsH,EAAO9B,EAAP8B,QACA3K,EAAQ6I,EAAR7I,SACAgb,EAAOnS,EAAPmS,QAKInW,EAAiBmW,KACnBwT,EAAa,IAAIE,gBACjBD,EAAYtQ,WAAW,WACrBqQ,EAAWG,OACb,EAAG3T,IAGLrQ,E,8VAAOd,CAAA,CACL,eAAgB,mBAChB,yBAA0B+T,EAC1BgR,OAAQJ,GAAcA,EAAWI,QAC9BjkB,GAGLwQ,MAAMhgB,EAAK,CACToP,OAAAA,EACAI,QAAAA,EACApB,KAAMlG,IAEL6Z,KAAK,SAAUxS,GACV+jB,GAAWI,aAAaJ,GAC5B,IAAMK,EAAcpkB,EAASC,QAGvBA,EADcxP,EAAImzB,SAAS,gBAE7B,CACE,yBAA0BQ,EAAYh2B,IAAI,0BAC1C,qCAAsCg2B,EAAYh2B,IAChD,sCAEF,iCAAkCg2B,EAAYh2B,IAC5C,mCAGJ,CAAC,EAECi2B,EAAOrkB,EAASqkB,OACtB/uB,EAAS,KAAM+uB,EAAMpkB,EACvB,GACCqkB,MAAM,SAAUh0B,GACfgE,GAAOhE,MAAMA,EAAM0C,SACnBsC,EAAShF,EACX,EACJ,E,ogCCgIA,SAASi0B,GAAmBvxB,EAASgZ,GACnC,IAAIzX,EAAM,IAAIpF,MAAM6D,GAEpB,OADAuB,EAAIyX,KAAOA,GAAQ,YACZzX,CACT,CAEA,OA3LA,SAAuB4J,GASpB,IACG5I,EATJ2d,EAAW/U,EAAX+U,YACAziB,EAAG0N,EAAH1N,IACAoP,EAAM1B,EAAN0B,OACAlH,EAAOwF,EAAPxF,QACAsH,EAAO9B,EAAP8B,QACA3K,EAAQ6I,EAAR7I,SACAkvB,EAAcrmB,EAAdqmB,eACAlU,EAAOnS,EAAPmS,QAQA,KAJE/a,EADEivB,EACQA,IAkId,WAGE,IAcIC,EACAvzB,EAfAwzB,EAAY,CACd,WACE,OAAO,IAAIhU,cACb,EACA,WACE,OAAO,IAAIiU,cAAc,iBAC3B,EACA,WACE,OAAO,IAAIA,cAAc,iBAC3B,EACA,WACE,OAAO,IAAIA,cAAc,oBAC3B,GAIEC,EAAeF,EAAUtzB,OAC7B,IAAKF,EAAI,EAAGA,EAAI0zB,EAAc1zB,IAC5B,IACEuzB,EAAUC,EAAUxzB,KACpB,KACF,CAAE,MAAOgH,GACP,CAGJ,OAAOusB,CACT,CA7JcI,IAIV,OAAOvvB,EAAS,IAAInG,MAAM,6BAE5B,IACE,IACE,IAAI21B,EAAqB,WACvB,IACE,GAAIA,GAA6C,IAAvBvvB,EAAQwvB,WAAkB,CAClDD,OAAqB/uB,EAErB,IAAIivB,EAAgB7qB,EAAY5E,EAAQ0vB,cACxC,GAiJZ,SAAoB1uB,GAClB,OAAOA,GAAKA,EAAEwV,QAAuB,MAAbxV,EAAEwV,MAC5B,CAnJgBmZ,CAAW3vB,GAAU,CACvB,IAEM0K,EAFcxP,EAAImzB,SAAS,gBAG7B,CACE,yBAA0BruB,EAAQ4vB,kBAChC,0BAEF,qCACE5vB,EAAQ4vB,kBACN,sCAEJ,iCAAkC5vB,EAAQ4vB,kBACxC,mCAGJ,CAAC,EAEL,YADA7vB,EAAS0vB,EAAc10B,MAAO00B,EAAcp2B,MAAOqR,EAErD,CAAO,GAkInB,SAA0B1J,GACxB,OAAOA,GAAK4D,EAAS5D,EAAEwV,OAAQ,WAAaxV,EAAEwV,QAAU,KAAOxV,EAAEwV,OAAS,GAC5E,CApIuBqZ,CAAiB7vB,GAAU,CACpC,GAAuB,MAAnBA,EAAQwW,OAAgB,CAE1B,IAAI/Y,EACFgyB,EAAcp2B,OAASo2B,EAAcp2B,MAAMoE,QAC7CsB,GAAOhE,MAAM0C,EACf,CAEAsC,EAAS,IAAInG,MAAMgF,OAAOoB,EAAQwW,SACpC,KAAO,CAMLzW,EAASivB,GADP,+DAEJ,CACF,CACF,CAAE,MAAOc,GAIP,IAAIC,EAEFA,EADED,GAAMA,EAAGjxB,MACLixB,EAEA,IAAIl2B,MAAMk2B,GAElB/vB,EAASgwB,EACX,CACF,EAGA,GADA/vB,EAAQgwB,KAAK1lB,EAAQpP,GAAK,GACtB8E,EAAQiwB,iBAAkB,CAC5BjwB,EAAQiwB,iBAAiB,eAAgB,oBACzCjwB,EAAQiwB,iBAAiB,yBAA0BtS,GACnD,IAAK,IAAL5G,EAAA,EAAAC,EAAqBte,OAAO2M,QAAQqF,QAAAA,EAAW,CAAC,GAAEqM,EAAAC,EAAAnb,OAAAkb,IAAE,CAA/C,IAAAE,EAAA1R,GAAAyR,EAAAD,GAAA,GAAOmZ,EAACjZ,EAAA,GAAExS,EAACwS,EAAA,GACdjX,EAAQiwB,iBAAiBC,EAAGzrB,EAC9B,CACF,CAEIG,EAAiBmW,KACnB/a,EAAQ+a,QAAUA,GAGpB/a,EAAQuvB,mBAAqBA,EAC7BvvB,EAAQmwB,KAAK/sB,EACf,CAAE,MAAOgtB,GAEP,GAA8B,oBAAnBC,eAAgC,CAKzC,IAAK5xB,SAAWA,OAAOV,SACrB,OAAOgC,EACL,IAAInG,MACF,4DAOqC,UAAzC6E,OAAOV,SAASO,KAAKgyB,UAAU,EAAG,IACV,UAAxBp1B,EAAIo1B,UAAU,EAAG,KAEjBp1B,EAAM,OAASA,EAAIo1B,UAAU,IAG/B,IAAIC,EAAiB,IAAIF,eACzBE,EAAeC,WAAa,WAAO,EACnCD,EAAeE,UAAY,WAGzB1wB,EAASivB,GAFC,oBACC,aAEb,EACAuB,EAAeG,QAAU,WACvB3wB,EAAS,IAAInG,MAAM,wBACrB,EACA22B,EAAeI,OAAS,WACtB,IAAIlB,EAAgB7qB,EAAY2rB,EAAeb,cAC/C3vB,EAAS0vB,EAAc10B,MAAO00B,EAAcp2B,MAC9C,EACAk3B,EAAeP,KAAK1lB,EAAQpP,GAAK,GACjCq1B,EAAeJ,KAAK/sB,EACtB,MACErD,EAAS,IAAInG,MAAM,+CAEvB,CACF,CAAE,MAAOozB,GACPjtB,EAASitB,EACX,CACF,EC1HA,SAAS4D,GAAUlT,GACjBhW,KAAKgW,WAAaA,CACpB,CAEAkT,GAAU53B,UAAUH,IAAM,SACxB8kB,EACAra,EACAutB,EACA9wB,EACAkvB,GAEKlvB,GAAa6E,EAAa7E,KAC7BA,EAAW,WAAO,GjC8NtB,SAAuC4d,EAAara,EAASutB,IAC3DA,EAASA,GAAU,CAAC,GACbC,aAAenT,EACtB,IACInZ,EADAusB,EAAc,GAElB,IAAKvsB,KAAKqsB,EACJn4B,OAAOM,UAAUC,eAAeC,KAAK23B,EAAQrsB,IAC/CusB,EAAYvxB,KAAK,CAACgF,EAAGqsB,EAAOrsB,IAAI+N,KAAK,MAGzC,IAAIjW,EAAQ,IAAMy0B,EAAYC,OAAOze,KAAK,MAE1CjP,EAAUA,GAAW,CAAC,GACdvG,KAAOuG,EAAQvG,MAAQ,GAC/B,IAEIgf,EAFAkV,EAAK3tB,EAAQvG,KAAKgI,QAAQ,KAC1BmrB,EAAI5sB,EAAQvG,KAAKgI,QAAQ,MAEjB,IAARksB,KAAqB,IAAPf,GAAYA,EAAIe,IAChClV,EAAIzY,EAAQvG,KACZuG,EAAQvG,KAAOgf,EAAEuU,UAAU,EAAGW,GAAM30B,EAAQ,IAAMyf,EAAEuU,UAAUW,EAAK,KAExD,IAAPf,GACFnU,EAAIzY,EAAQvG,KACZuG,EAAQvG,KAAOgf,EAAEuU,UAAU,EAAGJ,GAAK5zB,EAAQyf,EAAEuU,UAAUJ,IAEvD5sB,EAAQvG,KAAOuG,EAAQvG,KAAOT,CAGpC,CiCxPEsI,CAAgC+Y,EAAara,EAASutB,GAEtD,IACI31B,EAAM0J,EAAYtB,GACtBoE,KAAKwpB,iBAAiB,CACpBvT,YAAAA,EACAziB,IAAAA,EACAoP,OALW,MAMXvK,SAAAA,EACAkvB,eAAAA,EACAlU,QAASzX,EAAQyX,QACjBC,UAAW1X,EAAQ0X,WAEvB,EAEA4V,GAAU53B,UAAUglB,KAAO,SAAApV,GAOxB,IASG+V,EAfJhB,EAAW/U,EAAX+U,YACAra,EAAOsF,EAAPtF,QACAF,EAAOwF,EAAPxF,QACAsH,EAAO9B,EAAP8B,QACA3K,EAAQ6I,EAAR7I,SACAkvB,EAAcrmB,EAAdqmB,eAMA,GAJKlvB,GAAa6E,EAAa7E,KAC7BA,EAAW,WAAO,IAGfqD,EACH,OAAOrD,EAAS,IAAInG,MAAM,8BAU5B,IAJE+kB,EADEjX,KAAKgW,YAActa,EAAQkG,KACX5B,KAAKgW,WAAWrD,SAASjX,GAEzBwB,EAAYxB,IAEZrI,MAClB,OAAOgF,EAAS4e,EAAgB5jB,OAGlC,IACIG,EAAM0J,EAAYtB,GACtBoE,KAAKwpB,iBAAiB,CACpBvT,YAAAA,EACAziB,IAAAA,EACAoP,OALW,OAMXlH,QAASub,EAAgBtlB,MACzBqR,QAAAA,EACA3K,SAAAA,EACAkvB,eAAAA,EACAlU,QAASzX,EAAQyX,QACjBC,UAAW1X,EAAQ0X,WAEvB,EAEA4V,GAAU53B,UAAU6lB,gBAAkB,SACpClB,EACAra,EACAF,EACArD,EACAkvB,GAEKlvB,GAAa6E,EAAa7E,KAC7BA,EAAW,WAAO,GAGpB,IACI7E,EAAM0J,EAAYtB,GACtBoE,KAAKwpB,iBAAiB,CACpBvT,YAAAA,EACAziB,IAAAA,EACAoP,OALW,OAMXlH,QAAAA,EACArD,SAAAA,EACAkvB,eAAAA,EACAlU,QAASzX,EAAQyX,QACjBC,UAAW1X,EAAQ0X,WAEvB,EAKA4V,GAAU53B,UAAUk4B,iBAAmB,WAAY,IAAA3hB,EAAA,KAC7C2I,EACiB,oBAAXzZ,QAA0BA,QACjB,oBAATmP,MAAwBA,KAK9BujB,EAAWjZ,GAAWA,EAAQkZ,MAAQlZ,EAAQkZ,KAAKC,KACnD3xB,EAAO6I,MAAMvP,UAAUuG,MAAMrG,KAAKqL,WAElC4sB,EACFA,EAASG,IAAI,WACX/hB,EAAKgiB,aAAahjB,WAAM/N,EAAWd,EACrC,GAEAgI,KAAK6pB,aAAahjB,WAAM/N,EAAWd,EAEvC,EAEAkxB,GAAU53B,UAAUu4B,aAAe,SAAUV,GAC3C,IAAQztB,EAAiCytB,EAAjCztB,QAASrD,EAAwB8wB,EAAxB9wB,SAAUib,EAAc6V,EAAd7V,UAC3B,GAA4B,oBAAjBwW,aACT,OAWJ,SAAuB1C,EAAM/uB,IACR,IAAIyxB,cACV7H,gBACXmF,EACA,SAAU2C,GACR,EAEF,SAAUzyB,GACRe,EAAS,IAAInG,MAAMoF,GACrB,EAEJ,CAtBW0yB,CAActuB,EAASrD,GAGd,UAAdib,EACF2W,GAAiBd,GAEjBe,GAAef,EAEnB,EAgBA,I,GAAA,MCxKA,SAAStzB,GAAMrC,GACb,IAcIS,EAAGuJ,EAdHpI,EAAS,CACXH,SAAU,KACVk1B,KAAM,KACNlW,KAAM,KACN5e,KAAM,KACN+0B,KAAM,KACNxzB,KAAMpD,EACN2B,SAAU,KACVD,KAAM,KACN4e,SAAU,KACVV,OAAQ,KACRxe,MAAO,MAmBT,IAdW,KADXX,EAAIT,EAAI6J,QAAQ,QAEdjI,EAAOH,SAAWzB,EAAIo1B,UAAU,EAAG30B,GACnCuJ,EAAOvJ,EAAI,GAEXuJ,EAAO,GAIE,KADXvJ,EAAIT,EAAI6J,QAAQ,IAAKG,MAEnBpI,EAAO+0B,KAAO32B,EAAIo1B,UAAUprB,EAAMvJ,GAClCuJ,EAAOvJ,EAAI,IAIF,KADXA,EAAIT,EAAI6J,QAAQ,IAAKG,IACP,CAEZ,IAAW,KADXvJ,EAAIT,EAAI6J,QAAQ,IAAKG,IAcnB,OAXW,KADXvJ,EAAIT,EAAI6J,QAAQ,IAAKG,IAEnBpI,EAAO6e,KAAOzgB,EAAIo1B,UAAUprB,IAE5BpI,EAAO6e,KAAOzgB,EAAIo1B,UAAUprB,EAAMvJ,GAClCmB,EAAOg1B,KAAO52B,EAAIo1B,UAAU30B,IAE9BmB,EAAOD,SAAWC,EAAO6e,KAAKjZ,MAAM,KAAK,GACzC5F,EAAOF,KAAOE,EAAO6e,KAAKjZ,MAAM,KAAK,GACjC5F,EAAOF,OACTE,EAAOF,KAAOm1B,SAASj1B,EAAOF,KAAM,KAE/BE,EAEPA,EAAO6e,KAAOzgB,EAAIo1B,UAAUprB,EAAMvJ,GAClCmB,EAAOD,SAAWC,EAAO6e,KAAKjZ,MAAM,KAAK,GACzC5F,EAAOF,KAAOE,EAAO6e,KAAKjZ,MAAM,KAAK,GACjC5F,EAAOF,OACTE,EAAOF,KAAOm1B,SAASj1B,EAAOF,KAAM,KAEtCsI,EAAOvJ,CAEX,MACEmB,EAAO6e,KAAOzgB,EAAIo1B,UAAUprB,EAAMvJ,GAClCmB,EAAOD,SAAWC,EAAO6e,KAAKjZ,MAAM,KAAK,GACzC5F,EAAOF,KAAOE,EAAO6e,KAAKjZ,MAAM,KAAK,GACjC5F,EAAOF,OACTE,EAAOF,KAAOm1B,SAASj1B,EAAOF,KAAM,KAEtCsI,EAAOvJ,EAWT,IAPW,KADXA,EAAIT,EAAI6J,QAAQ,IAAKG,IAEnBpI,EAAOC,KAAO7B,EAAIo1B,UAAUprB,IAE5BpI,EAAOC,KAAO7B,EAAIo1B,UAAUprB,EAAMvJ,GAClCmB,EAAOg1B,KAAO52B,EAAIo1B,UAAU30B,IAG1BmB,EAAOC,KAAM,CACf,IAAIi1B,EAAYl1B,EAAOC,KAAK2F,MAAM,KAClC5F,EAAO0e,SAAWwW,EAAU,GAC5Bl1B,EAAOR,MAAQ01B,EAAU,GACzBl1B,EAAOge,OAAShe,EAAOR,MAAQ,IAAMQ,EAAOR,MAAQ,IACtD,CACA,OAAOQ,CACT,C,44CC/DA,IAAIm1B,GAAY,KAEVxJ,GAAO,WACX,SAAAA,EAAYnlB,EAAS0oB,I,4FAAQvkB,CAAA,KAAAghB,GAC3B1pB,GAAOmW,KAAK,CAAEC,SAAU7R,EAAQ6R,UAAY,UAC5CzN,KAAKpE,QAAUsB,EAAgB0Y,GAAgBha,EAAS,KAAMvE,IAC9D2I,KAAKpE,QAAQulB,mBAAqBvlB,EAClCoE,KAAKwqB,WAAaxqB,KAAKwqB,YAAc,CAAC,EACtC,IAAM5qB,EAAYI,KAAKwqB,WAAWxJ,UAC5ByJ,EAAezqB,KAAKwqB,WAAWE,aACrC1qB,KAAK2qB,YAAc3qB,KAAKwqB,WAAWG,YACnC3qB,KAAK4qB,MAAQ5qB,KAAKwqB,WAAWI,MAC7B,IAAM5U,EAAahW,KAAKwqB,WAAWxU,WAC7BzF,EAAUvQ,KAAKwqB,WAAW3qB,QAC1BgrB,EAAS7qB,KAAKwqB,WAAWvN,OAEzB3J,EAAY,IAAI4V,GAAUlT,GAC1BxO,EAAM,IAAIsjB,GAAI9qB,KAAKpE,QAAS0X,EAAWyC,EAAQC,GASrD,GARIzF,IACFvQ,KAAKH,QAAU,IAAI0Q,EAAQwa,KAAYvjB,EAAKxH,KAAKpE,SACjDoE,KAAKH,QAAQmrB,eAEXprB,IACFI,KAAKghB,UAAY,IAAIphB,EAAUI,KAAKpE,QAASoE,KAAKH,UAGhDgrB,GnCoGmB,oBAAX9zB,OmCpGiB,CAC3B,IAAMk0B,EAAgBjrB,KAAKpE,QAAQqhB,OACnCjd,KAAKid,OAAS,IAAI4N,EAAO,CACvBhrB,QAASG,KAAKH,QACdmhB,UAAWhhB,KAAKghB,UAChBplB,QAASqvB,IAGPA,EAAc3O,SAAW2O,EAAcC,WACzClrB,KAAKid,OAAOkO,SAASC,OAEzB,CAEAprB,KAAKskB,OACHA,GACA,IAAI+G,GACFrrB,KAAKpE,QACL4L,EACAnQ,GACA2I,KAAKghB,UACLhhB,KAAKH,QACLG,KAAKid,OACL,WAEJ,IAAIzM,EAAUua,KACVO,EAAgC,oBAAbz0B,UAA4BA,SACnDmJ,KAAKurB,SAAW/a,EAAQgb,QAAUhb,EAAQgb,OAAOC,QACjDzrB,KAAK0rB,uBAAyB,EAodlC,SAAiCzzB,EAAU0zB,EAASnb,GAClDvY,EACG8Y,aAAahD,IACbgD,aAAahD,IACbgD,aAAahD,IACbgD,aAAahD,IACbgD,aL5cL,SAAwBha,GACtB,OAAO,SAAUiC,EAAM4C,EAASvD,GAC9B,IAAIuzB,EAAc,CAAC,EAEf70B,GAAUA,EAAOV,WACnBu1B,EAAYp4B,IAAMuD,EAAOV,SAASO,KAClCg1B,EAAYC,aAAe90B,EAAOV,SAAS+c,QAG7C,IAAI0Y,EAAe,aACdlwB,EAAQmwB,WAEoB,IAAtBnwB,EAAQmwB,YACjBD,GAAgB,cAFhBA,EAAe,KAIbA,IAAcF,EAAYI,QAAUF,GAEpC96B,OAAO+J,KAAK6wB,GAAaz3B,OAAS,GACpC+I,EAAMlE,EAAM,eAAgB4yB,GAG9BvzB,EAAS,KAAMW,EACjB,CACF,CKqbkB+U,CAA0ByC,IACvCO,aLpbL,SAAuBha,GACrB,OAAO,SAAUiC,EAAM4C,EAASvD,GAC9B,IAAKtB,EACH,OAAOsB,EAAS,KAAMW,GAExB,IAAIizB,EAAMl1B,EAAOC,WAAa,CAAC,EAC3Bk1B,EAAMn1B,EAAOo1B,QAAU,CAAC,EAC5BjvB,EAAMlE,EAAM,cAAe,CACzBozB,WAAYpzB,EAAKC,UAAYlC,EAAOs1B,kBACpCpzB,UAAWM,KAAKoG,MAAM3G,EAAKC,UAAY,KACvCqzB,WAAY,CACVC,QAASN,EAAIh1B,UACbyV,SAAUuf,EAAIvf,SACd8f,eAAgBP,EAAIQ,cACpBN,OAAQ,CACNhoB,MAAO+nB,EAAI/nB,MACXD,OAAQgoB,EAAIhoB,WAIlB7L,EAAS,KAAMW,EACjB,CACF,CK8ZkB+U,CAAyByC,IACtCO,aL7ZL,SAAuBha,GACrB,OAAO,SAAUiC,EAAM4C,EAASvD,GAC9B,IAAKtB,IAAWA,EAAOC,UACrB,OAAOqB,EAAS,KAAMW,GAKxB,IAHA,IAEI0zB,EAFAC,EAAU,GACVC,EAAa71B,EAAOC,UAAU21B,SAAW,GAEpC14B,EAAI,EAAGC,EAAI04B,EAAWz4B,OAAQF,EAAIC,IAAKD,EAC9Cy4B,EAAME,EAAW34B,GACjB04B,EAAQ70B,KAAK,CAAE9F,KAAM06B,EAAI16B,KAAMmgB,YAAaua,EAAIva,cAElDjV,EAAMlE,EAAM,iCAAkC2zB,GAC9Ct0B,EAAS,KAAMW,EACjB,CACF,CK8YkB+U,CAAyByC,IACtCO,aAAahD,IACbgD,aAAa8b,IACb9b,aAAa8b,IACb9b,aAAa8b,IACb9b,cL1NgB+b,EK0NoBnB,EAAQf,MLzNxC,SAAU5xB,EAAM4C,EAASvD,GAC9B,GAAIy0B,EAAS,CACX,IAAI1wB,EAAcR,EAAQQ,aAAe,GACrC2B,EAAanC,EAAQmC,YAAc,GACvC/E,EAAKU,KAAOozB,EAAQ9zB,EAAKU,KAAM0C,EAAa2B,EAC9C,CACA1F,EAAS,KAAMW,EACjB,IKmNG+X,aAAa8b,IACb9b,aAAa8b,GAA+Bx1B,KAC5C0Z,aAAa8b,IACb9b,aAAa8b,IACb9b,aAAa8b,IL/NlB,IAAqBC,CKgOrB,CAteIC,CAAwB/sB,KAAKskB,OAAOrsB,SAAU+H,KAAMwQ,GAwexD,SAA8BvQ,GAC5BA,EACG+sB,aAAaC,IACbD,aAAa9P,IACb8P,abviBL,SAAyB31B,GACvB,OAAO,SAAU2B,EAAMiiB,GACrB,IAAIiS,EAAaC,QAAQn0B,EAAK4pB,oBACvB5pB,EAAK4pB,YACZ,IAAI5qB,EAAOgB,EAAKc,qBACTd,EAAKc,cACZ,IACMoD,EAAa+d,EAASmS,iBACxBnS,EAASmS,eAAeF,EAAYl1B,EAAMgB,EAE9C,CAAE,MAAOjG,GACPkoB,EAASmS,eAAiB,KAC1B/1B,EAAOhE,MAAM,+CAAgDN,EAC/D,CACA,IACE,GACEmK,EAAa+d,EAAS2J,cACtB3J,EAAS2J,YAAYsI,EAAYl1B,EAAMgB,GAEvC,OAAO,CAEX,CAAE,MAAOjG,GACPkoB,EAAS2J,YAAc,KACvBvtB,EAAOhE,MAAM,qDAAsDN,EACrE,CACA,OAAO,CACT,CACF,Ca4gBkBk6B,CAAiC51B,KAC9C21B,ab3gBL,SAA6B31B,GAC3B,OAAO,SAAU2B,EAAMiiB,GACrB,OAAQQ,GAAaziB,EAAMiiB,EAAU,YAAa5jB,EACpD,CACF,CaugBkB41B,CAAqC51B,KAClD21B,abtgBL,SAAyB31B,GACvB,OAAO,SAAU2B,EAAMiiB,GACrB,OAAOQ,GAAaziB,EAAMiiB,EAAU,WAAY5jB,EAClD,CACF,CakgBkB41B,CAAiC51B,KAC9C21B,aAAaC,GAAkC51B,IACpD,CA/eIg2B,CAAqBrtB,KAAKskB,OAAOrkB,OACjCD,KAAKstB,wBACD7C,IACFzqB,KAAK0qB,aAAe,IAAID,EACtBzqB,KAAKpE,QACLoE,KAAKskB,OAAOtD,UACZhhB,KACAwQ,EACA8a,GAEFtrB,KAAK0qB,aAAa6C,cAGpBvtB,KAAKwtB,gCAAgC5xB,GAGrCoE,KAAK2rB,QAAU3rB,IACjB,CAAC,O,4GAAA4f,CAAAmB,EAAA,EAAAjwB,IAAA,SAAAa,MAcD,SAAOiK,GAEL,OADAoE,KAAKskB,OAAO9C,OAAO5lB,GACZoE,IACT,GAAC,CAAAlP,IAAA,YAAAa,MAED,SAAUiK,EAAS6lB,GAAa,IAAA3hB,EAAAwe,EAAAmP,EAC1B7xB,EAAQ6R,UACVpW,GAAOmW,KAAK,CAAEC,SAAU7R,EAAQ6R,WAElCzN,KAAKwtB,gCAAgC5xB,GACrC,IAAI4E,EAAaR,KAAKpE,QAClBF,EAAU,CAAC,EAiBf,OAhBI+lB,IACF/lB,EAAU,CAAEA,QAAS+lB,IAGvBzhB,KAAKpE,QAAUsB,EAAgBsD,EAAY5E,EAASF,EAASrE,IAC7D2I,KAAKpE,QAAQulB,mBAAqBjkB,EAChCsD,EAAW2gB,mBACXvlB,EACAF,GAGU,QAAZoE,EAAAE,KAAKH,eAAO,IAAAC,GAAZA,EAAcuc,UAAUrc,KAAKpE,SAClB,QAAX0iB,EAAAte,KAAKid,cAAM,IAAAqB,GAAXA,EAAajC,UAAUrc,KAAKpE,QAAQqhB,QACpCjd,KAAKskB,OAAOjI,UAAUrc,KAAKpE,QAAS6lB,GACnB,QAAjBgM,EAAAztB,KAAK0qB,oBAAY,IAAA+C,GAAjBA,EAAmBpR,UAAUrc,KAAKpE,SAClCoE,KAAKstB,wBACEttB,IACT,GAAC,CAAAlP,IAAA,YAAAa,MAED,WACE,OAAOqO,KAAKskB,OAAOjD,SACrB,GAAC,CAAAvwB,IAAA,MAAAa,MAED,WACE,IAAIqH,EAAOgH,KAAK0tB,YAAY7wB,WACxBzD,EAAOJ,EAAKI,KAEhB,OADA4G,KAAKskB,OAAOvoB,IAAI/C,GACT,CAAEI,KAAMA,EACjB,GAAC,CAAAtI,IAAA,QAAAa,MAED,WACE,IAAIqH,EAAOgH,KAAK0tB,YAAY7wB,WACxBzD,EAAOJ,EAAKI,KAEhB,OADA4G,KAAKskB,OAAOpxB,MAAM8F,GACX,CAAEI,KAAMA,EACjB,GAAC,CAAAtI,IAAA,OAAAa,MAED,WACE,IAAIqH,EAAOgH,KAAK0tB,YAAY7wB,WACxBzD,EAAOJ,EAAKI,KAEhB,OADA4G,KAAKskB,OAAOnxB,KAAK6F,GACV,CAAEI,KAAMA,EACjB,GAAC,CAAAtI,IAAA,OAAAa,MAED,WACE,IAAIqH,EAAOgH,KAAK0tB,YAAY7wB,WACxBzD,EAAOJ,EAAKI,KAEhB,OADA4G,KAAKskB,OAAOxX,KAAK9T,GACV,CAAEI,KAAMA,EACjB,GAAC,CAAAtI,IAAA,UAAAa,MAED,WACE,IAAIqH,EAAOgH,KAAK0tB,YAAY7wB,WACxBzD,EAAOJ,EAAKI,KAEhB,OADA4G,KAAKskB,OAAOlxB,QAAQ4F,GACb,CAAEI,KAAMA,EACjB,GAAC,CAAAtI,IAAA,QAAAa,MAED,WACE,IAAIqH,EAAOgH,KAAK0tB,YAAY7wB,WACxBzD,EAAOJ,EAAKI,KAEhB,OADA4G,KAAKskB,OAAOjxB,MAAM2F,GACX,CAAEI,KAAMA,EACjB,GAAC,CAAAtI,IAAA,WAAAa,MAED,WACE,IAAIqH,EAAOgH,KAAK0tB,YAAY7wB,WACxBzD,EAAOJ,EAAKI,KAEhB,OADA4G,KAAKskB,OAAOhxB,SAAS0F,GACd,CAAEI,KAAMA,EACjB,GAAC,CAAAtI,IAAA,mBAAAa,MAED,SAAiBqH,GACf,OAAOgH,KAAKskB,OAAOtC,iBAAiBhpB,EACtC,GAAC,CAAAlI,IAAA,kBAAAa,MAED,SAAgBulB,GACd,OAAOlX,KAAKskB,OAAOrC,gBAAgB/K,EACrC,GAAC,CAAApmB,IAAA,sBAAAa,MAED,SAAoB+E,GAClB,OAAOsJ,KAAK2tB,cAAazrB,GAAC,CAAElB,KAAM,UAAatK,GACjD,GAAC,CAAA5F,IAAA,gBAAAa,MAED,SAAc+E,GACZ,OAAKsJ,KAAKid,OAEHjd,KAAKid,OAAO0Q,cAAcj3B,GAFR,IAG3B,GAAC,CAAA5F,IAAA,wBAAAa,MAED,WACE,IAAI6e,EAAUua,KAET/qB,KAAK4tB,iCAEN5tB,KAAKpE,QAAQiyB,iBACb7tB,KAAKpE,QAAQkyB,6BCrNrB,SAAmC/2B,EAAQg3B,EAASC,GAClD,GAAKj3B,EAAL,CAGA,IAAIk3B,EAEJ,GAA0C,mBAA/BF,EAAQG,mBACjBD,EAAaF,EAAQG,wBAChB,GAAIn3B,EAAOiyB,QAAS,CAEzB,IADAiF,EAAal3B,EAAOiyB,QACbiF,EAAWC,oBAChBD,EAAaA,EAAWC,mBAE1BH,EAAQG,mBAAqBD,CAC/B,CAEAF,EAAQI,wBAER,IAAI3nB,EAAK,WACP,IAAIxO,EAAO6I,MAAMvP,UAAUuG,MAAMrG,KAAKqL,UAAW,IASrD,SAA+B9F,EAAQuC,EAAG80B,EAAKp2B,GACzCjB,EAAOs3B,uBACJr2B,EAAK,KACRA,EAAK,GAAKjB,EAAOs3B,sBAEdr2B,EAAK,KACRA,EAAK,GAAKjB,EAAOs3B,qBAAqBC,iBAExCv3B,EAAOs3B,qBAAuB,MAGhC,IAAIjwB,EAAM9E,EAAEi1B,wBAAwB1nB,MAAMvN,EAAGtB,GAEzCo2B,GACFA,EAAIvnB,MAAM9P,EAAQiB,GAMR,cAARoG,IACF9E,EAAEoyB,wBAA0B,EAEhC,CA/BI8C,CAAsBz3B,EAAQg3B,EAASE,EAAYj2B,EACrD,EACIg2B,IACFxnB,EAAG0nB,mBAAqBD,GAE1Bl3B,EAAOiyB,QAAUxiB,CAtBjB,CAuBF,CD6LQioB,CAAkCje,EAASxQ,MACvCA,KAAK2qB,aAAe3qB,KAAKpE,QAAQ8yB,yBACnC1uB,KAAK2qB,YAAYna,EAASxQ,MAE5BA,KAAK4tB,gCAAiC,GAGrC5tB,KAAK2uB,iCAEN3uB,KAAKpE,QAAQgzB,4BACb5uB,KAAKpE,QAAQizB,8BC5KrB,SAAoC93B,EAAQg3B,EAASC,GACnD,GAAKj3B,EAAL,CAKgC,mBAAvBA,EAAO+3B,aACd/3B,EAAO+3B,YAAYC,eAEnBh4B,EAAOi4B,oBAAoB,qBAAsBj4B,EAAO+3B,aAG1D,IAAIG,EAAmB,SAAUC,GAC/B,IAAIC,EAAQC,EAASC,EACrB,IACEF,EAASD,EAAIC,MACf,CAAE,MAAOl0B,GACPk0B,OAASr2B,CACX,CACA,IACEs2B,EAAUF,EAAIE,OAChB,CAAE,MAAOn0B,GACPm0B,EAAU,yDACZ,CACA,IACEC,EAASH,EAAIG,QACRF,GAAUE,IACbF,EAASE,EAAOF,OAChBC,EAAUC,EAAOD,QAErB,CAAE,MAAOn0B,GACP,CAEGk0B,IACHA,EAAS,0DAGPpB,GAAWA,EAAQuB,0BACrBvB,EAAQuB,yBAAyBH,EAAQC,EAE7C,EACAH,EAAiBF,cAAgBf,EACjCj3B,EAAO+3B,YAAcG,EACrBl4B,EAAOw4B,iBAAiB,qBAAsBN,EAxC9C,CAyCF,CDkIQR,CAAmCje,EAASxQ,MAC5CA,KAAK2uB,gCAAiC,EAG5C,GAAC,CAAA79B,IAAA,0BAAAa,MAED,SAAwBoE,EAASvC,EAAKwC,EAAQC,EAAO5C,EAAOqD,GAC1D,GACGsJ,KAAKpE,QAAQiyB,iBACb7tB,KAAKpE,QAAQkyB,yBAFhB,CAWA,GACE9tB,KAAKpE,QAAQ4zB,wBACbxvB,KAAKurB,UACK,OAAVl4B,GACQ,KAARG,EAEA,MAAO,YAGT,IAAIwF,EACA+rB,EAAY7nB,EACdnH,EACAvC,EACAwC,EACAC,EACA5C,EACA,UACA,qBACA+C,IAEE8G,EAAU7J,IACZ2F,EAAOgH,KAAK0tB,YAAY,CAAC33B,EAAS1C,EAAOqD,KACpC0vB,oBAAsBrB,EAClB7nB,EAAU1J,IACnBwF,EAAOgH,KAAK0tB,YAAY,CAAC33B,EAASvC,EAAKkD,KAClC0vB,oBAAsBrB,GAE3B/rB,EAAOgH,KAAK0tB,YAAY,CAAC33B,EAASW,KAC7BquB,UAAYA,EAEnB/rB,EAAKW,MAAQqG,KAAKpE,QAAQ6zB,mBAC1Bz2B,EAAK4pB,aAAc,EACnB5iB,KAAKskB,OAAOvoB,IAAI/C,EAtChB,CAuCF,GAEA,CAAAlI,IAAA,wBAAAa,MAYA,WAAwB,IAAAkW,EAAA,KACtB,GAAK7H,KAAKpE,QAAQ4zB,wBAA2BxvB,KAAKurB,SAAlD,CAoCA,IACEr5B,MAAMw9B,kBAjCkB,SAACr8B,EAAOs8B,GAChC,GAAI9nB,EAAKjM,QAAQ4zB,wBACX3nB,EAAK6jB,uBAAwB,CAQ/B,GAFA7jB,EAAK6jB,wBAA0B,GAE1Br4B,EAIH,OAIFA,EAAMu8B,cAAe,EAKrB/nB,EAAK0mB,wBAAwBl7B,EAAM0C,QAAS,KAAM,KAAM,KAAM1C,EAChE,CAIF,OAAOA,EAAM8D,KACf,CAKA,CAAE,MAAOpE,GACPiN,KAAKpE,QAAQ4zB,wBAAyB,EACtCxvB,KAAK3M,MAAM,iCAAkCN,EAC/C,CAvCA,CAwCF,GAAC,CAAAjC,IAAA,2BAAAa,MAED,SAAyBw9B,EAAQC,GAC/B,GACGpvB,KAAKpE,QAAQgzB,4BACb5uB,KAAKpE,QAAQizB,0BAFhB,CAOA,IAAI94B,EAAU,6CACd,GAAIo5B,EACF,GAAIA,EAAOp5B,QACTA,EAAUo5B,EAAOp5B,YACZ,CACL,IAAI85B,EAAe3yB,EAAYiyB,GAC3BU,EAAal+B,QACfoE,EAAU85B,EAAal+B,MAE3B,CAEF,IAIIqH,EAJAtC,EACDy4B,GAAUA,EAAOb,iBACjBc,GAAWA,EAAQd,gBAGlBpxB,EAAUiyB,GACZn2B,EAAOgH,KAAK0tB,YAAY,CAAC33B,EAASo5B,EAAQz4B,KAE1CsC,EAAOgH,KAAK0tB,YAAY,CAAC33B,EAASo5B,EAAQz4B,KACrCquB,UAAY7nB,EACfnH,EACA,GACA,EACA,EACA,KACA,qBACA,GACAK,IAGJ4C,EAAKW,MAAQqG,KAAKpE,QAAQ6zB,mBAC1Bz2B,EAAK4pB,aAAc,EACnB5pB,EAAKc,cAAgBd,EAAKc,eAAiB,GAC3Cd,EAAKc,cAAchC,KAAKs3B,GACxBpvB,KAAKskB,OAAOvoB,IAAI/C,EArChB,CAsCF,GAAC,CAAAlI,IAAA,OAAAa,MAED,SAAKY,EAAGmE,EAASo5B,GACf,IACE,IAAIC,EASJ,GAPEA,EADE7yB,EAAaxG,GACPA,EAEA,WACN,OAAOA,GAAW,CAAC,CACrB,GAGGwG,EAAa3K,GAChB,OAAOA,EAGT,GAAIA,EAAEy9B,QACJ,OAAOz9B,EAGT,IAAKA,EAAE09B,iBAwBL,IAAK,IAAI5+B,KAvBTkB,EAAE09B,iBAAmB,WACfH,GAAW5yB,EAAa4yB,IAC1BA,EAAQjpB,MAAM7G,KAAMnD,WAEtB,IACE,OAAOtK,EAAEsU,MAAM7G,KAAMnD,UACvB,CAAE,MAAOwrB,GACP,IAAIt1B,EAAIs1B,EAUR,MATIt1B,GAAKgE,OAAOs3B,uBAAyBt7B,IACnCmK,EAASnK,EAAG,YACdA,EAAI,IAAImE,OAAOnE,IAEjBA,EAAEu7B,gBAAkByB,KAAW,CAAC,EAChCh9B,EAAEu7B,gBAAgB4B,eAAiB39B,EAAEJ,WAErC4E,OAAOs3B,qBAAuBt7B,GAE1BA,CACR,CACF,EAEAR,EAAE09B,iBAAiBD,SAAU,EAEZz9B,EACX2K,EAAS3K,EAAGlB,IAAkB,qBAATA,IACvBkB,EAAE09B,iBAAiB5+B,GAAQkB,EAAElB,IAKnC,OAAOkB,EAAE09B,gBACX,CAAE,MAAOh1B,GAEP,OAAO1I,CACT,CACF,GAAC,CAAAzB,IAAA,eAAAa,MAED,WACE,IAAIyP,EnCiLR,SAA8BpJ,GAI5B,IAHA,IAAIgJ,EAAMQ,EAAU7H,EAChBpB,EAEKtE,EAAI,EAAGC,EAAI8D,EAAK7D,OAAQF,EAAIC,IAAKD,EAIxC,OADUlC,EAFVwG,EAAMP,EAAK/D,KAIT,IAAK,UACE+M,GAAQ9G,EAAcF,EAAiBzB,GAC1CyI,EAAOzI,GACGoB,GAASO,EAAcD,EAAkB1B,KACnDoB,EAAQpB,GAEV,MACF,IAAK,SACHiJ,EAAWjJ,EAYjB,MANY,CACVyI,KAAMA,GAAQ,SACdQ,SAAUA,GAAY,CAAC,EACvB7H,MAAOA,EAIX,CmC/MgBuD,CAAuBL,WACnC,OAAOmD,KAAKskB,OAAOzC,aAAazgB,EAAMJ,KAAMI,EAAMI,SAAUJ,EAAMzH,MACpE,GAAC,CAAA7I,IAAA,iBAAAa,MAED,SAAesa,GAAM,IAAAyW,EACF,QAAbA,EAAC1iB,KAAKH,eAAO,IAAA6iB,GAAZA,EAAczX,SAEnBjL,KAAKH,QAAQoL,QAAQklB,QAAQlkB,EAC/B,GAAC,CAAAnb,IAAA,uBAAAa,MAED,SAAqBwZ,GAAO,IAAAilB,EACT,QAAbA,EAACpwB,KAAKH,eAAO,IAAAuwB,GAAZA,EAAcnlB,UAEnBE,EAAKjJ,GAAA,GAAQiJ,GAEbnL,KAAKH,QAAQoL,QAAQiB,cAAcf,GACrC,GAAC,CAAAra,IAAA,kCAAAa,MAED,SAAgCiK,GAAS,IAAAy0B,EAAAC,EAAAC,EAAAC,EAAAC,EACjCC,EAAS90B,EAAQ80B,SAAyB,QAAnBL,EAAIz0B,EAAQF,eAAO,IAAA20B,OAAA,EAAfA,EAAiBK,QAC9CA,GACF1wB,KAAK2wB,eAAeD,GAEtB,IAAME,GACU,QAAdN,EAAA10B,EAAQ0oB,cAAM,IAAAgM,GAAY,QAAZA,EAAdA,EAAgBhE,kBAAU,IAAAgE,OAAA,EAA1BA,EAA4BM,eAC5Bh1B,EAAQi1B,aACRj1B,EAAQg1B,eACO,QADKL,EACpB30B,EAAQF,eAAO,IAAA60B,GAAQ,QAARA,EAAfA,EAAiBjM,cAAM,IAAAiM,GAAY,QAAZA,EAAvBA,EAAyBjE,kBAAU,IAAAiE,OAAA,EAAnCA,EAAqCK,gBACtB,QADkCJ,EACjD50B,EAAQF,eAAO,IAAA80B,OAAA,EAAfA,EAAiBI,gBACF,QADcH,EAC7B70B,EAAQF,eAAO,IAAA+0B,OAAA,EAAfA,EAAiBI,aACnB7wB,KAAK8wB,qBAAqB,CACxB,sBAAuBF,EACvB,wBAAyB,qBACzB,2BAA4Bh1B,EAAQwM,SAExC,GAEA,CAAAtX,IAAA,0BAAAa,MACA,SAAwBoB,EAAGsS,GAIzB,OAHKA,IACHA,EAAK,IAAI/J,MAEJ0E,KAAKskB,OAAOxC,wBAAwBzc,EAC7C,GAAC,CAAAvU,IAAA,cAAAa,MAED,SAAYoB,EAAGsS,GAIb,OAHKA,IACHA,EAAK,IAAI/J,MAEJ0E,KAAKskB,OAAOvC,YAAY1c,EACjC,GAAC,CAAAvU,IAAA,WAAAa,MAED,WACE0F,GAAOlE,KACL,sHAEJ,GAAC,CAAArC,IAAA,cAAAa,MAED,SAAYqG,GACV,OAAOkF,EAAalF,EAAMX,GAAQ2I,KACpC,IAKA,EAAAlP,IAAA,OAAAa,MA7ZA,SAAYiK,EAAS0oB,GACnB,OAAIiG,GACKA,GAAU/I,OAAO5lB,GAASygB,UAAUzgB,GAE7C2uB,GAAY,IAAIxJ,EAAQnlB,EAAS0oB,EAEnC,GAAC,CAAAxzB,IAAA,gBAAAa,MAED,SAAqB64B,GACnBzJ,EAAQzvB,UAAUk5B,WAAaA,CACjC,GAAC,CAAA15B,IAAA,eAAAa,MAoZD,SAAoBiR,EAAQ5K,GAC1B,GAAKuyB,GASL,OAAOA,GAAU3nB,GAAQiE,MAAM0jB,GAAWvyB,GARxC,IAAMjC,EAAU,6BAChBsB,GAAOhE,MAAM0C,GACb,IAAMg7B,EA4DZ,SAA2B/4B,GACzB,IAAK,IAAI/D,EAAI,EAAG4E,EAAMb,EAAK7D,OAAQF,EAAI4E,IAAO5E,EAC5C,GAAIiJ,EAAalF,EAAK/D,IACpB,OAAO+D,EAAK/D,GAGhB,MACF,CAnE4B+8B,CAAkBh5B,GACpC+4B,GACFA,EAAc,IAAI7+B,MAAM6D,GAK9B,IAAC,CAjfU,GA+iBb,SAASg1B,KACP,MACqB,oBAAXh0B,QAA0BA,QACjB,oBAATmP,MAAwBA,IAEpC,CA/CA+qB,GArgBMlQ,GAAO/V,GAAP+V,GAAO,SAmfK,mBAAApa,EAAA9J,UAAA1I,OAAI6D,EAAI,IAAA6I,MAAA8F,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ5O,EAAI4O,GAAA/J,UAAA+J,GAAA,OAAKma,GAAQmQ,aAAa,SAAUl5B,EAAK,GAAAgT,GAnf7D+V,GAAO,YAofQ,mBAAA/T,EAAAnQ,UAAA1I,OAAI6D,EAAI,IAAA6I,MAAAmM,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJjV,EAAIiV,GAAApQ,UAAAoQ,GAAA,OAAK8T,GAAQmQ,aAAa,YAAal5B,EAAK,GAAAgT,GApfnE+V,GAAO,YAqfQ,mBAAA7T,EAAArQ,UAAA1I,OAAI6D,EAAI,IAAA6I,MAAAqM,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJnV,EAAImV,GAAAtQ,UAAAsQ,GAAA,OAAK4T,GAAQmQ,aAAa,YAAal5B,EAAK,GAAAgT,GArfnE+V,GAAO,MAsfE,mBAAA3T,EAAAvQ,UAAA1I,OAAI6D,EAAI,IAAA6I,MAAAuM,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJrV,EAAIqV,GAAAxQ,UAAAwQ,GAAA,OAAK0T,GAAQmQ,aAAa,MAAOl5B,EAAK,GAAAgT,GAtfvD+V,GAAO,QAufI,mBAAAzT,EAAAzQ,UAAA1I,OAAI6D,EAAI,IAAA6I,MAAAyM,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJvV,EAAIuV,GAAA1Q,UAAA0Q,GAAA,OAAKwT,GAAQmQ,aAAa,QAASl5B,EAAK,GAAAgT,GAvf3D+V,GAAO,OAwfG,mBAAAoQ,EAAAt0B,UAAA1I,OAAI6D,EAAI,IAAA6I,MAAAswB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJp5B,EAAIo5B,GAAAv0B,UAAAu0B,GAAA,OAAKrQ,GAAQmQ,aAAa,OAAQl5B,EAAK,GAAAgT,GAxfzD+V,GAAO,OAyfG,mBAAAsQ,EAAAx0B,UAAA1I,OAAI6D,EAAI,IAAA6I,MAAAwwB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJt5B,EAAIs5B,GAAAz0B,UAAAy0B,GAAA,OAAKvQ,GAAQmQ,aAAa,OAAQl5B,EAAK,GAAAgT,GAzfzD+V,GAAO,UA0fM,mBAAAwQ,EAAA10B,UAAA1I,OAAI6D,EAAI,IAAA6I,MAAA0wB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJx5B,EAAIw5B,GAAA30B,UAAA20B,GAAA,OAAKzQ,GAAQmQ,aAAa,UAAWl5B,EAAK,GAAAgT,GA1f/D+V,GAAO,QA2fI,mBAAA0Q,EAAA50B,UAAA1I,OAAI6D,EAAI,IAAA6I,MAAA4wB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ15B,EAAI05B,GAAA70B,UAAA60B,GAAA,OAAK3Q,GAAQmQ,aAAa,QAASl5B,EAAK,GAAAgT,GA3f3D+V,GAAO,WA4fO,mBAAA4Q,EAAA90B,UAAA1I,OAAI6D,EAAI,IAAA6I,MAAA8wB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ55B,EAAI45B,GAAA/0B,UAAA+0B,GAAA,OAAK7Q,GAAQmQ,aAAa,WAAYl5B,EAAK,GAAAgT,GA5fjE+V,GAAO,mBA6fe,mBAAA8Q,EAAAh1B,UAAA1I,OAAI6D,EAAI,IAAA6I,MAAAgxB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ95B,EAAI85B,GAAAj1B,UAAAi1B,GAAA,OAChC/Q,GAAQmQ,aAAa,mBAAoBl5B,EAAK,GAAAgT,GA9f5C+V,GAAO,kBA+fc,mBAAAgR,EAAAl1B,UAAA1I,OAAI6D,EAAI,IAAA6I,MAAAkxB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJh6B,EAAIg6B,GAAAn1B,UAAAm1B,GAAA,OAC/BjR,GAAQmQ,aAAa,kBAAmBl5B,EAAK,GAAAgT,GAhgB3C+V,GAAO,OAigBG,mBAAAkR,EAAAp1B,UAAA1I,OAAI6D,EAAI,IAAA6I,MAAAoxB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJl6B,EAAIk6B,GAAAr1B,UAAAq1B,GAAA,OAAKnR,GAAQmQ,aAAa,OAAQl5B,EAAK,GAAAgT,GAjgBzD+V,GAAO,eAkgBW,mBAAAoR,EAAAt1B,UAAA1I,OAAI6D,EAAI,IAAA6I,MAAAsxB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJp6B,EAAIo6B,GAAAv1B,UAAAu1B,GAAA,OAAKrR,GAAQmQ,aAAa,eAAgBl5B,EAAK,GAoD/E,IAAM4d,GAAiB,CACrBhF,YAAa,UACbxI,QAAS+K,GACT/W,YAAai2B,GAAAA,YACb5kB,SAAU0F,GACVgI,YAAahI,GACbsc,mBAAoBtc,GACpBS,SAAUT,GACVmM,SAAS,EACThD,SAAS,EACT2B,UAAU,EACV+F,YAAY,EACZve,yBAAyB,EACzBsmB,WAAW,EACXyD,wBAAwB,EACxBrN,uBAAuB,EACvBuM,yBAAyB,EACzBzR,OExlBF,CACEX,SAAS,EACT4O,WAAW,EAGXoH,gBAAiB,CACfC,cAAe,EACfC,YAAa,IACbC,aAAc,GAEhBC,SAAU,CACR,CACE1xB,KAAM,aACNrH,MAAO,CAAC,QAAS,cAIrBzG,MAAO,CACLy/B,WAAW,EACXC,UAAU,GAIZC,kBAAkB,EAClBC,cAAc,EACdC,cAAc,EAKdC,iBAAkB,CAChBC,UAAU,EACV9mB,OAAO,EACP+mB,KAAK,EACLC,MAAM,EACNC,OAAO,EACPC,MAAM,EACN,kBAAkB,EAClBC,OAAO,EACPC,QAAQ,EACR9hB,OAAO,EACP2B,QAAQ,EACR1J,MAAM,EACNlW,KAAK,EACLggC,MAAM,GAIRC,eAAe,EAGfC,WAAY,WACZC,cAAe,UACfC,YAAa,YAIbC,eAAgB,CACdC,QAAQ,EACRC,SAAS,EACTC,aAAa,EACbC,gBAAgB,EAChBC,sBAAsB,EACtBC,gBAAgB,EAChBC,gBAAgB,EAChBC,mBAAmB,EACnBC,oBAAoB,EACpBC,sBAAsB,IFshBxB10B,QG1lBF,CACEyc,SAAS,EACT1I,SAAU,mCH2lBZ,MI5kBA,SAAS4gB,GAAcxiC,GAIrB,MAHoB,iBAATA,IACTA,EAAOkF,OAAOlF,IAETA,EAAKK,aACd,CAoBA,SAASoiC,GAAazxB,GACpBhD,KAAKiB,IAAM,CAAC,EAER+B,aAAmByxB,GACrBzxB,EAAQ0xB,QAAQ,SAAU/iC,EAAOK,GAC/BgO,KAAK20B,OAAO3iC,EAAML,EACpB,EAAGqO,MACMa,MAAM1D,QAAQ6F,GACvBA,EAAQ0xB,QAAQ,SAAUE,GACxB50B,KAAK20B,OAAOC,EAAO,GAAIA,EAAO,GAChC,EAAG50B,MACMgD,GACThS,OAAO6jC,oBAAoB7xB,GAAS0xB,QAAQ,SAAU1iC,GACpDgO,KAAK20B,OAAO3iC,EAAMgR,EAAQhR,GAC5B,EAAGgO,KAEP,CAEAy0B,GAAanjC,UAAUqjC,OAAS,SAAU3iC,EAAML,GAC9CK,EAAOwiC,GAAcxiC,GACrBL,EAtCF,SAAwBA,GAItB,MAHqB,iBAAVA,IACTA,EAAQuF,OAAOvF,IAEVA,CACT,CAiCUmjC,CAAenjC,GACvB,IAAIojC,EAAW/0B,KAAKiB,IAAIjP,GACxBgO,KAAKiB,IAAIjP,GAAQ+iC,EAAWA,EAAW,KAAOpjC,EAAQA,CACxD,EAEA8iC,GAAanjC,UAAUH,IAAM,SAAUa,GAErC,OADAA,EAAOwiC,GAAcxiC,GACdgO,KAAKqI,IAAIrW,GAAQgO,KAAKiB,IAAIjP,GAAQ,IAC3C,EAEAyiC,GAAanjC,UAAU+W,IAAM,SAAUrW,GACrC,OAAOS,EAAOuN,KAAKiB,IAAKuzB,GAAcxiC,GACxC,EAEAyiC,GAAanjC,UAAUojC,QAAU,SAAUr8B,EAAUoO,GACnD,IAAK,IAAIzU,KAAQgO,KAAKiB,IAChBxO,EAAOuN,KAAKiB,IAAKjP,IACnBqG,EAAS7G,KAAKiV,EAASzG,KAAKiB,IAAIjP,GAAOA,EAAMgO,KAGnD,EAEAy0B,GAAanjC,UAAUqM,QAAU,WAC/B,IAAIq3B,EAAQ,GAIZ,OAHAh1B,KAAK00B,QAAQ,SAAU/iC,EAAOK,GAC5BgjC,EAAMl9B,KAAK,CAAC9F,EAAML,GACpB,GAzDF,SAAqBqjC,GAQnB,MAPe,CACblY,KAAM,WACJ,IAAInrB,EAAQqjC,EAAMpvB,QAClB,MAAO,CAAEpL,UAAgB1B,IAAVnH,EAAqBA,MAAOA,EAC7C,EAIJ,CAiDSsjC,CAAYD,EACrB,EAEA,OAnFA,SAAiBhyB,GACf,MAAuB,oBAAZkyB,QACF,IAAIT,GAAazxB,GAGnB,IAAIkyB,QAAQlyB,EACrB,ECVA,OARA,SAAiB5R,EAAKY,EAAMqJ,EAAa85B,EAAcn0B,GACrD,IAAIo0B,EAAOhkC,EAAIY,GACfZ,EAAIY,GAAQqJ,EAAY+5B,GACpBD,GACFA,EAAan0B,GAAMlJ,KAAK,CAAC1G,EAAKY,EAAMojC,GAExC,E,y/BC6DA,SAASC,GAAcC,GACrB,OAvBF,SAA8Bx6B,GAS5B,IARA,IAKEy6B,EACAC,EAHEC,EAAM,GACR58B,EAAM,EAIC5E,EAAI6G,EAAE3G,OAAS,EAAGF,GAAK,EAAGA,IAAK,CAGtC,GAFAshC,EAAUG,GAAoB56B,EAAE7G,IAChCuhC,EAAc38B,EARI88B,EAQEF,EAAIthC,OAA2BohC,EAAQphC,OACvDF,EAAI6G,EAAE3G,OAAS,GAAKqhC,GAAeI,GAAgB,CACrDH,EAAI/nB,QAAQ,OACZ,KACF,CACA+nB,EAAI/nB,QAAQ6nB,GACZ18B,GAAO08B,EAAQphC,MACjB,CACA,OAAOshC,EAAI5qB,KAjBK,MAkBlB,CAGSgrB,CAtCT,SAAqBP,GAInB,IAHA,IAEIQ,EADAL,EAAM,GAEDvxB,EAAS,EAAGoxB,GAAQpxB,EAHZ,IAIf4xB,EAAkBC,GAAgBT,KACkB,SAA5BQ,EAAgBE,QAFQ9xB,IAKhDuxB,EAAI/nB,QAAQooB,GACZR,EAAOA,EAAKW,WAEd,OAAOR,CACT,CAyB8BS,CAAYZ,GAC1C,CAEA,SAASI,GAAoBS,GAC3B,IAAKA,IAASA,EAAKH,QACjB,MAAO,GAET,IAAIP,EAAM,CAACU,EAAKH,SACZG,EAAKxqB,IACP8pB,EAAI39B,KAAK,IAAMq+B,EAAKxqB,IAElBwqB,EAAKC,SACPX,EAAI39B,KAAK,IAAMq+B,EAAKC,QAAQvrB,KAAK,MAClC,IACsCxQ,EADtCC,EAAAC,GACuB47B,EAAKx7B,YAAU,IAAvC,IAAAL,EAAA1E,MAAAyE,EAAAC,EAAA3H,KAAA6H,MAAyC,KAA9B67B,EAASh8B,EAAA1I,MAClB8jC,EAAI39B,KAAK,IAAMu+B,EAAUvlC,IAAM,KAAOulC,EAAU1kC,MAAQ,KAC1D,CAAC,OAAA2F,GAAAgD,EAAAvH,EAAAuE,EAAA,SAAAgD,EAAA/H,GAAA,CAED,OAAOkjC,EAAI5qB,KAAK,GAClB,CAiBA,SAASkrB,GAAgBT,GACvB,IAAKA,IAASA,EAAKU,QACjB,OAAO,KAET,IACEhQ,EADEyP,EAAM,CAAC,EAEXA,EAAIO,QAAUV,EAAKU,QAAQ3jC,cACvBijC,EAAK3pB,KACP8pB,EAAI9pB,GAAK2pB,EAAK3pB,KAEhBqa,EAAYsP,EAAKtP,YACqB,iBAAdA,IACtByP,EAAIW,QAAUpQ,EAAUhrB,MAAM,QAGhCy6B,EAAI96B,WAAa,GACjB,IAAK,IAAL0U,EAAA,EAAAnE,EAFiB,CAAC,OAAQ,OAAQ,QAAS,OAETmE,EAAAnE,EAAA/W,OAAAkb,IAAE,CAA/B,IAAMgnB,EAASnrB,EAAAmE,GACZxF,EAAOyrB,EAAKgB,aAAaD,GAC3BxsB,GACF4rB,EAAI96B,WAAW7C,KAAK,CAAEhH,IAAKulC,EAAW1kC,MAAOkY,GAEjD,CACA,OAAO4rB,CACT,C,2jECnHA,IAAMtiB,GAAW,CACfojB,SAAS,EACTC,wBAAwB,EACxBC,qBAAqB,EACrBC,uBAAuB,EACvBC,oBAAoB,EACpBC,uBAAuB,EACvBC,uBAAuB,EACvBC,qBAAqB,EACrB/6B,KAAK,EACLg7B,KAAK,EACLC,YAAY,EACZC,cAAc,EACdC,uBAAuB,EACvBC,8BAA8B,GAGhC,SAASC,GAAQjC,EAAcn0B,GAE7B,IADA,IAAIgG,EACGmuB,EAAan0B,GAAM7M,SACxB6S,EAAImuB,EAAan0B,GAAM4E,SACrB,GAAGoB,EAAE,IAAMA,EAAE,EAEnB,CAeA,SAASqwB,GAAqBj7B,GAC5B,IAC+B/B,EADzBi9B,EAAW,GAAGh9B,EAAAC,GACA6B,GAAW,IAA/B,IAAA9B,EAAA1E,MAAAyE,EAAAC,EAAA3H,KAAA6H,MAAiC,KAAtB+8B,EAAKl9B,EAAA1I,MACd2lC,EAASx/B,KAAK,IAAIyG,OAAOg5B,EAAO,KAClC,CAAC,OAAAjgC,GAAAgD,EAAAvH,EAAAuE,EAAA,SAAAgD,EAAA/H,GAAA,CACD,OAAO,SAAU4f,GACf,IAAMngB,EAnBV,SAA6BmgB,GAC3B,IAAKA,IAAgBA,EAAYxX,WAC/B,OAAO,KAET,IACqBqD,EADgBC,EAAA1D,GAAvB4X,EAAYxX,YACL,IAArB,IAAAsD,EAAArI,MAAAoI,EAAAC,EAAAtL,KAAA6H,MAAuB,KAAZM,EAACkD,EAAArM,MACV,GAAc,SAAVmJ,EAAEhK,IACJ,OAAOgK,EAAEnJ,KAEb,CAAC,OAAA2F,GAAA2G,EAAAlL,EAAAuE,EAAA,SAAA2G,EAAA1L,GAAA,CACD,OAAO,IACT,CAQiBilC,CAAoBrlB,GACjC,IAAKngB,EACH,OAAO,EAET,IAAK,IAALqd,EAAA,EAAAooB,EAAgBH,EAAQjoB,EAAAooB,EAAAtjC,OAAAkb,IAAE,CACxB,GADUooB,EAAApoB,GACJlQ,KAAKnN,GACT,OAAO,CAEX,CACA,OAAO,CACT,CACF,CAAC,IAEKy4B,GAAY,WAgCf,O,4GAAA7K,CA/BD,SAAA6K,EAAY7uB,EAASolB,EAAW2K,EAAS+L,EAASC,I,4FAAW53B,CAAA,KAAA0qB,G,oHAAAzf,CAAA,gCAk4BlC,WACzBhL,KAAK43B,gBAAgB,eACvB,GAn4BE53B,KAAKpE,QAAUA,EACf,IAAIi8B,EAAiBj8B,EAAQi8B,gBACL,IAApBj8B,EAAQ0gB,UAAwC,IAAnBub,EAC/B73B,KAAK63B,eAAiB,CAAC,GAElB36B,EAAS26B,EAAgB,YAC5BA,EAAiB1kB,IAEnBnT,KAAK63B,eAAiB36B,EAAQiW,GAAU0kB,IAE1C73B,KAAK83B,qBACL93B,KAAKghB,UAAYA,EACjBhhB,KAAK2rB,QAAUA,EACf3rB,KAAK7G,WAAawyB,EAAQrH,OAAOrsB,SAASkB,WAC1C6G,KAAK03B,QAAUA,GAAW,CAAC,EAC3B13B,KAAK23B,UAAYA,GAAa,CAAC,EAC/B33B,KAAKm1B,aAAe,CAClBoB,QAAS,GACTx6B,IAAK,GACLi7B,WAAY,GACZC,aAAc,IAEhBj3B,KAAK+3B,cAAgB,CACnBhB,IAAK,GACLE,aAAc,GACde,sBAAuB,IAGzBh4B,KAAKi4B,UAAYj4B,KAAK03B,QAAQrhC,SAC9B2J,KAAKk4B,UAAYl4B,KAAKi4B,WAAaj4B,KAAKi4B,UAAUrhC,IACpD,EAAC,EAAA9F,IAAA,qBAAAa,MAED,WAAqB,IAAAwmC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACbh9B,EAAUoE,KAAKpE,QACrBoE,KAAK64B,qBAAuB1L,QACE,QADKgL,EACjCv8B,EAAQi9B,4BAAoB,IAAAV,EAAAA,EAAkB,QAAlBC,EAAIx8B,EAAQqhB,cAAM,IAAAmb,OAAA,EAAdA,EAAgB3E,eAElDzzB,KAAK84B,kBAAoBl9B,EAAQk9B,kBACjC94B,KAAKq3B,qBAAuBA,GAAqBz7B,EAAQQ,aACzD4D,KAAK+4B,YAA4B,QAAjBV,EAAGz8B,EAAQqhB,cAAM,IAAAob,OAAA,EAAdA,EAAgBU,YACnC/4B,KAAKgzB,kBAAiC,QAAdsF,EAAA18B,EAAQqhB,cAAM,IAAAqb,OAAA,EAAdA,EAAgBtF,mBAAoB,CAAC,EAC7DhzB,KAAKg5B,aAAe,CACJ,QADIT,EAClB38B,EAAQqhB,cAAM,IAAAsb,OAAA,EAAdA,EAAgB7E,WACF,QADY8E,EAC1B58B,EAAQqhB,cAAM,IAAAub,OAAA,EAAdA,EAAgB5E,YACF,QADa6E,EAC3B78B,EAAQqhB,cAAM,IAAAwb,OAAA,EAAdA,EAAgB9E,eAChB5yB,OAAOosB,SACTntB,KAAKi5B,eAAiB,CACN,QADMP,EACpB98B,EAAQqhB,cAAM,IAAAyb,OAAA,EAAdA,EAAgBQ,cACF,QADeP,EAC7B/8B,EAAQqhB,cAAM,IAAA0b,OAAA,EAAdA,EAAgBQ,eACF,QADgBP,EAC9Bh9B,EAAQqhB,cAAM,IAAA2b,OAAA,EAAdA,EAAgBQ,kBAChBr4B,OAAOosB,QACX,GAAC,CAAAr8B,IAAA,YAAAa,MAED,SAAUiK,GACRoE,KAAKpE,QAAUsB,EAAQ8C,KAAKpE,QAASA,GACrC,IAAIi8B,EAAiBj8B,EAAQi8B,eACvBwB,EAAcn8B,EAAQ8C,KAAK63B,iBACT,IAApBj8B,EAAQ0gB,UAAwC,IAAnBub,EAC/B73B,KAAK63B,eAAiB,CAAC,GAElB36B,EAAS26B,EAAgB,YAC5BA,EAAiB1kB,IAEnBnT,KAAK63B,eAAiB36B,EAAQiW,GAAU0kB,IAE1C73B,KAAK83B,qBACL93B,KAAKutB,WAAW8L,EAClB,GAEA,CAAAvoC,IAAA,aAAAa,MACA,SAAW0nC,IACLr5B,KAAK63B,eAAetB,SAAa8C,GAAeA,EAAY9C,SAG7Dv2B,KAAK63B,eAAetB,SACrB8C,GACAA,EAAY9C,SAEZv2B,KAAKs5B,sBANLt5B,KAAKu5B,qBASHv5B,KAAK63B,eAAe97B,KAASs9B,GAAeA,EAAYt9B,KAEhDiE,KAAK63B,eAAe97B,KAAOs9B,GAAeA,EAAYt9B,KAChEiE,KAAKw5B,sBAFLx5B,KAAKy5B,qBAKHz5B,KAAK63B,eAAed,KAASsC,GAAeA,EAAYtC,KAEhD/2B,KAAK63B,eAAed,KAAOsC,GAAeA,EAAYtC,KAChE/2B,KAAK05B,kBAFL15B,KAAK25B,iBAML35B,KAAK63B,eAAeb,YAClBqC,GAAeA,EAAYrC,YAI5Bh3B,KAAK63B,eAAeb,YACrBqC,GACAA,EAAYrC,YAEZh3B,KAAK45B,yBANL55B,KAAK65B,wBAUL75B,KAAK63B,eAAeZ,cAClBoC,GAAeA,EAAYpC,cAI5Bj3B,KAAK63B,eAAeZ,cACrBoC,GACAA,EAAYpC,cAEZj3B,KAAK85B,2BANL95B,KAAK+5B,0BAUL/5B,KAAK63B,eAAeX,uBAClBmC,GAAeA,EAAYnC,uBAI5Bl3B,KAAK63B,eAAeX,uBACrBmC,GACAA,EAAYnC,uBAEZl3B,KAAKg6B,oCANLh6B,KAAKi6B,iCAQT,GAAC,CAAAnpC,IAAA,sBAAAa,MAED,WACEylC,GAAQp3B,KAAKm1B,aAAc,UAC7B,GAAC,CAAArkC,IAAA,oBAAAa,MAED,WACE,IAAMuU,EAAOlG,KAEb,SAASk6B,EAAS7oC,EAAM8oC,GAClB9oC,KAAQ8oC,GAAOj9B,EAAai9B,EAAI9oC,KAClCgD,GAAQ8lC,EAAK9oC,EAAM,SAAU+jC,GAC3B,OAAOlvB,EAAKylB,QAAQyO,KAAKhF,EAC3B,EAEJ,CAEA,GAAI,mBAAoBp1B,KAAK03B,QAAS,CACpC,IAAM2C,EAAOr6B,KAAK03B,QAAQjkB,eAAeniB,UACzC+C,GACEgmC,EACA,OACA,SAAUjF,GACR,OAAO,SAAUxyB,EAAQpP,GACvB,IAAM8mC,EAAcC,GAAa/mC,GAmBjC,OAlBI0J,EAAS1J,EAAK,WAAa8mC,KAC7B9mC,EAAM8mC,EAAc9mC,EAAIrB,WAAaqB,EACjCwM,KAAKw6B,eACPx6B,KAAKw6B,cAAc53B,OAASA,EAC5B5C,KAAKw6B,cAAchnC,IAAMA,EACzBwM,KAAKw6B,cAAc/3B,YAAc,KACjCzC,KAAKw6B,cAAcr3B,cAAgBjG,IACnC8C,KAAKw6B,cAAc73B,YAAc,MAEjC3C,KAAKw6B,cAAgB,CACnB53B,OAAQA,EACRpP,IAAKA,EACLiP,YAAa,KACbU,cAAejG,IACfyF,YAAa,OAIZyyB,EAAKvuB,MAAM7G,KAAMnD,UAC1B,CACF,EACAmD,KAAKm1B,aACL,WAGF9gC,GACEgmC,EACA,mBACA,SAAUjF,GACR,OAAO,SAAUR,EAAQjjC,GAiBvB,OAfKqO,KAAKw6B,gBACRx6B,KAAKw6B,cAAgB,CAAC,GAEpBt9B,EAAS03B,EAAQ,WAAa13B,EAASvL,EAAO,YAC5CuU,EAAK2xB,eAAenB,wBACjB12B,KAAKw6B,cAAc13B,kBACtB9C,KAAKw6B,cAAc13B,gBAAkB,CAAC,GAExC9C,KAAKw6B,cAAc13B,gBAAgB8xB,GAAUjjC,GAGlB,iBAAzBijC,EAAOviC,gBACT2N,KAAKw6B,cAAcC,qBAAuB9oC,IAGvCyjC,EAAKvuB,MAAM7G,KAAMnD,UAC1B,CACF,EACAmD,KAAKm1B,aACL,WAGF9gC,GACEgmC,EACA,OACA,SAAUjF,GACR,OAAO,SAAU17B,GACf,IAAMygC,EAAMn6B,KAEZ,SAAS06B,IACP,GAAIP,EAAIK,gBACgC,OAAlCL,EAAIK,cAAc/3B,cACpB03B,EAAIK,cAAc/3B,YAAc,EAC5ByD,EAAK2xB,eAAelB,qBACtBwD,EAAIK,cAAcliC,QAAUoB,GAE9BygC,EAAIQ,gBAAkBz0B,EAAK00B,eACzBT,EAAIK,cACJ,WACA1hC,IAGAqhC,EAAIrS,WAAa,IACnBqS,EAAIK,cAAcr3B,cAAgBjG,KAEhCi9B,EAAIrS,WAAa,GAAG,CACtB,IAAMnlB,EAAczF,IACpBi9B,EAAIK,cAAc73B,YAAcA,EAEhC,IAAIK,EAAU,KAGd,GAFAm3B,EAAIK,cAAcK,sBAChBV,EAAIjS,kBAAkB,gBACpBhiB,EAAK2xB,eAAerB,uBAAwB,CAC9C,IAAMsE,EACJ50B,EAAK2xB,eAAerB,uBACtBxzB,EAAU,CAAC,EACX,IACE,IAAI4xB,EACJ,IAAsB,IAAlBkG,EAAwB,CAC1B,IAAMC,EAAaZ,EAAIa,wBACvB,GAAID,EAAY,CACd,IACI9hB,EAAOtnB,EACQiJ,EADFC,EAAAN,GADLwgC,EAAWE,OAAOjgC,MAAM,YAEjB,IAAnB,IAAAH,EAAAjF,MAAAgF,EAAAC,EAAAlI,KAAA6H,MAAqB,CAEnBo6B,GADA3b,EADUre,EAAAjJ,MACAqJ,MAAM,OACD4K,QACfjU,EAAQsnB,EAAMpO,KAAK,MACnB7H,EAAQ4xB,GAAUjjC,CACpB,CAAC,OAAA2F,GAAAuD,EAAA9H,EAAAuE,EAAA,SAAAuD,EAAAtI,GAAA,CACH,CACF,KAAO,KACwBkL,EADxBC,EAAAnD,GACWugC,GAAa,IAA7B,IAAAp9B,EAAA9H,MAAA6H,EAAAC,EAAA/K,KAAA6H,MAA+B,KAApBguB,EAAC/qB,EAAA9L,MACVqR,EAAQwlB,GAAK2R,EAAIjS,kBAAkBM,EACrC,CAAC,OAAAlxB,GAAAoG,EAAA3K,EAAAuE,EAAA,SAAAoG,EAAAnL,GAAA,CACH,CACF,CAAE,MAAO0I,GACP,CAGJ,CACA,IAAI2G,EAAO,KACX,GAAIsE,EAAK2xB,eAAepB,oBACtB,IACE70B,EAAOu4B,EAAInS,YACb,CAAE,MAAO/sB,GACP,CAGJ,IAAI8H,EAAW,MACXnB,GAAQoB,KACVD,EAAW,CAAC,EACRnB,IAEAsE,EAAKg1B,kBACHf,EAAIK,cAAcK,uBAGpB93B,EAASnB,KAAOsE,EAAKi1B,UAAUv5B,GAE/BmB,EAASnB,KAAOA,GAGhBoB,IACFD,EAASC,QAAUA,IAGnBD,IACFo3B,EAAIK,cAAcz3B,SAAWA,GAE/B,IACE,IAAIgM,EAAOorB,EAAIrrB,OACfC,EAAgB,OAATA,EAAgB,IAAMA,EAC7BorB,EAAIK,cAAc/3B,YAAcsM,EAChC7I,EAAKk1B,uBACHjB,EAAIQ,gBACJh4B,EACAoM,GAEForB,EAAIQ,gBAAgBhhC,MAClBuM,EAAK8a,UAAUxe,gBAAgBuM,GACjC7I,EAAKm1B,kBAAkBlB,EAAIK,cAC7B,CAAE,MAAOv/B,GACP,CAEJ,CAEJ,CAuBA,OArBAi/B,EAAS,SAAUC,GACnBD,EAAS,UAAWC,GACpBD,EAAS,aAAcC,GAGrB,uBAAwBA,GACxBj9B,EAAai9B,EAAItS,oBAEjBxzB,GAAQ8lC,EAAK,qBAAsB,SAAU/E,GAC3C,OAAOlvB,EAAKylB,QAAQyO,KAClBhF,OACAt8B,EACA4hC,EAEJ,GAEAP,EAAItS,mBAAqB6S,EAEvBP,EAAIK,eAAiBt0B,EAAKo1B,oBAC5BnB,EAAIK,cAAcrjC,OAAQ,IAAIjF,OAAQiF,OAEjCi+B,EAAKvuB,MAAM7G,KAAMnD,UAC1B,CACF,EACAmD,KAAKm1B,aACL,UAEJ,CAEI,UAAWn1B,KAAK03B,SAClBrjC,GACE2L,KAAK03B,QACL,QACA,SAAUtC,GACR,OAAO,SAAUmG,EAAKC,GACpB,IAGIhoC,EAHEwE,EAAI6I,MAAAvP,UAAAuG,MAAArG,KAAOqL,WACXpB,EAAQzD,EAAK,GACf4K,EAAS,MAEP03B,EAAcC,GAAa9+B,GAC7ByB,EAASzB,EAAO,WAAa6+B,EAC/B9mC,EAAM8mC,EAAc7+B,EAAMtJ,WAAasJ,EAC9BA,IACTjI,EAAMiI,EAAMjI,IACRiI,EAAMmH,SACRA,EAASnH,EAAMmH,SAGf5K,EAAK,IAAMA,EAAK,GAAG4K,SACrBA,EAAS5K,EAAK,GAAG4K,QAEnB,IAAMpB,EAAW,CACfoB,OAAQA,EACRpP,IAAKA,EACLiP,YAAa,KACbU,cAAejG,IACfyF,YAAa,MAEf,GAAI3K,EAAK,IAAMA,EAAK,GAAGgL,QAAS,CAG9B,IAAMy4B,EAAaz4B,GAAQhL,EAAK,GAAGgL,SAEnCxB,EAASi5B,qBAAuBgB,EAAWtqC,IAAI,gBAE3C+U,EAAK2xB,eAAenB,wBACtBl1B,EAASsB,gBAAkBoD,EAAKw1B,aAC9BD,EACAv1B,EAAK2xB,eAAenB,uBAG1B,CAEIxwB,EAAK2xB,eAAelB,qBAClB3+B,EAAK,IAAMA,EAAK,GAAG4J,KACrBJ,EAASlJ,QAAUN,EAAK,GAAG4J,KAE3B5J,EAAK,KACJkF,EAASlF,EAAK,GAAI,WACnBA,EAAK,GAAG4J,OAERJ,EAASlJ,QAAUN,EAAK,GAAG4J,OAG/B,IAAM+5B,EAAiBz1B,EAAK00B,eAC1Bp5B,EACA,aACA1I,GAQF,OANIoN,EAAKo1B,oBACP95B,EAASrK,OAAQ,IAAIjF,OAAQiF,OAKxBi+B,EAAKvuB,MAAM7G,KAAMhI,GAAMud,KAAK,SAAUhe,GAC3C,IAAMoL,EAAczF,IACpBsE,EAASmB,YAAcA,EACvBnB,EAASiB,YAAclL,EAAKuX,OAC5B5I,EAAKk1B,uBACHO,EACAh5B,EACApL,EAAKuX,QAGPtN,EAASq5B,sBAAwBtjC,EAAKyL,QAAQ7R,IAAI,gBAClD,IAAI6R,EAAU,KACVkD,EAAK2xB,eAAerB,yBACtBxzB,EAAUkD,EAAKw1B,aACbnkC,EAAKyL,QACLkD,EAAK2xB,eAAerB,yBAGxB,IAAI50B,EAAO,KAiCX,OAhCIsE,EAAK2xB,eAAepB,qBACG,mBAAdl/B,EAAK47B,OAIdvxB,EAAOrK,EAAKE,QAAQ07B,SAGpBnwB,GAAWpB,KACbJ,EAASuB,SAAW,CAAC,EACjBnB,IAEuB,mBAAdA,EAAK2T,KACd3T,EAAK2T,KAAK,SAAU4d,GAEhBA,GACAjtB,EAAKg1B,kBAAkB15B,EAASq5B,uBAEhCr5B,EAASuB,SAASnB,KAAOsE,EAAKi1B,UAAUhI,GAExC3xB,EAASuB,SAASnB,KAAOuxB,CAE7B,GAEA3xB,EAASuB,SAASnB,KAAOA,GAGzBoB,IACFxB,EAASuB,SAASC,QAAUA,IAGhCkD,EAAKm1B,kBAAkB75B,GAChBjK,CACT,EACF,CACF,EACAyI,KAAKm1B,aACL,UAGN,GAAC,CAAArkC,IAAA,iBAAAa,MAED,SAAe6P,EAAUW,EAASV,GAOhC,OALED,EAASlJ,SACT0H,KAAKk7B,kBAAkB15B,EAASi5B,wBAEhCj5B,EAASlJ,QAAU0H,KAAKm7B,UAAU35B,EAASlJ,UAEtC0H,KAAKghB,UAAU4Z,eAAep5B,EAAUW,EAASV,EAC1D,GAAC,CAAA3Q,IAAA,oBAAAa,MAED,SAAkBiqC,GAChB,SAAOA,GACL1+B,EAAS0+B,EAAa,WACtBA,EAAYvpC,cAAcuF,SAAS,QAGvC,GAAC,CAAA9G,IAAA,yBAAAa,MAED,SAAuByP,EAAOy6B,EAAWh5B,GACnCzB,EAAMD,iBACRC,EAAMD,eAAe,0BACP,IAAZ06B,GACA1pC,WACFiP,EAAMD,eAAe0B,WAAaA,EAEtC,GAAC,CAAA/R,IAAA,YAAAa,MAED,SAAUy1B,GACR,OAAO5xB,KAAKF,UAAUs1B,EAAMp1B,KAAKK,MAAMuxB,GAAOpnB,KAAKpE,QAAQQ,aAC7D,GAAC,CAAAtL,IAAA,eAAAa,MAED,SAAamqC,EAAWhB,GACtB,IAAMiB,EAAa,CAAC,EACpB,IACE,IAAsB,IAAlBjB,GACF,GAAiC,mBAAtBgB,EAAUn+B,QAInB,IAFA,IAAMo9B,EAAae,EAAUn+B,UACzBq+B,EAAgBjB,EAAWje,QACvBkf,EAAcxhC,MACpBuhC,EAAWC,EAAcrqC,MAAM,IAAMqqC,EAAcrqC,MAAM,GACzDqqC,EAAgBjB,EAAWje,WAG1B,KACwB3e,EADxBE,EAAA9D,GACWugC,GAAa,IAA7B,IAAAz8B,EAAAzI,MAAAuI,EAAAE,EAAA1L,KAAA6H,MAA+B,KAApBguB,EAACrqB,EAAAxM,MACVoqC,EAAWvT,GAAKsT,EAAU3qC,IAAIq3B,EAChC,CAAC,OAAAlxB,GAAA+G,EAAAtL,EAAAuE,EAAA,SAAA+G,EAAA9L,GAAA,CACH,CACF,CAAE,MAAO0I,GACP,CAEF,OAAO8gC,CACT,GAAC,CAAAjrC,IAAA,kBAAAa,MAED,WACE,OACEqO,KAAK63B,eAAejB,uBACpB52B,KAAK63B,eAAehB,uBACpB72B,KAAK63B,eAAef,mBAExB,GAAC,CAAAhmC,IAAA,oBAAAa,MAED,SAAkB6P,GAChB,IAAMsN,EAAStN,EAASiB,YAExB,GACGqM,GAAU,KAAO9O,KAAK63B,eAAejB,uBACrC9nB,GAAU,KAAO9O,KAAK63B,eAAehB,uBAC1B,IAAX/nB,GAAgB9O,KAAK63B,eAAef,oBACrC,CACA,IAAMzjC,EAAQ,IAAInB,MAAM,mCAAqC4c,GAC7Dzb,EAAM8D,MAAQqK,EAASrK,MACvB6I,KAAK2rB,QAAQt4B,MAAMA,EAAO,CAAEuG,WAAY,GAC1C,CACF,GAAC,CAAA9I,IAAA,sBAAAa,MAED,WAEE,IADA,IAAIqV,EACGhH,KAAKm1B,aAAkB,IAAEhhC,QAC9B6S,EAAIhH,KAAKm1B,aAAkB,IAAEvvB,QAC7B5F,KAAK03B,QAAQ/pB,QAAQ3G,EAAE,IAAMA,EAAE,EAEnC,GAAC,CAAAlW,IAAA,oBAAAa,MAED,WAAoB,IAAAsqC,EAClB,GAAiB,QAAbA,EAACj8B,KAAK03B,eAAO,IAAAuE,GAAS,QAATA,EAAZA,EAActuB,eAAO,IAAAsuB,GAArBA,EAAuBlgC,IAA5B,CAIA,IAAMmK,EAAOlG,KACP3G,EAAI2G,KAAK03B,QAAQ/pB,QAoBvB,IACE,IAAK,IAALuuB,EAAA,EAAAC,EAFc,CAAC,QAAS,OAAQ,OAAQ,QAAS,OAE1BD,EAAAC,EAAAhoC,OAAA+nC,IAAE,CACvBE,EADUD,EAAAD,GAEZ,CACF,CAAE,MAAOnpC,GACPiN,KAAK7G,WAAWsgC,kBAAoB,CAAEpmC,MAAON,EAAEgD,QACjD,CA7BA,CAKA,SAASqmC,EAAYx5B,GAInB,IAAMwyB,EAAO/7B,EAAEuJ,GACTy5B,EAAchjC,EACdM,EAAmB,SAAXiJ,EAAoB,UAAYA,EAC9CvJ,EAAEuJ,GAAU,WACV,IAAM5K,EAAO6I,MAAMvP,UAAUuG,MAAMrG,KAAKqL,WAClC9G,E1CuEd,SAA4BiC,GAC1B,IAAI/D,EAAG4E,EAAKN,EACRnD,EAAS,GACb,IAAKnB,EAAI,EAAG4E,EAAMb,EAAK7D,OAAQF,EAAI4E,IAAO5E,EAAG,CAE3C,OAAQlC,EADRwG,EAAMP,EAAK/D,KAET,IAAK,UAEHsE,GADAA,EAAMjD,EAAUiD,IACNlF,OAASkF,EAAI5G,OACfwC,OAAS,MACfoE,EAAMA,EAAI0a,OAAO,EAAG,KAAO,OAE7B,MACF,IAAK,OACH1a,EAAM,OACN,MACF,IAAK,YACHA,EAAM,YACN,MACF,IAAK,SACHA,EAAMA,EAAIpG,WAGdiD,EAAO0C,KAAKS,EACd,CACA,OAAOnD,EAAOyV,KAAK,IACrB,C0CjGwB3N,CAAqBlF,GACrCkO,EAAK8a,UAAUrb,WAAW5P,EAAS4D,EAAO,KAAMuD,KAC5Ck4B,GACFkH,SAAShrC,UAAUuV,MAAMrV,KAAK4jC,EAAMiH,EAAarkC,EAErD,EACAkO,EAAKivB,aAAkB,IAAEr9B,KAAK,CAAC8K,EAAQwyB,GACzC,CASF,GAAC,CAAAtkC,IAAA,kBAAAa,MAED,WACEqO,KAAK43B,gBAAgB,MACvB,GAAC,CAAA9mC,IAAA,gBAAAa,MAED,WAAgB,IAAAkW,EAAA,KACd7H,KAAKu8B,YACH,MACAv8B,KAAK03B,QACL,CAAC,QAAS,WAAY,eACtB,SAAC3kC,GAAC,OAAK8U,EAAK20B,YAAY,QAASzpC,EAAE,GAErCiN,KAAKu8B,YACH,MACAv8B,KAAK03B,QACL,CAAC,YAAa,UAAW,YAAa,YAAa,QACnD,SAAC3kC,GAAC,OAAK8U,EAAK20B,YAAY,WAAYzpC,EAAE,GAExCiN,KAAKu8B,YAAY,MAAOv8B,KAAK03B,QAAS,CAAC,OAAQ,SAAU,SAAC3kC,GAAC,OACzD8U,EAAK20B,YAAY,QAASzpC,EAAE,GAE9BiN,KAAKu8B,YAAY,MAAOv8B,KAAK03B,QAAS,CAAC,SAAU,WAAY,SAAC3kC,GAAC,OAC7D8U,EAAK20B,YAAY,OAAQzpC,EAAE,GAE7BiN,KAAKu8B,YAAY,MAAOv8B,KAAK03B,QAAS,CAAC,QAAS,UAAW,SAAC3kC,GAAC,OAC3D8U,EAAK20B,YAAY,QAASzpC,EAAE,GAE9BiN,KAAKu8B,YAAY,MAAOv8B,KAAK03B,QAAS,CAAC,UAAW,SAAC3kC,GAAC,OAClD8U,EAAK20B,YAAY,SAAUzpC,EAAE,GAE/BiN,KAAKu8B,YAAY,MAAOv8B,KAAK23B,UAAW,CAAC,oBAAqB,SAAC5kC,GAAC,OAC9D8U,EAAK20B,YAAY,gBAAiBzpC,EAAE,EAExC,GAAC,CAAAjC,IAAA,cAAAa,MAED,SAAYK,EAAMk9B,GAChB,IACE,MAAO,CACLuN,MAAOz8B,KAAK08B,YACZC,SAAU38B,KAAK48B,WACfC,MAAO78B,KAAK88B,YACZC,KAAM/8B,KAAKg9B,WACXvhC,MAAOuE,KAAKi9B,YACZC,OAAQl9B,KAAKm9B,aACbC,cAAep9B,KAAKq9B,qBACpBrrC,GAAMR,KAAKwO,KAAMkvB,EACrB,CAAE,MAAO7G,GACPhxB,GAAO0E,IAAI,GAADM,OAAIrK,EAAI,kBAAkBk9B,EAAK7G,EAAKA,EAAIlxB,MACpD,CACF,GAAC,CAAArG,IAAA,sBAAAa,MAED,SAAoB2rC,GAClBt9B,KAAK2rB,QAAQgC,cAAc,CACzB3sB,KAAM,aACN3L,KAAM,IAAIkoC,IAAIv9B,KAAKi4B,UAAUrhC,MAAMkd,UAEvC,GAAC,CAAAhjB,IAAA,cAAAa,MAED,SAAYu9B,GAAK,IAAAsO,EACTxH,EAAoB,QAAbwH,EAAGtO,EAAIlrB,cAAM,IAAAw5B,OAAA,EAAVA,EAAYxH,QAAQ3jC,cAChC,CAAC,QAAS,SAAU,YAAYuF,SAASo+B,IAE7Ch2B,KAAKghB,UAAUyc,aAAa,CAC1Bz8B,KAAMkuB,EAAIluB,KACVwC,aAAc0rB,EAAIwO,UAClBt6B,QAASu6B,GAAsBzO,EAAIlrB,QACnC/K,UAAWiE,KAEf,GAAC,CAAApM,IAAA,cAAAa,MAED,SAAYu9B,GAAK,IAAA0O,EACT58B,EAAOkuB,EAAIluB,KACXoC,EAAoB,QAAVw6B,EAAA1O,EAAIlrB,cAAM,IAAA45B,GAAVA,EAAY7mC,OACxB,SACA4mC,GAAsBzO,EAAIlrB,QAE9BhE,KAAKghB,UAAU6c,aAAa,CAC1B78B,KAAMA,EACNwC,aAAc0rB,EAAIwO,UAClBt6B,QAAAA,EACAnK,UAAWiE,KAEf,GAAC,CAAApM,IAAA,aAAAa,MAED,SAAW2rC,GAKT,GACD,CAAAxsC,IAAA,eAAAa,MAED,SAAau9B,GACX,IAAM9qB,EAAgBrN,OAAOo1B,OAAOhoB,MAAQpN,OAAO+mC,WAEnD99B,KAAKghB,UAAU+c,cAAc,CAC3B/8B,KAAMkuB,EAAIluB,KACVwC,aAAc0rB,EAAIwO,UAClBv5B,MAAOpN,OAAO+mC,WACd55B,OAAQnN,OAAOinC,YACf55B,cAAeA,EACfnL,UAAWiE,KAEf,GAAC,CAAApM,IAAA,aAAAa,MAED,SAAWu9B,GACT,IACIlqB,EAAOC,EAAYH,EAAYC,EAaOk5B,EAAAC,EAdpCl9B,EAAOkuB,EAAIluB,KAGjB,GAAa,SAATA,EAAiB,CACnBgE,EAAQ,GACRC,EAAa,GACb,IACoBvG,EADgDC,EAAApE,GAAvD,GAAH8B,OAAAuL,GAAOsnB,EAAIiP,aAAaC,OAAKx2B,GAAKsnB,EAAIiP,aAAanJ,SACzC,IAApB,IAAAr2B,EAAA/I,MAAA8I,EAAAC,EAAAhM,KAAA6H,MAAsB,KAAXzJ,EAAC2N,EAAA/M,MACNZ,EAAEsY,MAAQtY,EAAEiQ,OACdgE,EAAMlN,KAAK/G,EAAEsY,MACbpE,EAAWnN,KAAK/G,EAAEiQ,MAEtB,CAAC,OAAA1J,GAAAqH,EAAA5L,EAAAuE,EAAA,SAAAqH,EAAApM,GAAA,CACH,CACI,CAAC,OAAQ,aAAaqF,SAASoJ,KACjC8D,EAA6B,QAAnBm5B,EAAG/O,EAAIiP,oBAAY,IAAAF,OAAA,EAAhBA,EAAkBn5B,WAC/BC,EAAgC,QAAnBm5B,EAAGhP,EAAIiP,oBAAY,IAAAD,OAAA,EAAhBA,EAAkBn5B,eAGpC/E,KAAKghB,UAAUqd,gBAAgB,CAC7Br9B,KAAAA,EACAwC,aAAc0rB,EAAIwO,UAClBt6B,QAASu6B,GAAsBzO,EAAIlrB,QACnCc,WAAYA,EACZC,cAAeA,EACfC,MAAOxP,KAAKF,UAAU0P,GACtBC,WAAYzP,KAAKF,UAAU2P,GAC3BhM,UAAWiE,KAEf,GAEA,CAAApM,IAAA,kBAAAa,MAIA,SAAgBA,EAAOyR,EAAS4yB,EAASsI,GACvC,IAAMC,EAAO,SAEb,GAAkB,aAAdD,EACF,OAAOC,EAGT,GAAIv+B,KAAK64B,qBACP,OAAO0F,EAEP,IAAMpsB,EAAcwrB,GAAwBv6B,GAC5C,GAAIpD,KAAK84B,mBACP,GAAI94B,KAAK84B,kBAAkB3mB,GACzB,OAAOosB,OAEJ,GAAIv+B,KAAKq3B,qBAAqBllB,GACnC,OAAOosB,EAKX,OD9qBJ,SAA2Bn7B,EAASgzB,EAASoI,GAC3C,IAAI,IACuB5jC,EADvBC,EAAAN,GACgB67B,GAAO,IAAzB,IAAAv7B,EAAAjF,MAAAgF,EAAAC,EAAAlI,KAAA6H,MAA2B,KAAhBikC,EAAG7jC,EAAAjJ,MACZ,GAAmB,iBAAR8sC,GACT,GAAIr7B,EAAQs7B,UAAUC,SAASF,GAC7B,OAAO,MAEJ,KAC4BtgC,EAD5BE,EAAA9D,GACW6I,EAAQs7B,WAAS,IAAjC,IAAArgC,EAAAzI,MAAAuI,EAAAE,EAAA1L,KAAA6H,MAAmC,KAAxBnB,EAAC8E,EAAAxM,MACV,GAAI8sC,EAAIt/B,KAAK9F,GACX,OAAO,CAEX,CAAC,OAAA/B,GAAA+G,EAAAtL,EAAAuE,EAAA,SAAA+G,EAAA9L,GAAA,CACH,CACF,CAAC,OAAA+E,GAAAuD,EAAA9H,EAAAuE,EAAA,SAAAuD,EAAAtI,GAAA,KAC0BkL,EAD1BC,EAAAnD,GACiBikC,GAAS,IAA3B,IAAA9gC,EAAA9H,MAAA6H,EAAAC,EAAA/K,KAAA6H,MAA6B,KAAlBokC,EAAGnhC,EAAA9L,MACZ,GAAIyR,EAAQgW,QAAQwlB,GAClB,OAAO,CAEX,CAAC,OAAAtnC,GAAAoG,EAAA3K,EAAAuE,EAAA,SAAAoG,EAAAnL,GAAA,CACH,CAAE,MAAO0I,GACP,CAEF,OAAO,CACT,CCupBM0iC,CAA0Bv6B,EAASpD,KAAKg5B,aAAch5B,KAAKi5B,gBAEpDsF,EAOPv+B,KAAKgzB,iBAAiBgD,EAAQ3jC,gBAC9B2N,KAAKgzB,iBAAiBsL,GAElBt+B,KAAK+4B,YACA/4B,KAAK+4B,YAAYpnC,EAAOyR,GAExBm7B,EAIJ5sC,CACT,GAEA,CAAAb,IAAA,cAAAa,MAIA,SAAYu9B,GAAK,IAAA2P,EAAAC,EAAAC,EAAAC,EACTh+B,EAAOkuB,EAAIluB,KACXg1B,EAAoB,QAAb6I,EAAG3P,EAAIlrB,cAAM,IAAA66B,OAAA,EAAVA,EAAY7I,QAAQ3jC,cAChCV,EAAkB,QAAbmtC,EAAG5P,EAAIlrB,cAAM,IAAA86B,OAAA,EAAVA,EAAYntC,MACpB2sC,GAAsB,QAAVS,EAAA7P,EAAIlrB,cAAM,IAAA+6B,GAAY,QAAZA,EAAVA,EAAYpkC,kBAAU,IAAAokC,GAAM,QAANA,EAAtBA,EAAwB/9B,YAAI,IAAA+9B,OAAA,EAA5BA,EAA8BptC,SAAmB,QAAdqtC,EAAI9P,EAAIlrB,cAAM,IAAAg7B,OAAA,EAAVA,EAAYh+B,MAMnE,YAJclI,IAAVnH,IACFA,EAAQqO,KAAKi/B,gBAAgBttC,EAAOu9B,EAAIlrB,OAAQgyB,EAASsI,IAGnDt9B,GACN,IAAK,QACH,GAAI,CAAC,QAAS,YAAYpJ,SAAS0mC,GAAY,OAC3C,CAAC,SAAU,YAAY1mC,SAASo+B,KAClCsI,EAAYtI,GAEd,MAEF,IAAK,SACH,IAAK,CAAC,QAAS,YAAYp+B,SAAS0mC,GAAY,OAClB,IAAAY,EAA9B,GAAkB,aAAdZ,EACF3sC,EAAkB,QAAbutC,EAAGhQ,EAAIlrB,cAAM,IAAAk7B,OAAA,EAAVA,EAAY77B,QAK1BrD,KAAKghB,UAAUme,aAAa,CAC1Bn+B,KAAMs9B,EACN96B,aAAc0rB,EAAIwO,UAClBt6B,QAASu6B,GAAsBzO,EAAIlrB,QACnCrS,MAAAA,EACAsH,UAAWiE,KAEf,GAAC,CAAApM,IAAA,yBAAAa,MAED,WACE,IAAM65B,EAASxrB,KAAK03B,QAAQlM,SACFA,GAAUA,EAAO4T,KAAO5T,EAAO4T,IAAI3T,UAI3DzrB,KAAK03B,QAAQ2H,SACbr/B,KAAK03B,QAAQ2H,QAAQC,WAIvBlI,GAAQp3B,KAAKm1B,aAAc,aAC7B,GAAC,CAAArkC,IAAA,uBAAAa,MAED,WACE,IAAM65B,EAASxrB,KAAK03B,QAAQlM,OAO5B,KAN0BA,GAAUA,EAAO4T,KAAO5T,EAAO4T,IAAI3T,UAI3DzrB,KAAK03B,QAAQ2H,SACbr/B,KAAK03B,QAAQ2H,QAAQC,UACvB,CAGA,IAAMp5B,EAAOlG,KACb3L,GACE2L,KAAK03B,QACL,aACA,SAAUtC,GACR,OAAO,WACL,IAAM55B,EAAU0K,EAAK+xB,UAAUrhC,KAC/BsP,EAAKq5B,gBAAgBr5B,EAAKgyB,UAAW18B,GACjC45B,GACFA,EAAKvuB,MAAM7G,KAAMnD,UAErB,CACF,EACAmD,KAAKm1B,aACL,cAGF9gC,GACE2L,KAAK03B,QAAQ2H,QACb,YACA,SAAUjK,GACR,OAAO,WACL,IAAM5hC,EAAMqJ,UAAU1I,OAAS,EAAI0I,UAAU,QAAK/D,EAIlD,OAHItF,GACF0S,EAAKq5B,gBAAgBr5B,EAAKgyB,UAAWhhC,OAAO1D,IAEvC4hC,EAAKvuB,MAAM7G,KAAMnD,UAC1B,CACF,EACAmD,KAAKm1B,aACL,aA/BF,CAiCF,GAAC,CAAArkC,IAAA,kBAAAa,MAED,SAAgBuT,EAAMC,GACpB,IAAMq6B,EAAaC,GAAgBz/B,KAAKi4B,UAAUrhC,MAC5C8oC,EAAWD,GAAgBt6B,GAC3Bw6B,EAAaF,GAAgBv6B,GACnClF,KAAKk4B,UAAY/yB,EAEfq6B,EAAWvqC,WAAayqC,EAASzqC,UACjCuqC,EAAWvrB,OAASyrB,EAASzrB,OAE7B9O,EAAKu6B,EAASrqC,MAAQqqC,EAAStV,MAAQ,KAGvCoV,EAAWvqC,WAAa0qC,EAAW1qC,UACnCuqC,EAAWvrB,OAAS0rB,EAAW1rB,OAE/B/O,EAAOy6B,EAAWtqC,MAAQsqC,EAAWvV,MAAQ,KAE/CpqB,KAAKghB,UAAU4e,kBAAkB16B,EAAMC,EAAI,KAAMjI,KACjD8C,KAAK2rB,QAAQgC,cAAc,CACzB3sB,KAAM,aACN3L,KAAM8P,GAEV,GAAC,CAAArU,IAAA,yBAAAa,MAMD,WACE,IAAMuU,EAAOlG,KACbA,KAAKu8B,YACH,eACAv8B,KAAK03B,QACL,CAAC,SAAU,WACX,SAACxI,GAAG,OAAKhpB,EAAK25B,mBAAmB3Q,EAAI,EAEzC,GAAC,CAAAp+B,IAAA,qBAAAa,MAED,SAAmBu9B,GACjB,IAAMluB,EAAOkuB,EAAIluB,KAEjBhB,KAAKghB,UAAU8e,0BAA0B,CACvC9+B,KAAAA,EACAwC,aAAc0rB,EAAIwO,UAClBzkC,UAAWiE,KAEf,GAAC,CAAApM,IAAA,iBAAAa,MAED,SAAeouC,GACb,IAAIhqC,EACF,0CAEAgqC,EAASC,WAFT,wBAKAD,EAASE,kBALT,yBAQAF,EAASG,mBACT,KAEEH,EAASI,aACXpqC,GACE,aACAgqC,EAASI,WADT,WAIAJ,EAAStmB,WAJT,UAOAsmB,EAASrmB,aACT,MAGJ3jB,GAAW,mBAAqBgqC,EAASK,eAEzCpgC,KAAKghB,UAAUrb,WAAW5P,EAAS,QAAS,KAAMmH,KAClD8C,KAAKqgC,eAAetqC,EACtB,GAAC,CAAAjF,IAAA,iBAAAa,MAED,SAAeoE,GACTiK,KAAK63B,eAAeV,8BACtBn3B,KAAK2rB,QAAQt4B,MAAM0C,EAEvB,GAAC,CAAAjF,IAAA,oCAAAa,MAED,WACEqO,KAAK43B,gBAAgB,wBACvB,GAAC,CAAA9mC,IAAA,kCAAAa,MAED,WACE,GAAM,qBAAsBqO,KAAK23B,UAAjC,CAIA,IAAM2I,EAAatgC,KAAKugC,eAAetyB,KAAKjO,MAC5CA,KAAKu8B,YACH,wBACAv8B,KAAK23B,UACL,CAAC,2BACD2I,EAPF,CASF,GAAC,CAAAxvC,IAAA,cAAAa,MAED,SAAY6uC,EAASpvC,EAAKqvC,EAAO1S,GAAS,IAAAjlB,EAAA,KACxC,GAAI1X,EAAIm+B,iBAAkB,KACHmR,EADGC,EAAApmC,GACRkmC,GAAK,QAAAG,EAAA,WAAE,IAAZ9uC,EAAC4uC,EAAA/uC,MACJiK,EAAU,CAAEkG,SAAS,EAAM++B,SAAS,GAC1CzvC,EAAIm+B,iBAAiBz9B,EAAGi8B,EAASnyB,GAAS,GAC1CkN,EAAKivB,cAAcyI,GAAS1oC,KAAK,WAC/B1G,EAAI49B,oBAAoBl9B,EAAGi8B,EAASnyB,EACtC,EACF,EANA,IAAA+kC,EAAA/qC,MAAA8qC,EAAAC,EAAAhuC,KAAA6H,MAAAomC,GAMC,OAAAtpC,GAAAqpC,EAAA5tC,EAAAuE,EAAA,SAAAqpC,EAAApuC,GAAA,CACH,CACF,GAAC,CAAAzB,IAAA,kBAAAa,MAED,SAAgB6uC,GAEd,KAAOxgC,KAAK+3B,cAAcyI,GAASrsC,QAC7B6L,KAAK+3B,cAAcyI,GAAS56B,OAChCtM,EAEJ,IAAC,CAr+Be,GAw+BlB,SAASihC,GAAa9+B,GACpB,MAAsB,oBAAR8hC,KAAuB9hC,aAAiB8hC,GACxD,CAEA,UC5hCA,SAASuD,GAAyB/S,EAASz8B,EAAW08B,GACpD,GAAIv7B,EAAOnB,EAAW,oBAAqB,CAEzC,IADA,IAAIyvC,EAAsBzvC,EAAUi+B,iBAElCwR,EAAoBC,gBACpBD,EAAoBhS,eAEpBgS,EAAsBA,EAAoBC,eAE5C,IAAIC,EAAQ,SAAU7/B,EAAO/I,EAAU6oC,GACrCH,EAAoBvvC,KAAKwO,KAAMoB,EAAO2sB,EAAQqM,KAAK/hC,GAAW6oC,EAChE,EACAD,EAAMD,eAAiBD,EACvBE,EAAMlS,cAAgBf,EACtB18B,EAAUi+B,iBAAmB0R,EAG7B,IADA,IAAIE,EAAyB7vC,EAAU09B,oBAErCmS,EAAuBC,mBACvBD,EAAuBpS,eAEvBoS,EAAyBA,EAAuBC,kBAElD,IAAIC,EAAW,SAAUjgC,EAAO/I,EAAU6oC,GACxCC,EAAuB3vC,KACrBwO,KACAoB,EACC/I,GAAYA,EAAS43B,kBAAqB53B,EAC3C6oC,EAEJ,EACAG,EAASD,kBAAoBD,EAC7BE,EAAStS,cAAgBf,EACzB18B,EAAU09B,oBAAsBqS,CAClC,CACF,CAEA,OAxDA,SAAqBtqC,EAAQg3B,EAASC,GACpC,GAAKj3B,EAAL,CAIA,IAII9C,EAAGutB,EAJHiN,EACF,4YAA4YzzB,MAC1Y,KAGJ,IAAK/G,EAAI,EAAGA,EAAIw6B,EAAQt6B,SAAUF,EAG5B8C,EAFJyqB,EAASiN,EAAQx6B,KAEK8C,EAAOyqB,GAAQlwB,WACnCwvC,GAAyB/S,EAASh3B,EAAOyqB,GAAQlwB,UAAW08B,EAXhE,CAcF,ECVAjN,GAAQugB,cAAc,CACpBtgB,UAAWphB,EACX8qB,aAAcD,GACdE,YAAaA,GACbC,MAAOA,EACP5U,WAAYA,GACZnW,QAAS0Q,KAGX,UChBI3U,GAA6B,oBAAX7E,QAA2BA,OAAOwqC,eACpDC,GAAQ5lC,IAAWA,GAAQ6lC,aAAe,UAC1CC,GAAiC,oBAAX3qC,QAA2BA,OAAOyqC,KAA0C,mBAAzBzqC,OAAOyqC,IAAOG,aAAoD7oC,IAA3B/B,OAAOyqC,IAAOG,SAMlI,GAJuB,oBAAX5qC,QAA4BA,OAAOs1B,oBAC7Ct1B,OAAOs1B,mBAAqB,IAAI/wB,MAAQgK,YAGrCo8B,IAAe9lC,GAAS,CAC3B,IAAImlB,GAAU,IAAI4K,GAAQ/vB,IAC1B7E,OAAOyqC,IAASzgB,EAClB,KAA6B,oBAAXhqB,QAChBA,OAAO40B,QAAUA,GACjB50B,OAAO6qC,iBAAkB,GACA,oBAAT17B,OAChBA,KAAKylB,QAAUA,GACfzlB,KAAK07B,iBAAkB,GAGzB,U","sources":["webpack://rollbar/webpack/bootstrap","webpack://rollbar/webpack/runtime/define property getters","webpack://rollbar/webpack/runtime/hasOwnProperty shorthand","webpack://rollbar/webpack/runtime/make namespace object","webpack://rollbar/./src/utility.js","webpack://rollbar/./src/utility/traverse.js","webpack://rollbar/./src/scrub.js","webpack://rollbar/./src/telemetry.js","webpack://rollbar/./src/tracing/context.js","webpack://rollbar/./src/tracing/contextManager.js","webpack://rollbar/./src/tracing/hrtime.js","webpack://rollbar/./src/tracing/exporter.js","webpack://rollbar/./src/tracing/id.js","webpack://rollbar/./src/tracing/session.js","webpack://rollbar/./src/logger.js","webpack://rollbar/./src/tracing/spanProcessor.js","webpack://rollbar/./src/tracing/span.js","webpack://rollbar/./src/tracing/tracer.js","webpack://rollbar/./src/tracing/tracing.js","webpack://rollbar/./src/truncation.js","webpack://rollbar/./src/apiUtility.js","webpack://rollbar/./src/api.js","webpack://rollbar/./src/defaults.js","webpack://rollbar/./node_modules/error-stack-parser-es/dist/lite.mjs","webpack://rollbar/./node_modules/error-stack-parser-es/dist/index.mjs","webpack://rollbar/./src/errorParser.js","webpack://rollbar/./src/predicates.js","webpack://rollbar/./src/notifier.js","webpack://rollbar/./src/queue.js","webpack://rollbar/./src/rateLimiter.js","webpack://rollbar/./src/rollbar.js","webpack://rollbar/./src/transforms.js","webpack://rollbar/./src/browser/defaults.js","webpack://rollbar/./src/browser/predicates.js","webpack://rollbar/./src/browser/transforms.js","webpack://rollbar/./src/browser/transport/fetch.js","webpack://rollbar/./src/browser/transport/xhr.js","webpack://rollbar/./src/browser/transport.js","webpack://rollbar/./src/browser/url.js","webpack://rollbar/./src/browser/core.js","webpack://rollbar/./src/browser/globalSetup.js","webpack://rollbar/./src/browser/replay/defaults.js","webpack://rollbar/./src/tracing/defaults.js","webpack://rollbar/./src/utility/headers.js","webpack://rollbar/./src/utility/replace.js","webpack://rollbar/./src/browser/domUtility.js","webpack://rollbar/./src/browser/telemetry.js","webpack://rollbar/./src/browser/wrapGlobals.js","webpack://rollbar/./src/browser/rollbar.js","webpack://rollbar/./src/browser/bundles/rollbar.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(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__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*\n * isType - Given a Javascript value and a string, returns true if the type of the value matches the\n * given string.\n *\n * @param x - any value\n * @param t - a lowercase string containing one of the following type names:\n * - undefined\n * - null\n * - error\n * - number\n * - boolean\n * - string\n * - symbol\n * - function\n * - object\n * - array\n * @returns true if x is of type t, otherwise false\n */\nfunction isType(x, t) {\n return t === typeName(x);\n}\n\n/*\n * typeName - Given a Javascript value, returns the type of the object as a string\n */\nfunction typeName(x) {\n var name = typeof x;\n if (name !== 'object') {\n return name;\n }\n if (!x) {\n return 'null';\n }\n if (x instanceof Error) {\n return 'error';\n }\n return {}.toString\n .call(x)\n .match(/\\s([a-zA-Z]+)/)[1]\n .toLowerCase();\n}\n\n/* isFunction - a convenience function for checking if a value is a function\n *\n * @param f - any value\n * @returns true if f is a function, otherwise false\n */\nfunction isFunction(f) {\n return isType(f, 'function');\n}\n\n/* isNativeFunction - a convenience function for checking if a value is a native JS function\n *\n * @param f - any value\n * @returns true if f is a native JS function, otherwise false\n */\nfunction isNativeFunction(f) {\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n var funcMatchString = Function.prototype.toString\n .call(Object.prototype.hasOwnProperty)\n .replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?');\n var reIsNative = RegExp('^' + funcMatchString + '$');\n return isObject(f) && reIsNative.test(f);\n}\n\n/* isObject - Checks if the argument is an object\n *\n * @param value - any value\n * @returns true is value is an object function is an object)\n */\nfunction isObject(value) {\n return (\n value != null && (typeof value == 'object' || typeof value == 'function')\n );\n}\n\n/* hasOwn - safe helper around Object.hasOwnProperty */\nfunction hasOwn(obj, prop) {\n if (obj == null) {\n return false;\n }\n if (Object.hasOwn) {\n return Object.hasOwn(obj, prop);\n }\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n/* isString - Checks if the argument is a string\n *\n * @param value - any value\n * @returns true if value is a string\n */\nfunction isString(value) {\n return typeof value === 'string' || value instanceof String;\n}\n\n/**\n * isFiniteNumber - determines whether the passed value is a finite number\n *\n * @param {*} n - any value\n * @returns true if value is a finite number\n */\nfunction isFiniteNumber(n) {\n return Number.isFinite(n);\n}\n\n/*\n * isIterable - convenience function for checking if a value can be iterated, essentially\n * whether it is an object or an array.\n *\n * @param i - any value\n * @returns true if i is an object or an array as determined by `typeName`\n */\nfunction isIterable(i) {\n var type = typeName(i);\n return type === 'object' || type === 'array';\n}\n\n/*\n * isError - convenience function for checking if a value is of an error type\n *\n * @param e - any value\n * @returns true if e is an error\n */\nfunction isError(e) {\n // Detect both Error and Firefox Exception type\n return isType(e, 'error') || isType(e, 'exception');\n}\n\n/* isPromise - a convenience function for checking if a value is a promise\n *\n * @param p - any value\n * @returns true if f is a function, otherwise false\n */\nfunction isPromise(p) {\n return isObject(p) && isType(p.then, 'function');\n}\n\n/**\n * isBrowser - a convenience function for checking if the code is running in a browser\n *\n * @returns true if the code is running in a browser environment\n */\nfunction isBrowser() {\n return typeof window !== 'undefined';\n}\n\nfunction redact() {\n return '********';\n}\n\n// from http://stackoverflow.com/a/8809472/1138191\nfunction uuid4() {\n var d = now();\n var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(\n /[xy]/g,\n function (c) {\n var r = ((d + Math.random() * 16) % 16) | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : (r & 0x7) | 0x8).toString(16);\n },\n );\n return uuid;\n}\n\nvar LEVELS = {\n debug: 0,\n info: 1,\n warning: 2,\n error: 3,\n critical: 4,\n};\n\nfunction sanitizeHref(url) {\n try {\n const urlObject = new URL(url);\n if (urlObject.password) {\n urlObject.password = redact();\n }\n if (urlObject.search) {\n urlObject.search = redact();\n }\n return urlObject.toString();\n } catch (_) {\n return url; // Return original URL if parsing fails\n }\n}\n\nfunction sanitizeUrl(url) {\n var baseUrlParts = parseUri(url);\n if (!baseUrlParts) {\n return '(unknown)';\n }\n\n // remove a trailing # if there is no anchor\n if (baseUrlParts.anchor === '') {\n baseUrlParts.source = baseUrlParts.source.replace('#', '');\n }\n\n url = baseUrlParts.source.replace('?' + baseUrlParts.query, '');\n return url;\n}\n\nvar parseUriOptions = {\n strictMode: false,\n key: [\n 'source',\n 'protocol',\n 'authority',\n 'userInfo',\n 'user',\n 'password',\n 'host',\n 'port',\n 'relative',\n 'path',\n 'directory',\n 'file',\n 'query',\n 'anchor',\n ],\n q: {\n name: 'queryKey',\n parser: /(?:^|&)([^&=]*)=?([^&]*)/g,\n },\n parser: {\n strict:\n /^(?:([^:/?#]+):)?(?:\\/\\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\\d*))?))?((((?:[^?#/]*\\/)*)([^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n loose:\n /^(?:(?![^:@]+:[^:@/]*@)([^:/?#.]+):)?(?:\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[?#]|$)))*\\/?)?([^?#/]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n },\n};\n\nfunction parseUri(str) {\n if (!isType(str, 'string')) {\n return undefined;\n }\n\n var o = parseUriOptions;\n var m = o.parser[o.strictMode ? 'strict' : 'loose'].exec(str);\n var uri = {};\n\n for (var i = 0, l = o.key.length; i < l; ++i) {\n uri[o.key[i]] = m[i] || '';\n }\n\n uri[o.q.name] = {};\n uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {\n if ($1) {\n uri[o.q.name][$1] = $2;\n }\n });\n\n return uri;\n}\n\nfunction addParamsAndAccessTokenToPath(accessToken, options, params) {\n params = params || {};\n params.access_token = accessToken;\n var paramsArray = [];\n var k;\n for (k in params) {\n if (Object.prototype.hasOwnProperty.call(params, k)) {\n paramsArray.push([k, params[k]].join('='));\n }\n }\n var query = '?' + paramsArray.sort().join('&');\n\n options = options || {};\n options.path = options.path || '';\n var qs = options.path.indexOf('?');\n var h = options.path.indexOf('#');\n var p;\n if (qs !== -1 && (h === -1 || h > qs)) {\n p = options.path;\n options.path = p.substring(0, qs) + query + '&' + p.substring(qs + 1);\n } else {\n if (h !== -1) {\n p = options.path;\n options.path = p.substring(0, h) + query + p.substring(h);\n } else {\n options.path = options.path + query;\n }\n }\n}\n\nfunction formatUrl(u, protocol) {\n protocol = protocol || u.protocol;\n if (!protocol && u.port) {\n if (u.port === 80) {\n protocol = 'http:';\n } else if (u.port === 443) {\n protocol = 'https:';\n }\n }\n protocol = protocol || 'https:';\n\n if (!u.hostname) {\n return null;\n }\n var result = protocol + '//' + u.hostname;\n if (u.port) {\n result = result + ':' + u.port;\n }\n if (u.path) {\n result = result + u.path;\n }\n return result;\n}\n\nfunction stringify(obj, backup) {\n var value, error;\n try {\n value = JSON.stringify(obj);\n } catch (jsonError) {\n if (backup && isFunction(backup)) {\n try {\n value = backup(obj);\n } catch (backupError) {\n error = backupError;\n }\n } else {\n error = jsonError;\n }\n }\n return { error: error, value: value };\n}\n\nfunction maxByteSize(string) {\n // The transport will use utf-8, so assume utf-8 encoding.\n //\n // This minimal implementation will accurately count bytes for all UCS-2 and\n // single code point UTF-16. If presented with multi code point UTF-16,\n // which should be rare, it will safely overcount, not undercount.\n //\n // While robust utf-8 encoders exist, this is far smaller and far more performant.\n // For quickly counting payload size for truncation, smaller is better.\n\n var count = 0;\n var length = string.length;\n\n for (var i = 0; i < length; i++) {\n var code = string.charCodeAt(i);\n if (code < 128) {\n // up to 7 bits\n count = count + 1;\n } else if (code < 2048) {\n // up to 11 bits\n count = count + 2;\n } else if (code < 65536) {\n // up to 16 bits\n count = count + 3;\n }\n }\n\n return count;\n}\n\nfunction jsonParse(s) {\n var value, error;\n try {\n value = JSON.parse(s);\n } catch (e) {\n error = e;\n }\n return { error, value };\n}\n\nfunction makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n mode,\n backupMessage,\n errorParser,\n) {\n var location = {\n url: url || '',\n line: lineno,\n column: colno,\n };\n location.func = errorParser.guessFunctionName(location.url, location.line);\n location.context = errorParser.gatherContext(location.url, location.line);\n var href =\n typeof document !== 'undefined' &&\n document &&\n document.location &&\n document.location.href;\n var useragent =\n typeof window !== 'undefined' &&\n window &&\n window.navigator &&\n window.navigator.userAgent;\n return {\n mode: mode,\n message: error ? String(error) : message || backupMessage,\n url: href,\n stack: [location],\n useragent: useragent,\n };\n}\n\nfunction wrapCallback(logger, f) {\n return function (err, resp) {\n try {\n f(err, resp);\n } catch (e) {\n logger.error(e);\n }\n };\n}\n\nfunction nonCircularClone(obj) {\n var seen = [obj];\n\n function clone(obj, seen) {\n var value,\n name,\n newSeen,\n result = {};\n\n try {\n for (name in obj) {\n value = obj[name];\n\n if (value && (isType(value, 'object') || isType(value, 'array'))) {\n if (seen.includes(value)) {\n result[name] = 'Removed circular reference: ' + typeName(value);\n } else {\n newSeen = seen.slice();\n newSeen.push(value);\n result[name] = clone(value, newSeen);\n }\n continue;\n }\n\n result[name] = value;\n }\n } catch (e) {\n result = 'Failed cloning custom data: ' + e.message;\n }\n return result;\n }\n return clone(obj, seen);\n}\n\nfunction createItem(args, logger, notifier, requestKeys, lambdaContext) {\n var message, err, custom, callback, request;\n var arg;\n var extraArgs = [];\n var diagnostic = {};\n var argTypes = [];\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n argTypes.push(typ);\n switch (typ) {\n case 'undefined':\n break;\n case 'string':\n if (message) {\n extraArgs.push(arg);\n } else {\n message = arg;\n }\n break;\n case 'function':\n callback = wrapCallback(logger, arg);\n break;\n case 'date':\n extraArgs.push(arg);\n break;\n case 'error':\n case 'domexception':\n case 'exception': // Firefox Exception type\n if (err) {\n extraArgs.push(arg);\n } else {\n err = arg;\n }\n break;\n case 'object':\n case 'array':\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n if (err) {\n extraArgs.push(arg);\n } else {\n err = arg;\n }\n break;\n }\n if (requestKeys && typ === 'object' && !request) {\n for (var j = 0, len = requestKeys.length; j < len; ++j) {\n if (arg[requestKeys[j]] !== undefined) {\n request = arg;\n break;\n }\n }\n if (request) {\n break;\n }\n }\n if (custom) {\n extraArgs.push(arg);\n } else {\n custom = arg;\n }\n break;\n default:\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n if (err) {\n extraArgs.push(arg);\n } else {\n err = arg;\n }\n break;\n }\n extraArgs.push(arg);\n }\n }\n\n // if custom is an array this turns it into an object with integer keys\n if (custom) custom = nonCircularClone(custom);\n\n if (extraArgs.length > 0) {\n if (!custom) custom = nonCircularClone({});\n custom.extraArgs = nonCircularClone(extraArgs);\n }\n\n var item = {\n message: message,\n err: err,\n custom: custom,\n timestamp: now(),\n callback: callback,\n notifier: notifier,\n diagnostic: diagnostic,\n uuid: uuid4(),\n };\n\n item.data = item.data || {};\n\n setCustomItemKeys(item, custom);\n\n if (requestKeys && request) {\n item.request = request;\n }\n if (lambdaContext) {\n item.lambdaContext = lambdaContext;\n }\n item._originalArgs = args;\n item.diagnostic.original_arg_types = argTypes;\n return item;\n}\n\nfunction setCustomItemKeys(item, custom) {\n if (custom && custom.level !== undefined) {\n item.level = custom.level;\n delete custom.level;\n }\n if (custom && custom.skipFrames !== undefined) {\n item.skipFrames = custom.skipFrames;\n delete custom.skipFrames;\n }\n}\n\nfunction addErrorContext(item, errors) {\n var custom = item.data.custom || {};\n var contextAdded = false;\n\n try {\n for (const error of errors) {\n if (hasOwn(error, 'rollbarContext')) {\n custom = merge(custom, nonCircularClone(error.rollbarContext));\n contextAdded = true;\n }\n }\n\n // Avoid adding an empty object to the data.\n if (contextAdded) {\n item.data.custom = custom;\n }\n } catch (e) {\n item.diagnostic.error_context = 'Failed: ' + e.message;\n }\n}\n\nvar TELEMETRY_TYPES = [\n 'log',\n 'network',\n 'dom',\n 'navigation',\n 'error',\n 'manual',\n];\nvar TELEMETRY_LEVELS = ['critical', 'error', 'warning', 'info', 'debug'];\n\nfunction arrayIncludes(arr, val) {\n for (const entry of arr) {\n if (entry === val) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction createTelemetryEvent(args) {\n var type, metadata, level;\n var arg;\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n switch (typ) {\n case 'string':\n if (!type && arrayIncludes(TELEMETRY_TYPES, arg)) {\n type = arg;\n } else if (!level && arrayIncludes(TELEMETRY_LEVELS, arg)) {\n level = arg;\n }\n break;\n case 'object':\n metadata = arg;\n break;\n default:\n break;\n }\n }\n var event = {\n type: type || 'manual',\n metadata: metadata || {},\n level: level,\n };\n\n return event;\n}\n\nfunction addItemAttributes(itemData, attributes) {\n itemData.attributes = itemData.attributes || [];\n for (const a of attributes) {\n if (a.value === undefined) {\n continue;\n }\n itemData.attributes.push(a);\n }\n}\n\n/*\n * get - given an obj/array and a keypath, return the value at that keypath or\n * undefined if not possible.\n *\n * @param obj - an object or array\n * @param path - a string of keys separated by '.' such as 'plugin.jquery.0.message'\n * which would correspond to 42 in `{plugin: {jquery: [{message: 42}]}}`\n */\nfunction get(obj, path) {\n if (!obj) {\n return undefined;\n }\n var keys = path.split('.');\n var result = obj;\n try {\n for (var i = 0, len = keys.length; i < len; ++i) {\n result = result[keys[i]];\n }\n } catch (_e) {\n result = undefined;\n }\n return result;\n}\n\nfunction set(obj, path, value) {\n if (!obj) {\n return;\n }\n\n // Prevent prototype pollution by setting the prototype to null.\n Object.setPrototypeOf(obj, null);\n\n var keys = path.split('.');\n var len = keys.length;\n if (len < 1) {\n return;\n }\n if (len === 1) {\n obj[keys[0]] = value;\n return;\n }\n try {\n var temp = obj[keys[0]] || {};\n var replacement = temp;\n for (var i = 1; i < len - 1; ++i) {\n temp[keys[i]] = temp[keys[i]] || {};\n temp = temp[keys[i]];\n }\n temp[keys[len - 1]] = value;\n obj[keys[0]] = replacement;\n } catch (_e) {\n return;\n }\n}\n\nfunction formatArgsAsString(args) {\n var i, len, arg;\n var result = [];\n for (i = 0, len = args.length; i < len; ++i) {\n arg = args[i];\n switch (typeName(arg)) {\n case 'object':\n arg = stringify(arg);\n arg = arg.error || arg.value;\n if (arg.length > 500) {\n arg = arg.substr(0, 497) + '...';\n }\n break;\n case 'null':\n arg = 'null';\n break;\n case 'undefined':\n arg = 'undefined';\n break;\n case 'symbol':\n arg = arg.toString();\n break;\n }\n result.push(arg);\n }\n return result.join(' ');\n}\n\nfunction now() {\n if (Date.now) {\n return Date.now();\n }\n return Number(new Date());\n}\n\nfunction filterIp(requestData, captureIp) {\n if (!requestData || !requestData['user_ip'] || captureIp === true) {\n return;\n }\n var newIp = requestData['user_ip'];\n if (!captureIp) {\n newIp = null;\n } else {\n try {\n var parts;\n if (newIp.indexOf('.') !== -1) {\n parts = newIp.split('.');\n parts.pop();\n parts.push('0');\n newIp = parts.join('.');\n } else if (newIp.indexOf(':') !== -1) {\n parts = newIp.split(':');\n if (parts.length > 2) {\n var beginning = parts.slice(0, 3);\n var slashIdx = beginning[2].indexOf('/');\n if (slashIdx !== -1) {\n beginning[2] = beginning[2].substring(0, slashIdx);\n }\n var terminal = '0000:0000:0000:0000:0000';\n newIp = beginning.concat(terminal).join(':');\n }\n } else {\n newIp = null;\n }\n } catch (_e) {\n newIp = null;\n }\n }\n requestData['user_ip'] = newIp;\n}\n\nfunction handleOptions(current, input, payload, logger) {\n var result = merge(current, input, payload);\n result = updateDeprecatedOptions(result, logger);\n if (!input || input.overwriteScrubFields) {\n return result;\n }\n if (input.scrubFields) {\n result.scrubFields = (current.scrubFields || []).concat(input.scrubFields);\n }\n return result;\n}\n\nfunction updateDeprecatedOptions(options, logger) {\n if (options.hostWhiteList && !options.hostSafeList) {\n options.hostSafeList = options.hostWhiteList;\n options.hostWhiteList = undefined;\n logger && logger.log('hostWhiteList is deprecated. Use hostSafeList.');\n }\n if (options.hostBlackList && !options.hostBlockList) {\n options.hostBlockList = options.hostBlackList;\n options.hostBlackList = undefined;\n logger && logger.log('hostBlackList is deprecated. Use hostBlockList.');\n }\n return options;\n}\n\nfunction merge() {\n function isPlainObject(obj) {\n if (!obj || Object.prototype.toString.call(obj) !== '[object Object]') {\n return false;\n }\n\n var hasOwnConstructor = hasOwn(obj, 'constructor');\n var hasIsPrototypeOf =\n obj.constructor &&\n obj.constructor.prototype &&\n hasOwn(obj.constructor.prototype, 'isPrototypeOf');\n // Not own constructor property must be Object\n if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n return false;\n }\n\n // Own properties are enumerated firstly, so to speed up,\n // if last one is own, then all properties are own.\n var key;\n for (key in obj) {\n /**/\n }\n\n return typeof key === 'undefined' || hasOwn(obj, key);\n }\n\n var i,\n src,\n copy,\n clone,\n name,\n result = Object.create(null), // no prototype pollution on Object\n current = null,\n length = arguments.length;\n\n for (i = 0; i < length; i++) {\n current = arguments[i];\n if (current === null || current === undefined) {\n continue;\n }\n\n for (name in current) {\n src = result[name];\n copy = current[name];\n if (result !== copy) {\n if (copy && isPlainObject(copy)) {\n clone = src && isPlainObject(src) ? src : {};\n result[name] = merge(clone, copy);\n } else if (typeof copy !== 'undefined') {\n result[name] = copy;\n }\n }\n }\n }\n return result;\n}\n\nexport {\n addParamsAndAccessTokenToPath,\n createItem,\n addErrorContext,\n createTelemetryEvent,\n addItemAttributes,\n filterIp,\n formatArgsAsString,\n formatUrl,\n get,\n handleOptions,\n isError,\n isFiniteNumber,\n isFunction,\n hasOwn,\n isIterable,\n isNativeFunction,\n isObject,\n isString,\n isType,\n isPromise,\n isBrowser,\n jsonParse,\n LEVELS,\n makeUnhandledStackInfo,\n merge,\n now,\n redact,\n sanitizeHref,\n sanitizeUrl,\n set,\n stringify,\n maxByteSize,\n typeName,\n uuid4,\n};\n","import * as _ from '../utility.js';\n\nfunction traverse(obj, func, seen) {\n var k, v, i;\n var isObj = _.isType(obj, 'object');\n var isArray = _.isType(obj, 'array');\n var keys = [];\n var seenIndex;\n\n // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11.\n seen = seen || { obj: [], mapped: [] };\n\n if (isObj) {\n seenIndex = seen.obj.indexOf(obj);\n\n if (isObj && seenIndex !== -1) {\n // Prefer the mapped object if there is one.\n return seen.mapped[seenIndex] || seen.obj[seenIndex];\n }\n\n seen.obj.push(obj);\n seenIndex = seen.obj.length - 1;\n }\n\n if (isObj) {\n for (k in obj) {\n if (_.hasOwn(obj, k)) {\n keys.push(k);\n }\n }\n } else if (isArray) {\n for (i = 0; i < obj.length; ++i) {\n keys.push(i);\n }\n }\n\n var result = isObj ? {} : [];\n var same = true;\n for (i = 0; i < keys.length; ++i) {\n k = keys[i];\n v = obj[k];\n result[k] = func(k, v, seen);\n same = same && result[k] === obj[k];\n }\n\n if (isObj && !same) {\n seen.mapped[seenIndex] = result;\n }\n\n return !same ? result : obj;\n}\n\nexport default traverse;\n","import traverse from './utility/traverse.js';\nimport * as _ from './utility.js';\n\nfunction scrub(data, scrubFields, scrubPaths) {\n scrubFields = scrubFields || [];\n\n if (scrubPaths) {\n for (const path of scrubPaths) {\n scrubPath(data, path);\n }\n }\n\n var paramRes = _getScrubFieldRegexs(scrubFields);\n var queryRes = _getScrubQueryParamRegexs(scrubFields);\n\n function redactQueryParam(dummy0, paramPart) {\n return paramPart + _.redact();\n }\n\n function paramScrubber(v) {\n if (_.isType(v, 'string')) {\n for (const regex of queryRes) {\n v = v.replace(regex, redactQueryParam);\n }\n }\n return v;\n }\n\n function valScrubber(k, v) {\n for (const regex of paramRes) {\n if (regex.test(k)) {\n v = _.redact();\n break;\n }\n }\n return v;\n }\n\n function scrubber(k, v, seen) {\n var tmpV = valScrubber(k, v);\n if (tmpV === v) {\n if (_.isType(v, 'object') || _.isType(v, 'array')) {\n return traverse(v, scrubber, seen);\n }\n return paramScrubber(tmpV);\n } else {\n return tmpV;\n }\n }\n\n return traverse(data, scrubber);\n}\n\nfunction scrubPath(obj, path) {\n var keys = path.split('.');\n var last = keys.length - 1;\n try {\n for (const [index, key] of keys.entries()) {\n if (index < last) {\n obj = obj[key];\n } else {\n obj[key] = _.redact();\n }\n }\n } catch (_e) {\n // Missing key is OK;\n }\n}\n\nfunction _getScrubFieldRegexs(scrubFields) {\n var ret = [];\n for (const field of scrubFields) {\n var pat = '^\\\\[?(%5[bB])?' + field + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?$';\n ret.push(new RegExp(pat, 'i'));\n }\n return ret;\n}\n\nfunction _getScrubQueryParamRegexs(scrubFields) {\n var ret = [];\n for (const field of scrubFields) {\n var pat = '\\\\[?(%5[bB])?' + field + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?';\n ret.push(new RegExp('(' + pat + '=)([^&\\\\n]+)', 'igm'));\n }\n return ret;\n}\n\nexport default scrub;\n","import * as _ from './utility.js';\n\nconst MAX_EVENTS = 100;\n\n// Temporary workaround while solving commonjs -> esm issues in Node 18 - 20.\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\nclass Telemeter {\n constructor(options, tracing) {\n this.queue = [];\n this.options = _.merge(options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n this.tracing = tracing;\n this.telemetrySpan = this.tracing?.startSpan('rollbar-telemetry', {});\n }\n\n configure(options) {\n var oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n var newMaxEvents = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n var deleteCount = 0;\n if (this.queue.length > newMaxEvents) {\n deleteCount = this.queue.length - newMaxEvents;\n }\n this.maxQueueSize = newMaxEvents;\n this.queue.splice(0, deleteCount);\n }\n\n copyEvents() {\n var events = Array.prototype.slice.call(this.queue, 0);\n if (_.isFunction(this.options.filterTelemetry)) {\n try {\n var i = events.length;\n while (i--) {\n if (this.options.filterTelemetry(events[i])) {\n events.splice(i, 1);\n }\n }\n } catch (_e) {\n this.options.filterTelemetry = null;\n }\n }\n\n // Filter until supported in legacy telemetry\n events = events.filter((e) => e.type !== 'connectivity');\n\n // Remove internal keys from output\n events = events.map(\n ({ otelAttributes: _otelAttributes, ...event }) => event,\n );\n\n return events;\n }\n\n exportTelemetrySpan(attributes = {}) {\n if (this.telemetrySpan) {\n this.telemetrySpan.end(attributes);\n this.telemetrySpan = this.tracing.startSpan('rollbar-telemetry', {});\n }\n }\n\n capture(\n type,\n metadata,\n level,\n rollbarUUID,\n timestamp = null,\n otelAttributes = null,\n ) {\n var e = {\n level: getLevel(type, level),\n type: type,\n timestamp_ms: timestamp || _.now(),\n body: metadata,\n source: 'client',\n };\n if (rollbarUUID) {\n e.uuid = rollbarUUID;\n }\n if (otelAttributes) {\n e.otelAttributes = otelAttributes;\n }\n\n try {\n if (\n _.isFunction(this.options.filterTelemetry) &&\n this.options.filterTelemetry(e)\n ) {\n return false;\n }\n } catch (_exc) {\n this.options.filterTelemetry = null;\n }\n\n this.push(e);\n return e;\n }\n\n captureEvent(type, metadata, level, rollbarUUID) {\n return this.capture(type, metadata, level, rollbarUUID);\n }\n\n captureError(err, level, rollbarUUID, timestamp) {\n const message = err.message || String(err);\n var metadata = { message };\n if (err.stack) {\n metadata.stack = err.stack;\n }\n const otelAttributes = {\n message,\n level,\n type: 'error',\n uuid: rollbarUUID,\n };\n\n this.telemetrySpan?.addEvent(\n 'rollbar-occurrence-event',\n otelAttributes,\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'error',\n metadata,\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureLog(message, level, rollbarUUID, timestamp) {\n const event = rollbarUUID\n ? 'rollbar-occurrence-event'\n : 'rollbar-log-event';\n const otelAttributes = {\n message,\n level,\n ...(rollbarUUID ? { type: 'message', uuid: rollbarUUID } : {}),\n };\n\n this.telemetrySpan?.addEvent(event, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'log',\n { message },\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNetwork(metadata, subtype, rollbarUUID, requestData) {\n subtype = subtype || 'xhr';\n metadata.subtype = metadata.subtype || subtype;\n if (requestData) {\n metadata.request = requestData;\n }\n const level = this.levelFromStatus(metadata.status_code);\n const endTimeNano = (metadata.end_time_ms || 0) * 1e6;\n const otelAttributes = {\n type: metadata.subtype,\n method: metadata.method,\n url: metadata.url,\n statusCode: metadata.status_code,\n 'request.headers': JSON.stringify(metadata.request_headers || {}),\n 'response.headers': JSON.stringify(metadata.response?.headers || {}),\n 'response.timeUnixNano': endTimeNano.toString(),\n };\n const requestBody = metadata.request;\n const responseBody = metadata.response?.body;\n if (requestBody) {\n otelAttributes['request.body'] = JSON.stringify(requestBody);\n }\n if (responseBody) {\n otelAttributes['response.body'] = JSON.stringify(responseBody);\n }\n\n this.telemetrySpan?.addEvent(\n 'rollbar-network-event',\n otelAttributes,\n fromMillis(metadata.start_time_ms),\n );\n\n return this.capture(\n 'network',\n metadata,\n level,\n rollbarUUID,\n metadata.start_time_ms,\n otelAttributes,\n );\n }\n\n levelFromStatus(statusCode) {\n if (statusCode >= 200 && statusCode < 400) {\n return 'info';\n }\n if (statusCode === 0 || statusCode >= 400) {\n return 'error';\n }\n return 'info';\n }\n\n captureDom(subtype, element, value, checked, rollbarUUID) {\n var metadata = {\n subtype: subtype,\n element: element,\n };\n if (value !== undefined) {\n metadata.value = value;\n }\n if (checked !== undefined) {\n metadata.checked = checked;\n }\n return this.capture('dom', metadata, 'info', rollbarUUID);\n }\n\n captureInput({ type, isSynthetic, element, value, timestamp }) {\n const name = 'rollbar-input-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n value,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n value,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureClick({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-click-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n _getRepeatedEvent(name, attributes) {\n const lastEvent = this._lastEvent(this.queue);\n\n if (\n lastEvent &&\n lastEvent.body.type === name &&\n lastEvent.otelAttributes.target === attributes.target\n ) {\n return lastEvent;\n }\n }\n\n _updateRepeatedEvent(event, attributes, timestamp) {\n const duration = Math.max(timestamp - event.timestamp_ms, 1);\n event.body.value = attributes.value;\n event.otelAttributes.value = attributes.value;\n event.otelAttributes.height = attributes.height;\n event.otelAttributes.width = attributes.width;\n event.otelAttributes.textZoomRatio = attributes.textZoomRatio;\n event.otelAttributes['endTimeUnixNano'] = fromMillis(timestamp);\n event.otelAttributes['durationUnixNano'] = fromMillis(duration);\n event.otelAttributes.count = (event.otelAttributes.count || 1) + 1;\n event.otelAttributes.rate = event.otelAttributes.count / (duration / 1000);\n }\n\n _lastEvent(list) {\n return list.length > 0 ? list[list.length - 1] : null;\n }\n\n captureFocus({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-focus-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureResize({\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n timestamp,\n }) {\n const name = 'rollbar-resize-event';\n const metadata = {\n type: name,\n subtype: type,\n width,\n height,\n textZoomRatio,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n };\n\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureDragDrop({\n type,\n isSynthetic,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n timestamp,\n }) {\n const name = 'rollbar-dragdrop-event';\n let metadata = {\n type: name,\n subtype: type,\n isSynthetic,\n };\n\n let otelAttributes = {\n type,\n isSynthetic,\n };\n\n if (type === 'dragstart') {\n metadata = { ...metadata, element, dropEffect, effectAllowed };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n };\n }\n\n if (type === 'drop') {\n metadata = {\n ...metadata,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNavigation(from, to, rollbarUUID, timestamp) {\n this.telemetrySpan?.addEvent(\n 'rollbar-navigation-event',\n { 'previous.url.full': from, 'url.full': to },\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'navigation',\n { from, to },\n 'info',\n rollbarUUID,\n timestamp,\n );\n }\n\n captureDomContentLoaded(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'DOMContentLoaded' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'DOMContentLoaded'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureLoad(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'load' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'load'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureConnectivityChange({ type, isSynthetic, timestamp }) {\n const name = 'rollbar-connectivity-event';\n const metadata = {\n type: name,\n subtype: type,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'connectivity',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n // Only intended to be used internally by the notifier\n _captureRollbarItem(item) {\n if (!this.options.includeItemsInTelemetry) {\n return;\n }\n if (item.err) {\n return this.captureError(item.err, item.level, item.uuid, item.timestamp);\n }\n if (item.message) {\n return this.captureLog(\n item.message,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n if (item.custom) {\n return this.capture(\n 'log',\n item.custom,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n }\n\n push(e) {\n this.queue.push(e);\n if (this.queue.length > this.maxQueueSize) {\n this.queue.shift();\n }\n }\n}\n\nfunction getLevel(type, level) {\n if (level) {\n return level;\n }\n var defaultLevel = {\n error: 'error',\n manual: 'info',\n };\n return defaultLevel[type] || 'info';\n}\n\nexport default Telemeter;\n","export class Context {\n constructor(parentContext) {\n this._currentContext = parentContext ? new Map(parentContext) : new Map();\n }\n\n getValue(key) {\n return this._currentContext.get(key);\n }\n\n setValue(key, value) {\n const context = new Context(this._currentContext);\n context._currentContext.set(key, value);\n return context;\n }\n\n deleteValue(key) {\n const context = new Context(self._currentContext);\n context._currentContext.delete(key);\n return context;\n }\n}\n\nexport const ROOT_CONTEXT = new Context();\n","import { ROOT_CONTEXT } from './context.js';\n\nexport class ContextManager {\n constructor() {\n this.currentContext = ROOT_CONTEXT;\n }\n\n active() {\n return this.currentContext;\n }\n\n enterContext(context) {\n const previousContext = this.currentContext;\n this.currentContext = context || ROOT_CONTEXT;\n return previousContext;\n }\n\n exitContext(context) {\n this.currentContext = context;\n return this.currentContext;\n }\n\n with(context, fn, thisArg, ...args) {\n const previousContext = this.enterContext(context);\n try {\n return fn.call(thisArg, ...args);\n } finally {\n this.exitContext(previousContext);\n }\n }\n}\n\nexport function createContextKey(key) {\n // Use Symbol for OpenTelemetry compatibility.\n return Symbol.for(key);\n}\n","/**\n * @module hrtime\n *\n * @description Methods for handling OpenTelemetry hrtime.\n */\n\n/**\n * Convert a duration in milliseconds to an OpenTelemetry hrtime tuple.\n *\n * @param {number} millis - The duration in milliseconds.\n * @returns {[number, number]} An array where the first element is seconds\n * and the second is nanoseconds.\n */\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in milliseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in milliseconds.\n */\nfunction toMillis(hrtime) {\n return hrtime[0] * 1e3 + Math.round(hrtime[1] / 1e6);\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in nanoseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in nanoseconds.\n */\nfunction toNanos(hrtime) {\n return hrtime[0] * 1e9 + hrtime[1];\n}\n\n/**\n * Adds two OpenTelemetry hrtime tuples.\n *\n * @param {[number, number]} a - The first hrtime tuple [s, ns].\n * @param {[number, number]} b - The second hrtime tuple [s, ns].\n * @returns {[number, number]} Summed hrtime tuple, normalized.\n *\n */\nfunction add(a, b) {\n return [a[0] + b[0] + Math.trunc((a[1] + b[1]) / 1e9), (a[1] + b[1]) % 1e9];\n}\n\n/**\n * Get the current high-resolution time as an OpenTelemetry hrtime tuple.\n *\n * @param {boolean} usePerformance=false - If true, uses the Performance API (timeOrigin + now()).\n *\n * @returns {[number, number]} The current hrtime tuple [s, ns].\n */\nfunction now(usePerformance = false) {\n if (usePerformance) {\n return add(\n fromMillis(performance.timeOrigin),\n fromMillis(performance.now()),\n );\n }\n return fromMillis(Date.now());\n}\n\n/**\n * Check if a value is a valid OpenTelemetry hrtime tuple.\n *\n * An hrtime tuple is an Array of exactly two numbers:\n * [seconds, nanoseconds]\n *\n * @param {*} value – anything to test\n * @returns {boolean} true if `value` is a [number, number] array of length 2\n *\n * @example\n * isHrTime([ 1, 500 ]); // true\n * isHrTime([ 0, 1e9 ]); // true\n * isHrTime([ '1', 500 ]); // false\n * isHrTime({ 0: 1, 1: 500 }); // false\n */\nfunction isHrTime(value) {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number'\n );\n}\n\n/**\n * Methods for handling hrtime. OpenTelemetry uses the [seconds, nanoseconds]\n * format for hrtime in the `ReadableSpan` interface.\n *\n * @example\n * import hrtime from '@tracing/hrtime.js';\n *\n * hrtime.fromMillis(1000);\n * hrtime.toMillis([0, 1000]);\n * hrtime.add([0, 0], [0, 1000]);\n * hrtime.now();\n * hrtime.isHrTime([0, 1000]);\n */\nexport default { fromMillis, toMillis, toNanos, add, now, isHrTime };\n","import hrtime from './hrtime.js';\n\n/**\n * SpanExporter is responsible for exporting ReadableSpan objects\n * and transforming them into the OTLP-compatible format.\n */\nexport class SpanExporter {\n constructor(api, options = {}) {\n this.api = api;\n this.options = options;\n }\n\n /**\n * Export spans to the span export queue\n *\n * @param {Array} spans - Array of ReadableSpan objects to export\n * @param {Function} _resultCallback - Optional callback (not used)\n */\n export(spans, _resultCallback) {\n spanExportQueue.push(...spans);\n }\n\n /**\n * Transforms an array of ReadableSpan objects into the OTLP format payload\n * compatible with the Rollbar API. This follows the OpenTelemetry protocol\n * specification for traces.\n *\n * @returns {Object} OTLP format payload for API transmission\n */\n toPayload() {\n const spans = spanExportQueue.slice();\n spanExportQueue.length = 0;\n\n if (!spans || !spans.length) {\n return { resourceSpans: [] };\n }\n\n const resource = (spans[0] && spans[0].resource) || {};\n\n const scopeMap = new Map();\n\n for (const span of spans) {\n const scopeKey = span.instrumentationScope\n ? `${span.instrumentationScope.name}:${span.instrumentationScope.version}`\n : 'default:1.0.0';\n\n if (!scopeMap.has(scopeKey)) {\n scopeMap.set(scopeKey, {\n scope: span.instrumentationScope || {\n name: 'default',\n version: '1.0.0',\n attributes: [],\n },\n spans: [],\n });\n }\n\n scopeMap.get(scopeKey).spans.push(this._transformSpan(span));\n }\n\n return {\n resourceSpans: [\n {\n resource: this._transformResource(resource),\n scopeSpans: Array.from(scopeMap.values()).map((scopeData) => ({\n scope: this._transformInstrumentationScope(scopeData.scope),\n spans: scopeData.spans,\n })),\n },\n ],\n };\n }\n\n /**\n * Sends the given payload to the Rollbar API.\n *\n * @param {String} payload - Serialized OTLP format payload\n * @param {Object} headers - Optional request headers\n * @returns {Promise} Promise that resolves when the request completes\n */\n post(payload, headers = {}) {\n return this.api.postSpans(payload, headers);\n }\n\n /**\n * Transforms a ReadableSpan into the OTLP Span format\n *\n * @private\n * @param {Object} span - ReadableSpan object to transform\n * @returns {Object} OTLP Span format\n */\n _transformSpan(span) {\n const transformAttributes = (attributes) => {\n return Object.entries(attributes || {}).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n };\n\n const transformEvents = (events) => {\n return (events || []).map((event) => ({\n timeUnixNano: hrtime.toNanos(event.time),\n name: event.name,\n attributes: transformAttributes(event.attributes),\n }));\n };\n\n return {\n traceId: span.spanContext.traceId,\n spanId: span.spanContext.spanId,\n parentSpanId: span.parentSpanId || '',\n name: span.name,\n kind: span.kind || 1, // INTERNAL by default\n startTimeUnixNano: hrtime.toNanos(span.startTime),\n endTimeUnixNano: hrtime.toNanos(span.endTime),\n attributes: transformAttributes(span.attributes),\n events: transformEvents(span.events),\n };\n }\n\n /**\n * Transforms a resource object into OTLP Resource format\n *\n * @private\n * @param {Object} resource - Resource information\n * @returns {Object} OTLP Resource format\n */\n _transformResource(resource) {\n const attributes = resource.attributes || {};\n const keyValues = Object.entries(attributes).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n\n return {\n attributes: keyValues,\n };\n }\n\n /**\n * Transforms an instrumentation scope into OTLP InstrumentationScope format\n *\n * @private\n * @param {Object} scope - Instrumentation scope information\n * @returns {Object} OTLP InstrumentationScope format\n */\n _transformInstrumentationScope(scope) {\n return {\n name: scope.name || '',\n version: scope.version || '',\n attributes: (scope.attributes || []).map((attr) => ({\n key: attr.key,\n value: this._transformAnyValue(attr.value),\n })),\n };\n }\n\n /**\n * Transforms a JavaScript value into an OTLP AnyValue\n *\n * @private\n * @param {any} value - Value to transform\n * @returns {Object} OTLP AnyValue format\n */\n _transformAnyValue(value) {\n if (value === null || value === undefined) {\n return { stringValue: '' };\n }\n\n const type = typeof value;\n\n if (type === 'string') {\n return { stringValue: value };\n } else if (type === 'number') {\n if (Number.isInteger(value)) {\n return { intValue: value.toString() };\n } else {\n return { doubleValue: value };\n }\n } else if (type === 'boolean') {\n return { boolValue: value };\n } else if (Array.isArray(value)) {\n return {\n arrayValue: {\n values: value.map((v) => this._transformAnyValue(v)),\n },\n };\n } else if (type === 'object') {\n return {\n kvlistValue: {\n values: Object.entries(value).map(([k, v]) => ({\n key: k,\n value: this._transformAnyValue(v),\n })),\n },\n };\n }\n\n return { stringValue: String(value) };\n }\n}\n\nexport const spanExportQueue = [];\n","/**\n * Generate a random hexadecimal ID of specified byte length\n *\n * @param {number} bytes - Number of bytes for the ID (default: 16)\n * @returns {string} - Hexadecimal string representation\n */\nfunction gen(bytes = 16) {\n let randomBytes = new Uint8Array(bytes);\n crypto.getRandomValues(randomBytes);\n let randHex = Array.from(randomBytes, (byte) =>\n byte.toString(16).padStart(2, '0'),\n ).join('');\n return randHex;\n}\n\n/**\n * Tracing id generation utils\n *\n * @example\n * import id from './id.js';\n *\n * const spanId = id.gen(8); // => \"a1b2c3d4e5f6...\"\n */\nexport default { gen };\n","import id from './id.js';\n\nconst SESSION_KEY = 'RollbarSession';\n\nexport class Session {\n _attributes;\n\n constructor(tracing, options) {\n this.options = options;\n this.tracing = tracing;\n this.window = tracing.window;\n this.session = null;\n this._attributes = {};\n }\n\n init(attrs = {}) {\n if (this.session) {\n return this;\n }\n this.getSession() || this.createSession();\n\n this.initSessionAttributes(attrs);\n\n return this;\n }\n\n getSession() {\n try {\n const serializedSession = this.window.sessionStorage.getItem(SESSION_KEY);\n\n if (!serializedSession) {\n return null;\n }\n\n this.session = JSON.parse(serializedSession);\n } catch {\n return null;\n }\n return this;\n }\n\n createSession() {\n this.session = {\n id: id.gen(),\n createdAt: Date.now(),\n };\n\n return this.setSession(this.session);\n }\n\n setSession(session) {\n const sessionString = JSON.stringify(session);\n\n try {\n this.window.sessionStorage.setItem(SESSION_KEY, sessionString);\n } catch {\n return null;\n }\n return this;\n }\n\n get attributes() {\n return this._attributes;\n }\n\n setAttributes(attributes) {\n this._attributes = { ...this._attributes, ...attributes };\n return this;\n }\n\n setUser(user) {\n this.setAttributes({\n 'user.id': user?.id,\n 'user.email': user?.email,\n 'user.name': user?.name || user?.username,\n });\n return this;\n }\n\n initSessionAttributes(attrs) {\n this.setAttributes({\n 'session.id': this.session.id,\n 'browser.brands': navigator.userAgentData?.brands,\n 'browser.language': navigator.language,\n 'browser.mobile': navigator.userAgentData?.mobile,\n 'browser.platform': navigator.userAgentData?.platform,\n 'client.address': '$remote_ip', // updated at the API\n 'rollbar.notifier.framework': 'browser-js',\n 'user_agent.original': navigator.userAgent,\n ...attrs,\n });\n return this;\n }\n}\n","let log = () => {};\n\nconst levels = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n disable: 4,\n};\n\nconst logger = {\n error: (...args) => log('error', args),\n warn: (...args) => log('warn', args),\n info: (...args) => log('info', args),\n debug: (...args) => log('debug', args),\n log: (...args) => log('info', args),\n init: ({ logLevel }) => {\n log = function (level, args) {\n if (levels[level] < levels[logLevel]) return;\n\n args.unshift('Rollbar:');\n\n // eslint-disable-next-line no-console\n console[level].apply(console, args);\n };\n },\n};\n\nexport default logger;\n","import logger from '../logger.js';\n\nexport class SpanProcessor {\n constructor(exporter, options = {}) {\n this.exporter = exporter;\n this.options = options;\n this.pendingSpans = new Map();\n this.transforms = [this.userTransform.bind(this)];\n }\n\n addTransform(transformFn) {\n this.transforms.unshift(transformFn);\n }\n\n userTransform(span) {\n if (this.options.transformSpan) {\n this.options.transformSpan({ span: span });\n }\n }\n\n applyTransforms(span) {\n for (const transform of this.transforms) {\n try {\n transform(span);\n } catch (e) {\n logger.error('Error running span transform callback', e);\n }\n }\n }\n\n onStart(span, _parentContext) {\n this.pendingSpans.set(span.span.spanContext.spanId, span);\n }\n\n onEnd(span) {\n this.applyTransforms(span.span);\n this.exporter.export([span.export()]);\n this.pendingSpans.delete(span.span.spanContext.spanId);\n }\n}\n","import hrtime from './hrtime.js';\n\nexport class Span {\n constructor(options) {\n this.usePerformance = options.usePerformance;\n this.initReadableSpan(options);\n\n this.spanProcessor = options.spanProcessor;\n this.spanProcessor.onStart(this, options.context);\n\n if (options.attributes) {\n this.setAttributes(options.attributes);\n }\n return this;\n }\n\n initReadableSpan(options) {\n this.span = {\n name: options.name,\n kind: options.kind,\n spanContext: options.spanContext,\n parentSpanId: options.parentSpanId,\n startTime: options.startTime || hrtime.now(options.usePerformance),\n endTime: [0, 0],\n status: { code: 0, message: '' },\n attributes: { 'session.id': options.session?.id },\n links: [],\n events: [],\n duration: 0,\n ended: false,\n resource: options.resource,\n instrumentationScope: options.scope,\n droppedAttributesCount: 0,\n droppedEventsCount: 0,\n droppedLinksCount: 0,\n };\n }\n\n spanContext() {\n return this.span.spanContext;\n }\n\n get spanId() {\n return this.span.spanContext.spanId;\n }\n\n get traceId() {\n return this.span.spanContext.traceId;\n }\n\n setAttribute(key, value) {\n if (value == null || this.span.ended) return this;\n if (key.length === 0) return this;\n\n this.span.attributes[key] = value;\n return this;\n }\n\n setAttributes(attributes) {\n for (const [k, v] of Object.entries(attributes)) {\n this.setAttribute(k, v);\n }\n return this;\n }\n\n addEvent(name, attributes = {}, time) {\n if (this.span.ended) return this;\n\n this.span.events.push({\n name,\n attributes,\n time: time || hrtime.now(),\n droppedAttributesCount: 0,\n });\n\n return this;\n }\n\n isRecording() {\n return this.span.ended === false;\n }\n\n end(attributes, time) {\n if (attributes) this.setAttributes(attributes);\n this.span.endTime = time || hrtime.now(this.usePerformance);\n this.span.ended = true;\n this.spanProcessor.onEnd(this);\n }\n\n export() {\n return this.span;\n }\n}\n","import id from './id.js';\nimport { Span } from './span.js';\n\nexport class Tracer {\n constructor(tracing, spanProcessor) {\n this.spanProcessor = spanProcessor;\n this.tracing = tracing;\n }\n\n startSpan(\n name,\n options = {},\n context = this.tracing.contextManager.active(),\n ) {\n const parentSpan = this.tracing.getSpan(context);\n const parentSpanContext = parentSpan?.spanContext();\n const spanId = id.gen(8);\n let traceId;\n let traceFlags = 0;\n let traceState = null;\n let parentSpanId;\n if (parentSpanContext) {\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n parentSpanId = parentSpanContext.spanId;\n } else {\n traceId = id.gen(16);\n }\n\n const kind = 0;\n const spanContext = { traceId, spanId, traceFlags, traceState };\n const resource = {\n attributes: {\n ...(this.tracing.resource?.attributes || {}),\n ...(options.resource?.attributes || {}),\n },\n };\n\n const span = new Span({\n resource: resource,\n scope: this.tracing.scope,\n session: this.tracing.session?.session,\n context,\n spanContext,\n name,\n kind,\n parentSpanId,\n spanProcessor: this.spanProcessor,\n startTime: options.startTime,\n usePerformance: options.usePerformance,\n });\n return span;\n }\n}\n","import { ContextManager, createContextKey } from './contextManager.js';\nimport { SpanExporter } from './exporter.js';\nimport id from './id.js';\nimport { Session } from './session.js';\nimport { SpanProcessor } from './spanProcessor.js';\nimport { Tracer } from './tracer.js';\n\nconst SPAN_KEY = createContextKey('Rollbar Context Key SPAN');\n\nexport default class Tracing {\n constructor(gWindow, api, options) {\n this.api = api;\n this.options = options;\n this.window = gWindow;\n\n if (this.window.sessionStorage) {\n this.session = new Session(this, options);\n }\n this.createTracer();\n }\n\n configure(options) {\n // Options merge happens before configure is called, so we can just replace.\n this.options = options;\n }\n\n initSession() {\n if (this.session) {\n this.session.init();\n }\n }\n\n get sessionId() {\n if (this.session) {\n return this.session.session.id;\n }\n return null;\n }\n\n get resource() {\n return {\n attributes: {\n ...(this.options.resource || {}),\n 'rollbar.environment':\n this.options.payload?.environment ?? this.options.environment,\n },\n };\n }\n\n get scope() {\n return {\n name: 'rollbar-browser-js',\n version: this.options.version,\n };\n }\n\n idGen(bytes = 16) {\n return id.gen(bytes);\n }\n\n createTracer() {\n this.contextManager = new ContextManager();\n this.exporter = new SpanExporter(this.api, this.options);\n this.spanProcessor = new SpanProcessor(this.exporter, this.options.tracing);\n this.tracer = new Tracer(this, this.spanProcessor);\n }\n\n getTracer() {\n return this.tracer;\n }\n\n addSpanTransform(transformFn) {\n this.spanProcessor.addTransform(transformFn);\n }\n\n getSpan(context = this.contextManager.active()) {\n return context.getValue(SPAN_KEY);\n }\n\n setSpan(context = this.contextManager.active(), span) {\n return context.setValue(SPAN_KEY, span);\n }\n\n startSpan(name, options = {}, context = this.contextManager.active()) {\n return this.tracer.startSpan(name, options, context);\n }\n\n with(context, fn, thisArg, ...args) {\n return this.contextManager.with(context, fn, thisArg, ...args);\n }\n\n withSpan(name, options, fn, thisArg) {\n const span = this.startSpan(name, options);\n return this.with(\n this.setSpan(this.contextManager.active(), span),\n fn,\n thisArg,\n span,\n );\n }\n}\n","import traverse from './utility/traverse.js';\nimport * as _ from './utility.js';\n\nfunction raw(payload, jsonBackup) {\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction selectFrames(frames, range) {\n var len = frames.length;\n if (len > range * 2) {\n return frames.slice(0, range).concat(frames.slice(len - range));\n }\n return frames;\n}\n\nfunction truncateFrames(payload, jsonBackup, range) {\n range = typeof range === 'undefined' ? 30 : range;\n var body = payload.data.body;\n var frames;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (const trace of chain) {\n frames = trace.frames;\n frames = selectFrames(frames, range);\n trace.frames = frames;\n }\n } else if (body.trace) {\n frames = body.trace.frames;\n frames = selectFrames(frames, range);\n body.trace.frames = frames;\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction maybeTruncateValue(len, val) {\n if (!val) {\n return val;\n }\n if (val.length > len) {\n return val.slice(0, len - 3).concat('...');\n }\n return val;\n}\n\nfunction truncateStrings(len, payload, jsonBackup) {\n function truncator(k, v, seen) {\n switch (_.typeName(v)) {\n case 'string':\n return maybeTruncateValue(len, v);\n case 'object':\n case 'array':\n return traverse(v, truncator, seen);\n default:\n return v;\n }\n }\n payload = traverse(payload, truncator);\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction truncateTraceData(traceData) {\n if (traceData.exception) {\n delete traceData.exception.description;\n traceData.exception.message = maybeTruncateValue(\n 255,\n traceData.exception.message,\n );\n }\n traceData.frames = selectFrames(traceData.frames, 1);\n return traceData;\n}\n\nfunction minBody(payload, jsonBackup) {\n var body = payload.data.body;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (const [index, trace] of chain.entries()) {\n chain[index] = truncateTraceData(trace);\n }\n } else if (body.trace) {\n body.trace = truncateTraceData(body.trace);\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction needsTruncation(payload, maxSize) {\n return _.maxByteSize(payload) > maxSize;\n}\n\nfunction truncate(payload, jsonBackup, maxSize) {\n maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize;\n var strategies = [\n raw,\n truncateFrames,\n truncateStrings.bind(null, 1024),\n truncateStrings.bind(null, 512),\n truncateStrings.bind(null, 256),\n minBody,\n ];\n var strategy, results, result;\n\n while ((strategy = strategies.shift())) {\n results = strategy(payload, jsonBackup);\n payload = results[0];\n result = results[1];\n if (result.error || !needsTruncation(result.value, maxSize)) {\n return result;\n }\n }\n return result;\n}\n\nexport default {\n truncate,\n\n /* for testing */\n raw,\n truncateFrames,\n truncateStrings,\n maybeTruncateValue,\n};\n","import * as _ from './utility.js';\n\nfunction buildPayload(data) {\n if (!_.isType(data.context, 'string')) {\n var contextResult = _.stringify(data.context);\n if (contextResult.error) {\n data.context = \"Error: could not serialize 'context'\";\n } else {\n data.context = contextResult.value || '';\n }\n if (data.context.length > 255) {\n data.context = data.context.substr(0, 255);\n }\n }\n return {\n data: data,\n };\n}\n\nfunction getTransportFromOptions(options, defaults, url) {\n var hostname = defaults.hostname;\n var protocol = defaults.protocol;\n var port = defaults.port;\n var path = defaults.path;\n var search = defaults.search;\n var timeout = options.timeout;\n var transport = detectTransport(options);\n\n var proxy = options.proxy;\n if (options.endpoint) {\n var opts = url.parse(options.endpoint);\n hostname = opts.hostname;\n protocol = opts.protocol;\n port = opts.port;\n path = opts.pathname;\n search = opts.search;\n }\n return {\n timeout: timeout,\n hostname: hostname,\n protocol: protocol,\n port: port,\n path: path,\n search: search,\n proxy: proxy,\n transport: transport,\n };\n}\n\nfunction detectTransport(options) {\n var gWindow =\n (typeof window !== 'undefined' && window) ||\n (typeof self !== 'undefined' && self);\n var transport = options.defaultTransport || 'xhr';\n if (typeof gWindow.fetch === 'undefined') transport = 'xhr';\n if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch';\n return transport;\n}\n\nfunction transportOptions(transport, method) {\n var protocol = transport.protocol || 'https:';\n var port =\n transport.port ||\n (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined);\n var hostname = transport.hostname;\n var path = transport.path;\n var timeout = transport.timeout;\n var transportAPI = transport.transport;\n if (transport.search) {\n path = path + transport.search;\n }\n if (transport.proxy) {\n path = protocol + '//' + hostname + path;\n hostname = transport.proxy.host || transport.proxy.hostname;\n port = transport.proxy.port;\n protocol = transport.proxy.protocol || protocol;\n }\n return {\n timeout: timeout,\n protocol: protocol,\n hostname: hostname,\n path: path,\n port: port,\n method: method,\n transport: transportAPI,\n };\n}\n\nfunction appendPathToPath(base, path) {\n var baseTrailingSlash = /\\/$/.test(base);\n var pathBeginningSlash = /^\\//.test(path);\n\n if (baseTrailingSlash && pathBeginningSlash) {\n path = path.substring(1);\n } else if (!baseTrailingSlash && !pathBeginningSlash) {\n path = '/' + path;\n }\n\n return base + path;\n}\n\nexport {\n buildPayload,\n getTransportFromOptions,\n transportOptions,\n appendPathToPath,\n};\n","import * as helpers from './apiUtility.js';\nimport { stringify, merge } from './utility.js';\n\nconst defaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/item/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\nconst OTLPDefaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/session/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\n/**\n * Api encapsulates methods of communicating with the Rollbar API. It is a\n * standard interface with some parts implemented differently for server or\n * browser contexts. It is an object that should be instantiated when used so\n * it can contain non-global options that may be different for another instance\n * of RollbarApi.\n */\nclass Api {\n /**\n * @param {Object} options - Configuration supplied from the parent Rollbar instance.\n * @param {string} options.accessToken - Token used to authenticate API calls.\n * @param {string} [options.endpoint] - Optional fully qualified URL overriding\n * the default `https://api.rollbar.com/api/1/item`.\n * @param {Object} [options.proxy] - Optional proxy descriptor containing:\n * `host`/`hostname` (required), `port`, and `protocol`.\n * @param {Object} transport - Adapter implementing `post` and `postJsonPayload`.\n * @param {Object} urllib - Minimal URL helper used for option normalization.\n * @param {Object} truncation - Optional truncation helper for payload size enforcement.\n */\n constructor(options, transport, urllib, truncation) {\n this.options = options;\n this.transport = transport;\n this.url = urllib;\n this.truncation = truncation;\n this.accessToken = options.accessToken;\n this.transportOptions = _getTransport(options, urllib);\n this.OTLPTransportOptions = _getOTLPTransport(options, urllib);\n }\n\n /**\n * Wraps transport.post in a Promise to support async/await\n *\n * @param {Object} options - Options for the API request\n * @param {string} options.accessToken - The access token for authentication\n * @param {Object} options.transportOptions - Options for the transport\n * @param {Object} options.payload - The data payload to send\n * @returns {Promise} A promise that resolves with the response or rejects with an error\n * @private\n */\n _postPromise({ accessToken, options, payload, headers }) {\n return new Promise((resolve, reject) => {\n this.transport.post({\n accessToken,\n options,\n payload,\n headers,\n callback: (err, resp) => (err ? reject(err) : resolve(resp)),\n });\n });\n }\n\n /**\n *\n * @param data\n * @param callback\n */\n postItem(data, callback) {\n const options = helpers.transportOptions(this.transportOptions, 'POST');\n const payload = helpers.buildPayload(data);\n\n // ensure the network request is scheduled after the current tick.\n setTimeout(() => {\n this.transport.post({\n accessToken: this.accessToken,\n options,\n payload,\n callback,\n });\n }, 0);\n }\n\n /**\n * Posts spans to the Rollbar API using the session endpoint\n *\n * @param {Array} payload - The spans to send\n * @returns {Promise} A promise that resolves with the API response\n */\n async postSpans(payload, headers = {}) {\n const options = helpers.transportOptions(this.OTLPTransportOptions, 'POST');\n\n return this._postPromise({\n accessToken: this.accessToken,\n options,\n payload,\n headers,\n });\n }\n\n /**\n *\n * @param data\n * @param callback\n */\n buildJsonPayload(data, callback) {\n const payload = helpers.buildPayload(data);\n\n let stringifyResult;\n if (this.truncation) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = stringify(payload);\n }\n\n if (stringifyResult.error) {\n if (callback) {\n callback(stringifyResult.error);\n }\n return null;\n }\n\n return stringifyResult.value;\n }\n\n /**\n *\n * @param jsonPayload\n * @param callback\n */\n postJsonPayload(jsonPayload, callback) {\n const transportOptions = helpers.transportOptions(\n this.transportOptions,\n 'POST',\n );\n this.transport.postJsonPayload(\n this.accessToken,\n transportOptions,\n jsonPayload,\n callback,\n );\n }\n\n configure(options) {\n const oldOptions = this.options;\n this.options = merge(oldOptions, options);\n this.transportOptions = _getTransport(this.options, this.url);\n this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url);\n if (this.options.accessToken !== undefined) {\n this.accessToken = this.options.accessToken;\n }\n return this;\n }\n}\n\nfunction _getTransport(options, url) {\n return helpers.getTransportFromOptions(options, defaultOptions, url);\n}\n\nfunction _getOTLPTransport(options, url) {\n options = { ...options, endpoint: options.tracing?.endpoint };\n return helpers.getTransportFromOptions(options, OTLPDefaultOptions, url);\n}\n\nexport default Api;\n","/**\n * Default options shared across platforms\n */\nexport const version = '3.0.0';\nexport const endpoint = 'api.rollbar.com/api/1/item/';\nexport const logLevel = 'debug';\nexport const reportLevel = 'debug';\nexport const uncaughtErrorLevel = 'error';\nexport const maxItems = 0;\nexport const itemsPerMin = 60;\n\nexport const commonScrubFields = [\n 'pw',\n 'pass',\n 'passwd',\n 'password',\n 'secret',\n 'confirm_password',\n 'confirmPassword',\n 'password_confirmation',\n 'passwordConfirmation',\n 'access_token',\n 'accessToken',\n 'X-Rollbar-Access-Token',\n 'secret_key',\n 'secretKey',\n 'secretToken',\n];\n\nexport const apiScrubFields = [\n 'api_key',\n 'authenticity_token',\n 'oauth_token',\n 'token',\n 'user_session_secret',\n];\n\nexport const requestScrubFields = [\n 'request.session.csrf',\n 'request.session._csrf',\n 'request.params._csrf',\n 'request.cookie',\n 'request.cookies',\n];\n\nexport const commonScrubHeaders = [\n 'authorization',\n 'www-authorization',\n 'http_authorization',\n 'omniauth.auth',\n 'cookie',\n 'oauth-access-token',\n 'x-access-token',\n 'x_csrf_token',\n 'http_x_csrf_token',\n 'x-csrf-token',\n];\n\n// For backward compatibility with default export\nexport default {\n version,\n endpoint,\n logLevel,\n reportLevel,\n uncaughtErrorLevel,\n maxItems,\n itemsPerMin,\n};\n","const FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\nfunction parse(error, options) {\n if (typeof error.stacktrace !== \"undefined\" || typeof error[\"opera#sourceloc\"] !== \"undefined\")\n return parseOpera(error, options);\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIE(error, options);\n else if (error.stack)\n return parseFFOrSafari(error, options);\n else if (options?.allowEmpty)\n return [];\n else\n throw new Error(\"Cannot parse given Error object\");\n}\nfunction parseStack(stackString, options) {\n if (stackString.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIeString(stackString, options);\n else\n return parseFFOrSafariString(stackString, options);\n}\nfunction extractLocation(urlLike) {\n if (!urlLike.includes(\":\"))\n return [urlLike, undefined, undefined];\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n const parts = regExp.exec(urlLike.replace(/[()]/g, \"\"));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n}\nfunction applySlice(lines, options) {\n if (options && options.slice != null) {\n if (Array.isArray(options.slice))\n return lines.slice(options.slice[0], options.slice[1]);\n return lines.slice(0, options.slice);\n }\n return lines;\n}\nfunction parseV8OrIE(error, options) {\n return parseV8OrIeString(error.stack, options);\n}\nfunction parseV8OrIeString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\"(eval \")) {\n line = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(,.*$)/g, \"\");\n }\n let sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\").replace(/^.*?\\s+/, \"\");\n const location = sanitizedLine.match(/ (\\(.+\\)$)/);\n sanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n const locationParts = extractLocation(location ? location[1] : sanitizedLine);\n const functionName = location && sanitizedLine || undefined;\n const fileName = [\"eval\", \"\"].includes(locationParts[0]) ? undefined : locationParts[0];\n return {\n function: functionName,\n file: fileName,\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\nfunction parseFFOrSafari(error, options) {\n return parseFFOrSafariString(error.stack, options);\n}\nfunction parseFFOrSafariString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\" > eval\"))\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, \":$1\");\n if (!line.includes(\"@\") && !line.includes(\":\")) {\n return {\n function: line\n };\n } else {\n const functionNameRegex = /(([^\\n\\r\"\\u2028\\u2029]*\".[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*(?:@[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*)*(?:[\\n\\r\\u2028\\u2029][^@]*)?)?[^@]*)@/;\n const matches = line.match(functionNameRegex);\n const functionName = matches && matches[1] ? matches[1] : undefined;\n const locationParts = extractLocation(line.replace(functionNameRegex, \"\"));\n return {\n function: functionName,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n }\n });\n}\nfunction parseOpera(e, options) {\n if (!e.stacktrace || e.message.includes(\"\\n\") && e.message.split(\"\\n\").length > e.stacktrace.split(\"\\n\").length)\n return parseOpera9(e);\n else if (!e.stack)\n return parseOpera10(e);\n else\n return parseOpera11(e, options);\n}\nfunction parseOpera9(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n const lines = e.message.split(\"\\n\");\n const result = [];\n for (let i = 2, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n file: match[2],\n line: +match[1],\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera10(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n const lines = e.stacktrace.split(\"\\n\");\n const result = [];\n for (let i = 0, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n function: match[3] || undefined,\n file: match[2],\n line: match[1] ? +match[1] : undefined,\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera11(error, options) {\n const filtered = applySlice(\n // @ts-expect-error missing stack property\n error.stack.split(\"\\n\").filter((line) => {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }),\n options\n );\n return filtered.map((line) => {\n const tokens = line.split(\"@\");\n const locationParts = extractLocation(tokens.pop());\n const functionCall = tokens.shift() || \"\";\n const functionName = functionCall.replace(//, \"$2\").replace(/\\([^)]*\\)/g, \"\") || undefined;\n let argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/))\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, \"$1\");\n const args = argsRaw === undefined || argsRaw === \"[arguments not available]\" ? undefined : argsRaw.split(\",\");\n return {\n function: functionName,\n args,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\n\nexport { extractLocation, parse, parseFFOrSafari, parseFFOrSafariString, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseStack, parseV8OrIE, parseV8OrIeString };\n","import { parse as parse$1, parseV8OrIE as parseV8OrIE$1, parseFFOrSafari as parseFFOrSafari$1, parseOpera as parseOpera$1, parseOpera9 as parseOpera9$1, parseOpera10 as parseOpera10$1, parseOpera11 as parseOpera11$1 } from './lite.mjs';\nexport { extractLocation } from './lite.mjs';\n\nfunction stackframesLiteToStackframes(liteStackframes) {\n return liteStackframes.map((liteStackframe) => {\n return {\n functionName: liteStackframe.function,\n args: liteStackframe.args,\n fileName: liteStackframe.file,\n lineNumber: liteStackframe.line,\n columnNumber: liteStackframe.col,\n source: liteStackframe.raw\n };\n });\n}\nfunction parse(error, options) {\n return stackframesLiteToStackframes(parse$1(error, options));\n}\nfunction parseV8OrIE(error) {\n return stackframesLiteToStackframes(parseV8OrIE$1(error));\n}\nfunction parseFFOrSafari(error) {\n return stackframesLiteToStackframes(parseFFOrSafari$1(error));\n}\nfunction parseOpera(e) {\n return stackframesLiteToStackframes(parseOpera$1(e));\n}\nfunction parseOpera9(e) {\n return stackframesLiteToStackframes(parseOpera9$1(e));\n}\nfunction parseOpera10(e) {\n return stackframesLiteToStackframes(parseOpera10$1(e));\n}\nfunction parseOpera11(error) {\n return stackframesLiteToStackframes(parseOpera11$1(error));\n}\n\nexport { parse, parseFFOrSafari, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseV8OrIE };\n","import { parse as parseErrorStack } from 'error-stack-parser-es';\n\nvar UNKNOWN_FUNCTION = '?';\nvar ERR_CLASS_REGEXP = new RegExp(\n '^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): ',\n);\n\nfunction guessFunctionName() {\n return UNKNOWN_FUNCTION;\n}\n\nfunction gatherContext() {\n return null;\n}\n\nfunction Frame(stackFrame) {\n var data = {};\n\n data._stackFrame = stackFrame;\n\n data.url = stackFrame.fileName;\n data.line = stackFrame.lineNumber;\n data.func = stackFrame.functionName;\n data.column = stackFrame.columnNumber;\n data.args = stackFrame.args;\n\n data.context = gatherContext();\n\n return data;\n}\n\nfunction Stack(exception, skip) {\n function getStack() {\n var parserStack = [];\n\n skip = skip || 0;\n\n try {\n parserStack = parseErrorStack(exception);\n } catch (_e) {\n parserStack = [];\n }\n\n var stack = [];\n\n for (var i = skip; i < parserStack.length; i++) {\n stack.push(new Frame(parserStack[i]));\n }\n\n return stack;\n }\n\n return {\n stack: getStack(),\n message: exception.message,\n name: _mostSpecificErrorName(exception),\n rawStack: exception.stack,\n rawException: exception,\n };\n}\n\nfunction parse(e, skip) {\n var err = e;\n\n if (err.nested || err.cause) {\n var traceChain = [];\n while (err) {\n traceChain.push(new Stack(err, skip));\n err = err.nested || err.cause;\n\n skip = 0; // Only apply skip value to primary error\n }\n\n // Return primary error with full trace chain attached.\n traceChain[0].traceChain = traceChain;\n return traceChain[0];\n } else {\n return new Stack(err, skip);\n }\n}\n\nfunction guessErrorClass(errMsg) {\n if (!errMsg || !errMsg.match) {\n return ['Unknown error. There was no error message to display.', ''];\n }\n var errClassMatch = errMsg.match(ERR_CLASS_REGEXP);\n var errClass = '(unknown)';\n\n if (errClassMatch) {\n errClass = errClassMatch[errClassMatch.length - 1];\n errMsg = errMsg.replace(\n (errClassMatch[errClassMatch.length - 2] || '') + errClass + ':',\n '',\n );\n errMsg = errMsg.replace(/(^[\\s]+|[\\s]+$)/g, '');\n }\n return [errClass, errMsg];\n}\n\n// * Prefers any value over an empty string\n// * Prefers any value over 'Error' where possible\n// * Prefers name over constructor.name when both are more specific than 'Error'\nfunction _mostSpecificErrorName(error) {\n var name = error.name && error.name.length && error.name;\n var constructorName =\n error.constructor.name &&\n error.constructor.name.length &&\n error.constructor.name;\n\n if (!name || !constructorName) {\n return name || constructorName;\n }\n\n if (name === 'Error') {\n return constructorName;\n }\n return name;\n}\n\nexport default {\n guessFunctionName,\n guessErrorClass,\n gatherContext,\n parse,\n Stack,\n Frame,\n};\n","import * as _ from './utility.js';\n\nfunction checkLevel(item, settings) {\n var level = item.level;\n var levelVal = _.LEVELS[level] || 0;\n var reportLevel = settings.reportLevel;\n var reportLevelVal = _.LEVELS[reportLevel] || 0;\n\n if (levelVal < reportLevelVal) {\n return false;\n }\n return true;\n}\n\nfunction userCheckIgnore(logger) {\n return function (item, settings) {\n var isUncaught = Boolean(item._isUncaught);\n delete item._isUncaught;\n var args = item._originalArgs;\n delete item._originalArgs;\n try {\n if (_.isFunction(settings.onSendCallback)) {\n settings.onSendCallback(isUncaught, args, item);\n }\n } catch (e) {\n settings.onSendCallback = null;\n logger.error('Error while calling onSendCallback, removing', e);\n }\n try {\n if (\n _.isFunction(settings.checkIgnore) &&\n settings.checkIgnore(isUncaught, args, item)\n ) {\n return false;\n }\n } catch (e) {\n settings.checkIgnore = null;\n logger.error('Error while calling custom checkIgnore(), removing', e);\n }\n return true;\n };\n}\n\nfunction urlIsNotBlockListed(logger) {\n return function (item, settings) {\n return !urlIsOnAList(item, settings, 'blocklist', logger);\n };\n}\n\nfunction urlIsSafeListed(logger) {\n return function (item, settings) {\n return urlIsOnAList(item, settings, 'safelist', logger);\n };\n}\n\nfunction matchFrames(trace, list, block) {\n if (!trace) {\n return !block;\n }\n\n var frames = trace.frames;\n\n if (!frames || frames.length === 0) {\n return !block;\n }\n\n var frame, filename, url, urlRegex;\n var listLength = list.length;\n var frameLength = frames.length;\n for (var i = 0; i < frameLength; i++) {\n frame = frames[i];\n filename = frame.filename;\n\n if (!_.isType(filename, 'string')) {\n return !block;\n }\n\n for (var j = 0; j < listLength; j++) {\n url = list[j];\n urlRegex = new RegExp(url);\n\n if (urlRegex.test(filename)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction urlIsOnAList(item, settings, safeOrBlock, logger) {\n // safelist is the default\n var block = false;\n if (safeOrBlock === 'blocklist') {\n block = true;\n }\n\n var list, traces;\n try {\n list = block ? settings.hostBlockList : settings.hostSafeList;\n traces = _.get(item, 'body.trace_chain') || [_.get(item, 'body.trace')];\n\n // These two checks are important to come first as they are defaults\n // in case the list is missing or the trace is missing or not well-formed\n if (!list || list.length === 0) {\n return !block;\n }\n if (traces.length === 0 || !traces[0]) {\n return !block;\n }\n\n var tracesLength = traces.length;\n for (var i = 0; i < tracesLength; i++) {\n if (matchFrames(traces[i], list, block)) {\n return true;\n }\n }\n } catch (\n e\n /* istanbul ignore next */\n ) {\n if (block) {\n settings.hostBlockList = null;\n } else {\n settings.hostSafeList = null;\n }\n var listName = block ? 'hostBlockList' : 'hostSafeList';\n logger.error(\n \"Error while reading your configuration's \" +\n listName +\n ' option. Removing custom ' +\n listName +\n '.',\n e,\n );\n return !block;\n }\n return false;\n}\n\nfunction messageIsIgnored(logger) {\n return function (item, settings) {\n var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages;\n\n try {\n messageIsIgnored = false;\n ignoredMessages = settings.ignoredMessages;\n\n if (!ignoredMessages || ignoredMessages.length === 0) {\n return true;\n }\n\n messages = messagesFromItem(item);\n\n if (messages.length === 0) {\n return true;\n }\n\n len = ignoredMessages.length;\n for (i = 0; i < len; i++) {\n rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi');\n\n for (j = 0; j < messages.length; j++) {\n messageIsIgnored = rIgnoredMessage.test(messages[j]);\n\n if (messageIsIgnored) {\n return false;\n }\n }\n }\n } catch (\n _e\n /* istanbul ignore next */\n ) {\n settings.ignoredMessages = null;\n logger.error(\n \"Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages.\",\n );\n }\n\n return true;\n };\n}\n\nfunction messagesFromItem(item) {\n var body = item.body;\n var messages = [];\n\n // The payload schema only allows one of trace_chain, message, or trace.\n // However, existing test cases are based on having both trace and message present.\n // So here we preserve the ability to collect strings from any combination of these keys.\n if (body.trace_chain) {\n var traceChain = body.trace_chain;\n for (const trace of traceChain) {\n messages.push(_.get(trace, 'exception.message'));\n }\n }\n if (body.trace) {\n messages.push(_.get(body, 'trace.exception.message'));\n }\n if (body.message) {\n messages.push(_.get(body, 'message.body'));\n }\n return messages;\n}\n\nexport {\n checkLevel,\n userCheckIgnore,\n urlIsNotBlockListed,\n urlIsSafeListed,\n messageIsIgnored,\n};\n","import { merge, isFunction } from './utility.js';\n\n/*\n * Notifier - delegates between the client exposed API, the chain of transforms\n * necessary to turn an item into something that can be sent to Rollbar, and the\n * queue which handles the communcation with the Rollbar API servers.\n */\nexport default class Notifier {\n /**\n *\n * @param {Object} queue - an object that conforms to the interface:\n * `addItem(item, callback)`\n * @param {Object} options - an object representing the options to be set for\n * this notifier, this should have any defaults already set by the caller\n */\n constructor(queue, options) {\n this.queue = queue;\n this.options = options;\n this.transforms = [];\n this.diagnostic = {};\n }\n\n /**\n * configure - updates the options for this notifier with the passed in object\n *\n * @param {Object} options - an object which gets merged with the current\n * options set on this notifier\n * @returns this\n */\n configure(options) {\n this.queue?.configure(options);\n const oldOptions = this.options;\n this.options = merge(oldOptions, options);\n return this;\n }\n\n /**\n * Adds a transform onto the end of the queue of transforms for this notifier\n *\n * @param {Function} transform - a function which takes three arguments:\n * - item: An Object representing the data to eventually be sent to Rollbar\n * - options: The current value of the options for this notifier\n * - callback: `function(err: (Null|Error), item: (Null|Object))` the\n * transform must call this callback with a null value for error if it\n * wants the processing chain to continue, otherwise with an error to\n * terminate the processing. The item should be the updated item after\n * this transform is finished modifying it.\n */\n addTransform(transform) {\n if (isFunction(transform)) {\n this.transforms.push(transform);\n }\n return this;\n }\n\n /**\n * The internal log function which applies the configured transforms and then\n * pushes onto the queue to be sent to the backend.\n *\n * @param {Object} item - An object with the following structure:\n * - message [String] - An optional string to be sent to rollbar\n * - error [Error] - An optional error\n * @param {Function} callback - A function of type `function(err, resp)` which\n * will be called with exactly one null argument and one non-null argument.\n * The callback will be called once, either during the transform stage if\n * an error occurs inside a transform, or in response to the communication\n * with the backend. The second argument will be the response from the\n * backend in case of success.\n */\n log(item, callback) {\n callback = isFunction(callback) ? callback : () => {};\n\n if (!this.options.enabled) {\n return callback(new Error('Rollbar is not enabled'), null);\n }\n\n this.queue.addPendingItem(item);\n const originalError = item.err;\n this._applyTransforms(item, (err, i) => {\n if (err) {\n this.queue.removePendingItem(item);\n return callback(err, null);\n }\n this.queue.addItem(i, callback, originalError, item);\n });\n }\n\n /* Internal */\n\n /**\n * Applies the transforms that have been added to this notifier sequentially.\n * See `addTransform` for more information.\n *\n * @param {Object} item - An item to be transformed\n * @param {Function} callback - A function of type `function(err, item)` which\n * will be called with a non-null error and a null item in the case of a\n * transform failure, or a null error and non-null item after all\n * transforms have been applied.\n */\n _applyTransforms(item, callback) {\n let transformIndex = -1;\n const transformsLength = this.transforms.length;\n const transforms = this.transforms;\n const options = this.options;\n\n const next = (err, i) => {\n if (err) {\n callback(err, null);\n return;\n }\n\n transformIndex++;\n\n if (transformIndex === transformsLength) {\n callback(null, i);\n return;\n }\n\n transforms[transformIndex](i, options, next);\n };\n\n next(null, item);\n }\n}\n","import * as _ from './utility.js';\n\n/**\n * Queue - an object which handles which handles a queue of items to be sent to Rollbar.\n * This object handles rate limiting via a passed in rate limiter, retries based on connection\n * errors, and filtering of items based on a set of configurable predicates. The communication to\n * the backend is performed via a given API object.\n */\nclass Queue {\n /**\n * @param rateLimiter - An object which conforms to the interface\n * `rateLimiter.shouldSend(item) -> bool`\n * @param api - An object which conforms to the interface\n * `api.postItem(payload, function(err, response))`\n * @param logger - An object used to log verbose messages if desired\n * @param options - see `Queue.prototype.configure`\n * @param replay - Optional `Replay` for coordinating session replay with error occurrences\n */\n constructor(rateLimiter, api, logger, options, replay) {\n this.rateLimiter = rateLimiter;\n this.api = api;\n this.logger = logger;\n this.options = options;\n this.replay = replay;\n this.predicates = [];\n this.pendingItems = [];\n this.pendingRequests = [];\n this.retryQueue = [];\n this.retryHandle = null;\n this.waitCallback = null;\n this.waitIntervalID = null;\n }\n\n /**\n * configure - updates the options this queue uses\n *\n * @param options\n */\n configure(options) {\n this.api?.configure(options);\n const oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n return this;\n }\n\n /**\n * addPredicate - adds a predicate to the end of the list of predicates for this queue\n *\n * @param predicate - function(item, options) -> (bool|{err: Error})\n * Returning true means that this predicate passes and the item is okay to go on the queue\n * Returning false means do not add the item to the queue, but it is not an error\n * Returning {err: Error} means do not add the item to the queue, and the given error explains why\n * Returning {err: undefined} is equivalent to returning true but don't do that\n */\n addPredicate(predicate) {\n if (_.isFunction(predicate)) {\n this.predicates.push(predicate);\n }\n return this;\n }\n\n addPendingItem(item) {\n this.pendingItems.push(item);\n }\n\n removePendingItem(item) {\n const idx = this.pendingItems.indexOf(item);\n if (idx !== -1) {\n this.pendingItems.splice(idx, 1);\n }\n }\n\n /**\n * addItem - Send an item to the Rollbar API if all of the predicates are satisfied\n *\n * @param item - Item instance with the payload to send to the backend\n * @param callback - function(error, repsonse) which will be called with the response from the API\n * in the case of a success, otherwise response will be null and error will have a value. If both\n * error and response are null then the item was stopped by a predicate which did not consider this\n * to be an error condition, but nonetheless did not send the item to the API.\n * @param originalError - The original error before any transformations that is to be logged if any\n * @param originalItem - The original item before transforms, used in pendingItems queue\n */\n addItem(item, callback, originalError, originalItem) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {\n return;\n };\n }\n const data = item.data;\n const predicateResult = this._applyPredicates(data);\n if (predicateResult.stop) {\n this.removePendingItem(originalItem);\n callback(predicateResult.err);\n return;\n }\n this._maybeLog(data, originalError);\n this.removePendingItem(originalItem);\n if (!this.options.transmit) {\n callback(new Error('Transmit disabled'));\n return;\n }\n\n if (this.replay && data.body) {\n item.replayId = this.replay.capture(null, data.uuid, {\n type: 'occurrence',\n level: item.level,\n });\n\n if (item.replayId) {\n _.addItemAttributes(item.data, [\n { key: 'replay_id', value: item.replayId },\n ]);\n }\n }\n\n this.pendingRequests.push(data);\n try {\n this._makeApiRequest(data, (err, resp, headers) => {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers);\n }\n\n callback(err, resp);\n });\n } catch (err) {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay?.discard(item.replayId);\n }\n\n callback(err);\n }\n }\n\n /**\n * wait - Stop any further errors from being added to the queue, and get called back when all items\n * currently processing have finished sending to the backend.\n *\n * @param callback - function() called when all pending items have been sent\n */\n wait(callback) {\n if (!_.isFunction(callback)) {\n return;\n }\n this.waitCallback = callback;\n if (this._maybeCallWait()) {\n return;\n }\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitIntervalID = setInterval(() => {\n this._maybeCallWait();\n }, 500);\n }\n\n /**\n * Sequentially applies the predicates that have been added to the queue to the\n * given item with the currently configured options.\n *\n * @param item - An item in the queue\n * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue,\n * the error value should be passed up to a callbak if we are stopping.\n */\n _applyPredicates(item) {\n let p = null;\n for (let i = 0, len = this.predicates.length; i < len; i++) {\n p = this.predicates[i](item, this.options);\n if (!p || p.err !== undefined) {\n return { stop: true, err: p.err };\n }\n }\n return { stop: false, err: null };\n }\n\n /**\n * Send an item to Rollbar, callback when done, if there is an error make an\n * effort to retry if we are configured to do so.\n *\n * @param item - an item ready to send to the backend\n * @param callback - function(err, response)\n */\n _makeApiRequest(item, callback) {\n const rateLimitResponse = this.rateLimiter.shouldSend(item);\n if (rateLimitResponse.shouldSend) {\n this.api.postItem(item, (err, resp, headers) => {\n if (err) {\n this._maybeRetry(err, item, callback);\n } else {\n callback(err, resp, headers);\n }\n });\n } else if (rateLimitResponse.error) {\n callback(rateLimitResponse.error);\n } else {\n this.api.postItem(rateLimitResponse.payload, callback);\n }\n }\n\n // These are errors basically mean there is no internet connection\n static RETRIABLE_ERRORS = [\n 'ECONNRESET',\n 'ENOTFOUND',\n 'ESOCKETTIMEDOUT',\n 'ETIMEDOUT',\n 'ECONNREFUSED',\n 'EHOSTUNREACH',\n 'EPIPE',\n 'EAI_AGAIN',\n ];\n\n /**\n * Given the error returned by the API, decide if we should retry or just callback\n * with the error.\n *\n * @param err - an error returned by the API transport\n * @param item - the item that was trying to be sent when this error occured\n * @param callback - function(err, response)\n */\n _maybeRetry(err, item, callback) {\n let shouldRetry = false;\n if (this.options.retryInterval) {\n for (let i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) {\n if (err.code === Queue.RETRIABLE_ERRORS[i]) {\n shouldRetry = true;\n break;\n }\n }\n if (shouldRetry && _.isFiniteNumber(this.options.maxRetries)) {\n item.retries = item.retries ? item.retries + 1 : 1;\n if (item.retries > this.options.maxRetries) {\n shouldRetry = false;\n }\n }\n }\n if (shouldRetry) {\n this._retryApiRequest(item, callback);\n } else {\n callback(err);\n }\n }\n\n /**\n * Add an item and a callback to a queue and possibly start a timer to process\n * that queue based on the retryInterval in the options for this queue.\n *\n * @param item - an item that failed to send due to an error we deem retriable\n * @param callback - function(err, response)\n */\n _retryApiRequest(item, callback) {\n this.retryQueue.push({ item, callback });\n\n if (!this.retryHandle) {\n this.retryHandle = setInterval(() => {\n while (this.retryQueue.length) {\n const retryObject = this.retryQueue.shift();\n this._makeApiRequest(retryObject.item, retryObject.callback);\n }\n }, this.options.retryInterval);\n }\n }\n\n /**\n * Removes the item from the pending request queue, this queue is used to\n * enable to functionality of providing a callback that clients can pass to `wait` to be notified\n * when the pending request queue has been emptied. This must be called when the API finishes\n * processing this item. If a `wait` callback is configured, it is called by this function.\n *\n * @param item - the item previously added to the pending request queue\n */\n _dequeuePendingRequest(item) {\n const idx = this.pendingRequests.indexOf(item);\n if (idx !== -1) {\n this.pendingRequests.splice(idx, 1);\n this._maybeCallWait();\n }\n }\n\n _maybeLog(data, originalError) {\n if (this.logger && this.options.verbose) {\n let message =\n originalError ||\n _.get(data, 'body.trace.exception.message') ||\n _.get(data, 'body.trace_chain.0.exception.message');\n if (message) {\n this.logger.error(message);\n return;\n }\n message = _.get(data, 'body.message.body');\n if (message) {\n this.logger.log(message);\n }\n }\n }\n\n _maybeCallWait() {\n if (\n _.isFunction(this.waitCallback) &&\n this.pendingItems.length === 0 &&\n this.pendingRequests.length === 0\n ) {\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitCallback();\n return true;\n }\n return false;\n }\n}\n\nexport default Queue;\n","/*\n * RateLimiter - encapsulates the logic for counting items sent to Rollbar.\n *\n * @param options - the same options that are accepted by configureGlobal offered as a convenience\n */\nclass RateLimiter {\n static globalSettings = {\n startTime: Date.now(),\n maxItems: undefined,\n itemsPerMinute: undefined,\n };\n\n constructor(options = {}) {\n this.startTime = Date.now();\n this.counter = 0;\n this.perMinCounter = 0;\n this.platform = null;\n this.platformOptions = {};\n this.configureGlobal(options);\n }\n\n /*\n * configureGlobal - set the global rate limiter options\n *\n * @param options - Only the following values are recognized:\n * startTime: a timestamp of the form returned by (new Date()).getTime()\n * maxItems: the maximum items\n * itemsPerMinute: the max number of items to send in a given minute\n */\n configureGlobal(options = {}) {\n const { startTime, maxItems, itemsPerMinute } = options;\n\n if (startTime !== undefined) {\n RateLimiter.globalSettings.startTime = startTime;\n }\n if (maxItems !== undefined) {\n RateLimiter.globalSettings.maxItems = maxItems;\n }\n if (itemsPerMinute !== undefined) {\n RateLimiter.globalSettings.itemsPerMinute = itemsPerMinute;\n }\n }\n\n /*\n * shouldSend - determine if we should send a given item based on rate limit settings\n *\n * @param item - the item we are about to send\n * @returns An object with the following structure:\n * error: (Error|null)\n * shouldSend: bool\n * payload: (Object|null)\n * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and\n * exactly one of error or payload will be non-null. If error is non-null, the returned Error will\n * describe the situation, but it means that we were already over a rate limit (either globally or\n * per minute) when this item was checked. If error is null, and therefore payload is non-null, it\n * means this item put us over the global rate limit and the payload should be sent to Rollbar in\n * place of the passed in item.\n */\n shouldSend(item, now = Date.now()) {\n const elapsedTime = now - this.startTime;\n if (elapsedTime < 0 || elapsedTime >= 60000) {\n this.startTime = now;\n this.perMinCounter = 0;\n }\n\n const globalRateLimit = RateLimiter.globalSettings.maxItems;\n const globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute;\n\n if (checkRate(item, globalRateLimit, this.counter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n `${globalRateLimit} max items reached`,\n false,\n );\n }\n\n if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n `${globalRateLimitPerMin} items per minute reached`,\n false,\n );\n }\n\n this.counter += 1;\n this.perMinCounter += 1;\n\n const underGlobalLimit = !checkRate(item, globalRateLimit, this.counter);\n const perMinute = underGlobalLimit;\n const shouldSend =\n underGlobalLimit &&\n !checkRate(item, globalRateLimitPerMin, this.perMinCounter);\n\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n null,\n shouldSend,\n globalRateLimit,\n globalRateLimitPerMin,\n perMinute,\n );\n }\n\n setPlatformOptions(platform, options) {\n this.platform = platform;\n this.platformOptions = options;\n }\n}\n\n/* Helpers */\n\nfunction checkRate(item, limit, counter) {\n return !item.ignoreRateLimit && limit >= 1 && counter > limit;\n}\n\nfunction shouldSendValue(\n platform,\n options,\n error,\n shouldSend,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n let payload = null;\n const errorResult = error ? new Error(error) : null;\n\n if (!errorResult && !shouldSend) {\n payload = rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n );\n }\n\n return { error: errorResult, shouldSend, payload };\n}\n\nfunction rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n const environment =\n options.environment || (options.payload && options.payload.environment);\n const msg = perMinute\n ? 'item per minute limit reached, ignoring errors until timeout'\n : 'maxItems has been hit, ignoring errors until reset.';\n const item = {\n body: {\n message: {\n body: msg,\n extra: {\n maxItems: globalRateLimit,\n itemsPerMinute: limitPerMin,\n },\n },\n },\n language: 'javascript',\n environment: environment,\n notifier: {\n version:\n (options.notifier && options.notifier.version) || options.version,\n },\n };\n if (platform === 'browser') {\n item.platform = 'browser';\n item.framework = 'browser-js';\n item.notifier.name = 'rollbar-browser-js';\n } else if (platform === 'server') {\n item.framework = options.framework || 'node-js';\n item.notifier.name = options.notifier.name;\n } else if (platform === 'react-native') {\n item.framework = options.framework || 'react-native';\n item.notifier.name = options.notifier.name;\n }\n return item;\n}\n\nexport default RateLimiter;\n","import Notifier from './notifier.js';\nimport Queue from './queue.js';\nimport RateLimiter from './rateLimiter.js';\nimport * as _ from './utility.js';\n\n/*\n * Rollbar - the interface to Rollbar\n *\n * @param options\n * @param api\n * @param logger\n */\nfunction Rollbar(options, api, logger, telemeter, tracing, replay, platform) {\n this.options = _.merge(options);\n this.logger = logger;\n Rollbar.rateLimiter.configureGlobal(this.options);\n Rollbar.rateLimiter.setPlatformOptions(platform, this.options);\n this.api = api;\n this.queue = new Queue(\n Rollbar.rateLimiter,\n api,\n logger,\n this.options,\n replay,\n );\n\n this.tracing = tracing;\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is created\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier = new Notifier(this.queue, this.options);\n this.telemeter = telemeter;\n setStackTraceLimit(options);\n this.lastError = null;\n this.lastErrorHash = 'none';\n}\n\nvar defaultOptions = {\n maxItems: 0,\n itemsPerMinute: 60,\n};\n\nRollbar.rateLimiter = new RateLimiter(defaultOptions);\n\nRollbar.prototype.global = function (options) {\n Rollbar.rateLimiter.configureGlobal(options);\n return this;\n};\n\nRollbar.prototype.configure = function (options, payloadData) {\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.merge(oldOptions, options, payload);\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is configured\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier && this.notifier.configure(this.options);\n this.telemeter && this.telemeter.configure(this.options);\n setStackTraceLimit(options);\n this.global(this.options);\n\n if (validateTracer(options.tracer)) {\n this.tracer = options.tracer;\n }\n\n return this;\n};\n\nRollbar.prototype.log = function (item) {\n var level = this._defaultLogLevel();\n return this._log(level, item);\n};\n\nRollbar.prototype.debug = function (item) {\n this._log('debug', item);\n};\n\nRollbar.prototype.info = function (item) {\n this._log('info', item);\n};\n\nRollbar.prototype.warn = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.warning = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.error = function (item) {\n this._log('error', item);\n};\n\nRollbar.prototype.critical = function (item) {\n this._log('critical', item);\n};\n\nRollbar.prototype.wait = function (callback) {\n this.queue.wait(callback);\n};\n\nRollbar.prototype.captureEvent = function (type, metadata, level) {\n return this.telemeter && this.telemeter.captureEvent(type, metadata, level);\n};\n\nRollbar.prototype.captureDomContentLoaded = function (ts) {\n return this.telemeter && this.telemeter.captureDomContentLoaded(ts);\n};\n\nRollbar.prototype.captureLoad = function (ts) {\n return this.telemeter && this.telemeter.captureLoad(ts);\n};\n\nRollbar.prototype.buildJsonPayload = function (item) {\n return this.api.buildJsonPayload(item);\n};\n\nRollbar.prototype.sendJsonPayload = function (jsonPayload) {\n this.api.postJsonPayload(jsonPayload);\n};\n\n/* Internal */\n\nRollbar.prototype._log = function (defaultLevel, item) {\n var callback;\n if (item.callback) {\n callback = item.callback;\n delete item.callback;\n }\n if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) {\n if (callback) {\n var error = new Error('ignored identical item');\n error.item = item;\n callback(error);\n }\n return;\n }\n try {\n item.level = item.level || defaultLevel;\n\n this._addItemAttributes(item);\n\n // Legacy OpenTracing support\n this._addTracingInfo(item);\n\n const telemeter = this.telemeter;\n if (telemeter) {\n telemeter._captureRollbarItem(item);\n item.telemetryEvents = telemeter.copyEvents() || [];\n }\n\n this.notifier.log(item, callback);\n } catch (e) {\n if (callback) {\n callback(e);\n }\n this.logger.error(e);\n }\n};\n\nRollbar.prototype._addItemAttributes = function (item) {\n const span = this.tracing?.getSpan();\n\n const attributes = [\n { key: 'session_id', value: this.tracing?.sessionId },\n { key: 'span_id', value: span?.spanId },\n { key: 'trace_id', value: span?.traceId },\n ];\n if (item._isUncaught) {\n attributes.push({ key: 'is_uncaught', value: 'true' });\n }\n _.addItemAttributes(item.data, attributes);\n\n span?.addEvent('rollbar.occurrence', [\n { key: 'rollbar.occurrence.uuid', value: item.uuid },\n ]);\n};\n\nRollbar.prototype._defaultLogLevel = function () {\n return this.options.logLevel || 'debug';\n};\n\nRollbar.prototype._sameAsLastError = function (item) {\n if (!item._isUncaught) {\n return false;\n }\n var itemHash = generateItemHash(item);\n if (this.lastErrorHash === itemHash) {\n return true;\n }\n this.lastError = item.err;\n this.lastErrorHash = itemHash;\n return false;\n};\n\nRollbar.prototype._addTracingInfo = function (item) {\n // Tracer validation occurs in the constructor\n // or in the Rollbar.prototype.configure methods\n if (this.tracer) {\n // add rollbar occurrence uuid to span\n var span = this.tracer.scope().active();\n\n if (validateSpan(span)) {\n span.setTag('rollbar.error_uuid', item.uuid);\n span.setTag('rollbar.has_error', true);\n span.setTag('error', true);\n span.setTag(\n 'rollbar.item_url',\n `https://rollbar.com/item/uuid/?uuid=${item.uuid}`,\n );\n span.setTag(\n 'rollbar.occurrence_url',\n `https://rollbar.com/occurrence/uuid/?uuid=${item.uuid}`,\n );\n\n // add span ID & trace ID to occurrence\n var opentracingSpanId = span.context().toSpanId();\n var opentracingTraceId = span.context().toTraceId();\n\n if (item.custom) {\n item.custom.opentracing_span_id = opentracingSpanId;\n item.custom.opentracing_trace_id = opentracingTraceId;\n } else {\n item.custom = {\n opentracing_span_id: opentracingSpanId,\n opentracing_trace_id: opentracingTraceId,\n };\n }\n }\n }\n};\n\nfunction generateItemHash(item) {\n var message = item.message || '';\n var stack = (item.err || {}).stack || String(item.err);\n return message + '::' + stack;\n}\n\n// Node.js, Chrome, Safari, and some other browsers support this property\n// which globally sets the number of stack frames returned in an Error object.\n// If a browser can't use it, no harm done.\nfunction setStackTraceLimit(options) {\n if (options.stackTraceLimit) {\n Error.stackTraceLimit = options.stackTraceLimit;\n }\n}\n\n/**\n * Validate the Tracer object provided to the Client\n * is valid for our Opentracing use case.\n * @param {opentracer.Tracer} tracer\n */\nfunction validateTracer(tracer) {\n if (!tracer) {\n return false;\n }\n\n if (!tracer.scope || typeof tracer.scope !== 'function') {\n return false;\n }\n\n var scope = tracer.scope();\n\n if (!scope || !scope.active || typeof scope.active !== 'function') {\n return false;\n }\n\n return true;\n}\n\n/**\n * Validate the Span object provided\n * @param {opentracer.Span} span\n */\nfunction validateSpan(span) {\n if (!span || !span.context || typeof span.context !== 'function') {\n return false;\n }\n\n var spanContext = span.context();\n\n if (\n !spanContext ||\n !spanContext.toSpanId ||\n !spanContext.toTraceId ||\n typeof spanContext.toSpanId !== 'function' ||\n typeof spanContext.toTraceId !== 'function'\n ) {\n return false;\n }\n\n return true;\n}\n\nexport default Rollbar;\n","import * as _ from './utility.js';\n\nfunction itemToPayload(item, options, callback) {\n if (item._isUncaught) {\n item.data._isUncaught = true;\n }\n if (item._originalArgs) {\n item.data._originalArgs = item._originalArgs;\n }\n callback(null, item);\n}\n\nfunction addPayloadOptions(item, options, callback) {\n var payloadOptions = options.payload || {};\n if (payloadOptions.body) {\n delete payloadOptions.body;\n }\n\n item.data = _.merge(item.data, payloadOptions);\n callback(null, item);\n}\n\nfunction addTelemetryData(item, options, callback) {\n if (item.telemetryEvents) {\n _.set(item, 'data.body.telemetry', item.telemetryEvents);\n }\n callback(null, item);\n}\n\nfunction addMessageWithError(item, options, callback) {\n if (!item.message) {\n callback(null, item);\n return;\n }\n var tracePath = 'data.body.trace_chain.0';\n var trace = _.get(item, tracePath);\n if (!trace) {\n tracePath = 'data.body.trace';\n trace = _.get(item, tracePath);\n }\n if (trace) {\n if (!(trace.exception && trace.exception.description)) {\n _.set(item, tracePath + '.exception.description', item.message);\n callback(null, item);\n return;\n }\n var extra = _.get(item, tracePath + '.extra') || {};\n var newExtra = _.merge(extra, { message: item.message });\n _.set(item, tracePath + '.extra', newExtra);\n }\n callback(null, item);\n}\n\nfunction userTransform(logger) {\n return function (item, options, callback) {\n var newItem = _.merge(item);\n var response = null;\n try {\n if (_.isFunction(options.transform)) {\n response = options.transform(newItem.data, item);\n }\n } catch (e) {\n options.transform = null;\n logger.error(\n 'Error while calling custom transform() function. Removing custom transform().',\n e,\n );\n callback(null, item);\n return;\n }\n if (_.isPromise(response)) {\n response.then(\n function (promisedItem) {\n if (promisedItem) {\n newItem.data = promisedItem;\n }\n callback(null, newItem);\n },\n function (error) {\n callback(error, item);\n },\n );\n } else {\n callback(null, newItem);\n }\n };\n}\n\nfunction addConfigToPayload(item, options, callback) {\n if (!options.sendConfig) {\n return callback(null, item);\n }\n var configKey = '_rollbarConfig';\n var custom = _.get(item, 'data.custom') || {};\n custom[configKey] = options;\n item.data.custom = custom;\n callback(null, item);\n}\n\nfunction addFunctionOption(options, name) {\n if (_.isFunction(options[name])) {\n options[name] = options[name].toString();\n }\n}\n\nfunction addConfiguredOptions(item, options, callback) {\n var configuredOptions = options._configuredOptions;\n\n // These must be stringified or they'll get dropped during serialization.\n addFunctionOption(configuredOptions, 'transform');\n addFunctionOption(configuredOptions, 'checkIgnore');\n addFunctionOption(configuredOptions, 'onSendCallback');\n\n delete configuredOptions.accessToken;\n item.data.notifier.configured_options = configuredOptions;\n callback(null, item);\n}\n\nfunction addDiagnosticKeys(item, options, callback) {\n var diagnostic = _.merge(\n item.notifier.client.notifier.diagnostic,\n item.diagnostic,\n );\n\n if (_.get(item, 'err._isAnonymous')) {\n diagnostic.is_anonymous = true;\n }\n\n if (item._isUncaught) {\n diagnostic.is_uncaught = item._isUncaught;\n }\n\n if (item.err) {\n try {\n diagnostic.raw_error = {\n message: item.err.message,\n name: item.err.name,\n constructor_name: item.err.constructor && item.err.constructor.name,\n filename: item.err.fileName,\n line: item.err.lineNumber,\n column: item.err.columnNumber,\n stack: item.err.stack,\n };\n } catch (e) {\n diagnostic.raw_error = { failed: String(e) };\n }\n }\n\n item.data.notifier.diagnostic = _.merge(\n item.data.notifier.diagnostic,\n diagnostic,\n );\n callback(null, item);\n}\n\nexport {\n itemToPayload,\n addPayloadOptions,\n addTelemetryData,\n addMessageWithError,\n userTransform,\n addConfigToPayload,\n addConfiguredOptions,\n addDiagnosticKeys,\n};\n","/**\n * Default browser options\n */\nimport { commonScrubFields } from '../defaults.js';\n\nexport const scrubFields = [\n ...commonScrubFields,\n 'cc-number',\n 'card number',\n 'cardnumber',\n 'cardnum',\n 'ccnum',\n 'ccnumber',\n 'cc num',\n 'creditcardnumber',\n 'credit card number',\n 'newcreditcardnumber',\n 'new credit card',\n 'creditcardno',\n 'credit card no',\n 'card#',\n 'card #',\n 'cc-csc',\n 'cvc',\n 'cvc2',\n 'cvv2',\n 'ccv2',\n 'security code',\n 'card verification',\n 'name on credit card',\n 'name on card',\n 'nameoncard',\n 'cardholder',\n 'card holder',\n 'name des karteninhabers',\n 'ccname',\n 'card type',\n 'cardtype',\n 'cc type',\n 'cctype',\n 'payment type',\n 'expiration date',\n 'expirationdate',\n 'expdate',\n 'cc-exp',\n 'ccmonth',\n 'ccyear',\n];\n\n// For compatibility with existing code that expects default export with scrubFields property\nexport default { scrubFields };\n","import * as _ from '../utility.js';\n\nfunction checkIgnore(item, settings) {\n if (_.get(settings, 'plugins.jquery.ignoreAjaxErrors')) {\n return !_.get(item, 'body.message.extra.isAjax');\n }\n return true;\n}\n\nexport { checkIgnore };\n","import errorParser from '../errorParser.js';\nimport logger from '../logger.js';\nimport * as _ from '../utility.js';\n\nfunction handleDomException(item, options, callback) {\n if (item.err && errorParser.Stack(item.err).name === 'DOMException') {\n var originalError = new Error();\n originalError.name = item.err.name;\n originalError.message = item.err.message;\n originalError.stack = item.err.stack;\n originalError.nested = item.err;\n item.err = originalError;\n }\n callback(null, item);\n}\n\nfunction handleItemWithError(item, options, callback) {\n item.data = item.data || {};\n if (item.err) {\n try {\n item.stackInfo =\n item.err._savedStackTrace ||\n errorParser.parse(item.err, item.skipFrames);\n\n if (options.addErrorContext) {\n addErrorContext(item);\n }\n } catch (e) {\n logger.error('Error while parsing the error object.', e);\n try {\n item.message =\n item.err.message ||\n item.err.description ||\n item.message ||\n String(item.err);\n } catch (e2) {\n item.message = String(item.err) || String(e2);\n }\n delete item.err;\n }\n }\n callback(null, item);\n}\n\nfunction addErrorContext(item) {\n var chain = [];\n var err = item.err;\n\n chain.push(err);\n\n while (err.nested || err.cause) {\n err = err.nested || err.cause;\n chain.push(err);\n }\n\n _.addErrorContext(item, chain);\n}\n\nfunction ensureItemHasSomethingToSay(item, options, callback) {\n if (!item.message && !item.stackInfo && !item.custom) {\n callback(new Error('No message, stack info, or custom data'), null);\n }\n callback(null, item);\n}\n\nfunction addBaseInfo(item, options, callback) {\n var environment =\n (options.payload && options.payload.environment) || options.environment;\n item.data = _.merge(item.data, {\n environment: environment,\n level: item.level,\n endpoint: options.endpoint,\n platform: 'browser',\n framework: 'browser-js',\n language: 'javascript',\n server: {},\n uuid: item.uuid,\n notifier: {\n name: 'rollbar-browser-js',\n version: options.version,\n },\n custom: item.custom,\n });\n callback(null, item);\n}\n\nfunction addRequestInfo(window) {\n return function (item, options, callback) {\n var requestInfo = {};\n\n if (window && window.location) {\n requestInfo.url = window.location.href;\n requestInfo.query_string = window.location.search;\n }\n\n var remoteString = '$remote_ip';\n if (!options.captureIp) {\n remoteString = null;\n } else if (options.captureIp !== true) {\n remoteString += '_anonymize';\n }\n if (remoteString) requestInfo.user_ip = remoteString;\n\n if (Object.keys(requestInfo).length > 0) {\n _.set(item, 'data.request', requestInfo);\n }\n\n callback(null, item);\n };\n}\n\nfunction addClientInfo(window) {\n return function (item, options, callback) {\n if (!window) {\n return callback(null, item);\n }\n var nav = window.navigator || {};\n var scr = window.screen || {};\n _.set(item, 'data.client', {\n runtime_ms: item.timestamp - window._rollbarStartTime,\n timestamp: Math.round(item.timestamp / 1000),\n javascript: {\n browser: nav.userAgent,\n language: nav.language,\n cookie_enabled: nav.cookieEnabled,\n screen: {\n width: scr.width,\n height: scr.height,\n },\n },\n });\n callback(null, item);\n };\n}\n\nfunction addPluginInfo(window) {\n return function (item, options, callback) {\n if (!window || !window.navigator) {\n return callback(null, item);\n }\n var plugins = [];\n var navPlugins = window.navigator.plugins || [];\n var cur;\n for (var i = 0, l = navPlugins.length; i < l; ++i) {\n cur = navPlugins[i];\n plugins.push({ name: cur.name, description: cur.description });\n }\n _.set(item, 'data.client.javascript.plugins', plugins);\n callback(null, item);\n };\n}\n\nfunction addBody(item, options, callback) {\n if (item.stackInfo) {\n if (item.stackInfo.traceChain) {\n addBodyTraceChain(item, options, callback);\n } else {\n addBodyTrace(item, options, callback);\n }\n } else {\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction addBodyMessage(item, options, callback) {\n var message = item.message;\n var custom = item.custom;\n\n if (!message) {\n message = 'Item sent with null or missing arguments.';\n }\n var result = {\n body: message,\n };\n\n if (custom) {\n result.extra = _.merge(custom);\n }\n\n _.set(item, 'data.body', { message: result });\n callback(null, item);\n}\n\nfunction stackFromItem(item, stackInfo = null) {\n // Transform a TraceKit stackInfo object into a Rollbar trace\n let stack = (stackInfo || item.stackInfo).stack;\n if (\n stack &&\n stack.length === 0 &&\n item._unhandledStackInfo &&\n item._unhandledStackInfo.stack\n ) {\n stack = item._unhandledStackInfo.stack;\n }\n return stack;\n}\n\nfunction addBodyTraceChain(item, options, callback) {\n var traceChain = item.stackInfo.traceChain;\n var traces = [];\n\n var traceChainLength = traceChain.length;\n for (var i = 0; i < traceChainLength; i++) {\n var trace = buildTrace(item, traceChain[i], options);\n traces.push(trace);\n }\n\n _.set(item, 'data.body', { trace_chain: traces });\n callback(null, item);\n}\n\nfunction addBodyTrace(item, options, callback) {\n var stack = stackFromItem(item);\n\n if (stack) {\n var trace = buildTrace(item, item.stackInfo, options);\n _.set(item, 'data.body', { trace: trace });\n callback(null, item);\n } else {\n var stackInfo = item.stackInfo;\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n\n item.message = className + ': ' + message;\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction buildTrace(item, stackInfo, options) {\n var description = item && item.data.description;\n var custom = item && item.custom;\n var stack = stackFromItem(item, stackInfo);\n\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n var trace = {\n exception: {\n class: className,\n message: message,\n },\n };\n\n if (description) {\n trace.exception.description = description;\n }\n\n if (stack) {\n if (stack.length === 0) {\n trace.exception.stack = stackInfo.rawStack;\n trace.exception.raw = String(stackInfo.rawException);\n }\n var stackFrame;\n var frame;\n var code;\n var pre;\n var post;\n var contextLength;\n var i, mid;\n\n trace.frames = [];\n for (i = 0; i < stack.length; ++i) {\n stackFrame = stack[i];\n frame = {\n filename: stackFrame.url ? _.sanitizeUrl(stackFrame.url) : '(unknown)',\n lineno: stackFrame.line || null,\n method:\n !stackFrame.func || stackFrame.func === '?'\n ? '[anonymous]'\n : stackFrame.func,\n colno: stackFrame.column,\n };\n if (options.sendFrameUrl) {\n frame.url = stackFrame.url;\n }\n if (\n frame.method &&\n frame.method.endsWith &&\n frame.method.endsWith('_rollbar_wrapped')\n ) {\n continue;\n }\n\n code = pre = post = null;\n contextLength = stackFrame.context ? stackFrame.context.length : 0;\n if (contextLength) {\n mid = Math.floor(contextLength / 2);\n pre = stackFrame.context.slice(0, mid);\n code = stackFrame.context[mid];\n post = stackFrame.context.slice(mid);\n }\n\n if (code) {\n frame.code = code;\n }\n\n if (pre || post) {\n frame.context = {};\n if (pre && pre.length) {\n frame.context.pre = pre;\n }\n if (post && post.length) {\n frame.context.post = post;\n }\n }\n\n if (stackFrame.args) {\n frame.args = stackFrame.args;\n }\n\n trace.frames.push(frame);\n }\n\n // NOTE(cory): reverse the frames since rollbar.com expects the most recent call last\n trace.frames.reverse();\n\n if (custom) {\n trace.extra = _.merge(custom);\n }\n }\n\n return trace;\n}\n\nfunction errorClass(stackInfo, guess, options) {\n if (stackInfo.name) {\n return stackInfo.name;\n } else if (options.guessErrorClass) {\n return guess;\n } else {\n return '(unknown)';\n }\n}\n\nfunction addScrubber(scrubFn) {\n return function (item, options, callback) {\n if (scrubFn) {\n var scrubFields = options.scrubFields || [];\n var scrubPaths = options.scrubPaths || [];\n item.data = scrubFn(item.data, scrubFields, scrubPaths);\n }\n callback(null, item);\n };\n}\n\nexport {\n handleDomException,\n handleItemWithError,\n ensureItemHasSomethingToSay,\n addBaseInfo,\n addRequestInfo,\n addClientInfo,\n addPluginInfo,\n addBody,\n addScrubber,\n};\n","import logger from '../../logger.js';\nimport * as _ from '../../utility.js';\n\nfunction makeFetchRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n timeout,\n}) {\n var controller;\n var timeoutId;\n\n if (_.isFiniteNumber(timeout)) {\n controller = new AbortController();\n timeoutId = setTimeout(function () {\n controller.abort();\n }, timeout);\n }\n\n headers = {\n 'Content-Type': 'application/json',\n 'X-Rollbar-Access-Token': accessToken,\n signal: controller && controller.signal,\n ...headers,\n };\n\n fetch(url, {\n method,\n headers,\n body: payload,\n })\n .then(function (response) {\n if (timeoutId) clearTimeout(timeoutId);\n const respHeaders = response.headers;\n\n const isItemRoute = url.endsWith('/api/1/item/');\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': respHeaders.get('Rollbar-Replay-Enabled'),\n 'Rollbar-Replay-RateLimit-Remaining': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n\n const json = response.json();\n callback(null, json, headers);\n })\n .catch(function (error) {\n logger.error(error.message);\n callback(error);\n });\n}\n\nexport default makeFetchRequest;\n","/*global XDomainRequest*/\n\nimport logger from '../../logger.js';\nimport * as _ from '../../utility.js';\n\nfunction makeXhrRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n requestFactory,\n timeout,\n}) {\n var request;\n if (requestFactory) {\n request = requestFactory();\n } else {\n request = _createXMLHTTPObject();\n }\n if (!request) {\n // Give up, no way to send requests\n return callback(new Error('No way to send a request'));\n }\n try {\n try {\n var onreadystatechange = function () {\n try {\n if (onreadystatechange && request.readyState === 4) {\n onreadystatechange = undefined;\n\n var parseResponse = _.jsonParse(request.responseText);\n if (_isSuccess(request)) {\n const isItemRoute = url.endsWith('/api/1/item/');\n\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': request.getResponseHeader(\n 'Rollbar-Replay-Enabled',\n ),\n 'Rollbar-Replay-RateLimit-Remaining':\n request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n callback(parseResponse.error, parseResponse.value, headers);\n return;\n } else if (_isNormalFailure(request)) {\n if (request.status === 403) {\n // likely caused by using a server access token\n var message =\n parseResponse.value && parseResponse.value.message;\n logger.error(message);\n }\n // return valid http status codes\n callback(new Error(String(request.status)));\n } else {\n // IE will return a status 12000+ on some sort of connection failure,\n // so we return a blank error\n // http://msdn.microsoft.com/en-us/library/aa383770%28VS.85%29.aspx\n var msg =\n 'XHR response had no status code (likely connection failure)';\n callback(_newRetriableError(msg));\n }\n }\n } catch (ex) {\n //jquery source mentions firefox may error out while accessing the\n //request members if there is a network error\n //https://github.com/jquery/jquery/blob/a938d7b1282fc0e5c52502c225ae8f0cef219f0a/src/ajax/xhr.js#L111\n var exc;\n if (ex && ex.stack) {\n exc = ex;\n } else {\n exc = new Error(ex);\n }\n callback(exc);\n }\n };\n\n request.open(method, url, true);\n if (request.setRequestHeader) {\n request.setRequestHeader('Content-Type', 'application/json');\n request.setRequestHeader('X-Rollbar-Access-Token', accessToken);\n for (const [h, v] of Object.entries(headers ?? {})) {\n request.setRequestHeader(h, v);\n }\n }\n\n if (_.isFiniteNumber(timeout)) {\n request.timeout = timeout;\n }\n\n request.onreadystatechange = onreadystatechange;\n request.send(payload);\n } catch (_e1) {\n // Sending using the normal xmlhttprequest object didn't work, try XDomainRequest\n if (typeof XDomainRequest !== 'undefined') {\n // Assume we are in a really old browser which has a bunch of limitations:\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n\n // Extreme paranoia: if we have XDomainRequest then we have a window, but just in case\n if (!window || !window.location) {\n return callback(\n new Error(\n 'No window available during request, unknown environment',\n ),\n );\n }\n\n // If the current page is http, try and send over http\n if (\n window.location.href.substring(0, 5) === 'http:' &&\n url.substring(0, 5) === 'https'\n ) {\n url = 'http' + url.substring(5);\n }\n\n var xdomainrequest = new XDomainRequest();\n xdomainrequest.onprogress = () => {};\n xdomainrequest.ontimeout = function () {\n var msg = 'Request timed out';\n var code = 'ETIMEDOUT';\n callback(_newRetriableError(msg, code));\n };\n xdomainrequest.onerror = function () {\n callback(new Error('Error during request'));\n };\n xdomainrequest.onload = function () {\n var parseResponse = _.jsonParse(xdomainrequest.responseText);\n callback(parseResponse.error, parseResponse.value);\n };\n xdomainrequest.open(method, url, true);\n xdomainrequest.send(payload);\n } else {\n callback(new Error('Cannot find a method to transport a request'));\n }\n }\n } catch (e2) {\n callback(e2);\n }\n}\n\nfunction _createXMLHTTPObject() {\n /* global ActiveXObject:false */\n\n var factories = [\n function () {\n return new XMLHttpRequest();\n },\n function () {\n return new ActiveXObject('Msxml2.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Msxml3.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Microsoft.XMLHTTP');\n },\n ];\n var xmlhttp;\n var i;\n var numFactories = factories.length;\n for (i = 0; i < numFactories; i++) {\n try {\n xmlhttp = factories[i]();\n break;\n } catch (_e) {\n // pass\n }\n }\n return xmlhttp;\n}\n\nfunction _isSuccess(r) {\n return r && r.status && r.status === 200;\n}\n\nfunction _isNormalFailure(r) {\n return r && _.isType(r.status, 'number') && r.status >= 400 && r.status < 600;\n}\n\nfunction _newRetriableError(message, code) {\n var err = new Error(message);\n err.code = code || 'ENOTFOUND';\n return err;\n}\n\nexport default makeXhrRequest;\n","import * as _ from '../utility.js';\n\nimport makeFetchRequest from './transport/fetch.js';\nimport makeXhrRequest from './transport/xhr.js';\n\n/*\n * accessToken may be embedded in payload but that should not\n * be assumed\n *\n * options: {\n * hostname\n * protocol\n * path\n * port\n * method\n * transport ('xhr' | 'fetch')\n * }\n *\n * params is an object containing key/value pairs. These\n * will be appended to the path as 'key=value&key=value'\n *\n * payload is an unserialized object\n */\nfunction Transport(truncation) {\n this.truncation = truncation;\n}\n\nTransport.prototype.get = function (\n accessToken,\n options,\n params,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = () => {};\n }\n _.addParamsAndAccessTokenToPath(accessToken, options, params);\n\n var method = 'GET';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.post = function ({\n accessToken,\n options,\n payload,\n headers,\n callback,\n requestFactory,\n}) {\n if (!callback || !_.isFunction(callback)) {\n callback = () => {};\n }\n\n if (!payload) {\n return callback(new Error('Cannot send empty request'));\n }\n\n var stringifyResult;\n // Check payload.body to ensure only items are truncated.\n if (this.truncation && payload.body) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = _.stringify(payload);\n }\n if (stringifyResult.error) {\n return callback(stringifyResult.error);\n }\n\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload: stringifyResult.value,\n headers,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.postJsonPayload = function (\n accessToken,\n options,\n payload,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = () => {};\n }\n\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\n// Wraps `_makeRequest` if zone.js is being used, ensuring that Rollbar\n// API calls are not intercepted by any child forked zones.\n// This is equivalent to `NgZone.runOutsideAngular` in Angular.\nTransport.prototype._makeZoneRequest = function () {\n var gWindow =\n (typeof window !== 'undefined' && window) ||\n (typeof self !== 'undefined' && self);\n // Whenever zone.js is loaded and `Zone` is exposed globally, access\n // the root zone to ensure that requests are always made within it.\n // This approach is framework-agnostic, regardless of which\n // framework zone.js is used with.\n var rootZone = gWindow && gWindow.Zone && gWindow.Zone.root;\n var args = Array.prototype.slice.call(arguments);\n\n if (rootZone) {\n rootZone.run(() => {\n this._makeRequest.apply(undefined, args);\n });\n } else {\n this._makeRequest.apply(undefined, args);\n }\n};\n\nTransport.prototype._makeRequest = function (params) {\n const { payload, callback, transport } = params;\n if (typeof RollbarProxy !== 'undefined') {\n return _proxyRequest(payload, callback);\n }\n\n if (transport === 'fetch') {\n makeFetchRequest(params);\n } else {\n makeXhrRequest(params);\n }\n};\n\n/* global RollbarProxy */\nfunction _proxyRequest(json, callback) {\n var rollbarProxy = new RollbarProxy();\n rollbarProxy.sendJsonPayload(\n json,\n function (_msg) {\n /* do nothing */\n },\n function (err) {\n callback(new Error(err));\n },\n );\n}\n\nexport default Transport;\n","// See https://nodejs.org/docs/latest/api/url.html\nfunction parse(url) {\n var result = {\n protocol: null,\n auth: null,\n host: null,\n path: null,\n hash: null,\n href: url,\n hostname: null,\n port: null,\n pathname: null,\n search: null,\n query: null,\n };\n\n var i, last;\n i = url.indexOf('//');\n if (i !== -1) {\n result.protocol = url.substring(0, i);\n last = i + 2;\n } else {\n last = 0;\n }\n\n i = url.indexOf('@', last);\n if (i !== -1) {\n result.auth = url.substring(last, i);\n last = i + 1;\n }\n\n i = url.indexOf('/', last);\n if (i === -1) {\n i = url.indexOf('?', last);\n if (i === -1) {\n i = url.indexOf('#', last);\n if (i === -1) {\n result.host = url.substring(last);\n } else {\n result.host = url.substring(last, i);\n result.hash = url.substring(i);\n }\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n return result;\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n\n i = url.indexOf('#', last);\n if (i === -1) {\n result.path = url.substring(last);\n } else {\n result.path = url.substring(last, i);\n result.hash = url.substring(i);\n }\n\n if (result.path) {\n var pathParts = result.path.split('?');\n result.pathname = pathParts[0];\n result.query = pathParts[1];\n result.search = result.query ? '?' + result.query : null;\n }\n return result;\n}\n\nexport { parse };\n","import API from '../api.js';\nimport defaults from '../defaults.js';\nimport errorParser from '../errorParser.js';\nimport logger from '../logger.js';\nimport * as sharedPredicates from '../predicates.js';\nimport Client from '../rollbar.js';\nimport tracingDefaults from '../tracing/defaults.js';\nimport * as sharedTransforms from '../transforms.js';\nimport * as _ from '../utility.js';\n\nimport browserDefaults from './defaults.js';\nimport * as globals from './globalSetup.js';\nimport * as predicates from './predicates.js';\nimport replayDefaults from './replay/defaults.js';\nimport * as transforms from './transforms.js';\nimport Transport from './transport.js';\nimport * as urllib from './url.js';\n\n// Used to support global `Rollbar` instance.\nlet _instance = null;\n\nclass Rollbar {\n constructor(options, client) {\n logger.init({ logLevel: options.logLevel || 'error' });\n this.options = _.handleOptions(defaultOptions, options, null, logger);\n this.options._configuredOptions = options;\n this.components = this.components || {};\n const Telemeter = this.components.telemeter;\n const Instrumenter = this.components.instrumenter;\n this.wrapGlobals = this.components.wrapGlobals;\n this.scrub = this.components.scrub;\n const truncation = this.components.truncation;\n const Tracing = this.components.tracing;\n const Replay = this.components.replay;\n\n const transport = new Transport(truncation);\n const api = new API(this.options, transport, urllib, truncation);\n if (Tracing) {\n this.tracing = new Tracing(_gWindow(), api, this.options);\n this.tracing.initSession();\n }\n if (Telemeter) {\n this.telemeter = new Telemeter(this.options, this.tracing);\n }\n\n if (Replay && _.isBrowser()) {\n const replayOptions = this.options.replay;\n this.replay = new Replay({\n tracing: this.tracing,\n telemeter: this.telemeter,\n options: replayOptions,\n });\n\n if (replayOptions.enabled && replayOptions.autoStart) {\n this.replay.recorder.start();\n }\n }\n\n this.client =\n client ||\n new Client(\n this.options,\n api,\n logger,\n this.telemeter,\n this.tracing,\n this.replay,\n 'browser',\n );\n var gWindow = _gWindow();\n var gDocument = typeof document !== 'undefined' && document;\n this.isChrome = gWindow.chrome && gWindow.chrome.runtime; // check .runtime to avoid Edge browsers\n this.anonymousErrorsPending = 0;\n addTransformsToNotifier(this.client.notifier, this, gWindow);\n addPredicatesToQueue(this.client.queue);\n this.setupUnhandledCapture();\n if (Instrumenter) {\n this.instrumenter = new Instrumenter(\n this.options,\n this.client.telemeter,\n this,\n gWindow,\n gDocument,\n );\n this.instrumenter.instrument();\n }\n\n this.setSessionAttributesFromOptions(options);\n\n // Used with rollbar-react for rollbar-react-native compatibility.\n this.rollbar = this;\n }\n\n static init(options, client) {\n if (_instance) {\n return _instance.global(options).configure(options);\n }\n _instance = new Rollbar(options, client);\n return _instance;\n }\n\n static setComponents(components) {\n Rollbar.prototype.components = components;\n }\n\n global(options) {\n this.client.global(options);\n return this;\n }\n\n configure(options, payloadData) {\n if (options.logLevel) {\n logger.init({ logLevel: options.logLevel });\n }\n this.setSessionAttributesFromOptions(options);\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.handleOptions(oldOptions, options, payload, logger);\n this.options._configuredOptions = _.handleOptions(\n oldOptions._configuredOptions,\n options,\n payload,\n );\n\n this.tracing?.configure(this.options);\n this.replay?.configure(this.options.replay);\n this.client.configure(this.options, payloadData);\n this.instrumenter?.configure(this.options);\n this.setupUnhandledCapture();\n return this;\n }\n\n lastError() {\n return this.client.lastError;\n }\n\n log() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.log(item);\n return { uuid: uuid };\n }\n\n debug() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.debug(item);\n return { uuid: uuid };\n }\n\n info() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.info(item);\n return { uuid: uuid };\n }\n\n warn() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warn(item);\n return { uuid: uuid };\n }\n\n warning() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warning(item);\n return { uuid: uuid };\n }\n\n error() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.error(item);\n return { uuid: uuid };\n }\n\n critical() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.critical(item);\n return { uuid: uuid };\n }\n\n buildJsonPayload(item) {\n return this.client.buildJsonPayload(item);\n }\n\n sendJsonPayload(jsonPayload) {\n return this.client.sendJsonPayload(jsonPayload);\n }\n\n triggerDirectReplay(context) {\n return this.triggerReplay({ type: 'direct', ...context });\n }\n\n triggerReplay(context) {\n if (!this.replay) return null;\n\n return this.replay.triggerReplay(context);\n }\n\n setupUnhandledCapture() {\n var gWindow = _gWindow();\n\n if (!this.unhandledExceptionsInitialized) {\n if (\n this.options.captureUncaught ||\n this.options.handleUncaughtExceptions\n ) {\n globals.captureUncaughtExceptions(gWindow, this);\n if (this.wrapGlobals && this.options.wrapGlobalEventHandlers) {\n this.wrapGlobals(gWindow, this);\n }\n this.unhandledExceptionsInitialized = true;\n }\n }\n if (!this.unhandledRejectionsInitialized) {\n if (\n this.options.captureUnhandledRejections ||\n this.options.handleUnhandledRejections\n ) {\n globals.captureUnhandledRejections(gWindow, this);\n this.unhandledRejectionsInitialized = true;\n }\n }\n }\n\n handleUncaughtException(message, url, lineno, colno, error, context) {\n if (\n !this.options.captureUncaught &&\n !this.options.handleUncaughtExceptions\n ) {\n return;\n }\n\n // Chrome will always send 5+ arguments and error will be valid or null, not undefined.\n // If error is undefined, we have a different caller.\n // Chrome also sends errors from web workers with null error, but does not invoke\n // prepareStackTrace() for these. Test for empty url to skip them.\n if (\n this.options.inspectAnonymousErrors &&\n this.isChrome &&\n error === null &&\n url === ''\n ) {\n return 'anonymous';\n }\n\n var item;\n var stackInfo = _.makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n 'onerror',\n 'uncaught exception',\n errorParser,\n );\n if (_.isError(error)) {\n item = this._createItem([message, error, context]);\n item._unhandledStackInfo = stackInfo;\n } else if (_.isError(url)) {\n item = this._createItem([message, url, context]);\n item._unhandledStackInfo = stackInfo;\n } else {\n item = this._createItem([message, context]);\n item.stackInfo = stackInfo;\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n this.client.log(item);\n }\n\n /**\n * Chrome only. Other browsers will ignore.\n *\n * Use Error.prepareStackTrace to extract information about errors that\n * do not have a valid error object in onerror().\n *\n * In tested version of Chrome, onerror is called first but has no way\n * to communicate with prepareStackTrace. Use a counter to let this\n * handler know which errors to send to Rollbar.\n *\n * In config options, set inspectAnonymousErrors to enable.\n */\n handleAnonymousErrors() {\n if (!this.options.inspectAnonymousErrors || !this.isChrome) {\n return;\n }\n\n const prepareStackTrace = (error, _stack) => {\n if (this.options.inspectAnonymousErrors) {\n if (this.anonymousErrorsPending) {\n // This is the only known way to detect that onerror saw an anonymous error.\n // It depends on onerror reliably being called before Error.prepareStackTrace,\n // which so far holds true on tested versions of Chrome. If versions of Chrome\n // are tested that behave differently, this logic will need to be updated\n // accordingly.\n this.anonymousErrorsPending -= 1;\n\n if (!error) {\n // Not likely to get here, but calling handleUncaughtException from here\n // without an error object would throw off the anonymousErrorsPending counter,\n // so return now.\n return;\n }\n\n // Allow this to be tracked later.\n error._isAnonymous = true;\n\n // url, lineno, colno shouldn't be needed for these errors.\n // If that changes, update this accordingly, using the unused\n // _stack param as needed (rather than parse error.toString()).\n this.handleUncaughtException(error.message, null, null, null, error);\n }\n }\n\n // Workaround to ensure stack is preserved for normal errors.\n return error.stack;\n };\n\n // https://v8.dev/docs/stack-trace-api\n try {\n Error.prepareStackTrace = prepareStackTrace;\n } catch (e) {\n this.options.inspectAnonymousErrors = false;\n this.error('anonymous error handler failed', e);\n }\n }\n\n handleUnhandledRejection(reason, promise) {\n if (\n !this.options.captureUnhandledRejections &&\n !this.options.handleUnhandledRejections\n ) {\n return;\n }\n\n var message = 'unhandled rejection was null or undefined!';\n if (reason) {\n if (reason.message) {\n message = reason.message;\n } else {\n var reasonResult = _.stringify(reason);\n if (reasonResult.value) {\n message = reasonResult.value;\n }\n }\n }\n var context =\n (reason && reason._rollbarContext) ||\n (promise && promise._rollbarContext);\n\n var item;\n if (_.isError(reason)) {\n item = this._createItem([message, reason, context]);\n } else {\n item = this._createItem([message, reason, context]);\n item.stackInfo = _.makeUnhandledStackInfo(\n message,\n '',\n 0,\n 0,\n null,\n 'unhandledrejection',\n '',\n errorParser,\n );\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n item._originalArgs = item._originalArgs || [];\n item._originalArgs.push(promise);\n this.client.log(item);\n }\n\n wrap(f, context, _before) {\n try {\n var ctxFn;\n if (_.isFunction(context)) {\n ctxFn = context;\n } else {\n ctxFn = function () {\n return context || {};\n };\n }\n\n if (!_.isFunction(f)) {\n return f;\n }\n\n if (f._isWrap) {\n return f;\n }\n\n if (!f._rollbar_wrapped) {\n f._rollbar_wrapped = function () {\n if (_before && _.isFunction(_before)) {\n _before.apply(this, arguments);\n }\n try {\n return f.apply(this, arguments);\n } catch (exc) {\n var e = exc;\n if (e && window._rollbarWrappedError !== e) {\n if (_.isType(e, 'string')) {\n e = new String(e);\n }\n e._rollbarContext = ctxFn() || {};\n e._rollbarContext._wrappedSource = f.toString();\n\n window._rollbarWrappedError = e;\n }\n throw e;\n }\n };\n\n f._rollbar_wrapped._isWrap = true;\n\n for (var prop in f) {\n if (_.hasOwn(f, prop) && prop !== '_rollbar_wrapped') {\n f._rollbar_wrapped[prop] = f[prop];\n }\n }\n }\n\n return f._rollbar_wrapped;\n } catch (_e) {\n // Return the original function if the wrap fails.\n return f;\n }\n }\n\n captureEvent() {\n var event = _.createTelemetryEvent(arguments);\n return this.client.captureEvent(event.type, event.metadata, event.level);\n }\n\n setSessionUser(user) {\n if (!this.tracing?.session) return;\n\n this.tracing.session.setUser(user);\n }\n\n setSessionAttributes(attrs) {\n if (!this.tracing?.session) return;\n\n attrs = { ...attrs };\n\n this.tracing.session.setAttributes(attrs);\n }\n\n setSessionAttributesFromOptions(options) {\n const person = options.person || options.payload?.person;\n if (person) {\n this.setSessionUser(person);\n }\n const code_version =\n options.client?.javascript?.code_version ||\n options.codeVersion ||\n options.code_version ||\n options.payload?.client?.javascript?.code_version ||\n options.payload?.code_version ||\n options.payload?.codeVersion;\n this.setSessionAttributes({\n 'rollbar.codeVersion': code_version,\n 'rollbar.notifier.name': 'rollbar-browser-js',\n 'rollbar.notifier.version': options.version,\n });\n }\n\n // The following two methods are used internally and are not meant for public use\n captureDomContentLoaded(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureDomContentLoaded(ts);\n }\n\n captureLoad(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureLoad(ts);\n }\n\n loadFull() {\n logger.info(\n 'Unexpected Rollbar.loadFull() called on a Notifier instance. This can happen when Rollbar is loaded multiple times.',\n );\n }\n\n _createItem(args) {\n return _.createItem(args, logger, this);\n }\n\n // Static version of instance methods support the legacy pattern of a\n // global `Rollbar` instance, where after calling `Rollbar.init()`,\n // `Rollbar` can be used as if it were an instance.\n // If support for this pattern is dropped, these static methods can be removed.\n static callInstance(method, args) {\n if (!_instance) {\n const message = 'Rollbar is not initialized';\n logger.error(message);\n const maybeCallback = _getFirstFunction(args);\n if (maybeCallback) {\n maybeCallback(new Error(message));\n }\n return;\n }\n return _instance[method].apply(_instance, args);\n }\n\n static global = (...args) => Rollbar.callInstance('global', args);\n static configure = (...args) => Rollbar.callInstance('configure', args);\n static lastError = (...args) => Rollbar.callInstance('lastError', args);\n static log = (...args) => Rollbar.callInstance('log', args);\n static debug = (...args) => Rollbar.callInstance('debug', args);\n static info = (...args) => Rollbar.callInstance('info', args);\n static warn = (...args) => Rollbar.callInstance('warn', args);\n static warning = (...args) => Rollbar.callInstance('warning', args);\n static error = (...args) => Rollbar.callInstance('error', args);\n static critical = (...args) => Rollbar.callInstance('critical', args);\n static buildJsonPayload = (...args) =>\n Rollbar.callInstance('buildJsonPayload', args);\n static sendJsonPayload = (...args) =>\n Rollbar.callInstance('sendJsonPayload', args);\n static wrap = (...args) => Rollbar.callInstance('wrap', args);\n static captureEvent = (...args) => Rollbar.callInstance('captureEvent', args);\n}\n\n/* Internal */\n\nfunction addTransformsToNotifier(notifier, rollbar, gWindow) {\n notifier\n .addTransform(transforms.handleDomException)\n .addTransform(transforms.handleItemWithError)\n .addTransform(transforms.ensureItemHasSomethingToSay)\n .addTransform(transforms.addBaseInfo)\n .addTransform(transforms.addRequestInfo(gWindow))\n .addTransform(transforms.addClientInfo(gWindow))\n .addTransform(transforms.addPluginInfo(gWindow))\n .addTransform(transforms.addBody)\n .addTransform(sharedTransforms.addMessageWithError)\n .addTransform(sharedTransforms.addTelemetryData)\n .addTransform(sharedTransforms.addConfigToPayload)\n .addTransform(transforms.addScrubber(rollbar.scrub))\n .addTransform(sharedTransforms.addPayloadOptions)\n .addTransform(sharedTransforms.userTransform(logger))\n .addTransform(sharedTransforms.addConfiguredOptions)\n .addTransform(sharedTransforms.addDiagnosticKeys)\n .addTransform(sharedTransforms.itemToPayload);\n}\n\nfunction addPredicatesToQueue(queue) {\n queue\n .addPredicate(sharedPredicates.checkLevel)\n .addPredicate(predicates.checkIgnore)\n .addPredicate(sharedPredicates.userCheckIgnore(logger))\n .addPredicate(sharedPredicates.urlIsNotBlockListed(logger))\n .addPredicate(sharedPredicates.urlIsSafeListed(logger))\n .addPredicate(sharedPredicates.messageIsIgnored(logger));\n}\n\nfunction _getFirstFunction(args) {\n for (var i = 0, len = args.length; i < len; ++i) {\n if (_.isFunction(args[i])) {\n return args[i];\n }\n }\n return undefined;\n}\n\nfunction _gWindow() {\n return (\n (typeof window !== 'undefined' && window) ||\n (typeof self !== 'undefined' && self)\n );\n}\n\nconst defaultOptions = {\n environment: 'unknown',\n version: defaults.version,\n scrubFields: browserDefaults.scrubFields,\n logLevel: defaults.logLevel,\n reportLevel: defaults.reportLevel,\n uncaughtErrorLevel: defaults.uncaughtErrorLevel,\n endpoint: defaults.endpoint,\n verbose: false,\n enabled: true,\n transmit: true,\n sendConfig: false,\n includeItemsInTelemetry: true,\n captureIp: true,\n inspectAnonymousErrors: true,\n ignoreDuplicateErrors: true,\n wrapGlobalEventHandlers: false,\n replay: replayDefaults,\n tracing: tracingDefaults,\n};\n\nexport default Rollbar;\n","function captureUncaughtExceptions(window, handler, shim) {\n if (!window) {\n return;\n }\n var oldOnError;\n\n if (typeof handler._rollbarOldOnError === 'function') {\n oldOnError = handler._rollbarOldOnError;\n } else if (window.onerror) {\n oldOnError = window.onerror;\n while (oldOnError._rollbarOldOnError) {\n oldOnError = oldOnError._rollbarOldOnError;\n }\n handler._rollbarOldOnError = oldOnError;\n }\n\n handler.handleAnonymousErrors();\n\n var fn = function () {\n var args = Array.prototype.slice.call(arguments, 0);\n _rollbarWindowOnError(window, handler, oldOnError, args);\n };\n if (shim) {\n fn._rollbarOldOnError = oldOnError;\n }\n window.onerror = fn;\n}\n\nfunction _rollbarWindowOnError(window, r, old, args) {\n if (window._rollbarWrappedError) {\n if (!args[4]) {\n args[4] = window._rollbarWrappedError;\n }\n if (!args[5]) {\n args[5] = window._rollbarWrappedError._rollbarContext;\n }\n window._rollbarWrappedError = null;\n }\n\n var ret = r.handleUncaughtException.apply(r, args);\n\n if (old) {\n old.apply(window, args);\n }\n\n // Let other chained onerror handlers above run before setting this.\n // If an error is thrown and caught within a chained onerror handler,\n // Error.prepareStackTrace() will see that one before the one we want.\n if (ret === 'anonymous') {\n r.anonymousErrorsPending += 1; // See Rollbar.prototype.handleAnonymousErrors()\n }\n}\n\nfunction captureUnhandledRejections(window, handler, shim) {\n if (!window) {\n return;\n }\n\n if (\n typeof window._rollbarURH === 'function' &&\n window._rollbarURH.belongsToShim\n ) {\n window.removeEventListener('unhandledrejection', window._rollbarURH);\n }\n\n var rejectionHandler = function (evt) {\n var reason, promise, detail;\n try {\n reason = evt.reason;\n } catch (_e) {\n reason = undefined;\n }\n try {\n promise = evt.promise;\n } catch (_e) {\n promise = '[unhandledrejection] error getting `promise` from event';\n }\n try {\n detail = evt.detail;\n if (!reason && detail) {\n reason = detail.reason;\n promise = detail.promise;\n }\n } catch (_e) {\n // Ignore\n }\n if (!reason) {\n reason = '[unhandledrejection] error getting `reason` from event';\n }\n\n if (handler && handler.handleUnhandledRejection) {\n handler.handleUnhandledRejection(reason, promise);\n }\n };\n rejectionHandler.belongsToShim = shim;\n window._rollbarURH = rejectionHandler;\n window.addEventListener('unhandledrejection', rejectionHandler);\n}\n\nexport { captureUncaughtExceptions, captureUnhandledRejections };\n","/**\n * Default session replay recording options\n * See https://github.com/rrweb-io/rrweb/blob/master/guide.md#options for details\n */\nexport default {\n enabled: false, // Whether recording is enabled\n autoStart: true, // Start recording automatically when Rollbar initializes\n\n // defaults used by triggers that don't specify them\n triggerDefaults: {\n samplingRatio: 1.0,\n preDuration: 300,\n postDuration: 5,\n },\n triggers: [\n {\n type: 'occurrence',\n level: ['error', 'critical'],\n },\n ],\n\n debug: {\n logErrors: true, // Whether to log errors emitted by rrweb.\n logEmits: false, // Whether to log emitted events\n },\n\n // Recording options\n inlineStylesheet: true, // Whether to inline stylesheets to improve replay accuracy\n inlineImages: false, // Whether to record the image content\n collectFonts: true, // Whether to collect fonts in the website\n\n // Privacy options\n // Fine-grained control over which input types to mask\n // By default only password inputs are masked if maskInputs is true\n maskInputOptions: {\n password: true,\n email: false,\n tel: false,\n text: false,\n color: false,\n date: false,\n 'datetime-local': false,\n month: false,\n number: false,\n range: false,\n search: false,\n time: false,\n url: false,\n week: false,\n },\n\n // Mask all input values\n maskAllInputs: false,\n\n // Class names to block, mask, or ignore the content of elements.\n blockClass: 'rb-block',\n maskTextClass: 'rb-mask',\n ignoreClass: 'rb-ignore',\n\n // Remove unnecessary parts of the DOM\n // By default all removable elements are removed\n slimDOMOptions: {\n script: true, // Remove script elements\n comment: true, // Remove comments\n headFavicon: true, // Remove favicons in the head\n headWhitespace: true, // Remove whitespace in head\n headMetaDescKeywords: true, // Remove meta description and keywords\n headMetaSocial: true, // Remove social media meta tags\n headMetaRobots: true, // Remove robots meta directives\n headMetaHttpEquiv: true, // Remove http-equiv meta directives\n headMetaAuthorship: true, // Remove authorship meta directives\n headMetaVerification: true, // Remove verification meta directives\n },\n\n // Custom callbacks for advanced use cases\n // These are undefined by default and can be set programmatically\n // maskInputFn: undefined, // Custom function to mask input values\n // maskTextFn: undefined, // Custom function to mask text content\n // errorHandler: undefined, // Custom error handler for recording errors\n\n // Plugin system\n // plugins: [] // List of plugins to use (must be set programmatically)\n};\n","/**\n * Default tracing options\n */\nexport default {\n enabled: false,\n endpoint: 'api.rollbar.com/api/1/session/',\n};\n","import { hasOwn } from '../utility.js';\n\n/*\n * headers - Detect when fetch Headers are undefined and use a partial polyfill.\n *\n * A full polyfill is not used in order to keep package size as small as possible.\n * Since this is only used internally and is not added to the window object,\n * the full interface doesn't need to be supported.\n *\n * This implementation is modified from whatwg-fetch:\n * https://github.com/github/fetch\n */\nfunction headers(headers) {\n if (typeof Headers === 'undefined') {\n return new FetchHeaders(headers);\n }\n\n return new Headers(headers);\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n return name.toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value;\n}\n\nfunction iteratorFor(items) {\n var iterator = {\n next: function () {\n var value = items.shift();\n return { done: value === undefined, value: value };\n },\n };\n\n return iterator;\n}\n\nfunction FetchHeaders(headers) {\n this.map = {};\n\n if (headers instanceof FetchHeaders) {\n headers.forEach(function (value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function (header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function (name) {\n this.append(name, headers[name]);\n }, this);\n }\n}\n\nFetchHeaders.prototype.append = function (name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n};\n\nFetchHeaders.prototype.get = function (name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null;\n};\n\nFetchHeaders.prototype.has = function (name) {\n return hasOwn(this.map, normalizeName(name));\n};\n\nFetchHeaders.prototype.forEach = function (callback, thisArg) {\n for (var name in this.map) {\n if (hasOwn(this.map, name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n};\n\nFetchHeaders.prototype.entries = function () {\n var items = [];\n this.forEach(function (value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items);\n};\n\nexport default headers;\n","function replace(obj, name, replacement, replacements, type) {\n var orig = obj[name];\n obj[name] = replacement(orig);\n if (replacements) {\n replacements[type].push([obj, name, orig]);\n }\n}\n\nexport default replace;\n","function getElementType(e) {\n return (e.getAttribute('type') || '').toLowerCase();\n}\n\nfunction isDescribedElement(element, type, subtypes) {\n if (element.tagName.toLowerCase() !== type.toLowerCase()) {\n return false;\n }\n if (!subtypes) {\n return true;\n }\n const elementType = getElementType(element);\n for (const subtype of subtypes) {\n if (subtype === elementType) {\n return true;\n }\n }\n return false;\n}\n\nfunction getElementFromEvent(evt, doc) {\n if (evt.target) {\n return evt.target;\n }\n if (doc && doc.elementFromPoint) {\n return doc.elementFromPoint(evt.clientX, evt.clientY);\n }\n return undefined;\n}\n\nfunction treeToArray(elem) {\n var MAX_HEIGHT = 5;\n var out = [];\n var nextDescription;\n for (var height = 0; elem && height < MAX_HEIGHT; height++) {\n nextDescription = describeElement(elem);\n if (!nextDescription || nextDescription.tagName === 'html') {\n break;\n }\n out.unshift(nextDescription);\n elem = elem.parentNode;\n }\n return out;\n}\n\nfunction elementArrayToString(a) {\n var MAX_LENGTH = 80;\n var separator = ' > ',\n separatorLength = separator.length;\n var out = [],\n len = 0,\n nextStr,\n totalLength;\n\n for (var i = a.length - 1; i >= 0; i--) {\n nextStr = descriptionToString(a[i]);\n totalLength = len + out.length * separatorLength + nextStr.length;\n if (i < a.length - 1 && totalLength >= MAX_LENGTH + 3) {\n out.unshift('...');\n break;\n }\n out.unshift(nextStr);\n len += nextStr.length;\n }\n return out.join(separator);\n}\n\nfunction elementString(elem) {\n return elementArrayToString(treeToArray(elem));\n}\n\nfunction descriptionToString(desc) {\n if (!desc || !desc.tagName) {\n return '';\n }\n var out = [desc.tagName];\n if (desc.id) {\n out.push('#' + desc.id);\n }\n if (desc.classes) {\n out.push('.' + desc.classes.join('.'));\n }\n for (const attribute of desc.attributes) {\n out.push('[' + attribute.key + '=\"' + attribute.value + '\"]');\n }\n\n return out.join('');\n}\n\n/**\n * Input: a dom element\n * Output: null if tagName is falsey or input is falsey, else\n * {\n * tagName: String,\n * id: String | undefined,\n * classes: [String] | undefined,\n * attributes: [\n * {\n * key: OneOf(type, name, title, alt),\n * value: String\n * }\n * ]\n * }\n */\nfunction describeElement(elem) {\n if (!elem || !elem.tagName) {\n return null;\n }\n var out = {},\n className;\n out.tagName = elem.tagName.toLowerCase();\n if (elem.id) {\n out.id = elem.id;\n }\n className = elem.className;\n if (className && typeof className === 'string') {\n out.classes = className.split(/\\s+/);\n }\n var attributes = ['type', 'name', 'title', 'alt'];\n out.attributes = [];\n for (const attribute of attributes) {\n const attr = elem.getAttribute(attribute);\n if (attr) {\n out.attributes.push({ key: attribute, value: attr });\n }\n }\n return out;\n}\n\n/*\n * Detects if the given element matches any of the given class names (string or regex),\n * or CSS selectors.\n * @param {HTMLElement} element - The DOM element to check.\n * @param {Array} classes - An array of class names (string or regex) to match against.\n * @param {Array} selectors - An array of CSS selectors to match against.\n * @return {boolean} - True if the element matches any of the classes or selectors, false otherwise.\n */\nfunction isMatchingElement(element, classes, selectors) {\n try {\n for (const cls of classes) {\n if (typeof cls === 'string') {\n if (element.classList.contains(cls)) {\n return true;\n }\n } else {\n for (const c of element.classList) {\n if (cls.test(c)) {\n return true;\n }\n }\n }\n }\n for (const sel of selectors) {\n if (element.matches(sel)) {\n return true;\n }\n }\n } catch (_e) {\n // ignore errors from invalid arguments\n }\n return false;\n}\n\nexport {\n describeElement,\n descriptionToString,\n elementArrayToString,\n elementString,\n treeToArray,\n getElementFromEvent,\n isDescribedElement,\n getElementType,\n isMatchingElement,\n};\n","/* eslint-disable @typescript-eslint/no-this-alias */\n// TODO(matux): refactor to remove no-this-alias disable\n\nimport logger from '../logger.js';\nimport scrub from '../scrub.js';\nimport headers from '../utility/headers.js';\nimport replace from '../utility/replace.js';\nimport * as _ from '../utility.js';\n\nimport * as domUtil from './domUtility.js';\nimport * as urlparser from './url.js';\n\nconst defaults = {\n network: true,\n networkResponseHeaders: false,\n networkResponseBody: false,\n networkRequestHeaders: false,\n networkRequestBody: false,\n networkErrorOnHttp5xx: false,\n networkErrorOnHttp4xx: false,\n networkErrorOnHttp0: false,\n log: true,\n dom: true,\n navigation: true,\n connectivity: true,\n contentSecurityPolicy: true,\n errorOnContentSecurityPolicy: false,\n};\n\nfunction restore(replacements, type) {\n let b;\n while (replacements[type].length) {\n b = replacements[type].shift();\n b[0][b[1]] = b[2];\n }\n}\n\nfunction nameFromDescription(description) {\n if (!description || !description.attributes) {\n return null;\n }\n const attrs = description.attributes;\n for (const a of attrs) {\n if (a.key === 'name') {\n return a.value;\n }\n }\n return null;\n}\n\nfunction defaultValueScrubber(scrubFields) {\n const patterns = [];\n for (const field of scrubFields) {\n patterns.push(new RegExp(field, 'i'));\n }\n return function (description) {\n const name = nameFromDescription(description);\n if (!name) {\n return false;\n }\n for (const p of patterns) {\n if (p.test(name)) {\n return true;\n }\n }\n return false;\n };\n}\n\nclass Instrumenter {\n constructor(options, telemeter, rollbar, _window, _document) {\n this.options = options;\n let autoInstrument = options.autoInstrument;\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.telemeter = telemeter;\n this.rollbar = rollbar;\n this.diagnostic = rollbar.client.notifier.diagnostic;\n this._window = _window || {};\n this._document = _document || {};\n this.replacements = {\n network: [],\n log: [],\n navigation: [],\n connectivity: [],\n };\n this.eventRemovers = {\n dom: [],\n connectivity: [],\n contentsecuritypolicy: [],\n };\n\n this._location = this._window.location;\n this._lastHref = this._location && this._location.href;\n }\n\n configureScrubbing() {\n const options = this.options;\n this.scrubTelemetryInputs = Boolean(\n options.scrubTelemetryInputs ?? options.replay?.maskAllInputs,\n );\n this.telemetryScrubber = options.telemetryScrubber;\n this.defaultValueScrubber = defaultValueScrubber(options.scrubFields);\n this.maskInputFn = options.replay?.maskInputFn;\n this.maskInputOptions = options.replay?.maskInputOptions || {};\n this.scrubClasses = [\n options.replay?.blockClass,\n options.replay?.ignoreClass,\n options.replay?.maskTextClass,\n ].filter(Boolean);\n this.scrubSelectors = [\n options.replay?.blockSelector,\n options.replay?.ignoreSelector,\n options.replay?.maskTextSelector,\n ].filter(Boolean);\n }\n\n configure(options) {\n this.options = _.merge(this.options, options);\n let autoInstrument = options.autoInstrument;\n const oldSettings = _.merge(this.autoInstrument);\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.instrument(oldSettings);\n }\n\n // eslint-disable-next-line complexity\n instrument(oldSettings) {\n if (this.autoInstrument.network && !(oldSettings && oldSettings.network)) {\n this.instrumentNetwork();\n } else if (\n !this.autoInstrument.network &&\n oldSettings &&\n oldSettings.network\n ) {\n this.deinstrumentNetwork();\n }\n\n if (this.autoInstrument.log && !(oldSettings && oldSettings.log)) {\n this.instrumentConsole();\n } else if (!this.autoInstrument.log && oldSettings && oldSettings.log) {\n this.deinstrumentConsole();\n }\n\n if (this.autoInstrument.dom && !(oldSettings && oldSettings.dom)) {\n this.instrumentDom();\n } else if (!this.autoInstrument.dom && oldSettings && oldSettings.dom) {\n this.deinstrumentDom();\n }\n\n if (\n this.autoInstrument.navigation &&\n !(oldSettings && oldSettings.navigation)\n ) {\n this.instrumentNavigation();\n } else if (\n !this.autoInstrument.navigation &&\n oldSettings &&\n oldSettings.navigation\n ) {\n this.deinstrumentNavigation();\n }\n\n if (\n this.autoInstrument.connectivity &&\n !(oldSettings && oldSettings.connectivity)\n ) {\n this.instrumentConnectivity();\n } else if (\n !this.autoInstrument.connectivity &&\n oldSettings &&\n oldSettings.connectivity\n ) {\n this.deinstrumentConnectivity();\n }\n\n if (\n this.autoInstrument.contentSecurityPolicy &&\n !(oldSettings && oldSettings.contentSecurityPolicy)\n ) {\n this.instrumentContentSecurityPolicy();\n } else if (\n !this.autoInstrument.contentSecurityPolicy &&\n oldSettings &&\n oldSettings.contentSecurityPolicy\n ) {\n this.deinstrumentContentSecurityPolicy();\n }\n }\n\n deinstrumentNetwork() {\n restore(this.replacements, 'network');\n }\n\n instrumentNetwork() {\n const self = this;\n\n function wrapProp(prop, xhr) {\n if (prop in xhr && _.isFunction(xhr[prop])) {\n replace(xhr, prop, function (orig) {\n return self.rollbar.wrap(orig);\n });\n }\n }\n\n if ('XMLHttpRequest' in this._window) {\n const xhrp = this._window.XMLHttpRequest.prototype;\n replace(\n xhrp,\n 'open',\n function (orig) {\n return function (method, url) {\n const isUrlObject = _isUrlObject(url);\n if (_.isType(url, 'string') || isUrlObject) {\n url = isUrlObject ? url.toString() : url;\n if (this.__rollbar_xhr) {\n this.__rollbar_xhr.method = method;\n this.__rollbar_xhr.url = url;\n this.__rollbar_xhr.status_code = null;\n this.__rollbar_xhr.start_time_ms = _.now();\n this.__rollbar_xhr.end_time_ms = null;\n } else {\n this.__rollbar_xhr = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'setRequestHeader',\n function (orig) {\n return function (header, value) {\n // If xhr.open is async, __rollbar_xhr may not be initialized yet.\n if (!this.__rollbar_xhr) {\n this.__rollbar_xhr = {};\n }\n if (_.isType(header, 'string') && _.isType(value, 'string')) {\n if (self.autoInstrument.networkRequestHeaders) {\n if (!this.__rollbar_xhr.request_headers) {\n this.__rollbar_xhr.request_headers = {};\n }\n this.__rollbar_xhr.request_headers[header] = value;\n }\n // We want the content type even if request header telemetry is off.\n if (header.toLowerCase() === 'content-type') {\n this.__rollbar_xhr.request_content_type = value;\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'send',\n function (orig) {\n return function (data) {\n const xhr = this;\n\n function onreadystatechangeHandler() {\n if (xhr.__rollbar_xhr) {\n if (xhr.__rollbar_xhr.status_code === null) {\n xhr.__rollbar_xhr.status_code = 0;\n if (self.autoInstrument.networkRequestBody) {\n xhr.__rollbar_xhr.request = data;\n }\n xhr.__rollbar_event = self.captureNetwork(\n xhr.__rollbar_xhr,\n 'xhr',\n undefined,\n );\n }\n if (xhr.readyState < 2) {\n xhr.__rollbar_xhr.start_time_ms = _.now();\n }\n if (xhr.readyState > 3) {\n const end_time_ms = _.now();\n xhr.__rollbar_xhr.end_time_ms = end_time_ms;\n\n let headers = null;\n xhr.__rollbar_xhr.response_content_type =\n xhr.getResponseHeader('Content-Type');\n if (self.autoInstrument.networkResponseHeaders) {\n const headersConfig =\n self.autoInstrument.networkResponseHeaders;\n headers = {};\n try {\n let header;\n if (headersConfig === true) {\n const allHeaders = xhr.getAllResponseHeaders();\n if (allHeaders) {\n const arr = allHeaders.trim().split(/[\\r\\n]+/);\n let parts, value;\n for (const h of arr) {\n parts = h.split(': ');\n header = parts.shift();\n value = parts.join(': ');\n headers[header] = value;\n }\n }\n } else {\n for (const h of headersConfig) {\n headers[h] = xhr.getResponseHeader(h);\n }\n }\n } catch (_e) {\n /* we ignore the errors here that could come from different\n * browser issues with the xhr methods */\n }\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n try {\n body = xhr.responseText;\n } catch (_e) {\n /* ignore errors from reading responseText */\n }\n }\n let response = null;\n if (body || headers) {\n response = {};\n if (body) {\n if (\n self.isJsonContentType(\n xhr.__rollbar_xhr.response_content_type,\n )\n ) {\n response.body = self.scrubJson(body);\n } else {\n response.body = body;\n }\n }\n if (headers) {\n response.headers = headers;\n }\n }\n if (response) {\n xhr.__rollbar_xhr.response = response;\n }\n try {\n let code = xhr.status;\n code = code === 1223 ? 204 : code;\n xhr.__rollbar_xhr.status_code = code;\n self.addOtelNetworkResponse(\n xhr.__rollbar_event,\n end_time_ms,\n code,\n );\n xhr.__rollbar_event.level =\n self.telemeter.levelFromStatus(code);\n self.errorOnHttpStatus(xhr.__rollbar_xhr);\n } catch (_e) {\n /* ignore possible exception from xhr.status */\n }\n }\n }\n }\n\n wrapProp('onload', xhr);\n wrapProp('onerror', xhr);\n wrapProp('onprogress', xhr);\n\n if (\n 'onreadystatechange' in xhr &&\n _.isFunction(xhr.onreadystatechange)\n ) {\n replace(xhr, 'onreadystatechange', function (orig) {\n return self.rollbar.wrap(\n orig,\n undefined,\n onreadystatechangeHandler,\n );\n });\n } else {\n xhr.onreadystatechange = onreadystatechangeHandler;\n }\n if (xhr.__rollbar_xhr && self.trackHttpErrors()) {\n xhr.__rollbar_xhr.stack = new Error().stack;\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n }\n\n if ('fetch' in this._window) {\n replace(\n this._window,\n 'fetch',\n function (orig) {\n return function (_fn, _t) {\n const args = [...arguments];\n const input = args[0];\n let method = 'GET';\n let url;\n const isUrlObject = _isUrlObject(input);\n if (_.isType(input, 'string') || isUrlObject) {\n url = isUrlObject ? input.toString() : input;\n } else if (input) {\n url = input.url;\n if (input.method) {\n method = input.method;\n }\n }\n if (args[1] && args[1].method) {\n method = args[1].method;\n }\n const metadata = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n if (args[1] && args[1].headers) {\n // Argument may be a Headers object, or plain object. Ensure here that\n // we are working with a Headers object with case-insensitive keys.\n const reqHeaders = headers(args[1].headers);\n\n metadata.request_content_type = reqHeaders.get('Content-Type');\n\n if (self.autoInstrument.networkRequestHeaders) {\n metadata.request_headers = self.fetchHeaders(\n reqHeaders,\n self.autoInstrument.networkRequestHeaders,\n );\n }\n }\n\n if (self.autoInstrument.networkRequestBody) {\n if (args[1] && args[1].body) {\n metadata.request = args[1].body;\n } else if (\n args[0] &&\n !_.isType(args[0], 'string') &&\n args[0].body\n ) {\n metadata.request = args[0].body;\n }\n }\n const telemetryEvent = self.captureNetwork(\n metadata,\n 'fetch',\n undefined,\n );\n if (self.trackHttpErrors()) {\n metadata.stack = new Error().stack;\n }\n\n // Start our handler before returning the promise. This allows resp.clone()\n // to execute before other handlers touch the response.\n return orig.apply(this, args).then(function (resp) {\n const end_time_ms = _.now();\n metadata.end_time_ms = end_time_ms;\n metadata.status_code = resp.status;\n self.addOtelNetworkResponse(\n telemetryEvent,\n end_time_ms,\n resp.status,\n );\n\n metadata.response_content_type = resp.headers.get('Content-Type');\n let headers = null;\n if (self.autoInstrument.networkResponseHeaders) {\n headers = self.fetchHeaders(\n resp.headers,\n self.autoInstrument.networkResponseHeaders,\n );\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n if (typeof resp.text === 'function') {\n // Response.text() is not implemented on some platforms\n // The response must be cloned to prevent reading (and locking) the original stream.\n // This must be done before other handlers touch the response.\n body = resp.clone().text(); //returns a Promise\n }\n }\n if (headers || body) {\n metadata.response = {};\n if (body) {\n // Test to ensure body is a Promise, which it should always be.\n if (typeof body.then === 'function') {\n body.then(function (text) {\n if (\n text &&\n self.isJsonContentType(metadata.response_content_type)\n ) {\n metadata.response.body = self.scrubJson(text);\n } else {\n metadata.response.body = text;\n }\n });\n } else {\n metadata.response.body = body;\n }\n }\n if (headers) {\n metadata.response.headers = headers;\n }\n }\n self.errorOnHttpStatus(metadata);\n return resp;\n });\n };\n },\n this.replacements,\n 'network',\n );\n }\n }\n\n captureNetwork(metadata, subtype, rollbarUUID) {\n if (\n metadata.request &&\n this.isJsonContentType(metadata.request_content_type)\n ) {\n metadata.request = this.scrubJson(metadata.request);\n }\n return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID);\n }\n\n isJsonContentType(contentType) {\n return contentType &&\n _.isType(contentType, 'string') &&\n contentType.toLowerCase().includes('json')\n ? true\n : false;\n }\n\n addOtelNetworkResponse(event, endTimeMs, statusCode) {\n if (event.otelAttributes) {\n event.otelAttributes['response.timeUnixNano'] = (\n endTimeMs * 1e6\n ).toString();\n event.otelAttributes.statusCode = statusCode;\n }\n }\n\n scrubJson(json) {\n return JSON.stringify(scrub(JSON.parse(json), this.options.scrubFields));\n }\n\n fetchHeaders(inHeaders, headersConfig) {\n const outHeaders = {};\n try {\n if (headersConfig === true) {\n if (typeof inHeaders.entries === 'function') {\n // Headers.entries() is not implemented in IE\n const allHeaders = inHeaders.entries();\n let currentHeader = allHeaders.next();\n while (!currentHeader.done) {\n outHeaders[currentHeader.value[0]] = currentHeader.value[1];\n currentHeader = allHeaders.next();\n }\n }\n } else {\n for (const h of headersConfig) {\n outHeaders[h] = inHeaders.get(h);\n }\n }\n } catch (_e) {\n /* ignore probable IE errors */\n }\n return outHeaders;\n }\n\n trackHttpErrors() {\n return (\n this.autoInstrument.networkErrorOnHttp5xx ||\n this.autoInstrument.networkErrorOnHttp4xx ||\n this.autoInstrument.networkErrorOnHttp0\n );\n }\n\n errorOnHttpStatus(metadata) {\n const status = metadata.status_code;\n\n if (\n (status >= 500 && this.autoInstrument.networkErrorOnHttp5xx) ||\n (status >= 400 && this.autoInstrument.networkErrorOnHttp4xx) ||\n (status === 0 && this.autoInstrument.networkErrorOnHttp0)\n ) {\n const error = new Error('HTTP request failed with Status ' + status);\n error.stack = metadata.stack;\n this.rollbar.error(error, { skipFrames: 1 });\n }\n }\n\n deinstrumentConsole() {\n let b;\n while (this.replacements['log'].length) {\n b = this.replacements['log'].shift();\n this._window.console[b[0]] = b[1];\n }\n }\n\n instrumentConsole() {\n if (!this._window?.console?.log) {\n return;\n }\n\n const self = this;\n const c = this._window.console;\n\n function wrapConsole(method) {\n // eslint-disable-next-line strict\n 'use strict'; // See https://github.com/rollbar/rollbar.js/pull/778\n\n const orig = c[method];\n const origConsole = c;\n const level = method === 'warn' ? 'warning' : method;\n c[method] = function () {\n const args = Array.prototype.slice.call(arguments);\n const message = _.formatArgsAsString(args);\n self.telemeter.captureLog(message, level, null, _.now());\n if (orig) {\n Function.prototype.apply.call(orig, origConsole, args);\n }\n };\n self.replacements['log'].push([method, orig]);\n }\n const methods = ['debug', 'info', 'warn', 'error', 'log'];\n try {\n for (const m of methods) {\n wrapConsole(m);\n }\n } catch (e) {\n this.diagnostic.instrumentConsole = { error: e.message };\n }\n }\n\n deinstrumentDom() {\n this.removeListeners('dom');\n }\n\n instrumentDom() {\n this.addListener(\n 'dom',\n this._window,\n ['click', 'dblclick', 'contextmenu'],\n (e) => this.handleEvent('click', e),\n );\n this.addListener(\n 'dom',\n this._window,\n ['dragstart', 'dragend', 'dragenter', 'dragleave', 'drop'],\n (e) => this.handleEvent('dragdrop', e),\n );\n this.addListener('dom', this._window, ['blur', 'focus'], (e) =>\n this.handleEvent('focus', e),\n );\n this.addListener('dom', this._window, ['submit', 'invalid'], (e) =>\n this.handleEvent('form', e),\n );\n this.addListener('dom', this._window, ['input', 'change'], (e) =>\n this.handleEvent('input', e),\n );\n this.addListener('dom', this._window, ['resize'], (e) =>\n this.handleEvent('resize', e),\n );\n this.addListener('dom', this._document, ['DOMContentLoaded'], (e) =>\n this.handleEvent('contentLoaded', e),\n );\n }\n\n handleEvent(name, evt) {\n try {\n return {\n click: this.handleClick,\n dragdrop: this.handleDrag,\n focus: this.handleFocus,\n form: this.handleForm,\n input: this.handleInput,\n resize: this.handleResize,\n contentLoaded: this.handleContentLoaded,\n }[name].call(this, evt);\n } catch (exc) {\n logger.log(`${name} handler error`, evt, exc, exc.stack);\n }\n }\n\n handleContentLoaded(_evt) {\n this.rollbar.triggerReplay({\n type: 'navigation',\n path: new URL(this._location.href).pathname,\n });\n }\n\n handleClick(evt) {\n const tagName = evt.target?.tagName.toLowerCase();\n if (['input', 'select', 'textarea'].includes(tagName)) return;\n\n this.telemeter.captureClick({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n timestamp: _.now(),\n });\n }\n\n handleFocus(evt) {\n const type = evt.type;\n const element = evt.target?.window\n ? 'window'\n : domUtil.elementString(evt.target);\n\n this.telemeter.captureFocus({\n type: type,\n isSynthetic: !evt.isTrusted,\n element,\n timestamp: _.now(),\n });\n }\n\n handleForm(_evt) {\n // TODO: implement form event handling\n //const type = evt.type;\n //const elementString = evt.target?.window\n // ? 'window'\n // : domUtil.elementString(evt.target);\n }\n\n handleResize(evt) {\n const textZoomRatio = window.screen.width / window.innerWidth;\n\n this.telemeter.captureResize({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n width: window.innerWidth,\n height: window.innerHeight,\n textZoomRatio: textZoomRatio,\n timestamp: _.now(),\n });\n }\n\n handleDrag(evt) {\n const type = evt.type;\n let kinds, mediaTypes, dropEffect, effectAllowed;\n\n if (type === 'drop') {\n kinds = [];\n mediaTypes = [];\n const objs = [...evt.dataTransfer.files, ...evt.dataTransfer.items];\n for (const o of objs) {\n if (o.kind && o.type) {\n kinds.push(o.kind);\n mediaTypes.push(o.type);\n }\n }\n }\n if (['drop', 'dragstart'].includes(type)) {\n dropEffect = evt.dataTransfer?.dropEffect;\n effectAllowed = evt.dataTransfer?.effectAllowed;\n }\n\n this.telemeter.captureDragDrop({\n type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n dropEffect: dropEffect,\n effectAllowed: effectAllowed,\n kinds: JSON.stringify(kinds),\n mediaTypes: JSON.stringify(mediaTypes),\n timestamp: _.now(),\n });\n }\n\n /*\n * Applies Rollbar telemetry scrubbing options to the dom input value.\n * When replay options are present, applies those as well.\n */\n scrubInputValue(value, element, tagName, inputType) {\n const mask = '******';\n\n if (inputType === 'password') {\n return mask;\n }\n\n if (this.scrubTelemetryInputs) {\n return mask;\n } else {\n const description = domUtil.describeElement(element);\n if (this.telemetryScrubber) {\n if (this.telemetryScrubber(description)) {\n return mask;\n }\n } else if (this.defaultValueScrubber(description)) {\n return mask;\n }\n }\n\n // Apply replay options regardless of other scrubbing\n if (\n domUtil.isMatchingElement(element, this.scrubClasses, this.scrubSelectors)\n ) {\n return mask;\n }\n\n // This check is last since maskInputFn returns a modified value rather\n // than a boolean, which would cause an early return even if the value\n // was not scrubbed.\n if (\n this.maskInputOptions[tagName.toLowerCase()] ||\n this.maskInputOptions[inputType]\n ) {\n if (this.maskInputFn) {\n return this.maskInputFn(value, element);\n } else {\n return mask;\n }\n }\n\n return value;\n }\n\n /*\n * Uses the `input` event for everything except radio and checkbox inputs.\n * For those, it uses the `change` event.\n */\n handleInput(evt) {\n const type = evt.type;\n const tagName = evt.target?.tagName.toLowerCase();\n let value = evt.target?.value;\n let inputType = evt.target?.attributes?.type?.value || evt.target?.type;\n\n if (value !== undefined) {\n value = this.scrubInputValue(value, evt.target, tagName, inputType);\n }\n\n switch (type) {\n case 'input':\n if (['radio', 'checkbox'].includes(inputType)) return;\n if (['select', 'textarea'].includes(tagName)) {\n inputType = tagName;\n }\n break;\n\n case 'change':\n if (!['radio', 'checkbox'].includes(inputType)) return;\n if (inputType === 'checkbox') {\n value = evt.target?.checked;\n }\n break;\n }\n\n this.telemeter.captureInput({\n type: inputType,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n value,\n timestamp: _.now(),\n });\n }\n\n deinstrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n restore(this.replacements, 'navigation');\n }\n\n instrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n const self = this;\n replace(\n this._window,\n 'onpopstate',\n function (orig) {\n return function () {\n const current = self._location.href;\n self.handleUrlChange(self._lastHref, current);\n if (orig) {\n orig.apply(this, arguments);\n }\n };\n },\n this.replacements,\n 'navigation',\n );\n\n replace(\n this._window.history,\n 'pushState',\n function (orig) {\n return function () {\n const url = arguments.length > 2 ? arguments[2] : undefined;\n if (url) {\n self.handleUrlChange(self._lastHref, String(url));\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'navigation',\n );\n }\n\n handleUrlChange(from, to) {\n const parsedHref = urlparser.parse(this._location.href);\n const parsedTo = urlparser.parse(to);\n const parsedFrom = urlparser.parse(from);\n this._lastHref = to;\n if (\n parsedHref.protocol === parsedTo.protocol &&\n parsedHref.host === parsedTo.host\n ) {\n to = parsedTo.path + (parsedTo.hash || '');\n }\n if (\n parsedHref.protocol === parsedFrom.protocol &&\n parsedHref.host === parsedFrom.host\n ) {\n from = parsedFrom.path + (parsedFrom.hash || '');\n }\n this.telemeter.captureNavigation(from, to, null, _.now());\n this.rollbar.triggerReplay({\n type: 'navigation',\n path: to,\n });\n }\n\n deinstrumentConnectivity = function () {\n this.removeListeners('connectivity');\n };\n\n instrumentConnectivity() {\n const self = this;\n this.addListener(\n 'connectivity',\n this._window,\n ['online', 'offline'],\n (evt) => self.handleConnectivity(evt),\n );\n }\n\n handleConnectivity(evt) {\n const type = evt.type;\n\n this.telemeter.captureConnectivityChange({\n type,\n isSynthetic: !evt.isTrusted,\n timestamp: _.now(),\n });\n }\n\n handleCspEvent(cspEvent) {\n let message =\n 'Security Policy Violation: ' +\n 'blockedURI: ' +\n cspEvent.blockedURI +\n ', ' +\n 'violatedDirective: ' +\n cspEvent.violatedDirective +\n ', ' +\n 'effectiveDirective: ' +\n cspEvent.effectiveDirective +\n ', ';\n\n if (cspEvent.sourceFile) {\n message +=\n 'location: ' +\n cspEvent.sourceFile +\n ', ' +\n 'line: ' +\n cspEvent.lineNumber +\n ', ' +\n 'col: ' +\n cspEvent.columnNumber +\n ', ';\n }\n\n message += 'originalPolicy: ' + cspEvent.originalPolicy;\n\n this.telemeter.captureLog(message, 'error', null, _.now());\n this.handleCspError(message);\n }\n\n handleCspError(message) {\n if (this.autoInstrument.errorOnContentSecurityPolicy) {\n this.rollbar.error(message);\n }\n }\n\n deinstrumentContentSecurityPolicy() {\n this.removeListeners('contentsecuritypolicy');\n }\n\n instrumentContentSecurityPolicy() {\n if (!('addEventListener' in this._document)) {\n return;\n }\n\n const cspHandler = this.handleCspEvent.bind(this);\n this.addListener(\n 'contentsecuritypolicy',\n this._document,\n ['securitypolicyviolation'],\n cspHandler,\n );\n }\n\n addListener(section, obj, types, handler) {\n if (obj.addEventListener) {\n for (const t of types) {\n const options = { capture: true, passive: true };\n obj.addEventListener(t, handler, options, true);\n this.eventRemovers[section].push(function () {\n obj.removeEventListener(t, handler, options);\n });\n }\n }\n }\n\n removeListeners(section) {\n let r;\n while (this.eventRemovers[section].length) {\n r = this.eventRemovers[section].shift();\n r();\n }\n }\n}\n\nfunction _isUrlObject(input) {\n return typeof URL !== 'undefined' && input instanceof URL;\n}\n\nexport default Instrumenter;\n","import { hasOwn } from '../utility.js';\n\nfunction wrapGlobals(window, handler, shim) {\n if (!window) {\n return;\n }\n // Adapted from https://github.com/bugsnag/bugsnag-js\n var globals =\n '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'.split(\n ',',\n );\n var i, global;\n for (i = 0; i < globals.length; ++i) {\n global = globals[i];\n\n if (window[global] && window[global].prototype) {\n _extendListenerPrototype(handler, window[global].prototype, shim);\n }\n }\n}\n\nfunction _extendListenerPrototype(handler, prototype, shim) {\n if (hasOwn(prototype, 'addEventListener')) {\n var oldAddEventListener = prototype.addEventListener;\n while (\n oldAddEventListener._rollbarOldAdd &&\n oldAddEventListener.belongsToShim\n ) {\n oldAddEventListener = oldAddEventListener._rollbarOldAdd;\n }\n var addFn = function (event, callback, bubble) {\n oldAddEventListener.call(this, event, handler.wrap(callback), bubble);\n };\n addFn._rollbarOldAdd = oldAddEventListener;\n addFn.belongsToShim = shim;\n prototype.addEventListener = addFn;\n\n var oldRemoveEventListener = prototype.removeEventListener;\n while (\n oldRemoveEventListener._rollbarOldRemove &&\n oldRemoveEventListener.belongsToShim\n ) {\n oldRemoveEventListener = oldRemoveEventListener._rollbarOldRemove;\n }\n var removeFn = function (event, callback, bubble) {\n oldRemoveEventListener.call(\n this,\n event,\n (callback && callback._rollbar_wrapped) || callback,\n bubble,\n );\n };\n removeFn._rollbarOldRemove = oldRemoveEventListener;\n removeFn.belongsToShim = shim;\n prototype.removeEventListener = removeFn;\n }\n}\n\nexport default wrapGlobals;\n","import scrub from '../scrub.js';\nimport Telemeter from '../telemetry.js';\nimport Tracing from '../tracing/tracing.js';\nimport truncation from '../truncation.js';\n\nimport Rollbar from './core.js';\nimport Instrumenter from './telemetry.js';\nimport wrapGlobals from './wrapGlobals.js';\n\nRollbar.setComponents({\n telemeter: Telemeter,\n instrumenter: Instrumenter,\n wrapGlobals: wrapGlobals,\n scrub: scrub,\n truncation: truncation,\n tracing: Tracing,\n});\n\nexport default Rollbar;\n","import rollbar from '../rollbar.js';\n\nvar options = (typeof window !== 'undefined') && window._rollbarConfig;\nvar alias = options && options.globalAlias || 'Rollbar';\nvar shimRunning = (typeof window !== 'undefined') && window[alias] && typeof window[alias].shimId === 'function' && window[alias].shimId() !== undefined;\n\nif ((typeof window !== 'undefined') && !window._rollbarStartTime) {\n window._rollbarStartTime = (new Date()).getTime();\n}\n\nif (!shimRunning && options) {\n var Rollbar = new rollbar(options);\n window[alias] = Rollbar;\n} else if (typeof window !== 'undefined') {\n window.rollbar = rollbar;\n window._rollbarDidLoad = true;\n} else if (typeof self !== 'undefined') {\n self.rollbar = rollbar;\n self._rollbarDidLoad = true;\n}\n\nexport default rollbar;\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","isType","x","t","typeName","name","_typeof","Error","toString","match","toLowerCase","isFunction","f","isObject","hasOwn","isFiniteNumber","n","Number","isFinite","isError","e","redact","LEVELS","debug","info","warning","error","critical","sanitizeUrl","url","baseUrlParts","str","parseUriOptions","m","parser","strictMode","exec","uri","i","l","length","q","replace","$0","$1","$2","parseUri","anchor","source","query","strict","loose","formatUrl","u","protocol","port","hostname","result","path","stringify","backup","JSON","jsonError","backupError","jsonParse","s","parse","makeUnhandledStackInfo","message","lineno","colno","mode","backupMessage","errorParser","location","line","column","func","guessFunctionName","context","gatherContext","href","document","useragent","window","navigator","userAgent","String","stack","wrapCallback","logger","err","resp","nonCircularClone","clone","seen","newSeen","includes","slice","push","createItem","args","notifier","requestKeys","lambdaContext","custom","callback","request","arg","extraArgs","argTypes","typ","DOMException","j","len","undefined","d","item","timestamp","now","diagnostic","uuid","c","r","Math","random","floor","data","level","skipFrames","setCustomItemKeys","_originalArgs","original_arg_types","TELEMETRY_TYPES","TELEMETRY_LEVELS","arrayIncludes","arr","val","_step2","_iterator2","_createForOfIteratorHelper","done","addItemAttributes","itemData","attributes","_step3","_iterator3","a","keys","split","_e","set","setPrototypeOf","temp","replacement","Date","handleOptions","current","input","payload","merge","options","hostWhiteList","hostSafeList","log","hostBlackList","hostBlockList","updateDeprecatedOptions","overwriteScrubFields","scrubFields","concat","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","constructor","src","copy","create","arguments","k","v","seenIndex","isObj","_","isArray","mapped","indexOf","same","scrubPath","last","_step4","_iterator4","entries","_step4$value","_slicedToArray","index","scrubPaths","_step","_iterator","paramRes","_step5","ret","_iterator5","pat","RegExp","_getScrubFieldRegexs","queryRes","_step6","_iterator6","_getScrubQueryParamRegexs","redactQueryParam","dummy0","paramPart","traverse","scrubber","tmpV","test","valScrubber","regex","paramScrubber","MAX_EVENTS","fromMillis","millis","trunc","round","Telemeter","tracing","_this$tracing","_classCallCheck","this","queue","maxTelemetryEvents","maxQueueSize","max","min","telemetrySpan","startSpan","oldOptions","newMaxEvents","deleteCount","splice","events","Array","filterTelemetry","filter","type","map","_ref","otelAttributes","event","_objectWithoutProperties","_excluded","end","metadata","rollbarUUID","getLevel","timestamp_ms","body","_exc","capture","_this$telemetrySpan","addEvent","_this$telemetrySpan2","_objectSpread","subtype","requestData","_metadata$response","_metadata$response2","_this$telemetrySpan3","levelFromStatus","status_code","endTimeNano","end_time_ms","method","statusCode","request_headers","response","headers","requestBody","responseBody","start_time_ms","element","checked","_ref2","_this$telemetrySpan4","isSynthetic","endTimeUnixNano","_getRepeatedEvent","_updateRepeatedEvent","_ref3","_this$telemetrySpan5","lastEvent","_lastEvent","target","duration","height","width","textZoomRatio","count","rate","list","_ref4","_this$telemetrySpan6","_ref5","_this$telemetrySpan7","_ref6","_this$telemetrySpan8","dropEffect","effectAllowed","kinds","mediaTypes","from","to","_this$telemetrySpan9","ts","getTime","_ref7","_this$telemetrySpan0","includeItemsInTelemetry","captureError","captureLog","shift","manual","Context","parentContext","_currentContext","Map","self","delete","ROOT_CONTEXT","ContextManager","currentContext","previousContext","fn","thisArg","enterContext","_len","_key","apply","exitContext","add","b","toMillis","hrtime","toNanos","performance","timeOrigin","isHrTime","SpanExporter","api","spans","_resultCallback","spanExportQueue","_toConsumableArray","_this","resourceSpans","resource","scopeMap","span","scopeKey","instrumentationScope","version","has","scope","_transformSpan","_transformResource","scopeSpans","values","scopeData","_transformInstrumentationScope","postSpans","_this2","transformAttributes","_transformAnyValue","traceId","spanContext","spanId","parentSpanId","kind","startTimeUnixNano","startTime","endTime","timeUnixNano","time","_this3","_this4","attr","_this5","stringValue","isInteger","intValue","doubleValue","boolValue","arrayValue","kvlistValue","gen","randomBytes","Uint8Array","crypto","getRandomValues","byte","padStart","join","SESSION_KEY","Session","_defineProperty","session","_attributes","attrs","getSession","createSession","initSessionAttributes","serializedSession","sessionStorage","getItem","_unused","id","createdAt","setSession","sessionString","setItem","_unused2","user","setAttributes","email","username","_navigator$userAgentD","_navigator$userAgentD2","_navigator$userAgentD3","userAgentData","brands","language","mobile","platform","levels","warn","disable","_len2","_key2","_len3","_key3","_len4","_key4","_len5","_key5","init","logLevel","unshift","console","SpanProcessor","exporter","pendingSpans","transforms","userTransform","bind","transformFn","transformSpan","transform","_parentContext","applyTransforms","export","Span","usePerformance","initReadableSpan","spanProcessor","onStart","_options$session","status","code","links","ended","droppedAttributesCount","droppedEventsCount","droppedLinksCount","_i","_Object$entries","_Object$entries$_i","setAttribute","onEnd","Tracer","_this$tracing$resourc","_options$resource","_this$tracing$session","contextManager","active","parentSpan","getSpan","parentSpanContext","traceState","traceFlags","SPAN_KEY","for","Tracing","gWindow","createTracer","_this$options$payload","_this$options$payload2","environment","bytes","tracer","addTransform","getValue","setValue","_this$contextManager","with","setSpan","raw","jsonBackup","selectFrames","frames","range","truncateFrames","trace_chain","trace","maybeTruncateValue","truncateStrings","truncator","truncateTraceData","traceData","exception","description","minBody","chain","_step2$value","needsTruncation","maxSize","string","charCodeAt","truncate","strategy","results","strategies","buildPayload","contextResult","substr","getTransportFromOptions","defaults","search","timeout","transport","defaultTransport","fetch","XMLHttpRequest","detectTransport","proxy","endpoint","opts","pathname","transportOptions","transportAPI","host","iterator","Generator","_regeneratorDefine2","p","y","G","TypeError","return","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","__proto__","displayName","_regenerator","w","_invoke","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_defineProperties","_toPropertyKey","toPrimitive","_toPrimitive","defaultOptions","OTLPDefaultOptions","Api","urllib","truncation","accessToken","_getTransport","OTLPTransportOptions","_getOTLPTransport","reject","post","helpers","setTimeout","_callee","_args","_context","_postPromise","_postSpans","_next","_throw","_x","stringifyResult","jsonPayload","postJsonPayload","_options$tracing","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","stacktrace","lineRE","lines","file","applySlice","parseOpera9","filtered","argsRaw","tokens","locationParts","extractLocation","pop","functionCall","functionName","function","col","parseOpera11","parseOpera10","parseOpera","parseV8OrIeString","parseV8OrIE","parseFFOrSafariString","parseFFOrSafari","allowEmpty","urlLike","parts","sanitizedLine","functionNameRegex","matches","stackframesLiteToStackframes","liteStackframes","liteStackframe","fileName","lineNumber","columnNumber","ERR_CLASS_REGEXP","Frame","stackFrame","_stackFrame","Stack","skip","parserStack","parse$1","parseErrorStack","getStack","_mostSpecificErrorName","rawStack","rawException","constructorName","guessErrorClass","errMsg","errClassMatch","errClass","nested","cause","traceChain","checkLevel","settings","levelVal","reportLevel","matchFrames","block","filename","listLength","frameLength","urlIsOnAList","safeOrBlock","traces","tracesLength","listName","messageIsIgnored","ignoredMessages","rIgnoredMessage","messages","messagesFromItem","Notifier","_this$queue","configure","enabled","addPendingItem","originalError","_applyTransforms","removePendingItem","addItem","transformIndex","transformsLength","next","Queue","rateLimiter","replay","predicates","pendingItems","pendingRequests","retryQueue","retryHandle","waitCallback","waitIntervalID","_this$api","predicate","idx","originalItem","predicateResult","_applyPredicates","stop","_maybeLog","transmit","replayId","_makeApiRequest","_dequeuePendingRequest","sendOrDiscardReplay","_this$replay","discard","_maybeCallWait","clearInterval","setInterval","rateLimitResponse","shouldSend","postItem","_maybeRetry","shouldRetry","retryInterval","RETRIABLE_ERRORS","maxRetries","retries","_retryApiRequest","retryObject","verbose","RateLimiter","counter","perMinCounter","platformOptions","configureGlobal","_createClass","maxItems","itemsPerMinute","globalSettings","elapsedTime","globalRateLimit","globalRateLimitPerMin","checkRate","shouldSendValue","underGlobalLimit","perMinute","limit","ignoreRateLimit","limitPerMin","errorResult","msg","extra","framework","rateLimitPayload","Rollbar","telemeter","setPlatformOptions","validateTracer","_configuredOptions","setStackTraceLimit","lastError","lastErrorHash","stackTraceLimit","global","payloadData","_defaultLogLevel","_log","wait","captureEvent","captureDomContentLoaded","captureLoad","buildJsonPayload","sendJsonPayload","defaultLevel","ignoreDuplicateErrors","_sameAsLastError","_addItemAttributes","_addTracingInfo","_captureRollbarItem","telemetryEvents","copyEvents","_this$tracing2","sessionId","_isUncaught","itemHash","generateItemHash","toSpanId","toTraceId","validateSpan","setTag","opentracingSpanId","opentracingTraceId","opentracing_span_id","opentracing_trace_id","itemToPayload","addPayloadOptions","payloadOptions","addTelemetryData","addMessageWithError","tracePath","newItem","promisedItem","addConfigToPayload","sendConfig","addFunctionOption","addConfiguredOptions","configuredOptions","configured_options","addDiagnosticKeys","client","is_anonymous","is_uncaught","raw_error","constructor_name","failed","checkIgnore","handleDomException","handleItemWithError","stackInfo","_savedStackTrace","addErrorContext","errors","contextAdded","rollbarContext","error_context","e2","ensureItemHasSomethingToSay","addBaseInfo","server","addBody","traceChainLength","buildTrace","addBodyTraceChain","stackFromItem","guess","className","errorClass","addBodyMessage","addBodyTrace","_unhandledStackInfo","class","frame","pre","contextLength","mid","sendFrameUrl","endsWith","reverse","controller","timeoutId","AbortController","abort","signal","clearTimeout","respHeaders","json","catch","_newRetriableError","requestFactory","xmlhttp","factories","ActiveXObject","numFactories","_createXMLHTTPObject","onreadystatechange","readyState","parseResponse","responseText","_isSuccess","getResponseHeader","_isNormalFailure","ex","exc","open","setRequestHeader","h","send","_e1","XDomainRequest","substring","xdomainrequest","onprogress","ontimeout","onerror","onload","Transport","params","access_token","paramsArray","sort","qs","_makeZoneRequest","rootZone","Zone","root","run","_makeRequest","RollbarProxy","_msg","_proxyRequest","makeFetchRequest","makeXhrRequest","auth","hash","parseInt","pathParts","_instance","components","Instrumenter","instrumenter","wrapGlobals","scrub","Replay","API","_gWindow","initSession","replayOptions","autoStart","recorder","start","Client","gDocument","isChrome","chrome","runtime","anonymousErrorsPending","rollbar","requestInfo","query_string","remoteString","captureIp","user_ip","nav","scr","screen","runtime_ms","_rollbarStartTime","javascript","browser","cookie_enabled","cookieEnabled","cur","plugins","navPlugins","sharedTransforms","scrubFn","addTransformsToNotifier","addPredicate","sharedPredicates","isUncaught","Boolean","onSendCallback","addPredicatesToQueue","setupUnhandledCapture","instrument","setSessionAttributesFromOptions","_this$instrumenter","_createItem","triggerReplay","unhandledExceptionsInitialized","captureUncaught","handleUncaughtExceptions","handler","shim","oldOnError","_rollbarOldOnError","handleAnonymousErrors","old","_rollbarWrappedError","_rollbarContext","handleUncaughtException","_rollbarWindowOnError","globals","wrapGlobalEventHandlers","unhandledRejectionsInitialized","captureUnhandledRejections","handleUnhandledRejections","_rollbarURH","belongsToShim","removeEventListener","rejectionHandler","evt","reason","promise","detail","handleUnhandledRejection","addEventListener","inspectAnonymousErrors","uncaughtErrorLevel","prepareStackTrace","_stack","_isAnonymous","reasonResult","_before","ctxFn","_isWrap","_rollbar_wrapped","_wrappedSource","setUser","_this$tracing3","_options$payload","_options$client","_options$payload2","_options$payload3","_options$payload4","person","setSessionUser","code_version","codeVersion","setSessionAttributes","maybeCallback","_getFirstFunction","_Rollbar","callInstance","_len6","_key6","_len7","_key7","_len8","_key8","_len9","_key9","_len0","_key0","_len1","_key1","_len10","_key10","_len11","_key11","_len12","_key12","browserDefaults","triggerDefaults","samplingRatio","preDuration","postDuration","triggers","logErrors","logEmits","inlineStylesheet","inlineImages","collectFonts","maskInputOptions","password","tel","text","color","date","month","number","week","maskAllInputs","blockClass","maskTextClass","ignoreClass","slimDOMOptions","script","comment","headFavicon","headWhitespace","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","normalizeName","FetchHeaders","forEach","append","header","getOwnPropertyNames","normalizeValue","oldValue","items","iteratorFor","Headers","replacements","orig","elementString","elem","nextStr","totalLength","out","descriptionToString","separator","MAX_LENGTH","elementArrayToString","nextDescription","describeElement","tagName","parentNode","treeToArray","desc","classes","attribute","getAttribute","network","networkResponseHeaders","networkResponseBody","networkRequestHeaders","networkRequestBody","networkErrorOnHttp5xx","networkErrorOnHttp4xx","networkErrorOnHttp0","dom","navigation","connectivity","contentSecurityPolicy","errorOnContentSecurityPolicy","restore","defaultValueScrubber","patterns","field","nameFromDescription","_patterns","_window","_document","removeListeners","autoInstrument","configureScrubbing","eventRemovers","contentsecuritypolicy","_location","_lastHref","_options$scrubTelemet","_options$replay","_options$replay2","_options$replay3","_options$replay4","_options$replay5","_options$replay6","_options$replay7","_options$replay8","_options$replay9","scrubTelemetryInputs","telemetryScrubber","maskInputFn","scrubClasses","scrubSelectors","blockSelector","ignoreSelector","maskTextSelector","oldSettings","deinstrumentNetwork","instrumentNetwork","deinstrumentConsole","instrumentConsole","deinstrumentDom","instrumentDom","deinstrumentNavigation","instrumentNavigation","deinstrumentConnectivity","instrumentConnectivity","deinstrumentContentSecurityPolicy","instrumentContentSecurityPolicy","wrapProp","xhr","wrap","xhrp","isUrlObject","_isUrlObject","__rollbar_xhr","request_content_type","onreadystatechangeHandler","__rollbar_event","captureNetwork","response_content_type","headersConfig","allHeaders","getAllResponseHeaders","trim","isJsonContentType","scrubJson","addOtelNetworkResponse","errorOnHttpStatus","trackHttpErrors","_fn","_t","reqHeaders","fetchHeaders","telemetryEvent","contentType","endTimeMs","inHeaders","outHeaders","currentHeader","_this$_window","_i2","_methods","wrapConsole","origConsole","Function","addListener","handleEvent","click","handleClick","dragdrop","handleDrag","focus","handleFocus","form","handleForm","handleInput","resize","handleResize","contentLoaded","handleContentLoaded","_evt","URL","_evt$target","captureClick","isTrusted","domUtil","_evt$target2","captureFocus","innerWidth","captureResize","innerHeight","_evt$dataTransfer","_evt$dataTransfer2","dataTransfer","files","captureDragDrop","inputType","mask","selectors","cls","classList","contains","sel","_evt$target3","_evt$target4","_evt$target5","_evt$target6","scrubInputValue","_evt$target7","captureInput","app","history","pushState","handleUrlChange","parsedHref","urlparser","parsedTo","parsedFrom","captureNavigation","handleConnectivity","captureConnectivityChange","cspEvent","blockedURI","violatedDirective","effectiveDirective","sourceFile","originalPolicy","handleCspError","cspHandler","handleCspEvent","section","types","_step7","_iterator7","_loop","passive","_extendListenerPrototype","oldAddEventListener","_rollbarOldAdd","addFn","bubble","oldRemoveEventListener","_rollbarOldRemove","removeFn","setComponents","_rollbarConfig","alias","globalAlias","shimRunning","shimId","_rollbarDidLoad"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/rollbar.noconflict.umd.js b/dist/rollbar.noconflict.umd.js index 42d641008..403ccf7f6 100644 --- a/dist/rollbar.noconflict.umd.js +++ b/dist/rollbar.noconflict.umd.js @@ -54,69 +54,14 @@ __webpack_require__.d(__webpack_exports__, { var url_namespaceObject = {}; __webpack_require__.r(url_namespaceObject); __webpack_require__.d(url_namespaceObject, { - parse: function() { return parse; } + parse: function() { return url_parse; } }); -;// ./src/merge.js -var hasOwn = Object.prototype.hasOwnProperty; -var toStr = Object.prototype.toString; -var isPlainObject = function isPlainObject(obj) { - if (!obj || toStr.call(obj) !== '[object Object]') { - return false; - } - var hasOwnConstructor = hasOwn.call(obj, 'constructor'); - var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); - // Not own constructor property must be Object - if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - var key; - for (key in obj) { - /**/ - } - return typeof key === 'undefined' || hasOwn.call(obj, key); -}; -function merge() { - var i, - src, - copy, - clone, - name, - result = Object.create(null), - // no prototype pollution on Object - current = null, - length = arguments.length; - for (i = 0; i < length; i++) { - current = arguments[i]; - if (current == null) { - continue; - } - for (name in current) { - src = result[name]; - copy = current[name]; - if (result !== copy) { - if (copy && isPlainObject(copy)) { - clone = src && isPlainObject(src) ? src : {}; - result[name] = merge(clone, copy); - } else if (typeof copy !== 'undefined') { - result[name] = copy; - } - } - } - } - return result; -} -/* harmony default export */ var src_merge = (merge); ;// ./src/utility.js function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } - - /* * isType - Given a Javascript value and a string, returns true if the type of the value matches the * given string. @@ -183,8 +128,18 @@ function isNativeFunction(f) { * @returns true is value is an object function is an object) */ function isObject(value) { - var type = _typeof(value); - return value != null && (type == 'object' || type == 'function'); + return value != null && (_typeof(value) == 'object' || typeof value == 'function'); +} + +/* hasOwn - safe helper around Object.hasOwnProperty */ +function hasOwn(obj, prop) { + if (obj == null) { + return false; + } + if (Object.hasOwn) { + return Object.hasOwn(obj, prop); + } + return Object.prototype.hasOwnProperty.call(obj, prop); } /* isString - Checks if the argument is a string @@ -206,16 +161,6 @@ function isFiniteNumber(n) { return Number.isFinite(n); } -/* - * isDefined - a convenience function for checking if a value is not equal to undefined - * - * @param u - any value - * @returns true if u is anything other than undefined - */ -function isDefined(u) { - return !isType(u, 'undefined'); -} - /* * isIterable - convenience function for checking if a value can be iterated, essentially * whether it is an object or an array. @@ -262,7 +207,7 @@ function redact() { // from http://stackoverflow.com/a/8809472/1138191 function uuid4() { - var d = utility_now(); + var d = now(); var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = (d + Math.random() * 16) % 16 | 0; d = Math.floor(d / 16); @@ -312,8 +257,8 @@ var parseUriOptions = { parser: /(?:^|&)([^&=]*)=?([^&]*)/g }, parser: { - strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, - loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ + strict: /^(?:([^:/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\d*))?))?((((?:[^?#/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, + loose: /^(?:(?![^:@]+:[^:@/]*@)([^:/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#/]*\.[^?#/.]+(?:[?#]|$)))*\/?)?([^?#/]*))(?:\?([^#]*))?(?:#(.*))?)/ } }; function parseUri(str) { @@ -513,7 +458,11 @@ function createItem(args, logger, notifier, requestKeys, lambdaContext) { case 'undefined': break; case 'string': - message ? extraArgs.push(arg) : message = arg; + if (message) { + extraArgs.push(arg); + } else { + message = arg; + } break; case 'function': callback = wrapCallback(logger, arg); @@ -525,12 +474,20 @@ function createItem(args, logger, notifier, requestKeys, lambdaContext) { case 'domexception': case 'exception': // Firefox Exception type - err ? extraArgs.push(arg) : err = arg; + if (err) { + extraArgs.push(arg); + } else { + err = arg; + } break; case 'object': case 'array': if (arg instanceof Error || typeof DOMException !== 'undefined' && arg instanceof DOMException) { - err ? extraArgs.push(arg) : err = arg; + if (err) { + extraArgs.push(arg); + } else { + err = arg; + } break; } if (requestKeys && typ === 'object' && !request) { @@ -544,11 +501,19 @@ function createItem(args, logger, notifier, requestKeys, lambdaContext) { break; } } - custom ? extraArgs.push(arg) : custom = arg; + if (custom) { + extraArgs.push(arg); + } else { + custom = arg; + } break; default: if (arg instanceof Error || typeof DOMException !== 'undefined' && arg instanceof DOMException) { - err ? extraArgs.push(arg) : err = arg; + if (err) { + extraArgs.push(arg); + } else { + err = arg; + } break; } extraArgs.push(arg); @@ -565,7 +530,7 @@ function createItem(args, logger, notifier, requestKeys, lambdaContext) { message: message, err: err, custom: custom, - timestamp: utility_now(), + timestamp: now(), callback: callback, notifier: notifier, diagnostic: diagnostic, @@ -597,14 +562,23 @@ function addErrorContext(item, errors) { var custom = item.data.custom || {}; var contextAdded = false; try { - for (var i = 0; i < errors.length; ++i) { - if (errors[i].hasOwnProperty('rollbarContext')) { - custom = src_merge(custom, nonCircularClone(errors[i].rollbarContext)); - contextAdded = true; + var _iterator = _createForOfIteratorHelper(errors), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var error = _step.value; + if (hasOwn(error, 'rollbarContext')) { + custom = merge(custom, nonCircularClone(error.rollbarContext)); + contextAdded = true; + } } - } - // Avoid adding an empty object to the data. + // Avoid adding an empty object to the data. + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } if (contextAdded) { item.data.custom = custom; } @@ -615,10 +589,19 @@ function addErrorContext(item, errors) { var TELEMETRY_TYPES = ['log', 'network', 'dom', 'navigation', 'error', 'manual']; var TELEMETRY_LEVELS = ['critical', 'error', 'warning', 'info', 'debug']; function arrayIncludes(arr, val) { - for (var k = 0; k < arr.length; ++k) { - if (arr[k] === val) { - return true; + var _iterator2 = _createForOfIteratorHelper(arr), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var entry = _step2.value; + if (entry === val) { + return true; + } } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); } return false; } @@ -652,20 +635,20 @@ function createTelemetryEvent(args) { } function addItemAttributes(itemData, attributes) { itemData.attributes = itemData.attributes || []; - var _iterator = _createForOfIteratorHelper(attributes), - _step; + var _iterator3 = _createForOfIteratorHelper(attributes), + _step3; try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var a = _step.value; + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var a = _step3.value; if (a.value === undefined) { continue; } itemData.attributes.push(a); } } catch (err) { - _iterator.e(err); + _iterator3.e(err); } finally { - _iterator.f(); + _iterator3.f(); } } @@ -687,7 +670,7 @@ function get(obj, path) { for (var i = 0, len = keys.length; i < len; ++i) { result = result[keys[i]]; } - } catch (e) { + } catch (_e) { result = undefined; } return result; @@ -717,7 +700,7 @@ function set(obj, path, value) { } temp[keys[len - 1]] = value; obj[keys[0]] = replacement; - } catch (e) { + } catch (_e) { return; } } @@ -748,11 +731,11 @@ function formatArgsAsString(args) { } return result.join(' '); } -function utility_now() { +function now() { if (Date.now) { - return +Date.now(); + return Date.now(); } - return +new Date(); + return Number(new Date()); } function filterIp(requestData, captureIp) { if (!requestData || !requestData['user_ip'] || captureIp === true) { @@ -783,14 +766,14 @@ function filterIp(requestData, captureIp) { } else { newIp = null; } - } catch (e) { + } catch (_e) { newIp = null; } } requestData['user_ip'] = newIp; } function handleOptions(current, input, payload, logger) { - var result = src_merge(current, input, payload); + var result = merge(current, input, payload); result = updateDeprecatedOptions(result, logger); if (!input || input.overwriteScrubFields) { return result; @@ -813,2710 +796,2205 @@ function updateDeprecatedOptions(options, logger) { } return options; } +function merge() { + function isPlainObject(obj) { + if (!obj || Object.prototype.toString.call(obj) !== '[object Object]') { + return false; + } + var hasOwnConstructor = hasOwn(obj, 'constructor'); + var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn(obj.constructor.prototype, 'isPrototypeOf'); + // Not own constructor property must be Object + if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { + return false; + } -;// ./src/rateLimiter.js + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + var key; + for (key in obj) { + /**/ + } + return typeof key === 'undefined' || hasOwn(obj, key); + } + var i, + src, + copy, + clone, + name, + result = Object.create(null), + // no prototype pollution on Object + current = null, + length = arguments.length; + for (i = 0; i < length; i++) { + current = arguments[i]; + if (current === null || current === undefined) { + continue; + } + for (name in current) { + src = result[name]; + copy = current[name]; + if (result !== copy) { + if (copy && isPlainObject(copy)) { + clone = src && isPlainObject(src) ? src : {}; + result[name] = merge(clone, copy); + } else if (typeof copy !== 'undefined') { + result[name] = copy; + } + } + } + } + return result; +} +;// ./src/utility/traverse.js -/* - * RateLimiter - an object that encapsulates the logic for counting items sent to Rollbar - * - * @param options - the same options that are accepted by configureGlobal offered as a convenience - */ -function RateLimiter(options) { - this.startTime = utility_now(); - this.counter = 0; - this.perMinCounter = 0; - this.platform = null; - this.platformOptions = {}; - this.configureGlobal(options); -} -RateLimiter.globalSettings = { - startTime: utility_now(), - maxItems: undefined, - itemsPerMinute: undefined -}; +function traverse(obj, func, seen) { + var k, v, i; + var isObj = isType(obj, 'object'); + var isArray = isType(obj, 'array'); + var keys = []; + var seenIndex; -/* - * configureGlobal - set the global rate limiter options - * - * @param options - Only the following values are recognized: - * startTime: a timestamp of the form returned by (new Date()).getTime() - * maxItems: the maximum items - * itemsPerMinute: the max number of items to send in a given minute - */ -RateLimiter.prototype.configureGlobal = function (options) { - if (options.startTime !== undefined) { - RateLimiter.globalSettings.startTime = options.startTime; + // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11. + seen = seen || { + obj: [], + mapped: [] + }; + if (isObj) { + seenIndex = seen.obj.indexOf(obj); + if (isObj && seenIndex !== -1) { + // Prefer the mapped object if there is one. + return seen.mapped[seenIndex] || seen.obj[seenIndex]; + } + seen.obj.push(obj); + seenIndex = seen.obj.length - 1; } - if (options.maxItems !== undefined) { - RateLimiter.globalSettings.maxItems = options.maxItems; + if (isObj) { + for (k in obj) { + if (hasOwn(obj, k)) { + keys.push(k); + } + } + } else if (isArray) { + for (i = 0; i < obj.length; ++i) { + keys.push(i); + } } - if (options.itemsPerMinute !== undefined) { - RateLimiter.globalSettings.itemsPerMinute = options.itemsPerMinute; + var result = isObj ? {} : []; + var same = true; + for (i = 0; i < keys.length; ++i) { + k = keys[i]; + v = obj[k]; + result[k] = func(k, v, seen); + same = same && result[k] === obj[k]; } -}; - -/* - * shouldSend - determine if we should send a given item based on rate limit settings - * - * @param item - the item we are about to send - * @returns An object with the following structure: - * error: (Error|null) - * shouldSend: bool - * payload: (Object|null) - * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and - * exactly one of error or payload will be non-null. If error is non-null, the returned Error will - * describe the situation, but it means that we were already over a rate limit (either globally or - * per minute) when this item was checked. If error is null, and therefore payload is non-null, it - * means this item put us over the global rate limit and the payload should be sent to Rollbar in - * place of the passed in item. - */ -RateLimiter.prototype.shouldSend = function (item, now) { - now = now || utility_now(); - var elapsedTime = now - this.startTime; - if (elapsedTime < 0 || elapsedTime >= 60000) { - this.startTime = now; - this.perMinCounter = 0; + if (isObj && !same) { + seen.mapped[seenIndex] = result; } - var globalRateLimit = RateLimiter.globalSettings.maxItems; - var globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute; - if (checkRate(item, globalRateLimit, this.counter)) { - return shouldSendValue(this.platform, this.platformOptions, globalRateLimit + ' max items reached', false); - } else if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) { - return shouldSendValue(this.platform, this.platformOptions, globalRateLimitPerMin + ' items per minute reached', false); - } - this.counter++; - this.perMinCounter++; - var shouldSend = !checkRate(item, globalRateLimit, this.counter); - var perMinute = shouldSend; - shouldSend = shouldSend && !checkRate(item, globalRateLimitPerMin, this.perMinCounter); - return shouldSendValue(this.platform, this.platformOptions, null, shouldSend, globalRateLimit, globalRateLimitPerMin, perMinute); -}; -RateLimiter.prototype.setPlatformOptions = function (platform, options) { - this.platform = platform; - this.platformOptions = options; -}; + return !same ? result : obj; +} +/* harmony default export */ var utility_traverse = (traverse); +;// ./src/scrub.js +function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || scrub_unsupportedIterableToArray(r, e) || _nonIterableRest(); } +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } +function scrub_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = scrub_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function scrub_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return scrub_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? scrub_arrayLikeToArray(r, a) : void 0; } } +function scrub_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -/* Helpers */ -function checkRate(item, limit, counter) { - return !item.ignoreRateLimit && limit >= 1 && counter > limit; -} -function shouldSendValue(platform, options, error, shouldSend, globalRateLimit, limitPerMin, perMinute) { - var payload = null; - if (error) { - error = new Error(error); - } - if (!error && !shouldSend) { - payload = rateLimitPayload(platform, options, globalRateLimit, limitPerMin, perMinute); +function scrub(data, scrubFields, scrubPaths) { + scrubFields = scrubFields || []; + if (scrubPaths) { + var _iterator = scrub_createForOfIteratorHelper(scrubPaths), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var path = _step.value; + scrubPath(data, path); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } } - return { - error: error, - shouldSend: shouldSend, - payload: payload - }; -} -function rateLimitPayload(platform, options, globalRateLimit, limitPerMin, perMinute) { - var environment = options.environment || options.payload && options.payload.environment; - var msg; - if (perMinute) { - msg = 'item per minute limit reached, ignoring errors until timeout'; - } else { - msg = 'maxItems has been hit, ignoring errors until reset.'; + var paramRes = _getScrubFieldRegexs(scrubFields); + var queryRes = _getScrubQueryParamRegexs(scrubFields); + function redactQueryParam(dummy0, paramPart) { + return paramPart + redact(); } - var item = { - body: { - message: { - body: msg, - extra: { - maxItems: globalRateLimit, - itemsPerMinute: limitPerMin + function paramScrubber(v) { + if (isType(v, 'string')) { + var _iterator2 = scrub_createForOfIteratorHelper(queryRes), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var regex = _step2.value; + v = v.replace(regex, redactQueryParam); } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); } - }, - language: 'javascript', - environment: environment, - notifier: { - version: options.notifier && options.notifier.version || options.version } - }; - if (platform === 'browser') { - item.platform = 'browser'; - item.framework = 'browser-js'; - item.notifier.name = 'rollbar-browser-js'; - } else if (platform === 'server') { - item.framework = options.framework || 'node-js'; - item.notifier.name = options.notifier.name; - } else if (platform === 'react-native') { - item.framework = options.framework || 'react-native'; - item.notifier.name = options.notifier.name; + return v; } - return item; -} -/* harmony default export */ var rateLimiter = (RateLimiter); -;// ./src/queue.js -function queue_typeof(o) { "@babel/helpers - typeof"; return queue_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, queue_typeof(o); } -function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } + function valScrubber(k, v) { + var _iterator3 = scrub_createForOfIteratorHelper(paramRes), + _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var regex = _step3.value; + if (regex.test(k)) { + v = redact(); + break; + } + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + return v; + } + function scrubber(k, v, seen) { + var tmpV = valScrubber(k, v); + if (tmpV === v) { + if (isType(v, 'object') || isType(v, 'array')) { + return utility_traverse(v, scrubber, seen); + } + return paramScrubber(tmpV); + } else { + return tmpV; + } + } + return utility_traverse(data, scrubber); +} +function scrubPath(obj, path) { + var keys = path.split('.'); + var last = keys.length - 1; + try { + var _iterator4 = scrub_createForOfIteratorHelper(keys.entries()), + _step4; + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + var _step4$value = _slicedToArray(_step4.value, 2), + index = _step4$value[0], + key = _step4$value[1]; + if (index < last) { + obj = obj[key]; + } else { + obj[key] = redact(); + } + } + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); + } + } catch (_e) { + // Missing key is OK; + } +} +function _getScrubFieldRegexs(scrubFields) { + var ret = []; + var _iterator5 = scrub_createForOfIteratorHelper(scrubFields), + _step5; + try { + for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { + var field = _step5.value; + var pat = '^\\[?(%5[bB])?' + field + '\\[?(%5[bB])?\\]?(%5[dD])?$'; + ret.push(new RegExp(pat, 'i')); + } + } catch (err) { + _iterator5.e(err); + } finally { + _iterator5.f(); + } + return ret; +} +function _getScrubQueryParamRegexs(scrubFields) { + var ret = []; + var _iterator6 = scrub_createForOfIteratorHelper(scrubFields), + _step6; + try { + for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { + var field = _step6.value; + var pat = '\\[?(%5[bB])?' + field + '\\[?(%5[bB])?\\]?(%5[dD])?'; + ret.push(new RegExp('(' + pat + '=)([^&\\n]+)', 'igm')); + } + } catch (err) { + _iterator6.e(err); + } finally { + _iterator6.f(); + } + return ret; +} +/* harmony default export */ var src_scrub = (scrub); +;// ./src/telemetry.js +var _excluded = ["otelAttributes"]; +function telemetry_typeof(o) { "@babel/helpers - typeof"; return telemetry_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, telemetry_typeof(o); } +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } +function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == queue_typeof(i) ? i : i + ""; } -function _toPrimitive(t, r) { if ("object" != queue_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != queue_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == telemetry_typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != telemetry_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != telemetry_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +var MAX_EVENTS = 100; -/** - * Queue - an object which handles which handles a queue of items to be sent to Rollbar. - * This object handles rate limiting via a passed in rate limiter, retries based on connection - * errors, and filtering of items based on a set of configurable predicates. The communication to - * the backend is performed via a given API object. - */ -var Queue = /*#__PURE__*/function () { - /** - * @param rateLimiter - An object which conforms to the interface - * `rateLimiter.shouldSend(item) -> bool` - * @param api - An object which conforms to the interface - * `api.postItem(payload, function(err, response))` - * @param logger - An object used to log verbose messages if desired - * @param options - see `Queue.prototype.configure` - * @param replay - Optional `Replay` for coordinating session replay with error occurrences - */ - function Queue(rateLimiter, api, logger, options, replay) { - _classCallCheck(this, Queue); - this.rateLimiter = rateLimiter; - this.api = api; - this.logger = logger; - this.options = options; - this.replay = replay; - this.predicates = []; - this.pendingItems = []; - this.pendingRequests = []; - this.retryQueue = []; - this.retryHandle = null; - this.waitCallback = null; - this.waitIntervalID = null; +// Temporary workaround while solving commonjs -> esm issues in Node 18 - 20. +function fromMillis(millis) { + return [Math.trunc(millis / 1000), Math.round(millis % 1000 * 1e6)]; +} +var Telemeter = /*#__PURE__*/function () { + function Telemeter(options, tracing) { + var _this$tracing; + _classCallCheck(this, Telemeter); + this.queue = []; + this.options = merge(options); + var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS; + this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS)); + this.tracing = tracing; + this.telemetrySpan = (_this$tracing = this.tracing) === null || _this$tracing === void 0 ? void 0 : _this$tracing.startSpan('rollbar-telemetry', {}); } - - /** - * configure - updates the options this queue uses - * - * @param options - */ - return _createClass(Queue, [{ + return _createClass(Telemeter, [{ key: "configure", value: function configure(options) { - var _this$api; - (_this$api = this.api) === null || _this$api === void 0 || _this$api.configure(options); var oldOptions = this.options; - this.options = src_merge(oldOptions, options); - return this; - } - - /** - * addPredicate - adds a predicate to the end of the list of predicates for this queue - * - * @param predicate - function(item, options) -> (bool|{err: Error}) - * Returning true means that this predicate passes and the item is okay to go on the queue - * Returning false means do not add the item to the queue, but it is not an error - * Returning {err: Error} means do not add the item to the queue, and the given error explains why - * Returning {err: undefined} is equivalent to returning true but don't do that - */ - }, { - key: "addPredicate", - value: function addPredicate(predicate) { - if (isFunction(predicate)) { - this.predicates.push(predicate); + this.options = merge(oldOptions, options); + var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS; + var newMaxEvents = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS)); + var deleteCount = 0; + if (this.queue.length > newMaxEvents) { + deleteCount = this.queue.length - newMaxEvents; } - return this; + this.maxQueueSize = newMaxEvents; + this.queue.splice(0, deleteCount); } }, { - key: "addPendingItem", - value: function addPendingItem(item) { - this.pendingItems.push(item); + key: "copyEvents", + value: function copyEvents() { + var events = Array.prototype.slice.call(this.queue, 0); + if (isFunction(this.options.filterTelemetry)) { + try { + var i = events.length; + while (i--) { + if (this.options.filterTelemetry(events[i])) { + events.splice(i, 1); + } + } + } catch (_e) { + this.options.filterTelemetry = null; + } + } + + // Filter until supported in legacy telemetry + events = events.filter(function (e) { + return e.type !== 'connectivity'; + }); + + // Remove internal keys from output + events = events.map(function (_ref) { + var _otelAttributes = _ref.otelAttributes, + event = _objectWithoutProperties(_ref, _excluded); + return event; + }); + return events; } }, { - key: "removePendingItem", - value: function removePendingItem(item) { - var idx = this.pendingItems.indexOf(item); - if (idx !== -1) { - this.pendingItems.splice(idx, 1); + key: "exportTelemetrySpan", + value: function exportTelemetrySpan() { + var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + if (this.telemetrySpan) { + this.telemetrySpan.end(attributes); + this.telemetrySpan = this.tracing.startSpan('rollbar-telemetry', {}); } } - - /** - * addItem - Send an item to the Rollbar API if all of the predicates are satisfied - * - * @param item - Item instance with the payload to send to the backend - * @param callback - function(error, repsonse) which will be called with the response from the API - * in the case of a success, otherwise response will be null and error will have a value. If both - * error and response are null then the item was stopped by a predicate which did not consider this - * to be an error condition, but nonetheless did not send the item to the API. - * @param originalError - The original error before any transformations that is to be logged if any - * @param originalItem - The original item before transforms, used in pendingItems queue - */ }, { - key: "addItem", - value: function addItem(item, callback, originalError, originalItem) { - var _this = this; - if (!callback || !isFunction(callback)) { - callback = function callback() { - return; - }; - } - var data = item.data; - var predicateResult = this._applyPredicates(data); - if (predicateResult.stop) { - this.removePendingItem(originalItem); - callback(predicateResult.err); - return; - } - this._maybeLog(data, originalError); - this.removePendingItem(originalItem); - if (!this.options.transmit) { - callback(new Error('Transmit disabled')); - return; + key: "capture", + value: function capture(type, metadata, level, rollbarUUID) { + var timestamp = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null; + var otelAttributes = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null; + var e = { + level: getLevel(type, level), + type: type, + timestamp_ms: timestamp || now(), + body: metadata, + source: 'client' + }; + if (rollbarUUID) { + e.uuid = rollbarUUID; } - if (this.replay && data.body) { - item.replayId = this.replay.capture(null, data.uuid, { - type: 'occurrence', - level: item.level - }); - if (item.replayId) { - addItemAttributes(item.data, [{ - key: 'replay_id', - value: item.replayId - }]); - } + if (otelAttributes) { + e.otelAttributes = otelAttributes; } - this.pendingRequests.push(data); try { - this._makeApiRequest(data, function (err, resp, headers) { - _this._dequeuePendingRequest(data); - if (item.replayId) { - _this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers); - } - callback(err, resp); - }); - } catch (err) { - this._dequeuePendingRequest(data); - if (item.replayId) { - var _this$replay; - (_this$replay = this.replay) === null || _this$replay === void 0 || _this$replay.discard(item.replayId); + if (isFunction(this.options.filterTelemetry) && this.options.filterTelemetry(e)) { + return false; } - callback(err); + } catch (_exc) { + this.options.filterTelemetry = null; } + this.push(e); + return e; } - - /** - * wait - Stop any further errors from being added to the queue, and get called back when all items - * currently processing have finished sending to the backend. - * - * @param callback - function() called when all pending items have been sent - */ }, { - key: "wait", - value: function wait(callback) { - var _this2 = this; - if (!isFunction(callback)) { - return; - } - this.waitCallback = callback; - if (this._maybeCallWait()) { - return; - } - if (this.waitIntervalID) { - this.waitIntervalID = clearInterval(this.waitIntervalID); - } - this.waitIntervalID = setInterval(function () { - _this2._maybeCallWait(); - }, 500); + key: "captureEvent", + value: function captureEvent(type, metadata, level, rollbarUUID) { + return this.capture(type, metadata, level, rollbarUUID); } - - /** - * Sequentially applies the predicates that have been added to the queue to the - * given item with the currently configured options. - * - * @param item - An item in the queue - * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue, - * the error value should be passed up to a callbak if we are stopping. - */ }, { - key: "_applyPredicates", - value: function _applyPredicates(item) { - var p = null; - for (var i = 0, len = this.predicates.length; i < len; i++) { - p = this.predicates[i](item, this.options); - if (!p || p.err !== undefined) { - return { - stop: true, - err: p.err - }; - } + key: "captureError", + value: function captureError(err, level, rollbarUUID, timestamp) { + var _this$telemetrySpan; + var message = err.message || String(err); + var metadata = { + message: message + }; + if (err.stack) { + metadata.stack = err.stack; } - return { - stop: false, - err: null + var otelAttributes = { + message: message, + level: level, + type: 'error', + uuid: rollbarUUID }; + (_this$telemetrySpan = this.telemetrySpan) === null || _this$telemetrySpan === void 0 || _this$telemetrySpan.addEvent('rollbar-occurrence-event', otelAttributes, fromMillis(timestamp)); + return this.capture('error', metadata, level, rollbarUUID, timestamp, otelAttributes); } - - /** - * Send an item to Rollbar, callback when done, if there is an error make an - * effort to retry if we are configured to do so. - * - * @param item - an item ready to send to the backend - * @param callback - function(err, response) - */ }, { - key: "_makeApiRequest", - value: function _makeApiRequest(item, callback) { - var _this3 = this; - var rateLimitResponse = this.rateLimiter.shouldSend(item); - if (rateLimitResponse.shouldSend) { - this.api.postItem(item, function (err, resp, headers) { - if (err) { - _this3._maybeRetry(err, item, callback); - } else { - callback(err, resp, headers); - } - }); - } else if (rateLimitResponse.error) { - callback(rateLimitResponse.error); - } else { - this.api.postItem(rateLimitResponse.payload, callback); - } + key: "captureLog", + value: function captureLog(message, level, rollbarUUID, timestamp) { + var _this$telemetrySpan2; + var event = rollbarUUID ? 'rollbar-occurrence-event' : 'rollbar-log-event'; + var otelAttributes = _objectSpread({ + message: message, + level: level + }, rollbarUUID ? { + type: 'message', + uuid: rollbarUUID + } : {}); + (_this$telemetrySpan2 = this.telemetrySpan) === null || _this$telemetrySpan2 === void 0 || _this$telemetrySpan2.addEvent(event, otelAttributes, fromMillis(timestamp)); + return this.capture('log', { + message: message + }, level, rollbarUUID, timestamp, otelAttributes); } - - // These are errors basically mean there is no internet connection }, { - key: "_maybeRetry", - value: - /** - * Given the error returned by the API, decide if we should retry or just callback - * with the error. - * - * @param err - an error returned by the API transport - * @param item - the item that was trying to be sent when this error occured - * @param callback - function(err, response) - */ - function _maybeRetry(err, item, callback) { - var shouldRetry = false; - if (this.options.retryInterval) { - for (var i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) { - if (err.code === Queue.RETRIABLE_ERRORS[i]) { - shouldRetry = true; - break; - } - } - if (shouldRetry && isFiniteNumber(this.options.maxRetries)) { - item.retries = item.retries ? item.retries + 1 : 1; - if (item.retries > this.options.maxRetries) { - shouldRetry = false; - } - } + key: "captureNetwork", + value: function captureNetwork(metadata, subtype, rollbarUUID, requestData) { + var _metadata$response, _metadata$response2, _this$telemetrySpan3; + subtype = subtype || 'xhr'; + metadata.subtype = metadata.subtype || subtype; + if (requestData) { + metadata.request = requestData; } - if (shouldRetry) { - this._retryApiRequest(item, callback); - } else { - callback(err); + var level = this.levelFromStatus(metadata.status_code); + var endTimeNano = (metadata.end_time_ms || 0) * 1e6; + var otelAttributes = { + type: metadata.subtype, + method: metadata.method, + url: metadata.url, + statusCode: metadata.status_code, + 'request.headers': JSON.stringify(metadata.request_headers || {}), + 'response.headers': JSON.stringify(((_metadata$response = metadata.response) === null || _metadata$response === void 0 ? void 0 : _metadata$response.headers) || {}), + 'response.timeUnixNano': endTimeNano.toString() + }; + var requestBody = metadata.request; + var responseBody = (_metadata$response2 = metadata.response) === null || _metadata$response2 === void 0 ? void 0 : _metadata$response2.body; + if (requestBody) { + otelAttributes['request.body'] = JSON.stringify(requestBody); } - } - - /** - * Add an item and a callback to a queue and possibly start a timer to process - * that queue based on the retryInterval in the options for this queue. - * - * @param item - an item that failed to send due to an error we deem retriable - * @param callback - function(err, response) - */ - }, { - key: "_retryApiRequest", - value: function _retryApiRequest(item, callback) { - var _this4 = this; - this.retryQueue.push({ - item: item, - callback: callback - }); - if (!this.retryHandle) { - this.retryHandle = setInterval(function () { - while (_this4.retryQueue.length) { - var retryObject = _this4.retryQueue.shift(); - _this4._makeApiRequest(retryObject.item, retryObject.callback); - } - }, this.options.retryInterval); + if (responseBody) { + otelAttributes['response.body'] = JSON.stringify(responseBody); } + (_this$telemetrySpan3 = this.telemetrySpan) === null || _this$telemetrySpan3 === void 0 || _this$telemetrySpan3.addEvent('rollbar-network-event', otelAttributes, fromMillis(metadata.start_time_ms)); + return this.capture('network', metadata, level, rollbarUUID, metadata.start_time_ms, otelAttributes); } - - /** - * Removes the item from the pending request queue, this queue is used to - * enable to functionality of providing a callback that clients can pass to `wait` to be notified - * when the pending request queue has been emptied. This must be called when the API finishes - * processing this item. If a `wait` callback is configured, it is called by this function. - * - * @param item - the item previously added to the pending request queue - */ }, { - key: "_dequeuePendingRequest", - value: function _dequeuePendingRequest(item) { - var idx = this.pendingRequests.indexOf(item); - if (idx !== -1) { - this.pendingRequests.splice(idx, 1); - this._maybeCallWait(); + key: "levelFromStatus", + value: function levelFromStatus(statusCode) { + if (statusCode >= 200 && statusCode < 400) { + return 'info'; + } + if (statusCode === 0 || statusCode >= 400) { + return 'error'; } + return 'info'; } }, { - key: "_maybeLog", - value: function _maybeLog(data, originalError) { - if (this.logger && this.options.verbose) { - var message = originalError || get(data, 'body.trace.exception.message') || get(data, 'body.trace_chain.0.exception.message'); - if (message) { - this.logger.error(message); - return; - } - message = get(data, 'body.message.body'); - if (message) { - this.logger.log(message); - } + key: "captureDom", + value: function captureDom(subtype, element, value, checked, rollbarUUID) { + var metadata = { + subtype: subtype, + element: element + }; + if (value !== undefined) { + metadata.value = value; + } + if (checked !== undefined) { + metadata.checked = checked; } + return this.capture('dom', metadata, 'info', rollbarUUID); } }, { - key: "_maybeCallWait", - value: function _maybeCallWait() { - if (isFunction(this.waitCallback) && this.pendingItems.length === 0 && this.pendingRequests.length === 0) { - if (this.waitIntervalID) { - this.waitIntervalID = clearInterval(this.waitIntervalID); - } - this.waitCallback(); - return true; + key: "captureInput", + value: function captureInput(_ref2) { + var _this$telemetrySpan4; + var type = _ref2.type, + isSynthetic = _ref2.isSynthetic, + element = _ref2.element, + value = _ref2.value, + timestamp = _ref2.timestamp; + var name = 'rollbar-input-event'; + var metadata = { + type: name, + subtype: type, + element: element, + value: value + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic, + element: element, + value: value, + endTimeUnixNano: fromMillis(timestamp) + }; + var event = this._getRepeatedEvent(name, otelAttributes); + if (event) { + return this._updateRepeatedEvent(event, otelAttributes, timestamp); } - return false; + (_this$telemetrySpan4 = this.telemetrySpan) === null || _this$telemetrySpan4 === void 0 || _this$telemetrySpan4.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); } - }]); -}(); -_defineProperty(Queue, "RETRIABLE_ERRORS", ['ECONNRESET', 'ENOTFOUND', 'ESOCKETTIMEDOUT', 'ETIMEDOUT', 'ECONNREFUSED', 'EHOSTUNREACH', 'EPIPE', 'EAI_AGAIN']); -/* harmony default export */ var queue = (Queue); -;// ./src/notifier.js - - -/* - * Notifier - the internal object responsible for delegating between the client exposed API, the - * chain of transforms necessary to turn an item into something that can be sent to Rollbar, and the - * queue which handles the communcation with the Rollbar API servers. - * - * @param queue - an object that conforms to the interface: addItem(item, callback) - * @param options - an object representing the options to be set for this notifier, this should have - * any defaults already set by the caller - */ -function Notifier(queue, options) { - this.queue = queue; - this.options = options; - this.transforms = []; - this.diagnostic = {}; -} - -/* - * configure - updates the options for this notifier with the passed in object - * - * @param options - an object which gets merged with the current options set on this notifier - * @returns this - */ -Notifier.prototype.configure = function (options) { - this.queue && this.queue.configure(options); - var oldOptions = this.options; - this.options = src_merge(oldOptions, options); - return this; -}; - -/* - * addTransform - adds a transform onto the end of the queue of transforms for this notifier - * - * @param transform - a function which takes three arguments: - * * item: An Object representing the data to eventually be sent to Rollbar - * * options: The current value of the options for this notifier - * * callback: function(err: (Null|Error), item: (Null|Object)) the transform must call this - * callback with a null value for error if it wants the processing chain to continue, otherwise - * with an error to terminate the processing. The item should be the updated item after this - * transform is finished modifying it. - */ -Notifier.prototype.addTransform = function (transform) { - if (isFunction(transform)) { - this.transforms.push(transform); - } - return this; -}; - -/* - * log - the internal log function which applies the configured transforms and then pushes onto the - * queue to be sent to the backend. - * - * @param item - An object with the following structure: - * message [String] - An optional string to be sent to rollbar - * error [Error] - An optional error - * - * @param callback - A function of type function(err, resp) which will be called with exactly one - * null argument and one non-null argument. The callback will be called once, either during the - * transform stage if an error occurs inside a transform, or in response to the communication with - * the backend. The second argument will be the response from the backend in case of success. - */ -Notifier.prototype.log = function (item, callback) { - if (!callback || !isFunction(callback)) { - callback = function callback() {}; - } - if (!this.options.enabled) { - return callback(new Error('Rollbar is not enabled')); - } - this.queue.addPendingItem(item); - var originalError = item.err; - this._applyTransforms(item, function (err, i) { - if (err) { - this.queue.removePendingItem(item); - return callback(err, null); - } - this.queue.addItem(i, callback, originalError, item); - }.bind(this)); -}; - -/* Internal */ - -/* - * _applyTransforms - Applies the transforms that have been added to this notifier sequentially. See - * `addTransform` for more information. - * - * @param item - An item to be transformed - * @param callback - A function of type function(err, item) which will be called with a non-null - * error and a null item in the case of a transform failure, or a null error and non-null item after - * all transforms have been applied. - */ -Notifier.prototype._applyTransforms = function (item, callback) { - var transformIndex = -1; - var transformsLength = this.transforms.length; - var transforms = this.transforms; - var options = this.options; - var _cb = function cb(err, i) { - if (err) { - callback(err, null); - return; - } - transformIndex++; - if (transformIndex === transformsLength) { - callback(null, i); - return; - } - transforms[transformIndex](i, options, _cb); - }; - _cb(null, item); -}; -/* harmony default export */ var notifier = (Notifier); -;// ./src/rollbar.js - - - - - -/* - * Rollbar - the interface to Rollbar - * - * @param options - * @param api - * @param logger - */ -function Rollbar(options, api, logger, telemeter, tracing, replay, platform) { - this.options = src_merge(options); - this.logger = logger; - Rollbar.rateLimiter.configureGlobal(this.options); - Rollbar.rateLimiter.setPlatformOptions(platform, this.options); - this.api = api; - this.queue = new queue(Rollbar.rateLimiter, api, logger, this.options, replay); - this.tracing = tracing; - - // Legacy OpenTracing support - // This must happen before the Notifier is created - var tracer = this.options.tracer || null; - if (validateTracer(tracer)) { - this.tracer = tracer; - // set to a string for api response serialization - this.options.tracer = 'opentracing-tracer-enabled'; - this.options._configuredOptions.tracer = 'opentracing-tracer-enabled'; - } else { - this.tracer = null; - } - this.notifier = new notifier(this.queue, this.options); - this.telemeter = telemeter; - setStackTraceLimit(options); - this.lastError = null; - this.lastErrorHash = 'none'; -} -var defaultOptions = { - maxItems: 0, - itemsPerMinute: 60 -}; -Rollbar.rateLimiter = new rateLimiter(defaultOptions); -Rollbar.prototype.global = function (options) { - Rollbar.rateLimiter.configureGlobal(options); - return this; -}; -Rollbar.prototype.configure = function (options, payloadData) { - var oldOptions = this.options; - var payload = {}; - if (payloadData) { - payload = { - payload: payloadData - }; - } - this.options = src_merge(oldOptions, options, payload); - - // Legacy OpenTracing support - // This must happen before the Notifier is configured - var tracer = this.options.tracer || null; - if (validateTracer(tracer)) { - this.tracer = tracer; - // set to a string for api response serialization - this.options.tracer = 'opentracing-tracer-enabled'; - this.options._configuredOptions.tracer = 'opentracing-tracer-enabled'; - } else { - this.tracer = null; - } - this.notifier && this.notifier.configure(this.options); - this.telemeter && this.telemeter.configure(this.options); - setStackTraceLimit(options); - this.global(this.options); - if (validateTracer(options.tracer)) { - this.tracer = options.tracer; - } - return this; -}; -Rollbar.prototype.log = function (item) { - var level = this._defaultLogLevel(); - return this._log(level, item); -}; -Rollbar.prototype.debug = function (item) { - this._log('debug', item); -}; -Rollbar.prototype.info = function (item) { - this._log('info', item); -}; -Rollbar.prototype.warn = function (item) { - this._log('warning', item); -}; -Rollbar.prototype.warning = function (item) { - this._log('warning', item); -}; -Rollbar.prototype.error = function (item) { - this._log('error', item); -}; -Rollbar.prototype.critical = function (item) { - this._log('critical', item); -}; -Rollbar.prototype.wait = function (callback) { - this.queue.wait(callback); -}; -Rollbar.prototype.captureEvent = function (type, metadata, level) { - return this.telemeter && this.telemeter.captureEvent(type, metadata, level); -}; -Rollbar.prototype.captureDomContentLoaded = function (ts) { - return this.telemeter && this.telemeter.captureDomContentLoaded(ts); -}; -Rollbar.prototype.captureLoad = function (ts) { - return this.telemeter && this.telemeter.captureLoad(ts); -}; -Rollbar.prototype.buildJsonPayload = function (item) { - return this.api.buildJsonPayload(item); -}; -Rollbar.prototype.sendJsonPayload = function (jsonPayload) { - this.api.postJsonPayload(jsonPayload); -}; - -/* Internal */ - -Rollbar.prototype._log = function (defaultLevel, item) { - var callback; - if (item.callback) { - callback = item.callback; - delete item.callback; - } - if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) { - if (callback) { - var error = new Error('ignored identical item'); - error.item = item; - callback(error); + }, { + key: "captureClick", + value: function captureClick(_ref3) { + var _this$telemetrySpan5; + var type = _ref3.type, + isSynthetic = _ref3.isSynthetic, + element = _ref3.element, + timestamp = _ref3.timestamp; + var name = 'rollbar-click-event'; + var metadata = { + type: name, + subtype: type, + element: element + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic, + element: element, + endTimeUnixNano: fromMillis(timestamp) + }; + var event = this._getRepeatedEvent(name, otelAttributes); + if (event) { + return this._updateRepeatedEvent(event, otelAttributes, timestamp); + } + (_this$telemetrySpan5 = this.telemetrySpan) === null || _this$telemetrySpan5 === void 0 || _this$telemetrySpan5.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); } - return; - } - try { - item.level = item.level || defaultLevel; - this._addTracingAttributes(item); - - // Legacy OpenTracing support - this._addTracingInfo(item); - var telemeter = this.telemeter; - if (telemeter) { - telemeter._captureRollbarItem(item); - item.telemetryEvents = telemeter.copyEvents() || []; + }, { + key: "_getRepeatedEvent", + value: function _getRepeatedEvent(name, attributes) { + var lastEvent = this._lastEvent(this.queue); + if (lastEvent && lastEvent.body.type === name && lastEvent.otelAttributes.target === attributes.target) { + return lastEvent; + } } - this.notifier.log(item, callback); - } catch (e) { - if (callback) { - callback(e); + }, { + key: "_updateRepeatedEvent", + value: function _updateRepeatedEvent(event, attributes, timestamp) { + var duration = Math.max(timestamp - event.timestamp_ms, 1); + event.body.value = attributes.value; + event.otelAttributes.value = attributes.value; + event.otelAttributes.height = attributes.height; + event.otelAttributes.width = attributes.width; + event.otelAttributes.textZoomRatio = attributes.textZoomRatio; + event.otelAttributes['endTimeUnixNano'] = fromMillis(timestamp); + event.otelAttributes['durationUnixNano'] = fromMillis(duration); + event.otelAttributes.count = (event.otelAttributes.count || 1) + 1; + event.otelAttributes.rate = event.otelAttributes.count / (duration / 1000); } - this.logger.error(e); - } -}; -Rollbar.prototype._addTracingAttributes = function (item) { - var _this$tracing, _this$tracing2; - var span = (_this$tracing = this.tracing) === null || _this$tracing === void 0 ? void 0 : _this$tracing.getSpan(); - var attributes = [{ - key: 'session_id', - value: (_this$tracing2 = this.tracing) === null || _this$tracing2 === void 0 ? void 0 : _this$tracing2.sessionId }, { - key: 'span_id', - value: span === null || span === void 0 ? void 0 : span.spanId + key: "_lastEvent", + value: function _lastEvent(list) { + return list.length > 0 ? list[list.length - 1] : null; + } }, { - key: 'trace_id', - value: span === null || span === void 0 ? void 0 : span.traceId - }]; - addItemAttributes(item.data, attributes); - span === null || span === void 0 || span.addEvent('rollbar.occurrence', [{ - key: 'rollbar.occurrence.uuid', - value: item.uuid - }]); -}; -Rollbar.prototype._defaultLogLevel = function () { - return this.options.logLevel || 'debug'; -}; -Rollbar.prototype._sameAsLastError = function (item) { - if (!item._isUncaught) { - return false; - } - var itemHash = generateItemHash(item); - if (this.lastErrorHash === itemHash) { - return true; - } - this.lastError = item.err; - this.lastErrorHash = itemHash; - return false; -}; -Rollbar.prototype._addTracingInfo = function (item) { - // Tracer validation occurs in the constructor - // or in the Rollbar.prototype.configure methods - if (this.tracer) { - // add rollbar occurrence uuid to span - var span = this.tracer.scope().active(); - if (validateSpan(span)) { - span.setTag('rollbar.error_uuid', item.uuid); - span.setTag('rollbar.has_error', true); - span.setTag('error', true); - span.setTag('rollbar.item_url', "https://rollbar.com/item/uuid/?uuid=".concat(item.uuid)); - span.setTag('rollbar.occurrence_url', "https://rollbar.com/occurrence/uuid/?uuid=".concat(item.uuid)); + key: "captureFocus", + value: function captureFocus(_ref4) { + var _this$telemetrySpan6; + var type = _ref4.type, + isSynthetic = _ref4.isSynthetic, + element = _ref4.element, + timestamp = _ref4.timestamp; + var name = 'rollbar-focus-event'; + var metadata = { + type: name, + subtype: type, + element: element + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic, + element: element + }; + (_this$telemetrySpan6 = this.telemetrySpan) === null || _this$telemetrySpan6 === void 0 || _this$telemetrySpan6.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + } + }, { + key: "captureResize", + value: function captureResize(_ref5) { + var _this$telemetrySpan7; + var type = _ref5.type, + isSynthetic = _ref5.isSynthetic, + width = _ref5.width, + height = _ref5.height, + textZoomRatio = _ref5.textZoomRatio, + timestamp = _ref5.timestamp; + var name = 'rollbar-resize-event'; + var metadata = { + type: name, + subtype: type, + width: width, + height: height, + textZoomRatio: textZoomRatio + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic, + width: width, + height: height, + textZoomRatio: textZoomRatio + }; + var event = this._getRepeatedEvent(name, otelAttributes); + if (event) { + return this._updateRepeatedEvent(event, otelAttributes, timestamp); + } + (_this$telemetrySpan7 = this.telemetrySpan) === null || _this$telemetrySpan7 === void 0 || _this$telemetrySpan7.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + } + }, { + key: "captureDragDrop", + value: function captureDragDrop(_ref6) { + var _this$telemetrySpan8; + var type = _ref6.type, + isSynthetic = _ref6.isSynthetic, + element = _ref6.element, + dropEffect = _ref6.dropEffect, + effectAllowed = _ref6.effectAllowed, + kinds = _ref6.kinds, + mediaTypes = _ref6.mediaTypes, + timestamp = _ref6.timestamp; + var name = 'rollbar-dragdrop-event'; + var metadata = { + type: name, + subtype: type, + isSynthetic: isSynthetic + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic + }; + if (type === 'dragstart') { + metadata = _objectSpread(_objectSpread({}, metadata), {}, { + element: element, + dropEffect: dropEffect, + effectAllowed: effectAllowed + }); + otelAttributes = _objectSpread(_objectSpread({}, otelAttributes), {}, { + element: element, + dropEffect: dropEffect, + effectAllowed: effectAllowed + }); + } + if (type === 'drop') { + metadata = _objectSpread(_objectSpread({}, metadata), {}, { + element: element, + dropEffect: dropEffect, + effectAllowed: effectAllowed, + kinds: kinds, + mediaTypes: mediaTypes + }); + otelAttributes = _objectSpread(_objectSpread({}, otelAttributes), {}, { + element: element, + dropEffect: dropEffect, + effectAllowed: effectAllowed, + kinds: kinds, + mediaTypes: mediaTypes + }); + } + (_this$telemetrySpan8 = this.telemetrySpan) === null || _this$telemetrySpan8 === void 0 || _this$telemetrySpan8.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + } + }, { + key: "captureNavigation", + value: function captureNavigation(from, to, rollbarUUID, timestamp) { + var _this$telemetrySpan9; + (_this$telemetrySpan9 = this.telemetrySpan) === null || _this$telemetrySpan9 === void 0 || _this$telemetrySpan9.addEvent('rollbar-navigation-event', { + 'previous.url.full': from, + 'url.full': to + }, fromMillis(timestamp)); + return this.capture('navigation', { + from: from, + to: to + }, 'info', rollbarUUID, timestamp); + } + }, { + key: "captureDomContentLoaded", + value: function captureDomContentLoaded(ts) { + return this.capture('navigation', { + subtype: 'DOMContentLoaded' + }, 'info', undefined, ts && ts.getTime()); + /** + * If we decide to make this a dom event instead, then use the line below: + return this.capture('dom', {subtype: 'DOMContentLoaded'}, 'info', undefined, ts && ts.getTime()); + */ + } + }, { + key: "captureLoad", + value: function captureLoad(ts) { + return this.capture('navigation', { + subtype: 'load' + }, 'info', undefined, ts && ts.getTime()); + /** + * If we decide to make this a dom event instead, then use the line below: + return this.capture('dom', {subtype: 'load'}, 'info', undefined, ts && ts.getTime()); + */ + } + }, { + key: "captureConnectivityChange", + value: function captureConnectivityChange(_ref7) { + var _this$telemetrySpan0; + var type = _ref7.type, + isSynthetic = _ref7.isSynthetic, + timestamp = _ref7.timestamp; + var name = 'rollbar-connectivity-event'; + var metadata = { + type: name, + subtype: type + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic + }; + (_this$telemetrySpan0 = this.telemetrySpan) === null || _this$telemetrySpan0 === void 0 || _this$telemetrySpan0.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('connectivity', metadata, 'info', null, timestamp, otelAttributes); + } - // add span ID & trace ID to occurrence - var opentracingSpanId = span.context().toSpanId(); - var opentracingTraceId = span.context().toTraceId(); + // Only intended to be used internally by the notifier + }, { + key: "_captureRollbarItem", + value: function _captureRollbarItem(item) { + if (!this.options.includeItemsInTelemetry) { + return; + } + if (item.err) { + return this.captureError(item.err, item.level, item.uuid, item.timestamp); + } + if (item.message) { + return this.captureLog(item.message, item.level, item.uuid, item.timestamp); + } if (item.custom) { - item.custom.opentracing_span_id = opentracingSpanId; - item.custom.opentracing_trace_id = opentracingTraceId; - } else { - item.custom = { - opentracing_span_id: opentracingSpanId, - opentracing_trace_id: opentracingTraceId - }; + return this.capture('log', item.custom, item.level, item.uuid, item.timestamp); } } + }, { + key: "push", + value: function push(e) { + this.queue.push(e); + if (this.queue.length > this.maxQueueSize) { + this.queue.shift(); + } + } + }]); +}(); +function getLevel(type, level) { + if (level) { + return level; } -}; -function generateItemHash(item) { - var message = item.message || ''; - var stack = (item.err || {}).stack || String(item.err); - return message + '::' + stack; -} - -// Node.js, Chrome, Safari, and some other browsers support this property -// which globally sets the number of stack frames returned in an Error object. -// If a browser can't use it, no harm done. -function setStackTraceLimit(options) { - if (options.stackTraceLimit) { - Error.stackTraceLimit = options.stackTraceLimit; - } + var defaultLevel = { + error: 'error', + manual: 'info' + }; + return defaultLevel[type] || 'info'; } - -/** - * Validate the Tracer object provided to the Client - * is valid for our Opentracing use case. - * @param {opentracer.Tracer} tracer - */ -function validateTracer(tracer) { - if (!tracer) { - return false; +/* harmony default export */ var telemetry = (Telemeter); +;// ./src/tracing/context.js +function context_typeof(o) { "@babel/helpers - typeof"; return context_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, context_typeof(o); } +function context_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function context_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, context_toPropertyKey(o.key), o); } } +function context_createClass(e, r, t) { return r && context_defineProperties(e.prototype, r), t && context_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function context_toPropertyKey(t) { var i = context_toPrimitive(t, "string"); return "symbol" == context_typeof(i) ? i : i + ""; } +function context_toPrimitive(t, r) { if ("object" != context_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != context_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +var Context = /*#__PURE__*/function () { + function Context(parentContext) { + context_classCallCheck(this, Context); + this._currentContext = parentContext ? new Map(parentContext) : new Map(); } - if (!tracer.scope || typeof tracer.scope !== 'function') { - return false; - } - var scope = tracer.scope(); - if (!scope || !scope.active || typeof scope.active !== 'function') { - return false; - } - return true; -} + return context_createClass(Context, [{ + key: "getValue", + value: function getValue(key) { + return this._currentContext.get(key); + } + }, { + key: "setValue", + value: function setValue(key, value) { + var context = new Context(this._currentContext); + context._currentContext.set(key, value); + return context; + } + }, { + key: "deleteValue", + value: function deleteValue(key) { + var context = new Context(self._currentContext); + context._currentContext.delete(key); + return context; + } + }]); +}(); +var ROOT_CONTEXT = new Context(); +;// ./src/tracing/contextManager.js +function contextManager_typeof(o) { "@babel/helpers - typeof"; return contextManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, contextManager_typeof(o); } +function contextManager_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function contextManager_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, contextManager_toPropertyKey(o.key), o); } } +function contextManager_createClass(e, r, t) { return r && contextManager_defineProperties(e.prototype, r), t && contextManager_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function contextManager_toPropertyKey(t) { var i = contextManager_toPrimitive(t, "string"); return "symbol" == contextManager_typeof(i) ? i : i + ""; } +function contextManager_toPrimitive(t, r) { if ("object" != contextManager_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != contextManager_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -/** - * Validate the Span object provided - * @param {opentracer.Span} span - */ -function validateSpan(span) { - if (!span || !span.context || typeof span.context !== 'function') { - return false; - } - var spanContext = span.context(); - if (!spanContext || !spanContext.toSpanId || !spanContext.toTraceId || typeof spanContext.toSpanId !== 'function' || typeof spanContext.toTraceId !== 'function') { - return false; +var ContextManager = /*#__PURE__*/function () { + function ContextManager() { + contextManager_classCallCheck(this, ContextManager); + this.currentContext = ROOT_CONTEXT; } - return true; -} -/* harmony default export */ var rollbar = (Rollbar); -;// ./src/apiUtility.js - -function buildPayload(data) { - if (!isType(data.context, 'string')) { - var contextResult = stringify(data.context); - if (contextResult.error) { - data.context = "Error: could not serialize 'context'"; - } else { - data.context = contextResult.value || ''; + return contextManager_createClass(ContextManager, [{ + key: "active", + value: function active() { + return this.currentContext; } - if (data.context.length > 255) { - data.context = data.context.substr(0, 255); + }, { + key: "enterContext", + value: function enterContext(context) { + var previousContext = this.currentContext; + this.currentContext = context || ROOT_CONTEXT; + return previousContext; } - } - return { - data: data - }; -} -function getTransportFromOptions(options, defaults, url) { - var hostname = defaults.hostname; - var protocol = defaults.protocol; - var port = defaults.port; - var path = defaults.path; - var search = defaults.search; - var timeout = options.timeout; - var transport = detectTransport(options); - var proxy = options.proxy; - if (options.endpoint) { - var opts = url.parse(options.endpoint); - hostname = opts.hostname; - protocol = opts.protocol; - port = opts.port; - path = opts.pathname; - search = opts.search; - } - return { - timeout: timeout, - hostname: hostname, - protocol: protocol, - port: port, - path: path, - search: search, - proxy: proxy, - transport: transport - }; -} -function detectTransport(options) { - var gWindow = typeof window != 'undefined' && window || typeof self != 'undefined' && self; - var transport = options.defaultTransport || 'xhr'; - if (typeof gWindow.fetch === 'undefined') transport = 'xhr'; - if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch'; - return transport; -} -function apiUtility_transportOptions(transport, method) { - var protocol = transport.protocol || 'https:'; - var port = transport.port || (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined); - var hostname = transport.hostname; - var path = transport.path; - var timeout = transport.timeout; - var transportAPI = transport.transport; - if (transport.search) { - path = path + transport.search; - } - if (transport.proxy) { - path = protocol + '//' + hostname + path; - hostname = transport.proxy.host || transport.proxy.hostname; - port = transport.proxy.port; - protocol = transport.proxy.protocol || protocol; - } - return { - timeout: timeout, - protocol: protocol, - hostname: hostname, - path: path, - port: port, - method: method, - transport: transportAPI - }; -} -function appendPathToPath(base, path) { - var baseTrailingSlash = /\/$/.test(base); - var pathBeginningSlash = /^\//.test(path); - if (baseTrailingSlash && pathBeginningSlash) { - path = path.substring(1); - } else if (!baseTrailingSlash && !pathBeginningSlash) { - path = '/' + path; - } - return base + path; + }, { + key: "exitContext", + value: function exitContext(context) { + this.currentContext = context; + return this.currentContext; + } + }, { + key: "with", + value: function _with(context, fn, thisArg) { + var previousContext = this.enterContext(context); + try { + for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { + args[_key - 3] = arguments[_key]; + } + return fn.call.apply(fn, [thisArg].concat(args)); + } finally { + this.exitContext(previousContext); + } + } + }]); +}(); +function createContextKey(key) { + // Use Symbol for OpenTelemetry compatibility. + return Symbol.for(key); } - -;// ./src/api.js -function api_typeof(o) { "@babel/helpers - typeof"; return api_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, api_typeof(o); } -function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { api_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function api_defineProperty(e, r, t) { return (r = api_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function api_toPropertyKey(t) { var i = api_toPrimitive(t, "string"); return "symbol" == api_typeof(i) ? i : i + ""; } -function api_toPrimitive(t, r) { if ("object" != api_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != api_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == api_typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(api_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } -function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } -function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } - - -var api_defaultOptions = { - hostname: 'api.rollbar.com', - path: '/api/1/item/', - search: null, - version: '1', - protocol: 'https:', - port: 443 -}; -var OTLPDefaultOptions = { - hostname: 'api.rollbar.com', - path: '/api/1/session/', - search: null, - version: '1', - protocol: 'https:', - port: 443 -}; +;// ./src/tracing/hrtime.js +/** + * @module hrtime + * + * @description Methods for handling OpenTelemetry hrtime. + */ /** - * Api is an object that encapsulates methods of communicating with - * the Rollbar API. It is a standard interface with some parts implemented - * differently for server or browser contexts. It is an object that should - * be instantiated when used so it can contain non-global options that may - * be different for another instance of RollbarApi. + * Convert a duration in milliseconds to an OpenTelemetry hrtime tuple. * - * @param options { - * accessToken: the accessToken to use for posting items to rollbar - * endpoint: an alternative endpoint to send errors to - * must be a valid, fully qualified URL. - * The default is: https://api.rollbar.com/api/1/item - * proxy: if you wish to proxy requests provide an object - * with the following keys: - * host or hostname (required): foo.example.com - * port (optional): 123 - * protocol (optional): https - * } + * @param {number} millis - The duration in milliseconds. + * @returns {[number, number]} An array where the first element is seconds + * and the second is nanoseconds. */ -function Api(options, transport, urllib, truncation) { - this.options = options; - this.transport = transport; - this.url = urllib; - this.truncation = truncation; - this.accessToken = options.accessToken; - this.transportOptions = _getTransport(options, urllib); - this.OTLPTransportOptions = _getOTLPTransport(options, urllib); +function hrtime_fromMillis(millis) { + return [Math.trunc(millis / 1000), Math.round(millis % 1000 * 1e6)]; } /** - * Wraps transport.post in a Promise to support async/await + * Convert an OpenTelemetry hrtime tuple back to a duration in milliseconds. * - * @param {Object} options - Options for the API request - * @param {string} options.accessToken - The access token for authentication - * @param {Object} options.transportOptions - Options for the transport - * @param {Object} options.payload - The data payload to send - * @returns {Promise} A promise that resolves with the response or rejects with an error - * @private + * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds]. + * @returns {number} The total duration in milliseconds. */ -Api.prototype._postPromise = function (_ref) { - var accessToken = _ref.accessToken, - options = _ref.options, - payload = _ref.payload, - headers = _ref.headers; - var self = this; - return new Promise(function (resolve, reject) { - self.transport.post({ - accessToken: accessToken, - options: options, - payload: payload, - headers: headers, - callback: function callback(err, resp) { - return err ? reject(err) : resolve(resp); - } - }); - }); -}; +function toMillis(hrtime) { + return hrtime[0] * 1e3 + Math.round(hrtime[1] / 1e6); +} /** + * Convert an OpenTelemetry hrtime tuple back to a duration in nanoseconds. * - * @param data - * @param callback + * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds]. + * @returns {number} The total duration in nanoseconds. */ -Api.prototype.postItem = function (data, callback) { - var options = apiUtility_transportOptions(this.transportOptions, 'POST'); - var payload = buildPayload(data); - var self = this; - - // ensure the network request is scheduled after the current tick. - setTimeout(function () { - self.transport.post({ - accessToken: self.accessToken, - options: options, - payload: payload, - callback: callback - }); - }, 0); -}; +function toNanos(hrtime) { + return hrtime[0] * 1e9 + hrtime[1]; +} /** - * Posts spans to the Rollbar API using the session endpoint + * Adds two OpenTelemetry hrtime tuples. + * + * @param {[number, number]} a - The first hrtime tuple [s, ns]. + * @param {[number, number]} b - The second hrtime tuple [s, ns]. + * @returns {[number, number]} Summed hrtime tuple, normalized. * - * @param {Array} payload - The spans to send - * @returns {Promise} A promise that resolves with the API response */ -Api.prototype.postSpans = /*#__PURE__*/function () { - var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(payload) { - var headers, - options, - _args = arguments; - return _regeneratorRuntime().wrap(function _callee$(_context) { - while (1) switch (_context.prev = _context.next) { - case 0: - headers = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; - options = apiUtility_transportOptions(this.OTLPTransportOptions, 'POST'); - _context.next = 4; - return this._postPromise({ - accessToken: this.accessToken, - options: options, - payload: payload, - headers: headers - }); - case 4: - return _context.abrupt("return", _context.sent); - case 5: - case "end": - return _context.stop(); - } - }, _callee, this); - })); - return function (_x) { - return _ref2.apply(this, arguments); - }; -}(); +function add(a, b) { + return [a[0] + b[0] + Math.trunc((a[1] + b[1]) / 1e9), (a[1] + b[1]) % 1e9]; +} /** + * Get the current high-resolution time as an OpenTelemetry hrtime tuple. * - * @param data - * @param callback + * @param {boolean} usePerformance=false - If true, uses the Performance API (timeOrigin + now()). + * + * @returns {[number, number]} The current hrtime tuple [s, ns]. */ -Api.prototype.buildJsonPayload = function (data, callback) { - var payload = buildPayload(data); - var stringifyResult; - if (this.truncation) { - stringifyResult = this.truncation.truncate(payload); - } else { - stringifyResult = stringify(payload); - } - if (stringifyResult.error) { - if (callback) { - callback(stringifyResult.error); - } - return null; +function hrtime_now() { + var usePerformance = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + if (usePerformance) { + return add(hrtime_fromMillis(performance.timeOrigin), hrtime_fromMillis(performance.now())); } - return stringifyResult.value; -}; + return hrtime_fromMillis(Date.now()); +} /** + * Check if a value is a valid OpenTelemetry hrtime tuple. + * + * An hrtime tuple is an Array of exactly two numbers: + * [seconds, nanoseconds] + * + * @param {*} value – anything to test + * @returns {boolean} true if `value` is a [number, number] array of length 2 * - * @param jsonPayload - * @param callback + * @example + * isHrTime([ 1, 500 ]); // true + * isHrTime([ 0, 1e9 ]); // true + * isHrTime([ '1', 500 ]); // false + * isHrTime({ 0: 1, 1: 500 }); // false */ -Api.prototype.postJsonPayload = function (jsonPayload, callback) { - var transportOptions = apiUtility_transportOptions(this.transportOptions, 'POST'); - this.transport.postJsonPayload(this.accessToken, transportOptions, jsonPayload, callback); -}; -Api.prototype.configure = function (options) { - var oldOptions = this.oldOptions; - this.options = src_merge(oldOptions, options); - this.transportOptions = _getTransport(this.options, this.url); - this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url); - if (this.options.accessToken !== undefined) { - this.accessToken = this.options.accessToken; - } - return this; -}; -function _getTransport(options, url) { - return getTransportFromOptions(options, api_defaultOptions, url); -} -function _getOTLPTransport(options, url) { - var _options$tracing; - options = _objectSpread(_objectSpread({}, options), {}, { - endpoint: (_options$tracing = options.tracing) === null || _options$tracing === void 0 ? void 0 : _options$tracing.endpoint - }); - return getTransportFromOptions(options, OTLPDefaultOptions, url); +function isHrTime(value) { + return Array.isArray(value) && value.length === 2 && typeof value[0] === 'number' && typeof value[1] === 'number'; } -/* harmony default export */ var src_api = (Api); -;// ./src/logger.js -var _log = function log() {}; -var levels = { - debug: 0, - info: 1, - warn: 2, - error: 3, - disable: 4 -}; -var logger = { - error: function error() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - return _log('error', args); - }, - warn: function warn() { - for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - return _log('warn', args); - }, - info: function info() { - for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } - return _log('info', args); - }, - debug: function debug() { - for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; - } - return _log('debug', args); - }, - log: function log() { - for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { - args[_key5] = arguments[_key5]; - } - return _log('info', args); - }, - init: function init(_ref) { - var logLevel = _ref.logLevel; - _log = function _log(level, args) { - if (levels[level] < levels[logLevel]) return; - args.unshift('Rollbar:'); - console[level].apply(console, args); - }; - } -}; -/* harmony default export */ var src_logger = (logger); -;// ./src/browser/globalSetup.js -function captureUncaughtExceptions(window, handler, shim) { - if (!window) { - return; + +/** + * Methods for handling hrtime. OpenTelemetry uses the [seconds, nanoseconds] + * format for hrtime in the `ReadableSpan` interface. + * + * @example + * import hrtime from '@tracing/hrtime.js'; + * + * hrtime.fromMillis(1000); + * hrtime.toMillis([0, 1000]); + * hrtime.add([0, 0], [0, 1000]); + * hrtime.now(); + * hrtime.isHrTime([0, 1000]); + */ +/* harmony default export */ var hrtime = ({ + fromMillis: hrtime_fromMillis, + toMillis: toMillis, + toNanos: toNanos, + add: add, + now: hrtime_now, + isHrTime: isHrTime +}); +;// ./src/tracing/exporter.js +function exporter_typeof(o) { "@babel/helpers - typeof"; return exporter_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, exporter_typeof(o); } +function exporter_slicedToArray(r, e) { return exporter_arrayWithHoles(r) || exporter_iterableToArrayLimit(r, e) || exporter_unsupportedIterableToArray(r, e) || exporter_nonIterableRest(); } +function exporter_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function exporter_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function exporter_arrayWithHoles(r) { if (Array.isArray(r)) return r; } +function exporter_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = exporter_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || exporter_unsupportedIterableToArray(r) || _nonIterableSpread(); } +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function exporter_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return exporter_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? exporter_arrayLikeToArray(r, a) : void 0; } } +function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } +function _arrayWithoutHoles(r) { if (Array.isArray(r)) return exporter_arrayLikeToArray(r); } +function exporter_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function exporter_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function exporter_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, exporter_toPropertyKey(o.key), o); } } +function exporter_createClass(e, r, t) { return r && exporter_defineProperties(e.prototype, r), t && exporter_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function exporter_toPropertyKey(t) { var i = exporter_toPrimitive(t, "string"); return "symbol" == exporter_typeof(i) ? i : i + ""; } +function exporter_toPrimitive(t, r) { if ("object" != exporter_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != exporter_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + + +/** + * SpanExporter is responsible for exporting ReadableSpan objects + * and transforming them into the OTLP-compatible format. + */ +var SpanExporter = /*#__PURE__*/function () { + function SpanExporter(api) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + exporter_classCallCheck(this, SpanExporter); + this.api = api; + this.options = options; } - var oldOnError; - if (typeof handler._rollbarOldOnError === 'function') { - oldOnError = handler._rollbarOldOnError; - } else if (window.onerror) { - oldOnError = window.onerror; - while (oldOnError._rollbarOldOnError) { - oldOnError = oldOnError._rollbarOldOnError; + + /** + * Export spans to the span export queue + * + * @param {Array} spans - Array of ReadableSpan objects to export + * @param {Function} _resultCallback - Optional callback (not used) + */ + return exporter_createClass(SpanExporter, [{ + key: "export", + value: function _export(spans, _resultCallback) { + spanExportQueue.push.apply(spanExportQueue, _toConsumableArray(spans)); } - handler._rollbarOldOnError = oldOnError; - } - handler.handleAnonymousErrors(); - var fn = function fn() { - var args = Array.prototype.slice.call(arguments, 0); - _rollbarWindowOnError(window, handler, oldOnError, args); - }; - if (shim) { - fn._rollbarOldOnError = oldOnError; - } - window.onerror = fn; -} -function _rollbarWindowOnError(window, r, old, args) { - if (window._rollbarWrappedError) { - if (!args[4]) { - args[4] = window._rollbarWrappedError; + + /** + * Transforms an array of ReadableSpan objects into the OTLP format payload + * compatible with the Rollbar API. This follows the OpenTelemetry protocol + * specification for traces. + * + * @returns {Object} OTLP format payload for API transmission + */ + }, { + key: "toPayload", + value: function toPayload() { + var _this = this; + var spans = spanExportQueue.slice(); + spanExportQueue.length = 0; + if (!spans || !spans.length) { + return { + resourceSpans: [] + }; + } + var resource = spans[0] && spans[0].resource || {}; + var scopeMap = new Map(); + var _iterator = exporter_createForOfIteratorHelper(spans), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var span = _step.value; + var scopeKey = span.instrumentationScope ? "".concat(span.instrumentationScope.name, ":").concat(span.instrumentationScope.version) : 'default:1.0.0'; + if (!scopeMap.has(scopeKey)) { + scopeMap.set(scopeKey, { + scope: span.instrumentationScope || { + name: 'default', + version: '1.0.0', + attributes: [] + }, + spans: [] + }); + } + scopeMap.get(scopeKey).spans.push(this._transformSpan(span)); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return { + resourceSpans: [{ + resource: this._transformResource(resource), + scopeSpans: Array.from(scopeMap.values()).map(function (scopeData) { + return { + scope: _this._transformInstrumentationScope(scopeData.scope), + spans: scopeData.spans + }; + }) + }] + }; } - if (!args[5]) { - args[5] = window._rollbarWrappedError._rollbarContext; + + /** + * Sends the given payload to the Rollbar API. + * + * @param {String} payload - Serialized OTLP format payload + * @param {Object} headers - Optional request headers + * @returns {Promise} Promise that resolves when the request completes + */ + }, { + key: "post", + value: function post(payload) { + var headers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return this.api.postSpans(payload, headers); } - window._rollbarWrappedError = null; - } - var ret = r.handleUncaughtException.apply(r, args); - if (old) { - old.apply(window, args); - } - // Let other chained onerror handlers above run before setting this. - // If an error is thrown and caught within a chained onerror handler, - // Error.prepareStackTrace() will see that one before the one we want. - if (ret === 'anonymous') { - r.anonymousErrorsPending += 1; // See Rollbar.prototype.handleAnonymousErrors() - } -} -function captureUnhandledRejections(window, handler, shim) { - if (!window) { - return; - } - if (typeof window._rollbarURH === 'function' && window._rollbarURH.belongsToShim) { - window.removeEventListener('unhandledrejection', window._rollbarURH); - } - var rejectionHandler = function rejectionHandler(evt) { - var reason, promise, detail; - try { - reason = evt.reason; - } catch (e) { - reason = undefined; - } - try { - promise = evt.promise; - } catch (e) { - promise = '[unhandledrejection] error getting `promise` from event'; + /** + * Transforms a ReadableSpan into the OTLP Span format + * + * @private + * @param {Object} span - ReadableSpan object to transform + * @returns {Object} OTLP Span format + */ + }, { + key: "_transformSpan", + value: function _transformSpan(span) { + var _this2 = this; + var transformAttributes = function transformAttributes(attributes) { + return Object.entries(attributes || {}).map(function (_ref) { + var _ref2 = exporter_slicedToArray(_ref, 2), + key = _ref2[0], + value = _ref2[1]; + return { + key: key, + value: _this2._transformAnyValue(value) + }; + }); + }; + var transformEvents = function transformEvents(events) { + return (events || []).map(function (event) { + return { + timeUnixNano: hrtime.toNanos(event.time), + name: event.name, + attributes: transformAttributes(event.attributes) + }; + }); + }; + return { + traceId: span.spanContext.traceId, + spanId: span.spanContext.spanId, + parentSpanId: span.parentSpanId || '', + name: span.name, + kind: span.kind || 1, + // INTERNAL by default + startTimeUnixNano: hrtime.toNanos(span.startTime), + endTimeUnixNano: hrtime.toNanos(span.endTime), + attributes: transformAttributes(span.attributes), + events: transformEvents(span.events) + }; } - try { - detail = evt.detail; - if (!reason && detail) { - reason = detail.reason; - promise = detail.promise; - } - } catch (e) { - // Ignore + + /** + * Transforms a resource object into OTLP Resource format + * + * @private + * @param {Object} resource - Resource information + * @returns {Object} OTLP Resource format + */ + }, { + key: "_transformResource", + value: function _transformResource(resource) { + var _this3 = this; + var attributes = resource.attributes || {}; + var keyValues = Object.entries(attributes).map(function (_ref3) { + var _ref4 = exporter_slicedToArray(_ref3, 2), + key = _ref4[0], + value = _ref4[1]; + return { + key: key, + value: _this3._transformAnyValue(value) + }; + }); + return { + attributes: keyValues + }; } - if (!reason) { - reason = '[unhandledrejection] error getting `reason` from event'; + + /** + * Transforms an instrumentation scope into OTLP InstrumentationScope format + * + * @private + * @param {Object} scope - Instrumentation scope information + * @returns {Object} OTLP InstrumentationScope format + */ + }, { + key: "_transformInstrumentationScope", + value: function _transformInstrumentationScope(scope) { + var _this4 = this; + return { + name: scope.name || '', + version: scope.version || '', + attributes: (scope.attributes || []).map(function (attr) { + return { + key: attr.key, + value: _this4._transformAnyValue(attr.value) + }; + }) + }; } - if (handler && handler.handleUnhandledRejection) { - handler.handleUnhandledRejection(reason, promise); + + /** + * Transforms a JavaScript value into an OTLP AnyValue + * + * @private + * @param {any} value - Value to transform + * @returns {Object} OTLP AnyValue format + */ + }, { + key: "_transformAnyValue", + value: function _transformAnyValue(value) { + var _this5 = this; + if (value === null || value === undefined) { + return { + stringValue: '' + }; + } + var type = exporter_typeof(value); + if (type === 'string') { + return { + stringValue: value + }; + } else if (type === 'number') { + if (Number.isInteger(value)) { + return { + intValue: value.toString() + }; + } else { + return { + doubleValue: value + }; + } + } else if (type === 'boolean') { + return { + boolValue: value + }; + } else if (Array.isArray(value)) { + return { + arrayValue: { + values: value.map(function (v) { + return _this5._transformAnyValue(v); + }) + } + }; + } else if (type === 'object') { + return { + kvlistValue: { + values: Object.entries(value).map(function (_ref5) { + var _ref6 = exporter_slicedToArray(_ref5, 2), + k = _ref6[0], + v = _ref6[1]; + return { + key: k, + value: _this5._transformAnyValue(v) + }; + }) + } + }; + } + return { + stringValue: String(value) + }; } - }; - rejectionHandler.belongsToShim = shim; - window._rollbarURH = rejectionHandler; - window.addEventListener('unhandledrejection', rejectionHandler); + }]); +}(); +var spanExportQueue = []; +;// ./src/tracing/id.js +/** + * Generate a random hexadecimal ID of specified byte length + * + * @param {number} bytes - Number of bytes for the ID (default: 16) + * @returns {string} - Hexadecimal string representation + */ +function gen() { + var bytes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16; + var randomBytes = new Uint8Array(bytes); + crypto.getRandomValues(randomBytes); + var randHex = Array.from(randomBytes, function (byte) { + return byte.toString(16).padStart(2, '0'); + }).join(''); + return randHex; } -;// ./src/browser/transport/fetch.js -function fetch_typeof(o) { "@babel/helpers - typeof"; return fetch_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, fetch_typeof(o); } -function fetch_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function fetch_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? fetch_ownKeys(Object(t), !0).forEach(function (r) { fetch_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : fetch_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function fetch_defineProperty(e, r, t) { return (r = fetch_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function fetch_toPropertyKey(t) { var i = fetch_toPrimitive(t, "string"); return "symbol" == fetch_typeof(i) ? i : i + ""; } -function fetch_toPrimitive(t, r) { if ("object" != fetch_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != fetch_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - +/** + * Tracing id generation utils + * + * @example + * import id from './id.js'; + * + * const spanId = id.gen(8); // => "a1b2c3d4e5f6..." + */ +/* harmony default export */ var id = ({ + gen: gen +}); +;// ./src/tracing/session.js +function session_typeof(o) { "@babel/helpers - typeof"; return session_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, session_typeof(o); } +function session_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function session_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? session_ownKeys(Object(t), !0).forEach(function (r) { session_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : session_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function session_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function session_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, session_toPropertyKey(o.key), o); } } +function session_createClass(e, r, t) { return r && session_defineProperties(e.prototype, r), t && session_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function session_defineProperty(e, r, t) { return (r = session_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function session_toPropertyKey(t) { var i = session_toPrimitive(t, "string"); return "symbol" == session_typeof(i) ? i : i + ""; } +function session_toPrimitive(t, r) { if ("object" != session_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != session_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -function makeFetchRequest(_ref) { - var accessToken = _ref.accessToken, - url = _ref.url, - method = _ref.method, - payload = _ref.payload, - headers = _ref.headers, - callback = _ref.callback, - timeout = _ref.timeout; - var controller; - var timeoutId; - if (isFiniteNumber(timeout)) { - controller = new AbortController(); - timeoutId = setTimeout(function () { - controller.abort(); - }, timeout); - } - headers = fetch_objectSpread({ - 'Content-Type': 'application/json', - 'X-Rollbar-Access-Token': accessToken, - signal: controller && controller.signal - }, headers); - fetch(url, { - method: method, - headers: headers, - body: payload - }).then(function (response) { - if (timeoutId) clearTimeout(timeoutId); - var respHeaders = response.headers; - var isItemRoute = url.endsWith('/api/1/item/'); - var headers = isItemRoute ? { - 'Rollbar-Replay-Enabled': respHeaders.get('Rollbar-Replay-Enabled'), - 'Rollbar-Replay-RateLimit-Remaining': respHeaders.get('Rollbar-Replay-RateLimit-Remaining'), - 'Rollbar-Replay-RateLimit-Reset': respHeaders.get('Rollbar-Replay-RateLimit-Reset') - } : {}; - var json = response.json(); - callback(null, json, headers); - }).catch(function (error) { - src_logger.error(error.message); - callback(error); - }); -} -/* harmony default export */ var transport_fetch = (makeFetchRequest); -;// ./src/browser/transport/xhr.js -function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || xhr_unsupportedIterableToArray(r, e) || _nonIterableRest(); } -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function xhr_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return xhr_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? xhr_arrayLikeToArray(r, a) : void 0; } } -function xhr_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } -/*global XDomainRequest*/ - - - -function makeXhrRequest(_ref) { - var accessToken = _ref.accessToken, - url = _ref.url, - method = _ref.method, - payload = _ref.payload, - headers = _ref.headers, - callback = _ref.callback, - requestFactory = _ref.requestFactory, - timeout = _ref.timeout; - var request; - if (requestFactory) { - request = requestFactory(); - } else { - request = _createXMLHTTPObject(); - } - if (!request) { - // Give up, no way to send requests - return callback(new Error('No way to send a request')); +var SESSION_KEY = 'RollbarSession'; +var Session = /*#__PURE__*/function () { + function Session(tracing, options) { + session_classCallCheck(this, Session); + session_defineProperty(this, "_attributes", void 0); + this.options = options; + this.tracing = tracing; + this.window = tracing.window; + this.session = null; + this._attributes = {}; } - try { - try { - var _onreadystatechange = function onreadystatechange() { - try { - if (_onreadystatechange && request.readyState === 4) { - _onreadystatechange = undefined; - var parseResponse = jsonParse(request.responseText); - if (_isSuccess(request)) { - var isItemRoute = url.endsWith('/api/1/item/'); - var _headers = isItemRoute ? { - 'Rollbar-Replay-Enabled': request.getResponseHeader('Rollbar-Replay-Enabled'), - 'Rollbar-Replay-RateLimit-Remaining': request.getResponseHeader('Rollbar-Replay-RateLimit-Remaining'), - 'Rollbar-Replay-RateLimit-Reset': request.getResponseHeader('Rollbar-Replay-RateLimit-Reset') - } : {}; - callback(parseResponse.error, parseResponse.value, _headers); - return; - } else if (_isNormalFailure(request)) { - if (request.status === 403) { - // likely caused by using a server access token - var message = parseResponse.value && parseResponse.value.message; - src_logger.error(message); - } - // return valid http status codes - callback(new Error(String(request.status))); - } else { - // IE will return a status 12000+ on some sort of connection failure, - // so we return a blank error - // http://msdn.microsoft.com/en-us/library/aa383770%28VS.85%29.aspx - var msg = 'XHR response had no status code (likely connection failure)'; - callback(_newRetriableError(msg)); - } - } - } catch (ex) { - //jquery source mentions firefox may error out while accessing the - //request members if there is a network error - //https://github.com/jquery/jquery/blob/a938d7b1282fc0e5c52502c225ae8f0cef219f0a/src/ajax/xhr.js#L111 - var exc; - if (ex && ex.stack) { - exc = ex; - } else { - exc = new Error(ex); - } - callback(exc); - } - }; - request.open(method, url, true); - if (request.setRequestHeader) { - request.setRequestHeader('Content-Type', 'application/json'); - request.setRequestHeader('X-Rollbar-Access-Token', accessToken); - for (var _i = 0, _Object$entries = Object.entries(headers !== null && headers !== void 0 ? headers : {}); _i < _Object$entries.length; _i++) { - var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2), - h = _Object$entries$_i[0], - v = _Object$entries$_i[1]; - request.setRequestHeader(h, v); - } - } - if (isFiniteNumber(timeout)) { - request.timeout = timeout; + return session_createClass(Session, [{ + key: "init", + value: function init() { + var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + if (this.session) { + return this; } - request.onreadystatechange = _onreadystatechange; - request.send(payload); - } catch (e1) { - // Sending using the normal xmlhttprequest object didn't work, try XDomainRequest - if (typeof XDomainRequest !== 'undefined') { - // Assume we are in a really old browser which has a bunch of limitations: - // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx - - // Extreme paranoia: if we have XDomainRequest then we have a window, but just in case - if (!window || !window.location) { - return callback(new Error('No window available during request, unknown environment')); - } - - // If the current page is http, try and send over http - if (window.location.href.substring(0, 5) === 'http:' && url.substring(0, 5) === 'https') { - url = 'http' + url.substring(5); + this.getSession() || this.createSession(); + this.initSessionAttributes(attrs); + return this; + } + }, { + key: "getSession", + value: function getSession() { + try { + var serializedSession = this.window.sessionStorage.getItem(SESSION_KEY); + if (!serializedSession) { + return null; } - var xdomainrequest = new XDomainRequest(); - xdomainrequest.onprogress = function () {}; - xdomainrequest.ontimeout = function () { - var msg = 'Request timed out'; - var code = 'ETIMEDOUT'; - callback(_newRetriableError(msg, code)); - }; - xdomainrequest.onerror = function () { - callback(new Error('Error during request')); - }; - xdomainrequest.onload = function () { - var parseResponse = jsonParse(xdomainrequest.responseText); - callback(parseResponse.error, parseResponse.value); - }; - xdomainrequest.open(method, url, true); - xdomainrequest.send(payload); - } else { - callback(new Error('Cannot find a method to transport a request')); + this.session = JSON.parse(serializedSession); + } catch (_unused) { + return null; } + return this; } - } catch (e2) { - callback(e2); - } -} -function _createXMLHTTPObject() { - /* global ActiveXObject:false */ - - var factories = [function () { - return new XMLHttpRequest(); - }, function () { - return new ActiveXObject('Msxml2.XMLHTTP'); - }, function () { - return new ActiveXObject('Msxml3.XMLHTTP'); - }, function () { - return new ActiveXObject('Microsoft.XMLHTTP'); - }]; - var xmlhttp; - var i; - var numFactories = factories.length; - for (i = 0; i < numFactories; i++) { - try { - xmlhttp = factories[i](); - break; - } catch (e) { - // pass + }, { + key: "createSession", + value: function createSession() { + this.session = { + id: id.gen(), + createdAt: Date.now() + }; + return this.setSession(this.session); } - } - return xmlhttp; -} -function _isSuccess(r) { - return r && r.status && r.status === 200; -} -function _isNormalFailure(r) { - return r && isType(r.status, 'number') && r.status >= 400 && r.status < 600; -} -function _newRetriableError(message, code) { - var err = new Error(message); - err.code = code || 'ENOTFOUND'; - return err; -} -/* harmony default export */ var xhr = (makeXhrRequest); -;// ./src/browser/transport.js - - - - -/* - * accessToken may be embedded in payload but that should not - * be assumed - * - * options: { - * hostname - * protocol - * path - * port - * method - * transport ('xhr' | 'fetch') - * } - * - * params is an object containing key/value pairs. These - * will be appended to the path as 'key=value&key=value' - * - * payload is an unserialized object - */ -function Transport(truncation) { - this.truncation = truncation; -} -Transport.prototype.get = function (accessToken, options, params, callback, requestFactory) { - if (!callback || !isFunction(callback)) { - callback = function callback() {}; - } - addParamsAndAccessTokenToPath(accessToken, options, params); - var method = 'GET'; - var url = formatUrl(options); - this._makeZoneRequest({ - accessToken: accessToken, - url: url, - method: method, - callback: callback, - requestFactory: requestFactory, - timeout: options.timeout, - transport: options.transport - }); -}; -Transport.prototype.post = function (_ref) { - var _this = this; - var accessToken = _ref.accessToken, - options = _ref.options, - payload = _ref.payload, - headers = _ref.headers, - callback = _ref.callback, - requestFactory = _ref.requestFactory; - return function (payload) { - if (!callback || !isFunction(callback)) { - callback = function callback() {}; + }, { + key: "setSession", + value: function setSession(session) { + var sessionString = JSON.stringify(session); + try { + this.window.sessionStorage.setItem(SESSION_KEY, sessionString); + } catch (_unused2) { + return null; + } + return this; } - if (!payload) { - return callback(new Error('Cannot send empty request')); + }, { + key: "attributes", + get: function get() { + return this._attributes; } - var stringifyResult; - // Check payload.body to ensure only items are truncated. - if (_this.truncation && payload.body) { - stringifyResult = _this.truncation.truncate(payload); - } else { - stringifyResult = stringify(payload); - } - if (stringifyResult.error) { - return callback(stringifyResult.error); - } - var payload = stringifyResult.value; - var method = 'POST'; - var url = formatUrl(options); - _this._makeZoneRequest({ - accessToken: accessToken, - url: url, - method: method, - payload: payload, - headers: headers, - callback: callback, - requestFactory: requestFactory, - timeout: options.timeout, - transport: options.transport - }); - }(payload); -}; -Transport.prototype.postJsonPayload = function (accessToken, options, payload, callback, requestFactory) { - if (!callback || !isFunction(callback)) { - callback = function callback() {}; - } - var method = 'POST'; - var url = formatUrl(options); - this._makeZoneRequest({ - accessToken: accessToken, - url: url, - method: method, - payload: payload, - callback: callback, - requestFactory: requestFactory, - timeout: options.timeout, - transport: options.transport - }); + }, { + key: "setAttributes", + value: function setAttributes(attributes) { + this._attributes = session_objectSpread(session_objectSpread({}, this._attributes), attributes); + return this; + } + }, { + key: "setUser", + value: function setUser(user) { + this.setAttributes({ + 'user.id': user === null || user === void 0 ? void 0 : user.id, + 'user.email': user === null || user === void 0 ? void 0 : user.email, + 'user.name': (user === null || user === void 0 ? void 0 : user.name) || (user === null || user === void 0 ? void 0 : user.username) + }); + return this; + } + }, { + key: "initSessionAttributes", + value: function initSessionAttributes(attrs) { + var _navigator$userAgentD, _navigator$userAgentD2, _navigator$userAgentD3; + this.setAttributes(session_objectSpread({ + 'session.id': this.session.id, + 'browser.brands': (_navigator$userAgentD = navigator.userAgentData) === null || _navigator$userAgentD === void 0 ? void 0 : _navigator$userAgentD.brands, + 'browser.language': navigator.language, + 'browser.mobile': (_navigator$userAgentD2 = navigator.userAgentData) === null || _navigator$userAgentD2 === void 0 ? void 0 : _navigator$userAgentD2.mobile, + 'browser.platform': (_navigator$userAgentD3 = navigator.userAgentData) === null || _navigator$userAgentD3 === void 0 ? void 0 : _navigator$userAgentD3.platform, + 'client.address': '$remote_ip', + // updated at the API + 'rollbar.notifier.framework': 'browser-js', + 'user_agent.original': navigator.userAgent + }, attrs)); + return this; + } + }]); +}(); +;// ./src/logger.js +var _log = function log() {}; +var levels = { + debug: 0, + info: 1, + warn: 2, + error: 3, + disable: 4 }; +var logger = { + error: function error() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + return _log('error', args); + }, + warn: function warn() { + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + return _log('warn', args); + }, + info: function info() { + for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; + } + return _log('info', args); + }, + debug: function debug() { + for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { + args[_key4] = arguments[_key4]; + } + return _log('debug', args); + }, + log: function log() { + for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { + args[_key5] = arguments[_key5]; + } + return _log('info', args); + }, + init: function init(_ref) { + var logLevel = _ref.logLevel; + _log = function _log(level, args) { + if (levels[level] < levels[logLevel]) return; + args.unshift('Rollbar:'); -// Wraps `_makeRequest` if zone.js is being used, ensuring that Rollbar -// API calls are not intercepted by any child forked zones. -// This is equivalent to `NgZone.runOutsideAngular` in Angular. -Transport.prototype._makeZoneRequest = function () { - var gWindow = typeof window != 'undefined' && window || typeof self != 'undefined' && self; - // Whenever zone.js is loaded and `Zone` is exposed globally, access - // the root zone to ensure that requests are always made within it. - // This approach is framework-agnostic, regardless of which - // framework zone.js is used with. - var rootZone = gWindow && gWindow.Zone && gWindow.Zone.root; - var args = Array.prototype.slice.call(arguments); - if (rootZone) { - var self = this; - rootZone.run(function () { - self._makeRequest.apply(undefined, args); - }); - } else { - this._makeRequest.apply(undefined, args); - } -}; -Transport.prototype._makeRequest = function (params) { - var payload = params.payload, - callback = params.callback, - transport = params.transport; - if (typeof RollbarProxy !== 'undefined') { - return _proxyRequest(payload, callback); - } - if (transport === 'fetch') { - transport_fetch(params); - } else { - xhr(params); + // eslint-disable-next-line no-console + console[level].apply(console, args); + }; } }; +/* harmony default export */ var src_logger = (logger); +;// ./src/tracing/spanProcessor.js +function spanProcessor_typeof(o) { "@babel/helpers - typeof"; return spanProcessor_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, spanProcessor_typeof(o); } +function spanProcessor_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = spanProcessor_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function spanProcessor_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return spanProcessor_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? spanProcessor_arrayLikeToArray(r, a) : void 0; } } +function spanProcessor_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function spanProcessor_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function spanProcessor_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, spanProcessor_toPropertyKey(o.key), o); } } +function spanProcessor_createClass(e, r, t) { return r && spanProcessor_defineProperties(e.prototype, r), t && spanProcessor_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function spanProcessor_toPropertyKey(t) { var i = spanProcessor_toPrimitive(t, "string"); return "symbol" == spanProcessor_typeof(i) ? i : i + ""; } +function spanProcessor_toPrimitive(t, r) { if ("object" != spanProcessor_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != spanProcessor_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -/* global RollbarProxy */ -function _proxyRequest(json, callback) { - var rollbarProxy = new RollbarProxy(); - rollbarProxy.sendJsonPayload(json, function (_msg) { - /* do nothing */ - }, function (err) { - callback(new Error(err)); - }); -} -/* harmony default export */ var browser_transport = (Transport); -;// ./src/browser/url.js -// See https://nodejs.org/docs/latest/api/url.html -function parse(url) { - var result = { - protocol: null, - auth: null, - host: null, - path: null, - hash: null, - href: url, - hostname: null, - port: null, - pathname: null, - search: null, - query: null - }; - var i, last; - i = url.indexOf('//'); - if (i !== -1) { - result.protocol = url.substring(0, i); - last = i + 2; - } else { - last = 0; - } - i = url.indexOf('@', last); - if (i !== -1) { - result.auth = url.substring(last, i); - last = i + 1; +var SpanProcessor = /*#__PURE__*/function () { + function SpanProcessor(exporter) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + spanProcessor_classCallCheck(this, SpanProcessor); + this.exporter = exporter; + this.options = options; + this.pendingSpans = new Map(); + this.transforms = [this.userTransform.bind(this)]; } - i = url.indexOf('/', last); - if (i === -1) { - i = url.indexOf('?', last); - if (i === -1) { - i = url.indexOf('#', last); - if (i === -1) { - result.host = url.substring(last); - } else { - result.host = url.substring(last, i); - result.hash = url.substring(i); - } - result.hostname = result.host.split(':')[0]; - result.port = result.host.split(':')[1]; - if (result.port) { - result.port = parseInt(result.port, 10); - } - return result; - } else { - result.host = url.substring(last, i); - result.hostname = result.host.split(':')[0]; - result.port = result.host.split(':')[1]; - if (result.port) { - result.port = parseInt(result.port, 10); - } - last = i; + return spanProcessor_createClass(SpanProcessor, [{ + key: "addTransform", + value: function addTransform(transformFn) { + this.transforms.unshift(transformFn); } - } else { - result.host = url.substring(last, i); - result.hostname = result.host.split(':')[0]; - result.port = result.host.split(':')[1]; - if (result.port) { - result.port = parseInt(result.port, 10); + }, { + key: "userTransform", + value: function userTransform(span) { + if (this.options.transformSpan) { + this.options.transformSpan({ + span: span + }); + } } - last = i; - } - i = url.indexOf('#', last); - if (i === -1) { - result.path = url.substring(last); - } else { - result.path = url.substring(last, i); - result.hash = url.substring(i); - } - if (result.path) { - var pathParts = result.path.split('?'); - result.pathname = pathParts[0]; - result.query = pathParts[1]; - result.search = result.query ? '?' + result.query : null; - } - return result; -} + }, { + key: "applyTransforms", + value: function applyTransforms(span) { + var _iterator = spanProcessor_createForOfIteratorHelper(this.transforms), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var transform = _step.value; + try { + transform(span); + } catch (e) { + src_logger.error('Error running span transform callback', e); + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + } + }, { + key: "onStart", + value: function onStart(span, _parentContext) { + this.pendingSpans.set(span.span.spanContext.spanId, span); + } + }, { + key: "onEnd", + value: function onEnd(span) { + this.applyTransforms(span.span); + this.exporter.export([span.export()]); + this.pendingSpans.delete(span.span.spanContext.spanId); + } + }]); +}(); +;// ./src/tracing/span.js +function span_typeof(o) { "@babel/helpers - typeof"; return span_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, span_typeof(o); } +function span_slicedToArray(r, e) { return span_arrayWithHoles(r) || span_iterableToArrayLimit(r, e) || span_unsupportedIterableToArray(r, e) || span_nonIterableRest(); } +function span_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function span_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return span_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? span_arrayLikeToArray(r, a) : void 0; } } +function span_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function span_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function span_arrayWithHoles(r) { if (Array.isArray(r)) return r; } +function span_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function span_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, span_toPropertyKey(o.key), o); } } +function span_createClass(e, r, t) { return r && span_defineProperties(e.prototype, r), t && span_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function span_toPropertyKey(t) { var i = span_toPrimitive(t, "string"); return "symbol" == span_typeof(i) ? i : i + ""; } +function span_toPrimitive(t, r) { if ("object" != span_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != span_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -;// ./node_modules/error-stack-parser-es/dist/lite.mjs -var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\S+:\d+/; -var CHROME_IE_STACK_REGEXP = /^\s*at .*(\S+:\d+|\(native\))/m; -var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\[native code\])?$/; -function lite_parse(error, options) { - if (typeof error.stacktrace !== "undefined" || typeof error["opera#sourceloc"] !== "undefined") return parseOpera(error, options);else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) return parseV8OrIE(error, options);else if (error.stack) return parseFFOrSafari(error, options);else if (options !== null && options !== void 0 && options.allowEmpty) return [];else throw new Error("Cannot parse given Error object"); -} -function parseStack(stackString, options) { - if (stackString.match(CHROME_IE_STACK_REGEXP)) return parseV8OrIeString(stackString, options);else return parseFFOrSafariString(stackString, options); -} -function extractLocation(urlLike) { - if (!urlLike.includes(":")) return [urlLike, undefined, undefined]; - var regExp = /(.+?)(?::(\d+))?(?::(\d+))?$/; - var parts = regExp.exec(urlLike.replace(/[()]/g, "")); - return [parts[1], parts[2] || undefined, parts[3] || undefined]; -} -function applySlice(lines, options) { - if (options && options.slice != null) { - if (Array.isArray(options.slice)) return lines.slice(options.slice[0], options.slice[1]); - return lines.slice(0, options.slice); - } - return lines; -} -function parseV8OrIE(error, options) { - return parseV8OrIeString(error.stack, options); -} -function parseV8OrIeString(stack, options) { - var filtered = applySlice(stack.split("\n").filter(function (line) { - return !!line.match(CHROME_IE_STACK_REGEXP); - }), options); - return filtered.map(function (line) { - if (line.includes("(eval ")) { - line = line.replace(/eval code/g, "eval").replace(/(\(eval at [^()]*)|(,.*$)/g, ""); +var Span = /*#__PURE__*/function () { + function Span(options) { + span_classCallCheck(this, Span); + this.usePerformance = options.usePerformance; + this.initReadableSpan(options); + this.spanProcessor = options.spanProcessor; + this.spanProcessor.onStart(this, options.context); + if (options.attributes) { + this.setAttributes(options.attributes); } - var sanitizedLine = line.replace(/^\s+/, "").replace(/\(eval code/g, "(").replace(/^.*?\s+/, ""); - var location = sanitizedLine.match(/ (\(.+\)$)/); - sanitizedLine = location ? sanitizedLine.replace(location[0], "") : sanitizedLine; - var locationParts = extractLocation(location ? location[1] : sanitizedLine); - var functionName = location && sanitizedLine || undefined; - var fileName = ["eval", ""].includes(locationParts[0]) ? undefined : locationParts[0]; - return { - function: functionName, - file: fileName, - line: locationParts[1] ? +locationParts[1] : undefined, - col: locationParts[2] ? +locationParts[2] : undefined, - raw: line - }; - }); -} -function parseFFOrSafari(error, options) { - return parseFFOrSafariString(error.stack, options); -} -function parseFFOrSafariString(stack, options) { - var filtered = applySlice(stack.split("\n").filter(function (line) { - return !line.match(SAFARI_NATIVE_CODE_REGEXP); - }), options); - return filtered.map(function (line) { - if (line.includes(" > eval")) line = line.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g, ":$1"); - if (!line.includes("@") && !line.includes(":")) { - return { - function: line - }; - } else { - var functionNameRegex = /(([^\n\r"\u2028\u2029]*".[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*(?:@[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*)*(?:[\n\r\u2028\u2029][^@]*)?)?[^@]*)@/; - var matches = line.match(functionNameRegex); - var functionName = matches && matches[1] ? matches[1] : undefined; - var locationParts = extractLocation(line.replace(functionNameRegex, "")); - return { - function: functionName, - file: locationParts[0], - line: locationParts[1] ? +locationParts[1] : undefined, - col: locationParts[2] ? +locationParts[2] : undefined, - raw: line + return this; + } + return span_createClass(Span, [{ + key: "initReadableSpan", + value: function initReadableSpan(options) { + var _options$session; + this.span = { + name: options.name, + kind: options.kind, + spanContext: options.spanContext, + parentSpanId: options.parentSpanId, + startTime: options.startTime || hrtime.now(options.usePerformance), + endTime: [0, 0], + status: { + code: 0, + message: '' + }, + attributes: { + 'session.id': (_options$session = options.session) === null || _options$session === void 0 ? void 0 : _options$session.id + }, + links: [], + events: [], + duration: 0, + ended: false, + resource: options.resource, + instrumentationScope: options.scope, + droppedAttributesCount: 0, + droppedEventsCount: 0, + droppedLinksCount: 0 }; } - }); -} -function parseOpera(e, options) { - if (!e.stacktrace || e.message.includes("\n") && e.message.split("\n").length > e.stacktrace.split("\n").length) return parseOpera9(e);else if (!e.stack) return parseOpera10(e);else return parseOpera11(e, options); -} -function parseOpera9(e, options) { - var lineRE = /Line (\d+).*script (?:in )?(\S+)/i; - var lines = e.message.split("\n"); - var result = []; - for (var i = 2, len = lines.length; i < len; i += 2) { - var match = lineRE.exec(lines[i]); - if (match) { - result.push({ - file: match[2], - line: +match[1], - raw: lines[i] - }); + }, { + key: "spanContext", + value: function spanContext() { + return this.span.spanContext; } - } - return applySlice(result, options); -} -function parseOpera10(e, options) { - var lineRE = /Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i; - var lines = e.stacktrace.split("\n"); - var result = []; - for (var i = 0, len = lines.length; i < len; i += 2) { - var match = lineRE.exec(lines[i]); - if (match) { - result.push({ - function: match[3] || undefined, - file: match[2], - line: match[1] ? +match[1] : undefined, - raw: lines[i] + }, { + key: "spanId", + get: function get() { + return this.span.spanContext.spanId; + } + }, { + key: "traceId", + get: function get() { + return this.span.spanContext.traceId; + } + }, { + key: "setAttribute", + value: function setAttribute(key, value) { + if (value == null || this.span.ended) return this; + if (key.length === 0) return this; + this.span.attributes[key] = value; + return this; + } + }, { + key: "setAttributes", + value: function setAttributes(attributes) { + for (var _i = 0, _Object$entries = Object.entries(attributes); _i < _Object$entries.length; _i++) { + var _Object$entries$_i = span_slicedToArray(_Object$entries[_i], 2), + k = _Object$entries$_i[0], + v = _Object$entries$_i[1]; + this.setAttribute(k, v); + } + return this; + } + }, { + key: "addEvent", + value: function addEvent(name) { + var attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var time = arguments.length > 2 ? arguments[2] : undefined; + if (this.span.ended) return this; + this.span.events.push({ + name: name, + attributes: attributes, + time: time || hrtime.now(), + droppedAttributesCount: 0 }); + return this; } - } - return applySlice(result, options); -} -function parseOpera11(error, options) { - var filtered = applySlice( - // @ts-expect-error missing stack property - error.stack.split("\n").filter(function (line) { - return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/); - }), options); - return filtered.map(function (line) { - var tokens = line.split("@"); - var locationParts = extractLocation(tokens.pop()); - var functionCall = tokens.shift() || ""; - var functionName = functionCall.replace(//, "$2").replace(/\([^)]*\)/g, "") || undefined; - var argsRaw; - if (functionCall.match(/\(([^)]*)\)/)) argsRaw = functionCall.replace(/^[^(]+\(([^)]*)\)$/, "$1"); - var args = argsRaw === undefined || argsRaw === "[arguments not available]" ? undefined : argsRaw.split(","); - return { - function: functionName, - args: args, - file: locationParts[0], - line: locationParts[1] ? +locationParts[1] : undefined, - col: locationParts[2] ? +locationParts[2] : undefined, - raw: line - }; - }); -} - -;// ./node_modules/error-stack-parser-es/dist/index.mjs - - -function stackframesLiteToStackframes(liteStackframes) { - return liteStackframes.map(function (liteStackframe) { - return { - functionName: liteStackframe.function, - args: liteStackframe.args, - fileName: liteStackframe.file, - lineNumber: liteStackframe.line, - columnNumber: liteStackframe.col, - source: liteStackframe.raw - }; - }); -} -function dist_parse(error, options) { - return stackframesLiteToStackframes(lite_parse(error, options)); -} -function dist_parseV8OrIE(error) { - return stackframesLiteToStackframes(parseV8OrIE$1(error)); -} -function dist_parseFFOrSafari(error) { - return stackframesLiteToStackframes(parseFFOrSafari$1(error)); -} -function dist_parseOpera(e) { - return stackframesLiteToStackframes(parseOpera$1(e)); -} -function dist_parseOpera9(e) { - return stackframesLiteToStackframes(parseOpera9$1(e)); -} -function dist_parseOpera10(e) { - return stackframesLiteToStackframes(parseOpera10$1(e)); -} -function dist_parseOpera11(error) { - return stackframesLiteToStackframes(parseOpera11$1(error)); -} - -;// ./src/errorParser.js - -var UNKNOWN_FUNCTION = '?'; -var ERR_CLASS_REGEXP = new RegExp('^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): '); -function guessFunctionName() { - return UNKNOWN_FUNCTION; -} -function gatherContext() { - return null; -} -function Frame(stackFrame) { - var data = {}; - data._stackFrame = stackFrame; - data.url = stackFrame.fileName; - data.line = stackFrame.lineNumber; - data.func = stackFrame.functionName; - data.column = stackFrame.columnNumber; - data.args = stackFrame.args; - data.context = gatherContext(); - return data; -} -function Stack(exception, skip) { - function getStack() { - var parserStack = []; - skip = skip || 0; - try { - parserStack = dist_parse(exception); - } catch (e) { - parserStack = []; + }, { + key: "isRecording", + value: function isRecording() { + return this.span.ended === false; } - var stack = []; - for (var i = skip; i < parserStack.length; i++) { - stack.push(new Frame(parserStack[i])); + }, { + key: "end", + value: function end(attributes, time) { + if (attributes) this.setAttributes(attributes); + this.span.endTime = time || hrtime.now(this.usePerformance); + this.span.ended = true; + this.spanProcessor.onEnd(this); } - return stack; - } - return { - stack: getStack(), - message: exception.message, - name: _mostSpecificErrorName(exception), - rawStack: exception.stack, - rawException: exception - }; -} -function errorParser_parse(e, skip) { - var err = e; - if (err.nested || err.cause) { - var traceChain = []; - while (err) { - traceChain.push(new Stack(err, skip)); - err = err.nested || err.cause; - skip = 0; // Only apply skip value to primary error + }, { + key: "export", + value: function _export() { + return this.span; } + }]); +}(); +;// ./src/tracing/tracer.js +function tracer_typeof(o) { "@babel/helpers - typeof"; return tracer_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, tracer_typeof(o); } +function tracer_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function tracer_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? tracer_ownKeys(Object(t), !0).forEach(function (r) { tracer_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : tracer_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function tracer_defineProperty(e, r, t) { return (r = tracer_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function tracer_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function tracer_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, tracer_toPropertyKey(o.key), o); } } +function tracer_createClass(e, r, t) { return r && tracer_defineProperties(e.prototype, r), t && tracer_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function tracer_toPropertyKey(t) { var i = tracer_toPrimitive(t, "string"); return "symbol" == tracer_typeof(i) ? i : i + ""; } +function tracer_toPrimitive(t, r) { if ("object" != tracer_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != tracer_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - // Return primary error with full trace chain attached. - traceChain[0].traceChain = traceChain; - return traceChain[0]; - } else { - return new Stack(err, skip); - } -} -function guessErrorClass(errMsg) { - if (!errMsg || !errMsg.match) { - return ['Unknown error. There was no error message to display.', '']; - } - var errClassMatch = errMsg.match(ERR_CLASS_REGEXP); - var errClass = '(unknown)'; - if (errClassMatch) { - errClass = errClassMatch[errClassMatch.length - 1]; - errMsg = errMsg.replace((errClassMatch[errClassMatch.length - 2] || '') + errClass + ':', ''); - errMsg = errMsg.replace(/(^[\s]+|[\s]+$)/g, ''); - } - return [errClass, errMsg]; -} -// * Prefers any value over an empty string -// * Prefers any value over 'Error' where possible -// * Prefers name over constructor.name when both are more specific than 'Error' -function _mostSpecificErrorName(error) { - var name = error.name && error.name.length && error.name; - var constructorName = error.constructor.name && error.constructor.name.length && error.constructor.name; - if (!name || !constructorName) { - return name || constructorName; - } - if (name === 'Error') { - return constructorName; +var Tracer = /*#__PURE__*/function () { + function Tracer(tracing, spanProcessor) { + tracer_classCallCheck(this, Tracer); + this.spanProcessor = spanProcessor; + this.tracing = tracing; } - return name; -} -/* harmony default export */ var errorParser = ({ - guessFunctionName: guessFunctionName, - guessErrorClass: guessErrorClass, - gatherContext: gatherContext, - parse: errorParser_parse, - Stack: Stack, - Frame: Frame -}); -;// ./src/browser/transforms.js + return tracer_createClass(Tracer, [{ + key: "startSpan", + value: function startSpan(name) { + var _this$tracing$resourc, _options$resource, _this$tracing$session; + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.tracing.contextManager.active(); + var parentSpan = this.tracing.getSpan(context); + var parentSpanContext = parentSpan === null || parentSpan === void 0 ? void 0 : parentSpan.spanContext(); + var spanId = id.gen(8); + var traceId; + var traceFlags = 0; + var traceState = null; + var parentSpanId; + if (parentSpanContext) { + traceId = parentSpanContext.traceId; + traceState = parentSpanContext.traceState; + parentSpanId = parentSpanContext.spanId; + } else { + traceId = id.gen(16); + } + var kind = 0; + var spanContext = { + traceId: traceId, + spanId: spanId, + traceFlags: traceFlags, + traceState: traceState + }; + var resource = { + attributes: tracer_objectSpread(tracer_objectSpread({}, ((_this$tracing$resourc = this.tracing.resource) === null || _this$tracing$resourc === void 0 ? void 0 : _this$tracing$resourc.attributes) || {}), ((_options$resource = options.resource) === null || _options$resource === void 0 ? void 0 : _options$resource.attributes) || {}) + }; + var span = new Span({ + resource: resource, + scope: this.tracing.scope, + session: (_this$tracing$session = this.tracing.session) === null || _this$tracing$session === void 0 ? void 0 : _this$tracing$session.session, + context: context, + spanContext: spanContext, + name: name, + kind: kind, + parentSpanId: parentSpanId, + spanProcessor: this.spanProcessor, + startTime: options.startTime, + usePerformance: options.usePerformance + }); + return span; + } + }]); +}(); +;// ./src/tracing/tracing.js +function tracing_typeof(o) { "@babel/helpers - typeof"; return tracing_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, tracing_typeof(o); } +function tracing_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function tracing_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? tracing_ownKeys(Object(t), !0).forEach(function (r) { tracing_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : tracing_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function tracing_defineProperty(e, r, t) { return (r = tracing_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function tracing_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function tracing_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, tracing_toPropertyKey(o.key), o); } } +function tracing_createClass(e, r, t) { return r && tracing_defineProperties(e.prototype, r), t && tracing_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function tracing_toPropertyKey(t) { var i = tracing_toPrimitive(t, "string"); return "symbol" == tracing_typeof(i) ? i : i + ""; } +function tracing_toPrimitive(t, r) { if ("object" != tracing_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != tracing_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -function handleDomException(item, options, callback) { - if (item.err && errorParser.Stack(item.err).name === 'DOMException') { - var originalError = new Error(); - originalError.name = item.err.name; - originalError.message = item.err.message; - originalError.stack = item.err.stack; - originalError.nested = item.err; - item.err = originalError; + + + +var SPAN_KEY = createContextKey('Rollbar Context Key SPAN'); +var Tracing = /*#__PURE__*/function () { + function Tracing(gWindow, api, options) { + tracing_classCallCheck(this, Tracing); + this.api = api; + this.options = options; + this.window = gWindow; + if (this.window.sessionStorage) { + this.session = new Session(this, options); + } + this.createTracer(); } - callback(null, item); -} -function handleItemWithError(item, options, callback) { - item.data = item.data || {}; - if (item.err) { - try { - item.stackInfo = item.err._savedStackTrace || errorParser.parse(item.err, item.skipFrames); - if (options.addErrorContext) { - transforms_addErrorContext(item); + return tracing_createClass(Tracing, [{ + key: "configure", + value: function configure(options) { + // Options merge happens before configure is called, so we can just replace. + this.options = options; + } + }, { + key: "initSession", + value: function initSession() { + if (this.session) { + this.session.init(); } - } catch (e) { - src_logger.error('Error while parsing the error object.', e); - try { - item.message = item.err.message || item.err.description || item.message || String(item.err); - } catch (e2) { - item.message = String(item.err) || String(e2); + } + }, { + key: "sessionId", + get: function get() { + if (this.session) { + return this.session.session.id; } - delete item.err; + return null; } - } - callback(null, item); -} -function transforms_addErrorContext(item) { - var chain = []; - var err = item.err; - chain.push(err); - while (err.nested || err.cause) { - err = err.nested || err.cause; - chain.push(err); - } - addErrorContext(item, chain); -} -function ensureItemHasSomethingToSay(item, options, callback) { - if (!item.message && !item.stackInfo && !item.custom) { - callback(new Error('No message, stack info, or custom data'), null); - } - callback(null, item); -} -function addBaseInfo(item, options, callback) { - var environment = options.payload && options.payload.environment || options.environment; - item.data = src_merge(item.data, { - environment: environment, - level: item.level, - endpoint: options.endpoint, - platform: 'browser', - framework: 'browser-js', - language: 'javascript', - server: {}, - uuid: item.uuid, - notifier: { - name: 'rollbar-browser-js', - version: options.version - }, - custom: item.custom - }); - callback(null, item); -} -function addRequestInfo(window) { - return function (item, options, callback) { - var requestInfo = {}; - if (window && window.location) { - requestInfo.url = window.location.href; - requestInfo.query_string = window.location.search; + }, { + key: "resource", + get: function get() { + var _this$options$payload, _this$options$payload2; + return { + attributes: tracing_objectSpread(tracing_objectSpread({}, this.options.resource || {}), {}, { + 'rollbar.environment': (_this$options$payload = (_this$options$payload2 = this.options.payload) === null || _this$options$payload2 === void 0 ? void 0 : _this$options$payload2.environment) !== null && _this$options$payload !== void 0 ? _this$options$payload : this.options.environment + }) + }; } - var remoteString = '$remote_ip'; - if (!options.captureIp) { - remoteString = null; - } else if (options.captureIp !== true) { - remoteString += '_anonymize'; + }, { + key: "scope", + get: function get() { + return { + name: 'rollbar-browser-js', + version: this.options.version + }; } - if (remoteString) requestInfo.user_ip = remoteString; - if (Object.keys(requestInfo).length > 0) { - set(item, 'data.request', requestInfo); + }, { + key: "idGen", + value: function idGen() { + var bytes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16; + return id.gen(bytes); } - callback(null, item); - }; -} -function addClientInfo(window) { - return function (item, options, callback) { - if (!window) { - return callback(null, item); + }, { + key: "createTracer", + value: function createTracer() { + this.contextManager = new ContextManager(); + this.exporter = new SpanExporter(this.api, this.options); + this.spanProcessor = new SpanProcessor(this.exporter, this.options.tracing); + this.tracer = new Tracer(this, this.spanProcessor); } - var nav = window.navigator || {}; - var scr = window.screen || {}; - set(item, 'data.client', { - runtime_ms: item.timestamp - window._rollbarStartTime, - timestamp: Math.round(item.timestamp / 1000), - javascript: { - browser: nav.userAgent, - language: nav.language, - cookie_enabled: nav.cookieEnabled, - screen: { - width: scr.width, - height: scr.height - } + }, { + key: "getTracer", + value: function getTracer() { + return this.tracer; + } + }, { + key: "addSpanTransform", + value: function addSpanTransform(transformFn) { + this.spanProcessor.addTransform(transformFn); + } + }, { + key: "getSpan", + value: function getSpan() { + var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.contextManager.active(); + return context.getValue(SPAN_KEY); + } + }, { + key: "setSpan", + value: function setSpan() { + var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.contextManager.active(); + var span = arguments.length > 1 ? arguments[1] : undefined; + return context.setValue(SPAN_KEY, span); + } + }, { + key: "startSpan", + value: function startSpan(name) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.contextManager.active(); + return this.tracer.startSpan(name, options, context); + } + }, { + key: "with", + value: function _with(context, fn, thisArg) { + var _this$contextManager; + for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { + args[_key - 3] = arguments[_key]; } - }); - callback(null, item); - }; -} -function addPluginInfo(window) { - return function (item, options, callback) { - if (!window || !window.navigator) { - return callback(null, item); + return (_this$contextManager = this.contextManager).with.apply(_this$contextManager, [context, fn, thisArg].concat(args)); } - var plugins = []; - var navPlugins = window.navigator.plugins || []; - var cur; - for (var i = 0, l = navPlugins.length; i < l; ++i) { - cur = navPlugins[i]; - plugins.push({ - name: cur.name, - description: cur.description - }); + }, { + key: "withSpan", + value: function withSpan(name, options, fn, thisArg) { + var span = this.startSpan(name, options); + return this.with(this.setSpan(this.contextManager.active(), span), fn, thisArg, span); } - set(item, 'data.client.javascript.plugins', plugins); - callback(null, item); - }; + }]); +}(); + +;// ./src/truncation.js +function truncation_slicedToArray(r, e) { return truncation_arrayWithHoles(r) || truncation_iterableToArrayLimit(r, e) || truncation_unsupportedIterableToArray(r, e) || truncation_nonIterableRest(); } +function truncation_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function truncation_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function truncation_arrayWithHoles(r) { if (Array.isArray(r)) return r; } +function truncation_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = truncation_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function truncation_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return truncation_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? truncation_arrayLikeToArray(r, a) : void 0; } } +function truncation_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } + + +function raw(payload, jsonBackup) { + return [payload, stringify(payload, jsonBackup)]; } -function addBody(item, options, callback) { - if (item.stackInfo) { - if (item.stackInfo.traceChain) { - addBodyTraceChain(item, options, callback); - } else { - addBodyTrace(item, options, callback); +function selectFrames(frames, range) { + var len = frames.length; + if (len > range * 2) { + return frames.slice(0, range).concat(frames.slice(len - range)); + } + return frames; +} +function truncateFrames(payload, jsonBackup, range) { + range = typeof range === 'undefined' ? 30 : range; + var body = payload.data.body; + var frames; + if (body.trace_chain) { + var chain = body.trace_chain; + var _iterator = truncation_createForOfIteratorHelper(chain), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var trace = _step.value; + frames = trace.frames; + frames = selectFrames(frames, range); + trace.frames = frames; + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); } - } else { - addBodyMessage(item, options, callback); + } else if (body.trace) { + frames = body.trace.frames; + frames = selectFrames(frames, range); + body.trace.frames = frames; } + return [payload, stringify(payload, jsonBackup)]; } -function addBodyMessage(item, options, callback) { - var message = item.message; - var custom = item.custom; - if (!message) { - message = 'Item sent with null or missing arguments.'; +function maybeTruncateValue(len, val) { + if (!val) { + return val; } - var result = { - body: message - }; - if (custom) { - result.extra = src_merge(custom); + if (val.length > len) { + return val.slice(0, len - 3).concat('...'); } - set(item, 'data.body', { - message: result - }); - callback(null, item); + return val; } -function stackFromItem(item) { - // Transform a TraceKit stackInfo object into a Rollbar trace - var stack = item.stackInfo.stack; - if (stack && stack.length === 0 && item._unhandledStackInfo && item._unhandledStackInfo.stack) { - stack = item._unhandledStackInfo.stack; - } - return stack; -} -function addBodyTraceChain(item, options, callback) { - var traceChain = item.stackInfo.traceChain; - var traces = []; - var traceChainLength = traceChain.length; - for (var i = 0; i < traceChainLength; i++) { - var trace = buildTrace(item, traceChain[i], options); - traces.push(trace); +function truncateStrings(len, payload, jsonBackup) { + function truncator(k, v, seen) { + switch (typeName(v)) { + case 'string': + return maybeTruncateValue(len, v); + case 'object': + case 'array': + return utility_traverse(v, truncator, seen); + default: + return v; + } } - set(item, 'data.body', { - trace_chain: traces - }); - callback(null, item); + payload = utility_traverse(payload, truncator); + return [payload, stringify(payload, jsonBackup)]; } -function addBodyTrace(item, options, callback) { - var stack = stackFromItem(item); - if (stack) { - var trace = buildTrace(item, item.stackInfo, options); - set(item, 'data.body', { - trace: trace - }); - callback(null, item); - } else { - var stackInfo = item.stackInfo; - var guess = errorParser.guessErrorClass(stackInfo.message); - var className = errorClass(stackInfo, guess[0], options); - var message = guess[1]; - item.message = className + ': ' + message; - addBodyMessage(item, options, callback); +function truncateTraceData(traceData) { + if (traceData.exception) { + delete traceData.exception.description; + traceData.exception.message = maybeTruncateValue(255, traceData.exception.message); } + traceData.frames = selectFrames(traceData.frames, 1); + return traceData; } -function buildTrace(item, stackInfo, options) { - var description = item && item.data.description; - var custom = item && item.custom; - var stack = stackFromItem(item); - var guess = errorParser.guessErrorClass(stackInfo.message); - var className = errorClass(stackInfo, guess[0], options); - var message = guess[1]; - var trace = { - exception: { - class: className, - message: message - } - }; - if (description) { - trace.exception.description = description; - } - if (stack) { - if (stack.length === 0) { - trace.exception.stack = stackInfo.rawStack; - trace.exception.raw = String(stackInfo.rawException); - } - var stackFrame; - var frame; - var code; - var pre; - var post; - var contextLength; - var i, mid; - trace.frames = []; - for (i = 0; i < stack.length; ++i) { - stackFrame = stack[i]; - frame = { - filename: stackFrame.url ? sanitizeUrl(stackFrame.url) : '(unknown)', - lineno: stackFrame.line || null, - method: !stackFrame.func || stackFrame.func === '?' ? '[anonymous]' : stackFrame.func, - colno: stackFrame.column - }; - if (options.sendFrameUrl) { - frame.url = stackFrame.url; - } - if (frame.method && frame.method.endsWith && frame.method.endsWith('_rollbar_wrapped')) { - continue; - } - code = pre = post = null; - contextLength = stackFrame.context ? stackFrame.context.length : 0; - if (contextLength) { - mid = Math.floor(contextLength / 2); - pre = stackFrame.context.slice(0, mid); - code = stackFrame.context[mid]; - post = stackFrame.context.slice(mid); - } - if (code) { - frame.code = code; - } - if (pre || post) { - frame.context = {}; - if (pre && pre.length) { - frame.context.pre = pre; - } - if (post && post.length) { - frame.context.post = post; - } - } - if (stackFrame.args) { - frame.args = stackFrame.args; +function minBody(payload, jsonBackup) { + var body = payload.data.body; + if (body.trace_chain) { + var chain = body.trace_chain; + var _iterator2 = truncation_createForOfIteratorHelper(chain.entries()), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var _step2$value = truncation_slicedToArray(_step2.value, 2), + index = _step2$value[0], + trace = _step2$value[1]; + chain[index] = truncateTraceData(trace); } - trace.frames.push(frame); - } - - // NOTE(cory): reverse the frames since rollbar.com expects the most recent call last - trace.frames.reverse(); - if (custom) { - trace.extra = src_merge(custom); + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); } + } else if (body.trace) { + body.trace = truncateTraceData(body.trace); } - return trace; + return [payload, stringify(payload, jsonBackup)]; } -function errorClass(stackInfo, guess, options) { - if (stackInfo.name) { - return stackInfo.name; - } else if (options.guessErrorClass) { - return guess; - } else { - return '(unknown)'; - } +function needsTruncation(payload, maxSize) { + return maxByteSize(payload) > maxSize; } -function addScrubber(scrubFn) { - return function (item, options, callback) { - if (scrubFn) { - var scrubFields = options.scrubFields || []; - var scrubPaths = options.scrubPaths || []; - item.data = scrubFn(item.data, scrubFields, scrubPaths); +function truncate(payload, jsonBackup, maxSize) { + maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize; + var strategies = [raw, truncateFrames, truncateStrings.bind(null, 1024), truncateStrings.bind(null, 512), truncateStrings.bind(null, 256), minBody]; + var strategy, results, result; + while (strategy = strategies.shift()) { + results = strategy(payload, jsonBackup); + payload = results[0]; + result = results[1]; + if (result.error || !needsTruncation(result.value, maxSize)) { + return result; } - callback(null, item); - }; + } + return result; } +/* harmony default export */ var truncation = ({ + truncate: truncate, + /* for testing */ + raw: raw, + truncateFrames: truncateFrames, + truncateStrings: truncateStrings, + maybeTruncateValue: maybeTruncateValue +}); +;// ./src/apiUtility.js -;// ./src/transforms.js - -function itemToPayload(item, options, callback) { - if (item._isUncaught) { - item.data._isUncaught = true; - } - if (item._originalArgs) { - item.data._originalArgs = item._originalArgs; +function buildPayload(data) { + if (!isType(data.context, 'string')) { + var contextResult = stringify(data.context); + if (contextResult.error) { + data.context = "Error: could not serialize 'context'"; + } else { + data.context = contextResult.value || ''; + } + if (data.context.length > 255) { + data.context = data.context.substr(0, 255); + } } - callback(null, item); + return { + data: data + }; } -function addPayloadOptions(item, options, callback) { - var payloadOptions = options.payload || {}; - if (payloadOptions.body) { - delete payloadOptions.body; +function getTransportFromOptions(options, defaults, url) { + var hostname = defaults.hostname; + var protocol = defaults.protocol; + var port = defaults.port; + var path = defaults.path; + var search = defaults.search; + var timeout = options.timeout; + var transport = detectTransport(options); + var proxy = options.proxy; + if (options.endpoint) { + var opts = url.parse(options.endpoint); + hostname = opts.hostname; + protocol = opts.protocol; + port = opts.port; + path = opts.pathname; + search = opts.search; } - item.data = src_merge(item.data, payloadOptions); - callback(null, item); + return { + timeout: timeout, + hostname: hostname, + protocol: protocol, + port: port, + path: path, + search: search, + proxy: proxy, + transport: transport + }; } -function addTelemetryData(item, options, callback) { - if (item.telemetryEvents) { - set(item, 'data.body.telemetry', item.telemetryEvents); - } - callback(null, item); +function detectTransport(options) { + var gWindow = typeof window !== 'undefined' && window || typeof self !== 'undefined' && self; + var transport = options.defaultTransport || 'xhr'; + if (typeof gWindow.fetch === 'undefined') transport = 'xhr'; + if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch'; + return transport; } -function addMessageWithError(item, options, callback) { - if (!item.message) { - callback(null, item); - return; +function apiUtility_transportOptions(transport, method) { + var protocol = transport.protocol || 'https:'; + var port = transport.port || (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined); + var hostname = transport.hostname; + var path = transport.path; + var timeout = transport.timeout; + var transportAPI = transport.transport; + if (transport.search) { + path = path + transport.search; } - var tracePath = 'data.body.trace_chain.0'; - var trace = get(item, tracePath); - if (!trace) { - tracePath = 'data.body.trace'; - trace = get(item, tracePath); - } - if (trace) { - if (!(trace.exception && trace.exception.description)) { - set(item, tracePath + '.exception.description', item.message); - callback(null, item); - return; - } - var extra = get(item, tracePath + '.extra') || {}; - var newExtra = src_merge(extra, { - message: item.message - }); - set(item, tracePath + '.extra', newExtra); + if (transport.proxy) { + path = protocol + '//' + hostname + path; + hostname = transport.proxy.host || transport.proxy.hostname; + port = transport.proxy.port; + protocol = transport.proxy.protocol || protocol; } - callback(null, item); -} -function userTransform(logger) { - return function (item, options, callback) { - var newItem = src_merge(item); - var response = null; - try { - if (isFunction(options.transform)) { - response = options.transform(newItem.data, item); - } - } catch (e) { - options.transform = null; - logger.error('Error while calling custom transform() function. Removing custom transform().', e); - callback(null, item); - return; - } - if (isPromise(response)) { - response.then(function (promisedItem) { - if (promisedItem) { - newItem.data = promisedItem; - } - callback(null, newItem); - }, function (error) { - callback(error, item); - }); - } else { - callback(null, newItem); - } + return { + timeout: timeout, + protocol: protocol, + hostname: hostname, + path: path, + port: port, + method: method, + transport: transportAPI }; } -function addConfigToPayload(item, options, callback) { - if (!options.sendConfig) { - return callback(null, item); - } - var configKey = '_rollbarConfig'; - var custom = get(item, 'data.custom') || {}; - custom[configKey] = options; - item.data.custom = custom; - callback(null, item); -} -function addFunctionOption(options, name) { - if (isFunction(options[name])) { - options[name] = options[name].toString(); +function appendPathToPath(base, path) { + var baseTrailingSlash = /\/$/.test(base); + var pathBeginningSlash = /^\//.test(path); + if (baseTrailingSlash && pathBeginningSlash) { + path = path.substring(1); + } else if (!baseTrailingSlash && !pathBeginningSlash) { + path = '/' + path; } + return base + path; } -function addConfiguredOptions(item, options, callback) { - var configuredOptions = options._configuredOptions; - // These must be stringified or they'll get dropped during serialization. - addFunctionOption(configuredOptions, 'transform'); - addFunctionOption(configuredOptions, 'checkIgnore'); - addFunctionOption(configuredOptions, 'onSendCallback'); - delete configuredOptions.accessToken; - item.data.notifier.configured_options = configuredOptions; - callback(null, item); -} -function addDiagnosticKeys(item, options, callback) { - var diagnostic = src_merge(item.notifier.client.notifier.diagnostic, item.diagnostic); - if (get(item, 'err._isAnonymous')) { - diagnostic.is_anonymous = true; - } - if (item._isUncaught) { - diagnostic.is_uncaught = item._isUncaught; - } - if (item.err) { - try { - diagnostic.raw_error = { - message: item.err.message, - name: item.err.name, - constructor_name: item.err.constructor && item.err.constructor.name, - filename: item.err.fileName, - line: item.err.lineNumber, - column: item.err.columnNumber, - stack: item.err.stack - }; - } catch (e) { - diagnostic.raw_error = { - failed: String(e) - }; - } - } - item.data.notifier.diagnostic = src_merge(item.data.notifier.diagnostic, diagnostic); - callback(null, item); -} +;// ./src/api.js +function api_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function api_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? api_ownKeys(Object(t), !0).forEach(function (r) { api_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : api_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function api_defineProperty(e, r, t) { return (r = api_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function api_typeof(o) { "@babel/helpers - typeof"; return api_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, api_typeof(o); } +function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); } +function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); } +function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } +function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } +function api_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function api_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, api_toPropertyKey(o.key), o); } } +function api_createClass(e, r, t) { return r && api_defineProperties(e.prototype, r), t && api_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function api_toPropertyKey(t) { var i = api_toPrimitive(t, "string"); return "symbol" == api_typeof(i) ? i : i + ""; } +function api_toPrimitive(t, r) { if ("object" != api_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != api_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -;// ./src/browser/predicates.js -function checkIgnore(item, settings) { - if (get(settings, 'plugins.jquery.ignoreAjaxErrors')) { - return !get(item, 'body.message.extra.isAjax'); +var defaultOptions = { + hostname: 'api.rollbar.com', + path: '/api/1/item/', + search: null, + version: '1', + protocol: 'https:', + port: 443 +}; +var OTLPDefaultOptions = { + hostname: 'api.rollbar.com', + path: '/api/1/session/', + search: null, + version: '1', + protocol: 'https:', + port: 443 +}; + +/** + * Api encapsulates methods of communicating with the Rollbar API. It is a + * standard interface with some parts implemented differently for server or + * browser contexts. It is an object that should be instantiated when used so + * it can contain non-global options that may be different for another instance + * of RollbarApi. + */ +var Api = /*#__PURE__*/function () { + /** + * @param {Object} options - Configuration supplied from the parent Rollbar instance. + * @param {string} options.accessToken - Token used to authenticate API calls. + * @param {string} [options.endpoint] - Optional fully qualified URL overriding + * the default `https://api.rollbar.com/api/1/item`. + * @param {Object} [options.proxy] - Optional proxy descriptor containing: + * `host`/`hostname` (required), `port`, and `protocol`. + * @param {Object} transport - Adapter implementing `post` and `postJsonPayload`. + * @param {Object} urllib - Minimal URL helper used for option normalization. + * @param {Object} truncation - Optional truncation helper for payload size enforcement. + */ + function Api(options, transport, urllib, truncation) { + api_classCallCheck(this, Api); + this.options = options; + this.transport = transport; + this.url = urllib; + this.truncation = truncation; + this.accessToken = options.accessToken; + this.transportOptions = _getTransport(options, urllib); + this.OTLPTransportOptions = _getOTLPTransport(options, urllib); } - return true; -} -;// ./src/predicates.js + /** + * Wraps transport.post in a Promise to support async/await + * + * @param {Object} options - Options for the API request + * @param {string} options.accessToken - The access token for authentication + * @param {Object} options.transportOptions - Options for the transport + * @param {Object} options.payload - The data payload to send + * @returns {Promise} A promise that resolves with the response or rejects with an error + * @private + */ + return api_createClass(Api, [{ + key: "_postPromise", + value: function _postPromise(_ref) { + var _this = this; + var accessToken = _ref.accessToken, + options = _ref.options, + payload = _ref.payload, + headers = _ref.headers; + return new Promise(function (resolve, reject) { + _this.transport.post({ + accessToken: accessToken, + options: options, + payload: payload, + headers: headers, + callback: function callback(err, resp) { + return err ? reject(err) : resolve(resp); + } + }); + }); + } -function checkLevel(item, settings) { - var level = item.level; - var levelVal = LEVELS[level] || 0; - var reportLevel = settings.reportLevel; - var reportLevelVal = LEVELS[reportLevel] || 0; - if (levelVal < reportLevelVal) { - return false; - } - return true; -} -function userCheckIgnore(logger) { - return function (item, settings) { - var isUncaught = !!item._isUncaught; - delete item._isUncaught; - var args = item._originalArgs; - delete item._originalArgs; - try { - if (isFunction(settings.onSendCallback)) { - settings.onSendCallback(isUncaught, args, item); - } - } catch (e) { - settings.onSendCallback = null; - logger.error('Error while calling onSendCallback, removing', e); + /** + * + * @param data + * @param callback + */ + }, { + key: "postItem", + value: function postItem(data, callback) { + var _this2 = this; + var options = apiUtility_transportOptions(this.transportOptions, 'POST'); + var payload = buildPayload(data); + + // ensure the network request is scheduled after the current tick. + setTimeout(function () { + _this2.transport.post({ + accessToken: _this2.accessToken, + options: options, + payload: payload, + callback: callback + }); + }, 0); } - try { - if (isFunction(settings.checkIgnore) && settings.checkIgnore(isUncaught, args, item)) { - return false; + + /** + * Posts spans to the Rollbar API using the session endpoint + * + * @param {Array} payload - The spans to send + * @returns {Promise} A promise that resolves with the API response + */ + }, { + key: "postSpans", + value: (function () { + var _postSpans = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(payload) { + var headers, + options, + _args = arguments; + return _regenerator().w(function (_context) { + while (1) switch (_context.n) { + case 0: + headers = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; + options = apiUtility_transportOptions(this.OTLPTransportOptions, 'POST'); + return _context.a(2, this._postPromise({ + accessToken: this.accessToken, + options: options, + payload: payload, + headers: headers + })); + } + }, _callee, this); + })); + function postSpans(_x) { + return _postSpans.apply(this, arguments); } - } catch (e) { - settings.checkIgnore = null; - logger.error('Error while calling custom checkIgnore(), removing', e); + return postSpans; + }() + /** + * + * @param data + * @param callback + */ + ) + }, { + key: "buildJsonPayload", + value: function buildJsonPayload(data, callback) { + var payload = buildPayload(data); + var stringifyResult; + if (this.truncation) { + stringifyResult = this.truncation.truncate(payload); + } else { + stringifyResult = stringify(payload); + } + if (stringifyResult.error) { + if (callback) { + callback(stringifyResult.error); + } + return null; + } + return stringifyResult.value; } - return true; - }; -} -function urlIsNotBlockListed(logger) { - return function (item, settings) { - return !urlIsOnAList(item, settings, 'blocklist', logger); - }; -} -function urlIsSafeListed(logger) { - return function (item, settings) { - return urlIsOnAList(item, settings, 'safelist', logger); - }; -} -function matchFrames(trace, list, block) { - if (!trace) { - return !block; - } - var frames = trace.frames; - if (!frames || frames.length === 0) { - return !block; - } - var frame, filename, url, urlRegex; - var listLength = list.length; - var frameLength = frames.length; - for (var i = 0; i < frameLength; i++) { - frame = frames[i]; - filename = frame.filename; - if (!isType(filename, 'string')) { - return !block; + + /** + * + * @param jsonPayload + * @param callback + */ + }, { + key: "postJsonPayload", + value: function postJsonPayload(jsonPayload, callback) { + var transportOptions = apiUtility_transportOptions(this.transportOptions, 'POST'); + this.transport.postJsonPayload(this.accessToken, transportOptions, jsonPayload, callback); } - for (var j = 0; j < listLength; j++) { - url = list[j]; - urlRegex = new RegExp(url); - if (urlRegex.test(filename)) { - return true; + }, { + key: "configure", + value: function configure(options) { + var oldOptions = this.options; + this.options = merge(oldOptions, options); + this.transportOptions = _getTransport(this.options, this.url); + this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url); + if (this.options.accessToken !== undefined) { + this.accessToken = this.options.accessToken; } + return this; } - } - return false; + }]); +}(); +function _getTransport(options, url) { + return getTransportFromOptions(options, defaultOptions, url); } -function urlIsOnAList(item, settings, safeOrBlock, logger) { - // safelist is the default - var block = false; - if (safeOrBlock === 'blocklist') { - block = true; - } - var list, traces; - try { - list = block ? settings.hostBlockList : settings.hostSafeList; - traces = get(item, 'body.trace_chain') || [get(item, 'body.trace')]; - - // These two checks are important to come first as they are defaults - // in case the list is missing or the trace is missing or not well-formed - if (!list || list.length === 0) { - return !block; - } - if (traces.length === 0 || !traces[0]) { - return !block; - } - var tracesLength = traces.length; - for (var i = 0; i < tracesLength; i++) { - if (matchFrames(traces[i], list, block)) { - return true; - } - } - } catch (e - /* istanbul ignore next */) { - if (block) { - settings.hostBlockList = null; - } else { - settings.hostSafeList = null; - } - var listName = block ? 'hostBlockList' : 'hostSafeList'; - logger.error("Error while reading your configuration's " + listName + ' option. Removing custom ' + listName + '.', e); - return !block; - } - return false; -} -function messageIsIgnored(logger) { - return function (item, settings) { - var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages; - try { - messageIsIgnored = false; - ignoredMessages = settings.ignoredMessages; - if (!ignoredMessages || ignoredMessages.length === 0) { - return true; - } - messages = messagesFromItem(item); - if (messages.length === 0) { - return true; - } - len = ignoredMessages.length; - for (i = 0; i < len; i++) { - rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi'); - for (j = 0; j < messages.length; j++) { - messageIsIgnored = rIgnoredMessage.test(messages[j]); - if (messageIsIgnored) { - return false; - } - } - } - } catch (e - /* istanbul ignore next */) { - settings.ignoredMessages = null; - logger.error("Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages."); - } - return true; - }; -} -function messagesFromItem(item) { - var body = item.body; - var messages = []; - - // The payload schema only allows one of trace_chain, message, or trace. - // However, existing test cases are based on having both trace and message present. - // So here we preserve the ability to collect strings from any combination of these keys. - if (body.trace_chain) { - var traceChain = body.trace_chain; - for (var i = 0; i < traceChain.length; i++) { - var trace = traceChain[i]; - messages.push(get(trace, 'exception.message')); - } - } - if (body.trace) { - messages.push(get(body, 'trace.exception.message')); - } - if (body.message) { - messages.push(get(body, 'message.body')); - } - return messages; +function _getOTLPTransport(options, url) { + var _options$tracing; + options = api_objectSpread(api_objectSpread({}, options), {}, { + endpoint: (_options$tracing = options.tracing) === null || _options$tracing === void 0 ? void 0 : _options$tracing.endpoint + }); + return getTransportFromOptions(options, OTLPDefaultOptions, url); } - -;// ./src/browser/replay/defaults.js -/** - * Default session replay recording options - * See https://github.com/rrweb-io/rrweb/blob/master/guide.md#options for details - */ -/* harmony default export */ var defaults = ({ - enabled: false, - // Whether recording is enabled - autoStart: true, - // Start recording automatically when Rollbar initializes - - // defaults used by triggers that don't specify them - triggerDefaults: { - samplingRatio: 1.0, - preDuration: 300, - postDuration: 5 - }, - triggers: [{ - type: 'occurrence', - level: ['error', 'critical'] - }], - debug: { - logErrors: true, - // Whether to log errors emitted by rrweb. - logEmits: false // Whether to log emitted events - }, - // Recording options - inlineStylesheet: true, - // Whether to inline stylesheets to improve replay accuracy - inlineImages: false, - // Whether to record the image content - collectFonts: true, - // Whether to collect fonts in the website - - // Privacy options - // Fine-grained control over which input types to mask - // By default only password inputs are masked if maskInputs is true - maskInputOptions: { - password: true, - email: false, - tel: false, - text: false, - color: false, - date: false, - 'datetime-local': false, - month: false, - number: false, - range: false, - search: false, - time: false, - url: false, - week: false - }, - // Mask all input values - maskAllInputs: false, - // Class names to block, mask, or ignore the content of elements. - blockClass: 'rb-block', - maskTextClass: 'rb-mask', - ignoreClass: 'rb-ignore', - // Remove unnecessary parts of the DOM - // By default all removable elements are removed - slimDOMOptions: { - script: true, - // Remove script elements - comment: true, - // Remove comments - headFavicon: true, - // Remove favicons in the head - headWhitespace: true, - // Remove whitespace in head - headMetaDescKeywords: true, - // Remove meta description and keywords - headMetaSocial: true, - // Remove social media meta tags - headMetaRobots: true, - // Remove robots meta directives - headMetaHttpEquiv: true, - // Remove http-equiv meta directives - headMetaAuthorship: true, - // Remove authorship meta directives - headMetaVerification: true // Remove verification meta directives - } - - // Custom callbacks for advanced use cases - // These are undefined by default and can be set programmatically - // maskInputFn: undefined, // Custom function to mask input values - // maskTextFn: undefined, // Custom function to mask text content - // errorHandler: undefined, // Custom error handler for recording errors - - // Plugin system - // plugins: [] // List of plugins to use (must be set programmatically) -}); -;// ./src/tracing/defaults.js -/** - * Default tracing options - */ -/* harmony default export */ var tracing_defaults = ({ - enabled: false, - endpoint: 'api.rollbar.com/api/1/session/' -}); +/* harmony default export */ var src_api = (Api); ;// ./src/defaults.js /** * Default options shared across platforms */ -var version = '3.0.0-rc.1'; +var version = '3.0.0'; var endpoint = 'api.rollbar.com/api/1/item/'; var logLevel = 'debug'; var reportLevel = 'debug'; @@ -3529,7 +3007,7 @@ var requestScrubFields = (/* unused pure expression or super */ null && (['reque var commonScrubHeaders = (/* unused pure expression or super */ null && (['authorization', 'www-authorization', 'http_authorization', 'omniauth.auth', 'cookie', 'oauth-access-token', 'x-access-token', 'x_csrf_token', 'http_x_csrf_token', 'x-csrf-token'])); // For backward compatibility with default export -/* harmony default export */ var src_defaults = ({ +/* harmony default export */ var defaults = ({ version: version, endpoint: endpoint, logLevel: logLevel, @@ -3538,3663 +3016,4397 @@ var commonScrubHeaders = (/* unused pure expression or super */ null && (['autho maxItems: maxItems, itemsPerMin: itemsPerMin }); -;// ./src/browser/defaults.js -function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || defaults_unsupportedIterableToArray(r) || _nonIterableSpread(); } -function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function defaults_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return defaults_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? defaults_arrayLikeToArray(r, a) : void 0; } } -function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } -function _arrayWithoutHoles(r) { if (Array.isArray(r)) return defaults_arrayLikeToArray(r); } -function defaults_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -/** - * Default browser options - */ - -var scrubFields = [].concat(_toConsumableArray(commonScrubFields), ['cc-number', 'card number', 'cardnumber', 'cardnum', 'ccnum', 'ccnumber', 'cc num', 'creditcardnumber', 'credit card number', 'newcreditcardnumber', 'new credit card', 'creditcardno', 'credit card no', 'card#', 'card #', 'cc-csc', 'cvc', 'cvc2', 'cvv2', 'ccv2', 'security code', 'card verification', 'name on credit card', 'name on card', 'nameoncard', 'cardholder', 'card holder', 'name des karteninhabers', 'ccname', 'card type', 'cardtype', 'cc type', 'cctype', 'payment type', 'expiration date', 'expirationdate', 'expdate', 'cc-exp', 'ccmonth', 'ccyear']); - -// For compatibility with existing code that expects default export with scrubFields property -/* harmony default export */ var browser_defaults = ({ - scrubFields: scrubFields -}); -;// ./src/browser/core.js -var _Rollbar; -function core_typeof(o) { "@babel/helpers - typeof"; return core_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, core_typeof(o); } -function core_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function core_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? core_ownKeys(Object(t), !0).forEach(function (r) { core_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : core_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function core_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function core_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, core_toPropertyKey(o.key), o); } } -function core_createClass(e, r, t) { return r && core_defineProperties(e.prototype, r), t && core_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function core_defineProperty(e, r, t) { return (r = core_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function core_toPropertyKey(t) { var i = core_toPrimitive(t, "string"); return "symbol" == core_typeof(i) ? i : i + ""; } -function core_toPrimitive(t, r) { if ("object" != core_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != core_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - - - - - - - - - - - - - - - -// Used to support global `Rollbar` instance. -var _instance = null; -var core_Rollbar = /*#__PURE__*/function () { - function Rollbar(options, client) { - core_classCallCheck(this, Rollbar); - src_logger.init({ - logLevel: options.logLevel || 'error' - }); - this.options = handleOptions(core_defaultOptions, options, null, src_logger); - this.options._configuredOptions = options; - this.components = this.components || {}; - var Telemeter = this.components.telemeter; - var Instrumenter = this.components.instrumenter; - this.wrapGlobals = this.components.wrapGlobals; - this.scrub = this.components.scrub; - var truncation = this.components.truncation; - var Tracing = this.components.tracing; - var Replay = this.components.replay; - var transport = new browser_transport(truncation); - var api = new src_api(this.options, transport, url_namespaceObject, truncation); - if (Tracing) { - this.tracing = new Tracing(_gWindow(), api, this.options); - this.tracing.initSession(); - } - if (Telemeter) { - this.telemeter = new Telemeter(this.options, this.tracing); - } - if (Replay && isBrowser()) { - var replayOptions = this.options.replay; - this.replay = new Replay({ - tracing: this.tracing, - telemeter: this.telemeter, - options: replayOptions - }); - if (replayOptions.enabled && replayOptions.autoStart) { - this.replay.recorder.start(); - } - } - this.client = client || new rollbar(this.options, api, src_logger, this.telemeter, this.tracing, this.replay, 'browser'); - var gWindow = _gWindow(); - var gDocument = typeof document != 'undefined' && document; - this.isChrome = gWindow.chrome && gWindow.chrome.runtime; // check .runtime to avoid Edge browsers - this.anonymousErrorsPending = 0; - addTransformsToNotifier(this.client.notifier, this, gWindow); - addPredicatesToQueue(this.client.queue); - this.setupUnhandledCapture(); - if (Instrumenter) { - this.instrumenter = new Instrumenter(this.options, this.client.telemeter, this, gWindow, gDocument); - this.instrumenter.instrument(); - } - this.setSessionAttributesFromOptions(options); - - // Used with rollbar-react for rollbar-react-native compatibility. - this.rollbar = this; +;// ./node_modules/error-stack-parser-es/dist/lite.mjs +var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\S+:\d+/; +var CHROME_IE_STACK_REGEXP = /^\s*at .*(\S+:\d+|\(native\))/m; +var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\[native code\])?$/; +function parse(error, options) { + if (typeof error.stacktrace !== "undefined" || typeof error["opera#sourceloc"] !== "undefined") return parseOpera(error, options);else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) return parseV8OrIE(error, options);else if (error.stack) return parseFFOrSafari(error, options);else if (options !== null && options !== void 0 && options.allowEmpty) return [];else throw new Error("Cannot parse given Error object"); +} +function parseStack(stackString, options) { + if (stackString.match(CHROME_IE_STACK_REGEXP)) return parseV8OrIeString(stackString, options);else return parseFFOrSafariString(stackString, options); +} +function extractLocation(urlLike) { + if (!urlLike.includes(":")) return [urlLike, undefined, undefined]; + var regExp = /(.+?)(?::(\d+))?(?::(\d+))?$/; + var parts = regExp.exec(urlLike.replace(/[()]/g, "")); + return [parts[1], parts[2] || undefined, parts[3] || undefined]; +} +function applySlice(lines, options) { + if (options && options.slice != null) { + if (Array.isArray(options.slice)) return lines.slice(options.slice[0], options.slice[1]); + return lines.slice(0, options.slice); } - return core_createClass(Rollbar, [{ - key: "global", - value: function global(options) { - this.client.global(options); - return this; - } - }, { - key: "configure", - value: function configure(options, payloadData) { - var _this$tracing, _this$replay, _this$instrumenter; - if (options.logLevel) { - src_logger.init({ - logLevel: options.logLevel - }); - } - this.setSessionAttributesFromOptions(options); - var oldOptions = this.options; - var payload = {}; - if (payloadData) { - payload = { - payload: payloadData - }; - } - this.options = handleOptions(oldOptions, options, payload, src_logger); - this.options._configuredOptions = handleOptions(oldOptions._configuredOptions, options, payload); - (_this$tracing = this.tracing) === null || _this$tracing === void 0 || _this$tracing.configure(this.options); - (_this$replay = this.replay) === null || _this$replay === void 0 || _this$replay.configure(this.options.replay); - this.client.configure(this.options, payloadData); - (_this$instrumenter = this.instrumenter) === null || _this$instrumenter === void 0 || _this$instrumenter.configure(this.options); - this.setupUnhandledCapture(); - return this; - } - }, { - key: "lastError", - value: function lastError() { - return this.client.lastError; - } - }, { - key: "log", - value: function log() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.log(item); - return { - uuid: uuid - }; - } - }, { - key: "debug", - value: function debug() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.debug(item); - return { - uuid: uuid - }; - } - }, { - key: "info", - value: function info() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.info(item); - return { - uuid: uuid - }; - } - }, { - key: "warn", - value: function warn() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.warn(item); - return { - uuid: uuid - }; - } - }, { - key: "warning", - value: function warning() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.warning(item); - return { - uuid: uuid - }; + return lines; +} +function parseV8OrIE(error, options) { + return parseV8OrIeString(error.stack, options); +} +function parseV8OrIeString(stack, options) { + var filtered = applySlice(stack.split("\n").filter(function (line) { + return !!line.match(CHROME_IE_STACK_REGEXP); + }), options); + return filtered.map(function (line) { + if (line.includes("(eval ")) { + line = line.replace(/eval code/g, "eval").replace(/(\(eval at [^()]*)|(,.*$)/g, ""); } - }, { - key: "error", - value: function error() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.error(item); + var sanitizedLine = line.replace(/^\s+/, "").replace(/\(eval code/g, "(").replace(/^.*?\s+/, ""); + var location = sanitizedLine.match(/ (\(.+\)$)/); + sanitizedLine = location ? sanitizedLine.replace(location[0], "") : sanitizedLine; + var locationParts = extractLocation(location ? location[1] : sanitizedLine); + var functionName = location && sanitizedLine || undefined; + var fileName = ["eval", ""].includes(locationParts[0]) ? undefined : locationParts[0]; + return { + function: functionName, + file: fileName, + line: locationParts[1] ? +locationParts[1] : undefined, + col: locationParts[2] ? +locationParts[2] : undefined, + raw: line + }; + }); +} +function parseFFOrSafari(error, options) { + return parseFFOrSafariString(error.stack, options); +} +function parseFFOrSafariString(stack, options) { + var filtered = applySlice(stack.split("\n").filter(function (line) { + return !line.match(SAFARI_NATIVE_CODE_REGEXP); + }), options); + return filtered.map(function (line) { + if (line.includes(" > eval")) line = line.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g, ":$1"); + if (!line.includes("@") && !line.includes(":")) { return { - uuid: uuid + function: line }; - } - }, { - key: "critical", - value: function critical() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.critical(item); + } else { + var functionNameRegex = /(([^\n\r"\u2028\u2029]*".[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*(?:@[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*)*(?:[\n\r\u2028\u2029][^@]*)?)?[^@]*)@/; + var matches = line.match(functionNameRegex); + var functionName = matches && matches[1] ? matches[1] : undefined; + var locationParts = extractLocation(line.replace(functionNameRegex, "")); return { - uuid: uuid + function: functionName, + file: locationParts[0], + line: locationParts[1] ? +locationParts[1] : undefined, + col: locationParts[2] ? +locationParts[2] : undefined, + raw: line }; } - }, { - key: "buildJsonPayload", - value: function buildJsonPayload(item) { - return this.client.buildJsonPayload(item); - } - }, { - key: "sendJsonPayload", - value: function sendJsonPayload(jsonPayload) { - return this.client.sendJsonPayload(jsonPayload); - } - }, { - key: "triggerDirectReplay", - value: function triggerDirectReplay(context) { - return this.triggerReplay(core_objectSpread({ - type: 'direct' - }, context)); + }); +} +function parseOpera(e, options) { + if (!e.stacktrace || e.message.includes("\n") && e.message.split("\n").length > e.stacktrace.split("\n").length) return parseOpera9(e);else if (!e.stack) return parseOpera10(e);else return parseOpera11(e, options); +} +function parseOpera9(e, options) { + var lineRE = /Line (\d+).*script (?:in )?(\S+)/i; + var lines = e.message.split("\n"); + var result = []; + for (var i = 2, len = lines.length; i < len; i += 2) { + var match = lineRE.exec(lines[i]); + if (match) { + result.push({ + file: match[2], + line: +match[1], + raw: lines[i] + }); } - }, { - key: "triggerReplay", - value: function triggerReplay(context) { - if (!this.replay) return null; - return this.replay.triggerReplay(context); - } - }, { - key: "setupUnhandledCapture", - value: function setupUnhandledCapture() { - var gWindow = _gWindow(); - if (!this.unhandledExceptionsInitialized) { - if (this.options.captureUncaught || this.options.handleUncaughtExceptions) { - captureUncaughtExceptions(gWindow, this); - if (this.wrapGlobals && this.options.wrapGlobalEventHandlers) { - this.wrapGlobals(gWindow, this); - } - this.unhandledExceptionsInitialized = true; - } - } - if (!this.unhandledRejectionsInitialized) { - if (this.options.captureUnhandledRejections || this.options.handleUnhandledRejections) { - captureUnhandledRejections(gWindow, this); - this.unhandledRejectionsInitialized = true; - } - } - } - }, { - key: "handleUncaughtException", - value: function handleUncaughtException(message, url, lineno, colno, error, context) { - if (!this.options.captureUncaught && !this.options.handleUncaughtExceptions) { - return; - } - - // Chrome will always send 5+ arguments and error will be valid or null, not undefined. - // If error is undefined, we have a different caller. - // Chrome also sends errors from web workers with null error, but does not invoke - // prepareStackTrace() for these. Test for empty url to skip them. - if (this.options.inspectAnonymousErrors && this.isChrome && error === null && url === '') { - return 'anonymous'; - } - var item; - var stackInfo = makeUnhandledStackInfo(message, url, lineno, colno, error, 'onerror', 'uncaught exception', errorParser); - if (isError(error)) { - item = this._createItem([message, error, context]); - item._unhandledStackInfo = stackInfo; - } else if (isError(url)) { - item = this._createItem([message, url, context]); - item._unhandledStackInfo = stackInfo; - } else { - item = this._createItem([message, context]); - item.stackInfo = stackInfo; - } - item.level = this.options.uncaughtErrorLevel; - item._isUncaught = true; - this.client.log(item); + } + return applySlice(result, options); +} +function parseOpera10(e, options) { + var lineRE = /Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i; + var lines = e.stacktrace.split("\n"); + var result = []; + for (var i = 0, len = lines.length; i < len; i += 2) { + var match = lineRE.exec(lines[i]); + if (match) { + result.push({ + function: match[3] || undefined, + file: match[2], + line: match[1] ? +match[1] : undefined, + raw: lines[i] + }); } + } + return applySlice(result, options); +} +function parseOpera11(error, options) { + var filtered = applySlice( + // @ts-expect-error missing stack property + error.stack.split("\n").filter(function (line) { + return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/); + }), options); + return filtered.map(function (line) { + var tokens = line.split("@"); + var locationParts = extractLocation(tokens.pop()); + var functionCall = tokens.shift() || ""; + var functionName = functionCall.replace(//, "$2").replace(/\([^)]*\)/g, "") || undefined; + var argsRaw; + if (functionCall.match(/\(([^)]*)\)/)) argsRaw = functionCall.replace(/^[^(]+\(([^)]*)\)$/, "$1"); + var args = argsRaw === undefined || argsRaw === "[arguments not available]" ? undefined : argsRaw.split(","); + return { + function: functionName, + args: args, + file: locationParts[0], + line: locationParts[1] ? +locationParts[1] : undefined, + col: locationParts[2] ? +locationParts[2] : undefined, + raw: line + }; + }); +} - /** - * Chrome only. Other browsers will ignore. - * - * Use Error.prepareStackTrace to extract information about errors that - * do not have a valid error object in onerror(). - * - * In tested version of Chrome, onerror is called first but has no way - * to communicate with prepareStackTrace. Use a counter to let this - * handler know which errors to send to Rollbar. - * - * In config options, set inspectAnonymousErrors to enable. - */ - }, { - key: "handleAnonymousErrors", - value: function handleAnonymousErrors() { - if (!this.options.inspectAnonymousErrors || !this.isChrome) { - return; - } - var r = this; - function prepareStackTrace(error, _stack) { - if (r.options.inspectAnonymousErrors) { - if (r.anonymousErrorsPending) { - // This is the only known way to detect that onerror saw an anonymous error. - // It depends on onerror reliably being called before Error.prepareStackTrace, - // which so far holds true on tested versions of Chrome. If versions of Chrome - // are tested that behave differently, this logic will need to be updated - // accordingly. - r.anonymousErrorsPending -= 1; - if (!error) { - // Not likely to get here, but calling handleUncaughtException from here - // without an error object would throw off the anonymousErrorsPending counter, - // so return now. - return; - } +;// ./node_modules/error-stack-parser-es/dist/index.mjs +/* unused harmony import specifier */ var parseV8OrIE$1; +/* unused harmony import specifier */ var parseFFOrSafari$1; +/* unused harmony import specifier */ var parseOpera$1; +/* unused harmony import specifier */ var parseOpera9$1; +/* unused harmony import specifier */ var parseOpera10$1; +/* unused harmony import specifier */ var parseOpera11$1; - // Allow this to be tracked later. - error._isAnonymous = true; - // url, lineno, colno shouldn't be needed for these errors. - // If that changes, update this accordingly, using the unused - // _stack param as needed (rather than parse error.toString()). - r.handleUncaughtException(error.message, null, null, null, error); - } - } +function stackframesLiteToStackframes(liteStackframes) { + return liteStackframes.map(function (liteStackframe) { + return { + functionName: liteStackframe.function, + args: liteStackframe.args, + fileName: liteStackframe.file, + lineNumber: liteStackframe.line, + columnNumber: liteStackframe.col, + source: liteStackframe.raw + }; + }); +} +function dist_parse(error, options) { + return stackframesLiteToStackframes(parse(error, options)); +} +function dist_parseV8OrIE(error) { + return stackframesLiteToStackframes(parseV8OrIE$1(error)); +} +function dist_parseFFOrSafari(error) { + return stackframesLiteToStackframes(parseFFOrSafari$1(error)); +} +function dist_parseOpera(e) { + return stackframesLiteToStackframes(parseOpera$1(e)); +} +function dist_parseOpera9(e) { + return stackframesLiteToStackframes(parseOpera9$1(e)); +} +function dist_parseOpera10(e) { + return stackframesLiteToStackframes(parseOpera10$1(e)); +} +function dist_parseOpera11(error) { + return stackframesLiteToStackframes(parseOpera11$1(error)); +} - // Workaround to ensure stack is preserved for normal errors. - return error.stack; - } +;// ./src/errorParser.js - // https://v8.dev/docs/stack-trace-api - try { - Error.prepareStackTrace = prepareStackTrace; - } catch (e) { - this.options.inspectAnonymousErrors = false; - this.error('anonymous error handler failed', e); - } +var UNKNOWN_FUNCTION = '?'; +var ERR_CLASS_REGEXP = new RegExp('^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): '); +function guessFunctionName() { + return UNKNOWN_FUNCTION; +} +function gatherContext() { + return null; +} +function Frame(stackFrame) { + var data = {}; + data._stackFrame = stackFrame; + data.url = stackFrame.fileName; + data.line = stackFrame.lineNumber; + data.func = stackFrame.functionName; + data.column = stackFrame.columnNumber; + data.args = stackFrame.args; + data.context = gatherContext(); + return data; +} +function Stack(exception, skip) { + function getStack() { + var parserStack = []; + skip = skip || 0; + try { + parserStack = dist_parse(exception); + } catch (_e) { + parserStack = []; } - }, { - key: "handleUnhandledRejection", - value: function handleUnhandledRejection(reason, promise) { - if (!this.options.captureUnhandledRejections && !this.options.handleUnhandledRejections) { - return; - } - var message = 'unhandled rejection was null or undefined!'; - if (reason) { - if (reason.message) { - message = reason.message; - } else { - var reasonResult = stringify(reason); - if (reasonResult.value) { - message = reasonResult.value; - } - } - } - var context = reason && reason._rollbarContext || promise && promise._rollbarContext; - var item; - if (isError(reason)) { - item = this._createItem([message, reason, context]); - } else { - item = this._createItem([message, reason, context]); - item.stackInfo = makeUnhandledStackInfo(message, '', 0, 0, null, 'unhandledrejection', '', errorParser); - } - item.level = this.options.uncaughtErrorLevel; - item._isUncaught = true; - item._originalArgs = item._originalArgs || []; - item._originalArgs.push(promise); - this.client.log(item); + var stack = []; + for (var i = skip; i < parserStack.length; i++) { + stack.push(new Frame(parserStack[i])); } - }, { - key: "wrap", - value: function wrap(f, context, _before) { - try { - var ctxFn; - if (isFunction(context)) { - ctxFn = context; - } else { - ctxFn = function ctxFn() { - return context || {}; - }; - } - if (!isFunction(f)) { - return f; - } - if (f._isWrap) { - return f; - } - if (!f._rollbar_wrapped) { - f._rollbar_wrapped = function () { - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } - try { - return f.apply(this, arguments); - } catch (exc) { - var e = exc; - if (e && window._rollbarWrappedError !== e) { - if (isType(e, 'string')) { - e = new String(e); - } - e._rollbarContext = ctxFn() || {}; - e._rollbarContext._wrappedSource = f.toString(); - window._rollbarWrappedError = e; - } - throw e; - } - }; - f._rollbar_wrapped._isWrap = true; - if (f.hasOwnProperty) { - for (var prop in f) { - if (f.hasOwnProperty(prop) && prop !== '_rollbar_wrapped') { - f._rollbar_wrapped[prop] = f[prop]; - } - } - } - } - return f._rollbar_wrapped; - } catch (e) { - // Return the original function if the wrap fails. - return f; - } - } - }, { - key: "captureEvent", - value: function captureEvent() { - var event = createTelemetryEvent(arguments); - return this.client.captureEvent(event.type, event.metadata, event.level); - } - }, { - key: "setSessionUser", - value: function setSessionUser(user) { - var _this$tracing2; - if (!((_this$tracing2 = this.tracing) !== null && _this$tracing2 !== void 0 && _this$tracing2.session)) return; - this.tracing.session.setUser(user); - } - }, { - key: "setSessionAttributes", - value: function setSessionAttributes(attrs) { - var _this$tracing3; - if (!((_this$tracing3 = this.tracing) !== null && _this$tracing3 !== void 0 && _this$tracing3.session)) return; - attrs = core_objectSpread({}, attrs); - this.tracing.session.setAttributes(attrs); - } - }, { - key: "setSessionAttributesFromOptions", - value: function setSessionAttributesFromOptions(options) { - var _options$payload, _options$client, _options$payload2, _options$payload3, _options$payload4; - var person = options.person || ((_options$payload = options.payload) === null || _options$payload === void 0 ? void 0 : _options$payload.person); - if (person) { - this.setSessionUser(person); - } - var code_version = ((_options$client = options.client) === null || _options$client === void 0 || (_options$client = _options$client.javascript) === null || _options$client === void 0 ? void 0 : _options$client.code_version) || options.codeVersion || options.code_version || ((_options$payload2 = options.payload) === null || _options$payload2 === void 0 || (_options$payload2 = _options$payload2.client) === null || _options$payload2 === void 0 || (_options$payload2 = _options$payload2.javascript) === null || _options$payload2 === void 0 ? void 0 : _options$payload2.code_version) || ((_options$payload3 = options.payload) === null || _options$payload3 === void 0 ? void 0 : _options$payload3.code_version) || ((_options$payload4 = options.payload) === null || _options$payload4 === void 0 ? void 0 : _options$payload4.codeVersion); - this.setSessionAttributes({ - 'rollbar.codeVersion': code_version, - 'rollbar.notifier.name': 'rollbar-browser-js', - 'rollbar.notifier.version': options.version - }); + return stack; + } + return { + stack: getStack(), + message: exception.message, + name: _mostSpecificErrorName(exception), + rawStack: exception.stack, + rawException: exception + }; +} +function errorParser_parse(e, skip) { + var err = e; + if (err.nested || err.cause) { + var traceChain = []; + while (err) { + traceChain.push(new Stack(err, skip)); + err = err.nested || err.cause; + skip = 0; // Only apply skip value to primary error } - // The following two methods are used internally and are not meant for public use - }, { - key: "captureDomContentLoaded", - value: function captureDomContentLoaded(e, ts) { - if (!ts) { - ts = new Date(); + // Return primary error with full trace chain attached. + traceChain[0].traceChain = traceChain; + return traceChain[0]; + } else { + return new Stack(err, skip); + } +} +function guessErrorClass(errMsg) { + if (!errMsg || !errMsg.match) { + return ['Unknown error. There was no error message to display.', '']; + } + var errClassMatch = errMsg.match(ERR_CLASS_REGEXP); + var errClass = '(unknown)'; + if (errClassMatch) { + errClass = errClassMatch[errClassMatch.length - 1]; + errMsg = errMsg.replace((errClassMatch[errClassMatch.length - 2] || '') + errClass + ':', ''); + errMsg = errMsg.replace(/(^[\s]+|[\s]+$)/g, ''); + } + return [errClass, errMsg]; +} + +// * Prefers any value over an empty string +// * Prefers any value over 'Error' where possible +// * Prefers name over constructor.name when both are more specific than 'Error' +function _mostSpecificErrorName(error) { + var name = error.name && error.name.length && error.name; + var constructorName = error.constructor.name && error.constructor.name.length && error.constructor.name; + if (!name || !constructorName) { + return name || constructorName; + } + if (name === 'Error') { + return constructorName; + } + return name; +} +/* harmony default export */ var errorParser = ({ + guessFunctionName: guessFunctionName, + guessErrorClass: guessErrorClass, + gatherContext: gatherContext, + parse: errorParser_parse, + Stack: Stack, + Frame: Frame +}); +;// ./src/predicates.js +function predicates_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = predicates_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function predicates_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return predicates_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? predicates_arrayLikeToArray(r, a) : void 0; } } +function predicates_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } + +function checkLevel(item, settings) { + var level = item.level; + var levelVal = LEVELS[level] || 0; + var reportLevel = settings.reportLevel; + var reportLevelVal = LEVELS[reportLevel] || 0; + if (levelVal < reportLevelVal) { + return false; + } + return true; +} +function userCheckIgnore(logger) { + return function (item, settings) { + var isUncaught = Boolean(item._isUncaught); + delete item._isUncaught; + var args = item._originalArgs; + delete item._originalArgs; + try { + if (isFunction(settings.onSendCallback)) { + settings.onSendCallback(isUncaught, args, item); } - return this.client.captureDomContentLoaded(ts); + } catch (e) { + settings.onSendCallback = null; + logger.error('Error while calling onSendCallback, removing', e); } - }, { - key: "captureLoad", - value: function captureLoad(e, ts) { - if (!ts) { - ts = new Date(); + try { + if (isFunction(settings.checkIgnore) && settings.checkIgnore(isUncaught, args, item)) { + return false; } - return this.client.captureLoad(ts); + } catch (e) { + settings.checkIgnore = null; + logger.error('Error while calling custom checkIgnore(), removing', e); } - }, { - key: "loadFull", - value: function loadFull() { - src_logger.info('Unexpected Rollbar.loadFull() called on a Notifier instance. This can happen when Rollbar is loaded multiple times.'); + return true; + }; +} +function urlIsNotBlockListed(logger) { + return function (item, settings) { + return !urlIsOnAList(item, settings, 'blocklist', logger); + }; +} +function urlIsSafeListed(logger) { + return function (item, settings) { + return urlIsOnAList(item, settings, 'safelist', logger); + }; +} +function matchFrames(trace, list, block) { + if (!trace) { + return !block; + } + var frames = trace.frames; + if (!frames || frames.length === 0) { + return !block; + } + var frame, filename, url, urlRegex; + var listLength = list.length; + var frameLength = frames.length; + for (var i = 0; i < frameLength; i++) { + frame = frames[i]; + filename = frame.filename; + if (!isType(filename, 'string')) { + return !block; } - }, { - key: "_createItem", - value: function _createItem(args) { - return createItem(args, src_logger, this); + for (var j = 0; j < listLength; j++) { + url = list[j]; + urlRegex = new RegExp(url); + if (urlRegex.test(filename)) { + return true; + } } + } + return false; +} +function urlIsOnAList(item, settings, safeOrBlock, logger) { + // safelist is the default + var block = false; + if (safeOrBlock === 'blocklist') { + block = true; + } + var list, traces; + try { + list = block ? settings.hostBlockList : settings.hostSafeList; + traces = get(item, 'body.trace_chain') || [get(item, 'body.trace')]; - // Static version of instance methods support the legacy pattern of a - // global `Rollbar` instance, where after calling `Rollbar.init()`, - // `Rollbar` can be used as if it were an instance. - // If support for this pattern is dropped, these static methods can be removed. - }], [{ - key: "init", - value: function init(options, client) { - if (_instance) { - return _instance.global(options).configure(options); - } - _instance = new Rollbar(options, client); - return _instance; + // These two checks are important to come first as they are defaults + // in case the list is missing or the trace is missing or not well-formed + if (!list || list.length === 0) { + return !block; } - }, { - key: "setComponents", - value: function setComponents(components) { - Rollbar.prototype.components = components; + if (traces.length === 0 || !traces[0]) { + return !block; } - }, { - key: "callInstance", - value: function callInstance(method, args) { - if (!_instance) { - var message = 'Rollbar is not initialized'; - src_logger.error(message); - var maybeCallback = _getFirstFunction(args); - if (maybeCallback) { - maybeCallback(new Error(message)); - } - return; + var tracesLength = traces.length; + for (var i = 0; i < tracesLength; i++) { + if (matchFrames(traces[i], list, block)) { + return true; } - return _instance[method].apply(_instance, args); } - }]); -}(); -/* Internal */ -_Rollbar = core_Rollbar; -core_defineProperty(core_Rollbar, "global", function () { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; + } catch (e + /* istanbul ignore next */) { + if (block) { + settings.hostBlockList = null; + } else { + settings.hostSafeList = null; + } + var listName = block ? 'hostBlockList' : 'hostSafeList'; + logger.error("Error while reading your configuration's " + listName + ' option. Removing custom ' + listName + '.', e); + return !block; } - return _Rollbar.callInstance('global', args); -}); -core_defineProperty(core_Rollbar, "configure", function () { - for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - return _Rollbar.callInstance('configure', args); -}); -core_defineProperty(core_Rollbar, "lastError", function () { - for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } - return _Rollbar.callInstance('lastError', args); -}); -core_defineProperty(core_Rollbar, "log", function () { - for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; - } - return _Rollbar.callInstance('log', args); -}); -core_defineProperty(core_Rollbar, "debug", function () { - for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { - args[_key5] = arguments[_key5]; - } - return _Rollbar.callInstance('debug', args); -}); -core_defineProperty(core_Rollbar, "info", function () { - for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { - args[_key6] = arguments[_key6]; - } - return _Rollbar.callInstance('info', args); -}); -core_defineProperty(core_Rollbar, "warn", function () { - for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { - args[_key7] = arguments[_key7]; - } - return _Rollbar.callInstance('warn', args); -}); -core_defineProperty(core_Rollbar, "warning", function () { - for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { - args[_key8] = arguments[_key8]; - } - return _Rollbar.callInstance('warning', args); -}); -core_defineProperty(core_Rollbar, "error", function () { - for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) { - args[_key9] = arguments[_key9]; - } - return _Rollbar.callInstance('error', args); -}); -core_defineProperty(core_Rollbar, "critical", function () { - for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) { - args[_key10] = arguments[_key10]; - } - return _Rollbar.callInstance('critical', args); -}); -core_defineProperty(core_Rollbar, "buildJsonPayload", function () { - for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) { - args[_key11] = arguments[_key11]; - } - return _Rollbar.callInstance('buildJsonPayload', args); -}); -core_defineProperty(core_Rollbar, "sendJsonPayload", function () { - for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) { - args[_key12] = arguments[_key12]; - } - return _Rollbar.callInstance('sendJsonPayload', args); -}); -core_defineProperty(core_Rollbar, "wrap", function () { - for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) { - args[_key13] = arguments[_key13]; - } - return _Rollbar.callInstance('wrap', args); -}); -core_defineProperty(core_Rollbar, "captureEvent", function () { - for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) { - args[_key14] = arguments[_key14]; - } - return _Rollbar.callInstance('captureEvent', args); -}); -function addTransformsToNotifier(notifier, rollbar, gWindow) { - notifier.addTransform(handleDomException).addTransform(handleItemWithError).addTransform(ensureItemHasSomethingToSay).addTransform(addBaseInfo).addTransform(addRequestInfo(gWindow)).addTransform(addClientInfo(gWindow)).addTransform(addPluginInfo(gWindow)).addTransform(addBody).addTransform(addMessageWithError).addTransform(addTelemetryData).addTransform(addConfigToPayload).addTransform(addScrubber(rollbar.scrub)).addTransform(addPayloadOptions).addTransform(userTransform(src_logger)).addTransform(addConfiguredOptions).addTransform(addDiagnosticKeys).addTransform(itemToPayload); + return false; } -function addPredicatesToQueue(queue) { - queue.addPredicate(checkLevel).addPredicate(checkIgnore).addPredicate(userCheckIgnore(src_logger)).addPredicate(urlIsNotBlockListed(src_logger)).addPredicate(urlIsSafeListed(src_logger)).addPredicate(messageIsIgnored(src_logger)); +function messageIsIgnored(logger) { + return function (item, settings) { + var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages; + try { + messageIsIgnored = false; + ignoredMessages = settings.ignoredMessages; + if (!ignoredMessages || ignoredMessages.length === 0) { + return true; + } + messages = messagesFromItem(item); + if (messages.length === 0) { + return true; + } + len = ignoredMessages.length; + for (i = 0; i < len; i++) { + rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi'); + for (j = 0; j < messages.length; j++) { + messageIsIgnored = rIgnoredMessage.test(messages[j]); + if (messageIsIgnored) { + return false; + } + } + } + } catch (_e + /* istanbul ignore next */) { + settings.ignoredMessages = null; + logger.error("Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages."); + } + return true; + }; } -function _getFirstFunction(args) { - for (var i = 0, len = args.length; i < len; ++i) { - if (isFunction(args[i])) { - return args[i]; +function messagesFromItem(item) { + var body = item.body; + var messages = []; + + // The payload schema only allows one of trace_chain, message, or trace. + // However, existing test cases are based on having both trace and message present. + // So here we preserve the ability to collect strings from any combination of these keys. + if (body.trace_chain) { + var traceChain = body.trace_chain; + var _iterator = predicates_createForOfIteratorHelper(traceChain), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var trace = _step.value; + messages.push(get(trace, 'exception.message')); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); } } - return undefined; -} -function _gWindow() { - return typeof window != 'undefined' && window || typeof self != 'undefined' && self; + if (body.trace) { + messages.push(get(body, 'trace.exception.message')); + } + if (body.message) { + messages.push(get(body, 'message.body')); + } + return messages; } +;// ./src/notifier.js +function notifier_typeof(o) { "@babel/helpers - typeof"; return notifier_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, notifier_typeof(o); } +function notifier_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function notifier_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, notifier_toPropertyKey(o.key), o); } } +function notifier_createClass(e, r, t) { return r && notifier_defineProperties(e.prototype, r), t && notifier_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function notifier_toPropertyKey(t) { var i = notifier_toPrimitive(t, "string"); return "symbol" == notifier_typeof(i) ? i : i + ""; } +function notifier_toPrimitive(t, r) { if ("object" != notifier_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != notifier_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -var core_defaultOptions = { - environment: 'unknown', - version: version, - scrubFields: browser_defaults.scrubFields, - logLevel: logLevel, - reportLevel: reportLevel, - uncaughtErrorLevel: uncaughtErrorLevel, - endpoint: endpoint, - verbose: false, - enabled: true, - transmit: true, - sendConfig: false, - includeItemsInTelemetry: true, - captureIp: true, - inspectAnonymousErrors: true, - ignoreDuplicateErrors: true, - wrapGlobalEventHandlers: false, - replay: defaults, - tracing: tracing_defaults -}; -/* harmony default export */ var core = (core_Rollbar); -;// ./src/telemetry.js -var _excluded = ["otelAttributes"]; -function telemetry_typeof(o) { "@babel/helpers - typeof"; return telemetry_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, telemetry_typeof(o); } -function telemetry_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function telemetry_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? telemetry_ownKeys(Object(t), !0).forEach(function (r) { telemetry_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : telemetry_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function telemetry_defineProperty(e, r, t) { return (r = telemetry_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } -function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } -function telemetry_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function telemetry_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, telemetry_toPropertyKey(o.key), o); } } -function telemetry_createClass(e, r, t) { return r && telemetry_defineProperties(e.prototype, r), t && telemetry_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function telemetry_toPropertyKey(t) { var i = telemetry_toPrimitive(t, "string"); return "symbol" == telemetry_typeof(i) ? i : i + ""; } -function telemetry_toPrimitive(t, r) { if ("object" != telemetry_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != telemetry_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - -var MAX_EVENTS = 100; -// Temporary workaround while solving commonjs -> esm issues in Node 18 - 20. -function fromMillis(millis) { - return [Math.trunc(millis / 1000), Math.round(millis % 1000 * 1e6)]; -} -var Telemeter = /*#__PURE__*/function () { - function Telemeter(options, tracing) { - var _this$tracing; - telemetry_classCallCheck(this, Telemeter); - this.queue = []; - this.options = src_merge(options); - var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS; - this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS)); - this.tracing = tracing; - this.telemetrySpan = (_this$tracing = this.tracing) === null || _this$tracing === void 0 ? void 0 : _this$tracing.startSpan('rollbar-telemetry', {}); +/* + * Notifier - delegates between the client exposed API, the chain of transforms + * necessary to turn an item into something that can be sent to Rollbar, and the + * queue which handles the communcation with the Rollbar API servers. + */ +var Notifier = /*#__PURE__*/function () { + /** + * + * @param {Object} queue - an object that conforms to the interface: + * `addItem(item, callback)` + * @param {Object} options - an object representing the options to be set for + * this notifier, this should have any defaults already set by the caller + */ + function Notifier(queue, options) { + notifier_classCallCheck(this, Notifier); + this.queue = queue; + this.options = options; + this.transforms = []; + this.diagnostic = {}; } - return telemetry_createClass(Telemeter, [{ + + /** + * configure - updates the options for this notifier with the passed in object + * + * @param {Object} options - an object which gets merged with the current + * options set on this notifier + * @returns this + */ + return notifier_createClass(Notifier, [{ key: "configure", value: function configure(options) { + var _this$queue; + (_this$queue = this.queue) === null || _this$queue === void 0 || _this$queue.configure(options); var oldOptions = this.options; - this.options = src_merge(oldOptions, options); - var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS; - var newMaxEvents = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS)); - var deleteCount = 0; - if (this.queue.length > newMaxEvents) { - deleteCount = this.queue.length - newMaxEvents; - } - this.maxQueueSize = newMaxEvents; - this.queue.splice(0, deleteCount); + this.options = merge(oldOptions, options); + return this; } + + /** + * Adds a transform onto the end of the queue of transforms for this notifier + * + * @param {Function} transform - a function which takes three arguments: + * - item: An Object representing the data to eventually be sent to Rollbar + * - options: The current value of the options for this notifier + * - callback: `function(err: (Null|Error), item: (Null|Object))` the + * transform must call this callback with a null value for error if it + * wants the processing chain to continue, otherwise with an error to + * terminate the processing. The item should be the updated item after + * this transform is finished modifying it. + */ }, { - key: "copyEvents", - value: function copyEvents() { - var events = Array.prototype.slice.call(this.queue, 0); - if (isFunction(this.options.filterTelemetry)) { - try { - var i = events.length; - while (i--) { - if (this.options.filterTelemetry(events[i])) { - events.splice(i, 1); - } - } - } catch (e) { - this.options.filterTelemetry = null; - } + key: "addTransform", + value: function addTransform(transform) { + if (isFunction(transform)) { + this.transforms.push(transform); } - - // Filter until supported in legacy telemetry - events = events.filter(function (e) { - return e.type !== 'connectivity'; - }); - - // Remove internal keys from output - events = events.map(function (_ref) { - var otelAttributes = _ref.otelAttributes, - event = _objectWithoutProperties(_ref, _excluded); - return event; - }); - return events; + return this; } + + /** + * The internal log function which applies the configured transforms and then + * pushes onto the queue to be sent to the backend. + * + * @param {Object} item - An object with the following structure: + * - message [String] - An optional string to be sent to rollbar + * - error [Error] - An optional error + * @param {Function} callback - A function of type `function(err, resp)` which + * will be called with exactly one null argument and one non-null argument. + * The callback will be called once, either during the transform stage if + * an error occurs inside a transform, or in response to the communication + * with the backend. The second argument will be the response from the + * backend in case of success. + */ }, { - key: "exportTelemetrySpan", - value: function exportTelemetrySpan() { - var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - if (this.telemetrySpan) { - this.telemetrySpan.end(attributes); - this.telemetrySpan = this.tracing.startSpan('rollbar-telemetry', {}); - } + key: "log", + value: function log(item, callback) { + var _this = this; + callback = isFunction(callback) ? callback : function () {}; + if (!this.options.enabled) { + return callback(new Error('Rollbar is not enabled'), null); + } + this.queue.addPendingItem(item); + var originalError = item.err; + this._applyTransforms(item, function (err, i) { + if (err) { + _this.queue.removePendingItem(item); + return callback(err, null); + } + _this.queue.addItem(i, callback, originalError, item); + }); } + + /* Internal */ + + /** + * Applies the transforms that have been added to this notifier sequentially. + * See `addTransform` for more information. + * + * @param {Object} item - An item to be transformed + * @param {Function} callback - A function of type `function(err, item)` which + * will be called with a non-null error and a null item in the case of a + * transform failure, or a null error and non-null item after all + * transforms have been applied. + */ }, { - key: "capture", - value: function capture(type, metadata, level, rollbarUUID) { - var timestamp = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null; - var otelAttributes = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null; - var e = { - level: getLevel(type, level), - type: type, - timestamp_ms: timestamp || utility_now(), - body: metadata, - source: 'client' - }; - if (rollbarUUID) { - e.uuid = rollbarUUID; - } - if (otelAttributes) { - e.otelAttributes = otelAttributes; - } - try { - if (isFunction(this.options.filterTelemetry) && this.options.filterTelemetry(e)) { - return false; + key: "_applyTransforms", + value: function _applyTransforms(item, callback) { + var transformIndex = -1; + var transformsLength = this.transforms.length; + var transforms = this.transforms; + var options = this.options; + var _next = function next(err, i) { + if (err) { + callback(err, null); + return; } - } catch (exc) { - this.options.filterTelemetry = null; - } - this.push(e); - return e; + transformIndex++; + if (transformIndex === transformsLength) { + callback(null, i); + return; + } + transforms[transformIndex](i, options, _next); + }; + _next(null, item); } - }, { - key: "captureEvent", - value: function captureEvent(type, metadata, level, rollbarUUID) { - return this.capture(type, metadata, level, rollbarUUID); + }]); +}(); + +;// ./src/queue.js +function queue_typeof(o) { "@babel/helpers - typeof"; return queue_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, queue_typeof(o); } +function queue_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function queue_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, queue_toPropertyKey(o.key), o); } } +function queue_createClass(e, r, t) { return r && queue_defineProperties(e.prototype, r), t && queue_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function queue_defineProperty(e, r, t) { return (r = queue_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function queue_toPropertyKey(t) { var i = queue_toPrimitive(t, "string"); return "symbol" == queue_typeof(i) ? i : i + ""; } +function queue_toPrimitive(t, r) { if ("object" != queue_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != queue_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + + +/** + * Queue - an object which handles which handles a queue of items to be sent to Rollbar. + * This object handles rate limiting via a passed in rate limiter, retries based on connection + * errors, and filtering of items based on a set of configurable predicates. The communication to + * the backend is performed via a given API object. + */ +var Queue = /*#__PURE__*/function () { + /** + * @param rateLimiter - An object which conforms to the interface + * `rateLimiter.shouldSend(item) -> bool` + * @param api - An object which conforms to the interface + * `api.postItem(payload, function(err, response))` + * @param logger - An object used to log verbose messages if desired + * @param options - see `Queue.prototype.configure` + * @param replay - Optional `Replay` for coordinating session replay with error occurrences + */ + function Queue(rateLimiter, api, logger, options, replay) { + queue_classCallCheck(this, Queue); + this.rateLimiter = rateLimiter; + this.api = api; + this.logger = logger; + this.options = options; + this.replay = replay; + this.predicates = []; + this.pendingItems = []; + this.pendingRequests = []; + this.retryQueue = []; + this.retryHandle = null; + this.waitCallback = null; + this.waitIntervalID = null; + } + + /** + * configure - updates the options this queue uses + * + * @param options + */ + return queue_createClass(Queue, [{ + key: "configure", + value: function configure(options) { + var _this$api; + (_this$api = this.api) === null || _this$api === void 0 || _this$api.configure(options); + var oldOptions = this.options; + this.options = merge(oldOptions, options); + return this; } + + /** + * addPredicate - adds a predicate to the end of the list of predicates for this queue + * + * @param predicate - function(item, options) -> (bool|{err: Error}) + * Returning true means that this predicate passes and the item is okay to go on the queue + * Returning false means do not add the item to the queue, but it is not an error + * Returning {err: Error} means do not add the item to the queue, and the given error explains why + * Returning {err: undefined} is equivalent to returning true but don't do that + */ }, { - key: "captureError", - value: function captureError(err, level, rollbarUUID, timestamp) { - var _this$telemetrySpan; - var message = err.message || String(err); - var metadata = { - message: message - }; - if (err.stack) { - metadata.stack = err.stack; + key: "addPredicate", + value: function addPredicate(predicate) { + if (isFunction(predicate)) { + this.predicates.push(predicate); } - var otelAttributes = { - message: message, - level: level, - type: 'error', - uuid: rollbarUUID - }; - (_this$telemetrySpan = this.telemetrySpan) === null || _this$telemetrySpan === void 0 || _this$telemetrySpan.addEvent('rollbar-occurrence-event', otelAttributes, fromMillis(timestamp)); - return this.capture('error', metadata, level, rollbarUUID, timestamp, otelAttributes); + return this; } }, { - key: "captureLog", - value: function captureLog(message, level, rollbarUUID, timestamp) { - var otelAttributes = null; - - // If the uuid is present, this is a message occurrence. - if (rollbarUUID) { - var _this$telemetrySpan2; - otelAttributes = { - message: message, - level: level, - type: 'message', - uuid: rollbarUUID - }, (_this$telemetrySpan2 = this.telemetrySpan) === null || _this$telemetrySpan2 === void 0 ? void 0 : _this$telemetrySpan2.addEvent('rollbar-occurrence-event', otelAttributes, fromMillis(timestamp)); - } else { - var _this$telemetrySpan3; - otelAttributes = { - message: message, - level: level - }; - (_this$telemetrySpan3 = this.telemetrySpan) === null || _this$telemetrySpan3 === void 0 || _this$telemetrySpan3.addEvent('rollbar-log-event', otelAttributes, fromMillis(timestamp)); - } - return this.capture('log', { - message: message - }, level, rollbarUUID, timestamp, otelAttributes); + key: "addPendingItem", + value: function addPendingItem(item) { + this.pendingItems.push(item); } }, { - key: "captureNetwork", - value: function captureNetwork(metadata, subtype, rollbarUUID, requestData) { - var _metadata$response, _this$telemetrySpan4; - subtype = subtype || 'xhr'; - metadata.subtype = metadata.subtype || subtype; - if (requestData) { - metadata.request = requestData; + key: "removePendingItem", + value: function removePendingItem(item) { + var idx = this.pendingItems.indexOf(item); + if (idx !== -1) { + this.pendingItems.splice(idx, 1); } - var level = this.levelFromStatus(metadata.status_code); - var endTimeNano = (metadata.end_time_ms || 0) * 1e6; - var otelAttributes = { - type: metadata.subtype, - method: metadata.method, - url: metadata.url, - statusCode: metadata.status_code, - 'request.headers': JSON.stringify(metadata.request_headers || {}), - 'response.headers': JSON.stringify(((_metadata$response = metadata.response) === null || _metadata$response === void 0 ? void 0 : _metadata$response.headers) || {}), - 'response.timeUnixNano': endTimeNano.toString() - }; - (_this$telemetrySpan4 = this.telemetrySpan) === null || _this$telemetrySpan4 === void 0 || _this$telemetrySpan4.addEvent('rollbar-network-event', otelAttributes, fromMillis(metadata.start_time_ms)); - return this.capture('network', metadata, level, rollbarUUID, metadata.start_time_ms, otelAttributes); } + + /** + * addItem - Send an item to the Rollbar API if all of the predicates are satisfied + * + * @param item - Item instance with the payload to send to the backend + * @param callback - function(error, repsonse) which will be called with the response from the API + * in the case of a success, otherwise response will be null and error will have a value. If both + * error and response are null then the item was stopped by a predicate which did not consider this + * to be an error condition, but nonetheless did not send the item to the API. + * @param originalError - The original error before any transformations that is to be logged if any + * @param originalItem - The original item before transforms, used in pendingItems queue + */ }, { - key: "levelFromStatus", - value: function levelFromStatus(statusCode) { - if (statusCode >= 200 && statusCode < 400) { - return 'info'; + key: "addItem", + value: function addItem(item, callback, originalError, originalItem) { + var _this = this; + if (!callback || !isFunction(callback)) { + callback = function callback() { + return; + }; } - if (statusCode === 0 || statusCode >= 400) { - return 'error'; + var data = item.data; + var predicateResult = this._applyPredicates(data); + if (predicateResult.stop) { + this.removePendingItem(originalItem); + callback(predicateResult.err); + return; + } + this._maybeLog(data, originalError); + this.removePendingItem(originalItem); + if (!this.options.transmit) { + callback(new Error('Transmit disabled')); + return; + } + if (this.replay && data.body) { + item.replayId = this.replay.capture(null, data.uuid, { + type: 'occurrence', + level: item.level + }); + if (item.replayId) { + addItemAttributes(item.data, [{ + key: 'replay_id', + value: item.replayId + }]); + } + } + this.pendingRequests.push(data); + try { + this._makeApiRequest(data, function (err, resp, headers) { + _this._dequeuePendingRequest(data); + if (item.replayId) { + _this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers); + } + callback(err, resp); + }); + } catch (err) { + this._dequeuePendingRequest(data); + if (item.replayId) { + var _this$replay; + (_this$replay = this.replay) === null || _this$replay === void 0 || _this$replay.discard(item.replayId); + } + callback(err); } - return 'info'; } + + /** + * wait - Stop any further errors from being added to the queue, and get called back when all items + * currently processing have finished sending to the backend. + * + * @param callback - function() called when all pending items have been sent + */ }, { - key: "captureDom", - value: function captureDom(subtype, element, value, checked, rollbarUUID) { - var metadata = { - subtype: subtype, - element: element - }; - if (value !== undefined) { - metadata.value = value; + key: "wait", + value: function wait(callback) { + var _this2 = this; + if (!isFunction(callback)) { + return; } - if (checked !== undefined) { - metadata.checked = checked; + this.waitCallback = callback; + if (this._maybeCallWait()) { + return; } - return this.capture('dom', metadata, 'info', rollbarUUID); + if (this.waitIntervalID) { + this.waitIntervalID = clearInterval(this.waitIntervalID); + } + this.waitIntervalID = setInterval(function () { + _this2._maybeCallWait(); + }, 500); } + + /** + * Sequentially applies the predicates that have been added to the queue to the + * given item with the currently configured options. + * + * @param item - An item in the queue + * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue, + * the error value should be passed up to a callbak if we are stopping. + */ }, { - key: "captureInput", - value: function captureInput(_ref2) { - var _this$telemetrySpan5; - var type = _ref2.type, - isSynthetic = _ref2.isSynthetic, - element = _ref2.element, - value = _ref2.value, - timestamp = _ref2.timestamp; - var name = 'rollbar-input-event'; - var metadata = { - type: name, - subtype: type, - element: element, - value: value - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic, - element: element, - value: value, - endTimeUnixNano: fromMillis(timestamp) - }; - var event = this._getRepeatedEvent(name, otelAttributes); - if (event) { - return this._updateRepeatedEvent(event, otelAttributes, timestamp); + key: "_applyPredicates", + value: function _applyPredicates(item) { + var p = null; + for (var i = 0, len = this.predicates.length; i < len; i++) { + p = this.predicates[i](item, this.options); + if (!p || p.err !== undefined) { + return { + stop: true, + err: p.err + }; + } } - (_this$telemetrySpan5 = this.telemetrySpan) === null || _this$telemetrySpan5 === void 0 || _this$telemetrySpan5.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + return { + stop: false, + err: null + }; } + + /** + * Send an item to Rollbar, callback when done, if there is an error make an + * effort to retry if we are configured to do so. + * + * @param item - an item ready to send to the backend + * @param callback - function(err, response) + */ }, { - key: "captureClick", - value: function captureClick(_ref3) { - var _this$telemetrySpan6; - var type = _ref3.type, - isSynthetic = _ref3.isSynthetic, - element = _ref3.element, - timestamp = _ref3.timestamp; - var name = 'rollbar-click-event'; - var metadata = { - type: name, - subtype: type, - element: element - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic, - element: element, - endTimeUnixNano: fromMillis(timestamp) - }; - var event = this._getRepeatedEvent(name, otelAttributes); - if (event) { - return this._updateRepeatedEvent(event, otelAttributes, timestamp); + key: "_makeApiRequest", + value: function _makeApiRequest(item, callback) { + var _this3 = this; + var rateLimitResponse = this.rateLimiter.shouldSend(item); + if (rateLimitResponse.shouldSend) { + this.api.postItem(item, function (err, resp, headers) { + if (err) { + _this3._maybeRetry(err, item, callback); + } else { + callback(err, resp, headers); + } + }); + } else if (rateLimitResponse.error) { + callback(rateLimitResponse.error); + } else { + this.api.postItem(rateLimitResponse.payload, callback); } - (_this$telemetrySpan6 = this.telemetrySpan) === null || _this$telemetrySpan6 === void 0 || _this$telemetrySpan6.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); } + + // These are errors basically mean there is no internet connection }, { - key: "_getRepeatedEvent", - value: function _getRepeatedEvent(name, attributes) { - var lastEvent = this._lastEvent(this.queue); - if (lastEvent && lastEvent.body.type === name && lastEvent.otelAttributes.target === attributes.target) { - return lastEvent; + key: "_maybeRetry", + value: + /** + * Given the error returned by the API, decide if we should retry or just callback + * with the error. + * + * @param err - an error returned by the API transport + * @param item - the item that was trying to be sent when this error occured + * @param callback - function(err, response) + */ + function _maybeRetry(err, item, callback) { + var shouldRetry = false; + if (this.options.retryInterval) { + for (var i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) { + if (err.code === Queue.RETRIABLE_ERRORS[i]) { + shouldRetry = true; + break; + } + } + if (shouldRetry && isFiniteNumber(this.options.maxRetries)) { + item.retries = item.retries ? item.retries + 1 : 1; + if (item.retries > this.options.maxRetries) { + shouldRetry = false; + } + } + } + if (shouldRetry) { + this._retryApiRequest(item, callback); + } else { + callback(err); } } + + /** + * Add an item and a callback to a queue and possibly start a timer to process + * that queue based on the retryInterval in the options for this queue. + * + * @param item - an item that failed to send due to an error we deem retriable + * @param callback - function(err, response) + */ }, { - key: "_updateRepeatedEvent", - value: function _updateRepeatedEvent(event, attributes, timestamp) { - var duration = Math.max(timestamp - event.timestamp_ms, 1); - event.body.value = attributes.value; - event.otelAttributes.value = attributes.value; - event.otelAttributes.height = attributes.height; - event.otelAttributes.width = attributes.width; - event.otelAttributes.textZoomRatio = attributes.textZoomRatio; - event.otelAttributes['endTimeUnixNano'] = fromMillis(timestamp); - event.otelAttributes['durationUnixNano'] = fromMillis(duration); - event.otelAttributes.count = (event.otelAttributes.count || 1) + 1; - event.otelAttributes.rate = event.otelAttributes.count / (duration / 1000); + key: "_retryApiRequest", + value: function _retryApiRequest(item, callback) { + var _this4 = this; + this.retryQueue.push({ + item: item, + callback: callback + }); + if (!this.retryHandle) { + this.retryHandle = setInterval(function () { + while (_this4.retryQueue.length) { + var retryObject = _this4.retryQueue.shift(); + _this4._makeApiRequest(retryObject.item, retryObject.callback); + } + }, this.options.retryInterval); + } } + + /** + * Removes the item from the pending request queue, this queue is used to + * enable to functionality of providing a callback that clients can pass to `wait` to be notified + * when the pending request queue has been emptied. This must be called when the API finishes + * processing this item. If a `wait` callback is configured, it is called by this function. + * + * @param item - the item previously added to the pending request queue + */ }, { - key: "_lastEvent", - value: function _lastEvent(list) { - return list.length > 0 ? list[list.length - 1] : null; + key: "_dequeuePendingRequest", + value: function _dequeuePendingRequest(item) { + var idx = this.pendingRequests.indexOf(item); + if (idx !== -1) { + this.pendingRequests.splice(idx, 1); + this._maybeCallWait(); + } } }, { - key: "captureFocus", - value: function captureFocus(_ref4) { - var _this$telemetrySpan7; - var type = _ref4.type, - isSynthetic = _ref4.isSynthetic, - element = _ref4.element, - timestamp = _ref4.timestamp; - var name = 'rollbar-focus-event'; - var metadata = { - type: name, - subtype: type, - element: element - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic, - element: element - }; - (_this$telemetrySpan7 = this.telemetrySpan) === null || _this$telemetrySpan7 === void 0 || _this$telemetrySpan7.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + key: "_maybeLog", + value: function _maybeLog(data, originalError) { + if (this.logger && this.options.verbose) { + var message = originalError || get(data, 'body.trace.exception.message') || get(data, 'body.trace_chain.0.exception.message'); + if (message) { + this.logger.error(message); + return; + } + message = get(data, 'body.message.body'); + if (message) { + this.logger.log(message); + } + } } }, { - key: "captureResize", - value: function captureResize(_ref5) { - var _this$telemetrySpan8; - var type = _ref5.type, - isSynthetic = _ref5.isSynthetic, - width = _ref5.width, - height = _ref5.height, - textZoomRatio = _ref5.textZoomRatio, - timestamp = _ref5.timestamp; - var name = 'rollbar-resize-event'; - var metadata = { - type: name, - subtype: type, - width: width, - height: height, - textZoomRatio: textZoomRatio - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic, - width: width, - height: height, - textZoomRatio: textZoomRatio - }; - var event = this._getRepeatedEvent(name, otelAttributes); - if (event) { - return this._updateRepeatedEvent(event, otelAttributes, timestamp); + key: "_maybeCallWait", + value: function _maybeCallWait() { + if (isFunction(this.waitCallback) && this.pendingItems.length === 0 && this.pendingRequests.length === 0) { + if (this.waitIntervalID) { + this.waitIntervalID = clearInterval(this.waitIntervalID); + } + this.waitCallback(); + return true; } - (_this$telemetrySpan8 = this.telemetrySpan) === null || _this$telemetrySpan8 === void 0 || _this$telemetrySpan8.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + return false; } - }, { - key: "captureDragDrop", - value: function captureDragDrop(_ref6) { - var _this$telemetrySpan9; - var type = _ref6.type, - isSynthetic = _ref6.isSynthetic, - element = _ref6.element, - dropEffect = _ref6.dropEffect, - effectAllowed = _ref6.effectAllowed, - kinds = _ref6.kinds, - mediaTypes = _ref6.mediaTypes, - timestamp = _ref6.timestamp; - var name = 'rollbar-dragdrop-event'; - var metadata = { - type: name, - subtype: type, - isSynthetic: isSynthetic - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic - }; - if (type === 'dragstart') { - metadata = telemetry_objectSpread(telemetry_objectSpread({}, metadata), {}, { - element: element, - dropEffect: dropEffect, - effectAllowed: effectAllowed - }); - otelAttributes = telemetry_objectSpread(telemetry_objectSpread({}, otelAttributes), {}, { - element: element, - dropEffect: dropEffect, - effectAllowed: effectAllowed - }); + }]); +}(); +queue_defineProperty(Queue, "RETRIABLE_ERRORS", ['ECONNRESET', 'ENOTFOUND', 'ESOCKETTIMEDOUT', 'ETIMEDOUT', 'ECONNREFUSED', 'EHOSTUNREACH', 'EPIPE', 'EAI_AGAIN']); +/* harmony default export */ var queue = (Queue); +;// ./src/rateLimiter.js +function rateLimiter_typeof(o) { "@babel/helpers - typeof"; return rateLimiter_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, rateLimiter_typeof(o); } +function _readOnlyError(r) { throw new TypeError('"' + r + '" is read-only'); } +function rateLimiter_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function rateLimiter_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, rateLimiter_toPropertyKey(o.key), o); } } +function rateLimiter_createClass(e, r, t) { return r && rateLimiter_defineProperties(e.prototype, r), t && rateLimiter_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function rateLimiter_defineProperty(e, r, t) { return (r = rateLimiter_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function rateLimiter_toPropertyKey(t) { var i = rateLimiter_toPrimitive(t, "string"); return "symbol" == rateLimiter_typeof(i) ? i : i + ""; } +function rateLimiter_toPrimitive(t, r) { if ("object" != rateLimiter_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != rateLimiter_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +/* + * RateLimiter - encapsulates the logic for counting items sent to Rollbar. + * + * @param options - the same options that are accepted by configureGlobal offered as a convenience + */ +var RateLimiter = /*#__PURE__*/function () { + function RateLimiter() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + rateLimiter_classCallCheck(this, RateLimiter); + this.startTime = Date.now(); + this.counter = 0; + this.perMinCounter = 0; + this.platform = null; + this.platformOptions = {}; + this.configureGlobal(options); + } + + /* + * configureGlobal - set the global rate limiter options + * + * @param options - Only the following values are recognized: + * startTime: a timestamp of the form returned by (new Date()).getTime() + * maxItems: the maximum items + * itemsPerMinute: the max number of items to send in a given minute + */ + return rateLimiter_createClass(RateLimiter, [{ + key: "configureGlobal", + value: function configureGlobal() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var startTime = options.startTime, + maxItems = options.maxItems, + itemsPerMinute = options.itemsPerMinute; + if (startTime !== undefined) { + RateLimiter.globalSettings.startTime = startTime; } - if (type === 'drop') { - metadata = telemetry_objectSpread(telemetry_objectSpread({}, metadata), {}, { - element: element, - dropEffect: dropEffect, - effectAllowed: effectAllowed, - kinds: kinds, - mediaTypes: mediaTypes - }); - otelAttributes = telemetry_objectSpread(telemetry_objectSpread({}, otelAttributes), {}, { - element: element, - dropEffect: dropEffect, - effectAllowed: effectAllowed, - kinds: kinds, - mediaTypes: mediaTypes - }); + if (maxItems !== undefined) { + RateLimiter.globalSettings.maxItems = maxItems; + } + if (itemsPerMinute !== undefined) { + RateLimiter.globalSettings.itemsPerMinute = itemsPerMinute; } - (_this$telemetrySpan9 = this.telemetrySpan) === null || _this$telemetrySpan9 === void 0 || _this$telemetrySpan9.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); - } - }, { - key: "captureNavigation", - value: function captureNavigation(from, to, rollbarUUID, timestamp) { - var _this$telemetrySpan10; - (_this$telemetrySpan10 = this.telemetrySpan) === null || _this$telemetrySpan10 === void 0 || _this$telemetrySpan10.addEvent('rollbar-navigation-event', { - 'previous.url.full': from, - 'url.full': to - }, fromMillis(timestamp)); - return this.capture('navigation', { - from: from, - to: to - }, 'info', rollbarUUID, timestamp); - } - }, { - key: "captureDomContentLoaded", - value: function captureDomContentLoaded(ts) { - return this.capture('navigation', { - subtype: 'DOMContentLoaded' - }, 'info', undefined, ts && ts.getTime()); - /** - * If we decide to make this a dom event instead, then use the line below: - return this.capture('dom', {subtype: 'DOMContentLoaded'}, 'info', undefined, ts && ts.getTime()); - */ - } - }, { - key: "captureLoad", - value: function captureLoad(ts) { - return this.capture('navigation', { - subtype: 'load' - }, 'info', undefined, ts && ts.getTime()); - /** - * If we decide to make this a dom event instead, then use the line below: - return this.capture('dom', {subtype: 'load'}, 'info', undefined, ts && ts.getTime()); - */ - } - }, { - key: "captureConnectivityChange", - value: function captureConnectivityChange(_ref7) { - var _this$telemetrySpan11; - var type = _ref7.type, - isSynthetic = _ref7.isSynthetic, - timestamp = _ref7.timestamp; - var name = 'rollbar-connectivity-event'; - var metadata = { - type: name, - subtype: type - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic - }; - (_this$telemetrySpan11 = this.telemetrySpan) === null || _this$telemetrySpan11 === void 0 || _this$telemetrySpan11.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('connectivity', metadata, 'info', null, timestamp, otelAttributes); } - // Only intended to be used internally by the notifier + /* + * shouldSend - determine if we should send a given item based on rate limit settings + * + * @param item - the item we are about to send + * @returns An object with the following structure: + * error: (Error|null) + * shouldSend: bool + * payload: (Object|null) + * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and + * exactly one of error or payload will be non-null. If error is non-null, the returned Error will + * describe the situation, but it means that we were already over a rate limit (either globally or + * per minute) when this item was checked. If error is null, and therefore payload is non-null, it + * means this item put us over the global rate limit and the payload should be sent to Rollbar in + * place of the passed in item. + */ }, { - key: "_captureRollbarItem", - value: function _captureRollbarItem(item) { - if (!this.options.includeItemsInTelemetry) { - return; + key: "shouldSend", + value: function shouldSend(item) { + var now = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Date.now(); + var elapsedTime = now - this.startTime; + if (elapsedTime < 0 || elapsedTime >= 60000) { + this.startTime = now; + this.perMinCounter = 0; } - if (item.err) { - return this.captureError(item.err, item.level, item.uuid, item.timestamp); - } - if (item.message) { - return this.captureLog(item.message, item.level, item.uuid, item.timestamp); + var globalRateLimit = RateLimiter.globalSettings.maxItems; + var globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute; + if (checkRate(item, globalRateLimit, this.counter)) { + return shouldSendValue(this.platform, this.platformOptions, "".concat(globalRateLimit, " max items reached"), false); } - if (item.custom) { - return this.capture('log', item.custom, item.level, item.uuid, item.timestamp); + if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) { + return shouldSendValue(this.platform, this.platformOptions, "".concat(globalRateLimitPerMin, " items per minute reached"), false); } + this.counter += 1; + this.perMinCounter += 1; + var underGlobalLimit = !checkRate(item, globalRateLimit, this.counter); + var perMinute = underGlobalLimit; + var shouldSend = underGlobalLimit && !checkRate(item, globalRateLimitPerMin, this.perMinCounter); + return shouldSendValue(this.platform, this.platformOptions, null, shouldSend, globalRateLimit, globalRateLimitPerMin, perMinute); } }, { - key: "push", - value: function push(e) { - this.queue.push(e); - if (this.queue.length > this.maxQueueSize) { - this.queue.shift(); - } + key: "setPlatformOptions", + value: function setPlatformOptions(platform, options) { + this.platform = platform; + this.platformOptions = options; } }]); }(); -function getLevel(type, level) { - if (level) { - return level; +/* Helpers */ +rateLimiter_defineProperty(RateLimiter, "globalSettings", { + startTime: Date.now(), + maxItems: undefined, + itemsPerMinute: undefined +}); +function checkRate(item, limit, counter) { + return !item.ignoreRateLimit && limit >= 1 && counter > limit; +} +function shouldSendValue(platform, options, error, shouldSend, globalRateLimit, limitPerMin, perMinute) { + var payload = null; + var errorResult = error ? new Error(error) : null; + if (!errorResult && !shouldSend) { + payload = rateLimitPayload(platform, options, globalRateLimit, limitPerMin, perMinute); } - var defaultLevel = { - error: 'error', - manual: 'info' + return { + error: errorResult, + shouldSend: shouldSend, + payload: payload }; - return defaultLevel[type] || 'info'; } -/* harmony default export */ var telemetry = (Telemeter); -;// ./src/utility/headers.js +function rateLimitPayload(platform, options, globalRateLimit, limitPerMin, perMinute) { + var environment = options.environment || options.payload && options.payload.environment; + var msg = perMinute ? 'item per minute limit reached, ignoring errors until timeout' : 'maxItems has been hit, ignoring errors until reset.'; + var item = { + body: { + message: { + body: msg, + extra: { + maxItems: globalRateLimit, + itemsPerMinute: limitPerMin + } + } + }, + language: 'javascript', + environment: environment, + notifier: { + version: options.notifier && options.notifier.version || options.version + } + }; + if (platform === 'browser') { + item.platform = 'browser'; + item.framework = 'browser-js'; + item.notifier.name = 'rollbar-browser-js'; + } else if (platform === 'server') { + item.framework = options.framework || 'node-js'; + item.notifier.name = options.notifier.name; + } else if (platform === 'react-native') { + item.framework = options.framework || 'react-native'; + item.notifier.name = options.notifier.name; + } + return item; +} +/* harmony default export */ var rateLimiter = (RateLimiter); +;// ./src/rollbar.js + + + + + /* - * headers - Detect when fetch Headers are undefined and use a partial polyfill. - * - * A full polyfill is not used in order to keep package size as small as possible. - * Since this is only used internally and is not added to the window object, - * the full interface doesn't need to be supported. + * Rollbar - the interface to Rollbar * - * This implementation is modified from whatwg-fetch: - * https://github.com/github/fetch + * @param options + * @param api + * @param logger */ -function headers(headers) { - if (typeof Headers === 'undefined') { - return new FetchHeaders(headers); +function Rollbar(options, api, logger, telemeter, tracing, replay, platform) { + this.options = merge(options); + this.logger = logger; + Rollbar.rateLimiter.configureGlobal(this.options); + Rollbar.rateLimiter.setPlatformOptions(platform, this.options); + this.api = api; + this.queue = new queue(Rollbar.rateLimiter, api, logger, this.options, replay); + this.tracing = tracing; + + // Legacy OpenTracing support + // This must happen before the Notifier is created + var tracer = this.options.tracer || null; + if (validateTracer(tracer)) { + this.tracer = tracer; + // set to a string for api response serialization + this.options.tracer = 'opentracing-tracer-enabled'; + this.options._configuredOptions.tracer = 'opentracing-tracer-enabled'; + } else { + this.tracer = null; } - return new Headers(headers); + this.notifier = new Notifier(this.queue, this.options); + this.telemeter = telemeter; + setStackTraceLimit(options); + this.lastError = null; + this.lastErrorHash = 'none'; } -function normalizeName(name) { - if (typeof name !== 'string') { - name = String(name); +var rollbar_defaultOptions = { + maxItems: 0, + itemsPerMinute: 60 +}; +Rollbar.rateLimiter = new rateLimiter(rollbar_defaultOptions); +Rollbar.prototype.global = function (options) { + Rollbar.rateLimiter.configureGlobal(options); + return this; +}; +Rollbar.prototype.configure = function (options, payloadData) { + var oldOptions = this.options; + var payload = {}; + if (payloadData) { + payload = { + payload: payloadData + }; } - return name.toLowerCase(); -} -function normalizeValue(value) { - if (typeof value !== 'string') { - value = String(value); + this.options = merge(oldOptions, options, payload); + + // Legacy OpenTracing support + // This must happen before the Notifier is configured + var tracer = this.options.tracer || null; + if (validateTracer(tracer)) { + this.tracer = tracer; + // set to a string for api response serialization + this.options.tracer = 'opentracing-tracer-enabled'; + this.options._configuredOptions.tracer = 'opentracing-tracer-enabled'; + } else { + this.tracer = null; } - return value; -} -function iteratorFor(items) { - var iterator = { - next: function next() { - var value = items.shift(); - return { - done: value === undefined, - value: value - }; - } - }; - return iterator; -} -function FetchHeaders(headers) { - this.map = {}; - if (headers instanceof FetchHeaders) { - headers.forEach(function (value, name) { - this.append(name, value); - }, this); - } else if (Array.isArray(headers)) { - headers.forEach(function (header) { - this.append(header[0], header[1]); - }, this); - } else if (headers) { - Object.getOwnPropertyNames(headers).forEach(function (name) { - this.append(name, headers[name]); - }, this); + this.notifier && this.notifier.configure(this.options); + this.telemeter && this.telemeter.configure(this.options); + setStackTraceLimit(options); + this.global(this.options); + if (validateTracer(options.tracer)) { + this.tracer = options.tracer; } -} -FetchHeaders.prototype.append = function (name, value) { - name = normalizeName(name); - value = normalizeValue(value); - var oldValue = this.map[name]; - this.map[name] = oldValue ? oldValue + ', ' + value : value; + return this; }; -FetchHeaders.prototype.get = function (name) { - name = normalizeName(name); - return this.has(name) ? this.map[name] : null; +Rollbar.prototype.log = function (item) { + var level = this._defaultLogLevel(); + return this._log(level, item); }; -FetchHeaders.prototype.has = function (name) { - return this.map.hasOwnProperty(normalizeName(name)); +Rollbar.prototype.debug = function (item) { + this._log('debug', item); }; -FetchHeaders.prototype.forEach = function (callback, thisArg) { - for (var name in this.map) { - if (this.map.hasOwnProperty(name)) { - callback.call(thisArg, this.map[name], name, this); - } - } +Rollbar.prototype.info = function (item) { + this._log('info', item); }; -FetchHeaders.prototype.entries = function () { - var items = []; - this.forEach(function (value, name) { - items.push([name, value]); - }); - return iteratorFor(items); +Rollbar.prototype.warn = function (item) { + this._log('warning', item); +}; +Rollbar.prototype.warning = function (item) { + this._log('warning', item); +}; +Rollbar.prototype.error = function (item) { + this._log('error', item); +}; +Rollbar.prototype.critical = function (item) { + this._log('critical', item); +}; +Rollbar.prototype.wait = function (callback) { + this.queue.wait(callback); +}; +Rollbar.prototype.captureEvent = function (type, metadata, level) { + return this.telemeter && this.telemeter.captureEvent(type, metadata, level); +}; +Rollbar.prototype.captureDomContentLoaded = function (ts) { + return this.telemeter && this.telemeter.captureDomContentLoaded(ts); +}; +Rollbar.prototype.captureLoad = function (ts) { + return this.telemeter && this.telemeter.captureLoad(ts); +}; +Rollbar.prototype.buildJsonPayload = function (item) { + return this.api.buildJsonPayload(item); +}; +Rollbar.prototype.sendJsonPayload = function (jsonPayload) { + this.api.postJsonPayload(jsonPayload); }; -/* harmony default export */ var utility_headers = (headers); -;// ./src/utility/replace.js -function replace(obj, name, replacement, replacements, type) { - var orig = obj[name]; - obj[name] = replacement(orig); - if (replacements) { - replacements[type].push([obj, name, orig]); - } -} -/* harmony default export */ var utility_replace = (replace); -;// ./src/utility/traverse.js -function traverse(obj, func, seen) { - var k, v, i; - var isObj = isType(obj, 'object'); - var isArray = isType(obj, 'array'); - var keys = []; - var seenIndex; +/* Internal */ - // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11. - seen = seen || { - obj: [], - mapped: [] - }; - if (isObj) { - seenIndex = seen.obj.indexOf(obj); - if (isObj && seenIndex !== -1) { - // Prefer the mapped object if there is one. - return seen.mapped[seenIndex] || seen.obj[seenIndex]; - } - seen.obj.push(obj); - seenIndex = seen.obj.length - 1; +Rollbar.prototype._log = function (defaultLevel, item) { + var callback; + if (item.callback) { + callback = item.callback; + delete item.callback; } - if (isObj) { - for (k in obj) { - if (Object.prototype.hasOwnProperty.call(obj, k)) { - keys.push(k); - } - } - } else if (isArray) { - for (i = 0; i < obj.length; ++i) { - keys.push(i); + if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) { + if (callback) { + var error = new Error('ignored identical item'); + error.item = item; + callback(error); } + return; } - var result = isObj ? {} : []; - var same = true; - for (i = 0; i < keys.length; ++i) { - k = keys[i]; - v = obj[k]; - result[k] = func(k, v, seen); - same = same && result[k] === obj[k]; - } - if (isObj && !same) { - seen.mapped[seenIndex] = result; - } - return !same ? result : obj; -} -/* harmony default export */ var utility_traverse = (traverse); -;// ./src/scrub.js - + try { + item.level = item.level || defaultLevel; + this._addItemAttributes(item); -function scrub(data, scrubFields, scrubPaths) { - scrubFields = scrubFields || []; - if (scrubPaths) { - for (var i = 0; i < scrubPaths.length; ++i) { - scrubPath(data, scrubPaths[i]); + // Legacy OpenTracing support + this._addTracingInfo(item); + var telemeter = this.telemeter; + if (telemeter) { + telemeter._captureRollbarItem(item); + item.telemetryEvents = telemeter.copyEvents() || []; } + this.notifier.log(item, callback); + } catch (e) { + if (callback) { + callback(e); + } + this.logger.error(e); } - var paramRes = _getScrubFieldRegexs(scrubFields); - var queryRes = _getScrubQueryParamRegexs(scrubFields); - function redactQueryParam(dummy0, paramPart) { - return paramPart + redact(); +}; +Rollbar.prototype._addItemAttributes = function (item) { + var _this$tracing, _this$tracing2; + var span = (_this$tracing = this.tracing) === null || _this$tracing === void 0 ? void 0 : _this$tracing.getSpan(); + var attributes = [{ + key: 'session_id', + value: (_this$tracing2 = this.tracing) === null || _this$tracing2 === void 0 ? void 0 : _this$tracing2.sessionId + }, { + key: 'span_id', + value: span === null || span === void 0 ? void 0 : span.spanId + }, { + key: 'trace_id', + value: span === null || span === void 0 ? void 0 : span.traceId + }]; + if (item._isUncaught) { + attributes.push({ + key: 'is_uncaught', + value: 'true' + }); } - function paramScrubber(v) { - var i; - if (isType(v, 'string')) { - for (i = 0; i < queryRes.length; ++i) { - v = v.replace(queryRes[i], redactQueryParam); - } - } - return v; + addItemAttributes(item.data, attributes); + span === null || span === void 0 || span.addEvent('rollbar.occurrence', [{ + key: 'rollbar.occurrence.uuid', + value: item.uuid + }]); +}; +Rollbar.prototype._defaultLogLevel = function () { + return this.options.logLevel || 'debug'; +}; +Rollbar.prototype._sameAsLastError = function (item) { + if (!item._isUncaught) { + return false; } - function valScrubber(k, v) { - var i; - for (i = 0; i < paramRes.length; ++i) { - if (paramRes[i].test(k)) { - v = redact(); - break; - } - } - return v; + var itemHash = generateItemHash(item); + if (this.lastErrorHash === itemHash) { + return true; } - function scrubber(k, v, seen) { - var tmpV = valScrubber(k, v); - if (tmpV === v) { - if (isType(v, 'object') || isType(v, 'array')) { - return utility_traverse(v, scrubber, seen); + this.lastError = item.err; + this.lastErrorHash = itemHash; + return false; +}; +Rollbar.prototype._addTracingInfo = function (item) { + // Tracer validation occurs in the constructor + // or in the Rollbar.prototype.configure methods + if (this.tracer) { + // add rollbar occurrence uuid to span + var span = this.tracer.scope().active(); + if (validateSpan(span)) { + span.setTag('rollbar.error_uuid', item.uuid); + span.setTag('rollbar.has_error', true); + span.setTag('error', true); + span.setTag('rollbar.item_url', "https://rollbar.com/item/uuid/?uuid=".concat(item.uuid)); + span.setTag('rollbar.occurrence_url', "https://rollbar.com/occurrence/uuid/?uuid=".concat(item.uuid)); + + // add span ID & trace ID to occurrence + var opentracingSpanId = span.context().toSpanId(); + var opentracingTraceId = span.context().toTraceId(); + if (item.custom) { + item.custom.opentracing_span_id = opentracingSpanId; + item.custom.opentracing_trace_id = opentracingTraceId; + } else { + item.custom = { + opentracing_span_id: opentracingSpanId, + opentracing_trace_id: opentracingTraceId + }; } - return paramScrubber(tmpV); - } else { - return tmpV; } } - return utility_traverse(data, scrubber); -} -function scrubPath(obj, path) { - var keys = path.split('.'); - var last = keys.length - 1; - try { - for (var i = 0; i <= last; ++i) { - if (i < last) { - obj = obj[keys[i]]; - } else { - obj[keys[i]] = redact(); - } - } - } catch (e) { - // Missing key is OK; - } +}; +function generateItemHash(item) { + var message = item.message || ''; + var stack = (item.err || {}).stack || String(item.err); + return message + '::' + stack; } -function _getScrubFieldRegexs(scrubFields) { - var ret = []; - var pat; - for (var i = 0; i < scrubFields.length; ++i) { - pat = '^\\[?(%5[bB])?' + scrubFields[i] + '\\[?(%5[bB])?\\]?(%5[dD])?$'; - ret.push(new RegExp(pat, 'i')); + +// Node.js, Chrome, Safari, and some other browsers support this property +// which globally sets the number of stack frames returned in an Error object. +// If a browser can't use it, no harm done. +function setStackTraceLimit(options) { + if (options.stackTraceLimit) { + Error.stackTraceLimit = options.stackTraceLimit; } - return ret; } -function _getScrubQueryParamRegexs(scrubFields) { - var ret = []; - var pat; - for (var i = 0; i < scrubFields.length; ++i) { - pat = '\\[?(%5[bB])?' + scrubFields[i] + '\\[?(%5[bB])?\\]?(%5[dD])?'; - ret.push(new RegExp('(' + pat + '=)([^&\\n]+)', 'igm')); + +/** + * Validate the Tracer object provided to the Client + * is valid for our Opentracing use case. + * @param {opentracer.Tracer} tracer + */ +function validateTracer(tracer) { + if (!tracer) { + return false; } - return ret; -} -/* harmony default export */ var src_scrub = (scrub); -;// ./src/browser/domUtility.js -function domUtility_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = domUtility_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } -function domUtility_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return domUtility_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? domUtility_arrayLikeToArray(r, a) : void 0; } } -function domUtility_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function getElementType(e) { - return (e.getAttribute('type') || '').toLowerCase(); + if (!tracer.scope || typeof tracer.scope !== 'function') { + return false; + } + var scope = tracer.scope(); + if (!scope || !scope.active || typeof scope.active !== 'function') { + return false; + } + return true; } -function isDescribedElement(element, type, subtypes) { - if (element.tagName.toLowerCase() !== type.toLowerCase()) { + +/** + * Validate the Span object provided + * @param {opentracer.Span} span + */ +function validateSpan(span) { + if (!span || !span.context || typeof span.context !== 'function') { return false; } - if (!subtypes) { - return true; + var spanContext = span.context(); + if (!spanContext || !spanContext.toSpanId || !spanContext.toTraceId || typeof spanContext.toSpanId !== 'function' || typeof spanContext.toTraceId !== 'function') { + return false; } - element = getElementType(element); - for (var i = 0; i < subtypes.length; i++) { - if (subtypes[i] === element) { - return true; - } + return true; +} +/* harmony default export */ var rollbar = (Rollbar); +;// ./src/tracing/defaults.js +/** + * Default tracing options + */ +/* harmony default export */ var tracing_defaults = ({ + enabled: false, + endpoint: 'api.rollbar.com/api/1/session/' +}); +;// ./src/transforms.js + +function itemToPayload(item, options, callback) { + if (item._isUncaught) { + item.data._isUncaught = true; } - return false; + if (item._originalArgs) { + item.data._originalArgs = item._originalArgs; + } + callback(null, item); } -function getElementFromEvent(evt, doc) { - if (evt.target) { - return evt.target; +function addPayloadOptions(item, options, callback) { + var payloadOptions = options.payload || {}; + if (payloadOptions.body) { + delete payloadOptions.body; } - if (doc && doc.elementFromPoint) { - return doc.elementFromPoint(evt.clientX, evt.clientY); + item.data = merge(item.data, payloadOptions); + callback(null, item); +} +function addTelemetryData(item, options, callback) { + if (item.telemetryEvents) { + set(item, 'data.body.telemetry', item.telemetryEvents); } - return undefined; + callback(null, item); } -function treeToArray(elem) { - var MAX_HEIGHT = 5; - var out = []; - var nextDescription; - for (var height = 0; elem && height < MAX_HEIGHT; height++) { - nextDescription = describeElement(elem); - if (nextDescription.tagName === 'html') { - break; +function addMessageWithError(item, options, callback) { + if (!item.message) { + callback(null, item); + return; + } + var tracePath = 'data.body.trace_chain.0'; + var trace = get(item, tracePath); + if (!trace) { + tracePath = 'data.body.trace'; + trace = get(item, tracePath); + } + if (trace) { + if (!(trace.exception && trace.exception.description)) { + set(item, tracePath + '.exception.description', item.message); + callback(null, item); + return; } - out.unshift(nextDescription); - elem = elem.parentNode; + var extra = get(item, tracePath + '.extra') || {}; + var newExtra = merge(extra, { + message: item.message + }); + set(item, tracePath + '.extra', newExtra); } - return out; + callback(null, item); } -function elementArrayToString(a) { - var MAX_LENGTH = 80; - var separator = ' > ', - separatorLength = separator.length; - var out = [], - len = 0, - nextStr, - totalLength; - for (var i = a.length - 1; i >= 0; i--) { - nextStr = descriptionToString(a[i]); - totalLength = len + out.length * separatorLength + nextStr.length; - if (i < a.length - 1 && totalLength >= MAX_LENGTH + 3) { - out.unshift('...'); - break; +function userTransform(logger) { + return function (item, options, callback) { + var newItem = merge(item); + var response = null; + try { + if (isFunction(options.transform)) { + response = options.transform(newItem.data, item); + } + } catch (e) { + options.transform = null; + logger.error('Error while calling custom transform() function. Removing custom transform().', e); + callback(null, item); + return; } - out.unshift(nextStr); - len += nextStr.length; - } - return out.join(separator); + if (isPromise(response)) { + response.then(function (promisedItem) { + if (promisedItem) { + newItem.data = promisedItem; + } + callback(null, newItem); + }, function (error) { + callback(error, item); + }); + } else { + callback(null, newItem); + } + }; } -function domUtility_elementString(elem) { - return elementArrayToString(treeToArray(elem)); +function addConfigToPayload(item, options, callback) { + if (!options.sendConfig) { + return callback(null, item); + } + var configKey = '_rollbarConfig'; + var custom = get(item, 'data.custom') || {}; + custom[configKey] = options; + item.data.custom = custom; + callback(null, item); } -function descriptionToString(desc) { - if (!desc || !desc.tagName) { - return ''; +function addFunctionOption(options, name) { + if (isFunction(options[name])) { + options[name] = options[name].toString(); } - var out = [desc.tagName]; - if (desc.id) { - out.push('#' + desc.id); +} +function addConfiguredOptions(item, options, callback) { + var configuredOptions = options._configuredOptions; + + // These must be stringified or they'll get dropped during serialization. + addFunctionOption(configuredOptions, 'transform'); + addFunctionOption(configuredOptions, 'checkIgnore'); + addFunctionOption(configuredOptions, 'onSendCallback'); + delete configuredOptions.accessToken; + item.data.notifier.configured_options = configuredOptions; + callback(null, item); +} +function addDiagnosticKeys(item, options, callback) { + var diagnostic = merge(item.notifier.client.notifier.diagnostic, item.diagnostic); + if (get(item, 'err._isAnonymous')) { + diagnostic.is_anonymous = true; } - if (desc.classes) { - out.push('.' + desc.classes.join('.')); + if (item._isUncaught) { + diagnostic.is_uncaught = item._isUncaught; } - for (var i = 0; i < desc.attributes.length; i++) { - out.push('[' + desc.attributes[i].key + '="' + desc.attributes[i].value + '"]'); + if (item.err) { + try { + diagnostic.raw_error = { + message: item.err.message, + name: item.err.name, + constructor_name: item.err.constructor && item.err.constructor.name, + filename: item.err.fileName, + line: item.err.lineNumber, + column: item.err.columnNumber, + stack: item.err.stack + }; + } catch (e) { + diagnostic.raw_error = { + failed: String(e) + }; + } } - return out.join(''); + item.data.notifier.diagnostic = merge(item.data.notifier.diagnostic, diagnostic); + callback(null, item); } +;// ./src/browser/defaults.js +function defaults_toConsumableArray(r) { return defaults_arrayWithoutHoles(r) || defaults_iterableToArray(r) || defaults_unsupportedIterableToArray(r) || defaults_nonIterableSpread(); } +function defaults_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function defaults_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return defaults_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? defaults_arrayLikeToArray(r, a) : void 0; } } +function defaults_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } +function defaults_arrayWithoutHoles(r) { if (Array.isArray(r)) return defaults_arrayLikeToArray(r); } +function defaults_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } /** - * Input: a dom element - * Output: null if tagName is falsey or input is falsey, else - * { - * tagName: String, - * id: String | undefined, - * classes: [String] | undefined, - * attributes: [ - * { - * key: OneOf(type, name, title, alt), - * value: String - * } - * ] - * } + * Default browser options */ -function describeElement(elem) { - if (!elem || !elem.tagName) { - return null; - } - var out = {}, - className, - key, - attr, - i; - out.tagName = elem.tagName.toLowerCase(); - if (elem.id) { - out.id = elem.id; - } - className = elem.className; - if (className && typeof className === 'string') { - out.classes = className.split(/\s+/); + +var scrubFields = [].concat(defaults_toConsumableArray(commonScrubFields), ['cc-number', 'card number', 'cardnumber', 'cardnum', 'ccnum', 'ccnumber', 'cc num', 'creditcardnumber', 'credit card number', 'newcreditcardnumber', 'new credit card', 'creditcardno', 'credit card no', 'card#', 'card #', 'cc-csc', 'cvc', 'cvc2', 'cvv2', 'ccv2', 'security code', 'card verification', 'name on credit card', 'name on card', 'nameoncard', 'cardholder', 'card holder', 'name des karteninhabers', 'ccname', 'card type', 'cardtype', 'cc type', 'cctype', 'payment type', 'expiration date', 'expirationdate', 'expdate', 'cc-exp', 'ccmonth', 'ccyear']); + +// For compatibility with existing code that expects default export with scrubFields property +/* harmony default export */ var browser_defaults = ({ + scrubFields: scrubFields +}); +;// ./src/browser/globalSetup.js +function captureUncaughtExceptions(window, handler, shim) { + if (!window) { + return; } - var attributes = ['type', 'name', 'title', 'alt']; - out.attributes = []; - for (i = 0; i < attributes.length; i++) { - key = attributes[i]; - attr = elem.getAttribute(key); - if (attr) { - out.attributes.push({ - key: key, - value: attr - }); + var oldOnError; + if (typeof handler._rollbarOldOnError === 'function') { + oldOnError = handler._rollbarOldOnError; + } else if (window.onerror) { + oldOnError = window.onerror; + while (oldOnError._rollbarOldOnError) { + oldOnError = oldOnError._rollbarOldOnError; } + handler._rollbarOldOnError = oldOnError; } - return out; + handler.handleAnonymousErrors(); + var fn = function fn() { + var args = Array.prototype.slice.call(arguments, 0); + _rollbarWindowOnError(window, handler, oldOnError, args); + }; + if (shim) { + fn._rollbarOldOnError = oldOnError; + } + window.onerror = fn; } - -/* - * Detects if the given element matches any of the given class names (string or regex), - * or CSS selectors. - * @param {HTMLElement} element - The DOM element to check. - * @param {Array} classes - An array of class names (string or regex) to match against. - * @param {Array} selectors - An array of CSS selectors to match against. - * @return {boolean} - True if the element matches any of the classes or selectors, false otherwise. - */ -function isMatchingElement(element, classes, selectors) { - try { - var _iterator = domUtility_createForOfIteratorHelper(classes), - _step; - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var cls = _step.value; - if (typeof cls === 'string') { - if (element.classList.contains(cls)) { - return true; - } - } else { - var _iterator3 = domUtility_createForOfIteratorHelper(element.classList), - _step3; - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var c = _step3.value; - if (cls.test(c)) { - return true; - } - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); +function _rollbarWindowOnError(window, r, old, args) { + if (window._rollbarWrappedError) { + if (!args[4]) { + args[4] = window._rollbarWrappedError; } - var _iterator2 = domUtility_createForOfIteratorHelper(selectors), - _step2; - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var sel = _step2.value; - if (element.matches(sel)) { - return true; - } - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); + if (!args[5]) { + args[5] = window._rollbarWrappedError._rollbarContext; } - } catch (e) { - // ignore errors from invalid arguments + window._rollbarWrappedError = null; + } + var ret = r.handleUncaughtException.apply(r, args); + if (old) { + old.apply(window, args); } - return false; -} - -;// ./src/browser/telemetry.js -function browser_telemetry_typeof(o) { "@babel/helpers - typeof"; return browser_telemetry_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, browser_telemetry_typeof(o); } -function telemetry_toConsumableArray(r) { return telemetry_arrayWithoutHoles(r) || telemetry_iterableToArray(r) || telemetry_unsupportedIterableToArray(r) || telemetry_nonIterableSpread(); } -function telemetry_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function telemetry_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } -function telemetry_arrayWithoutHoles(r) { if (Array.isArray(r)) return telemetry_arrayLikeToArray(r); } -function browser_telemetry_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function browser_telemetry_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, browser_telemetry_toPropertyKey(o.key), o); } } -function browser_telemetry_createClass(e, r, t) { return r && browser_telemetry_defineProperties(e.prototype, r), t && browser_telemetry_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function browser_telemetry_defineProperty(e, r, t) { return (r = browser_telemetry_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function browser_telemetry_toPropertyKey(t) { var i = browser_telemetry_toPrimitive(t, "string"); return "symbol" == browser_telemetry_typeof(i) ? i : i + ""; } -function browser_telemetry_toPrimitive(t, r) { if ("object" != browser_telemetry_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != browser_telemetry_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -function telemetry_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = telemetry_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } -function telemetry_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return telemetry_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? telemetry_arrayLikeToArray(r, a) : void 0; } } -function telemetry_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } - - - - - -var telemetry_defaults = { - network: true, - networkResponseHeaders: false, - networkResponseBody: false, - networkRequestHeaders: false, - networkRequestBody: false, - networkErrorOnHttp5xx: false, - networkErrorOnHttp4xx: false, - networkErrorOnHttp0: false, - log: true, - dom: true, - navigation: true, - connectivity: true, - contentSecurityPolicy: true, - errorOnContentSecurityPolicy: false -}; -function restore(replacements, type) { - var b; - while (replacements[type].length) { - b = replacements[type].shift(); - b[0][b[1]] = b[2]; + // Let other chained onerror handlers above run before setting this. + // If an error is thrown and caught within a chained onerror handler, + // Error.prepareStackTrace() will see that one before the one we want. + if (ret === 'anonymous') { + r.anonymousErrorsPending += 1; // See Rollbar.prototype.handleAnonymousErrors() } } -function nameFromDescription(description) { - if (!description || !description.attributes) { - return null; +function captureUnhandledRejections(window, handler, shim) { + if (!window) { + return; } - var attrs = description.attributes; - var _iterator = telemetry_createForOfIteratorHelper(attrs), - _step; - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var a = _step.value; - if (a.key === 'name') { - return a.value; - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); + if (typeof window._rollbarURH === 'function' && window._rollbarURH.belongsToShim) { + window.removeEventListener('unhandledrejection', window._rollbarURH); } - return null; -} -function defaultValueScrubber(scrubFields) { - var patterns = []; - var _iterator2 = telemetry_createForOfIteratorHelper(scrubFields), - _step2; - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var field = _step2.value; - patterns.push(new RegExp(field, 'i')); + var rejectionHandler = function rejectionHandler(evt) { + var reason, promise, detail; + try { + reason = evt.reason; + } catch (_e) { + reason = undefined; } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - return function (description) { - var name = nameFromDescription(description); - if (!name) { - return false; + try { + promise = evt.promise; + } catch (_e) { + promise = '[unhandledrejection] error getting `promise` from event'; } - for (var _i = 0, _patterns = patterns; _i < _patterns.length; _i++) { - var p = _patterns[_i]; - if (p.test(name)) { - return true; + try { + detail = evt.detail; + if (!reason && detail) { + reason = detail.reason; + promise = detail.promise; } + } catch (_e) { + // Ignore + } + if (!reason) { + reason = '[unhandledrejection] error getting `reason` from event'; + } + if (handler && handler.handleUnhandledRejection) { + handler.handleUnhandledRejection(reason, promise); } - return false; }; + rejectionHandler.belongsToShim = shim; + window._rollbarURH = rejectionHandler; + window.addEventListener('unhandledrejection', rejectionHandler); } -var Instrumenter = /*#__PURE__*/function () { - function Instrumenter(options, telemeter, rollbar, _window, _document) { - browser_telemetry_classCallCheck(this, Instrumenter); - browser_telemetry_defineProperty(this, "deinstrumentConnectivity", function () { - this.removeListeners('connectivity'); - }); - this.options = options; - var autoInstrument = options.autoInstrument; - if (options.enabled === false || autoInstrument === false) { - this.autoInstrument = {}; - } else { - if (!isType(autoInstrument, 'object')) { - autoInstrument = telemetry_defaults; - } - this.autoInstrument = src_merge(telemetry_defaults, autoInstrument); - } - this.configureScrubbing(); - this.telemeter = telemeter; - this.rollbar = rollbar; - this.diagnostic = rollbar.client.notifier.diagnostic; - this._window = _window || {}; - this._document = _document || {}; - this.replacements = { - network: [], - log: [], - navigation: [], - connectivity: [] - }; - this.eventRemovers = { - dom: [], - connectivity: [], - contentsecuritypolicy: [] - }; - this._location = this._window.location; - this._lastHref = this._location && this._location.href; + +;// ./src/browser/predicates.js + +function checkIgnore(item, settings) { + if (get(settings, 'plugins.jquery.ignoreAjaxErrors')) { + return !get(item, 'body.message.extra.isAjax'); } - return browser_telemetry_createClass(Instrumenter, [{ - key: "configureScrubbing", - value: function configureScrubbing() { - var _options$scrubTelemet, _options$replay, _options$replay2, _options$replay3, _options$replay4, _options$replay5, _options$replay6, _options$replay7, _options$replay8, _options$replay9; - var options = this.options; - this.scrubTelemetryInputs = !!((_options$scrubTelemet = options.scrubTelemetryInputs) !== null && _options$scrubTelemet !== void 0 ? _options$scrubTelemet : (_options$replay = options.replay) === null || _options$replay === void 0 ? void 0 : _options$replay.maskAllInputs); - this.telemetryScrubber = options.telemetryScrubber; - this.defaultValueScrubber = defaultValueScrubber(options.scrubFields); - this.maskInputFn = (_options$replay2 = options.replay) === null || _options$replay2 === void 0 ? void 0 : _options$replay2.maskInputFn; - this.maskInputOptions = ((_options$replay3 = options.replay) === null || _options$replay3 === void 0 ? void 0 : _options$replay3.maskInputOptions) || {}; - this.scrubClasses = [(_options$replay4 = options.replay) === null || _options$replay4 === void 0 ? void 0 : _options$replay4.blockClass, (_options$replay5 = options.replay) === null || _options$replay5 === void 0 ? void 0 : _options$replay5.ignoreClass, (_options$replay6 = options.replay) === null || _options$replay6 === void 0 ? void 0 : _options$replay6.maskTextClass].filter(Boolean); - this.scrubSelectors = [(_options$replay7 = options.replay) === null || _options$replay7 === void 0 ? void 0 : _options$replay7.blockSelector, (_options$replay8 = options.replay) === null || _options$replay8 === void 0 ? void 0 : _options$replay8.ignoreSelector, (_options$replay9 = options.replay) === null || _options$replay9 === void 0 ? void 0 : _options$replay9.maskTextSelector].filter(Boolean); - } - }, { - key: "configure", - value: function configure(options) { - this.options = src_merge(this.options, options); - var autoInstrument = options.autoInstrument; - var oldSettings = src_merge(this.autoInstrument); - if (options.enabled === false || autoInstrument === false) { - this.autoInstrument = {}; - } else { - if (!isType(autoInstrument, 'object')) { - autoInstrument = telemetry_defaults; - } - this.autoInstrument = src_merge(telemetry_defaults, autoInstrument); - } - this.configureScrubbing(); - this.instrument(oldSettings); - } + return true; +} - // eslint-disable-next-line complexity - }, { - key: "instrument", - value: function instrument(oldSettings) { - if (this.autoInstrument.network && !(oldSettings && oldSettings.network)) { - this.instrumentNetwork(); - } else if (!this.autoInstrument.network && oldSettings && oldSettings.network) { - this.deinstrumentNetwork(); - } - if (this.autoInstrument.log && !(oldSettings && oldSettings.log)) { - this.instrumentConsole(); - } else if (!this.autoInstrument.log && oldSettings && oldSettings.log) { - this.deinstrumentConsole(); - } - if (this.autoInstrument.dom && !(oldSettings && oldSettings.dom)) { - this.instrumentDom(); - } else if (!this.autoInstrument.dom && oldSettings && oldSettings.dom) { - this.deinstrumentDom(); - } - if (this.autoInstrument.navigation && !(oldSettings && oldSettings.navigation)) { - this.instrumentNavigation(); - } else if (!this.autoInstrument.navigation && oldSettings && oldSettings.navigation) { - this.deinstrumentNavigation(); - } - if (this.autoInstrument.connectivity && !(oldSettings && oldSettings.connectivity)) { - this.instrumentConnectivity(); - } else if (!this.autoInstrument.connectivity && oldSettings && oldSettings.connectivity) { - this.deinstrumentConnectivity(); +;// ./src/browser/replay/defaults.js +/** + * Default session replay recording options + * See https://github.com/rrweb-io/rrweb/blob/master/guide.md#options for details + */ +/* harmony default export */ var replay_defaults = ({ + enabled: false, + // Whether recording is enabled + autoStart: true, + // Start recording automatically when Rollbar initializes + + // defaults used by triggers that don't specify them + triggerDefaults: { + samplingRatio: 1.0, + preDuration: 300, + postDuration: 5 + }, + triggers: [{ + type: 'occurrence', + level: ['error', 'critical'] + }], + debug: { + logErrors: true, + // Whether to log errors emitted by rrweb. + logEmits: false // Whether to log emitted events + }, + // Recording options + inlineStylesheet: true, + // Whether to inline stylesheets to improve replay accuracy + inlineImages: false, + // Whether to record the image content + collectFonts: true, + // Whether to collect fonts in the website + + // Privacy options + // Fine-grained control over which input types to mask + // By default only password inputs are masked if maskInputs is true + maskInputOptions: { + password: true, + email: false, + tel: false, + text: false, + color: false, + date: false, + 'datetime-local': false, + month: false, + number: false, + range: false, + search: false, + time: false, + url: false, + week: false + }, + // Mask all input values + maskAllInputs: false, + // Class names to block, mask, or ignore the content of elements. + blockClass: 'rb-block', + maskTextClass: 'rb-mask', + ignoreClass: 'rb-ignore', + // Remove unnecessary parts of the DOM + // By default all removable elements are removed + slimDOMOptions: { + script: true, + // Remove script elements + comment: true, + // Remove comments + headFavicon: true, + // Remove favicons in the head + headWhitespace: true, + // Remove whitespace in head + headMetaDescKeywords: true, + // Remove meta description and keywords + headMetaSocial: true, + // Remove social media meta tags + headMetaRobots: true, + // Remove robots meta directives + headMetaHttpEquiv: true, + // Remove http-equiv meta directives + headMetaAuthorship: true, + // Remove authorship meta directives + headMetaVerification: true // Remove verification meta directives + } + + // Custom callbacks for advanced use cases + // These are undefined by default and can be set programmatically + // maskInputFn: undefined, // Custom function to mask input values + // maskTextFn: undefined, // Custom function to mask text content + // errorHandler: undefined, // Custom error handler for recording errors + + // Plugin system + // plugins: [] // List of plugins to use (must be set programmatically) +}); +;// ./src/browser/transforms.js + + + +function handleDomException(item, options, callback) { + if (item.err && errorParser.Stack(item.err).name === 'DOMException') { + var originalError = new Error(); + originalError.name = item.err.name; + originalError.message = item.err.message; + originalError.stack = item.err.stack; + originalError.nested = item.err; + item.err = originalError; + } + callback(null, item); +} +function handleItemWithError(item, options, callback) { + item.data = item.data || {}; + if (item.err) { + try { + item.stackInfo = item.err._savedStackTrace || errorParser.parse(item.err, item.skipFrames); + if (options.addErrorContext) { + transforms_addErrorContext(item); } - if (this.autoInstrument.contentSecurityPolicy && !(oldSettings && oldSettings.contentSecurityPolicy)) { - this.instrumentContentSecurityPolicy(); - } else if (!this.autoInstrument.contentSecurityPolicy && oldSettings && oldSettings.contentSecurityPolicy) { - this.deinstrumentContentSecurityPolicy(); + } catch (e) { + src_logger.error('Error while parsing the error object.', e); + try { + item.message = item.err.message || item.err.description || item.message || String(item.err); + } catch (e2) { + item.message = String(item.err) || String(e2); } + delete item.err; } - }, { - key: "deinstrumentNetwork", - value: function deinstrumentNetwork() { - restore(this.replacements, 'network'); + } + callback(null, item); +} +function transforms_addErrorContext(item) { + var chain = []; + var err = item.err; + chain.push(err); + while (err.nested || err.cause) { + err = err.nested || err.cause; + chain.push(err); + } + addErrorContext(item, chain); +} +function ensureItemHasSomethingToSay(item, options, callback) { + if (!item.message && !item.stackInfo && !item.custom) { + callback(new Error('No message, stack info, or custom data'), null); + } + callback(null, item); +} +function addBaseInfo(item, options, callback) { + var environment = options.payload && options.payload.environment || options.environment; + item.data = merge(item.data, { + environment: environment, + level: item.level, + endpoint: options.endpoint, + platform: 'browser', + framework: 'browser-js', + language: 'javascript', + server: {}, + uuid: item.uuid, + notifier: { + name: 'rollbar-browser-js', + version: options.version + }, + custom: item.custom + }); + callback(null, item); +} +function addRequestInfo(window) { + return function (item, options, callback) { + var requestInfo = {}; + if (window && window.location) { + requestInfo.url = window.location.href; + requestInfo.query_string = window.location.search; } - }, { - key: "instrumentNetwork", - value: function instrumentNetwork() { - var self = this; - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - utility_replace(xhr, prop, function (orig) { - return self.rollbar.wrap(orig); - }); - } - } - if ('XMLHttpRequest' in this._window) { - var xhrp = this._window.XMLHttpRequest.prototype; - utility_replace(xhrp, 'open', function (orig) { - return function (method, url) { - var isUrlObject = _isUrlObject(url); - if (isType(url, 'string') || isUrlObject) { - url = isUrlObject ? url.toString() : url; - if (this.__rollbar_xhr) { - this.__rollbar_xhr.method = method; - this.__rollbar_xhr.url = url; - this.__rollbar_xhr.status_code = null; - this.__rollbar_xhr.start_time_ms = utility_now(); - this.__rollbar_xhr.end_time_ms = null; - } else { - this.__rollbar_xhr = { - method: method, - url: url, - status_code: null, - start_time_ms: utility_now(), - end_time_ms: null - }; - } - } - return orig.apply(this, arguments); - }; - }, this.replacements, 'network'); - utility_replace(xhrp, 'setRequestHeader', function (orig) { - return function (header, value) { - // If xhr.open is async, __rollbar_xhr may not be initialized yet. - if (!this.__rollbar_xhr) { - this.__rollbar_xhr = {}; - } - if (isType(header, 'string') && isType(value, 'string')) { - if (self.autoInstrument.networkRequestHeaders) { - if (!this.__rollbar_xhr.request_headers) { - this.__rollbar_xhr.request_headers = {}; - } - this.__rollbar_xhr.request_headers[header] = value; - } - // We want the content type even if request header telemetry is off. - if (header.toLowerCase() === 'content-type') { - this.__rollbar_xhr.request_content_type = value; - } - } - return orig.apply(this, arguments); - }; - }, this.replacements, 'network'); - utility_replace(xhrp, 'send', function (orig) { - return function (data) { - var xhr = this; - function onreadystatechangeHandler() { - if (xhr.__rollbar_xhr) { - if (xhr.__rollbar_xhr.status_code === null) { - xhr.__rollbar_xhr.status_code = 0; - if (self.autoInstrument.networkRequestBody) { - xhr.__rollbar_xhr.request = data; - } - xhr.__rollbar_event = self.captureNetwork(xhr.__rollbar_xhr, 'xhr', undefined); - } - if (xhr.readyState < 2) { - xhr.__rollbar_xhr.start_time_ms = utility_now(); - } - if (xhr.readyState > 3) { - var end_time_ms = utility_now(); - xhr.__rollbar_xhr.end_time_ms = end_time_ms; - var _headers = null; - xhr.__rollbar_xhr.response_content_type = xhr.getResponseHeader('Content-Type'); - if (self.autoInstrument.networkResponseHeaders) { - var headersConfig = self.autoInstrument.networkResponseHeaders; - _headers = {}; - try { - var header; - if (headersConfig === true) { - var allHeaders = xhr.getAllResponseHeaders(); - if (allHeaders) { - var arr = allHeaders.trim().split(/[\r\n]+/); - var parts, value; - var _iterator3 = telemetry_createForOfIteratorHelper(arr), - _step3; - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var h = _step3.value; - parts = h.split(': '); - header = parts.shift(); - value = parts.join(': '); - _headers[header] = value; - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - } - } else { - var _iterator4 = telemetry_createForOfIteratorHelper(headersConfig), - _step4; - try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { - var _h = _step4.value; - _headers[_h] = xhr.getResponseHeader(_h); - } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); - } - } - } catch (e) { - /* we ignore the errors here that could come from different - * browser issues with the xhr methods */ - } - } - var body = null; - if (self.autoInstrument.networkResponseBody) { - try { - body = xhr.responseText; - } catch (e) { - /* ignore errors from reading responseText */ - } - } - var response = null; - if (body || _headers) { - response = {}; - if (body) { - if (self.isJsonContentType(xhr.__rollbar_xhr.response_content_type)) { - response.body = self.scrubJson(body); - } else { - response.body = body; - } - } - if (_headers) { - response.headers = _headers; - } - } - if (response) { - xhr.__rollbar_xhr.response = response; - } - try { - var code = xhr.status; - code = code === 1223 ? 204 : code; - xhr.__rollbar_xhr.status_code = code; - self.addOtelNetworkResponse(xhr.__rollbar_event, end_time_ms, code); - xhr.__rollbar_event.level = self.telemeter.levelFromStatus(code); - self.errorOnHttpStatus(xhr.__rollbar_xhr); - } catch (e) { - /* ignore possible exception from xhr.status */ - } - } + var remoteString = '$remote_ip'; + if (!options.captureIp) { + remoteString = null; + } else if (options.captureIp !== true) { + remoteString += '_anonymize'; + } + if (remoteString) requestInfo.user_ip = remoteString; + if (Object.keys(requestInfo).length > 0) { + set(item, 'data.request', requestInfo); + } + callback(null, item); + }; +} +function addClientInfo(window) { + return function (item, options, callback) { + if (!window) { + return callback(null, item); + } + var nav = window.navigator || {}; + var scr = window.screen || {}; + set(item, 'data.client', { + runtime_ms: item.timestamp - window._rollbarStartTime, + timestamp: Math.round(item.timestamp / 1000), + javascript: { + browser: nav.userAgent, + language: nav.language, + cookie_enabled: nav.cookieEnabled, + screen: { + width: scr.width, + height: scr.height + } + } + }); + callback(null, item); + }; +} +function addPluginInfo(window) { + return function (item, options, callback) { + if (!window || !window.navigator) { + return callback(null, item); + } + var plugins = []; + var navPlugins = window.navigator.plugins || []; + var cur; + for (var i = 0, l = navPlugins.length; i < l; ++i) { + cur = navPlugins[i]; + plugins.push({ + name: cur.name, + description: cur.description + }); + } + set(item, 'data.client.javascript.plugins', plugins); + callback(null, item); + }; +} +function addBody(item, options, callback) { + if (item.stackInfo) { + if (item.stackInfo.traceChain) { + addBodyTraceChain(item, options, callback); + } else { + addBodyTrace(item, options, callback); + } + } else { + addBodyMessage(item, options, callback); + } +} +function addBodyMessage(item, options, callback) { + var message = item.message; + var custom = item.custom; + if (!message) { + message = 'Item sent with null or missing arguments.'; + } + var result = { + body: message + }; + if (custom) { + result.extra = merge(custom); + } + set(item, 'data.body', { + message: result + }); + callback(null, item); +} +function stackFromItem(item) { + var stackInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + // Transform a TraceKit stackInfo object into a Rollbar trace + var stack = (stackInfo || item.stackInfo).stack; + if (stack && stack.length === 0 && item._unhandledStackInfo && item._unhandledStackInfo.stack) { + stack = item._unhandledStackInfo.stack; + } + return stack; +} +function addBodyTraceChain(item, options, callback) { + var traceChain = item.stackInfo.traceChain; + var traces = []; + var traceChainLength = traceChain.length; + for (var i = 0; i < traceChainLength; i++) { + var trace = buildTrace(item, traceChain[i], options); + traces.push(trace); + } + set(item, 'data.body', { + trace_chain: traces + }); + callback(null, item); +} +function addBodyTrace(item, options, callback) { + var stack = stackFromItem(item); + if (stack) { + var trace = buildTrace(item, item.stackInfo, options); + set(item, 'data.body', { + trace: trace + }); + callback(null, item); + } else { + var stackInfo = item.stackInfo; + var guess = errorParser.guessErrorClass(stackInfo.message); + var className = errorClass(stackInfo, guess[0], options); + var message = guess[1]; + item.message = className + ': ' + message; + addBodyMessage(item, options, callback); + } +} +function buildTrace(item, stackInfo, options) { + var description = item && item.data.description; + var custom = item && item.custom; + var stack = stackFromItem(item, stackInfo); + var guess = errorParser.guessErrorClass(stackInfo.message); + var className = errorClass(stackInfo, guess[0], options); + var message = guess[1]; + var trace = { + exception: { + class: className, + message: message + } + }; + if (description) { + trace.exception.description = description; + } + if (stack) { + if (stack.length === 0) { + trace.exception.stack = stackInfo.rawStack; + trace.exception.raw = String(stackInfo.rawException); + } + var stackFrame; + var frame; + var code; + var pre; + var post; + var contextLength; + var i, mid; + trace.frames = []; + for (i = 0; i < stack.length; ++i) { + stackFrame = stack[i]; + frame = { + filename: stackFrame.url ? sanitizeUrl(stackFrame.url) : '(unknown)', + lineno: stackFrame.line || null, + method: !stackFrame.func || stackFrame.func === '?' ? '[anonymous]' : stackFrame.func, + colno: stackFrame.column + }; + if (options.sendFrameUrl) { + frame.url = stackFrame.url; + } + if (frame.method && frame.method.endsWith && frame.method.endsWith('_rollbar_wrapped')) { + continue; + } + code = pre = post = null; + contextLength = stackFrame.context ? stackFrame.context.length : 0; + if (contextLength) { + mid = Math.floor(contextLength / 2); + pre = stackFrame.context.slice(0, mid); + code = stackFrame.context[mid]; + post = stackFrame.context.slice(mid); + } + if (code) { + frame.code = code; + } + if (pre || post) { + frame.context = {}; + if (pre && pre.length) { + frame.context.pre = pre; + } + if (post && post.length) { + frame.context.post = post; + } + } + if (stackFrame.args) { + frame.args = stackFrame.args; + } + trace.frames.push(frame); + } + + // NOTE(cory): reverse the frames since rollbar.com expects the most recent call last + trace.frames.reverse(); + if (custom) { + trace.extra = merge(custom); + } + } + return trace; +} +function errorClass(stackInfo, guess, options) { + if (stackInfo.name) { + return stackInfo.name; + } else if (options.guessErrorClass) { + return guess; + } else { + return '(unknown)'; + } +} +function addScrubber(scrubFn) { + return function (item, options, callback) { + if (scrubFn) { + var scrubFields = options.scrubFields || []; + var scrubPaths = options.scrubPaths || []; + item.data = scrubFn(item.data, scrubFields, scrubPaths); + } + callback(null, item); + }; +} + +;// ./src/browser/transport/fetch.js +function fetch_typeof(o) { "@babel/helpers - typeof"; return fetch_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, fetch_typeof(o); } +function fetch_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function fetch_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? fetch_ownKeys(Object(t), !0).forEach(function (r) { fetch_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : fetch_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function fetch_defineProperty(e, r, t) { return (r = fetch_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function fetch_toPropertyKey(t) { var i = fetch_toPrimitive(t, "string"); return "symbol" == fetch_typeof(i) ? i : i + ""; } +function fetch_toPrimitive(t, r) { if ("object" != fetch_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != fetch_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + + +function makeFetchRequest(_ref) { + var accessToken = _ref.accessToken, + url = _ref.url, + method = _ref.method, + payload = _ref.payload, + headers = _ref.headers, + callback = _ref.callback, + timeout = _ref.timeout; + var controller; + var timeoutId; + if (isFiniteNumber(timeout)) { + controller = new AbortController(); + timeoutId = setTimeout(function () { + controller.abort(); + }, timeout); + } + headers = fetch_objectSpread({ + 'Content-Type': 'application/json', + 'X-Rollbar-Access-Token': accessToken, + signal: controller && controller.signal + }, headers); + fetch(url, { + method: method, + headers: headers, + body: payload + }).then(function (response) { + if (timeoutId) clearTimeout(timeoutId); + var respHeaders = response.headers; + var isItemRoute = url.endsWith('/api/1/item/'); + var headers = isItemRoute ? { + 'Rollbar-Replay-Enabled': respHeaders.get('Rollbar-Replay-Enabled'), + 'Rollbar-Replay-RateLimit-Remaining': respHeaders.get('Rollbar-Replay-RateLimit-Remaining'), + 'Rollbar-Replay-RateLimit-Reset': respHeaders.get('Rollbar-Replay-RateLimit-Reset') + } : {}; + var json = response.json(); + callback(null, json, headers); + }).catch(function (error) { + src_logger.error(error.message); + callback(error); + }); +} +/* harmony default export */ var transport_fetch = (makeFetchRequest); +;// ./src/browser/transport/xhr.js +function xhr_slicedToArray(r, e) { return xhr_arrayWithHoles(r) || xhr_iterableToArrayLimit(r, e) || xhr_unsupportedIterableToArray(r, e) || xhr_nonIterableRest(); } +function xhr_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function xhr_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return xhr_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? xhr_arrayLikeToArray(r, a) : void 0; } } +function xhr_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function xhr_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function xhr_arrayWithHoles(r) { if (Array.isArray(r)) return r; } +/*global XDomainRequest*/ + + + +function makeXhrRequest(_ref) { + var accessToken = _ref.accessToken, + url = _ref.url, + method = _ref.method, + payload = _ref.payload, + headers = _ref.headers, + callback = _ref.callback, + requestFactory = _ref.requestFactory, + timeout = _ref.timeout; + var request; + if (requestFactory) { + request = requestFactory(); + } else { + request = _createXMLHTTPObject(); + } + if (!request) { + // Give up, no way to send requests + return callback(new Error('No way to send a request')); + } + try { + try { + var _onreadystatechange = function onreadystatechange() { + try { + if (_onreadystatechange && request.readyState === 4) { + _onreadystatechange = undefined; + var parseResponse = jsonParse(request.responseText); + if (_isSuccess(request)) { + var isItemRoute = url.endsWith('/api/1/item/'); + var _headers = isItemRoute ? { + 'Rollbar-Replay-Enabled': request.getResponseHeader('Rollbar-Replay-Enabled'), + 'Rollbar-Replay-RateLimit-Remaining': request.getResponseHeader('Rollbar-Replay-RateLimit-Remaining'), + 'Rollbar-Replay-RateLimit-Reset': request.getResponseHeader('Rollbar-Replay-RateLimit-Reset') + } : {}; + callback(parseResponse.error, parseResponse.value, _headers); + return; + } else if (_isNormalFailure(request)) { + if (request.status === 403) { + // likely caused by using a server access token + var message = parseResponse.value && parseResponse.value.message; + src_logger.error(message); } - } - wrapProp('onload', xhr); - wrapProp('onerror', xhr); - wrapProp('onprogress', xhr); - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - utility_replace(xhr, 'onreadystatechange', function (orig) { - return self.rollbar.wrap(orig, undefined, onreadystatechangeHandler); - }); + // return valid http status codes + callback(new Error(String(request.status))); } else { - xhr.onreadystatechange = onreadystatechangeHandler; - } - if (xhr.__rollbar_xhr && self.trackHttpErrors()) { - xhr.__rollbar_xhr.stack = new Error().stack; + // IE will return a status 12000+ on some sort of connection failure, + // so we return a blank error + // http://msdn.microsoft.com/en-us/library/aa383770%28VS.85%29.aspx + var msg = 'XHR response had no status code (likely connection failure)'; + callback(_newRetriableError(msg)); } - return orig.apply(this, arguments); - }; - }, this.replacements, 'network'); + } + } catch (ex) { + //jquery source mentions firefox may error out while accessing the + //request members if there is a network error + //https://github.com/jquery/jquery/blob/a938d7b1282fc0e5c52502c225ae8f0cef219f0a/src/ajax/xhr.js#L111 + var exc; + if (ex && ex.stack) { + exc = ex; + } else { + exc = new Error(ex); + } + callback(exc); + } + }; + request.open(method, url, true); + if (request.setRequestHeader) { + request.setRequestHeader('Content-Type', 'application/json'); + request.setRequestHeader('X-Rollbar-Access-Token', accessToken); + for (var _i = 0, _Object$entries = Object.entries(headers !== null && headers !== void 0 ? headers : {}); _i < _Object$entries.length; _i++) { + var _Object$entries$_i = xhr_slicedToArray(_Object$entries[_i], 2), + h = _Object$entries$_i[0], + v = _Object$entries$_i[1]; + request.setRequestHeader(h, v); + } } - if ('fetch' in this._window) { - utility_replace(this._window, 'fetch', function (orig) { - return function (fn, t) { - var args = Array.prototype.slice.call(arguments); - var input = args[0]; - var method = 'GET'; - var url; - var isUrlObject = _isUrlObject(input); - if (isType(input, 'string') || isUrlObject) { - url = isUrlObject ? input.toString() : input; - } else if (input) { - url = input.url; - if (input.method) { - method = input.method; - } - } - if (args[1] && args[1].method) { - method = args[1].method; - } - var metadata = { - method: method, - url: url, - status_code: null, - start_time_ms: utility_now(), - end_time_ms: null - }; - if (args[1] && args[1].headers) { - // Argument may be a Headers object, or plain object. Ensure here that - // we are working with a Headers object with case-insensitive keys. - var reqHeaders = utility_headers(args[1].headers); - metadata.request_content_type = reqHeaders.get('Content-Type'); - if (self.autoInstrument.networkRequestHeaders) { - metadata.request_headers = self.fetchHeaders(reqHeaders, self.autoInstrument.networkRequestHeaders); - } - } - if (self.autoInstrument.networkRequestBody) { - if (args[1] && args[1].body) { - metadata.request = args[1].body; - } else if (args[0] && !isType(args[0], 'string') && args[0].body) { - metadata.request = args[0].body; - } - } - var telemetryEvent = self.captureNetwork(metadata, 'fetch', undefined); - if (self.trackHttpErrors()) { - metadata.stack = new Error().stack; - } + if (isFiniteNumber(timeout)) { + request.timeout = timeout; + } + request.onreadystatechange = _onreadystatechange; + request.send(payload); + } catch (_e1) { + // Sending using the normal xmlhttprequest object didn't work, try XDomainRequest + if (typeof XDomainRequest !== 'undefined') { + // Assume we are in a really old browser which has a bunch of limitations: + // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx + + // Extreme paranoia: if we have XDomainRequest then we have a window, but just in case + if (!window || !window.location) { + return callback(new Error('No window available during request, unknown environment')); + } - // Start our handler before returning the promise. This allows resp.clone() - // to execute before other handlers touch the response. - return orig.apply(this, args).then(function (resp) { - var end_time_ms = utility_now(); - metadata.end_time_ms = end_time_ms; - metadata.status_code = resp.status; - self.addOtelNetworkResponse(telemetryEvent, end_time_ms, resp.status); - metadata.response_content_type = resp.headers.get('Content-Type'); - var headers = null; - if (self.autoInstrument.networkResponseHeaders) { - headers = self.fetchHeaders(resp.headers, self.autoInstrument.networkResponseHeaders); - } - var body = null; - if (self.autoInstrument.networkResponseBody) { - if (typeof resp.text === 'function') { - // Response.text() is not implemented on some platforms - // The response must be cloned to prevent reading (and locking) the original stream. - // This must be done before other handlers touch the response. - body = resp.clone().text(); //returns a Promise - } - } - if (headers || body) { - metadata.response = {}; - if (body) { - // Test to ensure body is a Promise, which it should always be. - if (typeof body.then === 'function') { - body.then(function (text) { - if (text && self.isJsonContentType(metadata.response_content_type)) { - metadata.response.body = self.scrubJson(text); - } else { - metadata.response.body = text; - } - }); - } else { - metadata.response.body = body; - } - } - if (headers) { - metadata.response.headers = headers; - } - } - self.errorOnHttpStatus(metadata); - return resp; - }); - }; - }, this.replacements, 'network'); + // If the current page is http, try and send over http + if (window.location.href.substring(0, 5) === 'http:' && url.substring(0, 5) === 'https') { + url = 'http' + url.substring(5); + } + var xdomainrequest = new XDomainRequest(); + xdomainrequest.onprogress = function () {}; + xdomainrequest.ontimeout = function () { + var msg = 'Request timed out'; + var code = 'ETIMEDOUT'; + callback(_newRetriableError(msg, code)); + }; + xdomainrequest.onerror = function () { + callback(new Error('Error during request')); + }; + xdomainrequest.onload = function () { + var parseResponse = jsonParse(xdomainrequest.responseText); + callback(parseResponse.error, parseResponse.value); + }; + xdomainrequest.open(method, url, true); + xdomainrequest.send(payload); + } else { + callback(new Error('Cannot find a method to transport a request')); + } + } + } catch (e2) { + callback(e2); + } +} +function _createXMLHTTPObject() { + /* global ActiveXObject:false */ + + var factories = [function () { + return new XMLHttpRequest(); + }, function () { + return new ActiveXObject('Msxml2.XMLHTTP'); + }, function () { + return new ActiveXObject('Msxml3.XMLHTTP'); + }, function () { + return new ActiveXObject('Microsoft.XMLHTTP'); + }]; + var xmlhttp; + var i; + var numFactories = factories.length; + for (i = 0; i < numFactories; i++) { + try { + xmlhttp = factories[i](); + break; + } catch (_e) { + // pass + } + } + return xmlhttp; +} +function _isSuccess(r) { + return r && r.status && r.status === 200; +} +function _isNormalFailure(r) { + return r && isType(r.status, 'number') && r.status >= 400 && r.status < 600; +} +function _newRetriableError(message, code) { + var err = new Error(message); + err.code = code || 'ENOTFOUND'; + return err; +} +/* harmony default export */ var xhr = (makeXhrRequest); +;// ./src/browser/transport.js + + + + +/* + * accessToken may be embedded in payload but that should not + * be assumed + * + * options: { + * hostname + * protocol + * path + * port + * method + * transport ('xhr' | 'fetch') + * } + * + * params is an object containing key/value pairs. These + * will be appended to the path as 'key=value&key=value' + * + * payload is an unserialized object + */ +function Transport(truncation) { + this.truncation = truncation; +} +Transport.prototype.get = function (accessToken, options, params, callback, requestFactory) { + if (!callback || !isFunction(callback)) { + callback = function callback() {}; + } + addParamsAndAccessTokenToPath(accessToken, options, params); + var method = 'GET'; + var url = formatUrl(options); + this._makeZoneRequest({ + accessToken: accessToken, + url: url, + method: method, + callback: callback, + requestFactory: requestFactory, + timeout: options.timeout, + transport: options.transport + }); +}; +Transport.prototype.post = function (_ref) { + var accessToken = _ref.accessToken, + options = _ref.options, + payload = _ref.payload, + headers = _ref.headers, + callback = _ref.callback, + requestFactory = _ref.requestFactory; + if (!callback || !isFunction(callback)) { + callback = function callback() {}; + } + if (!payload) { + return callback(new Error('Cannot send empty request')); + } + var stringifyResult; + // Check payload.body to ensure only items are truncated. + if (this.truncation && payload.body) { + stringifyResult = this.truncation.truncate(payload); + } else { + stringifyResult = stringify(payload); + } + if (stringifyResult.error) { + return callback(stringifyResult.error); + } + var method = 'POST'; + var url = formatUrl(options); + this._makeZoneRequest({ + accessToken: accessToken, + url: url, + method: method, + payload: stringifyResult.value, + headers: headers, + callback: callback, + requestFactory: requestFactory, + timeout: options.timeout, + transport: options.transport + }); +}; +Transport.prototype.postJsonPayload = function (accessToken, options, payload, callback, requestFactory) { + if (!callback || !isFunction(callback)) { + callback = function callback() {}; + } + var method = 'POST'; + var url = formatUrl(options); + this._makeZoneRequest({ + accessToken: accessToken, + url: url, + method: method, + payload: payload, + callback: callback, + requestFactory: requestFactory, + timeout: options.timeout, + transport: options.transport + }); +}; + +// Wraps `_makeRequest` if zone.js is being used, ensuring that Rollbar +// API calls are not intercepted by any child forked zones. +// This is equivalent to `NgZone.runOutsideAngular` in Angular. +Transport.prototype._makeZoneRequest = function () { + var _this = this; + var gWindow = typeof window !== 'undefined' && window || typeof self !== 'undefined' && self; + // Whenever zone.js is loaded and `Zone` is exposed globally, access + // the root zone to ensure that requests are always made within it. + // This approach is framework-agnostic, regardless of which + // framework zone.js is used with. + var rootZone = gWindow && gWindow.Zone && gWindow.Zone.root; + var args = Array.prototype.slice.call(arguments); + if (rootZone) { + rootZone.run(function () { + _this._makeRequest.apply(undefined, args); + }); + } else { + this._makeRequest.apply(undefined, args); + } +}; +Transport.prototype._makeRequest = function (params) { + var payload = params.payload, + callback = params.callback, + transport = params.transport; + if (typeof RollbarProxy !== 'undefined') { + return _proxyRequest(payload, callback); + } + if (transport === 'fetch') { + transport_fetch(params); + } else { + xhr(params); + } +}; + +/* global RollbarProxy */ +function _proxyRequest(json, callback) { + var rollbarProxy = new RollbarProxy(); + rollbarProxy.sendJsonPayload(json, function (_msg) { + /* do nothing */ + }, function (err) { + callback(new Error(err)); + }); +} +/* harmony default export */ var browser_transport = (Transport); +;// ./src/browser/url.js +// See https://nodejs.org/docs/latest/api/url.html +function url_parse(url) { + var result = { + protocol: null, + auth: null, + host: null, + path: null, + hash: null, + href: url, + hostname: null, + port: null, + pathname: null, + search: null, + query: null + }; + var i, last; + i = url.indexOf('//'); + if (i !== -1) { + result.protocol = url.substring(0, i); + last = i + 2; + } else { + last = 0; + } + i = url.indexOf('@', last); + if (i !== -1) { + result.auth = url.substring(last, i); + last = i + 1; + } + i = url.indexOf('/', last); + if (i === -1) { + i = url.indexOf('?', last); + if (i === -1) { + i = url.indexOf('#', last); + if (i === -1) { + result.host = url.substring(last); + } else { + result.host = url.substring(last, i); + result.hash = url.substring(i); } - } - }, { - key: "captureNetwork", - value: function captureNetwork(metadata, subtype, rollbarUUID) { - if (metadata.request && this.isJsonContentType(metadata.request_content_type)) { - metadata.request = this.scrubJson(metadata.request); + result.hostname = result.host.split(':')[0]; + result.port = result.host.split(':')[1]; + if (result.port) { + result.port = parseInt(result.port, 10); } - return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID); - } - }, { - key: "isJsonContentType", - value: function isJsonContentType(contentType) { - return contentType && isType(contentType, 'string') && contentType.toLowerCase().includes('json') ? true : false; - } - }, { - key: "addOtelNetworkResponse", - value: function addOtelNetworkResponse(event, endTimeMs, statusCode) { - if (event.otelAttributes) { - event.otelAttributes['response.timeUnixNano'] = (endTimeMs * 1e6).toString(); - event.otelAttributes.statusCode = statusCode; + return result; + } else { + result.host = url.substring(last, i); + result.hostname = result.host.split(':')[0]; + result.port = result.host.split(':')[1]; + if (result.port) { + result.port = parseInt(result.port, 10); } + last = i; } - }, { - key: "scrubJson", - value: function scrubJson(json) { - return JSON.stringify(src_scrub(JSON.parse(json), this.options.scrubFields)); + } else { + result.host = url.substring(last, i); + result.hostname = result.host.split(':')[0]; + result.port = result.host.split(':')[1]; + if (result.port) { + result.port = parseInt(result.port, 10); } - }, { - key: "fetchHeaders", - value: function fetchHeaders(inHeaders, headersConfig) { - var outHeaders = {}; - try { - if (headersConfig === true) { - if (typeof inHeaders.entries === 'function') { - // Headers.entries() is not implemented in IE - var allHeaders = inHeaders.entries(); - var currentHeader = allHeaders.next(); - while (!currentHeader.done) { - outHeaders[currentHeader.value[0]] = currentHeader.value[1]; - currentHeader = allHeaders.next(); - } - } - } else { - var _iterator5 = telemetry_createForOfIteratorHelper(headersConfig), - _step5; - try { - for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { - var h = _step5.value; - outHeaders[h] = inHeaders.get(h); - } - } catch (err) { - _iterator5.e(err); - } finally { - _iterator5.f(); - } - } - } catch (e) { - /* ignore probable IE errors */ - } - return outHeaders; + last = i; + } + i = url.indexOf('#', last); + if (i === -1) { + result.path = url.substring(last); + } else { + result.path = url.substring(last, i); + result.hash = url.substring(i); + } + if (result.path) { + var pathParts = result.path.split('?'); + result.pathname = pathParts[0]; + result.query = pathParts[1]; + result.search = result.query ? '?' + result.query : null; + } + return result; +} + +;// ./src/browser/core.js +var _Rollbar; +function core_typeof(o) { "@babel/helpers - typeof"; return core_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, core_typeof(o); } +function core_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function core_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? core_ownKeys(Object(t), !0).forEach(function (r) { core_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : core_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function core_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function core_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, core_toPropertyKey(o.key), o); } } +function core_createClass(e, r, t) { return r && core_defineProperties(e.prototype, r), t && core_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function core_defineProperty(e, r, t) { return (r = core_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function core_toPropertyKey(t) { var i = core_toPrimitive(t, "string"); return "symbol" == core_typeof(i) ? i : i + ""; } +function core_toPrimitive(t, r) { if ("object" != core_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != core_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + + + + + + + + + + + + + + + + + +// Used to support global `Rollbar` instance. +var _instance = null; +var core_Rollbar = /*#__PURE__*/function () { + function Rollbar(options, client) { + core_classCallCheck(this, Rollbar); + src_logger.init({ + logLevel: options.logLevel || 'error' + }); + this.options = handleOptions(core_defaultOptions, options, null, src_logger); + this.options._configuredOptions = options; + this.components = this.components || {}; + var Telemeter = this.components.telemeter; + var Instrumenter = this.components.instrumenter; + this.wrapGlobals = this.components.wrapGlobals; + this.scrub = this.components.scrub; + var truncation = this.components.truncation; + var Tracing = this.components.tracing; + var Replay = this.components.replay; + var transport = new browser_transport(truncation); + var api = new src_api(this.options, transport, url_namespaceObject, truncation); + if (Tracing) { + this.tracing = new Tracing(_gWindow(), api, this.options); + this.tracing.initSession(); } - }, { - key: "trackHttpErrors", - value: function trackHttpErrors() { - return this.autoInstrument.networkErrorOnHttp5xx || this.autoInstrument.networkErrorOnHttp4xx || this.autoInstrument.networkErrorOnHttp0; + if (Telemeter) { + this.telemeter = new Telemeter(this.options, this.tracing); } - }, { - key: "errorOnHttpStatus", - value: function errorOnHttpStatus(metadata) { - var status = metadata.status_code; - if (status >= 500 && this.autoInstrument.networkErrorOnHttp5xx || status >= 400 && this.autoInstrument.networkErrorOnHttp4xx || status === 0 && this.autoInstrument.networkErrorOnHttp0) { - var error = new Error('HTTP request failed with Status ' + status); - error.stack = metadata.stack; - this.rollbar.error(error, { - skipFrames: 1 - }); + if (Replay && isBrowser()) { + var replayOptions = this.options.replay; + this.replay = new Replay({ + tracing: this.tracing, + telemeter: this.telemeter, + options: replayOptions + }); + if (replayOptions.enabled && replayOptions.autoStart) { + this.replay.recorder.start(); } } - }, { - key: "deinstrumentConsole", - value: function deinstrumentConsole() { - var b; - while (this.replacements['log'].length) { - b = this.replacements['log'].shift(); - this._window.console[b[0]] = b[1]; - } + this.client = client || new rollbar(this.options, api, src_logger, this.telemeter, this.tracing, this.replay, 'browser'); + var gWindow = _gWindow(); + var gDocument = typeof document !== 'undefined' && document; + this.isChrome = gWindow.chrome && gWindow.chrome.runtime; // check .runtime to avoid Edge browsers + this.anonymousErrorsPending = 0; + addTransformsToNotifier(this.client.notifier, this, gWindow); + addPredicatesToQueue(this.client.queue); + this.setupUnhandledCapture(); + if (Instrumenter) { + this.instrumenter = new Instrumenter(this.options, this.client.telemeter, this, gWindow, gDocument); + this.instrumenter.instrument(); } - }, { - key: "instrumentConsole", - value: function instrumentConsole() { - var _this$_window; - if (!((_this$_window = this._window) !== null && _this$_window !== void 0 && (_this$_window = _this$_window.console) !== null && _this$_window !== void 0 && _this$_window.log)) { - return; - } - var self = this; - var c = this._window.console; - function wrapConsole(method) { - 'use strict'; + this.setSessionAttributesFromOptions(options); - // See https://github.com/rollbar/rollbar.js/pull/778 - var orig = c[method]; - var origConsole = c; - var level = method === 'warn' ? 'warning' : method; - c[method] = function () { - var args = Array.prototype.slice.call(arguments); - var message = formatArgsAsString(args); - self.telemeter.captureLog(message, level, null, utility_now()); - if (orig) { - Function.prototype.apply.call(orig, origConsole, args); - } - }; - self.replacements['log'].push([method, orig]); - } - var methods = ['debug', 'info', 'warn', 'error', 'log']; - try { - for (var _i2 = 0, _methods = methods; _i2 < _methods.length; _i2++) { - var m = _methods[_i2]; - wrapConsole(m); - } - } catch (e) { - this.diagnostic.instrumentConsole = { - error: e.message + // Used with rollbar-react for rollbar-react-native compatibility. + this.rollbar = this; + } + return core_createClass(Rollbar, [{ + key: "global", + value: function global(options) { + this.client.global(options); + return this; + } + }, { + key: "configure", + value: function configure(options, payloadData) { + var _this$tracing, _this$replay, _this$instrumenter; + if (options.logLevel) { + src_logger.init({ + logLevel: options.logLevel + }); + } + this.setSessionAttributesFromOptions(options); + var oldOptions = this.options; + var payload = {}; + if (payloadData) { + payload = { + payload: payloadData }; } + this.options = handleOptions(oldOptions, options, payload, src_logger); + this.options._configuredOptions = handleOptions(oldOptions._configuredOptions, options, payload); + (_this$tracing = this.tracing) === null || _this$tracing === void 0 || _this$tracing.configure(this.options); + (_this$replay = this.replay) === null || _this$replay === void 0 || _this$replay.configure(this.options.replay); + this.client.configure(this.options, payloadData); + (_this$instrumenter = this.instrumenter) === null || _this$instrumenter === void 0 || _this$instrumenter.configure(this.options); + this.setupUnhandledCapture(); + return this; } }, { - key: "deinstrumentDom", - value: function deinstrumentDom() { - this.removeListeners('dom'); + key: "lastError", + value: function lastError() { + return this.client.lastError; } }, { - key: "instrumentDom", - value: function instrumentDom() { - var _this = this; - var self = this; - this.addListener('dom', this._window, ['click', 'dblclick', 'contextmenu'], function (e) { - return _this.handleEvent('click', e); - }); - this.addListener('dom', this._window, ['dragstart', 'dragend', 'dragenter', 'dragleave', 'drop'], function (e) { - return _this.handleEvent('dragdrop', e); - }); - this.addListener('dom', this._window, ['blur', 'focus'], function (e) { - return _this.handleEvent('focus', e); - }); - this.addListener('dom', this._window, ['submit', 'invalid'], function (e) { - return _this.handleEvent('form', e); - }); - this.addListener('dom', this._window, ['input', 'change'], function (e) { - return _this.handleEvent('input', e); - }); - this.addListener('dom', this._window, ['resize'], function (e) { - return _this.handleEvent('resize', e); - }); - this.addListener('dom', this._document, ['DOMContentLoaded'], function (e) { - return _this.handleEvent('contentLoaded', e); - }); + key: "log", + value: function log() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.log(item); + return { + uuid: uuid + }; } }, { - key: "handleEvent", - value: function handleEvent(name, evt) { - try { - return { - click: this.handleClick, - dragdrop: this.handleDrag, - focus: this.handleFocus, - form: this.handleForm, - input: this.handleInput, - resize: this.handleResize, - contentLoaded: this.handleContentLoaded - }[name].call(this, evt); - } catch (exc) { - console.log("".concat(name, " handler error"), evt, exc, exc.stack); - } + key: "debug", + value: function debug() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.debug(item); + return { + uuid: uuid + }; } }, { - key: "handleContentLoaded", - value: function handleContentLoaded(evt) { - var replayId = this.rollbar.triggerReplay({ - type: 'navigation', - path: new URL(this._location.href).pathname - }); + key: "info", + value: function info() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.info(item); + return { + uuid: uuid + }; } }, { - key: "handleClick", - value: function handleClick(evt) { - var _evt$target; - var tagName = (_evt$target = evt.target) === null || _evt$target === void 0 ? void 0 : _evt$target.tagName.toLowerCase(); - if (['input', 'select', 'textarea'].includes(tagName)) return; - this.telemeter.captureClick({ - type: evt.type, - isSynthetic: !evt.isTrusted, - element: domUtility_elementString(evt.target), - timestamp: utility_now() - }); + key: "warn", + value: function warn() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.warn(item); + return { + uuid: uuid + }; } }, { - key: "handleFocus", - value: function handleFocus(evt) { - var _evt$target2; - var type = evt.type; - var element = (_evt$target2 = evt.target) !== null && _evt$target2 !== void 0 && _evt$target2.window ? 'window' : domUtility_elementString(evt.target); - this.telemeter.captureFocus({ - type: type, - isSynthetic: !evt.isTrusted, - element: element, - timestamp: utility_now() - }); + key: "warning", + value: function warning() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.warning(item); + return { + uuid: uuid + }; } }, { - key: "handleForm", - value: function handleForm(evt) { - var _evt$target3; - // TODO: implement form event handling - var type = evt.type; - var elementString = (_evt$target3 = evt.target) !== null && _evt$target3 !== void 0 && _evt$target3.window ? 'window' : domUtility_elementString(evt.target); + key: "error", + value: function error() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.error(item); + return { + uuid: uuid + }; } }, { - key: "handleResize", - value: function handleResize(evt) { - var textZoomRatio = window.screen.width / window.innerWidth; - this.telemeter.captureResize({ - type: evt.type, - isSynthetic: !evt.isTrusted, - width: window.innerWidth, - height: window.innerHeight, - textZoomRatio: textZoomRatio, - timestamp: utility_now() - }); + key: "critical", + value: function critical() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.critical(item); + return { + uuid: uuid + }; } }, { - key: "handleDrag", - value: function handleDrag(evt) { - var type = evt.type; - var kinds, mediaTypes, dropEffect, effectAllowed; - if (type === 'drop') { - kinds = []; - mediaTypes = []; - var objs = [].concat(telemetry_toConsumableArray(evt.dataTransfer.files), telemetry_toConsumableArray(evt.dataTransfer.items)); - var _iterator6 = telemetry_createForOfIteratorHelper(objs), - _step6; - try { - for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { - var o = _step6.value; - if (o.kind && o.type) { - kinds.push(o.kind); - mediaTypes.push(o.type); - } + key: "buildJsonPayload", + value: function buildJsonPayload(item) { + return this.client.buildJsonPayload(item); + } + }, { + key: "sendJsonPayload", + value: function sendJsonPayload(jsonPayload) { + return this.client.sendJsonPayload(jsonPayload); + } + }, { + key: "triggerDirectReplay", + value: function triggerDirectReplay(context) { + return this.triggerReplay(core_objectSpread({ + type: 'direct' + }, context)); + } + }, { + key: "triggerReplay", + value: function triggerReplay(context) { + if (!this.replay) return null; + return this.replay.triggerReplay(context); + } + }, { + key: "setupUnhandledCapture", + value: function setupUnhandledCapture() { + var gWindow = _gWindow(); + if (!this.unhandledExceptionsInitialized) { + if (this.options.captureUncaught || this.options.handleUncaughtExceptions) { + captureUncaughtExceptions(gWindow, this); + if (this.wrapGlobals && this.options.wrapGlobalEventHandlers) { + this.wrapGlobals(gWindow, this); } - } catch (err) { - _iterator6.e(err); - } finally { - _iterator6.f(); + this.unhandledExceptionsInitialized = true; } } - if (['drop', 'dragstart'].includes(type)) { - var _evt$dataTransfer, _evt$dataTransfer2; - dropEffect = (_evt$dataTransfer = evt.dataTransfer) === null || _evt$dataTransfer === void 0 ? void 0 : _evt$dataTransfer.dropEffect; - effectAllowed = (_evt$dataTransfer2 = evt.dataTransfer) === null || _evt$dataTransfer2 === void 0 ? void 0 : _evt$dataTransfer2.effectAllowed; + if (!this.unhandledRejectionsInitialized) { + if (this.options.captureUnhandledRejections || this.options.handleUnhandledRejections) { + captureUnhandledRejections(gWindow, this); + this.unhandledRejectionsInitialized = true; + } } - this.telemeter.captureDragDrop({ - type: type, - isSynthetic: !evt.isTrusted, - element: domUtility_elementString(evt.target), - dropEffect: dropEffect, - effectAllowed: effectAllowed, - kinds: JSON.stringify(kinds), - mediaTypes: JSON.stringify(mediaTypes), - timestamp: utility_now() - }); + } + }, { + key: "handleUncaughtException", + value: function handleUncaughtException(message, url, lineno, colno, error, context) { + if (!this.options.captureUncaught && !this.options.handleUncaughtExceptions) { + return; + } + + // Chrome will always send 5+ arguments and error will be valid or null, not undefined. + // If error is undefined, we have a different caller. + // Chrome also sends errors from web workers with null error, but does not invoke + // prepareStackTrace() for these. Test for empty url to skip them. + if (this.options.inspectAnonymousErrors && this.isChrome && error === null && url === '') { + return 'anonymous'; + } + var item; + var stackInfo = makeUnhandledStackInfo(message, url, lineno, colno, error, 'onerror', 'uncaught exception', errorParser); + if (isError(error)) { + item = this._createItem([message, error, context]); + item._unhandledStackInfo = stackInfo; + } else if (isError(url)) { + item = this._createItem([message, url, context]); + item._unhandledStackInfo = stackInfo; + } else { + item = this._createItem([message, context]); + item.stackInfo = stackInfo; + } + item.level = this.options.uncaughtErrorLevel; + item._isUncaught = true; + this.client.log(item); } - /* - * Applies Rollbar telemetry scrubbing options to the dom input value. - * When replay options are present, applies those as well. + /** + * Chrome only. Other browsers will ignore. + * + * Use Error.prepareStackTrace to extract information about errors that + * do not have a valid error object in onerror(). + * + * In tested version of Chrome, onerror is called first but has no way + * to communicate with prepareStackTrace. Use a counter to let this + * handler know which errors to send to Rollbar. + * + * In config options, set inspectAnonymousErrors to enable. */ }, { - key: "scrubInputValue", - value: function scrubInputValue(value, element, tagName, inputType) { - var mask = '******'; - if (inputType === 'password') { - return mask; + key: "handleAnonymousErrors", + value: function handleAnonymousErrors() { + var _this = this; + if (!this.options.inspectAnonymousErrors || !this.isChrome) { + return; } - if (this.scrubTelemetryInputs) { - return mask; - } else { - var description = describeElement(element); - if (this.telemetryScrubber) { - if (this.telemetryScrubber(description)) { - return mask; + var prepareStackTrace = function prepareStackTrace(error, _stack) { + if (_this.options.inspectAnonymousErrors) { + if (_this.anonymousErrorsPending) { + // This is the only known way to detect that onerror saw an anonymous error. + // It depends on onerror reliably being called before Error.prepareStackTrace, + // which so far holds true on tested versions of Chrome. If versions of Chrome + // are tested that behave differently, this logic will need to be updated + // accordingly. + _this.anonymousErrorsPending -= 1; + if (!error) { + // Not likely to get here, but calling handleUncaughtException from here + // without an error object would throw off the anonymousErrorsPending counter, + // so return now. + return; + } + + // Allow this to be tracked later. + error._isAnonymous = true; + + // url, lineno, colno shouldn't be needed for these errors. + // If that changes, update this accordingly, using the unused + // _stack param as needed (rather than parse error.toString()). + _this.handleUncaughtException(error.message, null, null, null, error); } - } else if (this.defaultValueScrubber(description)) { - return mask; } - } - // Apply replay options regardless of other scrubbing - if (isMatchingElement(element, this.scrubClasses, this.scrubSelectors)) { - return mask; - } + // Workaround to ensure stack is preserved for normal errors. + return error.stack; + }; - // This check is last since maskInputFn returns a modified value rather - // than a boolean, which would cause an early return even if the value - // was not scrubbed. - if (this.maskInputOptions[tagName.toLowerCase()] || this.maskInputOptions[inputType]) { - if (this.maskInputFn) { - return this.maskInputFn(value, element); - } else { - return mask; - } + // https://v8.dev/docs/stack-trace-api + try { + Error.prepareStackTrace = prepareStackTrace; + } catch (e) { + this.options.inspectAnonymousErrors = false; + this.error('anonymous error handler failed', e); } - return value; } - - /* - * Uses the `input` event for everything except radio and checkbox inputs. - * For those, it uses the `change` event. - */ }, { - key: "handleInput", - value: function handleInput(evt) { - var _evt$target4, _evt$target5, _evt$target6, _evt$target7; - var type = evt.type; - var tagName = (_evt$target4 = evt.target) === null || _evt$target4 === void 0 ? void 0 : _evt$target4.tagName.toLowerCase(); - var value = (_evt$target5 = evt.target) === null || _evt$target5 === void 0 ? void 0 : _evt$target5.value; - var inputType = ((_evt$target6 = evt.target) === null || _evt$target6 === void 0 || (_evt$target6 = _evt$target6.attributes) === null || _evt$target6 === void 0 || (_evt$target6 = _evt$target6.type) === null || _evt$target6 === void 0 ? void 0 : _evt$target6.value) || ((_evt$target7 = evt.target) === null || _evt$target7 === void 0 ? void 0 : _evt$target7.type); - if (value !== undefined) { - value = this.scrubInputValue(value, evt.target, tagName, inputType); + key: "handleUnhandledRejection", + value: function handleUnhandledRejection(reason, promise) { + if (!this.options.captureUnhandledRejections && !this.options.handleUnhandledRejections) { + return; } - switch (type) { - case 'input': - if (['radio', 'checkbox'].includes(inputType)) return; - if (['select', 'textarea'].includes(tagName)) { - inputType = tagName; - } - break; - case 'change': - if (!['radio', 'checkbox'].includes(inputType)) return; - if (inputType === 'checkbox') { - var _evt$target8; - value = (_evt$target8 = evt.target) === null || _evt$target8 === void 0 ? void 0 : _evt$target8.checked; + var message = 'unhandled rejection was null or undefined!'; + if (reason) { + if (reason.message) { + message = reason.message; + } else { + var reasonResult = stringify(reason); + if (reasonResult.value) { + message = reasonResult.value; } - break; + } } - this.telemeter.captureInput({ - type: inputType, - isSynthetic: !evt.isTrusted, - element: domUtility_elementString(evt.target), - value: value, - timestamp: utility_now() - }); + var context = reason && reason._rollbarContext || promise && promise._rollbarContext; + var item; + if (isError(reason)) { + item = this._createItem([message, reason, context]); + } else { + item = this._createItem([message, reason, context]); + item.stackInfo = makeUnhandledStackInfo(message, '', 0, 0, null, 'unhandledrejection', '', errorParser); + } + item.level = this.options.uncaughtErrorLevel; + item._isUncaught = true; + item._originalArgs = item._originalArgs || []; + item._originalArgs.push(promise); + this.client.log(item); } }, { - key: "deinstrumentNavigation", - value: function deinstrumentNavigation() { - var chrome = this._window.chrome; - var chromePackagedApp = chrome && chrome.app && chrome.app.runtime; - // See https://github.com/angular/angular.js/pull/13945/files - var hasPushState = !chromePackagedApp && this._window.history && this._window.history.pushState; - if (!hasPushState) { - return; + key: "wrap", + value: function wrap(f, context, _before) { + try { + var ctxFn; + if (isFunction(context)) { + ctxFn = context; + } else { + ctxFn = function ctxFn() { + return context || {}; + }; + } + if (!isFunction(f)) { + return f; + } + if (f._isWrap) { + return f; + } + if (!f._rollbar_wrapped) { + f._rollbar_wrapped = function () { + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } + try { + return f.apply(this, arguments); + } catch (exc) { + var e = exc; + if (e && window._rollbarWrappedError !== e) { + if (isType(e, 'string')) { + e = new String(e); + } + e._rollbarContext = ctxFn() || {}; + e._rollbarContext._wrappedSource = f.toString(); + window._rollbarWrappedError = e; + } + throw e; + } + }; + f._rollbar_wrapped._isWrap = true; + for (var prop in f) { + if (hasOwn(f, prop) && prop !== '_rollbar_wrapped') { + f._rollbar_wrapped[prop] = f[prop]; + } + } + } + return f._rollbar_wrapped; + } catch (_e) { + // Return the original function if the wrap fails. + return f; } - restore(this.replacements, 'navigation'); } }, { - key: "instrumentNavigation", - value: function instrumentNavigation() { - var chrome = this._window.chrome; - var chromePackagedApp = chrome && chrome.app && chrome.app.runtime; - // See https://github.com/angular/angular.js/pull/13945/files - var hasPushState = !chromePackagedApp && this._window.history && this._window.history.pushState; - if (!hasPushState) { - return; - } - var self = this; - utility_replace(this._window, 'onpopstate', function (orig) { - return function () { - var current = self._location.href; - self.handleUrlChange(self._lastHref, current); - if (orig) { - orig.apply(this, arguments); - } - }; - }, this.replacements, 'navigation'); - utility_replace(this._window.history, 'pushState', function (orig) { - return function () { - var url = arguments.length > 2 ? arguments[2] : undefined; - if (url) { - self.handleUrlChange(self._lastHref, url + ''); - } - return orig.apply(this, arguments); - }; - }, this.replacements, 'navigation'); + key: "captureEvent", + value: function captureEvent() { + var event = createTelemetryEvent(arguments); + return this.client.captureEvent(event.type, event.metadata, event.level); } }, { - key: "handleUrlChange", - value: function handleUrlChange(from, to) { - var parsedHref = parse(this._location.href); - var parsedTo = parse(to); - var parsedFrom = parse(from); - this._lastHref = to; - if (parsedHref.protocol === parsedTo.protocol && parsedHref.host === parsedTo.host) { - to = parsedTo.path + (parsedTo.hash || ''); - } - if (parsedHref.protocol === parsedFrom.protocol && parsedHref.host === parsedFrom.host) { - from = parsedFrom.path + (parsedFrom.hash || ''); - } - this.telemeter.captureNavigation(from, to, null, utility_now()); - var replayId = this.rollbar.triggerReplay({ - type: 'navigation', - path: to - }); + key: "setSessionUser", + value: function setSessionUser(user) { + var _this$tracing2; + if (!((_this$tracing2 = this.tracing) !== null && _this$tracing2 !== void 0 && _this$tracing2.session)) return; + this.tracing.session.setUser(user); } }, { - key: "instrumentConnectivity", - value: function instrumentConnectivity() { - var self = this; - this.addListener('connectivity', this._window, ['online', 'offline'], function (evt) { - return self.handleConnectivity(evt); - }); + key: "setSessionAttributes", + value: function setSessionAttributes(attrs) { + var _this$tracing3; + if (!((_this$tracing3 = this.tracing) !== null && _this$tracing3 !== void 0 && _this$tracing3.session)) return; + attrs = core_objectSpread({}, attrs); + this.tracing.session.setAttributes(attrs); } }, { - key: "handleConnectivity", - value: function handleConnectivity(evt) { - var type = evt.type; - this.telemeter.captureConnectivityChange({ - type: type, - isSynthetic: !evt.isTrusted, - timestamp: utility_now() + key: "setSessionAttributesFromOptions", + value: function setSessionAttributesFromOptions(options) { + var _options$payload, _options$client, _options$payload2, _options$payload3, _options$payload4; + var person = options.person || ((_options$payload = options.payload) === null || _options$payload === void 0 ? void 0 : _options$payload.person); + if (person) { + this.setSessionUser(person); + } + var code_version = ((_options$client = options.client) === null || _options$client === void 0 || (_options$client = _options$client.javascript) === null || _options$client === void 0 ? void 0 : _options$client.code_version) || options.codeVersion || options.code_version || ((_options$payload2 = options.payload) === null || _options$payload2 === void 0 || (_options$payload2 = _options$payload2.client) === null || _options$payload2 === void 0 || (_options$payload2 = _options$payload2.javascript) === null || _options$payload2 === void 0 ? void 0 : _options$payload2.code_version) || ((_options$payload3 = options.payload) === null || _options$payload3 === void 0 ? void 0 : _options$payload3.code_version) || ((_options$payload4 = options.payload) === null || _options$payload4 === void 0 ? void 0 : _options$payload4.codeVersion); + this.setSessionAttributes({ + 'rollbar.codeVersion': code_version, + 'rollbar.notifier.name': 'rollbar-browser-js', + 'rollbar.notifier.version': options.version }); } + + // The following two methods are used internally and are not meant for public use }, { - key: "handleCspEvent", - value: function handleCspEvent(cspEvent) { - var message = 'Security Policy Violation: ' + 'blockedURI: ' + cspEvent.blockedURI + ', ' + 'violatedDirective: ' + cspEvent.violatedDirective + ', ' + 'effectiveDirective: ' + cspEvent.effectiveDirective + ', '; - if (cspEvent.sourceFile) { - message += 'location: ' + cspEvent.sourceFile + ', ' + 'line: ' + cspEvent.lineNumber + ', ' + 'col: ' + cspEvent.columnNumber + ', '; + key: "captureDomContentLoaded", + value: function captureDomContentLoaded(e, ts) { + if (!ts) { + ts = new Date(); } - message += 'originalPolicy: ' + cspEvent.originalPolicy; - this.telemeter.captureLog(message, 'error', null, utility_now()); - this.handleCspError(message); + return this.client.captureDomContentLoaded(ts); } }, { - key: "handleCspError", - value: function handleCspError(message) { - if (this.autoInstrument.errorOnContentSecurityPolicy) { - this.rollbar.error(message); + key: "captureLoad", + value: function captureLoad(e, ts) { + if (!ts) { + ts = new Date(); } + return this.client.captureLoad(ts); } }, { - key: "deinstrumentContentSecurityPolicy", - value: function deinstrumentContentSecurityPolicy() { - this.removeListeners('contentsecuritypolicy'); + key: "loadFull", + value: function loadFull() { + src_logger.info('Unexpected Rollbar.loadFull() called on a Notifier instance. This can happen when Rollbar is loaded multiple times.'); } }, { - key: "instrumentContentSecurityPolicy", - value: function instrumentContentSecurityPolicy() { - if (!('addEventListener' in this._document)) { - return; + key: "_createItem", + value: function _createItem(args) { + return createItem(args, src_logger, this); + } + + // Static version of instance methods support the legacy pattern of a + // global `Rollbar` instance, where after calling `Rollbar.init()`, + // `Rollbar` can be used as if it were an instance. + // If support for this pattern is dropped, these static methods can be removed. + }], [{ + key: "init", + value: function init(options, client) { + if (_instance) { + return _instance.global(options).configure(options); } - var cspHandler = this.handleCspEvent.bind(this); - this.addListener('contentsecuritypolicy', this._document, ['securitypolicyviolation'], cspHandler); + _instance = new Rollbar(options, client); + return _instance; } }, { - key: "addListener", - value: function addListener(section, obj, types, handler) { - var _this2 = this; - if (obj.addEventListener) { - var _iterator7 = telemetry_createForOfIteratorHelper(types), - _step7; - try { - var _loop = function _loop() { - var t = _step7.value; - var options = { - capture: true, - passive: true - }; - obj.addEventListener(t, handler, options, true); - _this2.eventRemovers[section].push(function () { - obj.removeEventListener(t, handler, options); - }); - }; - for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { - _loop(); - } - } catch (err) { - _iterator7.e(err); - } finally { - _iterator7.f(); - } - } + key: "setComponents", + value: function setComponents(components) { + Rollbar.prototype.components = components; } }, { - key: "removeListeners", - value: function removeListeners(section) { - var r; - while (this.eventRemovers[section].length) { - r = this.eventRemovers[section].shift(); - r(); + key: "callInstance", + value: function callInstance(method, args) { + if (!_instance) { + var message = 'Rollbar is not initialized'; + src_logger.error(message); + var maybeCallback = _getFirstFunction(args); + if (maybeCallback) { + maybeCallback(new Error(message)); + } + return; } + return _instance[method].apply(_instance, args); } }]); }(); -function _isUrlObject(input) { - return typeof URL !== 'undefined' && input instanceof URL; -} -/* harmony default export */ var browser_telemetry = (Instrumenter); -;// ./src/browser/wrapGlobals.js -function wrapGlobals(window, handler, shim) { - if (!window) { - return; +/* Internal */ +_Rollbar = core_Rollbar; +core_defineProperty(core_Rollbar, "global", function () { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; } - // Adapted from https://github.com/bugsnag/bugsnag-js - var globals = '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'.split(','); - var i, global; - for (i = 0; i < globals.length; ++i) { - global = globals[i]; - if (window[global] && window[global].prototype) { - _extendListenerPrototype(handler, window[global].prototype, shim); - } + return _Rollbar.callInstance('global', args); +}); +core_defineProperty(core_Rollbar, "configure", function () { + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; } + return _Rollbar.callInstance('configure', args); +}); +core_defineProperty(core_Rollbar, "lastError", function () { + for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; + } + return _Rollbar.callInstance('lastError', args); +}); +core_defineProperty(core_Rollbar, "log", function () { + for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { + args[_key4] = arguments[_key4]; + } + return _Rollbar.callInstance('log', args); +}); +core_defineProperty(core_Rollbar, "debug", function () { + for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { + args[_key5] = arguments[_key5]; + } + return _Rollbar.callInstance('debug', args); +}); +core_defineProperty(core_Rollbar, "info", function () { + for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { + args[_key6] = arguments[_key6]; + } + return _Rollbar.callInstance('info', args); +}); +core_defineProperty(core_Rollbar, "warn", function () { + for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { + args[_key7] = arguments[_key7]; + } + return _Rollbar.callInstance('warn', args); +}); +core_defineProperty(core_Rollbar, "warning", function () { + for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { + args[_key8] = arguments[_key8]; + } + return _Rollbar.callInstance('warning', args); +}); +core_defineProperty(core_Rollbar, "error", function () { + for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) { + args[_key9] = arguments[_key9]; + } + return _Rollbar.callInstance('error', args); +}); +core_defineProperty(core_Rollbar, "critical", function () { + for (var _len0 = arguments.length, args = new Array(_len0), _key0 = 0; _key0 < _len0; _key0++) { + args[_key0] = arguments[_key0]; + } + return _Rollbar.callInstance('critical', args); +}); +core_defineProperty(core_Rollbar, "buildJsonPayload", function () { + for (var _len1 = arguments.length, args = new Array(_len1), _key1 = 0; _key1 < _len1; _key1++) { + args[_key1] = arguments[_key1]; + } + return _Rollbar.callInstance('buildJsonPayload', args); +}); +core_defineProperty(core_Rollbar, "sendJsonPayload", function () { + for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) { + args[_key10] = arguments[_key10]; + } + return _Rollbar.callInstance('sendJsonPayload', args); +}); +core_defineProperty(core_Rollbar, "wrap", function () { + for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) { + args[_key11] = arguments[_key11]; + } + return _Rollbar.callInstance('wrap', args); +}); +core_defineProperty(core_Rollbar, "captureEvent", function () { + for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) { + args[_key12] = arguments[_key12]; + } + return _Rollbar.callInstance('captureEvent', args); +}); +function addTransformsToNotifier(notifier, rollbar, gWindow) { + notifier.addTransform(handleDomException).addTransform(handleItemWithError).addTransform(ensureItemHasSomethingToSay).addTransform(addBaseInfo).addTransform(addRequestInfo(gWindow)).addTransform(addClientInfo(gWindow)).addTransform(addPluginInfo(gWindow)).addTransform(addBody).addTransform(addMessageWithError).addTransform(addTelemetryData).addTransform(addConfigToPayload).addTransform(addScrubber(rollbar.scrub)).addTransform(addPayloadOptions).addTransform(userTransform(src_logger)).addTransform(addConfiguredOptions).addTransform(addDiagnosticKeys).addTransform(itemToPayload); } -function _extendListenerPrototype(handler, prototype, shim) { - if (prototype.hasOwnProperty && prototype.hasOwnProperty('addEventListener')) { - var oldAddEventListener = prototype.addEventListener; - while (oldAddEventListener._rollbarOldAdd && oldAddEventListener.belongsToShim) { - oldAddEventListener = oldAddEventListener._rollbarOldAdd; - } - var addFn = function addFn(event, callback, bubble) { - oldAddEventListener.call(this, event, handler.wrap(callback), bubble); - }; - addFn._rollbarOldAdd = oldAddEventListener; - addFn.belongsToShim = shim; - prototype.addEventListener = addFn; - var oldRemoveEventListener = prototype.removeEventListener; - while (oldRemoveEventListener._rollbarOldRemove && oldRemoveEventListener.belongsToShim) { - oldRemoveEventListener = oldRemoveEventListener._rollbarOldRemove; +function addPredicatesToQueue(queue) { + queue.addPredicate(checkLevel).addPredicate(checkIgnore).addPredicate(userCheckIgnore(src_logger)).addPredicate(urlIsNotBlockListed(src_logger)).addPredicate(urlIsSafeListed(src_logger)).addPredicate(messageIsIgnored(src_logger)); +} +function _getFirstFunction(args) { + for (var i = 0, len = args.length; i < len; ++i) { + if (isFunction(args[i])) { + return args[i]; } - var removeFn = function removeFn(event, callback, bubble) { - oldRemoveEventListener.call(this, event, callback && callback._rollbar_wrapped || callback, bubble); - }; - removeFn._rollbarOldRemove = oldRemoveEventListener; - removeFn.belongsToShim = shim; - prototype.removeEventListener = removeFn; } + return undefined; } -/* harmony default export */ var browser_wrapGlobals = (wrapGlobals); -;// ./src/truncation.js +function _gWindow() { + return typeof window !== 'undefined' && window || typeof self !== 'undefined' && self; +} +var core_defaultOptions = { + environment: 'unknown', + version: defaults.version, + scrubFields: browser_defaults.scrubFields, + logLevel: defaults.logLevel, + reportLevel: defaults.reportLevel, + uncaughtErrorLevel: defaults.uncaughtErrorLevel, + endpoint: defaults.endpoint, + verbose: false, + enabled: true, + transmit: true, + sendConfig: false, + includeItemsInTelemetry: true, + captureIp: true, + inspectAnonymousErrors: true, + ignoreDuplicateErrors: true, + wrapGlobalEventHandlers: false, + replay: replay_defaults, + tracing: tracing_defaults +}; +/* harmony default export */ var core = (core_Rollbar); +;// ./src/utility/headers.js -function raw(payload, jsonBackup) { - return [payload, stringify(payload, jsonBackup)]; -} -function selectFrames(frames, range) { - var len = frames.length; - if (len > range * 2) { - return frames.slice(0, range).concat(frames.slice(len - range)); +/* + * headers - Detect when fetch Headers are undefined and use a partial polyfill. + * + * A full polyfill is not used in order to keep package size as small as possible. + * Since this is only used internally and is not added to the window object, + * the full interface doesn't need to be supported. + * + * This implementation is modified from whatwg-fetch: + * https://github.com/github/fetch + */ +function headers(headers) { + if (typeof Headers === 'undefined') { + return new FetchHeaders(headers); } - return frames; + return new Headers(headers); } -function truncateFrames(payload, jsonBackup, range) { - range = typeof range === 'undefined' ? 30 : range; - var body = payload.data.body; - var frames; - if (body.trace_chain) { - var chain = body.trace_chain; - for (var i = 0; i < chain.length; i++) { - frames = chain[i].frames; - frames = selectFrames(frames, range); - chain[i].frames = frames; - } - } else if (body.trace) { - frames = body.trace.frames; - frames = selectFrames(frames, range); - body.trace.frames = frames; +function normalizeName(name) { + if (typeof name !== 'string') { + name = String(name); } - return [payload, stringify(payload, jsonBackup)]; + return name.toLowerCase(); } -function maybeTruncateValue(len, val) { - if (!val) { - return val; - } - if (val.length > len) { - return val.slice(0, len - 3).concat('...'); +function normalizeValue(value) { + if (typeof value !== 'string') { + value = String(value); } - return val; + return value; } -function truncateStrings(len, payload, jsonBackup) { - function truncator(k, v, seen) { - switch (typeName(v)) { - case 'string': - return maybeTruncateValue(len, v); - case 'object': - case 'array': - return utility_traverse(v, truncator, seen); - default: - return v; +function iteratorFor(items) { + var iterator = { + next: function next() { + var value = items.shift(); + return { + done: value === undefined, + value: value + }; } - } - payload = utility_traverse(payload, truncator); - return [payload, stringify(payload, jsonBackup)]; + }; + return iterator; } -function truncateTraceData(traceData) { - if (traceData.exception) { - delete traceData.exception.description; - traceData.exception.message = maybeTruncateValue(255, traceData.exception.message); +function FetchHeaders(headers) { + this.map = {}; + if (headers instanceof FetchHeaders) { + headers.forEach(function (value, name) { + this.append(name, value); + }, this); + } else if (Array.isArray(headers)) { + headers.forEach(function (header) { + this.append(header[0], header[1]); + }, this); + } else if (headers) { + Object.getOwnPropertyNames(headers).forEach(function (name) { + this.append(name, headers[name]); + }, this); } - traceData.frames = selectFrames(traceData.frames, 1); - return traceData; } -function minBody(payload, jsonBackup) { - var body = payload.data.body; - if (body.trace_chain) { - var chain = body.trace_chain; - for (var i = 0; i < chain.length; i++) { - chain[i] = truncateTraceData(chain[i]); +FetchHeaders.prototype.append = function (name, value) { + name = normalizeName(name); + value = normalizeValue(value); + var oldValue = this.map[name]; + this.map[name] = oldValue ? oldValue + ', ' + value : value; +}; +FetchHeaders.prototype.get = function (name) { + name = normalizeName(name); + return this.has(name) ? this.map[name] : null; +}; +FetchHeaders.prototype.has = function (name) { + return hasOwn(this.map, normalizeName(name)); +}; +FetchHeaders.prototype.forEach = function (callback, thisArg) { + for (var name in this.map) { + if (hasOwn(this.map, name)) { + callback.call(thisArg, this.map[name], name, this); } - } else if (body.trace) { - body.trace = truncateTraceData(body.trace); } - return [payload, stringify(payload, jsonBackup)]; +}; +FetchHeaders.prototype.entries = function () { + var items = []; + this.forEach(function (value, name) { + items.push([name, value]); + }); + return iteratorFor(items); +}; +/* harmony default export */ var utility_headers = (headers); +;// ./src/utility/replace.js +function replace(obj, name, replacement, replacements, type) { + var orig = obj[name]; + obj[name] = replacement(orig); + if (replacements) { + replacements[type].push([obj, name, orig]); + } } -function needsTruncation(payload, maxSize) { - return maxByteSize(payload) > maxSize; +/* harmony default export */ var utility_replace = (replace); +;// ./src/browser/domUtility.js +function domUtility_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = domUtility_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function domUtility_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return domUtility_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? domUtility_arrayLikeToArray(r, a) : void 0; } } +function domUtility_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function getElementType(e) { + return (e.getAttribute('type') || '').toLowerCase(); } -function truncate(payload, jsonBackup, maxSize) { - maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize; - var strategies = [raw, truncateFrames, truncateStrings.bind(null, 1024), truncateStrings.bind(null, 512), truncateStrings.bind(null, 256), minBody]; - var strategy, results, result; - while (strategy = strategies.shift()) { - results = strategy(payload, jsonBackup); - payload = results[0]; - result = results[1]; - if (result.error || !needsTruncation(result.value, maxSize)) { - return result; +function isDescribedElement(element, type, subtypes) { + if (element.tagName.toLowerCase() !== type.toLowerCase()) { + return false; + } + if (!subtypes) { + return true; + } + var elementType = getElementType(element); + var _iterator = domUtility_createForOfIteratorHelper(subtypes), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var subtype = _step.value; + if (subtype === elementType) { + return true; + } } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); } - return result; + return false; } -/* harmony default export */ var truncation = ({ - truncate: truncate, - /* for testing */ - raw: raw, - truncateFrames: truncateFrames, - truncateStrings: truncateStrings, - maybeTruncateValue: maybeTruncateValue -}); -;// ./src/tracing/context.js -function context_typeof(o) { "@babel/helpers - typeof"; return context_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, context_typeof(o); } -function context_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function context_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, context_toPropertyKey(o.key), o); } } -function context_createClass(e, r, t) { return r && context_defineProperties(e.prototype, r), t && context_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function context_toPropertyKey(t) { var i = context_toPrimitive(t, "string"); return "symbol" == context_typeof(i) ? i : i + ""; } -function context_toPrimitive(t, r) { if ("object" != context_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != context_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -var Context = /*#__PURE__*/function () { - function Context(parentContext) { - context_classCallCheck(this, Context); - this._currentContext = parentContext ? new Map(parentContext) : new Map(); +function getElementFromEvent(evt, doc) { + if (evt.target) { + return evt.target; } - return context_createClass(Context, [{ - key: "getValue", - value: function getValue(key) { - return this._currentContext.get(key); - } - }, { - key: "setValue", - value: function setValue(key, value) { - var context = new Context(this._currentContext); - context._currentContext.set(key, value); - return context; - } - }, { - key: "deleteValue", - value: function deleteValue(key) { - var context = new Context(self._currentContext); - context._currentContext.delete(key); - return context; - } - }]); -}(); -var ROOT_CONTEXT = new Context(); -;// ./src/tracing/contextManager.js -function contextManager_typeof(o) { "@babel/helpers - typeof"; return contextManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, contextManager_typeof(o); } -function contextManager_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function contextManager_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, contextManager_toPropertyKey(o.key), o); } } -function contextManager_createClass(e, r, t) { return r && contextManager_defineProperties(e.prototype, r), t && contextManager_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function contextManager_toPropertyKey(t) { var i = contextManager_toPrimitive(t, "string"); return "symbol" == contextManager_typeof(i) ? i : i + ""; } -function contextManager_toPrimitive(t, r) { if ("object" != contextManager_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != contextManager_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - -var ContextManager = /*#__PURE__*/function () { - function ContextManager() { - contextManager_classCallCheck(this, ContextManager); - this.currentContext = ROOT_CONTEXT; + if (doc && doc.elementFromPoint) { + return doc.elementFromPoint(evt.clientX, evt.clientY); } - return contextManager_createClass(ContextManager, [{ - key: "active", - value: function active() { - return this.currentContext; - } - }, { - key: "enterContext", - value: function enterContext(context) { - var previousContext = this.currentContext; - this.currentContext = context || ROOT_CONTEXT; - return previousContext; - } - }, { - key: "exitContext", - value: function exitContext(context) { - this.currentContext = context; - return this.currentContext; + return undefined; +} +function treeToArray(elem) { + var MAX_HEIGHT = 5; + var out = []; + var nextDescription; + for (var height = 0; elem && height < MAX_HEIGHT; height++) { + nextDescription = describeElement(elem); + if (!nextDescription || nextDescription.tagName === 'html') { + break; } - }, { - key: "with", - value: function _with(context, fn, thisArg) { - var previousContext = this.enterContext(context); - try { - for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { - args[_key - 3] = arguments[_key]; - } - return fn.call.apply(fn, [thisArg].concat(args)); - } finally { - this.exitContext(previousContext); - } + out.unshift(nextDescription); + elem = elem.parentNode; + } + return out; +} +function elementArrayToString(a) { + var MAX_LENGTH = 80; + var separator = ' > ', + separatorLength = separator.length; + var out = [], + len = 0, + nextStr, + totalLength; + for (var i = a.length - 1; i >= 0; i--) { + nextStr = descriptionToString(a[i]); + totalLength = len + out.length * separatorLength + nextStr.length; + if (i < a.length - 1 && totalLength >= MAX_LENGTH + 3) { + out.unshift('...'); + break; } - }]); -}(); -function createContextKey(key) { - // Use Symbol for OpenTelemetry compatibility. - return Symbol.for(key); + out.unshift(nextStr); + len += nextStr.length; + } + return out.join(separator); } -;// ./src/tracing/id.js -/** - * Generate a random hexadecimal ID of specified byte length - * - * @param {number} bytes - Number of bytes for the ID (default: 16) - * @returns {string} - Hexadecimal string representation - */ -function gen() { - var bytes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16; - var randomBytes = new Uint8Array(bytes); - crypto.getRandomValues(randomBytes); - var randHex = Array.from(randomBytes, function (byte) { - return byte.toString(16).padStart(2, '0'); - }).join(''); - return randHex; +function elementString(elem) { + return elementArrayToString(treeToArray(elem)); +} +function descriptionToString(desc) { + if (!desc || !desc.tagName) { + return ''; + } + var out = [desc.tagName]; + if (desc.id) { + out.push('#' + desc.id); + } + if (desc.classes) { + out.push('.' + desc.classes.join('.')); + } + var _iterator2 = domUtility_createForOfIteratorHelper(desc.attributes), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var attribute = _step2.value; + out.push('[' + attribute.key + '="' + attribute.value + '"]'); + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + return out.join(''); } /** - * Tracing id generation utils - * - * @example - * import id from './id.js'; - * - * const spanId = id.gen(8); // => "a1b2c3d4e5f6..." + * Input: a dom element + * Output: null if tagName is falsey or input is falsey, else + * { + * tagName: String, + * id: String | undefined, + * classes: [String] | undefined, + * attributes: [ + * { + * key: OneOf(type, name, title, alt), + * value: String + * } + * ] + * } */ -/* harmony default export */ var id = ({ - gen: gen -}); -;// ./src/tracing/session.js -function session_typeof(o) { "@babel/helpers - typeof"; return session_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, session_typeof(o); } -function session_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function session_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? session_ownKeys(Object(t), !0).forEach(function (r) { session_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : session_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function session_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function session_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, session_toPropertyKey(o.key), o); } } -function session_createClass(e, r, t) { return r && session_defineProperties(e.prototype, r), t && session_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function session_defineProperty(e, r, t) { return (r = session_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function session_toPropertyKey(t) { var i = session_toPrimitive(t, "string"); return "symbol" == session_typeof(i) ? i : i + ""; } -function session_toPrimitive(t, r) { if ("object" != session_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != session_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - -var SESSION_KEY = 'RollbarSession'; -var Session = /*#__PURE__*/function () { - function Session(tracing, options) { - session_classCallCheck(this, Session); - session_defineProperty(this, "_attributes", void 0); - this.options = options; - this.tracing = tracing; - this.window = tracing.window; - this.session = null; - this._attributes = {}; +function describeElement(elem) { + if (!elem || !elem.tagName) { + return null; } - return session_createClass(Session, [{ - key: "init", - value: function init() { - var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - if (this.session) { - return this; - } - this.getSession() || this.createSession(); - this.initSessionAttributes(attrs); - return this; - } - }, { - key: "getSession", - value: function getSession() { - try { - var serializedSession = this.window.sessionStorage.getItem(SESSION_KEY); - if (!serializedSession) { - return null; - } - this.session = JSON.parse(serializedSession); - } catch (_unused) { - return null; - } - return this; - } - }, { - key: "createSession", - value: function createSession() { - this.session = { - id: id.gen(), - createdAt: Date.now() - }; - return this.setSession(this.session); - } - }, { - key: "setSession", - value: function setSession(session) { - var sessionString = JSON.stringify(session); - try { - this.window.sessionStorage.setItem(SESSION_KEY, sessionString); - } catch (_unused2) { - return null; - } - return this; - } - }, { - key: "attributes", - get: function get() { - return this._attributes; - } - }, { - key: "setAttributes", - value: function setAttributes(attributes) { - this._attributes = session_objectSpread(session_objectSpread({}, this._attributes), attributes); - return this; - } - }, { - key: "setUser", - value: function setUser(user) { - this.setAttributes({ - 'user.id': user === null || user === void 0 ? void 0 : user.id, - 'user.email': user === null || user === void 0 ? void 0 : user.email, - 'user.name': (user === null || user === void 0 ? void 0 : user.name) || (user === null || user === void 0 ? void 0 : user.username) + var out = {}, + className; + out.tagName = elem.tagName.toLowerCase(); + if (elem.id) { + out.id = elem.id; + } + className = elem.className; + if (className && typeof className === 'string') { + out.classes = className.split(/\s+/); + } + var attributes = ['type', 'name', 'title', 'alt']; + out.attributes = []; + for (var _i = 0, _attributes = attributes; _i < _attributes.length; _i++) { + var attribute = _attributes[_i]; + var attr = elem.getAttribute(attribute); + if (attr) { + out.attributes.push({ + key: attribute, + value: attr }); - return this; - } - }, { - key: "initSessionAttributes", - value: function initSessionAttributes(attrs) { - var _navigator$userAgentD, _navigator$userAgentD2, _navigator$userAgentD3; - this.setAttributes(session_objectSpread({ - 'session.id': this.session.id, - 'browser.brands': (_navigator$userAgentD = navigator.userAgentData) === null || _navigator$userAgentD === void 0 ? void 0 : _navigator$userAgentD.brands, - 'browser.language': navigator.language, - 'browser.mobile': (_navigator$userAgentD2 = navigator.userAgentData) === null || _navigator$userAgentD2 === void 0 ? void 0 : _navigator$userAgentD2.mobile, - 'browser.platform': (_navigator$userAgentD3 = navigator.userAgentData) === null || _navigator$userAgentD3 === void 0 ? void 0 : _navigator$userAgentD3.platform, - 'client.address': '$remote_ip', - // updated at the API - 'rollbar.notifier.framework': 'browser-js', - 'user_agent.original': navigator.userAgent - }, attrs)); - return this; } - }]); -}(); -;// ./src/tracing/hrtime.js -/** - * @module hrtime - * - * @description Methods for handling OpenTelemetry hrtime. - */ + } + return out; +} -/** - * Convert a duration in milliseconds to an OpenTelemetry hrtime tuple. - * - * @param {number} millis - The duration in milliseconds. - * @returns {[number, number]} An array where the first element is seconds - * and the second is nanoseconds. +/* + * Detects if the given element matches any of the given class names (string or regex), + * or CSS selectors. + * @param {HTMLElement} element - The DOM element to check. + * @param {Array} classes - An array of class names (string or regex) to match against. + * @param {Array} selectors - An array of CSS selectors to match against. + * @return {boolean} - True if the element matches any of the classes or selectors, false otherwise. */ -function hrtime_fromMillis(millis) { - return [Math.trunc(millis / 1000), Math.round(millis % 1000 * 1e6)]; +function isMatchingElement(element, classes, selectors) { + try { + var _iterator3 = domUtility_createForOfIteratorHelper(classes), + _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var cls = _step3.value; + if (typeof cls === 'string') { + if (element.classList.contains(cls)) { + return true; + } + } else { + var _iterator5 = domUtility_createForOfIteratorHelper(element.classList), + _step5; + try { + for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { + var c = _step5.value; + if (cls.test(c)) { + return true; + } + } + } catch (err) { + _iterator5.e(err); + } finally { + _iterator5.f(); + } + } + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + var _iterator4 = domUtility_createForOfIteratorHelper(selectors), + _step4; + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + var sel = _step4.value; + if (element.matches(sel)) { + return true; + } + } + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); + } + } catch (_e) { + // ignore errors from invalid arguments + } + return false; } -/** - * Convert an OpenTelemetry hrtime tuple back to a duration in milliseconds. - * - * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds]. - * @returns {number} The total duration in milliseconds. - */ -function toMillis(hrtime) { - return hrtime[0] * 1e3 + Math.round(hrtime[1] / 1e6); -} +;// ./src/browser/telemetry.js +function browser_telemetry_typeof(o) { "@babel/helpers - typeof"; return browser_telemetry_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, browser_telemetry_typeof(o); } +function telemetry_toConsumableArray(r) { return telemetry_arrayWithoutHoles(r) || telemetry_iterableToArray(r) || telemetry_unsupportedIterableToArray(r) || telemetry_nonIterableSpread(); } +function telemetry_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function telemetry_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } +function telemetry_arrayWithoutHoles(r) { if (Array.isArray(r)) return telemetry_arrayLikeToArray(r); } +function telemetry_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function telemetry_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, telemetry_toPropertyKey(o.key), o); } } +function telemetry_createClass(e, r, t) { return r && telemetry_defineProperties(e.prototype, r), t && telemetry_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function telemetry_defineProperty(e, r, t) { return (r = telemetry_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function telemetry_toPropertyKey(t) { var i = telemetry_toPrimitive(t, "string"); return "symbol" == browser_telemetry_typeof(i) ? i : i + ""; } +function telemetry_toPrimitive(t, r) { if ("object" != browser_telemetry_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != browser_telemetry_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function telemetry_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = telemetry_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function telemetry_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return telemetry_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? telemetry_arrayLikeToArray(r, a) : void 0; } } +function telemetry_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +/* eslint-disable @typescript-eslint/no-this-alias */ +// TODO(matux): refactor to remove no-this-alias disable -/** - * Convert an OpenTelemetry hrtime tuple back to a duration in nanoseconds. - * - * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds]. - * @returns {number} The total duration in nanoseconds. - */ -function toNanos(hrtime) { - return hrtime[0] * 1e9 + hrtime[1]; -} -/** - * Adds two OpenTelemetry hrtime tuples. - * - * @param {[number, number]} a - The first hrtime tuple [s, ns]. - * @param {[number, number]} b - The second hrtime tuple [s, ns]. - * @returns {[number, number]} Summed hrtime tuple, normalized. - * - */ -function add(a, b) { - return [a[0] + b[0] + Math.trunc((a[1] + b[1]) / 1e9), (a[1] + b[1]) % 1e9]; -} -/** - * Get the current high-resolution time as an OpenTelemetry hrtime tuple. - * - * @param {boolean} usePerformance=false - If true, uses the Performance API (timeOrigin + now()). - * - * @returns {[number, number]} The current hrtime tuple [s, ns]. - */ -function now() { - var usePerformance = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - if (usePerformance) { - return add(hrtime_fromMillis(performance.timeOrigin), hrtime_fromMillis(performance.now())); - } - return hrtime_fromMillis(Date.now()); -} -/** - * Check if a value is a valid OpenTelemetry hrtime tuple. - * - * An hrtime tuple is an Array of exactly two numbers: - * [seconds, nanoseconds] - * - * @param {*} value – anything to test - * @returns {boolean} true if `value` is a [number, number] array of length 2 - * - * @example - * isHrTime([ 1, 500 ]); // true - * isHrTime([ 0, 1e9 ]); // true - * isHrTime([ '1', 500 ]); // false - * isHrTime({ 0: 1, 1: 500 }); // false - */ -function isHrTime(value) { - return Array.isArray(value) && value.length === 2 && typeof value[0] === 'number' && typeof value[1] === 'number'; -} -/** - * Methods for handling hrtime. OpenTelemetry uses the [seconds, nanoseconds] - * format for hrtime in the `ReadableSpan` interface. - * - * @example - * import hrtime from '@tracing/hrtime.js'; - * - * hrtime.fromMillis(1000); - * hrtime.toMillis([0, 1000]); - * hrtime.add([0, 0], [0, 1000]); - * hrtime.now(); - * hrtime.isHrTime([0, 1000]); - */ -/* harmony default export */ var hrtime = ({ - fromMillis: hrtime_fromMillis, - toMillis: toMillis, - toNanos: toNanos, - add: add, - now: now, - isHrTime: isHrTime -}); -;// ./src/tracing/exporter.js -function exporter_typeof(o) { "@babel/helpers - typeof"; return exporter_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, exporter_typeof(o); } -function exporter_slicedToArray(r, e) { return exporter_arrayWithHoles(r) || exporter_iterableToArrayLimit(r, e) || exporter_unsupportedIterableToArray(r, e) || exporter_nonIterableRest(); } -function exporter_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function exporter_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function exporter_arrayWithHoles(r) { if (Array.isArray(r)) return r; } -function exporter_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = exporter_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } -function exporter_toConsumableArray(r) { return exporter_arrayWithoutHoles(r) || exporter_iterableToArray(r) || exporter_unsupportedIterableToArray(r) || exporter_nonIterableSpread(); } -function exporter_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function exporter_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return exporter_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? exporter_arrayLikeToArray(r, a) : void 0; } } -function exporter_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } -function exporter_arrayWithoutHoles(r) { if (Array.isArray(r)) return exporter_arrayLikeToArray(r); } -function exporter_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function exporter_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function exporter_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, exporter_toPropertyKey(o.key), o); } } -function exporter_createClass(e, r, t) { return r && exporter_defineProperties(e.prototype, r), t && exporter_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function exporter_toPropertyKey(t) { var i = exporter_toPrimitive(t, "string"); return "symbol" == exporter_typeof(i) ? i : i + ""; } -function exporter_toPrimitive(t, r) { if ("object" != exporter_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != exporter_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -/** - * SpanExporter is responsible for exporting ReadableSpan objects - * and transforming them into the OTLP-compatible format. - */ -var SpanExporter = /*#__PURE__*/function () { - function SpanExporter(api) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - exporter_classCallCheck(this, SpanExporter); - this.api = api; + +var telemetry_defaults = { + network: true, + networkResponseHeaders: false, + networkResponseBody: false, + networkRequestHeaders: false, + networkRequestBody: false, + networkErrorOnHttp5xx: false, + networkErrorOnHttp4xx: false, + networkErrorOnHttp0: false, + log: true, + dom: true, + navigation: true, + connectivity: true, + contentSecurityPolicy: true, + errorOnContentSecurityPolicy: false +}; +function restore(replacements, type) { + var b; + while (replacements[type].length) { + b = replacements[type].shift(); + b[0][b[1]] = b[2]; + } +} +function nameFromDescription(description) { + if (!description || !description.attributes) { + return null; + } + var attrs = description.attributes; + var _iterator = telemetry_createForOfIteratorHelper(attrs), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var a = _step.value; + if (a.key === 'name') { + return a.value; + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return null; +} +function defaultValueScrubber(scrubFields) { + var patterns = []; + var _iterator2 = telemetry_createForOfIteratorHelper(scrubFields), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var field = _step2.value; + patterns.push(new RegExp(field, 'i')); + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + return function (description) { + var name = nameFromDescription(description); + if (!name) { + return false; + } + for (var _i = 0, _patterns = patterns; _i < _patterns.length; _i++) { + var p = _patterns[_i]; + if (p.test(name)) { + return true; + } + } + return false; + }; +} +var Instrumenter = /*#__PURE__*/function () { + function Instrumenter(options, telemeter, rollbar, _window, _document) { + telemetry_classCallCheck(this, Instrumenter); + telemetry_defineProperty(this, "deinstrumentConnectivity", function () { + this.removeListeners('connectivity'); + }); this.options = options; + var autoInstrument = options.autoInstrument; + if (options.enabled === false || autoInstrument === false) { + this.autoInstrument = {}; + } else { + if (!isType(autoInstrument, 'object')) { + autoInstrument = telemetry_defaults; + } + this.autoInstrument = merge(telemetry_defaults, autoInstrument); + } + this.configureScrubbing(); + this.telemeter = telemeter; + this.rollbar = rollbar; + this.diagnostic = rollbar.client.notifier.diagnostic; + this._window = _window || {}; + this._document = _document || {}; + this.replacements = { + network: [], + log: [], + navigation: [], + connectivity: [] + }; + this.eventRemovers = { + dom: [], + connectivity: [], + contentsecuritypolicy: [] + }; + this._location = this._window.location; + this._lastHref = this._location && this._location.href; } - - /** - * Export spans to the span export queue - * - * @param {Array} spans - Array of ReadableSpan objects to export - * @param {Function} _resultCallback - Optional callback (not used) - */ - return exporter_createClass(SpanExporter, [{ - key: "export", - value: function _export(spans, _resultCallback) { - spanExportQueue.push.apply(spanExportQueue, exporter_toConsumableArray(spans)); + return telemetry_createClass(Instrumenter, [{ + key: "configureScrubbing", + value: function configureScrubbing() { + var _options$scrubTelemet, _options$replay, _options$replay2, _options$replay3, _options$replay4, _options$replay5, _options$replay6, _options$replay7, _options$replay8, _options$replay9; + var options = this.options; + this.scrubTelemetryInputs = Boolean((_options$scrubTelemet = options.scrubTelemetryInputs) !== null && _options$scrubTelemet !== void 0 ? _options$scrubTelemet : (_options$replay = options.replay) === null || _options$replay === void 0 ? void 0 : _options$replay.maskAllInputs); + this.telemetryScrubber = options.telemetryScrubber; + this.defaultValueScrubber = defaultValueScrubber(options.scrubFields); + this.maskInputFn = (_options$replay2 = options.replay) === null || _options$replay2 === void 0 ? void 0 : _options$replay2.maskInputFn; + this.maskInputOptions = ((_options$replay3 = options.replay) === null || _options$replay3 === void 0 ? void 0 : _options$replay3.maskInputOptions) || {}; + this.scrubClasses = [(_options$replay4 = options.replay) === null || _options$replay4 === void 0 ? void 0 : _options$replay4.blockClass, (_options$replay5 = options.replay) === null || _options$replay5 === void 0 ? void 0 : _options$replay5.ignoreClass, (_options$replay6 = options.replay) === null || _options$replay6 === void 0 ? void 0 : _options$replay6.maskTextClass].filter(Boolean); + this.scrubSelectors = [(_options$replay7 = options.replay) === null || _options$replay7 === void 0 ? void 0 : _options$replay7.blockSelector, (_options$replay8 = options.replay) === null || _options$replay8 === void 0 ? void 0 : _options$replay8.ignoreSelector, (_options$replay9 = options.replay) === null || _options$replay9 === void 0 ? void 0 : _options$replay9.maskTextSelector].filter(Boolean); + } + }, { + key: "configure", + value: function configure(options) { + this.options = merge(this.options, options); + var autoInstrument = options.autoInstrument; + var oldSettings = merge(this.autoInstrument); + if (options.enabled === false || autoInstrument === false) { + this.autoInstrument = {}; + } else { + if (!isType(autoInstrument, 'object')) { + autoInstrument = telemetry_defaults; + } + this.autoInstrument = merge(telemetry_defaults, autoInstrument); + } + this.configureScrubbing(); + this.instrument(oldSettings); } - /** - * Transforms an array of ReadableSpan objects into the OTLP format payload - * compatible with the Rollbar API. This follows the OpenTelemetry protocol - * specification for traces. - * - * @returns {Object} OTLP format payload for API transmission - */ + // eslint-disable-next-line complexity }, { - key: "toPayload", - value: function toPayload() { - var _this = this; - var spans = spanExportQueue.slice(); - spanExportQueue.length = 0; - if (!spans || !spans.length) { - return { - resourceSpans: [] - }; + key: "instrument", + value: function instrument(oldSettings) { + if (this.autoInstrument.network && !(oldSettings && oldSettings.network)) { + this.instrumentNetwork(); + } else if (!this.autoInstrument.network && oldSettings && oldSettings.network) { + this.deinstrumentNetwork(); } - var resource = spans[0] && spans[0].resource || {}; - var scopeMap = new Map(); - var _iterator = exporter_createForOfIteratorHelper(spans), - _step; - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var span = _step.value; - var scopeKey = span.instrumentationScope ? "".concat(span.instrumentationScope.name, ":").concat(span.instrumentationScope.version) : 'default:1.0.0'; - if (!scopeMap.has(scopeKey)) { - scopeMap.set(scopeKey, { - scope: span.instrumentationScope || { - name: 'default', - version: '1.0.0', - attributes: [] - }, - spans: [] - }); - } - scopeMap.get(scopeKey).spans.push(this._transformSpan(span)); + if (this.autoInstrument.log && !(oldSettings && oldSettings.log)) { + this.instrumentConsole(); + } else if (!this.autoInstrument.log && oldSettings && oldSettings.log) { + this.deinstrumentConsole(); + } + if (this.autoInstrument.dom && !(oldSettings && oldSettings.dom)) { + this.instrumentDom(); + } else if (!this.autoInstrument.dom && oldSettings && oldSettings.dom) { + this.deinstrumentDom(); + } + if (this.autoInstrument.navigation && !(oldSettings && oldSettings.navigation)) { + this.instrumentNavigation(); + } else if (!this.autoInstrument.navigation && oldSettings && oldSettings.navigation) { + this.deinstrumentNavigation(); + } + if (this.autoInstrument.connectivity && !(oldSettings && oldSettings.connectivity)) { + this.instrumentConnectivity(); + } else if (!this.autoInstrument.connectivity && oldSettings && oldSettings.connectivity) { + this.deinstrumentConnectivity(); + } + if (this.autoInstrument.contentSecurityPolicy && !(oldSettings && oldSettings.contentSecurityPolicy)) { + this.instrumentContentSecurityPolicy(); + } else if (!this.autoInstrument.contentSecurityPolicy && oldSettings && oldSettings.contentSecurityPolicy) { + this.deinstrumentContentSecurityPolicy(); + } + } + }, { + key: "deinstrumentNetwork", + value: function deinstrumentNetwork() { + restore(this.replacements, 'network'); + } + }, { + key: "instrumentNetwork", + value: function instrumentNetwork() { + var self = this; + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + utility_replace(xhr, prop, function (orig) { + return self.rollbar.wrap(orig); + }); } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); } - return { - resourceSpans: [{ - resource: this._transformResource(resource), - scopeSpans: Array.from(scopeMap.values()).map(function (scopeData) { - return { - scope: _this._transformInstrumentationScope(scopeData.scope), - spans: scopeData.spans + if ('XMLHttpRequest' in this._window) { + var xhrp = this._window.XMLHttpRequest.prototype; + utility_replace(xhrp, 'open', function (orig) { + return function (method, url) { + var isUrlObject = _isUrlObject(url); + if (isType(url, 'string') || isUrlObject) { + url = isUrlObject ? url.toString() : url; + if (this.__rollbar_xhr) { + this.__rollbar_xhr.method = method; + this.__rollbar_xhr.url = url; + this.__rollbar_xhr.status_code = null; + this.__rollbar_xhr.start_time_ms = now(); + this.__rollbar_xhr.end_time_ms = null; + } else { + this.__rollbar_xhr = { + method: method, + url: url, + status_code: null, + start_time_ms: now(), + end_time_ms: null + }; + } + } + return orig.apply(this, arguments); + }; + }, this.replacements, 'network'); + utility_replace(xhrp, 'setRequestHeader', function (orig) { + return function (header, value) { + // If xhr.open is async, __rollbar_xhr may not be initialized yet. + if (!this.__rollbar_xhr) { + this.__rollbar_xhr = {}; + } + if (isType(header, 'string') && isType(value, 'string')) { + if (self.autoInstrument.networkRequestHeaders) { + if (!this.__rollbar_xhr.request_headers) { + this.__rollbar_xhr.request_headers = {}; + } + this.__rollbar_xhr.request_headers[header] = value; + } + // We want the content type even if request header telemetry is off. + if (header.toLowerCase() === 'content-type') { + this.__rollbar_xhr.request_content_type = value; + } + } + return orig.apply(this, arguments); + }; + }, this.replacements, 'network'); + utility_replace(xhrp, 'send', function (orig) { + return function (data) { + var xhr = this; + function onreadystatechangeHandler() { + if (xhr.__rollbar_xhr) { + if (xhr.__rollbar_xhr.status_code === null) { + xhr.__rollbar_xhr.status_code = 0; + if (self.autoInstrument.networkRequestBody) { + xhr.__rollbar_xhr.request = data; + } + xhr.__rollbar_event = self.captureNetwork(xhr.__rollbar_xhr, 'xhr', undefined); + } + if (xhr.readyState < 2) { + xhr.__rollbar_xhr.start_time_ms = now(); + } + if (xhr.readyState > 3) { + var end_time_ms = now(); + xhr.__rollbar_xhr.end_time_ms = end_time_ms; + var _headers = null; + xhr.__rollbar_xhr.response_content_type = xhr.getResponseHeader('Content-Type'); + if (self.autoInstrument.networkResponseHeaders) { + var headersConfig = self.autoInstrument.networkResponseHeaders; + _headers = {}; + try { + var header; + if (headersConfig === true) { + var allHeaders = xhr.getAllResponseHeaders(); + if (allHeaders) { + var arr = allHeaders.trim().split(/[\r\n]+/); + var parts, value; + var _iterator3 = telemetry_createForOfIteratorHelper(arr), + _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var h = _step3.value; + parts = h.split(': '); + header = parts.shift(); + value = parts.join(': '); + _headers[header] = value; + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + } + } else { + var _iterator4 = telemetry_createForOfIteratorHelper(headersConfig), + _step4; + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + var _h = _step4.value; + _headers[_h] = xhr.getResponseHeader(_h); + } + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); + } + } + } catch (_e) { + /* we ignore the errors here that could come from different + * browser issues with the xhr methods */ + } + } + var body = null; + if (self.autoInstrument.networkResponseBody) { + try { + body = xhr.responseText; + } catch (_e) { + /* ignore errors from reading responseText */ + } + } + var response = null; + if (body || _headers) { + response = {}; + if (body) { + if (self.isJsonContentType(xhr.__rollbar_xhr.response_content_type)) { + response.body = self.scrubJson(body); + } else { + response.body = body; + } + } + if (_headers) { + response.headers = _headers; + } + } + if (response) { + xhr.__rollbar_xhr.response = response; + } + try { + var code = xhr.status; + code = code === 1223 ? 204 : code; + xhr.__rollbar_xhr.status_code = code; + self.addOtelNetworkResponse(xhr.__rollbar_event, end_time_ms, code); + xhr.__rollbar_event.level = self.telemeter.levelFromStatus(code); + self.errorOnHttpStatus(xhr.__rollbar_xhr); + } catch (_e) { + /* ignore possible exception from xhr.status */ + } + } + } + } + wrapProp('onload', xhr); + wrapProp('onerror', xhr); + wrapProp('onprogress', xhr); + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + utility_replace(xhr, 'onreadystatechange', function (orig) { + return self.rollbar.wrap(orig, undefined, onreadystatechangeHandler); + }); + } else { + xhr.onreadystatechange = onreadystatechangeHandler; + } + if (xhr.__rollbar_xhr && self.trackHttpErrors()) { + xhr.__rollbar_xhr.stack = new Error().stack; + } + return orig.apply(this, arguments); + }; + }, this.replacements, 'network'); + } + if ('fetch' in this._window) { + utility_replace(this._window, 'fetch', function (orig) { + return function (_fn, _t) { + var args = Array.prototype.slice.call(arguments); + var input = args[0]; + var method = 'GET'; + var url; + var isUrlObject = _isUrlObject(input); + if (isType(input, 'string') || isUrlObject) { + url = isUrlObject ? input.toString() : input; + } else if (input) { + url = input.url; + if (input.method) { + method = input.method; + } + } + if (args[1] && args[1].method) { + method = args[1].method; + } + var metadata = { + method: method, + url: url, + status_code: null, + start_time_ms: now(), + end_time_ms: null }; - }) - }] - }; - } - - /** - * Sends the given payload to the Rollbar API. - * - * @param {String} payload - Serialized OTLP format payload - * @param {Object} headers - Optional request headers - * @returns {Promise} Promise that resolves when the request completes - */ - }, { - key: "post", - value: function post(payload) { - var headers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - return this.api.postSpans(payload, headers); - } - - /** - * Transforms a ReadableSpan into the OTLP Span format - * - * @private - * @param {Object} span - ReadableSpan object to transform - * @returns {Object} OTLP Span format - */ - }, { - key: "_transformSpan", - value: function _transformSpan(span) { - var _this2 = this; - var transformAttributes = function transformAttributes(attributes) { - return Object.entries(attributes || {}).map(function (_ref) { - var _ref2 = exporter_slicedToArray(_ref, 2), - key = _ref2[0], - value = _ref2[1]; - return { - key: key, - value: _this2._transformAnyValue(value) - }; - }); - }; - var transformEvents = function transformEvents(events) { - return (events || []).map(function (event) { - return { - timeUnixNano: hrtime.toNanos(event.time), - name: event.name, - attributes: transformAttributes(event.attributes) - }; - }); - }; - return { - traceId: span.spanContext.traceId, - spanId: span.spanContext.spanId, - parentSpanId: span.parentSpanId || '', - name: span.name, - kind: span.kind || 1, - // INTERNAL by default - startTimeUnixNano: hrtime.toNanos(span.startTime), - endTimeUnixNano: hrtime.toNanos(span.endTime), - attributes: transformAttributes(span.attributes), - events: transformEvents(span.events) - }; - } - - /** - * Transforms a resource object into OTLP Resource format - * - * @private - * @param {Object} resource - Resource information - * @returns {Object} OTLP Resource format - */ - }, { - key: "_transformResource", - value: function _transformResource(resource) { - var _this3 = this; - var attributes = resource.attributes || {}; - var keyValues = Object.entries(attributes).map(function (_ref3) { - var _ref4 = exporter_slicedToArray(_ref3, 2), - key = _ref4[0], - value = _ref4[1]; - return { - key: key, - value: _this3._transformAnyValue(value) - }; - }); - return { - attributes: keyValues - }; - } - - /** - * Transforms an instrumentation scope into OTLP InstrumentationScope format - * - * @private - * @param {Object} scope - Instrumentation scope information - * @returns {Object} OTLP InstrumentationScope format - */ - }, { - key: "_transformInstrumentationScope", - value: function _transformInstrumentationScope(scope) { - var _this4 = this; - return { - name: scope.name || '', - version: scope.version || '', - attributes: (scope.attributes || []).map(function (attr) { - return { - key: attr.key, - value: _this4._transformAnyValue(attr.value) - }; - }) - }; - } + if (args[1] && args[1].headers) { + // Argument may be a Headers object, or plain object. Ensure here that + // we are working with a Headers object with case-insensitive keys. + var reqHeaders = utility_headers(args[1].headers); + metadata.request_content_type = reqHeaders.get('Content-Type'); + if (self.autoInstrument.networkRequestHeaders) { + metadata.request_headers = self.fetchHeaders(reqHeaders, self.autoInstrument.networkRequestHeaders); + } + } + if (self.autoInstrument.networkRequestBody) { + if (args[1] && args[1].body) { + metadata.request = args[1].body; + } else if (args[0] && !isType(args[0], 'string') && args[0].body) { + metadata.request = args[0].body; + } + } + var telemetryEvent = self.captureNetwork(metadata, 'fetch', undefined); + if (self.trackHttpErrors()) { + metadata.stack = new Error().stack; + } - /** - * Transforms a JavaScript value into an OTLP AnyValue - * - * @private - * @param {any} value - Value to transform - * @returns {Object} OTLP AnyValue format - */ - }, { - key: "_transformAnyValue", - value: function _transformAnyValue(value) { - var _this5 = this; - if (value === null || value === undefined) { - return { - stringValue: '' - }; - } - var type = exporter_typeof(value); - if (type === 'string') { - return { - stringValue: value - }; - } else if (type === 'number') { - if (Number.isInteger(value)) { - return { - intValue: value.toString() - }; - } else { - return { - doubleValue: value - }; - } - } else if (type === 'boolean') { - return { - boolValue: value - }; - } else if (Array.isArray(value)) { - return { - arrayValue: { - values: value.map(function (v) { - return _this5._transformAnyValue(v); - }) - } - }; - } else if (type === 'object') { - return { - kvlistValue: { - values: Object.entries(value).map(function (_ref5) { - var _ref6 = exporter_slicedToArray(_ref5, 2), - k = _ref6[0], - v = _ref6[1]; - return { - key: k, - value: _this5._transformAnyValue(v) - }; - }) - } - }; + // Start our handler before returning the promise. This allows resp.clone() + // to execute before other handlers touch the response. + return orig.apply(this, args).then(function (resp) { + var end_time_ms = now(); + metadata.end_time_ms = end_time_ms; + metadata.status_code = resp.status; + self.addOtelNetworkResponse(telemetryEvent, end_time_ms, resp.status); + metadata.response_content_type = resp.headers.get('Content-Type'); + var headers = null; + if (self.autoInstrument.networkResponseHeaders) { + headers = self.fetchHeaders(resp.headers, self.autoInstrument.networkResponseHeaders); + } + var body = null; + if (self.autoInstrument.networkResponseBody) { + if (typeof resp.text === 'function') { + // Response.text() is not implemented on some platforms + // The response must be cloned to prevent reading (and locking) the original stream. + // This must be done before other handlers touch the response. + body = resp.clone().text(); //returns a Promise + } + } + if (headers || body) { + metadata.response = {}; + if (body) { + // Test to ensure body is a Promise, which it should always be. + if (typeof body.then === 'function') { + body.then(function (text) { + if (text && self.isJsonContentType(metadata.response_content_type)) { + metadata.response.body = self.scrubJson(text); + } else { + metadata.response.body = text; + } + }); + } else { + metadata.response.body = body; + } + } + if (headers) { + metadata.response.headers = headers; + } + } + self.errorOnHttpStatus(metadata); + return resp; + }); + }; + }, this.replacements, 'network'); } - return { - stringValue: String(value) - }; } - }]); -}(); -var spanExportQueue = []; -;// ./src/tracing/spanProcessor.js -function spanProcessor_typeof(o) { "@babel/helpers - typeof"; return spanProcessor_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, spanProcessor_typeof(o); } -function spanProcessor_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = spanProcessor_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } -function spanProcessor_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return spanProcessor_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? spanProcessor_arrayLikeToArray(r, a) : void 0; } } -function spanProcessor_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function spanProcessor_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function spanProcessor_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, spanProcessor_toPropertyKey(o.key), o); } } -function spanProcessor_createClass(e, r, t) { return r && spanProcessor_defineProperties(e.prototype, r), t && spanProcessor_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function spanProcessor_toPropertyKey(t) { var i = spanProcessor_toPrimitive(t, "string"); return "symbol" == spanProcessor_typeof(i) ? i : i + ""; } -function spanProcessor_toPrimitive(t, r) { if ("object" != spanProcessor_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != spanProcessor_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - -var SpanProcessor = /*#__PURE__*/function () { - function SpanProcessor(exporter) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - spanProcessor_classCallCheck(this, SpanProcessor); - this.exporter = exporter; - this.options = options; - this.pendingSpans = new Map(); - this.transforms = [this.userTransform.bind(this)]; - } - return spanProcessor_createClass(SpanProcessor, [{ - key: "addTransform", - value: function addTransform(transformFn) { - this.transforms.unshift(transformFn); + }, { + key: "captureNetwork", + value: function captureNetwork(metadata, subtype, rollbarUUID) { + if (metadata.request && this.isJsonContentType(metadata.request_content_type)) { + metadata.request = this.scrubJson(metadata.request); + } + return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID); } }, { - key: "userTransform", - value: function userTransform(span) { - if (this.options.transformSpan) { - this.options.transformSpan({ - span: span - }); + key: "isJsonContentType", + value: function isJsonContentType(contentType) { + return contentType && isType(contentType, 'string') && contentType.toLowerCase().includes('json') ? true : false; + } + }, { + key: "addOtelNetworkResponse", + value: function addOtelNetworkResponse(event, endTimeMs, statusCode) { + if (event.otelAttributes) { + event.otelAttributes['response.timeUnixNano'] = (endTimeMs * 1e6).toString(); + event.otelAttributes.statusCode = statusCode; } } }, { - key: "applyTransforms", - value: function applyTransforms(span) { - var _iterator = spanProcessor_createForOfIteratorHelper(this.transforms), - _step; + key: "scrubJson", + value: function scrubJson(json) { + return JSON.stringify(src_scrub(JSON.parse(json), this.options.scrubFields)); + } + }, { + key: "fetchHeaders", + value: function fetchHeaders(inHeaders, headersConfig) { + var outHeaders = {}; try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var transform = _step.value; + if (headersConfig === true) { + if (typeof inHeaders.entries === 'function') { + // Headers.entries() is not implemented in IE + var allHeaders = inHeaders.entries(); + var currentHeader = allHeaders.next(); + while (!currentHeader.done) { + outHeaders[currentHeader.value[0]] = currentHeader.value[1]; + currentHeader = allHeaders.next(); + } + } + } else { + var _iterator5 = telemetry_createForOfIteratorHelper(headersConfig), + _step5; try { - transform(span); - } catch (e) { - src_logger.error('Error running span transform callback', e); + for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { + var h = _step5.value; + outHeaders[h] = inHeaders.get(h); + } + } catch (err) { + _iterator5.e(err); + } finally { + _iterator5.f(); } } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); + } catch (_e) { + /* ignore probable IE errors */ } + return outHeaders; } }, { - key: "onStart", - value: function onStart(span, _parentContext) { - this.pendingSpans.set(span.span.spanContext.spanId, span); + key: "trackHttpErrors", + value: function trackHttpErrors() { + return this.autoInstrument.networkErrorOnHttp5xx || this.autoInstrument.networkErrorOnHttp4xx || this.autoInstrument.networkErrorOnHttp0; } }, { - key: "onEnd", - value: function onEnd(span) { - this.applyTransforms(span.span); - this.exporter.export([span.export()]); - this.pendingSpans.delete(span.span.spanContext.spanId); + key: "errorOnHttpStatus", + value: function errorOnHttpStatus(metadata) { + var status = metadata.status_code; + if (status >= 500 && this.autoInstrument.networkErrorOnHttp5xx || status >= 400 && this.autoInstrument.networkErrorOnHttp4xx || status === 0 && this.autoInstrument.networkErrorOnHttp0) { + var error = new Error('HTTP request failed with Status ' + status); + error.stack = metadata.stack; + this.rollbar.error(error, { + skipFrames: 1 + }); + } } - }]); -}(); -;// ./src/tracing/span.js -function span_typeof(o) { "@babel/helpers - typeof"; return span_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, span_typeof(o); } -function span_slicedToArray(r, e) { return span_arrayWithHoles(r) || span_iterableToArrayLimit(r, e) || span_unsupportedIterableToArray(r, e) || span_nonIterableRest(); } -function span_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function span_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return span_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? span_arrayLikeToArray(r, a) : void 0; } } -function span_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function span_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function span_arrayWithHoles(r) { if (Array.isArray(r)) return r; } -function span_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function span_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, span_toPropertyKey(o.key), o); } } -function span_createClass(e, r, t) { return r && span_defineProperties(e.prototype, r), t && span_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function span_toPropertyKey(t) { var i = span_toPrimitive(t, "string"); return "symbol" == span_typeof(i) ? i : i + ""; } -function span_toPrimitive(t, r) { if ("object" != span_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != span_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - -var Span = /*#__PURE__*/function () { - function Span(options) { - span_classCallCheck(this, Span); - this.usePerformance = options.usePerformance; - this.initReadableSpan(options); - this.spanProcessor = options.spanProcessor; - this.spanProcessor.onStart(this, options.context); - if (options.attributes) { - this.setAttributes(options.attributes); + }, { + key: "deinstrumentConsole", + value: function deinstrumentConsole() { + var b; + while (this.replacements['log'].length) { + b = this.replacements['log'].shift(); + this._window.console[b[0]] = b[1]; + } } - return this; - } - return span_createClass(Span, [{ - key: "initReadableSpan", - value: function initReadableSpan(options) { - var _options$session; - this.span = { - name: options.name, - kind: options.kind, - spanContext: options.spanContext, - parentSpanId: options.parentSpanId, - startTime: options.startTime || hrtime.now(options.usePerformance), - endTime: [0, 0], - status: { - code: 0, - message: '' - }, - attributes: { - 'session.id': (_options$session = options.session) === null || _options$session === void 0 ? void 0 : _options$session.id - }, - links: [], - events: [], - duration: 0, - ended: false, - resource: options.resource, - instrumentationScope: options.scope, - droppedAttributesCount: 0, - droppedEventsCount: 0, - droppedLinksCount: 0 - }; + }, { + key: "instrumentConsole", + value: function instrumentConsole() { + var _this$_window; + if (!((_this$_window = this._window) !== null && _this$_window !== void 0 && (_this$_window = _this$_window.console) !== null && _this$_window !== void 0 && _this$_window.log)) { + return; + } + var self = this; + var c = this._window.console; + function wrapConsole(method) { + // eslint-disable-next-line strict + 'use strict'; + + // See https://github.com/rollbar/rollbar.js/pull/778 + var orig = c[method]; + var origConsole = c; + var level = method === 'warn' ? 'warning' : method; + c[method] = function () { + var args = Array.prototype.slice.call(arguments); + var message = formatArgsAsString(args); + self.telemeter.captureLog(message, level, null, now()); + if (orig) { + Function.prototype.apply.call(orig, origConsole, args); + } + }; + self.replacements['log'].push([method, orig]); + } + var methods = ['debug', 'info', 'warn', 'error', 'log']; + try { + for (var _i2 = 0, _methods = methods; _i2 < _methods.length; _i2++) { + var m = _methods[_i2]; + wrapConsole(m); + } + } catch (e) { + this.diagnostic.instrumentConsole = { + error: e.message + }; + } } }, { - key: "spanContext", - value: function spanContext() { - return this.span.spanContext; + key: "deinstrumentDom", + value: function deinstrumentDom() { + this.removeListeners('dom'); } }, { - key: "spanId", - get: function get() { - return this.span.spanContext.spanId; + key: "instrumentDom", + value: function instrumentDom() { + var _this = this; + this.addListener('dom', this._window, ['click', 'dblclick', 'contextmenu'], function (e) { + return _this.handleEvent('click', e); + }); + this.addListener('dom', this._window, ['dragstart', 'dragend', 'dragenter', 'dragleave', 'drop'], function (e) { + return _this.handleEvent('dragdrop', e); + }); + this.addListener('dom', this._window, ['blur', 'focus'], function (e) { + return _this.handleEvent('focus', e); + }); + this.addListener('dom', this._window, ['submit', 'invalid'], function (e) { + return _this.handleEvent('form', e); + }); + this.addListener('dom', this._window, ['input', 'change'], function (e) { + return _this.handleEvent('input', e); + }); + this.addListener('dom', this._window, ['resize'], function (e) { + return _this.handleEvent('resize', e); + }); + this.addListener('dom', this._document, ['DOMContentLoaded'], function (e) { + return _this.handleEvent('contentLoaded', e); + }); } }, { - key: "traceId", - get: function get() { - return this.span.spanContext.traceId; + key: "handleEvent", + value: function handleEvent(name, evt) { + try { + return { + click: this.handleClick, + dragdrop: this.handleDrag, + focus: this.handleFocus, + form: this.handleForm, + input: this.handleInput, + resize: this.handleResize, + contentLoaded: this.handleContentLoaded + }[name].call(this, evt); + } catch (exc) { + src_logger.log("".concat(name, " handler error"), evt, exc, exc.stack); + } } }, { - key: "setAttribute", - value: function setAttribute(key, value) { - if (value == null || this.span.ended) return this; - if (key.length === 0) return this; - this.span.attributes[key] = value; - return this; + key: "handleContentLoaded", + value: function handleContentLoaded(_evt) { + this.rollbar.triggerReplay({ + type: 'navigation', + path: new URL(this._location.href).pathname + }); } }, { - key: "setAttributes", - value: function setAttributes(attributes) { - for (var _i = 0, _Object$entries = Object.entries(attributes); _i < _Object$entries.length; _i++) { - var _Object$entries$_i = span_slicedToArray(_Object$entries[_i], 2), - k = _Object$entries$_i[0], - v = _Object$entries$_i[1]; - this.setAttribute(k, v); - } - return this; + key: "handleClick", + value: function handleClick(evt) { + var _evt$target; + var tagName = (_evt$target = evt.target) === null || _evt$target === void 0 ? void 0 : _evt$target.tagName.toLowerCase(); + if (['input', 'select', 'textarea'].includes(tagName)) return; + this.telemeter.captureClick({ + type: evt.type, + isSynthetic: !evt.isTrusted, + element: elementString(evt.target), + timestamp: now() + }); } }, { - key: "addEvent", - value: function addEvent(name) { - var attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var time = arguments.length > 2 ? arguments[2] : undefined; - if (this.span.ended) return this; - this.span.events.push({ - name: name, - attributes: attributes, - time: time || hrtime.now(), - droppedAttributesCount: 0 + key: "handleFocus", + value: function handleFocus(evt) { + var _evt$target2; + var type = evt.type; + var element = (_evt$target2 = evt.target) !== null && _evt$target2 !== void 0 && _evt$target2.window ? 'window' : elementString(evt.target); + this.telemeter.captureFocus({ + type: type, + isSynthetic: !evt.isTrusted, + element: element, + timestamp: now() }); - return this; } }, { - key: "isRecording", - value: function isRecording() { - return this.span.ended === false; + key: "handleForm", + value: function handleForm(_evt) { + // TODO: implement form event handling + //const type = evt.type; + //const elementString = evt.target?.window + // ? 'window' + // : domUtil.elementString(evt.target); } }, { - key: "end", - value: function end(attributes, time) { - if (attributes) this.setAttributes(attributes); - this.span.endTime = time || hrtime.now(this.usePerformance); - this.span.ended = true; - this.spanProcessor.onEnd(this); + key: "handleResize", + value: function handleResize(evt) { + var textZoomRatio = window.screen.width / window.innerWidth; + this.telemeter.captureResize({ + type: evt.type, + isSynthetic: !evt.isTrusted, + width: window.innerWidth, + height: window.innerHeight, + textZoomRatio: textZoomRatio, + timestamp: now() + }); } }, { - key: "export", - value: function _export() { - return this.span; - } - }]); -}(); -;// ./src/tracing/tracer.js -function tracer_typeof(o) { "@babel/helpers - typeof"; return tracer_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, tracer_typeof(o); } -function tracer_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function tracer_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? tracer_ownKeys(Object(t), !0).forEach(function (r) { tracer_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : tracer_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function tracer_defineProperty(e, r, t) { return (r = tracer_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function tracer_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function tracer_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, tracer_toPropertyKey(o.key), o); } } -function tracer_createClass(e, r, t) { return r && tracer_defineProperties(e.prototype, r), t && tracer_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function tracer_toPropertyKey(t) { var i = tracer_toPrimitive(t, "string"); return "symbol" == tracer_typeof(i) ? i : i + ""; } -function tracer_toPrimitive(t, r) { if ("object" != tracer_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != tracer_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - - -var Tracer = /*#__PURE__*/function () { - function Tracer(tracing, spanProcessor) { - tracer_classCallCheck(this, Tracer); - this.spanProcessor = spanProcessor; - this.tracing = tracing; - } - return tracer_createClass(Tracer, [{ - key: "startSpan", - value: function startSpan(name) { - var _this$tracing$resourc, _options$resource, _this$tracing$session; - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.tracing.contextManager.active(); - var parentSpan = this.tracing.getSpan(context); - var parentSpanContext = parentSpan === null || parentSpan === void 0 ? void 0 : parentSpan.spanContext(); - var spanId = id.gen(8); - var traceId; - var traceFlags = 0; - var traceState = null; - var parentSpanId; - if (parentSpanContext) { - traceId = parentSpanContext.traceId; - traceState = parentSpanContext.traceState; - parentSpanId = parentSpanContext.spanId; - } else { - traceId = id.gen(16); + key: "handleDrag", + value: function handleDrag(evt) { + var type = evt.type; + var kinds, mediaTypes, dropEffect, effectAllowed; + if (type === 'drop') { + kinds = []; + mediaTypes = []; + var objs = [].concat(telemetry_toConsumableArray(evt.dataTransfer.files), telemetry_toConsumableArray(evt.dataTransfer.items)); + var _iterator6 = telemetry_createForOfIteratorHelper(objs), + _step6; + try { + for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { + var o = _step6.value; + if (o.kind && o.type) { + kinds.push(o.kind); + mediaTypes.push(o.type); + } + } + } catch (err) { + _iterator6.e(err); + } finally { + _iterator6.f(); + } } - var kind = 0; - var spanContext = { - traceId: traceId, - spanId: spanId, - traceFlags: traceFlags, - traceState: traceState - }; - var resource = { - attributes: tracer_objectSpread(tracer_objectSpread({}, ((_this$tracing$resourc = this.tracing.resource) === null || _this$tracing$resourc === void 0 ? void 0 : _this$tracing$resourc.attributes) || {}), ((_options$resource = options.resource) === null || _options$resource === void 0 ? void 0 : _options$resource.attributes) || {}) - }; - var span = new Span({ - resource: resource, - scope: this.tracing.scope, - session: (_this$tracing$session = this.tracing.session) === null || _this$tracing$session === void 0 ? void 0 : _this$tracing$session.session, - context: context, - spanContext: spanContext, - name: name, - kind: kind, - parentSpanId: parentSpanId, - spanProcessor: this.spanProcessor, - startTime: options.startTime, - usePerformance: options.usePerformance + if (['drop', 'dragstart'].includes(type)) { + var _evt$dataTransfer, _evt$dataTransfer2; + dropEffect = (_evt$dataTransfer = evt.dataTransfer) === null || _evt$dataTransfer === void 0 ? void 0 : _evt$dataTransfer.dropEffect; + effectAllowed = (_evt$dataTransfer2 = evt.dataTransfer) === null || _evt$dataTransfer2 === void 0 ? void 0 : _evt$dataTransfer2.effectAllowed; + } + this.telemeter.captureDragDrop({ + type: type, + isSynthetic: !evt.isTrusted, + element: elementString(evt.target), + dropEffect: dropEffect, + effectAllowed: effectAllowed, + kinds: JSON.stringify(kinds), + mediaTypes: JSON.stringify(mediaTypes), + timestamp: now() }); - return span; } - }]); -}(); -;// ./src/tracing/tracing.js -function tracing_typeof(o) { "@babel/helpers - typeof"; return tracing_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, tracing_typeof(o); } -function tracing_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function tracing_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? tracing_ownKeys(Object(t), !0).forEach(function (r) { tracing_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : tracing_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function tracing_defineProperty(e, r, t) { return (r = tracing_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function tracing_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function tracing_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, tracing_toPropertyKey(o.key), o); } } -function tracing_createClass(e, r, t) { return r && tracing_defineProperties(e.prototype, r), t && tracing_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function tracing_toPropertyKey(t) { var i = tracing_toPrimitive(t, "string"); return "symbol" == tracing_typeof(i) ? i : i + ""; } -function tracing_toPrimitive(t, r) { if ("object" != tracing_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != tracing_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - - - + /* + * Applies Rollbar telemetry scrubbing options to the dom input value. + * When replay options are present, applies those as well. + */ + }, { + key: "scrubInputValue", + value: function scrubInputValue(value, element, tagName, inputType) { + var mask = '******'; + if (inputType === 'password') { + return mask; + } + if (this.scrubTelemetryInputs) { + return mask; + } else { + var description = describeElement(element); + if (this.telemetryScrubber) { + if (this.telemetryScrubber(description)) { + return mask; + } + } else if (this.defaultValueScrubber(description)) { + return mask; + } + } + // Apply replay options regardless of other scrubbing + if (isMatchingElement(element, this.scrubClasses, this.scrubSelectors)) { + return mask; + } -var SPAN_KEY = createContextKey('Rollbar Context Key SPAN'); -var Tracing = /*#__PURE__*/function () { - function Tracing(gWindow, api, options) { - tracing_classCallCheck(this, Tracing); - this.api = api; - this.options = options; - this.window = gWindow; - if (this.window.sessionStorage) { - this.session = new Session(this, options); - } - this.createTracer(); - } - return tracing_createClass(Tracing, [{ - key: "configure", - value: function configure(options) { - // Options merge happens before configure is called, so we can just replace. - this.options = options; - } - }, { - key: "initSession", - value: function initSession() { - if (this.session) { - this.session.init(); + // This check is last since maskInputFn returns a modified value rather + // than a boolean, which would cause an early return even if the value + // was not scrubbed. + if (this.maskInputOptions[tagName.toLowerCase()] || this.maskInputOptions[inputType]) { + if (this.maskInputFn) { + return this.maskInputFn(value, element); + } else { + return mask; + } } + return value; } + + /* + * Uses the `input` event for everything except radio and checkbox inputs. + * For those, it uses the `change` event. + */ }, { - key: "sessionId", - get: function get() { - if (this.session) { - return this.session.session.id; + key: "handleInput", + value: function handleInput(evt) { + var _evt$target3, _evt$target4, _evt$target5, _evt$target6; + var type = evt.type; + var tagName = (_evt$target3 = evt.target) === null || _evt$target3 === void 0 ? void 0 : _evt$target3.tagName.toLowerCase(); + var value = (_evt$target4 = evt.target) === null || _evt$target4 === void 0 ? void 0 : _evt$target4.value; + var inputType = ((_evt$target5 = evt.target) === null || _evt$target5 === void 0 || (_evt$target5 = _evt$target5.attributes) === null || _evt$target5 === void 0 || (_evt$target5 = _evt$target5.type) === null || _evt$target5 === void 0 ? void 0 : _evt$target5.value) || ((_evt$target6 = evt.target) === null || _evt$target6 === void 0 ? void 0 : _evt$target6.type); + if (value !== undefined) { + value = this.scrubInputValue(value, evt.target, tagName, inputType); } - return null; + switch (type) { + case 'input': + if (['radio', 'checkbox'].includes(inputType)) return; + if (['select', 'textarea'].includes(tagName)) { + inputType = tagName; + } + break; + case 'change': + if (!['radio', 'checkbox'].includes(inputType)) return; + if (inputType === 'checkbox') { + var _evt$target7; + value = (_evt$target7 = evt.target) === null || _evt$target7 === void 0 ? void 0 : _evt$target7.checked; + } + break; + } + this.telemeter.captureInput({ + type: inputType, + isSynthetic: !evt.isTrusted, + element: elementString(evt.target), + value: value, + timestamp: now() + }); } }, { - key: "resource", - get: function get() { - var _this$options$payload, _this$options$payload2; - return { - attributes: tracing_objectSpread(tracing_objectSpread({}, this.options.resource || {}), {}, { - 'rollbar.environment': (_this$options$payload = (_this$options$payload2 = this.options.payload) === null || _this$options$payload2 === void 0 ? void 0 : _this$options$payload2.environment) !== null && _this$options$payload !== void 0 ? _this$options$payload : this.options.environment - }) - }; + key: "deinstrumentNavigation", + value: function deinstrumentNavigation() { + var chrome = this._window.chrome; + var chromePackagedApp = chrome && chrome.app && chrome.app.runtime; + // See https://github.com/angular/angular.js/pull/13945/files + var hasPushState = !chromePackagedApp && this._window.history && this._window.history.pushState; + if (!hasPushState) { + return; + } + restore(this.replacements, 'navigation'); } }, { - key: "scope", - get: function get() { - return { - name: 'rollbar-browser-js', - version: this.options.version - }; + key: "instrumentNavigation", + value: function instrumentNavigation() { + var chrome = this._window.chrome; + var chromePackagedApp = chrome && chrome.app && chrome.app.runtime; + // See https://github.com/angular/angular.js/pull/13945/files + var hasPushState = !chromePackagedApp && this._window.history && this._window.history.pushState; + if (!hasPushState) { + return; + } + var self = this; + utility_replace(this._window, 'onpopstate', function (orig) { + return function () { + var current = self._location.href; + self.handleUrlChange(self._lastHref, current); + if (orig) { + orig.apply(this, arguments); + } + }; + }, this.replacements, 'navigation'); + utility_replace(this._window.history, 'pushState', function (orig) { + return function () { + var url = arguments.length > 2 ? arguments[2] : undefined; + if (url) { + self.handleUrlChange(self._lastHref, String(url)); + } + return orig.apply(this, arguments); + }; + }, this.replacements, 'navigation'); } }, { - key: "idGen", - value: function idGen() { - var bytes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16; - return id.gen(bytes); + key: "handleUrlChange", + value: function handleUrlChange(from, to) { + var parsedHref = url_parse(this._location.href); + var parsedTo = url_parse(to); + var parsedFrom = url_parse(from); + this._lastHref = to; + if (parsedHref.protocol === parsedTo.protocol && parsedHref.host === parsedTo.host) { + to = parsedTo.path + (parsedTo.hash || ''); + } + if (parsedHref.protocol === parsedFrom.protocol && parsedHref.host === parsedFrom.host) { + from = parsedFrom.path + (parsedFrom.hash || ''); + } + this.telemeter.captureNavigation(from, to, null, now()); + this.rollbar.triggerReplay({ + type: 'navigation', + path: to + }); } }, { - key: "createTracer", - value: function createTracer() { - this.contextManager = new ContextManager(); - this.exporter = new SpanExporter(this.api, this.options); - this.spanProcessor = new SpanProcessor(this.exporter, this.options.tracing); - this.tracer = new Tracer(this, this.spanProcessor); + key: "instrumentConnectivity", + value: function instrumentConnectivity() { + var self = this; + this.addListener('connectivity', this._window, ['online', 'offline'], function (evt) { + return self.handleConnectivity(evt); + }); } }, { - key: "getTracer", - value: function getTracer() { - return this.tracer; + key: "handleConnectivity", + value: function handleConnectivity(evt) { + var type = evt.type; + this.telemeter.captureConnectivityChange({ + type: type, + isSynthetic: !evt.isTrusted, + timestamp: now() + }); } }, { - key: "addSpanTransform", - value: function addSpanTransform(transformFn) { - this.spanProcessor.addTransform(transformFn); + key: "handleCspEvent", + value: function handleCspEvent(cspEvent) { + var message = 'Security Policy Violation: ' + 'blockedURI: ' + cspEvent.blockedURI + ', ' + 'violatedDirective: ' + cspEvent.violatedDirective + ', ' + 'effectiveDirective: ' + cspEvent.effectiveDirective + ', '; + if (cspEvent.sourceFile) { + message += 'location: ' + cspEvent.sourceFile + ', ' + 'line: ' + cspEvent.lineNumber + ', ' + 'col: ' + cspEvent.columnNumber + ', '; + } + message += 'originalPolicy: ' + cspEvent.originalPolicy; + this.telemeter.captureLog(message, 'error', null, now()); + this.handleCspError(message); } }, { - key: "getSpan", - value: function getSpan() { - var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.contextManager.active(); - return context.getValue(SPAN_KEY); + key: "handleCspError", + value: function handleCspError(message) { + if (this.autoInstrument.errorOnContentSecurityPolicy) { + this.rollbar.error(message); + } } }, { - key: "setSpan", - value: function setSpan() { - var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.contextManager.active(); - var span = arguments.length > 1 ? arguments[1] : undefined; - return context.setValue(SPAN_KEY, span); + key: "deinstrumentContentSecurityPolicy", + value: function deinstrumentContentSecurityPolicy() { + this.removeListeners('contentsecuritypolicy'); } }, { - key: "startSpan", - value: function startSpan(name) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.contextManager.active(); - return this.tracer.startSpan(name, options, context); + key: "instrumentContentSecurityPolicy", + value: function instrumentContentSecurityPolicy() { + if (!('addEventListener' in this._document)) { + return; + } + var cspHandler = this.handleCspEvent.bind(this); + this.addListener('contentsecuritypolicy', this._document, ['securitypolicyviolation'], cspHandler); } }, { - key: "with", - value: function _with(context, fn, thisArg) { - var _this$contextManager; - for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { - args[_key - 3] = arguments[_key]; + key: "addListener", + value: function addListener(section, obj, types, handler) { + var _this2 = this; + if (obj.addEventListener) { + var _iterator7 = telemetry_createForOfIteratorHelper(types), + _step7; + try { + var _loop = function _loop() { + var t = _step7.value; + var options = { + capture: true, + passive: true + }; + obj.addEventListener(t, handler, options, true); + _this2.eventRemovers[section].push(function () { + obj.removeEventListener(t, handler, options); + }); + }; + for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { + _loop(); + } + } catch (err) { + _iterator7.e(err); + } finally { + _iterator7.f(); + } } - return (_this$contextManager = this.contextManager).with.apply(_this$contextManager, [context, fn, thisArg].concat(args)); } }, { - key: "withSpan", - value: function withSpan(name, options, fn, thisArg) { - var span = this.startSpan(name, options); - return this.with(this.setSpan(this.contextManager.active(), span), fn, thisArg, span); + key: "removeListeners", + value: function removeListeners(section) { + var r; + while (this.eventRemovers[section].length) { + r = this.eventRemovers[section].shift(); + r(); + } } }]); }(); +function _isUrlObject(input) { + return typeof URL !== 'undefined' && input instanceof URL; +} +/* harmony default export */ var browser_telemetry = (Instrumenter); +;// ./src/browser/wrapGlobals.js +function wrapGlobals(window, handler, shim) { + if (!window) { + return; + } + // Adapted from https://github.com/bugsnag/bugsnag-js + var globals = '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'.split(','); + var i, global; + for (i = 0; i < globals.length; ++i) { + global = globals[i]; + if (window[global] && window[global].prototype) { + _extendListenerPrototype(handler, window[global].prototype, shim); + } + } +} +function _extendListenerPrototype(handler, prototype, shim) { + if (hasOwn(prototype, 'addEventListener')) { + var oldAddEventListener = prototype.addEventListener; + while (oldAddEventListener._rollbarOldAdd && oldAddEventListener.belongsToShim) { + oldAddEventListener = oldAddEventListener._rollbarOldAdd; + } + var addFn = function addFn(event, callback, bubble) { + oldAddEventListener.call(this, event, handler.wrap(callback), bubble); + }; + addFn._rollbarOldAdd = oldAddEventListener; + addFn.belongsToShim = shim; + prototype.addEventListener = addFn; + var oldRemoveEventListener = prototype.removeEventListener; + while (oldRemoveEventListener._rollbarOldRemove && oldRemoveEventListener.belongsToShim) { + oldRemoveEventListener = oldRemoveEventListener._rollbarOldRemove; + } + var removeFn = function removeFn(event, callback, bubble) { + oldRemoveEventListener.call(this, event, callback && callback._rollbar_wrapped || callback, bubble); + }; + removeFn._rollbarOldRemove = oldRemoveEventListener; + removeFn.belongsToShim = shim; + prototype.removeEventListener = removeFn; + } +} +/* harmony default export */ var browser_wrapGlobals = (wrapGlobals); ;// ./src/browser/rollbar.js diff --git a/dist/rollbar.noconflict.umd.js.map b/dist/rollbar.noconflict.umd.js.map index d1359656a..a925150fd 100644 --- a/dist/rollbar.noconflict.umd.js.map +++ b/dist/rollbar.noconflict.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"rollbar.noconflict.umd.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;UCVA;UACA;;;;;WCDA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA,8CAA8C;;;;;WCA9C;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;ACNA,IAAIA,MAAM,GAAGC,MAAM,CAACC,SAAS,CAACC,cAAc;AAC5C,IAAIC,KAAK,GAAGH,MAAM,CAACC,SAAS,CAACG,QAAQ;AAErC,IAAIC,aAAa,GAAG,SAASA,aAAaA,CAACC,GAAG,EAAE;EAC9C,IAAI,CAACA,GAAG,IAAIH,KAAK,CAACI,IAAI,CAACD,GAAG,CAAC,KAAK,iBAAiB,EAAE;IACjD,OAAO,KAAK;EACd;EAEA,IAAIE,iBAAiB,GAAGT,MAAM,CAACQ,IAAI,CAACD,GAAG,EAAE,aAAa,CAAC;EACvD,IAAIG,gBAAgB,GAClBH,GAAG,CAACI,WAAW,IACfJ,GAAG,CAACI,WAAW,CAACT,SAAS,IACzBF,MAAM,CAACQ,IAAI,CAACD,GAAG,CAACI,WAAW,CAACT,SAAS,EAAE,eAAe,CAAC;EACzD;EACA,IAAIK,GAAG,CAACI,WAAW,IAAI,CAACF,iBAAiB,IAAI,CAACC,gBAAgB,EAAE;IAC9D,OAAO,KAAK;EACd;;EAEA;EACA;EACA,IAAIE,GAAG;EACP,KAAKA,GAAG,IAAIL,GAAG,EAAE;IACf;EAAA;EAGF,OAAO,OAAOK,GAAG,KAAK,WAAW,IAAIZ,MAAM,CAACQ,IAAI,CAACD,GAAG,EAAEK,GAAG,CAAC;AAC5D,CAAC;AAED,SAASC,KAAKA,CAAA,EAAG;EACf,IAAIC,CAAC;IACHC,GAAG;IACHC,IAAI;IACJC,KAAK;IACLC,IAAI;IACJC,MAAM,GAAGlB,MAAM,CAACmB,MAAM,CAAC,IAAI,CAAC;IAAE;IAC9BC,OAAO,GAAG,IAAI;IACdC,MAAM,GAAGC,SAAS,CAACD,MAAM;EAE3B,KAAKR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGQ,MAAM,EAAER,CAAC,EAAE,EAAE;IAC3BO,OAAO,GAAGE,SAAS,CAACT,CAAC,CAAC;IACtB,IAAIO,OAAO,IAAI,IAAI,EAAE;MACnB;IACF;IAEA,KAAKH,IAAI,IAAIG,OAAO,EAAE;MACpBN,GAAG,GAAGI,MAAM,CAACD,IAAI,CAAC;MAClBF,IAAI,GAAGK,OAAO,CAACH,IAAI,CAAC;MACpB,IAAIC,MAAM,KAAKH,IAAI,EAAE;QACnB,IAAIA,IAAI,IAAIV,aAAa,CAACU,IAAI,CAAC,EAAE;UAC/BC,KAAK,GAAGF,GAAG,IAAIT,aAAa,CAACS,GAAG,CAAC,GAAGA,GAAG,GAAG,CAAC,CAAC;UAC5CI,MAAM,CAACD,IAAI,CAAC,GAAGL,KAAK,CAACI,KAAK,EAAED,IAAI,CAAC;QACnC,CAAC,MAAM,IAAI,OAAOA,IAAI,KAAK,WAAW,EAAE;UACtCG,MAAM,CAACD,IAAI,CAAC,GAAGF,IAAI;QACrB;MACF;IACF;EACF;EACA,OAAOG,MAAM;AACf;AAEA,8CAAeN,KAAK;;;;;;AC5DW;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASW,MAAMA,CAACC,CAAC,EAAEC,CAAC,EAAE;EACpB,OAAOA,CAAC,KAAKC,QAAQ,CAACF,CAAC,CAAC;AAC1B;;AAEA;AACA;AACA;AACA,SAASE,QAAQA,CAACF,CAAC,EAAE;EACnB,IAAIP,IAAI,GAAAU,OAAA,CAAUH,CAAC;EACnB,IAAIP,IAAI,KAAK,QAAQ,EAAE;IACrB,OAAOA,IAAI;EACb;EACA,IAAI,CAACO,CAAC,EAAE;IACN,OAAO,MAAM;EACf;EACA,IAAIA,CAAC,YAAYI,KAAK,EAAE;IACtB,OAAO,OAAO;EAChB;EACA,OAAO,CAAC,CAAC,CAACxB,QAAQ,CACfG,IAAI,CAACiB,CAAC,CAAC,CACPK,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CACzBC,WAAW,CAAC,CAAC;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,UAAUA,CAACC,CAAC,EAAE;EACrB,OAAOT,MAAM,CAACS,CAAC,EAAE,UAAU,CAAC;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,gBAAgBA,CAACD,CAAC,EAAE;EAC3B,IAAIE,YAAY,GAAG,qBAAqB;EACxC,IAAIC,eAAe,GAAGC,QAAQ,CAACnC,SAAS,CAACG,QAAQ,CAC9CG,IAAI,CAACP,MAAM,CAACC,SAAS,CAACC,cAAc,CAAC,CACrCmC,OAAO,CAACH,YAAY,EAAE,MAAM,CAAC,CAC7BG,OAAO,CAAC,wDAAwD,EAAE,OAAO,CAAC;EAC7E,IAAIC,UAAU,GAAGC,MAAM,CAAC,GAAG,GAAGJ,eAAe,GAAG,GAAG,CAAC;EACpD,OAAOK,QAAQ,CAACR,CAAC,CAAC,IAAIM,UAAU,CAACG,IAAI,CAACT,CAAC,CAAC;AAC1C;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASQ,QAAQA,CAACE,KAAK,EAAE;EACvB,IAAIC,IAAI,GAAAhB,OAAA,CAAUe,KAAK;EACvB,OAAOA,KAAK,IAAI,IAAI,KAAKC,IAAI,IAAI,QAAQ,IAAIA,IAAI,IAAI,UAAU,CAAC;AAClE;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,QAAQA,CAACF,KAAK,EAAE;EACvB,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,YAAYG,MAAM;AAC7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,cAAcA,CAACC,CAAC,EAAE;EACzB,OAAOC,MAAM,CAACC,QAAQ,CAACF,CAAC,CAAC;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,SAASA,CAACC,CAAC,EAAE;EACpB,OAAO,CAAC5B,MAAM,CAAC4B,CAAC,EAAE,WAAW,CAAC;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,UAAUA,CAACvC,CAAC,EAAE;EACrB,IAAI8B,IAAI,GAAGjB,QAAQ,CAACb,CAAC,CAAC;EACtB,OAAO8B,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,OAAO;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASU,OAAOA,CAACC,CAAC,EAAE;EAClB;EACA,OAAO/B,MAAM,CAAC+B,CAAC,EAAE,OAAO,CAAC,IAAI/B,MAAM,CAAC+B,CAAC,EAAE,WAAW,CAAC;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,SAASA,CAACC,CAAC,EAAE;EACpB,OAAOhB,QAAQ,CAACgB,CAAC,CAAC,IAAIjC,MAAM,CAACiC,CAAC,CAACC,IAAI,EAAE,UAAU,CAAC;AAClD;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,SAASA,CAAA,EAAG;EACnB,OAAO,OAAOC,MAAM,KAAK,WAAW;AACtC;AAEA,SAASC,MAAMA,CAAA,EAAG;EAChB,OAAO,UAAU;AACnB;;AAEA;AACA,SAASC,KAAKA,CAAA,EAAG;EACf,IAAIC,CAAC,GAAGC,WAAG,CAAC,CAAC;EACb,IAAIC,IAAI,GAAG,sCAAsC,CAAC3B,OAAO,CACvD,OAAO,EACP,UAAU4B,CAAC,EAAE;IACX,IAAIC,CAAC,GAAG,CAACJ,CAAC,GAAGK,IAAI,CAACC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC;IACzCN,CAAC,GAAGK,IAAI,CAACE,KAAK,CAACP,CAAC,GAAG,EAAE,CAAC;IACtB,OAAO,CAACG,CAAC,KAAK,GAAG,GAAGC,CAAC,GAAIA,CAAC,GAAG,GAAG,GAAI,GAAG,EAAE9D,QAAQ,CAAC,EAAE,CAAC;EACvD,CACF,CAAC;EACD,OAAO4D,IAAI;AACb;AAEA,IAAIM,MAAM,GAAG;EACXC,KAAK,EAAE,CAAC;EACRC,IAAI,EAAE,CAAC;EACPC,OAAO,EAAE,CAAC;EACVC,KAAK,EAAE,CAAC;EACRC,QAAQ,EAAE;AACZ,CAAC;AAED,SAASC,YAAYA,CAACC,GAAG,EAAE;EACzB,IAAI;IACF,IAAMC,SAAS,GAAG,IAAIC,GAAG,CAACF,GAAG,CAAC;IAC9B,IAAIC,SAAS,CAACE,QAAQ,EAAE;MACtBF,SAAS,CAACE,QAAQ,GAAGpB,MAAM,CAAC,CAAC;IAC/B;IACA,IAAIkB,SAAS,CAACG,MAAM,EAAE;MACpBH,SAAS,CAACG,MAAM,GAAGrB,MAAM,CAAC,CAAC;IAC7B;IACA,OAAOkB,SAAS,CAAC1E,QAAQ,CAAC,CAAC;EAC7B,CAAC,CAAC,OAAO8E,CAAC,EAAE;IACV,OAAOL,GAAG,CAAC,CAAC;EACd;AACF;AAEA,SAASM,WAAWA,CAACN,GAAG,EAAE;EACxB,IAAIO,YAAY,GAAGC,QAAQ,CAACR,GAAG,CAAC;EAChC,IAAI,CAACO,YAAY,EAAE;IACjB,OAAO,WAAW;EACpB;;EAEA;EACA,IAAIA,YAAY,CAACE,MAAM,KAAK,EAAE,EAAE;IAC9BF,YAAY,CAACG,MAAM,GAAGH,YAAY,CAACG,MAAM,CAAClD,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;EAC5D;EAEAwC,GAAG,GAAGO,YAAY,CAACG,MAAM,CAAClD,OAAO,CAAC,GAAG,GAAG+C,YAAY,CAACI,KAAK,EAAE,EAAE,CAAC;EAC/D,OAAOX,GAAG;AACZ;AAEA,IAAIY,eAAe,GAAG;EACpBC,UAAU,EAAE,KAAK;EACjB/E,GAAG,EAAE,CACH,QAAQ,EACR,UAAU,EACV,WAAW,EACX,UAAU,EACV,MAAM,EACN,UAAU,EACV,MAAM,EACN,MAAM,EACN,UAAU,EACV,MAAM,EACN,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,CACT;EACDgF,CAAC,EAAE;IACD1E,IAAI,EAAE,UAAU;IAChB2E,MAAM,EAAE;EACV,CAAC;EACDA,MAAM,EAAE;IACNC,MAAM,EACJ,yIAAyI;IAC3IC,KAAK,EACH;EACJ;AACF,CAAC;AAED,SAAST,QAAQA,CAACU,GAAG,EAAE;EACrB,IAAI,CAACxE,MAAM,CAACwE,GAAG,EAAE,QAAQ,CAAC,EAAE;IAC1B,OAAOC,SAAS;EAClB;EAEA,IAAIC,CAAC,GAAGR,eAAe;EACvB,IAAIS,CAAC,GAAGD,CAAC,CAACL,MAAM,CAACK,CAAC,CAACP,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC,CAACS,IAAI,CAACJ,GAAG,CAAC;EAC7D,IAAIK,GAAG,GAAG,CAAC,CAAC;EAEZ,KAAK,IAAIvF,CAAC,GAAG,CAAC,EAAEwF,CAAC,GAAGJ,CAAC,CAACtF,GAAG,CAACU,MAAM,EAAER,CAAC,GAAGwF,CAAC,EAAE,EAAExF,CAAC,EAAE;IAC5CuF,GAAG,CAACH,CAAC,CAACtF,GAAG,CAACE,CAAC,CAAC,CAAC,GAAGqF,CAAC,CAACrF,CAAC,CAAC,IAAI,EAAE;EAC5B;EAEAuF,GAAG,CAACH,CAAC,CAACN,CAAC,CAAC1E,IAAI,CAAC,GAAG,CAAC,CAAC;EAClBmF,GAAG,CAACH,CAAC,CAACtF,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC0B,OAAO,CAAC4D,CAAC,CAACN,CAAC,CAACC,MAAM,EAAE,UAAUU,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE;IACvD,IAAID,EAAE,EAAE;MACNH,GAAG,CAACH,CAAC,CAACN,CAAC,CAAC1E,IAAI,CAAC,CAACsF,EAAE,CAAC,GAAGC,EAAE;IACxB;EACF,CAAC,CAAC;EAEF,OAAOJ,GAAG;AACZ;AAEA,SAASK,6BAA6BA,CAACC,WAAW,EAAEC,OAAO,EAAEC,MAAM,EAAE;EACnEA,MAAM,GAAGA,MAAM,IAAI,CAAC,CAAC;EACrBA,MAAM,CAACC,YAAY,GAAGH,WAAW;EACjC,IAAII,WAAW,GAAG,EAAE;EACpB,IAAIC,CAAC;EACL,KAAKA,CAAC,IAAIH,MAAM,EAAE;IAChB,IAAI5G,MAAM,CAACC,SAAS,CAACC,cAAc,CAACK,IAAI,CAACqG,MAAM,EAAEG,CAAC,CAAC,EAAE;MACnDD,WAAW,CAACE,IAAI,CAAC,CAACD,CAAC,EAAEH,MAAM,CAACG,CAAC,CAAC,CAAC,CAACE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C;EACF;EACA,IAAIzB,KAAK,GAAG,GAAG,GAAGsB,WAAW,CAACI,IAAI,CAAC,CAAC,CAACD,IAAI,CAAC,GAAG,CAAC;EAE9CN,OAAO,GAAGA,OAAO,IAAI,CAAC,CAAC;EACvBA,OAAO,CAACQ,IAAI,GAAGR,OAAO,CAACQ,IAAI,IAAI,EAAE;EACjC,IAAIC,EAAE,GAAGT,OAAO,CAACQ,IAAI,CAACE,OAAO,CAAC,GAAG,CAAC;EAClC,IAAIC,CAAC,GAAGX,OAAO,CAACQ,IAAI,CAACE,OAAO,CAAC,GAAG,CAAC;EACjC,IAAI7D,CAAC;EACL,IAAI4D,EAAE,KAAK,CAAC,CAAC,KAAKE,CAAC,KAAK,CAAC,CAAC,IAAIA,CAAC,GAAGF,EAAE,CAAC,EAAE;IACrC5D,CAAC,GAAGmD,OAAO,CAACQ,IAAI;IAChBR,OAAO,CAACQ,IAAI,GAAG3D,CAAC,CAAC+D,SAAS,CAAC,CAAC,EAAEH,EAAE,CAAC,GAAG5B,KAAK,GAAG,GAAG,GAAGhC,CAAC,CAAC+D,SAAS,CAACH,EAAE,GAAG,CAAC,CAAC;EACvE,CAAC,MAAM;IACL,IAAIE,CAAC,KAAK,CAAC,CAAC,EAAE;MACZ9D,CAAC,GAAGmD,OAAO,CAACQ,IAAI;MAChBR,OAAO,CAACQ,IAAI,GAAG3D,CAAC,CAAC+D,SAAS,CAAC,CAAC,EAAED,CAAC,CAAC,GAAG9B,KAAK,GAAGhC,CAAC,CAAC+D,SAAS,CAACD,CAAC,CAAC;IAC3D,CAAC,MAAM;MACLX,OAAO,CAACQ,IAAI,GAAGR,OAAO,CAACQ,IAAI,GAAG3B,KAAK;IACrC;EACF;AACF;AAEA,SAASgC,SAASA,CAACrE,CAAC,EAAEsE,QAAQ,EAAE;EAC9BA,QAAQ,GAAGA,QAAQ,IAAItE,CAAC,CAACsE,QAAQ;EACjC,IAAI,CAACA,QAAQ,IAAItE,CAAC,CAACuE,IAAI,EAAE;IACvB,IAAIvE,CAAC,CAACuE,IAAI,KAAK,EAAE,EAAE;MACjBD,QAAQ,GAAG,OAAO;IACpB,CAAC,MAAM,IAAItE,CAAC,CAACuE,IAAI,KAAK,GAAG,EAAE;MACzBD,QAAQ,GAAG,QAAQ;IACrB;EACF;EACAA,QAAQ,GAAGA,QAAQ,IAAI,QAAQ;EAE/B,IAAI,CAACtE,CAAC,CAACwE,QAAQ,EAAE;IACf,OAAO,IAAI;EACb;EACA,IAAIzG,MAAM,GAAGuG,QAAQ,GAAG,IAAI,GAAGtE,CAAC,CAACwE,QAAQ;EACzC,IAAIxE,CAAC,CAACuE,IAAI,EAAE;IACVxG,MAAM,GAAGA,MAAM,GAAG,GAAG,GAAGiC,CAAC,CAACuE,IAAI;EAChC;EACA,IAAIvE,CAAC,CAACgE,IAAI,EAAE;IACVjG,MAAM,GAAGA,MAAM,GAAGiC,CAAC,CAACgE,IAAI;EAC1B;EACA,OAAOjG,MAAM;AACf;AAEA,SAAS0G,SAASA,CAACtH,GAAG,EAAEuH,MAAM,EAAE;EAC9B,IAAInF,KAAK,EAAEgC,KAAK;EAChB,IAAI;IACFhC,KAAK,GAAGoF,IAAI,CAACF,SAAS,CAACtH,GAAG,CAAC;EAC7B,CAAC,CAAC,OAAOyH,SAAS,EAAE;IAClB,IAAIF,MAAM,IAAI9F,UAAU,CAAC8F,MAAM,CAAC,EAAE;MAChC,IAAI;QACFnF,KAAK,GAAGmF,MAAM,CAACvH,GAAG,CAAC;MACrB,CAAC,CAAC,OAAO0H,WAAW,EAAE;QACpBtD,KAAK,GAAGsD,WAAW;MACrB;IACF,CAAC,MAAM;MACLtD,KAAK,GAAGqD,SAAS;IACnB;EACF;EACA,OAAO;IAAErD,KAAK,EAAEA,KAAK;IAAEhC,KAAK,EAAEA;EAAM,CAAC;AACvC;AAEA,SAASuF,WAAWA,CAACC,MAAM,EAAE;EAC3B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA,IAAIC,KAAK,GAAG,CAAC;EACb,IAAI9G,MAAM,GAAG6G,MAAM,CAAC7G,MAAM;EAE1B,KAAK,IAAIR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGQ,MAAM,EAAER,CAAC,EAAE,EAAE;IAC/B,IAAIuH,IAAI,GAAGF,MAAM,CAACG,UAAU,CAACxH,CAAC,CAAC;IAC/B,IAAIuH,IAAI,GAAG,GAAG,EAAE;MACd;MACAD,KAAK,GAAGA,KAAK,GAAG,CAAC;IACnB,CAAC,MAAM,IAAIC,IAAI,GAAG,IAAI,EAAE;MACtB;MACAD,KAAK,GAAGA,KAAK,GAAG,CAAC;IACnB,CAAC,MAAM,IAAIC,IAAI,GAAG,KAAK,EAAE;MACvB;MACAD,KAAK,GAAGA,KAAK,GAAG,CAAC;IACnB;EACF;EAEA,OAAOA,KAAK;AACd;AAEA,SAASG,SAASA,CAACC,CAAC,EAAE;EACpB,IAAI7F,KAAK,EAAEgC,KAAK;EAChB,IAAI;IACFhC,KAAK,GAAGoF,IAAI,CAACU,KAAK,CAACD,CAAC,CAAC;EACvB,CAAC,CAAC,OAAOjF,CAAC,EAAE;IACVoB,KAAK,GAAGpB,CAAC;EACX;EACA,OAAO;IAAEoB,KAAK,EAAEA,KAAK;IAAEhC,KAAK,EAAEA;EAAM,CAAC;AACvC;AAEA,SAAS+F,sBAAsBA,CAC7BC,OAAO,EACP7D,GAAG,EACH8D,MAAM,EACNC,KAAK,EACLlE,KAAK,EACLmE,IAAI,EACJC,aAAa,EACbC,WAAW,EACX;EACA,IAAIC,QAAQ,GAAG;IACbnE,GAAG,EAAEA,GAAG,IAAI,EAAE;IACdoE,IAAI,EAAEN,MAAM;IACZO,MAAM,EAAEN;EACV,CAAC;EACDI,QAAQ,CAACG,IAAI,GAAGJ,WAAW,CAACK,iBAAiB,CAACJ,QAAQ,CAACnE,GAAG,EAAEmE,QAAQ,CAACC,IAAI,CAAC;EAC1ED,QAAQ,CAACK,OAAO,GAAGN,WAAW,CAACO,aAAa,CAACN,QAAQ,CAACnE,GAAG,EAAEmE,QAAQ,CAACC,IAAI,CAAC;EACzE,IAAIM,IAAI,GACN,OAAOC,QAAQ,KAAK,WAAW,IAC/BA,QAAQ,IACRA,QAAQ,CAACR,QAAQ,IACjBQ,QAAQ,CAACR,QAAQ,CAACO,IAAI;EACxB,IAAIE,SAAS,GACX,OAAO9F,MAAM,KAAK,WAAW,IAC7BA,MAAM,IACNA,MAAM,CAAC+F,SAAS,IAChB/F,MAAM,CAAC+F,SAAS,CAACC,SAAS;EAC5B,OAAO;IACLd,IAAI,EAAEA,IAAI;IACVH,OAAO,EAAEhE,KAAK,GAAG7B,MAAM,CAAC6B,KAAK,CAAC,GAAGgE,OAAO,IAAII,aAAa;IACzDjE,GAAG,EAAE0E,IAAI;IACTK,KAAK,EAAE,CAACZ,QAAQ,CAAC;IACjBS,SAAS,EAAEA;EACb,CAAC;AACH;AAEA,SAASI,YAAYA,CAACC,MAAM,EAAE9H,CAAC,EAAE;EAC/B,OAAO,UAAU+H,GAAG,EAAEC,IAAI,EAAE;IAC1B,IAAI;MACFhI,CAAC,CAAC+H,GAAG,EAAEC,IAAI,CAAC;IACd,CAAC,CAAC,OAAO1G,CAAC,EAAE;MACVwG,MAAM,CAACpF,KAAK,CAACpB,CAAC,CAAC;IACjB;EACF,CAAC;AACH;AAEA,SAAS2G,gBAAgBA,CAAC3J,GAAG,EAAE;EAC7B,IAAI4J,IAAI,GAAG,CAAC5J,GAAG,CAAC;EAEhB,SAASU,KAAKA,CAACV,GAAG,EAAE4J,IAAI,EAAE;IACxB,IAAIxH,KAAK;MACPzB,IAAI;MACJkJ,OAAO;MACPjJ,MAAM,GAAG,CAAC,CAAC;IAEb,IAAI;MACF,KAAKD,IAAI,IAAIX,GAAG,EAAE;QAChBoC,KAAK,GAAGpC,GAAG,CAACW,IAAI,CAAC;QAEjB,IAAIyB,KAAK,KAAKnB,MAAM,CAACmB,KAAK,EAAE,QAAQ,CAAC,IAAInB,MAAM,CAACmB,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE;UAChE,IAAIwH,IAAI,CAACE,QAAQ,CAAC1H,KAAK,CAAC,EAAE;YACxBxB,MAAM,CAACD,IAAI,CAAC,GAAG,8BAA8B,GAAGS,QAAQ,CAACgB,KAAK,CAAC;UACjE,CAAC,MAAM;YACLyH,OAAO,GAAGD,IAAI,CAACG,KAAK,CAAC,CAAC;YACtBF,OAAO,CAACnD,IAAI,CAACtE,KAAK,CAAC;YACnBxB,MAAM,CAACD,IAAI,CAAC,GAAGD,KAAK,CAAC0B,KAAK,EAAEyH,OAAO,CAAC;UACtC;UACA;QACF;QAEAjJ,MAAM,CAACD,IAAI,CAAC,GAAGyB,KAAK;MACtB;IACF,CAAC,CAAC,OAAOY,CAAC,EAAE;MACVpC,MAAM,GAAG,8BAA8B,GAAGoC,CAAC,CAACoF,OAAO;IACrD;IACA,OAAOxH,MAAM;EACf;EACA,OAAOF,KAAK,CAACV,GAAG,EAAE4J,IAAI,CAAC;AACzB;AAEA,SAASI,UAAUA,CAACC,IAAI,EAAET,MAAM,EAAEU,QAAQ,EAAEC,WAAW,EAAEC,aAAa,EAAE;EACtE,IAAIhC,OAAO,EAAEqB,GAAG,EAAEY,MAAM,EAAEC,QAAQ,EAAEC,OAAO;EAC3C,IAAIC,GAAG;EACP,IAAIC,SAAS,GAAG,EAAE;EAClB,IAAIC,UAAU,GAAG,CAAC,CAAC;EACnB,IAAIC,QAAQ,GAAG,EAAE;EAEjB,KAAK,IAAIpK,CAAC,GAAG,CAAC,EAAEwF,CAAC,GAAGkE,IAAI,CAAClJ,MAAM,EAAER,CAAC,GAAGwF,CAAC,EAAE,EAAExF,CAAC,EAAE;IAC3CiK,GAAG,GAAGP,IAAI,CAAC1J,CAAC,CAAC;IAEb,IAAIqK,GAAG,GAAGxJ,QAAQ,CAACoJ,GAAG,CAAC;IACvBG,QAAQ,CAACjE,IAAI,CAACkE,GAAG,CAAC;IAClB,QAAQA,GAAG;MACT,KAAK,WAAW;QACd;MACF,KAAK,QAAQ;QACXxC,OAAO,GAAGqC,SAAS,CAAC/D,IAAI,CAAC8D,GAAG,CAAC,GAAIpC,OAAO,GAAGoC,GAAI;QAC/C;MACF,KAAK,UAAU;QACbF,QAAQ,GAAGf,YAAY,CAACC,MAAM,EAAEgB,GAAG,CAAC;QACpC;MACF,KAAK,MAAM;QACTC,SAAS,CAAC/D,IAAI,CAAC8D,GAAG,CAAC;QACnB;MACF,KAAK,OAAO;MACZ,KAAK,cAAc;MACnB,KAAK,WAAW;QAAE;QAChBf,GAAG,GAAGgB,SAAS,CAAC/D,IAAI,CAAC8D,GAAG,CAAC,GAAIf,GAAG,GAAGe,GAAI;QACvC;MACF,KAAK,QAAQ;MACb,KAAK,OAAO;QACV,IACEA,GAAG,YAAYlJ,KAAK,IACnB,OAAOuJ,YAAY,KAAK,WAAW,IAAIL,GAAG,YAAYK,YAAa,EACpE;UACApB,GAAG,GAAGgB,SAAS,CAAC/D,IAAI,CAAC8D,GAAG,CAAC,GAAIf,GAAG,GAAGe,GAAI;UACvC;QACF;QACA,IAAIL,WAAW,IAAIS,GAAG,KAAK,QAAQ,IAAI,CAACL,OAAO,EAAE;UAC/C,KAAK,IAAIO,CAAC,GAAG,CAAC,EAAEC,GAAG,GAAGZ,WAAW,CAACpJ,MAAM,EAAE+J,CAAC,GAAGC,GAAG,EAAE,EAAED,CAAC,EAAE;YACtD,IAAIN,GAAG,CAACL,WAAW,CAACW,CAAC,CAAC,CAAC,KAAKpF,SAAS,EAAE;cACrC6E,OAAO,GAAGC,GAAG;cACb;YACF;UACF;UACA,IAAID,OAAO,EAAE;YACX;UACF;QACF;QACAF,MAAM,GAAGI,SAAS,CAAC/D,IAAI,CAAC8D,GAAG,CAAC,GAAIH,MAAM,GAAGG,GAAI;QAC7C;MACF;QACE,IACEA,GAAG,YAAYlJ,KAAK,IACnB,OAAOuJ,YAAY,KAAK,WAAW,IAAIL,GAAG,YAAYK,YAAa,EACpE;UACApB,GAAG,GAAGgB,SAAS,CAAC/D,IAAI,CAAC8D,GAAG,CAAC,GAAIf,GAAG,GAAGe,GAAI;UACvC;QACF;QACAC,SAAS,CAAC/D,IAAI,CAAC8D,GAAG,CAAC;IACvB;EACF;;EAEA;EACA,IAAIH,MAAM,EAAEA,MAAM,GAAGV,gBAAgB,CAACU,MAAM,CAAC;EAE7C,IAAII,SAAS,CAAC1J,MAAM,GAAG,CAAC,EAAE;IACxB,IAAI,CAACsJ,MAAM,EAAEA,MAAM,GAAGV,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC1CU,MAAM,CAACI,SAAS,GAAGd,gBAAgB,CAACc,SAAS,CAAC;EAChD;EAEA,IAAIO,IAAI,GAAG;IACT5C,OAAO,EAAEA,OAAO;IAChBqB,GAAG,EAAEA,GAAG;IACRY,MAAM,EAAEA,MAAM;IACdY,SAAS,EAAExH,WAAG,CAAC,CAAC;IAChB6G,QAAQ,EAAEA,QAAQ;IAClBJ,QAAQ,EAAEA,QAAQ;IAClBQ,UAAU,EAAEA,UAAU;IACtBhH,IAAI,EAAEH,KAAK,CAAC;EACd,CAAC;EAEDyH,IAAI,CAACE,IAAI,GAAGF,IAAI,CAACE,IAAI,IAAI,CAAC,CAAC;EAE3BC,iBAAiB,CAACH,IAAI,EAAEX,MAAM,CAAC;EAE/B,IAAIF,WAAW,IAAII,OAAO,EAAE;IAC1BS,IAAI,CAACT,OAAO,GAAGA,OAAO;EACxB;EACA,IAAIH,aAAa,EAAE;IACjBY,IAAI,CAACZ,aAAa,GAAGA,aAAa;EACpC;EACAY,IAAI,CAACI,aAAa,GAAGnB,IAAI;EACzBe,IAAI,CAACN,UAAU,CAACW,kBAAkB,GAAGV,QAAQ;EAC7C,OAAOK,IAAI;AACb;AAEA,SAASG,iBAAiBA,CAACH,IAAI,EAAEX,MAAM,EAAE;EACvC,IAAIA,MAAM,IAAIA,MAAM,CAACiB,KAAK,KAAK5F,SAAS,EAAE;IACxCsF,IAAI,CAACM,KAAK,GAAGjB,MAAM,CAACiB,KAAK;IACzB,OAAOjB,MAAM,CAACiB,KAAK;EACrB;EACA,IAAIjB,MAAM,IAAIA,MAAM,CAACkB,UAAU,KAAK7F,SAAS,EAAE;IAC7CsF,IAAI,CAACO,UAAU,GAAGlB,MAAM,CAACkB,UAAU;IACnC,OAAOlB,MAAM,CAACkB,UAAU;EAC1B;AACF;AAEA,SAASC,eAAeA,CAACR,IAAI,EAAES,MAAM,EAAE;EACrC,IAAIpB,MAAM,GAAGW,IAAI,CAACE,IAAI,CAACb,MAAM,IAAI,CAAC,CAAC;EACnC,IAAIqB,YAAY,GAAG,KAAK;EAExB,IAAI;IACF,KAAK,IAAInL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkL,MAAM,CAAC1K,MAAM,EAAE,EAAER,CAAC,EAAE;MACtC,IAAIkL,MAAM,CAAClL,CAAC,CAAC,CAACX,cAAc,CAAC,gBAAgB,CAAC,EAAE;QAC9CyK,MAAM,GAAG/J,SAAK,CAAC+J,MAAM,EAAEV,gBAAgB,CAAC8B,MAAM,CAAClL,CAAC,CAAC,CAACoL,cAAc,CAAC,CAAC;QAClED,YAAY,GAAG,IAAI;MACrB;IACF;;IAEA;IACA,IAAIA,YAAY,EAAE;MAChBV,IAAI,CAACE,IAAI,CAACb,MAAM,GAAGA,MAAM;IAC3B;EACF,CAAC,CAAC,OAAOrH,CAAC,EAAE;IACVgI,IAAI,CAACN,UAAU,CAACkB,aAAa,GAAG,UAAU,GAAG5I,CAAC,CAACoF,OAAO;EACxD;AACF;AAEA,IAAIyD,eAAe,GAAG,CACpB,KAAK,EACL,SAAS,EACT,KAAK,EACL,YAAY,EACZ,OAAO,EACP,QAAQ,CACT;AACD,IAAIC,gBAAgB,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;AAExE,SAASC,aAAaA,CAACC,GAAG,EAAEC,GAAG,EAAE;EAC/B,KAAK,IAAIxF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGuF,GAAG,CAACjL,MAAM,EAAE,EAAE0F,CAAC,EAAE;IACnC,IAAIuF,GAAG,CAACvF,CAAC,CAAC,KAAKwF,GAAG,EAAE;MAClB,OAAO,IAAI;IACb;EACF;EAEA,OAAO,KAAK;AACd;AAEA,SAASC,oBAAoBA,CAACjC,IAAI,EAAE;EAClC,IAAI5H,IAAI,EAAE8J,QAAQ,EAAEb,KAAK;EACzB,IAAId,GAAG;EAEP,KAAK,IAAIjK,CAAC,GAAG,CAAC,EAAEwF,CAAC,GAAGkE,IAAI,CAAClJ,MAAM,EAAER,CAAC,GAAGwF,CAAC,EAAE,EAAExF,CAAC,EAAE;IAC3CiK,GAAG,GAAGP,IAAI,CAAC1J,CAAC,CAAC;IAEb,IAAIqK,GAAG,GAAGxJ,QAAQ,CAACoJ,GAAG,CAAC;IACvB,QAAQI,GAAG;MACT,KAAK,QAAQ;QACX,IAAI,CAACvI,IAAI,IAAI0J,aAAa,CAACF,eAAe,EAAErB,GAAG,CAAC,EAAE;UAChDnI,IAAI,GAAGmI,GAAG;QACZ,CAAC,MAAM,IAAI,CAACc,KAAK,IAAIS,aAAa,CAACD,gBAAgB,EAAEtB,GAAG,CAAC,EAAE;UACzDc,KAAK,GAAGd,GAAG;QACb;QACA;MACF,KAAK,QAAQ;QACX2B,QAAQ,GAAG3B,GAAG;QACd;MACF;QACE;IACJ;EACF;EACA,IAAI4B,KAAK,GAAG;IACV/J,IAAI,EAAEA,IAAI,IAAI,QAAQ;IACtB8J,QAAQ,EAAEA,QAAQ,IAAI,CAAC,CAAC;IACxBb,KAAK,EAAEA;EACT,CAAC;EAED,OAAOc,KAAK;AACd;AAEA,SAASC,iBAAiBA,CAACC,QAAQ,EAAEC,UAAU,EAAE;EAC/CD,QAAQ,CAACC,UAAU,GAAGD,QAAQ,CAACC,UAAU,IAAI,EAAE;EAAC,IAAAC,SAAA,GAAAC,0BAAA,CAChCF,UAAU;IAAAG,KAAA;EAAA;IAA1B,KAAAF,SAAA,CAAAvE,CAAA,MAAAyE,KAAA,GAAAF,SAAA,CAAA/J,CAAA,IAAAkK,IAAA,GAA4B;MAAA,IAAjBC,CAAC,GAAAF,KAAA,CAAAtK,KAAA;MACV,IAAIwK,CAAC,CAACxK,KAAK,KAAKsD,SAAS,EAAE;QACzB;MACF;MACA4G,QAAQ,CAACC,UAAU,CAAC7F,IAAI,CAACkG,CAAC,CAAC;IAC7B;EAAC,SAAAnD,GAAA;IAAA+C,SAAA,CAAAxJ,CAAA,CAAAyG,GAAA;EAAA;IAAA+C,SAAA,CAAA9K,CAAA;EAAA;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASmL,GAAGA,CAAC7M,GAAG,EAAE6G,IAAI,EAAE;EACtB,IAAI,CAAC7G,GAAG,EAAE;IACR,OAAO0F,SAAS;EAClB;EACA,IAAIoH,IAAI,GAAGjG,IAAI,CAACkG,KAAK,CAAC,GAAG,CAAC;EAC1B,IAAInM,MAAM,GAAGZ,GAAG;EAChB,IAAI;IACF,KAAK,IAAIO,CAAC,GAAG,CAAC,EAAEwK,GAAG,GAAG+B,IAAI,CAAC/L,MAAM,EAAER,CAAC,GAAGwK,GAAG,EAAE,EAAExK,CAAC,EAAE;MAC/CK,MAAM,GAAGA,MAAM,CAACkM,IAAI,CAACvM,CAAC,CAAC,CAAC;IAC1B;EACF,CAAC,CAAC,OAAOyC,CAAC,EAAE;IACVpC,MAAM,GAAG8E,SAAS;EACpB;EACA,OAAO9E,MAAM;AACf;AAEA,SAASoM,GAAGA,CAAChN,GAAG,EAAE6G,IAAI,EAAEzE,KAAK,EAAE;EAC7B,IAAI,CAACpC,GAAG,EAAE;IACR;EACF;;EAEA;EACAN,MAAM,CAACuN,cAAc,CAACjN,GAAG,EAAE,IAAI,CAAC;EAEhC,IAAI8M,IAAI,GAAGjG,IAAI,CAACkG,KAAK,CAAC,GAAG,CAAC;EAC1B,IAAIhC,GAAG,GAAG+B,IAAI,CAAC/L,MAAM;EACrB,IAAIgK,GAAG,GAAG,CAAC,EAAE;IACX;EACF;EACA,IAAIA,GAAG,KAAK,CAAC,EAAE;IACb/K,GAAG,CAAC8M,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG1K,KAAK;IACpB;EACF;EACA,IAAI;IACF,IAAI8K,IAAI,GAAGlN,GAAG,CAAC8M,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAIK,WAAW,GAAGD,IAAI;IACtB,KAAK,IAAI3M,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwK,GAAG,GAAG,CAAC,EAAE,EAAExK,CAAC,EAAE;MAChC2M,IAAI,CAACJ,IAAI,CAACvM,CAAC,CAAC,CAAC,GAAG2M,IAAI,CAACJ,IAAI,CAACvM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;MACnC2M,IAAI,GAAGA,IAAI,CAACJ,IAAI,CAACvM,CAAC,CAAC,CAAC;IACtB;IACA2M,IAAI,CAACJ,IAAI,CAAC/B,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG3I,KAAK;IAC3BpC,GAAG,CAAC8M,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGK,WAAW;EAC5B,CAAC,CAAC,OAAOnK,CAAC,EAAE;IACV;EACF;AACF;AAEA,SAASoK,kBAAkBA,CAACnD,IAAI,EAAE;EAChC,IAAI1J,CAAC,EAAEwK,GAAG,EAAEP,GAAG;EACf,IAAI5J,MAAM,GAAG,EAAE;EACf,KAAKL,CAAC,GAAG,CAAC,EAAEwK,GAAG,GAAGd,IAAI,CAAClJ,MAAM,EAAER,CAAC,GAAGwK,GAAG,EAAE,EAAExK,CAAC,EAAE;IAC3CiK,GAAG,GAAGP,IAAI,CAAC1J,CAAC,CAAC;IACb,QAAQa,QAAQ,CAACoJ,GAAG,CAAC;MACnB,KAAK,QAAQ;QACXA,GAAG,GAAGlD,SAAS,CAACkD,GAAG,CAAC;QACpBA,GAAG,GAAGA,GAAG,CAACpG,KAAK,IAAIoG,GAAG,CAACpI,KAAK;QAC5B,IAAIoI,GAAG,CAACzJ,MAAM,GAAG,GAAG,EAAE;UACpByJ,GAAG,GAAGA,GAAG,CAAC6C,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK;QAClC;QACA;MACF,KAAK,MAAM;QACT7C,GAAG,GAAG,MAAM;QACZ;MACF,KAAK,WAAW;QACdA,GAAG,GAAG,WAAW;QACjB;MACF,KAAK,QAAQ;QACXA,GAAG,GAAGA,GAAG,CAAC1K,QAAQ,CAAC,CAAC;QACpB;IACJ;IACAc,MAAM,CAAC8F,IAAI,CAAC8D,GAAG,CAAC;EAClB;EACA,OAAO5J,MAAM,CAAC+F,IAAI,CAAC,GAAG,CAAC;AACzB;AAEA,SAASlD,WAAGA,CAAA,EAAG;EACb,IAAI6J,IAAI,CAAC7J,GAAG,EAAE;IACZ,OAAO,CAAC6J,IAAI,CAAC7J,GAAG,CAAC,CAAC;EACpB;EACA,OAAO,CAAC,IAAI6J,IAAI,CAAC,CAAC;AACpB;AAEA,SAASC,QAAQA,CAACC,WAAW,EAAEC,SAAS,EAAE;EACxC,IAAI,CAACD,WAAW,IAAI,CAACA,WAAW,CAAC,SAAS,CAAC,IAAIC,SAAS,KAAK,IAAI,EAAE;IACjE;EACF;EACA,IAAIC,KAAK,GAAGF,WAAW,CAAC,SAAS,CAAC;EAClC,IAAI,CAACC,SAAS,EAAE;IACdC,KAAK,GAAG,IAAI;EACd,CAAC,MAAM;IACL,IAAI;MACF,IAAIC,KAAK;MACT,IAAID,KAAK,CAAC3G,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;QAC7B4G,KAAK,GAAGD,KAAK,CAACX,KAAK,CAAC,GAAG,CAAC;QACxBY,KAAK,CAACC,GAAG,CAAC,CAAC;QACXD,KAAK,CAACjH,IAAI,CAAC,GAAG,CAAC;QACfgH,KAAK,GAAGC,KAAK,CAAChH,IAAI,CAAC,GAAG,CAAC;MACzB,CAAC,MAAM,IAAI+G,KAAK,CAAC3G,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;QACpC4G,KAAK,GAAGD,KAAK,CAACX,KAAK,CAAC,GAAG,CAAC;QACxB,IAAIY,KAAK,CAAC5M,MAAM,GAAG,CAAC,EAAE;UACpB,IAAI8M,SAAS,GAAGF,KAAK,CAAC5D,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;UACjC,IAAI+D,QAAQ,GAAGD,SAAS,CAAC,CAAC,CAAC,CAAC9G,OAAO,CAAC,GAAG,CAAC;UACxC,IAAI+G,QAAQ,KAAK,CAAC,CAAC,EAAE;YACnBD,SAAS,CAAC,CAAC,CAAC,GAAGA,SAAS,CAAC,CAAC,CAAC,CAAC5G,SAAS,CAAC,CAAC,EAAE6G,QAAQ,CAAC;UACpD;UACA,IAAIC,QAAQ,GAAG,0BAA0B;UACzCL,KAAK,GAAGG,SAAS,CAACG,MAAM,CAACD,QAAQ,CAAC,CAACpH,IAAI,CAAC,GAAG,CAAC;QAC9C;MACF,CAAC,MAAM;QACL+G,KAAK,GAAG,IAAI;MACd;IACF,CAAC,CAAC,OAAO1K,CAAC,EAAE;MACV0K,KAAK,GAAG,IAAI;IACd;EACF;EACAF,WAAW,CAAC,SAAS,CAAC,GAAGE,KAAK;AAChC;AAEA,SAASO,aAAaA,CAACnN,OAAO,EAAEoN,KAAK,EAAEC,OAAO,EAAE3E,MAAM,EAAE;EACtD,IAAI5I,MAAM,GAAGN,SAAK,CAACQ,OAAO,EAAEoN,KAAK,EAAEC,OAAO,CAAC;EAC3CvN,MAAM,GAAGwN,uBAAuB,CAACxN,MAAM,EAAE4I,MAAM,CAAC;EAChD,IAAI,CAAC0E,KAAK,IAAIA,KAAK,CAACG,oBAAoB,EAAE;IACxC,OAAOzN,MAAM;EACf;EACA,IAAIsN,KAAK,CAACI,WAAW,EAAE;IACrB1N,MAAM,CAAC0N,WAAW,GAAG,CAACxN,OAAO,CAACwN,WAAW,IAAI,EAAE,EAAEN,MAAM,CAACE,KAAK,CAACI,WAAW,CAAC;EAC5E;EACA,OAAO1N,MAAM;AACf;AAEA,SAASwN,uBAAuBA,CAAC/H,OAAO,EAAEmD,MAAM,EAAE;EAChD,IAAInD,OAAO,CAACkI,aAAa,IAAI,CAAClI,OAAO,CAACmI,YAAY,EAAE;IAClDnI,OAAO,CAACmI,YAAY,GAAGnI,OAAO,CAACkI,aAAa;IAC5ClI,OAAO,CAACkI,aAAa,GAAG7I,SAAS;IACjC8D,MAAM,IAAIA,MAAM,CAACiF,GAAG,CAAC,gDAAgD,CAAC;EACxE;EACA,IAAIpI,OAAO,CAACqI,aAAa,IAAI,CAACrI,OAAO,CAACsI,aAAa,EAAE;IACnDtI,OAAO,CAACsI,aAAa,GAAGtI,OAAO,CAACqI,aAAa;IAC7CrI,OAAO,CAACqI,aAAa,GAAGhJ,SAAS;IACjC8D,MAAM,IAAIA,MAAM,CAACiF,GAAG,CAAC,iDAAiD,CAAC;EACzE;EACA,OAAOpI,OAAO;AAChB;;;ACtxBkC;;AAElC;AACA;AACA;AACA;AACA;AACA,SAASuI,WAAWA,CAACvI,OAAO,EAAE;EAC5B,IAAI,CAACwI,SAAS,GAAGjK,WAAK,CAAC,CAAC;EACxB,IAAI,CAACkK,OAAO,GAAG,CAAC;EAChB,IAAI,CAACC,aAAa,GAAG,CAAC;EACtB,IAAI,CAACC,QAAQ,GAAG,IAAI;EACpB,IAAI,CAACC,eAAe,GAAG,CAAC,CAAC;EACzB,IAAI,CAACC,eAAe,CAAC7I,OAAO,CAAC;AAC/B;AAEAuI,WAAW,CAACO,cAAc,GAAG;EAC3BN,SAAS,EAAEjK,WAAK,CAAC,CAAC;EAClBwK,QAAQ,EAAE1J,SAAS;EACnB2J,cAAc,EAAE3J;AAClB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAkJ,WAAW,CAACjP,SAAS,CAACuP,eAAe,GAAG,UAAU7I,OAAO,EAAE;EACzD,IAAIA,OAAO,CAACwI,SAAS,KAAKnJ,SAAS,EAAE;IACnCkJ,WAAW,CAACO,cAAc,CAACN,SAAS,GAAGxI,OAAO,CAACwI,SAAS;EAC1D;EACA,IAAIxI,OAAO,CAAC+I,QAAQ,KAAK1J,SAAS,EAAE;IAClCkJ,WAAW,CAACO,cAAc,CAACC,QAAQ,GAAG/I,OAAO,CAAC+I,QAAQ;EACxD;EACA,IAAI/I,OAAO,CAACgJ,cAAc,KAAK3J,SAAS,EAAE;IACxCkJ,WAAW,CAACO,cAAc,CAACE,cAAc,GAAGhJ,OAAO,CAACgJ,cAAc;EACpE;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAT,WAAW,CAACjP,SAAS,CAAC2P,UAAU,GAAG,UAAUtE,IAAI,EAAEvH,GAAG,EAAE;EACtDA,GAAG,GAAGA,GAAG,IAAImB,WAAK,CAAC,CAAC;EACpB,IAAI2K,WAAW,GAAG9L,GAAG,GAAG,IAAI,CAACoL,SAAS;EACtC,IAAIU,WAAW,GAAG,CAAC,IAAIA,WAAW,IAAI,KAAK,EAAE;IAC3C,IAAI,CAACV,SAAS,GAAGpL,GAAG;IACpB,IAAI,CAACsL,aAAa,GAAG,CAAC;EACxB;EAEA,IAAIS,eAAe,GAAGZ,WAAW,CAACO,cAAc,CAACC,QAAQ;EACzD,IAAIK,qBAAqB,GAAGb,WAAW,CAACO,cAAc,CAACE,cAAc;EAErE,IAAIK,SAAS,CAAC1E,IAAI,EAAEwE,eAAe,EAAE,IAAI,CAACV,OAAO,CAAC,EAAE;IAClD,OAAOa,eAAe,CACpB,IAAI,CAACX,QAAQ,EACb,IAAI,CAACC,eAAe,EACpBO,eAAe,GAAG,oBAAoB,EACtC,KACF,CAAC;EACH,CAAC,MAAM,IAAIE,SAAS,CAAC1E,IAAI,EAAEyE,qBAAqB,EAAE,IAAI,CAACV,aAAa,CAAC,EAAE;IACrE,OAAOY,eAAe,CACpB,IAAI,CAACX,QAAQ,EACb,IAAI,CAACC,eAAe,EACpBQ,qBAAqB,GAAG,2BAA2B,EACnD,KACF,CAAC;EACH;EACA,IAAI,CAACX,OAAO,EAAE;EACd,IAAI,CAACC,aAAa,EAAE;EAEpB,IAAIO,UAAU,GAAG,CAACI,SAAS,CAAC1E,IAAI,EAAEwE,eAAe,EAAE,IAAI,CAACV,OAAO,CAAC;EAChE,IAAIc,SAAS,GAAGN,UAAU;EAC1BA,UAAU,GACRA,UAAU,IAAI,CAACI,SAAS,CAAC1E,IAAI,EAAEyE,qBAAqB,EAAE,IAAI,CAACV,aAAa,CAAC;EAC3E,OAAOY,eAAe,CACpB,IAAI,CAACX,QAAQ,EACb,IAAI,CAACC,eAAe,EACpB,IAAI,EACJK,UAAU,EACVE,eAAe,EACfC,qBAAqB,EACrBG,SACF,CAAC;AACH,CAAC;AAEDhB,WAAW,CAACjP,SAAS,CAACkQ,kBAAkB,GAAG,UAAUb,QAAQ,EAAE3I,OAAO,EAAE;EACtE,IAAI,CAAC2I,QAAQ,GAAGA,QAAQ;EACxB,IAAI,CAACC,eAAe,GAAG5I,OAAO;AAChC,CAAC;;AAED;;AAEA,SAASqJ,SAASA,CAAC1E,IAAI,EAAE8E,KAAK,EAAEhB,OAAO,EAAE;EACvC,OAAO,CAAC9D,IAAI,CAAC+E,eAAe,IAAID,KAAK,IAAI,CAAC,IAAIhB,OAAO,GAAGgB,KAAK;AAC/D;AAEA,SAASH,eAAeA,CACtBX,QAAQ,EACR3I,OAAO,EACPjC,KAAK,EACLkL,UAAU,EACVE,eAAe,EACfQ,WAAW,EACXJ,SAAS,EACT;EACA,IAAIzB,OAAO,GAAG,IAAI;EAClB,IAAI/J,KAAK,EAAE;IACTA,KAAK,GAAG,IAAI9C,KAAK,CAAC8C,KAAK,CAAC;EAC1B;EACA,IAAI,CAACA,KAAK,IAAI,CAACkL,UAAU,EAAE;IACzBnB,OAAO,GAAG8B,gBAAgB,CACxBjB,QAAQ,EACR3I,OAAO,EACPmJ,eAAe,EACfQ,WAAW,EACXJ,SACF,CAAC;EACH;EACA,OAAO;IAAExL,KAAK,EAAEA,KAAK;IAAEkL,UAAU,EAAEA,UAAU;IAAEnB,OAAO,EAAEA;EAAQ,CAAC;AACnE;AAEA,SAAS8B,gBAAgBA,CACvBjB,QAAQ,EACR3I,OAAO,EACPmJ,eAAe,EACfQ,WAAW,EACXJ,SAAS,EACT;EACA,IAAIM,WAAW,GACb7J,OAAO,CAAC6J,WAAW,IAAK7J,OAAO,CAAC8H,OAAO,IAAI9H,OAAO,CAAC8H,OAAO,CAAC+B,WAAY;EACzE,IAAIC,GAAG;EACP,IAAIP,SAAS,EAAE;IACbO,GAAG,GAAG,8DAA8D;EACtE,CAAC,MAAM;IACLA,GAAG,GAAG,qDAAqD;EAC7D;EACA,IAAInF,IAAI,GAAG;IACToF,IAAI,EAAE;MACJhI,OAAO,EAAE;QACPgI,IAAI,EAAED,GAAG;QACTE,KAAK,EAAE;UACLjB,QAAQ,EAAEI,eAAe;UACzBH,cAAc,EAAEW;QAClB;MACF;IACF,CAAC;IACDM,QAAQ,EAAE,YAAY;IACtBJ,WAAW,EAAEA,WAAW;IACxBhG,QAAQ,EAAE;MACRqG,OAAO,EACJlK,OAAO,CAAC6D,QAAQ,IAAI7D,OAAO,CAAC6D,QAAQ,CAACqG,OAAO,IAAKlK,OAAO,CAACkK;IAC9D;EACF,CAAC;EACD,IAAIvB,QAAQ,KAAK,SAAS,EAAE;IAC1BhE,IAAI,CAACgE,QAAQ,GAAG,SAAS;IACzBhE,IAAI,CAACwF,SAAS,GAAG,YAAY;IAC7BxF,IAAI,CAACd,QAAQ,CAACvJ,IAAI,GAAG,oBAAoB;EAC3C,CAAC,MAAM,IAAIqO,QAAQ,KAAK,QAAQ,EAAE;IAChChE,IAAI,CAACwF,SAAS,GAAGnK,OAAO,CAACmK,SAAS,IAAI,SAAS;IAC/CxF,IAAI,CAACd,QAAQ,CAACvJ,IAAI,GAAG0F,OAAO,CAAC6D,QAAQ,CAACvJ,IAAI;EAC5C,CAAC,MAAM,IAAIqO,QAAQ,KAAK,cAAc,EAAE;IACtChE,IAAI,CAACwF,SAAS,GAAGnK,OAAO,CAACmK,SAAS,IAAI,cAAc;IACpDxF,IAAI,CAACd,QAAQ,CAACvJ,IAAI,GAAG0F,OAAO,CAAC6D,QAAQ,CAACvJ,IAAI;EAC5C;EACA,OAAOqK,IAAI;AACb;AAEA,gDAAe4D,WAAW;;;;;;;;;ACvLQ;;AAElC;AACA;AACA;AACA;AACA;AACA;AALA,IAMM6B,KAAK;EACT;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAAAA,MAAYC,WAAW,EAAEC,GAAG,EAAEnH,MAAM,EAAEnD,OAAO,EAAEuK,MAAM,EAAE;IAAAC,eAAA,OAAAJ,KAAA;IACrD,IAAI,CAACC,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACC,GAAG,GAAGA,GAAG;IACd,IAAI,CAACnH,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACnD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACuK,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACE,UAAU,GAAG,EAAE;IACpB,IAAI,CAACC,YAAY,GAAG,EAAE;IACtB,IAAI,CAACC,eAAe,GAAG,EAAE;IACzB,IAAI,CAACC,UAAU,GAAG,EAAE;IACpB,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB,IAAI,CAACC,cAAc,GAAG,IAAI;EAC5B;;EAEA;AACF;AACA;AACA;AACA;EAJE,OAAAC,YAAA,CAAAZ,KAAA;IAAApQ,GAAA;IAAA+B,KAAA,EAKA,SAAAkP,SAASA,CAACjL,OAAO,EAAE;MAAA,IAAAkL,SAAA;MACjB,CAAAA,SAAA,OAAI,CAACZ,GAAG,cAAAY,SAAA,eAARA,SAAA,CAAUD,SAAS,CAACjL,OAAO,CAAC;MAC5B,IAAMmL,UAAU,GAAG,IAAI,CAACnL,OAAO;MAC/B,IAAI,CAACA,OAAO,GAAGzB,SAAO,CAAC4M,UAAU,EAAEnL,OAAO,CAAC;MAC3C,OAAO,IAAI;IACb;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EARE;IAAAhG,GAAA;IAAA+B,KAAA,EASA,SAAAqP,YAAYA,CAACC,SAAS,EAAE;MACtB,IAAI9M,UAAY,CAAC8M,SAAS,CAAC,EAAE;QAC3B,IAAI,CAACZ,UAAU,CAACpK,IAAI,CAACgL,SAAS,CAAC;MACjC;MACA,OAAO,IAAI;IACb;EAAC;IAAArR,GAAA;IAAA+B,KAAA,EAED,SAAAuP,cAAcA,CAAC3G,IAAI,EAAE;MACnB,IAAI,CAAC+F,YAAY,CAACrK,IAAI,CAACsE,IAAI,CAAC;IAC9B;EAAC;IAAA3K,GAAA;IAAA+B,KAAA,EAED,SAAAwP,iBAAiBA,CAAC5G,IAAI,EAAE;MACtB,IAAM6G,GAAG,GAAG,IAAI,CAACd,YAAY,CAAChK,OAAO,CAACiE,IAAI,CAAC;MAC3C,IAAI6G,GAAG,KAAK,CAAC,CAAC,EAAE;QACd,IAAI,CAACd,YAAY,CAACe,MAAM,CAACD,GAAG,EAAE,CAAC,CAAC;MAClC;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAVE;IAAAxR,GAAA;IAAA+B,KAAA,EAWA,SAAA2P,OAAOA,CAAC/G,IAAI,EAAEV,QAAQ,EAAE0H,aAAa,EAAEC,YAAY,EAAE;MAAA,IAAAC,KAAA;MACnD,IAAI,CAAC5H,QAAQ,IAAI,CAAC1F,UAAY,CAAC0F,QAAQ,CAAC,EAAE;QACxCA,QAAQ,GAAG,SAAXA,QAAQA,CAAA,EAAe;UACrB;QACF,CAAC;MACH;MACA,IAAMY,IAAI,GAAGF,IAAI,CAACE,IAAI;MACtB,IAAMiH,eAAe,GAAG,IAAI,CAACC,gBAAgB,CAAClH,IAAI,CAAC;MACnD,IAAIiH,eAAe,CAACE,IAAI,EAAE;QACxB,IAAI,CAACT,iBAAiB,CAACK,YAAY,CAAC;QACpC3H,QAAQ,CAAC6H,eAAe,CAAC1I,GAAG,CAAC;QAC7B;MACF;MACA,IAAI,CAAC6I,SAAS,CAACpH,IAAI,EAAE8G,aAAa,CAAC;MACnC,IAAI,CAACJ,iBAAiB,CAACK,YAAY,CAAC;MACpC,IAAI,CAAC,IAAI,CAAC5L,OAAO,CAACkM,QAAQ,EAAE;QAC1BjI,QAAQ,CAAC,IAAIhJ,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACxC;MACF;MAEA,IAAI,IAAI,CAACsP,MAAM,IAAI1F,IAAI,CAACkF,IAAI,EAAE;QAC5BpF,IAAI,CAACwH,QAAQ,GAAG,IAAI,CAAC5B,MAAM,CAAC6B,OAAO,CAAC,IAAI,EAAEvH,IAAI,CAACxH,IAAI,EAAE;UACnDrB,IAAI,EAAE,YAAY;UAClBiJ,KAAK,EAAEN,IAAI,CAACM;QACd,CAAC,CAAC;QAEF,IAAIN,IAAI,CAACwH,QAAQ,EAAE;UACjB5N,iBAAmB,CAACoG,IAAI,CAACE,IAAI,EAAE,CAC7B;YAAE7K,GAAG,EAAE,WAAW;YAAE+B,KAAK,EAAE4I,IAAI,CAACwH;UAAS,CAAC,CAC3C,CAAC;QACJ;MACF;MAEA,IAAI,CAACxB,eAAe,CAACtK,IAAI,CAACwE,IAAI,CAAC;MAC/B,IAAI;QACF,IAAI,CAACwH,eAAe,CAACxH,IAAI,EAAE,UAACzB,GAAG,EAAEC,IAAI,EAAEiJ,OAAO,EAAK;UACjDT,KAAI,CAACU,sBAAsB,CAAC1H,IAAI,CAAC;UAEjC,IAAIF,IAAI,CAACwH,QAAQ,EAAE;YACjBN,KAAI,CAACtB,MAAM,CAACiC,mBAAmB,CAAC7H,IAAI,CAACwH,QAAQ,EAAE/I,GAAG,EAAEC,IAAI,EAAEiJ,OAAO,CAAC;UACpE;UAEArI,QAAQ,CAACb,GAAG,EAAEC,IAAI,CAAC;QACrB,CAAC,CAAC;MACJ,CAAC,CAAC,OAAOD,GAAG,EAAE;QACZ,IAAI,CAACmJ,sBAAsB,CAAC1H,IAAI,CAAC;QAEjC,IAAIF,IAAI,CAACwH,QAAQ,EAAE;UAAA,IAAAM,YAAA;UACjB,CAAAA,YAAA,OAAI,CAAClC,MAAM,cAAAkC,YAAA,eAAXA,YAAA,CAAaC,OAAO,CAAC/H,IAAI,CAACwH,QAAQ,CAAC;QACrC;QAEAlI,QAAQ,CAACb,GAAG,CAAC;MACf;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAApJ,GAAA;IAAA+B,KAAA,EAMA,SAAA4Q,IAAIA,CAAC1I,QAAQ,EAAE;MAAA,IAAA2I,MAAA;MACb,IAAI,CAACrO,UAAY,CAAC0F,QAAQ,CAAC,EAAE;QAC3B;MACF;MACA,IAAI,CAAC6G,YAAY,GAAG7G,QAAQ;MAC5B,IAAI,IAAI,CAAC4I,cAAc,CAAC,CAAC,EAAE;QACzB;MACF;MACA,IAAI,IAAI,CAAC9B,cAAc,EAAE;QACvB,IAAI,CAACA,cAAc,GAAG+B,aAAa,CAAC,IAAI,CAAC/B,cAAc,CAAC;MAC1D;MACA,IAAI,CAACA,cAAc,GAAGgC,WAAW,CAAC,YAAM;QACtCH,MAAI,CAACC,cAAc,CAAC,CAAC;MACvB,CAAC,EAAE,GAAG,CAAC;IACT;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA7S,GAAA;IAAA+B,KAAA,EAQA,SAAAgQ,gBAAgBA,CAACpH,IAAI,EAAE;MACrB,IAAI9H,CAAC,GAAG,IAAI;MACZ,KAAK,IAAI3C,CAAC,GAAG,CAAC,EAAEwK,GAAG,GAAG,IAAI,CAAC+F,UAAU,CAAC/P,MAAM,EAAER,CAAC,GAAGwK,GAAG,EAAExK,CAAC,EAAE,EAAE;QAC1D2C,CAAC,GAAG,IAAI,CAAC4N,UAAU,CAACvQ,CAAC,CAAC,CAACyK,IAAI,EAAE,IAAI,CAAC3E,OAAO,CAAC;QAC1C,IAAI,CAACnD,CAAC,IAAIA,CAAC,CAACuG,GAAG,KAAK/D,SAAS,EAAE;UAC7B,OAAO;YAAE2M,IAAI,EAAE,IAAI;YAAE5I,GAAG,EAAEvG,CAAC,CAACuG;UAAI,CAAC;QACnC;MACF;MACA,OAAO;QAAE4I,IAAI,EAAE,KAAK;QAAE5I,GAAG,EAAE;MAAK,CAAC;IACnC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAApJ,GAAA;IAAA+B,KAAA,EAOA,SAAAsQ,eAAeA,CAAC1H,IAAI,EAAEV,QAAQ,EAAE;MAAA,IAAA+I,MAAA;MAC9B,IAAMC,iBAAiB,GAAG,IAAI,CAAC5C,WAAW,CAACpB,UAAU,CAACtE,IAAI,CAAC;MAC3D,IAAIsI,iBAAiB,CAAChE,UAAU,EAAE;QAChC,IAAI,CAACqB,GAAG,CAAC4C,QAAQ,CAACvI,IAAI,EAAE,UAACvB,GAAG,EAAEC,IAAI,EAAEiJ,OAAO,EAAK;UAC9C,IAAIlJ,GAAG,EAAE;YACP4J,MAAI,CAACG,WAAW,CAAC/J,GAAG,EAAEuB,IAAI,EAAEV,QAAQ,CAAC;UACvC,CAAC,MAAM;YACLA,QAAQ,CAACb,GAAG,EAAEC,IAAI,EAAEiJ,OAAO,CAAC;UAC9B;QACF,CAAC,CAAC;MACJ,CAAC,MAAM,IAAIW,iBAAiB,CAAClP,KAAK,EAAE;QAClCkG,QAAQ,CAACgJ,iBAAiB,CAAClP,KAAK,CAAC;MACnC,CAAC,MAAM;QACL,IAAI,CAACuM,GAAG,CAAC4C,QAAQ,CAACD,iBAAiB,CAACnF,OAAO,EAAE7D,QAAQ,CAAC;MACxD;IACF;;IAEA;EAAA;IAAAjK,GAAA;IAAA+B,KAAA;IAYA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;IACE,SAAAoR,WAAWA,CAAC/J,GAAG,EAAEuB,IAAI,EAAEV,QAAQ,EAAE;MAC/B,IAAImJ,WAAW,GAAG,KAAK;MACvB,IAAI,IAAI,CAACpN,OAAO,CAACqN,aAAa,EAAE;QAC9B,KAAK,IAAInT,CAAC,GAAG,CAAC,EAAEwK,GAAG,GAAG0F,KAAK,CAACkD,gBAAgB,CAAC5S,MAAM,EAAER,CAAC,GAAGwK,GAAG,EAAExK,CAAC,EAAE,EAAE;UACjE,IAAIkJ,GAAG,CAAC3B,IAAI,KAAK2I,KAAK,CAACkD,gBAAgB,CAACpT,CAAC,CAAC,EAAE;YAC1CkT,WAAW,GAAG,IAAI;YAClB;UACF;QACF;QACA,IAAIA,WAAW,IAAI7O,cAAgB,CAAC,IAAI,CAACyB,OAAO,CAACuN,UAAU,CAAC,EAAE;UAC5D5I,IAAI,CAAC6I,OAAO,GAAG7I,IAAI,CAAC6I,OAAO,GAAG7I,IAAI,CAAC6I,OAAO,GAAG,CAAC,GAAG,CAAC;UAClD,IAAI7I,IAAI,CAAC6I,OAAO,GAAG,IAAI,CAACxN,OAAO,CAACuN,UAAU,EAAE;YAC1CH,WAAW,GAAG,KAAK;UACrB;QACF;MACF;MACA,IAAIA,WAAW,EAAE;QACf,IAAI,CAACK,gBAAgB,CAAC9I,IAAI,EAAEV,QAAQ,CAAC;MACvC,CAAC,MAAM;QACLA,QAAQ,CAACb,GAAG,CAAC;MACf;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAApJ,GAAA;IAAA+B,KAAA,EAOA,SAAA0R,gBAAgBA,CAAC9I,IAAI,EAAEV,QAAQ,EAAE;MAAA,IAAAyJ,MAAA;MAC/B,IAAI,CAAC9C,UAAU,CAACvK,IAAI,CAAC;QAAEsE,IAAI,EAAJA,IAAI;QAAEV,QAAQ,EAARA;MAAS,CAAC,CAAC;MAExC,IAAI,CAAC,IAAI,CAAC4G,WAAW,EAAE;QACrB,IAAI,CAACA,WAAW,GAAGkC,WAAW,CAAC,YAAM;UACnC,OAAOW,MAAI,CAAC9C,UAAU,CAAClQ,MAAM,EAAE;YAC7B,IAAMiT,WAAW,GAAGD,MAAI,CAAC9C,UAAU,CAACgD,KAAK,CAAC,CAAC;YAC3CF,MAAI,CAACrB,eAAe,CAACsB,WAAW,CAAChJ,IAAI,EAAEgJ,WAAW,CAAC1J,QAAQ,CAAC;UAC9D;QACF,CAAC,EAAE,IAAI,CAACjE,OAAO,CAACqN,aAAa,CAAC;MAChC;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAArT,GAAA;IAAA+B,KAAA,EAQA,SAAAwQ,sBAAsBA,CAAC5H,IAAI,EAAE;MAC3B,IAAM6G,GAAG,GAAG,IAAI,CAACb,eAAe,CAACjK,OAAO,CAACiE,IAAI,CAAC;MAC9C,IAAI6G,GAAG,KAAK,CAAC,CAAC,EAAE;QACd,IAAI,CAACb,eAAe,CAACc,MAAM,CAACD,GAAG,EAAE,CAAC,CAAC;QACnC,IAAI,CAACqB,cAAc,CAAC,CAAC;MACvB;IACF;EAAC;IAAA7S,GAAA;IAAA+B,KAAA,EAED,SAAAkQ,SAASA,CAACpH,IAAI,EAAE8G,aAAa,EAAE;MAC7B,IAAI,IAAI,CAACxI,MAAM,IAAI,IAAI,CAACnD,OAAO,CAAC6N,OAAO,EAAE;QACvC,IAAI9L,OAAO,GACT4J,aAAa,IACbpN,GAAK,CAACsG,IAAI,EAAE,8BAA8B,CAAC,IAC3CtG,GAAK,CAACsG,IAAI,EAAE,sCAAsC,CAAC;QACrD,IAAI9C,OAAO,EAAE;UACX,IAAI,CAACoB,MAAM,CAACpF,KAAK,CAACgE,OAAO,CAAC;UAC1B;QACF;QACAA,OAAO,GAAGxD,GAAK,CAACsG,IAAI,EAAE,mBAAmB,CAAC;QAC1C,IAAI9C,OAAO,EAAE;UACX,IAAI,CAACoB,MAAM,CAACiF,GAAG,CAACrG,OAAO,CAAC;QAC1B;MACF;IACF;EAAC;IAAA/H,GAAA;IAAA+B,KAAA,EAED,SAAA8Q,cAAcA,CAAA,EAAG;MACf,IACEtO,UAAY,CAAC,IAAI,CAACuM,YAAY,CAAC,IAC/B,IAAI,CAACJ,YAAY,CAAChQ,MAAM,KAAK,CAAC,IAC9B,IAAI,CAACiQ,eAAe,CAACjQ,MAAM,KAAK,CAAC,EACjC;QACA,IAAI,IAAI,CAACqQ,cAAc,EAAE;UACvB,IAAI,CAACA,cAAc,GAAG+B,aAAa,CAAC,IAAI,CAAC/B,cAAc,CAAC;QAC1D;QACA,IAAI,CAACD,YAAY,CAAC,CAAC;QACnB,OAAO,IAAI;MACb;MACA,OAAO,KAAK;IACd;EAAC;AAAA;AAAAgD,eAAA,CAhTG1D,KAAK,sBAoMiB,CACxB,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,cAAc,EACd,OAAO,EACP,WAAW,CACZ;AAsGH,0CAAeA,KAAK;;AC3Tc;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS2D,QAAQA,CAACC,KAAK,EAAEhO,OAAO,EAAE;EAChC,IAAI,CAACgO,KAAK,GAAGA,KAAK;EAClB,IAAI,CAAChO,OAAO,GAAGA,OAAO;EACtB,IAAI,CAACiO,UAAU,GAAG,EAAE;EACpB,IAAI,CAAC5J,UAAU,GAAG,CAAC,CAAC;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA0J,QAAQ,CAACzU,SAAS,CAAC2R,SAAS,GAAG,UAAUjL,OAAO,EAAE;EAChD,IAAI,CAACgO,KAAK,IAAI,IAAI,CAACA,KAAK,CAAC/C,SAAS,CAACjL,OAAO,CAAC;EAC3C,IAAImL,UAAU,GAAG,IAAI,CAACnL,OAAO;EAC7B,IAAI,CAACA,OAAO,GAAGzB,SAAO,CAAC4M,UAAU,EAAEnL,OAAO,CAAC;EAC3C,OAAO,IAAI;AACb,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA+N,QAAQ,CAACzU,SAAS,CAAC4U,YAAY,GAAG,UAAUC,SAAS,EAAE;EACrD,IAAI5P,UAAY,CAAC4P,SAAS,CAAC,EAAE;IAC3B,IAAI,CAACF,UAAU,CAAC5N,IAAI,CAAC8N,SAAS,CAAC;EACjC;EACA,OAAO,IAAI;AACb,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAJ,QAAQ,CAACzU,SAAS,CAAC8O,GAAG,GAAG,UAAUzD,IAAI,EAAEV,QAAQ,EAAE;EACjD,IAAI,CAACA,QAAQ,IAAI,CAAC1F,UAAY,CAAC0F,QAAQ,CAAC,EAAE;IACxCA,QAAQ,GAAG,SAAXA,QAAQA,CAAA,EAAe,CAAC,CAAC;EAC3B;EAEA,IAAI,CAAC,IAAI,CAACjE,OAAO,CAACoO,OAAO,EAAE;IACzB,OAAOnK,QAAQ,CAAC,IAAIhJ,KAAK,CAAC,wBAAwB,CAAC,CAAC;EACtD;EAEA,IAAI,CAAC+S,KAAK,CAAC1C,cAAc,CAAC3G,IAAI,CAAC;EAC/B,IAAIgH,aAAa,GAAGhH,IAAI,CAACvB,GAAG;EAC5B,IAAI,CAACiL,gBAAgB,CACnB1J,IAAI,EACJ,UAAUvB,GAAG,EAAElJ,CAAC,EAAE;IAChB,IAAIkJ,GAAG,EAAE;MACP,IAAI,CAAC4K,KAAK,CAACzC,iBAAiB,CAAC5G,IAAI,CAAC;MAClC,OAAOV,QAAQ,CAACb,GAAG,EAAE,IAAI,CAAC;IAC5B;IACA,IAAI,CAAC4K,KAAK,CAACtC,OAAO,CAACxR,CAAC,EAAE+J,QAAQ,EAAE0H,aAAa,EAAEhH,IAAI,CAAC;EACtD,CAAC,CAAC2J,IAAI,CAAC,IAAI,CACb,CAAC;AACH,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAP,QAAQ,CAACzU,SAAS,CAAC+U,gBAAgB,GAAG,UAAU1J,IAAI,EAAEV,QAAQ,EAAE;EAC9D,IAAIsK,cAAc,GAAG,CAAC,CAAC;EACvB,IAAIC,gBAAgB,GAAG,IAAI,CAACP,UAAU,CAACvT,MAAM;EAC7C,IAAIuT,UAAU,GAAG,IAAI,CAACA,UAAU;EAChC,IAAIjO,OAAO,GAAG,IAAI,CAACA,OAAO;EAE1B,IAAIyO,GAAE,GAAG,SAALA,EAAEA,CAAarL,GAAG,EAAElJ,CAAC,EAAE;IACzB,IAAIkJ,GAAG,EAAE;MACPa,QAAQ,CAACb,GAAG,EAAE,IAAI,CAAC;MACnB;IACF;IAEAmL,cAAc,EAAE;IAEhB,IAAIA,cAAc,KAAKC,gBAAgB,EAAE;MACvCvK,QAAQ,CAAC,IAAI,EAAE/J,CAAC,CAAC;MACjB;IACF;IAEA+T,UAAU,CAACM,cAAc,CAAC,CAACrU,CAAC,EAAE8F,OAAO,EAAEyO,GAAE,CAAC;EAC5C,CAAC;EAEDA,GAAE,CAAC,IAAI,EAAE9J,IAAI,CAAC;AAChB,CAAC;AAED,6CAAeoJ,QAAQ;;ACzHoB;AACZ;AACM;AACH;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASW,OAAOA,CAAC1O,OAAO,EAAEsK,GAAG,EAAEnH,MAAM,EAAEwL,SAAS,EAAEC,OAAO,EAAErE,MAAM,EAAE5B,QAAQ,EAAE;EAC3E,IAAI,CAAC3I,OAAO,GAAGzB,SAAO,CAACyB,OAAO,CAAC;EAC/B,IAAI,CAACmD,MAAM,GAAGA,MAAM;EACpBuL,OAAO,CAACrE,WAAW,CAACxB,eAAe,CAAC,IAAI,CAAC7I,OAAO,CAAC;EACjD0O,OAAO,CAACrE,WAAW,CAACb,kBAAkB,CAACb,QAAQ,EAAE,IAAI,CAAC3I,OAAO,CAAC;EAC9D,IAAI,CAACsK,GAAG,GAAGA,GAAG;EACd,IAAI,CAAC0D,KAAK,GAAG,IAAI5D,KAAK,CACpBsE,OAAO,CAACrE,WAAW,EACnBC,GAAG,EACHnH,MAAM,EACN,IAAI,CAACnD,OAAO,EACZuK,MACF,CAAC;EAED,IAAI,CAACqE,OAAO,GAAGA,OAAO;;EAEtB;EACA;EACA,IAAIC,MAAM,GAAG,IAAI,CAAC7O,OAAO,CAAC6O,MAAM,IAAI,IAAI;EACxC,IAAIC,cAAc,CAACD,MAAM,CAAC,EAAE;IAC1B,IAAI,CAACA,MAAM,GAAGA,MAAM;IACpB;IACA,IAAI,CAAC7O,OAAO,CAAC6O,MAAM,GAAG,4BAA4B;IAClD,IAAI,CAAC7O,OAAO,CAAC+O,kBAAkB,CAACF,MAAM,GAAG,4BAA4B;EACvE,CAAC,MAAM;IACL,IAAI,CAACA,MAAM,GAAG,IAAI;EACpB;EAEA,IAAI,CAAChL,QAAQ,GAAG,IAAIkK,QAAQ,CAAC,IAAI,CAACC,KAAK,EAAE,IAAI,CAAChO,OAAO,CAAC;EACtD,IAAI,CAAC2O,SAAS,GAAGA,SAAS;EAC1BK,kBAAkB,CAAChP,OAAO,CAAC;EAC3B,IAAI,CAACiP,SAAS,GAAG,IAAI;EACrB,IAAI,CAACC,aAAa,GAAG,MAAM;AAC7B;AAEA,IAAIC,cAAc,GAAG;EACnBpG,QAAQ,EAAE,CAAC;EACXC,cAAc,EAAE;AAClB,CAAC;AAED0F,OAAO,CAACrE,WAAW,GAAG,IAAI9B,WAAW,CAAC4G,cAAc,CAAC;AAErDT,OAAO,CAACpV,SAAS,CAAC8V,MAAM,GAAG,UAAUpP,OAAO,EAAE;EAC5C0O,OAAO,CAACrE,WAAW,CAACxB,eAAe,CAAC7I,OAAO,CAAC;EAC5C,OAAO,IAAI;AACb,CAAC;AAED0O,OAAO,CAACpV,SAAS,CAAC2R,SAAS,GAAG,UAAUjL,OAAO,EAAEqP,WAAW,EAAE;EAC5D,IAAIlE,UAAU,GAAG,IAAI,CAACnL,OAAO;EAC7B,IAAI8H,OAAO,GAAG,CAAC,CAAC;EAChB,IAAIuH,WAAW,EAAE;IACfvH,OAAO,GAAG;MAAEA,OAAO,EAAEuH;IAAY,CAAC;EACpC;EAEA,IAAI,CAACrP,OAAO,GAAGzB,SAAO,CAAC4M,UAAU,EAAEnL,OAAO,EAAE8H,OAAO,CAAC;;EAEpD;EACA;EACA,IAAI+G,MAAM,GAAG,IAAI,CAAC7O,OAAO,CAAC6O,MAAM,IAAI,IAAI;EACxC,IAAIC,cAAc,CAACD,MAAM,CAAC,EAAE;IAC1B,IAAI,CAACA,MAAM,GAAGA,MAAM;IACpB;IACA,IAAI,CAAC7O,OAAO,CAAC6O,MAAM,GAAG,4BAA4B;IAClD,IAAI,CAAC7O,OAAO,CAAC+O,kBAAkB,CAACF,MAAM,GAAG,4BAA4B;EACvE,CAAC,MAAM;IACL,IAAI,CAACA,MAAM,GAAG,IAAI;EACpB;EAEA,IAAI,CAAChL,QAAQ,IAAI,IAAI,CAACA,QAAQ,CAACoH,SAAS,CAAC,IAAI,CAACjL,OAAO,CAAC;EACtD,IAAI,CAAC2O,SAAS,IAAI,IAAI,CAACA,SAAS,CAAC1D,SAAS,CAAC,IAAI,CAACjL,OAAO,CAAC;EACxDgP,kBAAkB,CAAChP,OAAO,CAAC;EAC3B,IAAI,CAACoP,MAAM,CAAC,IAAI,CAACpP,OAAO,CAAC;EAEzB,IAAI8O,cAAc,CAAC9O,OAAO,CAAC6O,MAAM,CAAC,EAAE;IAClC,IAAI,CAACA,MAAM,GAAG7O,OAAO,CAAC6O,MAAM;EAC9B;EAEA,OAAO,IAAI;AACb,CAAC;AAEDH,OAAO,CAACpV,SAAS,CAAC8O,GAAG,GAAG,UAAUzD,IAAI,EAAE;EACtC,IAAIM,KAAK,GAAG,IAAI,CAACqK,gBAAgB,CAAC,CAAC;EACnC,OAAO,IAAI,CAACC,IAAI,CAACtK,KAAK,EAAEN,IAAI,CAAC;AAC/B,CAAC;AAED+J,OAAO,CAACpV,SAAS,CAACsE,KAAK,GAAG,UAAU+G,IAAI,EAAE;EACxC,IAAI,CAAC4K,IAAI,CAAC,OAAO,EAAE5K,IAAI,CAAC;AAC1B,CAAC;AAED+J,OAAO,CAACpV,SAAS,CAACuE,IAAI,GAAG,UAAU8G,IAAI,EAAE;EACvC,IAAI,CAAC4K,IAAI,CAAC,MAAM,EAAE5K,IAAI,CAAC;AACzB,CAAC;AAED+J,OAAO,CAACpV,SAAS,CAACkW,IAAI,GAAG,UAAU7K,IAAI,EAAE;EACvC,IAAI,CAAC4K,IAAI,CAAC,SAAS,EAAE5K,IAAI,CAAC;AAC5B,CAAC;AAED+J,OAAO,CAACpV,SAAS,CAACwE,OAAO,GAAG,UAAU6G,IAAI,EAAE;EAC1C,IAAI,CAAC4K,IAAI,CAAC,SAAS,EAAE5K,IAAI,CAAC;AAC5B,CAAC;AAED+J,OAAO,CAACpV,SAAS,CAACyE,KAAK,GAAG,UAAU4G,IAAI,EAAE;EACxC,IAAI,CAAC4K,IAAI,CAAC,OAAO,EAAE5K,IAAI,CAAC;AAC1B,CAAC;AAED+J,OAAO,CAACpV,SAAS,CAAC0E,QAAQ,GAAG,UAAU2G,IAAI,EAAE;EAC3C,IAAI,CAAC4K,IAAI,CAAC,UAAU,EAAE5K,IAAI,CAAC;AAC7B,CAAC;AAED+J,OAAO,CAACpV,SAAS,CAACqT,IAAI,GAAG,UAAU1I,QAAQ,EAAE;EAC3C,IAAI,CAAC+J,KAAK,CAACrB,IAAI,CAAC1I,QAAQ,CAAC;AAC3B,CAAC;AAEDyK,OAAO,CAACpV,SAAS,CAACmW,YAAY,GAAG,UAAUzT,IAAI,EAAE8J,QAAQ,EAAEb,KAAK,EAAE;EAChE,OAAO,IAAI,CAAC0J,SAAS,IAAI,IAAI,CAACA,SAAS,CAACc,YAAY,CAACzT,IAAI,EAAE8J,QAAQ,EAAEb,KAAK,CAAC;AAC7E,CAAC;AAEDyJ,OAAO,CAACpV,SAAS,CAACoW,uBAAuB,GAAG,UAAUC,EAAE,EAAE;EACxD,OAAO,IAAI,CAAChB,SAAS,IAAI,IAAI,CAACA,SAAS,CAACe,uBAAuB,CAACC,EAAE,CAAC;AACrE,CAAC;AAEDjB,OAAO,CAACpV,SAAS,CAACsW,WAAW,GAAG,UAAUD,EAAE,EAAE;EAC5C,OAAO,IAAI,CAAChB,SAAS,IAAI,IAAI,CAACA,SAAS,CAACiB,WAAW,CAACD,EAAE,CAAC;AACzD,CAAC;AAEDjB,OAAO,CAACpV,SAAS,CAACuW,gBAAgB,GAAG,UAAUlL,IAAI,EAAE;EACnD,OAAO,IAAI,CAAC2F,GAAG,CAACuF,gBAAgB,CAAClL,IAAI,CAAC;AACxC,CAAC;AAED+J,OAAO,CAACpV,SAAS,CAACwW,eAAe,GAAG,UAAUC,WAAW,EAAE;EACzD,IAAI,CAACzF,GAAG,CAAC0F,eAAe,CAACD,WAAW,CAAC;AACvC,CAAC;;AAED;;AAEArB,OAAO,CAACpV,SAAS,CAACiW,IAAI,GAAG,UAAUU,YAAY,EAAEtL,IAAI,EAAE;EACrD,IAAIV,QAAQ;EACZ,IAAIU,IAAI,CAACV,QAAQ,EAAE;IACjBA,QAAQ,GAAGU,IAAI,CAACV,QAAQ;IACxB,OAAOU,IAAI,CAACV,QAAQ;EACtB;EACA,IAAI,IAAI,CAACjE,OAAO,CAACkQ,qBAAqB,IAAI,IAAI,CAACC,gBAAgB,CAACxL,IAAI,CAAC,EAAE;IACrE,IAAIV,QAAQ,EAAE;MACZ,IAAIlG,KAAK,GAAG,IAAI9C,KAAK,CAAC,wBAAwB,CAAC;MAC/C8C,KAAK,CAAC4G,IAAI,GAAGA,IAAI;MACjBV,QAAQ,CAAClG,KAAK,CAAC;IACjB;IACA;EACF;EACA,IAAI;IACF4G,IAAI,CAACM,KAAK,GAAGN,IAAI,CAACM,KAAK,IAAIgL,YAAY;IAEvC,IAAI,CAACG,qBAAqB,CAACzL,IAAI,CAAC;;IAEhC;IACA,IAAI,CAAC0L,eAAe,CAAC1L,IAAI,CAAC;IAE1B,IAAMgK,SAAS,GAAG,IAAI,CAACA,SAAS;IAChC,IAAIA,SAAS,EAAE;MACbA,SAAS,CAAC2B,mBAAmB,CAAC3L,IAAI,CAAC;MACnCA,IAAI,CAAC4L,eAAe,GAAG5B,SAAS,CAAC6B,UAAU,CAAC,CAAC,IAAI,EAAE;IACrD;IAEA,IAAI,CAAC3M,QAAQ,CAACuE,GAAG,CAACzD,IAAI,EAAEV,QAAQ,CAAC;EACnC,CAAC,CAAC,OAAOtH,CAAC,EAAE;IACV,IAAIsH,QAAQ,EAAE;MACZA,QAAQ,CAACtH,CAAC,CAAC;IACb;IACA,IAAI,CAACwG,MAAM,CAACpF,KAAK,CAACpB,CAAC,CAAC;EACtB;AACF,CAAC;AAED+R,OAAO,CAACpV,SAAS,CAAC8W,qBAAqB,GAAG,UAAUzL,IAAI,EAAE;EAAA,IAAA8L,aAAA,EAAAC,cAAA;EACxD,IAAMC,IAAI,IAAAF,aAAA,GAAG,IAAI,CAAC7B,OAAO,cAAA6B,aAAA,uBAAZA,aAAA,CAAcG,OAAO,CAAC,CAAC;EAEpC,IAAM1K,UAAU,GAAG,CACjB;IAAElM,GAAG,EAAE,YAAY;IAAE+B,KAAK,GAAA2U,cAAA,GAAE,IAAI,CAAC9B,OAAO,cAAA8B,cAAA,uBAAZA,cAAA,CAAcG;EAAU,CAAC,EACrD;IAAE7W,GAAG,EAAE,SAAS;IAAE+B,KAAK,EAAE4U,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEG;EAAO,CAAC,EACvC;IAAE9W,GAAG,EAAE,UAAU;IAAE+B,KAAK,EAAE4U,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEI;EAAQ,CAAC,CAC1C;EACDxS,iBAAmB,CAACoG,IAAI,CAACE,IAAI,EAAEqB,UAAU,CAAC;EAE1CyK,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEK,QAAQ,CAAC,oBAAoB,EAAE,CACnC;IAAEhX,GAAG,EAAE,yBAAyB;IAAE+B,KAAK,EAAE4I,IAAI,CAACtH;EAAK,CAAC,CACrD,CAAC;AACJ,CAAC;AAEDqR,OAAO,CAACpV,SAAS,CAACgW,gBAAgB,GAAG,YAAY;EAC/C,OAAO,IAAI,CAACtP,OAAO,CAACiR,QAAQ,IAAI,OAAO;AACzC,CAAC;AAEDvC,OAAO,CAACpV,SAAS,CAAC6W,gBAAgB,GAAG,UAAUxL,IAAI,EAAE;EACnD,IAAI,CAACA,IAAI,CAACuM,WAAW,EAAE;IACrB,OAAO,KAAK;EACd;EACA,IAAIC,QAAQ,GAAGC,gBAAgB,CAACzM,IAAI,CAAC;EACrC,IAAI,IAAI,CAACuK,aAAa,KAAKiC,QAAQ,EAAE;IACnC,OAAO,IAAI;EACb;EACA,IAAI,CAAClC,SAAS,GAAGtK,IAAI,CAACvB,GAAG;EACzB,IAAI,CAAC8L,aAAa,GAAGiC,QAAQ;EAC7B,OAAO,KAAK;AACd,CAAC;AAEDzC,OAAO,CAACpV,SAAS,CAAC+W,eAAe,GAAG,UAAU1L,IAAI,EAAE;EAClD;EACA;EACA,IAAI,IAAI,CAACkK,MAAM,EAAE;IACf;IACA,IAAI8B,IAAI,GAAG,IAAI,CAAC9B,MAAM,CAACwC,KAAK,CAAC,CAAC,CAACC,MAAM,CAAC,CAAC;IAEvC,IAAIC,YAAY,CAACZ,IAAI,CAAC,EAAE;MACtBA,IAAI,CAACa,MAAM,CAAC,oBAAoB,EAAE7M,IAAI,CAACtH,IAAI,CAAC;MAC5CsT,IAAI,CAACa,MAAM,CAAC,mBAAmB,EAAE,IAAI,CAAC;MACtCb,IAAI,CAACa,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;MAC1Bb,IAAI,CAACa,MAAM,CACT,kBAAkB,yCAAA7J,MAAA,CACqBhD,IAAI,CAACtH,IAAI,CAClD,CAAC;MACDsT,IAAI,CAACa,MAAM,CACT,wBAAwB,+CAAA7J,MAAA,CACqBhD,IAAI,CAACtH,IAAI,CACxD,CAAC;;MAED;MACA,IAAIoU,iBAAiB,GAAGd,IAAI,CAACjO,OAAO,CAAC,CAAC,CAACgP,QAAQ,CAAC,CAAC;MACjD,IAAIC,kBAAkB,GAAGhB,IAAI,CAACjO,OAAO,CAAC,CAAC,CAACkP,SAAS,CAAC,CAAC;MAEnD,IAAIjN,IAAI,CAACX,MAAM,EAAE;QACfW,IAAI,CAACX,MAAM,CAAC6N,mBAAmB,GAAGJ,iBAAiB;QACnD9M,IAAI,CAACX,MAAM,CAAC8N,oBAAoB,GAAGH,kBAAkB;MACvD,CAAC,MAAM;QACLhN,IAAI,CAACX,MAAM,GAAG;UACZ6N,mBAAmB,EAAEJ,iBAAiB;UACtCK,oBAAoB,EAAEH;QACxB,CAAC;MACH;IACF;EACF;AACF,CAAC;AAED,SAASP,gBAAgBA,CAACzM,IAAI,EAAE;EAC9B,IAAI5C,OAAO,GAAG4C,IAAI,CAAC5C,OAAO,IAAI,EAAE;EAChC,IAAIkB,KAAK,GAAG,CAAC0B,IAAI,CAACvB,GAAG,IAAI,CAAC,CAAC,EAAEH,KAAK,IAAI/G,MAAM,CAACyI,IAAI,CAACvB,GAAG,CAAC;EACtD,OAAOrB,OAAO,GAAG,IAAI,GAAGkB,KAAK;AAC/B;;AAEA;AACA;AACA;AACA,SAAS+L,kBAAkBA,CAAChP,OAAO,EAAE;EACnC,IAAIA,OAAO,CAAC+R,eAAe,EAAE;IAC3B9W,KAAK,CAAC8W,eAAe,GAAG/R,OAAO,CAAC+R,eAAe;EACjD;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASjD,cAAcA,CAACD,MAAM,EAAE;EAC9B,IAAI,CAACA,MAAM,EAAE;IACX,OAAO,KAAK;EACd;EAEA,IAAI,CAACA,MAAM,CAACwC,KAAK,IAAI,OAAOxC,MAAM,CAACwC,KAAK,KAAK,UAAU,EAAE;IACvD,OAAO,KAAK;EACd;EAEA,IAAIA,KAAK,GAAGxC,MAAM,CAACwC,KAAK,CAAC,CAAC;EAE1B,IAAI,CAACA,KAAK,IAAI,CAACA,KAAK,CAACC,MAAM,IAAI,OAAOD,KAAK,CAACC,MAAM,KAAK,UAAU,EAAE;IACjE,OAAO,KAAK;EACd;EAEA,OAAO,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA,SAASC,YAAYA,CAACZ,IAAI,EAAE;EAC1B,IAAI,CAACA,IAAI,IAAI,CAACA,IAAI,CAACjO,OAAO,IAAI,OAAOiO,IAAI,CAACjO,OAAO,KAAK,UAAU,EAAE;IAChE,OAAO,KAAK;EACd;EAEA,IAAIsP,WAAW,GAAGrB,IAAI,CAACjO,OAAO,CAAC,CAAC;EAEhC,IACE,CAACsP,WAAW,IACZ,CAACA,WAAW,CAACN,QAAQ,IACrB,CAACM,WAAW,CAACJ,SAAS,IACtB,OAAOI,WAAW,CAACN,QAAQ,KAAK,UAAU,IAC1C,OAAOM,WAAW,CAACJ,SAAS,KAAK,UAAU,EAC3C;IACA,OAAO,KAAK;EACd;EAEA,OAAO,IAAI;AACb;AAEA,4CAAelD,OAAO;;AC3TY;AAElC,SAASuD,YAAYA,CAACpN,IAAI,EAAE;EAC1B,IAAI,CAACtG,MAAQ,CAACsG,IAAI,CAACnC,OAAO,EAAE,QAAQ,CAAC,EAAE;IACrC,IAAIwP,aAAa,GAAG3T,SAAW,CAACsG,IAAI,CAACnC,OAAO,CAAC;IAC7C,IAAIwP,aAAa,CAACnU,KAAK,EAAE;MACvB8G,IAAI,CAACnC,OAAO,GAAG,sCAAsC;IACvD,CAAC,MAAM;MACLmC,IAAI,CAACnC,OAAO,GAAGwP,aAAa,CAACnW,KAAK,IAAI,EAAE;IAC1C;IACA,IAAI8I,IAAI,CAACnC,OAAO,CAAChI,MAAM,GAAG,GAAG,EAAE;MAC7BmK,IAAI,CAACnC,OAAO,GAAGmC,IAAI,CAACnC,OAAO,CAACsE,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC;IAC5C;EACF;EACA,OAAO;IACLnC,IAAI,EAAEA;EACR,CAAC;AACH;AAEA,SAASsN,uBAAuBA,CAACnS,OAAO,EAAEoS,QAAQ,EAAElU,GAAG,EAAE;EACvD,IAAI8C,QAAQ,GAAGoR,QAAQ,CAACpR,QAAQ;EAChC,IAAIF,QAAQ,GAAGsR,QAAQ,CAACtR,QAAQ;EAChC,IAAIC,IAAI,GAAGqR,QAAQ,CAACrR,IAAI;EACxB,IAAIP,IAAI,GAAG4R,QAAQ,CAAC5R,IAAI;EACxB,IAAIlC,MAAM,GAAG8T,QAAQ,CAAC9T,MAAM;EAC5B,IAAI+T,OAAO,GAAGrS,OAAO,CAACqS,OAAO;EAC7B,IAAIC,SAAS,GAAGC,eAAe,CAACvS,OAAO,CAAC;EAExC,IAAIwS,KAAK,GAAGxS,OAAO,CAACwS,KAAK;EACzB,IAAIxS,OAAO,CAACyS,QAAQ,EAAE;IACpB,IAAIC,IAAI,GAAGxU,GAAG,CAAC2D,KAAK,CAAC7B,OAAO,CAACyS,QAAQ,CAAC;IACtCzR,QAAQ,GAAG0R,IAAI,CAAC1R,QAAQ;IACxBF,QAAQ,GAAG4R,IAAI,CAAC5R,QAAQ;IACxBC,IAAI,GAAG2R,IAAI,CAAC3R,IAAI;IAChBP,IAAI,GAAGkS,IAAI,CAACC,QAAQ;IACpBrU,MAAM,GAAGoU,IAAI,CAACpU,MAAM;EACtB;EACA,OAAO;IACL+T,OAAO,EAAEA,OAAO;IAChBrR,QAAQ,EAAEA,QAAQ;IAClBF,QAAQ,EAAEA,QAAQ;IAClBC,IAAI,EAAEA,IAAI;IACVP,IAAI,EAAEA,IAAI;IACVlC,MAAM,EAAEA,MAAM;IACdkU,KAAK,EAAEA,KAAK;IACZF,SAAS,EAAEA;EACb,CAAC;AACH;AAEA,SAASC,eAAeA,CAACvS,OAAO,EAAE;EAChC,IAAI4S,OAAO,GACR,OAAO5V,MAAM,IAAI,WAAW,IAAIA,MAAM,IACtC,OAAO6V,IAAI,IAAI,WAAW,IAAIA,IAAK;EACtC,IAAIP,SAAS,GAAGtS,OAAO,CAAC8S,gBAAgB,IAAI,KAAK;EACjD,IAAI,OAAOF,OAAO,CAACG,KAAK,KAAK,WAAW,EAAET,SAAS,GAAG,KAAK;EAC3D,IAAI,OAAOM,OAAO,CAACI,cAAc,KAAK,WAAW,EAAEV,SAAS,GAAG,OAAO;EACtE,OAAOA,SAAS;AAClB;AAEA,SAASW,2BAAgBA,CAACX,SAAS,EAAEY,MAAM,EAAE;EAC3C,IAAIpS,QAAQ,GAAGwR,SAAS,CAACxR,QAAQ,IAAI,QAAQ;EAC7C,IAAIC,IAAI,GACNuR,SAAS,CAACvR,IAAI,KACbD,QAAQ,KAAK,OAAO,GAAG,EAAE,GAAGA,QAAQ,KAAK,QAAQ,GAAG,GAAG,GAAGzB,SAAS,CAAC;EACvE,IAAI2B,QAAQ,GAAGsR,SAAS,CAACtR,QAAQ;EACjC,IAAIR,IAAI,GAAG8R,SAAS,CAAC9R,IAAI;EACzB,IAAI6R,OAAO,GAAGC,SAAS,CAACD,OAAO;EAC/B,IAAIc,YAAY,GAAGb,SAAS,CAACA,SAAS;EACtC,IAAIA,SAAS,CAAChU,MAAM,EAAE;IACpBkC,IAAI,GAAGA,IAAI,GAAG8R,SAAS,CAAChU,MAAM;EAChC;EACA,IAAIgU,SAAS,CAACE,KAAK,EAAE;IACnBhS,IAAI,GAAGM,QAAQ,GAAG,IAAI,GAAGE,QAAQ,GAAGR,IAAI;IACxCQ,QAAQ,GAAGsR,SAAS,CAACE,KAAK,CAACY,IAAI,IAAId,SAAS,CAACE,KAAK,CAACxR,QAAQ;IAC3DD,IAAI,GAAGuR,SAAS,CAACE,KAAK,CAACzR,IAAI;IAC3BD,QAAQ,GAAGwR,SAAS,CAACE,KAAK,CAAC1R,QAAQ,IAAIA,QAAQ;EACjD;EACA,OAAO;IACLuR,OAAO,EAAEA,OAAO;IAChBvR,QAAQ,EAAEA,QAAQ;IAClBE,QAAQ,EAAEA,QAAQ;IAClBR,IAAI,EAAEA,IAAI;IACVO,IAAI,EAAEA,IAAI;IACVmS,MAAM,EAAEA,MAAM;IACdZ,SAAS,EAAEa;EACb,CAAC;AACH;AAEA,SAASE,gBAAgBA,CAACC,IAAI,EAAE9S,IAAI,EAAE;EACpC,IAAI+S,iBAAiB,GAAG,KAAK,CAACzX,IAAI,CAACwX,IAAI,CAAC;EACxC,IAAIE,kBAAkB,GAAG,KAAK,CAAC1X,IAAI,CAAC0E,IAAI,CAAC;EAEzC,IAAI+S,iBAAiB,IAAIC,kBAAkB,EAAE;IAC3ChT,IAAI,GAAGA,IAAI,CAACI,SAAS,CAAC,CAAC,CAAC;EAC1B,CAAC,MAAM,IAAI,CAAC2S,iBAAiB,IAAI,CAACC,kBAAkB,EAAE;IACpDhT,IAAI,GAAG,GAAG,GAAGA,IAAI;EACnB;EAEA,OAAO8S,IAAI,GAAG9S,IAAI;AACpB;;;;;;;;;+CClGA,qJAAAiT,mBAAA,YAAAA,oBAAA,WAAA9W,CAAA,SAAA7B,CAAA,EAAA6B,CAAA,OAAAY,CAAA,GAAAlE,MAAA,CAAAC,SAAA,EAAA8C,CAAA,GAAAmB,CAAA,CAAAhE,cAAA,EAAA+F,CAAA,GAAAjG,MAAA,CAAAqa,cAAA,cAAA5Y,CAAA,EAAA6B,CAAA,EAAAY,CAAA,IAAAzC,CAAA,CAAA6B,CAAA,IAAAY,CAAA,CAAAxB,KAAA,KAAA7B,CAAA,wBAAAyZ,MAAA,GAAAA,MAAA,OAAApN,CAAA,GAAArM,CAAA,CAAA0Z,QAAA,kBAAAtW,CAAA,GAAApD,CAAA,CAAA2Z,aAAA,uBAAArX,CAAA,GAAAtC,CAAA,CAAA4Z,WAAA,8BAAAC,OAAAjZ,CAAA,EAAA6B,CAAA,EAAAY,CAAA,WAAAlE,MAAA,CAAAqa,cAAA,CAAA5Y,CAAA,EAAA6B,CAAA,IAAAZ,KAAA,EAAAwB,CAAA,EAAAyW,UAAA,MAAAC,YAAA,MAAAC,QAAA,SAAApZ,CAAA,CAAA6B,CAAA,WAAAoX,MAAA,mBAAAjZ,CAAA,IAAAiZ,MAAA,YAAAA,OAAAjZ,CAAA,EAAA6B,CAAA,EAAAY,CAAA,WAAAzC,CAAA,CAAA6B,CAAA,IAAAY,CAAA,gBAAA4W,KAAArZ,CAAA,EAAA6B,CAAA,EAAAY,CAAA,EAAAnB,CAAA,QAAAlC,CAAA,GAAAyC,CAAA,IAAAA,CAAA,CAAArD,SAAA,YAAA8a,SAAA,GAAAzX,CAAA,GAAAyX,SAAA,EAAA7N,CAAA,GAAAlN,MAAA,CAAAmB,MAAA,CAAAN,CAAA,CAAAZ,SAAA,GAAAgE,CAAA,OAAA+W,OAAA,CAAAjY,CAAA,gBAAAkD,CAAA,CAAAiH,CAAA,eAAAxK,KAAA,EAAAuY,gBAAA,CAAAxZ,CAAA,EAAAyC,CAAA,EAAAD,CAAA,MAAAiJ,CAAA,aAAAgO,SAAAzZ,CAAA,EAAA6B,CAAA,EAAAY,CAAA,mBAAAvB,IAAA,YAAAmI,GAAA,EAAArJ,CAAA,CAAAlB,IAAA,CAAA+C,CAAA,EAAAY,CAAA,cAAAzC,CAAA,aAAAkB,IAAA,WAAAmI,GAAA,EAAArJ,CAAA,QAAA6B,CAAA,CAAAwX,IAAA,GAAAA,IAAA,MAAAxT,CAAA,qBAAAjB,CAAA,qBAAArE,CAAA,gBAAAuG,CAAA,gBAAA4S,CAAA,gBAAAJ,UAAA,cAAAK,kBAAA,cAAAC,2BAAA,SAAA7X,CAAA,OAAAkX,MAAA,CAAAlX,CAAA,EAAA0J,CAAA,qCAAApJ,CAAA,GAAA9D,MAAA,CAAAsb,cAAA,EAAAC,CAAA,GAAAzX,CAAA,IAAAA,CAAA,CAAAA,CAAA,CAAA0X,MAAA,QAAAD,CAAA,IAAAA,CAAA,KAAArX,CAAA,IAAAnB,CAAA,CAAAxC,IAAA,CAAAgb,CAAA,EAAArO,CAAA,MAAA1J,CAAA,GAAA+X,CAAA,OAAAE,CAAA,GAAAJ,0BAAA,CAAApb,SAAA,GAAA8a,SAAA,CAAA9a,SAAA,GAAAD,MAAA,CAAAmB,MAAA,CAAAqC,CAAA,YAAAkY,sBAAAja,CAAA,gCAAAka,OAAA,WAAArY,CAAA,IAAAoX,MAAA,CAAAjZ,CAAA,EAAA6B,CAAA,YAAA7B,CAAA,gBAAAma,OAAA,CAAAtY,CAAA,EAAA7B,CAAA,sBAAAoa,cAAApa,CAAA,EAAA6B,CAAA,aAAAwY,OAAA5X,CAAA,EAAA+B,CAAA,EAAApF,CAAA,EAAAqM,CAAA,QAAAjJ,CAAA,GAAAiX,QAAA,CAAAzZ,CAAA,CAAAyC,CAAA,GAAAzC,CAAA,EAAAwE,CAAA,mBAAAhC,CAAA,CAAAtB,IAAA,QAAAQ,CAAA,GAAAc,CAAA,CAAA6G,GAAA,EAAAxD,CAAA,GAAAnE,CAAA,CAAAT,KAAA,SAAA4E,CAAA,gBAAA3F,UAAA,CAAA2F,CAAA,KAAAvE,CAAA,CAAAxC,IAAA,CAAA+G,CAAA,eAAAhE,CAAA,CAAAyY,OAAA,CAAAzU,CAAA,CAAA0U,OAAA,EAAAvY,IAAA,WAAAhC,CAAA,IAAAqa,MAAA,SAAAra,CAAA,EAAAZ,CAAA,EAAAqM,CAAA,gBAAAzL,CAAA,IAAAqa,MAAA,UAAAra,CAAA,EAAAZ,CAAA,EAAAqM,CAAA,QAAA5J,CAAA,CAAAyY,OAAA,CAAAzU,CAAA,EAAA7D,IAAA,WAAAhC,CAAA,IAAA0B,CAAA,CAAAT,KAAA,GAAAjB,CAAA,EAAAZ,CAAA,CAAAsC,CAAA,gBAAA1B,CAAA,WAAAqa,MAAA,UAAAra,CAAA,EAAAZ,CAAA,EAAAqM,CAAA,SAAAA,CAAA,CAAAjJ,CAAA,CAAA6G,GAAA,SAAA5G,CAAA,EAAA+B,CAAA,oBAAAvD,KAAA,WAAAA,MAAAjB,CAAA,EAAAsB,CAAA,aAAAkZ,2BAAA,eAAA3Y,CAAA,WAAAA,CAAA,EAAAY,CAAA,IAAA4X,MAAA,CAAAra,CAAA,EAAAsB,CAAA,EAAAO,CAAA,EAAAY,CAAA,gBAAAA,CAAA,GAAAA,CAAA,GAAAA,CAAA,CAAAT,IAAA,CAAAwY,0BAAA,EAAAA,0BAAA,IAAAA,0BAAA,qBAAAhB,iBAAA3X,CAAA,EAAAY,CAAA,EAAAnB,CAAA,QAAAkD,CAAA,GAAAqB,CAAA,mBAAAzG,CAAA,EAAAqM,CAAA,QAAAjH,CAAA,KAAAjE,CAAA,QAAAJ,KAAA,sCAAAqE,CAAA,KAAAsC,CAAA,oBAAA1H,CAAA,QAAAqM,CAAA,WAAAxK,KAAA,EAAAjB,CAAA,EAAAwL,IAAA,eAAAlK,CAAA,CAAA8W,MAAA,GAAAhZ,CAAA,EAAAkC,CAAA,CAAA+H,GAAA,GAAAoC,CAAA,UAAAjJ,CAAA,GAAAlB,CAAA,CAAAmZ,QAAA,MAAAjY,CAAA,QAAAd,CAAA,GAAAgZ,mBAAA,CAAAlY,CAAA,EAAAlB,CAAA,OAAAI,CAAA,QAAAA,CAAA,KAAAgY,CAAA,mBAAAhY,CAAA,qBAAAJ,CAAA,CAAA8W,MAAA,EAAA9W,CAAA,CAAAqZ,IAAA,GAAArZ,CAAA,CAAAsZ,KAAA,GAAAtZ,CAAA,CAAA+H,GAAA,sBAAA/H,CAAA,CAAA8W,MAAA,QAAA5T,CAAA,KAAAqB,CAAA,QAAArB,CAAA,GAAAsC,CAAA,EAAAxF,CAAA,CAAA+H,GAAA,EAAA/H,CAAA,CAAAuZ,iBAAA,CAAAvZ,CAAA,CAAA+H,GAAA,uBAAA/H,CAAA,CAAA8W,MAAA,IAAA9W,CAAA,CAAAwZ,MAAA,WAAAxZ,CAAA,CAAA+H,GAAA,GAAA7E,CAAA,GAAAjE,CAAA,MAAAwB,CAAA,GAAA0X,QAAA,CAAA5X,CAAA,EAAAY,CAAA,EAAAnB,CAAA,oBAAAS,CAAA,CAAAb,IAAA,QAAAsD,CAAA,GAAAlD,CAAA,CAAAkK,IAAA,GAAA1E,CAAA,GAAAlC,CAAA,EAAA7C,CAAA,CAAAsH,GAAA,KAAAqQ,CAAA,qBAAAzY,KAAA,EAAAc,CAAA,CAAAsH,GAAA,EAAAmC,IAAA,EAAAlK,CAAA,CAAAkK,IAAA,kBAAAzJ,CAAA,CAAAb,IAAA,KAAAsD,CAAA,GAAAsC,CAAA,EAAAxF,CAAA,CAAA8W,MAAA,YAAA9W,CAAA,CAAA+H,GAAA,GAAAtH,CAAA,CAAAsH,GAAA,mBAAAqR,oBAAA7Y,CAAA,EAAAY,CAAA,QAAAnB,CAAA,GAAAmB,CAAA,CAAA2V,MAAA,EAAA5T,CAAA,GAAA3C,CAAA,CAAAiX,QAAA,CAAAxX,CAAA,OAAAkD,CAAA,KAAAxE,CAAA,SAAAyC,CAAA,CAAAgY,QAAA,qBAAAnZ,CAAA,IAAAO,CAAA,CAAAiX,QAAA,CAAAiC,MAAA,KAAAtY,CAAA,CAAA2V,MAAA,aAAA3V,CAAA,CAAA4G,GAAA,GAAArJ,CAAA,EAAA0a,mBAAA,CAAA7Y,CAAA,EAAAY,CAAA,eAAAA,CAAA,CAAA2V,MAAA,kBAAA9W,CAAA,KAAAmB,CAAA,CAAA2V,MAAA,YAAA3V,CAAA,CAAA4G,GAAA,OAAA2R,SAAA,uCAAA1Z,CAAA,iBAAAoY,CAAA,MAAAta,CAAA,GAAAqa,QAAA,CAAAjV,CAAA,EAAA3C,CAAA,CAAAiX,QAAA,EAAArW,CAAA,CAAA4G,GAAA,mBAAAjK,CAAA,CAAA8B,IAAA,SAAAuB,CAAA,CAAA2V,MAAA,YAAA3V,CAAA,CAAA4G,GAAA,GAAAjK,CAAA,CAAAiK,GAAA,EAAA5G,CAAA,CAAAgY,QAAA,SAAAf,CAAA,MAAAjO,CAAA,GAAArM,CAAA,CAAAiK,GAAA,SAAAoC,CAAA,GAAAA,CAAA,CAAAD,IAAA,IAAA/I,CAAA,CAAAZ,CAAA,CAAAoZ,UAAA,IAAAxP,CAAA,CAAAxK,KAAA,EAAAwB,CAAA,CAAAyY,IAAA,GAAArZ,CAAA,CAAAsZ,OAAA,eAAA1Y,CAAA,CAAA2V,MAAA,KAAA3V,CAAA,CAAA2V,MAAA,WAAA3V,CAAA,CAAA4G,GAAA,GAAArJ,CAAA,GAAAyC,CAAA,CAAAgY,QAAA,SAAAf,CAAA,IAAAjO,CAAA,IAAAhJ,CAAA,CAAA2V,MAAA,YAAA3V,CAAA,CAAA4G,GAAA,OAAA2R,SAAA,sCAAAvY,CAAA,CAAAgY,QAAA,SAAAf,CAAA,cAAA0B,aAAApb,CAAA,QAAA6B,CAAA,KAAAwZ,MAAA,EAAArb,CAAA,YAAAA,CAAA,KAAA6B,CAAA,CAAAyZ,QAAA,GAAAtb,CAAA,WAAAA,CAAA,KAAA6B,CAAA,CAAA0Z,UAAA,GAAAvb,CAAA,KAAA6B,CAAA,CAAA2Z,QAAA,GAAAxb,CAAA,WAAAyb,UAAA,CAAAlW,IAAA,CAAA1D,CAAA,cAAA6Z,cAAA1b,CAAA,QAAA6B,CAAA,GAAA7B,CAAA,CAAA2b,UAAA,QAAA9Z,CAAA,CAAAX,IAAA,oBAAAW,CAAA,CAAAwH,GAAA,EAAArJ,CAAA,CAAA2b,UAAA,GAAA9Z,CAAA,aAAA0X,QAAAvZ,CAAA,SAAAyb,UAAA,MAAAJ,MAAA,aAAArb,CAAA,CAAAka,OAAA,CAAAkB,YAAA,cAAAQ,KAAA,iBAAA7B,OAAAlY,CAAA,QAAAA,CAAA,WAAAA,CAAA,QAAAY,CAAA,GAAAZ,CAAA,CAAA4J,CAAA,OAAAhJ,CAAA,SAAAA,CAAA,CAAA3D,IAAA,CAAA+C,CAAA,4BAAAA,CAAA,CAAAqZ,IAAA,SAAArZ,CAAA,OAAAga,KAAA,CAAAha,CAAA,CAAAjC,MAAA,SAAA4E,CAAA,OAAApF,CAAA,YAAA8b,KAAA,aAAA1W,CAAA,GAAA3C,CAAA,CAAAjC,MAAA,OAAA0B,CAAA,CAAAxC,IAAA,CAAA+C,CAAA,EAAA2C,CAAA,UAAA0W,IAAA,CAAAja,KAAA,GAAAY,CAAA,CAAA2C,CAAA,GAAA0W,IAAA,CAAA1P,IAAA,OAAA0P,IAAA,SAAAA,IAAA,CAAAja,KAAA,GAAAjB,CAAA,EAAAkb,IAAA,CAAA1P,IAAA,OAAA0P,IAAA,YAAA9b,CAAA,CAAA8b,IAAA,GAAA9b,CAAA,gBAAA4b,SAAA,CAAA9a,UAAA,CAAA2B,CAAA,kCAAA8X,iBAAA,CAAAnb,SAAA,GAAAob,0BAAA,EAAApV,CAAA,CAAAwV,CAAA,mBAAA/Y,KAAA,EAAA2Y,0BAAA,EAAAT,YAAA,SAAA3U,CAAA,CAAAoV,0BAAA,mBAAA3Y,KAAA,EAAA0Y,iBAAA,EAAAR,YAAA,SAAAQ,iBAAA,CAAAmC,WAAA,GAAA7C,MAAA,CAAAW,0BAAA,EAAAlY,CAAA,wBAAAG,CAAA,CAAAka,mBAAA,aAAA/b,CAAA,QAAA6B,CAAA,wBAAA7B,CAAA,IAAAA,CAAA,CAAAf,WAAA,WAAA4C,CAAA,KAAAA,CAAA,KAAA8X,iBAAA,6BAAA9X,CAAA,CAAAia,WAAA,IAAAja,CAAA,CAAArC,IAAA,OAAAqC,CAAA,CAAAma,IAAA,aAAAhc,CAAA,WAAAzB,MAAA,CAAAuN,cAAA,GAAAvN,MAAA,CAAAuN,cAAA,CAAA9L,CAAA,EAAA4Z,0BAAA,KAAA5Z,CAAA,CAAAic,SAAA,GAAArC,0BAAA,EAAAX,MAAA,CAAAjZ,CAAA,EAAA0B,CAAA,yBAAA1B,CAAA,CAAAxB,SAAA,GAAAD,MAAA,CAAAmB,MAAA,CAAAsa,CAAA,GAAAha,CAAA,KAAA6B,CAAA,CAAAqa,KAAA,aAAAlc,CAAA,aAAAua,OAAA,EAAAva,CAAA,OAAAia,qBAAA,CAAAG,aAAA,CAAA5b,SAAA,GAAAya,MAAA,CAAAmB,aAAA,CAAA5b,SAAA,EAAAgE,CAAA,iCAAAX,CAAA,CAAAuY,aAAA,GAAAA,aAAA,EAAAvY,CAAA,CAAAsa,KAAA,aAAAnc,CAAA,EAAAyC,CAAA,EAAAnB,CAAA,EAAAkD,CAAA,EAAApF,CAAA,eAAAA,CAAA,KAAAA,CAAA,GAAAgd,OAAA,OAAA3Q,CAAA,OAAA2O,aAAA,CAAAf,IAAA,CAAArZ,CAAA,EAAAyC,CAAA,EAAAnB,CAAA,EAAAkD,CAAA,GAAApF,CAAA,UAAAyC,CAAA,CAAAka,mBAAA,CAAAtZ,CAAA,IAAAgJ,CAAA,GAAAA,CAAA,CAAAyP,IAAA,GAAAlZ,IAAA,WAAAhC,CAAA,WAAAA,CAAA,CAAAwL,IAAA,GAAAxL,CAAA,CAAAiB,KAAA,GAAAwK,CAAA,CAAAyP,IAAA,WAAAjB,qBAAA,CAAAD,CAAA,GAAAf,MAAA,CAAAe,CAAA,EAAAtY,CAAA,gBAAAuX,MAAA,CAAAe,CAAA,EAAAvO,CAAA,iCAAAwN,MAAA,CAAAe,CAAA,6DAAAnY,CAAA,CAAA8J,IAAA,aAAA3L,CAAA,QAAA6B,CAAA,GAAAtD,MAAA,CAAAyB,CAAA,GAAAyC,CAAA,gBAAAnB,CAAA,IAAAO,CAAA,EAAAY,CAAA,CAAA8C,IAAA,CAAAjE,CAAA,UAAAmB,CAAA,CAAA4Z,OAAA,aAAAnB,KAAA,WAAAzY,CAAA,CAAA7C,MAAA,SAAAI,CAAA,GAAAyC,CAAA,CAAAgK,GAAA,QAAAzM,CAAA,IAAA6B,CAAA,SAAAqZ,IAAA,CAAAja,KAAA,GAAAjB,CAAA,EAAAkb,IAAA,CAAA1P,IAAA,OAAA0P,IAAA,WAAAA,IAAA,CAAA1P,IAAA,OAAA0P,IAAA,QAAArZ,CAAA,CAAAkY,MAAA,GAAAA,MAAA,EAAAR,OAAA,CAAA/a,SAAA,KAAAS,WAAA,EAAAsa,OAAA,EAAAqC,KAAA,WAAAA,MAAA/Z,CAAA,aAAAya,IAAA,WAAApB,IAAA,WAAAP,IAAA,QAAAC,KAAA,GAAA5a,CAAA,OAAAwL,IAAA,YAAAiP,QAAA,cAAArC,MAAA,gBAAA/O,GAAA,GAAArJ,CAAA,OAAAyb,UAAA,CAAAvB,OAAA,CAAAwB,aAAA,IAAA7Z,CAAA,WAAAY,CAAA,kBAAAA,CAAA,CAAA8Z,MAAA,OAAAjb,CAAA,CAAAxC,IAAA,OAAA2D,CAAA,MAAAoZ,KAAA,EAAApZ,CAAA,CAAAmG,KAAA,cAAAnG,CAAA,IAAAzC,CAAA,MAAAkR,IAAA,WAAAA,KAAA,SAAA1F,IAAA,WAAAxL,CAAA,QAAAyb,UAAA,IAAAE,UAAA,kBAAA3b,CAAA,CAAAkB,IAAA,QAAAlB,CAAA,CAAAqJ,GAAA,cAAAmT,IAAA,KAAA3B,iBAAA,WAAAA,kBAAAhZ,CAAA,aAAA2J,IAAA,QAAA3J,CAAA,MAAAY,CAAA,kBAAAga,OAAAnb,CAAA,EAAAkD,CAAA,WAAAiH,CAAA,CAAAvK,IAAA,YAAAuK,CAAA,CAAApC,GAAA,GAAAxH,CAAA,EAAAY,CAAA,CAAAyY,IAAA,GAAA5Z,CAAA,EAAAkD,CAAA,KAAA/B,CAAA,CAAA2V,MAAA,WAAA3V,CAAA,CAAA4G,GAAA,GAAArJ,CAAA,KAAAwE,CAAA,aAAAA,CAAA,QAAAiX,UAAA,CAAA7b,MAAA,MAAA4E,CAAA,SAAAA,CAAA,QAAApF,CAAA,QAAAqc,UAAA,CAAAjX,CAAA,GAAAiH,CAAA,GAAArM,CAAA,CAAAuc,UAAA,iBAAAvc,CAAA,CAAAic,MAAA,SAAAoB,MAAA,aAAArd,CAAA,CAAAic,MAAA,SAAAiB,IAAA,QAAA9Z,CAAA,GAAAlB,CAAA,CAAAxC,IAAA,CAAAM,CAAA,eAAAsC,CAAA,GAAAJ,CAAA,CAAAxC,IAAA,CAAAM,CAAA,qBAAAoD,CAAA,IAAAd,CAAA,aAAA4a,IAAA,GAAAld,CAAA,CAAAkc,QAAA,SAAAmB,MAAA,CAAArd,CAAA,CAAAkc,QAAA,gBAAAgB,IAAA,GAAAld,CAAA,CAAAmc,UAAA,SAAAkB,MAAA,CAAArd,CAAA,CAAAmc,UAAA,cAAA/Y,CAAA,aAAA8Z,IAAA,GAAAld,CAAA,CAAAkc,QAAA,SAAAmB,MAAA,CAAArd,CAAA,CAAAkc,QAAA,qBAAA5Z,CAAA,QAAAvB,KAAA,qDAAAmc,IAAA,GAAAld,CAAA,CAAAmc,UAAA,SAAAkB,MAAA,CAAArd,CAAA,CAAAmc,UAAA,YAAAT,MAAA,WAAAA,OAAA9a,CAAA,EAAA6B,CAAA,aAAAY,CAAA,QAAAgZ,UAAA,CAAA7b,MAAA,MAAA6C,CAAA,SAAAA,CAAA,QAAA+B,CAAA,QAAAiX,UAAA,CAAAhZ,CAAA,OAAA+B,CAAA,CAAA6W,MAAA,SAAAiB,IAAA,IAAAhb,CAAA,CAAAxC,IAAA,CAAA0F,CAAA,wBAAA8X,IAAA,GAAA9X,CAAA,CAAA+W,UAAA,QAAAnc,CAAA,GAAAoF,CAAA,aAAApF,CAAA,iBAAAY,CAAA,mBAAAA,CAAA,KAAAZ,CAAA,CAAAic,MAAA,IAAAxZ,CAAA,IAAAA,CAAA,IAAAzC,CAAA,CAAAmc,UAAA,KAAAnc,CAAA,cAAAqM,CAAA,GAAArM,CAAA,GAAAA,CAAA,CAAAuc,UAAA,cAAAlQ,CAAA,CAAAvK,IAAA,GAAAlB,CAAA,EAAAyL,CAAA,CAAApC,GAAA,GAAAxH,CAAA,EAAAzC,CAAA,SAAAgZ,MAAA,gBAAA8C,IAAA,GAAA9b,CAAA,CAAAmc,UAAA,EAAA7B,CAAA,SAAAgD,QAAA,CAAAjR,CAAA,MAAAiR,QAAA,WAAAA,SAAA1c,CAAA,EAAA6B,CAAA,oBAAA7B,CAAA,CAAAkB,IAAA,QAAAlB,CAAA,CAAAqJ,GAAA,qBAAArJ,CAAA,CAAAkB,IAAA,mBAAAlB,CAAA,CAAAkB,IAAA,QAAAga,IAAA,GAAAlb,CAAA,CAAAqJ,GAAA,gBAAArJ,CAAA,CAAAkB,IAAA,SAAAsb,IAAA,QAAAnT,GAAA,GAAArJ,CAAA,CAAAqJ,GAAA,OAAA+O,MAAA,kBAAA8C,IAAA,yBAAAlb,CAAA,CAAAkB,IAAA,IAAAW,CAAA,UAAAqZ,IAAA,GAAArZ,CAAA,GAAA6X,CAAA,KAAAiD,MAAA,WAAAA,OAAA3c,CAAA,aAAA6B,CAAA,QAAA4Z,UAAA,CAAA7b,MAAA,MAAAiC,CAAA,SAAAA,CAAA,QAAAY,CAAA,QAAAgZ,UAAA,CAAA5Z,CAAA,OAAAY,CAAA,CAAA8Y,UAAA,KAAAvb,CAAA,cAAA0c,QAAA,CAAAja,CAAA,CAAAkZ,UAAA,EAAAlZ,CAAA,CAAA+Y,QAAA,GAAAE,aAAA,CAAAjZ,CAAA,GAAAiX,CAAA,OAAAkD,KAAA,WAAAC,OAAA7c,CAAA,aAAA6B,CAAA,QAAA4Z,UAAA,CAAA7b,MAAA,MAAAiC,CAAA,SAAAA,CAAA,QAAAY,CAAA,QAAAgZ,UAAA,CAAA5Z,CAAA,OAAAY,CAAA,CAAA4Y,MAAA,KAAArb,CAAA,QAAAsB,CAAA,GAAAmB,CAAA,CAAAkZ,UAAA,kBAAAra,CAAA,CAAAJ,IAAA,QAAAsD,CAAA,GAAAlD,CAAA,CAAA+H,GAAA,EAAAqS,aAAA,CAAAjZ,CAAA,YAAA+B,CAAA,YAAArE,KAAA,8BAAA2c,aAAA,WAAAA,cAAAjb,CAAA,EAAAY,CAAA,EAAAnB,CAAA,gBAAAmZ,QAAA,KAAA3B,QAAA,EAAAiB,MAAA,CAAAlY,CAAA,GAAAoZ,UAAA,EAAAxY,CAAA,EAAA0Y,OAAA,EAAA7Z,CAAA,oBAAA8W,MAAA,UAAA/O,GAAA,GAAArJ,CAAA,GAAA0Z,CAAA,OAAA7X,CAAA;AAAA,SAAAkb,mBAAAzb,CAAA,EAAAtB,CAAA,EAAA6B,CAAA,EAAAY,CAAA,EAAA+B,CAAA,EAAAiH,CAAA,EAAAjJ,CAAA,cAAApD,CAAA,GAAAkC,CAAA,CAAAmK,CAAA,EAAAjJ,CAAA,GAAAd,CAAA,GAAAtC,CAAA,CAAA6B,KAAA,WAAAK,CAAA,gBAAAO,CAAA,CAAAP,CAAA,KAAAlC,CAAA,CAAAoM,IAAA,GAAAxL,CAAA,CAAA0B,CAAA,IAAA0a,OAAA,CAAA9B,OAAA,CAAA5Y,CAAA,EAAAM,IAAA,CAAAS,CAAA,EAAA+B,CAAA;AAAA,SAAAwY,kBAAA1b,CAAA,6BAAAtB,CAAA,SAAA6B,CAAA,GAAAhC,SAAA,aAAAuc,OAAA,WAAA3Z,CAAA,EAAA+B,CAAA,QAAAiH,CAAA,GAAAnK,CAAA,CAAA2b,KAAA,CAAAjd,CAAA,EAAA6B,CAAA,YAAAqb,MAAA5b,CAAA,IAAAyb,kBAAA,CAAAtR,CAAA,EAAAhJ,CAAA,EAAA+B,CAAA,EAAA0Y,KAAA,EAAAC,MAAA,UAAA7b,CAAA,cAAA6b,OAAA7b,CAAA,IAAAyb,kBAAA,CAAAtR,CAAA,EAAAhJ,CAAA,EAAA+B,CAAA,EAAA0Y,KAAA,EAAAC,MAAA,WAAA7b,CAAA,KAAA4b,KAAA;AADkC;AACS;AAE3C,IAAI7I,kBAAc,GAAG;EACnBnO,QAAQ,EAAE,iBAAiB;EAC3BR,IAAI,EAAE,cAAc;EACpBlC,MAAM,EAAE,IAAI;EACZ4L,OAAO,EAAE,GAAG;EACZpJ,QAAQ,EAAE,QAAQ;EAClBC,IAAI,EAAE;AACR,CAAC;AAED,IAAIoX,kBAAkB,GAAG;EACvBnX,QAAQ,EAAE,iBAAiB;EAC3BR,IAAI,EAAE,iBAAiB;EACvBlC,MAAM,EAAE,IAAI;EACZ4L,OAAO,EAAE,GAAG;EACZpJ,QAAQ,EAAE,QAAQ;EAClBC,IAAI,EAAE;AACR,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASqX,GAAGA,CAACpY,OAAO,EAAEsS,SAAS,EAAE+F,MAAM,EAAEC,UAAU,EAAE;EACnD,IAAI,CAACtY,OAAO,GAAGA,OAAO;EACtB,IAAI,CAACsS,SAAS,GAAGA,SAAS;EAC1B,IAAI,CAACpU,GAAG,GAAGma,MAAM;EACjB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC5B,IAAI,CAACvY,WAAW,GAAGC,OAAO,CAACD,WAAW;EACtC,IAAI,CAACkT,gBAAgB,GAAGsF,aAAa,CAACvY,OAAO,EAAEqY,MAAM,CAAC;EACtD,IAAI,CAACG,oBAAoB,GAAGC,iBAAiB,CAACzY,OAAO,EAAEqY,MAAM,CAAC;AAChE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAD,GAAG,CAAC9e,SAAS,CAACof,YAAY,GAAG,UAAAC,IAAA,EAK1B;EAAA,IAJD5Y,WAAW,GAAA4Y,IAAA,CAAX5Y,WAAW;IACXC,OAAO,GAAA2Y,IAAA,CAAP3Y,OAAO;IACP8H,OAAO,GAAA6Q,IAAA,CAAP7Q,OAAO;IACPwE,OAAO,GAAAqM,IAAA,CAAPrM,OAAO;EAEP,IAAMuG,IAAI,GAAG,IAAI;EACjB,OAAO,IAAIqE,OAAO,CAAC,UAAC9B,OAAO,EAAEwD,MAAM,EAAK;IACtC/F,IAAI,CAACP,SAAS,CAACuG,IAAI,CAAC;MAClB9Y,WAAW,EAAXA,WAAW;MACXC,OAAO,EAAPA,OAAO;MACP8H,OAAO,EAAPA,OAAO;MACPwE,OAAO,EAAPA,OAAO;MACPrI,QAAQ,EAAE,SAAVA,QAAQA,CAAGb,GAAG,EAAEC,IAAI;QAAA,OAAMD,GAAG,GAAGwV,MAAM,CAACxV,GAAG,CAAC,GAAGgS,OAAO,CAAC/R,IAAI,CAAC;MAAA;IAC7D,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA+U,GAAG,CAAC9e,SAAS,CAAC4T,QAAQ,GAAG,UAAUrI,IAAI,EAAEZ,QAAQ,EAAE;EACjD,IAAMjE,OAAO,GAAGkY,2BAAwB,CAAC,IAAI,CAACjF,gBAAgB,EAAE,MAAM,CAAC;EACvE,IAAMnL,OAAO,GAAGoQ,YAAoB,CAACrT,IAAI,CAAC;EAC1C,IAAMgO,IAAI,GAAG,IAAI;;EAEjB;EACAiG,UAAU,CAAC,YAAY;IACrBjG,IAAI,CAACP,SAAS,CAACuG,IAAI,CAAC;MAClB9Y,WAAW,EAAE8S,IAAI,CAAC9S,WAAW;MAC7BC,OAAO,EAAPA,OAAO;MACP8H,OAAO,EAAPA,OAAO;MACP7D,QAAQ,EAARA;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAAC,CAAC;AACP,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACAmU,GAAG,CAAC9e,SAAS,CAACyf,SAAS;EAAA,IAAAC,KAAA,GAAAlB,iBAAA,cAAArE,mBAAA,GAAAqD,IAAA,CAAG,SAAAmC,QAAgBnR,OAAO;IAAA,IAAAwE,OAAA;MAAAtM,OAAA;MAAAkZ,KAAA,GAAAve,SAAA;IAAA,OAAA8Y,mBAAA,GAAAU,IAAA,UAAAgF,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAhC,IAAA,GAAAgC,QAAA,CAAApD,IAAA;QAAA;UAAE1J,OAAO,GAAA4M,KAAA,CAAAxe,MAAA,QAAAwe,KAAA,QAAA7Z,SAAA,GAAA6Z,KAAA,MAAG,CAAC,CAAC;UACvDlZ,OAAO,GAAGkY,2BAAwB,CAAC,IAAI,CAACM,oBAAoB,EAAE,MAAM,CAAC;UAAAY,QAAA,CAAApD,IAAA;UAAA,OAE9D,IAAI,CAAC0C,YAAY,CAAC;YAC7B3Y,WAAW,EAAE,IAAI,CAACA,WAAW;YAC7BC,OAAO,EAAPA,OAAO;YACP8H,OAAO,EAAPA,OAAO;YACPwE,OAAO,EAAPA;UACF,CAAC,CAAC;QAAA;UAAA,OAAA8M,QAAA,CAAAxD,MAAA,WAAAwD,QAAA,CAAA3D,IAAA;QAAA;QAAA;UAAA,OAAA2D,QAAA,CAAApN,IAAA;MAAA;IAAA,GAAAiN,OAAA;EAAA,CACH;EAAA,iBAAAI,EAAA;IAAA,OAAAL,KAAA,CAAAjB,KAAA,OAAApd,SAAA;EAAA;AAAA;;AAED;AACA;AACA;AACA;AACA;AACAyd,GAAG,CAAC9e,SAAS,CAACuW,gBAAgB,GAAG,UAAUhL,IAAI,EAAEZ,QAAQ,EAAE;EACzD,IAAI6D,OAAO,GAAGoQ,YAAoB,CAACrT,IAAI,CAAC;EAExC,IAAIyU,eAAe;EACnB,IAAI,IAAI,CAAChB,UAAU,EAAE;IACnBgB,eAAe,GAAG,IAAI,CAAChB,UAAU,CAACiB,QAAQ,CAACzR,OAAO,CAAC;EACrD,CAAC,MAAM;IACLwR,eAAe,GAAG/a,SAAW,CAACuJ,OAAO,CAAC;EACxC;EAEA,IAAIwR,eAAe,CAACvb,KAAK,EAAE;IACzB,IAAIkG,QAAQ,EAAE;MACZA,QAAQ,CAACqV,eAAe,CAACvb,KAAK,CAAC;IACjC;IACA,OAAO,IAAI;EACb;EAEA,OAAOub,eAAe,CAACvd,KAAK;AAC9B,CAAC;;AAED;AACA;AACA;AACA;AACA;AACAqc,GAAG,CAAC9e,SAAS,CAAC0W,eAAe,GAAG,UAAUD,WAAW,EAAE9L,QAAQ,EAAE;EAC/D,IAAIgP,gBAAgB,GAAGiF,2BAAwB,CAC7C,IAAI,CAACjF,gBAAgB,EACrB,MACF,CAAC;EACD,IAAI,CAACX,SAAS,CAACtC,eAAe,CAC5B,IAAI,CAACjQ,WAAW,EAChBkT,gBAAgB,EAChBlD,WAAW,EACX9L,QACF,CAAC;AACH,CAAC;AAEDmU,GAAG,CAAC9e,SAAS,CAAC2R,SAAS,GAAG,UAAUjL,OAAO,EAAE;EAC3C,IAAImL,UAAU,GAAG,IAAI,CAACA,UAAU;EAChC,IAAI,CAACnL,OAAO,GAAGzB,SAAO,CAAC4M,UAAU,EAAEnL,OAAO,CAAC;EAC3C,IAAI,CAACiT,gBAAgB,GAAGsF,aAAa,CAAC,IAAI,CAACvY,OAAO,EAAE,IAAI,CAAC9B,GAAG,CAAC;EAC7D,IAAI,CAACsa,oBAAoB,GAAGC,iBAAiB,CAAC,IAAI,CAACzY,OAAO,EAAE,IAAI,CAAC9B,GAAG,CAAC;EACrE,IAAI,IAAI,CAAC8B,OAAO,CAACD,WAAW,KAAKV,SAAS,EAAE;IAC1C,IAAI,CAACU,WAAW,GAAG,IAAI,CAACC,OAAO,CAACD,WAAW;EAC7C;EACA,OAAO,IAAI;AACb,CAAC;AAED,SAASwY,aAAaA,CAACvY,OAAO,EAAE9B,GAAG,EAAE;EACnC,OAAOga,uBAA+B,CAAClY,OAAO,EAAEmP,kBAAc,EAAEjR,GAAG,CAAC;AACtE;AAEA,SAASua,iBAAiBA,CAACzY,OAAO,EAAE9B,GAAG,EAAE;EAAA,IAAAsb,gBAAA;EACvCxZ,OAAO,GAAAyZ,aAAA,CAAAA,aAAA,KAAQzZ,OAAO;IAAEyS,QAAQ,GAAA+G,gBAAA,GAAExZ,OAAO,CAAC4O,OAAO,cAAA4K,gBAAA,uBAAfA,gBAAA,CAAiB/G;EAAQ,EAAE;EAC7D,OAAOyF,uBAA+B,CAAClY,OAAO,EAAEmY,kBAAkB,EAAEja,GAAG,CAAC;AAC1E;AAEA,4CAAeka,GAAG;;ACnLlB,IAAIhQ,IAAG,GAAG,SAANA,GAAGA,CAAA,EAAS,CAAC,CAAC;AAElB,IAAMsR,MAAM,GAAG;EACb9b,KAAK,EAAE,CAAC;EACRC,IAAI,EAAE,CAAC;EACP2R,IAAI,EAAE,CAAC;EACPzR,KAAK,EAAE,CAAC;EACR4b,OAAO,EAAE;AACX,CAAC;AAED,IAAMxW,MAAM,GAAG;EACbpF,KAAK,EAAE,SAAPA,KAAKA,CAAA;IAAA,SAAA6b,IAAA,GAAAjf,SAAA,CAAAD,MAAA,EAAMkJ,IAAI,OAAAiW,KAAA,CAAAD,IAAA,GAAAE,IAAA,MAAAA,IAAA,GAAAF,IAAA,EAAAE,IAAA;MAAJlW,IAAI,CAAAkW,IAAA,IAAAnf,SAAA,CAAAmf,IAAA;IAAA;IAAA,OAAK1R,IAAG,CAAC,OAAO,EAAExE,IAAI,CAAC;EAAA;EACtC4L,IAAI,EAAE,SAANA,IAAIA,CAAA;IAAA,SAAAuK,KAAA,GAAApf,SAAA,CAAAD,MAAA,EAAMkJ,IAAI,OAAAiW,KAAA,CAAAE,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJpW,IAAI,CAAAoW,KAAA,IAAArf,SAAA,CAAAqf,KAAA;IAAA;IAAA,OAAK5R,IAAG,CAAC,MAAM,EAAExE,IAAI,CAAC;EAAA;EACpC/F,IAAI,EAAE,SAANA,IAAIA,CAAA;IAAA,SAAAoc,KAAA,GAAAtf,SAAA,CAAAD,MAAA,EAAMkJ,IAAI,OAAAiW,KAAA,CAAAI,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJtW,IAAI,CAAAsW,KAAA,IAAAvf,SAAA,CAAAuf,KAAA;IAAA;IAAA,OAAK9R,IAAG,CAAC,MAAM,EAAExE,IAAI,CAAC;EAAA;EACpChG,KAAK,EAAE,SAAPA,KAAKA,CAAA;IAAA,SAAAuc,KAAA,GAAAxf,SAAA,CAAAD,MAAA,EAAMkJ,IAAI,OAAAiW,KAAA,CAAAM,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJxW,IAAI,CAAAwW,KAAA,IAAAzf,SAAA,CAAAyf,KAAA;IAAA;IAAA,OAAKhS,IAAG,CAAC,OAAO,EAAExE,IAAI,CAAC;EAAA;EACtCwE,GAAG,EAAE,SAALA,GAAGA,CAAA;IAAA,SAAAiS,KAAA,GAAA1f,SAAA,CAAAD,MAAA,EAAMkJ,IAAI,OAAAiW,KAAA,CAAAQ,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJ1W,IAAI,CAAA0W,KAAA,IAAA3f,SAAA,CAAA2f,KAAA;IAAA;IAAA,OAAKlS,IAAG,CAAC,MAAM,EAAExE,IAAI,CAAC;EAAA;EACnC2W,IAAI,EAAE,SAANA,IAAIA,CAAA5B,IAAA,EAAoB;IAAA,IAAf1H,QAAQ,GAAA0H,IAAA,CAAR1H,QAAQ;IACf7I,IAAG,GAAG,SAANA,IAAGA,CAAanD,KAAK,EAAErB,IAAI,EAAE;MAC3B,IAAI8V,MAAM,CAACzU,KAAK,CAAC,GAAGyU,MAAM,CAACzI,QAAQ,CAAC,EAAE;MAEtCrN,IAAI,CAAC4W,OAAO,CAAC,UAAU,CAAC;MAExBC,OAAO,CAACxV,KAAK,CAAC,CAAC8S,KAAK,CAAC0C,OAAO,EAAE7W,IAAI,CAAC;IACrC,CAAC;EACH;AACF,CAAC;AAED,+CAAeT,MAAM;;AC3BrB,SAASuX,yBAAyBA,CAAC1d,MAAM,EAAE2d,OAAO,EAAEC,IAAI,EAAE;EACxD,IAAI,CAAC5d,MAAM,EAAE;IACX;EACF;EACA,IAAI6d,UAAU;EAEd,IAAI,OAAOF,OAAO,CAACG,kBAAkB,KAAK,UAAU,EAAE;IACpDD,UAAU,GAAGF,OAAO,CAACG,kBAAkB;EACzC,CAAC,MAAM,IAAI9d,MAAM,CAAC+d,OAAO,EAAE;IACzBF,UAAU,GAAG7d,MAAM,CAAC+d,OAAO;IAC3B,OAAOF,UAAU,CAACC,kBAAkB,EAAE;MACpCD,UAAU,GAAGA,UAAU,CAACC,kBAAkB;IAC5C;IACAH,OAAO,CAACG,kBAAkB,GAAGD,UAAU;EACzC;EAEAF,OAAO,CAACK,qBAAqB,CAAC,CAAC;EAE/B,IAAIC,EAAE,GAAG,SAALA,EAAEA,CAAA,EAAe;IACnB,IAAIrX,IAAI,GAAGiW,KAAK,CAACvgB,SAAS,CAACoK,KAAK,CAAC9J,IAAI,CAACe,SAAS,EAAE,CAAC,CAAC;IACnDugB,qBAAqB,CAACle,MAAM,EAAE2d,OAAO,EAAEE,UAAU,EAAEjX,IAAI,CAAC;EAC1D,CAAC;EACD,IAAIgX,IAAI,EAAE;IACRK,EAAE,CAACH,kBAAkB,GAAGD,UAAU;EACpC;EACA7d,MAAM,CAAC+d,OAAO,GAAGE,EAAE;AACrB;AAEA,SAASC,qBAAqBA,CAACle,MAAM,EAAEO,CAAC,EAAE4d,GAAG,EAAEvX,IAAI,EAAE;EACnD,IAAI5G,MAAM,CAACoe,oBAAoB,EAAE;IAC/B,IAAI,CAACxX,IAAI,CAAC,CAAC,CAAC,EAAE;MACZA,IAAI,CAAC,CAAC,CAAC,GAAG5G,MAAM,CAACoe,oBAAoB;IACvC;IACA,IAAI,CAACxX,IAAI,CAAC,CAAC,CAAC,EAAE;MACZA,IAAI,CAAC,CAAC,CAAC,GAAG5G,MAAM,CAACoe,oBAAoB,CAACC,eAAe;IACvD;IACAre,MAAM,CAACoe,oBAAoB,GAAG,IAAI;EACpC;EAEA,IAAIE,GAAG,GAAG/d,CAAC,CAACge,uBAAuB,CAACxD,KAAK,CAACxa,CAAC,EAAEqG,IAAI,CAAC;EAElD,IAAIuX,GAAG,EAAE;IACPA,GAAG,CAACpD,KAAK,CAAC/a,MAAM,EAAE4G,IAAI,CAAC;EACzB;;EAEA;EACA;EACA;EACA,IAAI0X,GAAG,KAAK,WAAW,EAAE;IACvB/d,CAAC,CAACie,sBAAsB,IAAI,CAAC,CAAC,CAAC;EACjC;AACF;AAEA,SAASC,0BAA0BA,CAACze,MAAM,EAAE2d,OAAO,EAAEC,IAAI,EAAE;EACzD,IAAI,CAAC5d,MAAM,EAAE;IACX;EACF;EAEA,IACE,OAAOA,MAAM,CAAC0e,WAAW,KAAK,UAAU,IACxC1e,MAAM,CAAC0e,WAAW,CAACC,aAAa,EAChC;IACA3e,MAAM,CAAC4e,mBAAmB,CAAC,oBAAoB,EAAE5e,MAAM,CAAC0e,WAAW,CAAC;EACtE;EAEA,IAAIG,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAaC,GAAG,EAAE;IACpC,IAAIC,MAAM,EAAEC,OAAO,EAAEC,MAAM;IAC3B,IAAI;MACFF,MAAM,GAAGD,GAAG,CAACC,MAAM;IACrB,CAAC,CAAC,OAAOpf,CAAC,EAAE;MACVof,MAAM,GAAG1c,SAAS;IACpB;IACA,IAAI;MACF2c,OAAO,GAAGF,GAAG,CAACE,OAAO;IACvB,CAAC,CAAC,OAAOrf,CAAC,EAAE;MACVqf,OAAO,GAAG,yDAAyD;IACrE;IACA,IAAI;MACFC,MAAM,GAAGH,GAAG,CAACG,MAAM;MACnB,IAAI,CAACF,MAAM,IAAIE,MAAM,EAAE;QACrBF,MAAM,GAAGE,MAAM,CAACF,MAAM;QACtBC,OAAO,GAAGC,MAAM,CAACD,OAAO;MAC1B;IACF,CAAC,CAAC,OAAOrf,CAAC,EAAE;MACV;IAAA;IAEF,IAAI,CAACof,MAAM,EAAE;MACXA,MAAM,GAAG,wDAAwD;IACnE;IAEA,IAAIpB,OAAO,IAAIA,OAAO,CAACuB,wBAAwB,EAAE;MAC/CvB,OAAO,CAACuB,wBAAwB,CAACH,MAAM,EAAEC,OAAO,CAAC;IACnD;EACF,CAAC;EACDH,gBAAgB,CAACF,aAAa,GAAGf,IAAI;EACrC5d,MAAM,CAAC0e,WAAW,GAAGG,gBAAgB;EACrC7e,MAAM,CAACmf,gBAAgB,CAAC,oBAAoB,EAAEN,gBAAgB,CAAC;AACjE;;;;;;;;;ACjGqC;AACC;AAEtC,SAASO,gBAAgBA,CAAAzD,IAAA,EAQtB;EAAA,IAPD5Y,WAAW,GAAA4Y,IAAA,CAAX5Y,WAAW;IACX7B,GAAG,GAAAya,IAAA,CAAHza,GAAG;IACHgV,MAAM,GAAAyF,IAAA,CAANzF,MAAM;IACNpL,OAAO,GAAA6Q,IAAA,CAAP7Q,OAAO;IACPwE,OAAO,GAAAqM,IAAA,CAAPrM,OAAO;IACPrI,QAAQ,GAAA0U,IAAA,CAAR1U,QAAQ;IACRoO,OAAO,GAAAsG,IAAA,CAAPtG,OAAO;EAEP,IAAIgK,UAAU;EACd,IAAIC,SAAS;EAEb,IAAI/d,cAAgB,CAAC8T,OAAO,CAAC,EAAE;IAC7BgK,UAAU,GAAG,IAAIE,eAAe,CAAC,CAAC;IAClCD,SAAS,GAAGxD,UAAU,CAAC,YAAY;MACjCuD,UAAU,CAACG,KAAK,CAAC,CAAC;IACpB,CAAC,EAAEnK,OAAO,CAAC;EACb;EAEA/F,OAAO,GAAAmN,kBAAA;IACL,cAAc,EAAE,kBAAkB;IAClC,wBAAwB,EAAE1Z,WAAW;IACrC0c,MAAM,EAAEJ,UAAU,IAAIA,UAAU,CAACI;EAAM,GACpCnQ,OAAO,CACX;EAEDyG,KAAK,CAAC7U,GAAG,EAAE;IACTgV,MAAM,EAANA,MAAM;IACN5G,OAAO,EAAPA,OAAO;IACPvC,IAAI,EAAEjC;EACR,CAAC,CAAC,CACChL,IAAI,CAAC,UAAU4f,QAAQ,EAAE;IACxB,IAAIJ,SAAS,EAAEK,YAAY,CAACL,SAAS,CAAC;IACtC,IAAMM,WAAW,GAAGF,QAAQ,CAACpQ,OAAO;IAEpC,IAAMuQ,WAAW,GAAG3e,GAAG,CAAC4e,QAAQ,CAAC,cAAc,CAAC;IAChD,IAAMxQ,OAAO,GAAGuQ,WAAW,GACvB;MACE,wBAAwB,EAAED,WAAW,CAACpW,GAAG,CAAC,wBAAwB,CAAC;MACnE,oCAAoC,EAAEoW,WAAW,CAACpW,GAAG,CACnD,oCACF,CAAC;MACD,gCAAgC,EAAEoW,WAAW,CAACpW,GAAG,CAC/C,gCACF;IACF,CAAC,GACD,CAAC,CAAC;IAEN,IAAMuW,IAAI,GAAGL,QAAQ,CAACK,IAAI,CAAC,CAAC;IAC5B9Y,QAAQ,CAAC,IAAI,EAAE8Y,IAAI,EAAEzQ,OAAO,CAAC;EAC/B,CAAC,CAAC,CACDoL,KAAK,CAAC,UAAU3Z,KAAK,EAAE;IACtBoF,UAAM,CAACpF,KAAK,CAACA,KAAK,CAACgE,OAAO,CAAC;IAC3BkC,QAAQ,CAAClG,KAAK,CAAC;EACjB,CAAC,CAAC;AACN;AAEA,oDAAeqe,gBAAgB;;;;;;;;AC5D/B;;AAEsC;AACD;AAErC,SAASY,cAAcA,CAAArE,IAAA,EASpB;EAAA,IARD5Y,WAAW,GAAA4Y,IAAA,CAAX5Y,WAAW;IACX7B,GAAG,GAAAya,IAAA,CAAHza,GAAG;IACHgV,MAAM,GAAAyF,IAAA,CAANzF,MAAM;IACNpL,OAAO,GAAA6Q,IAAA,CAAP7Q,OAAO;IACPwE,OAAO,GAAAqM,IAAA,CAAPrM,OAAO;IACPrI,QAAQ,GAAA0U,IAAA,CAAR1U,QAAQ;IACRgZ,cAAc,GAAAtE,IAAA,CAAdsE,cAAc;IACd5K,OAAO,GAAAsG,IAAA,CAAPtG,OAAO;EAEP,IAAInO,OAAO;EACX,IAAI+Y,cAAc,EAAE;IAClB/Y,OAAO,GAAG+Y,cAAc,CAAC,CAAC;EAC5B,CAAC,MAAM;IACL/Y,OAAO,GAAGgZ,oBAAoB,CAAC,CAAC;EAClC;EACA,IAAI,CAAChZ,OAAO,EAAE;IACZ;IACA,OAAOD,QAAQ,CAAC,IAAIhJ,KAAK,CAAC,0BAA0B,CAAC,CAAC;EACxD;EACA,IAAI;IACF,IAAI;MACF,IAAIkiB,mBAAkB,GAAG,SAArBA,kBAAkBA,CAAA,EAAe;QACnC,IAAI;UACF,IAAIA,mBAAkB,IAAIjZ,OAAO,CAACkZ,UAAU,KAAK,CAAC,EAAE;YAClDD,mBAAkB,GAAG9d,SAAS;YAE9B,IAAIge,aAAa,GAAG9e,SAAW,CAAC2F,OAAO,CAACoZ,YAAY,CAAC;YACrD,IAAIC,UAAU,CAACrZ,OAAO,CAAC,EAAE;cACvB,IAAM2Y,WAAW,GAAG3e,GAAG,CAAC4e,QAAQ,CAAC,cAAc,CAAC;cAEhD,IAAMxQ,QAAO,GAAGuQ,WAAW,GACvB;gBACE,wBAAwB,EAAE3Y,OAAO,CAACsZ,iBAAiB,CACjD,wBACF,CAAC;gBACD,oCAAoC,EAClCtZ,OAAO,CAACsZ,iBAAiB,CACvB,oCACF,CAAC;gBACH,gCAAgC,EAAEtZ,OAAO,CAACsZ,iBAAiB,CACzD,gCACF;cACF,CAAC,GACD,CAAC,CAAC;cACNvZ,QAAQ,CAACoZ,aAAa,CAACtf,KAAK,EAAEsf,aAAa,CAACthB,KAAK,EAAEuQ,QAAO,CAAC;cAC3D;YACF,CAAC,MAAM,IAAImR,gBAAgB,CAACvZ,OAAO,CAAC,EAAE;cACpC,IAAIA,OAAO,CAACwZ,MAAM,KAAK,GAAG,EAAE;gBAC1B;gBACA,IAAI3b,OAAO,GACTsb,aAAa,CAACthB,KAAK,IAAIshB,aAAa,CAACthB,KAAK,CAACgG,OAAO;gBACpDoB,UAAM,CAACpF,KAAK,CAACgE,OAAO,CAAC;cACvB;cACA;cACAkC,QAAQ,CAAC,IAAIhJ,KAAK,CAACiB,MAAM,CAACgI,OAAO,CAACwZ,MAAM,CAAC,CAAC,CAAC;YAC7C,CAAC,MAAM;cACL;cACA;cACA;cACA,IAAI5T,GAAG,GACL,6DAA6D;cAC/D7F,QAAQ,CAAC0Z,kBAAkB,CAAC7T,GAAG,CAAC,CAAC;YACnC;UACF;QACF,CAAC,CAAC,OAAO8T,EAAE,EAAE;UACX;UACA;UACA;UACA,IAAIC,GAAG;UACP,IAAID,EAAE,IAAIA,EAAE,CAAC3a,KAAK,EAAE;YAClB4a,GAAG,GAAGD,EAAE;UACV,CAAC,MAAM;YACLC,GAAG,GAAG,IAAI5iB,KAAK,CAAC2iB,EAAE,CAAC;UACrB;UACA3Z,QAAQ,CAAC4Z,GAAG,CAAC;QACf;MACF,CAAC;MAED3Z,OAAO,CAAC4Z,IAAI,CAAC5K,MAAM,EAAEhV,GAAG,EAAE,IAAI,CAAC;MAC/B,IAAIgG,OAAO,CAAC6Z,gBAAgB,EAAE;QAC5B7Z,OAAO,CAAC6Z,gBAAgB,CAAC,cAAc,EAAE,kBAAkB,CAAC;QAC5D7Z,OAAO,CAAC6Z,gBAAgB,CAAC,wBAAwB,EAAEhe,WAAW,CAAC;QAC/D,SAAAie,EAAA,MAAAC,eAAA,GAAqB5kB,MAAM,CAAC6kB,OAAO,CAAC5R,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,CAAC,CAAC,CAAC,EAAA0R,EAAA,GAAAC,eAAA,CAAAvjB,MAAA,EAAAsjB,EAAA,IAAE;UAA/C,IAAAG,kBAAA,GAAAC,cAAA,CAAAH,eAAA,CAAAD,EAAA;YAAOrd,CAAC,GAAAwd,kBAAA;YAAEvJ,CAAC,GAAAuJ,kBAAA;UACdja,OAAO,CAAC6Z,gBAAgB,CAACpd,CAAC,EAAEiU,CAAC,CAAC;QAChC;MACF;MAEA,IAAIrW,cAAgB,CAAC8T,OAAO,CAAC,EAAE;QAC7BnO,OAAO,CAACmO,OAAO,GAAGA,OAAO;MAC3B;MAEAnO,OAAO,CAACiZ,kBAAkB,GAAGA,mBAAkB;MAC/CjZ,OAAO,CAACma,IAAI,CAACvW,OAAO,CAAC;IACvB,CAAC,CAAC,OAAOwW,EAAE,EAAE;MACX;MACA,IAAI,OAAOC,cAAc,KAAK,WAAW,EAAE;QACzC;QACA;;QAEA;QACA,IAAI,CAACvhB,MAAM,IAAI,CAACA,MAAM,CAACqF,QAAQ,EAAE;UAC/B,OAAO4B,QAAQ,CACb,IAAIhJ,KAAK,CACP,yDACF,CACF,CAAC;QACH;;QAEA;QACA,IACE+B,MAAM,CAACqF,QAAQ,CAACO,IAAI,CAAChC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,IAChD1C,GAAG,CAAC0C,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,EAC/B;UACA1C,GAAG,GAAG,MAAM,GAAGA,GAAG,CAAC0C,SAAS,CAAC,CAAC,CAAC;QACjC;QAEA,IAAI4d,cAAc,GAAG,IAAID,cAAc,CAAC,CAAC;QACzCC,cAAc,CAACC,UAAU,GAAG,YAAY,CAAC,CAAC;QAC1CD,cAAc,CAACE,SAAS,GAAG,YAAY;UACrC,IAAI5U,GAAG,GAAG,mBAAmB;UAC7B,IAAIrI,IAAI,GAAG,WAAW;UACtBwC,QAAQ,CAAC0Z,kBAAkB,CAAC7T,GAAG,EAAErI,IAAI,CAAC,CAAC;QACzC,CAAC;QACD+c,cAAc,CAACzD,OAAO,GAAG,YAAY;UACnC9W,QAAQ,CAAC,IAAIhJ,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC7C,CAAC;QACDujB,cAAc,CAACG,MAAM,GAAG,YAAY;UAClC,IAAItB,aAAa,GAAG9e,SAAW,CAACigB,cAAc,CAAClB,YAAY,CAAC;UAC5DrZ,QAAQ,CAACoZ,aAAa,CAACtf,KAAK,EAAEsf,aAAa,CAACthB,KAAK,CAAC;QACpD,CAAC;QACDyiB,cAAc,CAACV,IAAI,CAAC5K,MAAM,EAAEhV,GAAG,EAAE,IAAI,CAAC;QACtCsgB,cAAc,CAACH,IAAI,CAACvW,OAAO,CAAC;MAC9B,CAAC,MAAM;QACL7D,QAAQ,CAAC,IAAIhJ,KAAK,CAAC,6CAA6C,CAAC,CAAC;MACpE;IACF;EACF,CAAC,CAAC,OAAO2jB,EAAE,EAAE;IACX3a,QAAQ,CAAC2a,EAAE,CAAC;EACd;AACF;AAEA,SAAS1B,oBAAoBA,CAAA,EAAG;EAC9B;;EAEA,IAAI2B,SAAS,GAAG,CACd,YAAY;IACV,OAAO,IAAI7L,cAAc,CAAC,CAAC;EAC7B,CAAC,EACD,YAAY;IACV,OAAO,IAAI8L,aAAa,CAAC,gBAAgB,CAAC;EAC5C,CAAC,EACD,YAAY;IACV,OAAO,IAAIA,aAAa,CAAC,gBAAgB,CAAC;EAC5C,CAAC,EACD,YAAY;IACV,OAAO,IAAIA,aAAa,CAAC,mBAAmB,CAAC;EAC/C,CAAC,CACF;EACD,IAAIC,OAAO;EACX,IAAI7kB,CAAC;EACL,IAAI8kB,YAAY,GAAGH,SAAS,CAACnkB,MAAM;EACnC,KAAKR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG8kB,YAAY,EAAE9kB,CAAC,EAAE,EAAE;IACjC,IAAI;MACF6kB,OAAO,GAAGF,SAAS,CAAC3kB,CAAC,CAAC,CAAC,CAAC;MACxB;IACF,CAAC,CAAC,OAAOyC,CAAC,EAAE;MACV;IAAA;EAEJ;EACA,OAAOoiB,OAAO;AAChB;AAEA,SAASxB,UAAUA,CAAChgB,CAAC,EAAE;EACrB,OAAOA,CAAC,IAAIA,CAAC,CAACmgB,MAAM,IAAIngB,CAAC,CAACmgB,MAAM,KAAK,GAAG;AAC1C;AAEA,SAASD,gBAAgBA,CAAClgB,CAAC,EAAE;EAC3B,OAAOA,CAAC,IAAIgB,MAAQ,CAAChB,CAAC,CAACmgB,MAAM,EAAE,QAAQ,CAAC,IAAIngB,CAAC,CAACmgB,MAAM,IAAI,GAAG,IAAIngB,CAAC,CAACmgB,MAAM,GAAG,GAAG;AAC/E;AAEA,SAASC,kBAAkBA,CAAC5b,OAAO,EAAEN,IAAI,EAAE;EACzC,IAAI2B,GAAG,GAAG,IAAInI,KAAK,CAAC8G,OAAO,CAAC;EAC5BqB,GAAG,CAAC3B,IAAI,GAAGA,IAAI,IAAI,WAAW;EAC9B,OAAO2B,GAAG;AACZ;AAEA,wCAAe4Z,cAAc;;AChMM;AACiB;AACJ;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASiC,SAASA,CAAC3G,UAAU,EAAE;EAC7B,IAAI,CAACA,UAAU,GAAGA,UAAU;AAC9B;AAEA2G,SAAS,CAAC3lB,SAAS,CAACkN,GAAG,GAAG,UACxBzG,WAAW,EACXC,OAAO,EACPC,MAAM,EACNgE,QAAQ,EACRgZ,cAAc,EACd;EACA,IAAI,CAAChZ,QAAQ,IAAI,CAAC1F,UAAY,CAAC0F,QAAQ,CAAC,EAAE;IACxCA,QAAQ,GAAG,SAAXA,QAAQA,CAAA,EAAe,CAAC,CAAC;EAC3B;EACA1F,6BAA+B,CAACwB,WAAW,EAAEC,OAAO,EAAEC,MAAM,CAAC;EAE7D,IAAIiT,MAAM,GAAG,KAAK;EAClB,IAAIhV,GAAG,GAAGK,SAAW,CAACyB,OAAO,CAAC;EAC9B,IAAI,CAACkf,gBAAgB,CAAC;IACpBnf,WAAW,EAAXA,WAAW;IACX7B,GAAG,EAAHA,GAAG;IACHgV,MAAM,EAANA,MAAM;IACNjP,QAAQ,EAARA,QAAQ;IACRgZ,cAAc,EAAdA,cAAc;IACd5K,OAAO,EAAErS,OAAO,CAACqS,OAAO;IACxBC,SAAS,EAAEtS,OAAO,CAACsS;EACrB,CAAC,CAAC;AACJ,CAAC;AAED2M,SAAS,CAAC3lB,SAAS,CAACuf,IAAI,GAAG,UAAAF,IAAA;EAAA,IAAA9M,KAAA;EAAA,IACzB9L,WAAW,GAAA4Y,IAAA,CAAX5Y,WAAW;IACXC,OAAO,GAAA2Y,IAAA,CAAP3Y,OAAO;IACP8H,OAAO,GAAA6Q,IAAA,CAAP7Q,OAAO;IACPwE,OAAO,GAAAqM,IAAA,CAAPrM,OAAO;IACPrI,QAAQ,GAAA0U,IAAA,CAAR1U,QAAQ;IACRgZ,cAAc,GAAAtE,IAAA,CAAdsE,cAAc;EAAA,iBAAAnV,OAAA,EACb;IACD,IAAI,CAAC7D,QAAQ,IAAI,CAAC1F,UAAY,CAAC0F,QAAQ,CAAC,EAAE;MACxCA,QAAQ,GAAG,SAAXA,QAAQA,CAAA,EAAe,CAAC,CAAC;IAC3B;IAEA,IAAI,CAAC6D,OAAO,EAAE;MACZ,OAAO7D,QAAQ,CAAC,IAAIhJ,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACzD;IAEA,IAAIqe,eAAe;IACnB;IACA,IAAIzN,KAAI,CAACyM,UAAU,IAAIxQ,OAAO,CAACiC,IAAI,EAAE;MACnCuP,eAAe,GAAGzN,KAAI,CAACyM,UAAU,CAACiB,QAAQ,CAACzR,OAAO,CAAC;IACrD,CAAC,MAAM;MACLwR,eAAe,GAAG/a,SAAW,CAACuJ,OAAO,CAAC;IACxC;IACA,IAAIwR,eAAe,CAACvb,KAAK,EAAE;MACzB,OAAOkG,QAAQ,CAACqV,eAAe,CAACvb,KAAK,CAAC;IACxC;IAEA,IAAI+J,OAAO,GAAGwR,eAAe,CAACvd,KAAK;IACnC,IAAImX,MAAM,GAAG,MAAM;IACnB,IAAIhV,GAAG,GAAGK,SAAW,CAACyB,OAAO,CAAC;IAC9B6L,KAAI,CAACqT,gBAAgB,CAAC;MACpBnf,WAAW,EAAXA,WAAW;MACX7B,GAAG,EAAHA,GAAG;MACHgV,MAAM,EAANA,MAAM;MACNpL,OAAO,EAAPA,OAAO;MACPwE,OAAO,EAAPA,OAAO;MACPrI,QAAQ,EAARA,QAAQ;MACRgZ,cAAc,EAAdA,cAAc;MACd5K,OAAO,EAAErS,OAAO,CAACqS,OAAO;MACxBC,SAAS,EAAEtS,OAAO,CAACsS;IACrB,CAAC,CAAC;EACJ,CAAC,CAAAxK,OAAA;AAAA;AAEDmX,SAAS,CAAC3lB,SAAS,CAAC0W,eAAe,GAAG,UACpCjQ,WAAW,EACXC,OAAO,EACP8H,OAAO,EACP7D,QAAQ,EACRgZ,cAAc,EACd;EACA,IAAI,CAAChZ,QAAQ,IAAI,CAAC1F,UAAY,CAAC0F,QAAQ,CAAC,EAAE;IACxCA,QAAQ,GAAG,SAAXA,QAAQA,CAAA,EAAe,CAAC,CAAC;EAC3B;EAEA,IAAIiP,MAAM,GAAG,MAAM;EACnB,IAAIhV,GAAG,GAAGK,SAAW,CAACyB,OAAO,CAAC;EAC9B,IAAI,CAACkf,gBAAgB,CAAC;IACpBnf,WAAW,EAAXA,WAAW;IACX7B,GAAG,EAAHA,GAAG;IACHgV,MAAM,EAANA,MAAM;IACNpL,OAAO,EAAPA,OAAO;IACP7D,QAAQ,EAARA,QAAQ;IACRgZ,cAAc,EAAdA,cAAc;IACd5K,OAAO,EAAErS,OAAO,CAACqS,OAAO;IACxBC,SAAS,EAAEtS,OAAO,CAACsS;EACrB,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA2M,SAAS,CAAC3lB,SAAS,CAAC4lB,gBAAgB,GAAG,YAAY;EACjD,IAAItM,OAAO,GACR,OAAO5V,MAAM,IAAI,WAAW,IAAIA,MAAM,IACtC,OAAO6V,IAAI,IAAI,WAAW,IAAIA,IAAK;EACtC;EACA;EACA;EACA;EACA,IAAIsM,QAAQ,GAAGvM,OAAO,IAAIA,OAAO,CAACwM,IAAI,IAAIxM,OAAO,CAACwM,IAAI,CAACC,IAAI;EAC3D,IAAIzb,IAAI,GAAGiW,KAAK,CAACvgB,SAAS,CAACoK,KAAK,CAAC9J,IAAI,CAACe,SAAS,CAAC;EAEhD,IAAIwkB,QAAQ,EAAE;IACZ,IAAItM,IAAI,GAAG,IAAI;IACfsM,QAAQ,CAACG,GAAG,CAAC,YAAY;MACvBzM,IAAI,CAAC0M,YAAY,CAACxH,KAAK,CAAC1Y,SAAS,EAAEuE,IAAI,CAAC;IAC1C,CAAC,CAAC;EACJ,CAAC,MAAM;IACL,IAAI,CAAC2b,YAAY,CAACxH,KAAK,CAAC1Y,SAAS,EAAEuE,IAAI,CAAC;EAC1C;AACF,CAAC;AAEDqb,SAAS,CAAC3lB,SAAS,CAACimB,YAAY,GAAG,UAAUtf,MAAM,EAAE;EACnD,IAAQ6H,OAAO,GAA0B7H,MAAM,CAAvC6H,OAAO;IAAE7D,QAAQ,GAAgBhE,MAAM,CAA9BgE,QAAQ;IAAEqO,SAAS,GAAKrS,MAAM,CAApBqS,SAAS;EACpC,IAAI,OAAOkN,YAAY,KAAK,WAAW,EAAE;IACvC,OAAOC,aAAa,CAAC3X,OAAO,EAAE7D,QAAQ,CAAC;EACzC;EAEA,IAAIqO,SAAS,KAAK,OAAO,EAAE;IACzB8J,eAAgB,CAACnc,MAAM,CAAC;EAC1B,CAAC,MAAM;IACL+c,GAAc,CAAC/c,MAAM,CAAC;EACxB;AACF,CAAC;;AAED;AACA,SAASwf,aAAaA,CAAC1C,IAAI,EAAE9Y,QAAQ,EAAE;EACrC,IAAIyb,YAAY,GAAG,IAAIF,YAAY,CAAC,CAAC;EACrCE,YAAY,CAAC5P,eAAe,CAC1BiN,IAAI,EACJ,UAAU4C,IAAI,EAAE;IACd;EAAA,CACD,EACD,UAAUvc,GAAG,EAAE;IACba,QAAQ,CAAC,IAAIhJ,KAAK,CAACmI,GAAG,CAAC,CAAC;EAC1B,CACF,CAAC;AACH;AAEA,sDAAe6b,SAAS;;AC1KxB;AACA,SAASpd,KAAKA,CAAC3D,GAAG,EAAE;EAClB,IAAI3D,MAAM,GAAG;IACXuG,QAAQ,EAAE,IAAI;IACd8e,IAAI,EAAE,IAAI;IACVxM,IAAI,EAAE,IAAI;IACV5S,IAAI,EAAE,IAAI;IACVqf,IAAI,EAAE,IAAI;IACVjd,IAAI,EAAE1E,GAAG;IACT8C,QAAQ,EAAE,IAAI;IACdD,IAAI,EAAE,IAAI;IACV4R,QAAQ,EAAE,IAAI;IACdrU,MAAM,EAAE,IAAI;IACZO,KAAK,EAAE;EACT,CAAC;EAED,IAAI3E,CAAC,EAAE4lB,IAAI;EACX5lB,CAAC,GAAGgE,GAAG,CAACwC,OAAO,CAAC,IAAI,CAAC;EACrB,IAAIxG,CAAC,KAAK,CAAC,CAAC,EAAE;IACZK,MAAM,CAACuG,QAAQ,GAAG5C,GAAG,CAAC0C,SAAS,CAAC,CAAC,EAAE1G,CAAC,CAAC;IACrC4lB,IAAI,GAAG5lB,CAAC,GAAG,CAAC;EACd,CAAC,MAAM;IACL4lB,IAAI,GAAG,CAAC;EACV;EAEA5lB,CAAC,GAAGgE,GAAG,CAACwC,OAAO,CAAC,GAAG,EAAEof,IAAI,CAAC;EAC1B,IAAI5lB,CAAC,KAAK,CAAC,CAAC,EAAE;IACZK,MAAM,CAACqlB,IAAI,GAAG1hB,GAAG,CAAC0C,SAAS,CAACkf,IAAI,EAAE5lB,CAAC,CAAC;IACpC4lB,IAAI,GAAG5lB,CAAC,GAAG,CAAC;EACd;EAEAA,CAAC,GAAGgE,GAAG,CAACwC,OAAO,CAAC,GAAG,EAAEof,IAAI,CAAC;EAC1B,IAAI5lB,CAAC,KAAK,CAAC,CAAC,EAAE;IACZA,CAAC,GAAGgE,GAAG,CAACwC,OAAO,CAAC,GAAG,EAAEof,IAAI,CAAC;IAC1B,IAAI5lB,CAAC,KAAK,CAAC,CAAC,EAAE;MACZA,CAAC,GAAGgE,GAAG,CAACwC,OAAO,CAAC,GAAG,EAAEof,IAAI,CAAC;MAC1B,IAAI5lB,CAAC,KAAK,CAAC,CAAC,EAAE;QACZK,MAAM,CAAC6Y,IAAI,GAAGlV,GAAG,CAAC0C,SAAS,CAACkf,IAAI,CAAC;MACnC,CAAC,MAAM;QACLvlB,MAAM,CAAC6Y,IAAI,GAAGlV,GAAG,CAAC0C,SAAS,CAACkf,IAAI,EAAE5lB,CAAC,CAAC;QACpCK,MAAM,CAACslB,IAAI,GAAG3hB,GAAG,CAAC0C,SAAS,CAAC1G,CAAC,CAAC;MAChC;MACAK,MAAM,CAACyG,QAAQ,GAAGzG,MAAM,CAAC6Y,IAAI,CAAC1M,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC3CnM,MAAM,CAACwG,IAAI,GAAGxG,MAAM,CAAC6Y,IAAI,CAAC1M,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACvC,IAAInM,MAAM,CAACwG,IAAI,EAAE;QACfxG,MAAM,CAACwG,IAAI,GAAGgf,QAAQ,CAACxlB,MAAM,CAACwG,IAAI,EAAE,EAAE,CAAC;MACzC;MACA,OAAOxG,MAAM;IACf,CAAC,MAAM;MACLA,MAAM,CAAC6Y,IAAI,GAAGlV,GAAG,CAAC0C,SAAS,CAACkf,IAAI,EAAE5lB,CAAC,CAAC;MACpCK,MAAM,CAACyG,QAAQ,GAAGzG,MAAM,CAAC6Y,IAAI,CAAC1M,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC3CnM,MAAM,CAACwG,IAAI,GAAGxG,MAAM,CAAC6Y,IAAI,CAAC1M,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACvC,IAAInM,MAAM,CAACwG,IAAI,EAAE;QACfxG,MAAM,CAACwG,IAAI,GAAGgf,QAAQ,CAACxlB,MAAM,CAACwG,IAAI,EAAE,EAAE,CAAC;MACzC;MACA+e,IAAI,GAAG5lB,CAAC;IACV;EACF,CAAC,MAAM;IACLK,MAAM,CAAC6Y,IAAI,GAAGlV,GAAG,CAAC0C,SAAS,CAACkf,IAAI,EAAE5lB,CAAC,CAAC;IACpCK,MAAM,CAACyG,QAAQ,GAAGzG,MAAM,CAAC6Y,IAAI,CAAC1M,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3CnM,MAAM,CAACwG,IAAI,GAAGxG,MAAM,CAAC6Y,IAAI,CAAC1M,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvC,IAAInM,MAAM,CAACwG,IAAI,EAAE;MACfxG,MAAM,CAACwG,IAAI,GAAGgf,QAAQ,CAACxlB,MAAM,CAACwG,IAAI,EAAE,EAAE,CAAC;IACzC;IACA+e,IAAI,GAAG5lB,CAAC;EACV;EAEAA,CAAC,GAAGgE,GAAG,CAACwC,OAAO,CAAC,GAAG,EAAEof,IAAI,CAAC;EAC1B,IAAI5lB,CAAC,KAAK,CAAC,CAAC,EAAE;IACZK,MAAM,CAACiG,IAAI,GAAGtC,GAAG,CAAC0C,SAAS,CAACkf,IAAI,CAAC;EACnC,CAAC,MAAM;IACLvlB,MAAM,CAACiG,IAAI,GAAGtC,GAAG,CAAC0C,SAAS,CAACkf,IAAI,EAAE5lB,CAAC,CAAC;IACpCK,MAAM,CAACslB,IAAI,GAAG3hB,GAAG,CAAC0C,SAAS,CAAC1G,CAAC,CAAC;EAChC;EAEA,IAAIK,MAAM,CAACiG,IAAI,EAAE;IACf,IAAIwf,SAAS,GAAGzlB,MAAM,CAACiG,IAAI,CAACkG,KAAK,CAAC,GAAG,CAAC;IACtCnM,MAAM,CAACoY,QAAQ,GAAGqN,SAAS,CAAC,CAAC,CAAC;IAC9BzlB,MAAM,CAACsE,KAAK,GAAGmhB,SAAS,CAAC,CAAC,CAAC;IAC3BzlB,MAAM,CAAC+D,MAAM,GAAG/D,MAAM,CAACsE,KAAK,GAAG,GAAG,GAAGtE,MAAM,CAACsE,KAAK,GAAG,IAAI;EAC1D;EACA,OAAOtE,MAAM;AACf;;;AClFA,IAAM0lB,2BAA2B,GAAG,cAAc;AAClD,IAAMC,sBAAsB,GAAG,gCAAgC;AAC/D,IAAMC,yBAAyB,GAAG,8BAA8B;AAChE,SAASte,UAAKA,CAAC9D,KAAK,EAAEiC,OAAO,EAAE;EAC7B,IAAI,OAAOjC,KAAK,CAACqiB,UAAU,KAAK,WAAW,IAAI,OAAOriB,KAAK,CAAC,iBAAiB,CAAC,KAAK,WAAW,EAC5F,OAAOsiB,UAAU,CAACtiB,KAAK,EAAEiC,OAAO,CAAC,CAAC,KAC/B,IAAIjC,KAAK,CAACkF,KAAK,IAAIlF,KAAK,CAACkF,KAAK,CAAC/H,KAAK,CAACglB,sBAAsB,CAAC,EAC/D,OAAOI,WAAW,CAACviB,KAAK,EAAEiC,OAAO,CAAC,CAAC,KAChC,IAAIjC,KAAK,CAACkF,KAAK,EAClB,OAAOsd,eAAe,CAACxiB,KAAK,EAAEiC,OAAO,CAAC,CAAC,KACpC,IAAIA,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEwgB,UAAU,EAC1B,OAAO,EAAE,CAAC,KAEV,MAAM,IAAIvlB,KAAK,CAAC,iCAAiC,CAAC;AACtD;AACA,SAASwlB,UAAUA,CAACC,WAAW,EAAE1gB,OAAO,EAAE;EACxC,IAAI0gB,WAAW,CAACxlB,KAAK,CAACglB,sBAAsB,CAAC,EAC3C,OAAOS,iBAAiB,CAACD,WAAW,EAAE1gB,OAAO,CAAC,CAAC,KAE/C,OAAO4gB,qBAAqB,CAACF,WAAW,EAAE1gB,OAAO,CAAC;AACtD;AACA,SAAS6gB,eAAeA,CAACC,OAAO,EAAE;EAChC,IAAI,CAACA,OAAO,CAACrd,QAAQ,CAAC,GAAG,CAAC,EACxB,OAAO,CAACqd,OAAO,EAAEzhB,SAAS,EAAEA,SAAS,CAAC;EACxC,IAAM0hB,MAAM,GAAG,8BAA8B;EAC7C,IAAMzZ,KAAK,GAAGyZ,MAAM,CAACvhB,IAAI,CAACshB,OAAO,CAACplB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;EACvD,OAAO,CAAC4L,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,IAAIjI,SAAS,EAAEiI,KAAK,CAAC,CAAC,CAAC,IAAIjI,SAAS,CAAC;AACjE;AACA,SAAS2hB,UAAUA,CAACC,KAAK,EAAEjhB,OAAO,EAAE;EAClC,IAAIA,OAAO,IAAIA,OAAO,CAAC0D,KAAK,IAAI,IAAI,EAAE;IACpC,IAAImW,KAAK,CAACqH,OAAO,CAAClhB,OAAO,CAAC0D,KAAK,CAAC,EAC9B,OAAOud,KAAK,CAACvd,KAAK,CAAC1D,OAAO,CAAC0D,KAAK,CAAC,CAAC,CAAC,EAAE1D,OAAO,CAAC0D,KAAK,CAAC,CAAC,CAAC,CAAC;IACxD,OAAOud,KAAK,CAACvd,KAAK,CAAC,CAAC,EAAE1D,OAAO,CAAC0D,KAAK,CAAC;EACtC;EACA,OAAOud,KAAK;AACd;AACA,SAASX,WAAWA,CAACviB,KAAK,EAAEiC,OAAO,EAAE;EACnC,OAAO2gB,iBAAiB,CAAC5iB,KAAK,CAACkF,KAAK,EAAEjD,OAAO,CAAC;AAChD;AACA,SAAS2gB,iBAAiBA,CAAC1d,KAAK,EAAEjD,OAAO,EAAE;EACzC,IAAMmhB,QAAQ,GAAGH,UAAU,CACzB/d,KAAK,CAACyD,KAAK,CAAC,IAAI,CAAC,CAAC0a,MAAM,CAAC,UAAC9e,IAAI,EAAK;IACjC,OAAO,CAAC,CAACA,IAAI,CAACpH,KAAK,CAACglB,sBAAsB,CAAC;EAC7C,CAAC,CAAC,EACFlgB,OACF,CAAC;EACD,OAAOmhB,QAAQ,CAACE,GAAG,CAAC,UAAC/e,IAAI,EAAK;IAC5B,IAAIA,IAAI,CAACmB,QAAQ,CAAC,QAAQ,CAAC,EAAE;MAC3BnB,IAAI,GAAGA,IAAI,CAAC5G,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAACA,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC;IACrF;IACA,IAAI4lB,aAAa,GAAGhf,IAAI,CAAC5G,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAACA,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;IAChG,IAAM2G,QAAQ,GAAGif,aAAa,CAACpmB,KAAK,CAAC,YAAY,CAAC;IAClDomB,aAAa,GAAGjf,QAAQ,GAAGif,aAAa,CAAC5lB,OAAO,CAAC2G,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAGif,aAAa;IACjF,IAAMC,aAAa,GAAGV,eAAe,CAACxe,QAAQ,GAAGA,QAAQ,CAAC,CAAC,CAAC,GAAGif,aAAa,CAAC;IAC7E,IAAME,YAAY,GAAGnf,QAAQ,IAAIif,aAAa,IAAIjiB,SAAS;IAC3D,IAAMoiB,QAAQ,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAChe,QAAQ,CAAC8d,aAAa,CAAC,CAAC,CAAC,CAAC,GAAGliB,SAAS,GAAGkiB,aAAa,CAAC,CAAC,CAAC;IAClG,OAAO;MACLG,QAAQ,EAAEF,YAAY;MACtBG,IAAI,EAAEF,QAAQ;MACdnf,IAAI,EAAEif,aAAa,CAAC,CAAC,CAAC,GAAG,CAACA,aAAa,CAAC,CAAC,CAAC,GAAGliB,SAAS;MACtDuiB,GAAG,EAAEL,aAAa,CAAC,CAAC,CAAC,GAAG,CAACA,aAAa,CAAC,CAAC,CAAC,GAAGliB,SAAS;MACrDwiB,GAAG,EAAEvf;IACP,CAAC;EACH,CAAC,CAAC;AACJ;AACA,SAASie,eAAeA,CAACxiB,KAAK,EAAEiC,OAAO,EAAE;EACvC,OAAO4gB,qBAAqB,CAAC7iB,KAAK,CAACkF,KAAK,EAAEjD,OAAO,CAAC;AACpD;AACA,SAAS4gB,qBAAqBA,CAAC3d,KAAK,EAAEjD,OAAO,EAAE;EAC7C,IAAMmhB,QAAQ,GAAGH,UAAU,CACzB/d,KAAK,CAACyD,KAAK,CAAC,IAAI,CAAC,CAAC0a,MAAM,CAAC,UAAC9e,IAAI,EAAK;IACjC,OAAO,CAACA,IAAI,CAACpH,KAAK,CAACilB,yBAAyB,CAAC;EAC/C,CAAC,CAAC,EACFngB,OACF,CAAC;EACD,OAAOmhB,QAAQ,CAACE,GAAG,CAAC,UAAC/e,IAAI,EAAK;IAC5B,IAAIA,IAAI,CAACmB,QAAQ,CAAC,SAAS,CAAC,EAC1BnB,IAAI,GAAGA,IAAI,CAAC5G,OAAO,CAAC,kDAAkD,EAAE,KAAK,CAAC;IAChF,IAAI,CAAC4G,IAAI,CAACmB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAACnB,IAAI,CAACmB,QAAQ,CAAC,GAAG,CAAC,EAAE;MAC9C,OAAO;QACLie,QAAQ,EAAEpf;MACZ,CAAC;IACH,CAAC,MAAM;MACL,IAAMwf,iBAAiB,GAAG,4JAA4J;MACtL,IAAMC,OAAO,GAAGzf,IAAI,CAACpH,KAAK,CAAC4mB,iBAAiB,CAAC;MAC7C,IAAMN,YAAY,GAAGO,OAAO,IAAIA,OAAO,CAAC,CAAC,CAAC,GAAGA,OAAO,CAAC,CAAC,CAAC,GAAG1iB,SAAS;MACnE,IAAMkiB,aAAa,GAAGV,eAAe,CAACve,IAAI,CAAC5G,OAAO,CAAComB,iBAAiB,EAAE,EAAE,CAAC,CAAC;MAC1E,OAAO;QACLJ,QAAQ,EAAEF,YAAY;QACtBG,IAAI,EAAEJ,aAAa,CAAC,CAAC,CAAC;QACtBjf,IAAI,EAAEif,aAAa,CAAC,CAAC,CAAC,GAAG,CAACA,aAAa,CAAC,CAAC,CAAC,GAAGliB,SAAS;QACtDuiB,GAAG,EAAEL,aAAa,CAAC,CAAC,CAAC,GAAG,CAACA,aAAa,CAAC,CAAC,CAAC,GAAGliB,SAAS;QACrDwiB,GAAG,EAAEvf;MACP,CAAC;IACH;EACF,CAAC,CAAC;AACJ;AACA,SAAS+d,UAAUA,CAAC1jB,CAAC,EAAEqD,OAAO,EAAE;EAC9B,IAAI,CAACrD,CAAC,CAACyjB,UAAU,IAAIzjB,CAAC,CAACoF,OAAO,CAAC0B,QAAQ,CAAC,IAAI,CAAC,IAAI9G,CAAC,CAACoF,OAAO,CAAC2E,KAAK,CAAC,IAAI,CAAC,CAAChM,MAAM,GAAGiC,CAAC,CAACyjB,UAAU,CAAC1Z,KAAK,CAAC,IAAI,CAAC,CAAChM,MAAM,EAC7G,OAAOsnB,WAAW,CAACrlB,CAAC,CAAC,CAAC,KACnB,IAAI,CAACA,CAAC,CAACsG,KAAK,EACf,OAAOgf,YAAY,CAACtlB,CAAC,CAAC,CAAC,KAEvB,OAAOulB,YAAY,CAACvlB,CAAC,EAAEqD,OAAO,CAAC;AACnC;AACA,SAASgiB,WAAWA,CAACrlB,CAAC,EAAEqD,OAAO,EAAE;EAC/B,IAAMmiB,MAAM,GAAG,mCAAmC;EAClD,IAAMlB,KAAK,GAAGtkB,CAAC,CAACoF,OAAO,CAAC2E,KAAK,CAAC,IAAI,CAAC;EACnC,IAAMnM,MAAM,GAAG,EAAE;EACjB,KAAK,IAAIL,CAAC,GAAG,CAAC,EAAEwK,GAAG,GAAGuc,KAAK,CAACvmB,MAAM,EAAER,CAAC,GAAGwK,GAAG,EAAExK,CAAC,IAAI,CAAC,EAAE;IACnD,IAAMgB,KAAK,GAAGinB,MAAM,CAAC3iB,IAAI,CAACyhB,KAAK,CAAC/mB,CAAC,CAAC,CAAC;IACnC,IAAIgB,KAAK,EAAE;MACTX,MAAM,CAAC8F,IAAI,CAAC;QACVshB,IAAI,EAAEzmB,KAAK,CAAC,CAAC,CAAC;QACdoH,IAAI,EAAE,CAACpH,KAAK,CAAC,CAAC,CAAC;QACf2mB,GAAG,EAAEZ,KAAK,CAAC/mB,CAAC;MACd,CAAC,CAAC;IACJ;EACF;EACA,OAAO8mB,UAAU,CAACzmB,MAAM,EAAEyF,OAAO,CAAC;AACpC;AACA,SAASiiB,YAAYA,CAACtlB,CAAC,EAAEqD,OAAO,EAAE;EAChC,IAAMmiB,MAAM,GAAG,4DAA4D;EAC3E,IAAMlB,KAAK,GAAGtkB,CAAC,CAACyjB,UAAU,CAAC1Z,KAAK,CAAC,IAAI,CAAC;EACtC,IAAMnM,MAAM,GAAG,EAAE;EACjB,KAAK,IAAIL,CAAC,GAAG,CAAC,EAAEwK,GAAG,GAAGuc,KAAK,CAACvmB,MAAM,EAAER,CAAC,GAAGwK,GAAG,EAAExK,CAAC,IAAI,CAAC,EAAE;IACnD,IAAMgB,KAAK,GAAGinB,MAAM,CAAC3iB,IAAI,CAACyhB,KAAK,CAAC/mB,CAAC,CAAC,CAAC;IACnC,IAAIgB,KAAK,EAAE;MACTX,MAAM,CAAC8F,IAAI,CAAC;QACVqhB,QAAQ,EAAExmB,KAAK,CAAC,CAAC,CAAC,IAAImE,SAAS;QAC/BsiB,IAAI,EAAEzmB,KAAK,CAAC,CAAC,CAAC;QACdoH,IAAI,EAAEpH,KAAK,CAAC,CAAC,CAAC,GAAG,CAACA,KAAK,CAAC,CAAC,CAAC,GAAGmE,SAAS;QACtCwiB,GAAG,EAAEZ,KAAK,CAAC/mB,CAAC;MACd,CAAC,CAAC;IACJ;EACF;EACA,OAAO8mB,UAAU,CAACzmB,MAAM,EAAEyF,OAAO,CAAC;AACpC;AACA,SAASkiB,YAAYA,CAACnkB,KAAK,EAAEiC,OAAO,EAAE;EACpC,IAAMmhB,QAAQ,GAAGH,UAAU;EACzB;EACAjjB,KAAK,CAACkF,KAAK,CAACyD,KAAK,CAAC,IAAI,CAAC,CAAC0a,MAAM,CAAC,UAAC9e,IAAI,EAAK;IACvC,OAAO,CAAC,CAACA,IAAI,CAACpH,KAAK,CAAC+kB,2BAA2B,CAAC,IAAI,CAAC3d,IAAI,CAACpH,KAAK,CAAC,mBAAmB,CAAC;EACtF,CAAC,CAAC,EACF8E,OACF,CAAC;EACD,OAAOmhB,QAAQ,CAACE,GAAG,CAAC,UAAC/e,IAAI,EAAK;IAC5B,IAAM8f,MAAM,GAAG9f,IAAI,CAACoE,KAAK,CAAC,GAAG,CAAC;IAC9B,IAAM6a,aAAa,GAAGV,eAAe,CAACuB,MAAM,CAAC7a,GAAG,CAAC,CAAC,CAAC;IACnD,IAAM8a,YAAY,GAAGD,MAAM,CAACxU,KAAK,CAAC,CAAC,IAAI,EAAE;IACzC,IAAM4T,YAAY,GAAGa,YAAY,CAAC3mB,OAAO,CAAC,gCAAgC,EAAE,IAAI,CAAC,CAACA,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI2D,SAAS;IACxH,IAAIijB,OAAO;IACX,IAAID,YAAY,CAACnnB,KAAK,CAAC,aAAa,CAAC,EACnConB,OAAO,GAAGD,YAAY,CAAC3mB,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC;IAC5D,IAAMkI,IAAI,GAAG0e,OAAO,KAAKjjB,SAAS,IAAIijB,OAAO,KAAK,2BAA2B,GAAGjjB,SAAS,GAAGijB,OAAO,CAAC5b,KAAK,CAAC,GAAG,CAAC;IAC9G,OAAO;MACLgb,QAAQ,EAAEF,YAAY;MACtB5d,IAAI,EAAJA,IAAI;MACJ+d,IAAI,EAAEJ,aAAa,CAAC,CAAC,CAAC;MACtBjf,IAAI,EAAEif,aAAa,CAAC,CAAC,CAAC,GAAG,CAACA,aAAa,CAAC,CAAC,CAAC,GAAGliB,SAAS;MACtDuiB,GAAG,EAAEL,aAAa,CAAC,CAAC,CAAC,GAAG,CAACA,aAAa,CAAC,CAAC,CAAC,GAAGliB,SAAS;MACrDwiB,GAAG,EAAEvf;IACP,CAAC;EACH,CAAC,CAAC;AACJ;;;ACpK4O;AAC/L;AAE7C,SAASwgB,4BAA4BA,CAACC,eAAe,EAAE;EACrD,OAAOA,eAAe,CAAC1B,GAAG,CAAC,UAAC2B,cAAc,EAAK;IAC7C,OAAO;MACLxB,YAAY,EAAEwB,cAAc,CAACtB,QAAQ;MACrC9d,IAAI,EAAEof,cAAc,CAACpf,IAAI;MACzB6d,QAAQ,EAAEuB,cAAc,CAACrB,IAAI;MAC7BsB,UAAU,EAAED,cAAc,CAAC1gB,IAAI;MAC/B4gB,YAAY,EAAEF,cAAc,CAACpB,GAAG;MAChChjB,MAAM,EAAEokB,cAAc,CAACnB;IACzB,CAAC;EACH,CAAC,CAAC;AACJ;AACA,SAAShgB,UAAKA,CAAC9D,KAAK,EAAEiC,OAAO,EAAE;EAC7B,OAAO8iB,4BAA4B,CAACP,UAAO,CAACxkB,KAAK,EAAEiC,OAAO,CAAC,CAAC;AAC9D;AACA,SAASsgB,gBAAWA,CAACviB,KAAK,EAAE;EAC1B,OAAO+kB,4BAA4B,CAACN,aAAa,CAACzkB,KAAK,CAAC,CAAC;AAC3D;AACA,SAASwiB,oBAAeA,CAACxiB,KAAK,EAAE;EAC9B,OAAO+kB,4BAA4B,CAACL,iBAAiB,CAAC1kB,KAAK,CAAC,CAAC;AAC/D;AACA,SAASsiB,eAAUA,CAAC1jB,CAAC,EAAE;EACrB,OAAOmmB,4BAA4B,CAACJ,YAAY,CAAC/lB,CAAC,CAAC,CAAC;AACtD;AACA,SAASqlB,gBAAWA,CAACrlB,CAAC,EAAE;EACtB,OAAOmmB,4BAA4B,CAACH,aAAa,CAAChmB,CAAC,CAAC,CAAC;AACvD;AACA,SAASslB,iBAAYA,CAACtlB,CAAC,EAAE;EACvB,OAAOmmB,4BAA4B,CAACF,cAAc,CAACjmB,CAAC,CAAC,CAAC;AACxD;AACA,SAASulB,iBAAYA,CAACnkB,KAAK,EAAE;EAC3B,OAAO+kB,4BAA4B,CAACD,cAAc,CAAC9kB,KAAK,CAAC,CAAC;AAC5D;;;ACnCiE;AAEjE,IAAIqlB,gBAAgB,GAAG,GAAG;AAC1B,IAAIC,gBAAgB,GAAG,IAAIznB,MAAM,CAC/B,2DACF,CAAC;AAED,SAAS6G,iBAAiBA,CAAA,EAAG;EAC3B,OAAO2gB,gBAAgB;AACzB;AAEA,SAASzgB,aAAaA,CAAA,EAAG;EACvB,OAAO,IAAI;AACb;AAEA,SAAS2gB,KAAKA,CAACC,UAAU,EAAE;EACzB,IAAI1e,IAAI,GAAG,CAAC,CAAC;EAEbA,IAAI,CAAC2e,WAAW,GAAGD,UAAU;EAE7B1e,IAAI,CAAC3G,GAAG,GAAGqlB,UAAU,CAAC9B,QAAQ;EAC9B5c,IAAI,CAACvC,IAAI,GAAGihB,UAAU,CAACN,UAAU;EACjCpe,IAAI,CAACrC,IAAI,GAAG+gB,UAAU,CAAC/B,YAAY;EACnC3c,IAAI,CAACtC,MAAM,GAAGghB,UAAU,CAACL,YAAY;EACrCre,IAAI,CAACjB,IAAI,GAAG2f,UAAU,CAAC3f,IAAI;EAE3BiB,IAAI,CAACnC,OAAO,GAAGC,aAAa,CAAC,CAAC;EAE9B,OAAOkC,IAAI;AACb;AAEA,SAAS4e,KAAKA,CAACC,SAAS,EAAEC,IAAI,EAAE;EAC9B,SAASC,QAAQA,CAAA,EAAG;IAClB,IAAIC,WAAW,GAAG,EAAE;IAEpBF,IAAI,GAAGA,IAAI,IAAI,CAAC;IAEhB,IAAI;MACFE,WAAW,GAAGV,UAAe,CAACO,SAAS,CAAC;IAC1C,CAAC,CAAC,OAAO/mB,CAAC,EAAE;MACVknB,WAAW,GAAG,EAAE;IAClB;IAEA,IAAI5gB,KAAK,GAAG,EAAE;IAEd,KAAK,IAAI/I,CAAC,GAAGypB,IAAI,EAAEzpB,CAAC,GAAG2pB,WAAW,CAACnpB,MAAM,EAAER,CAAC,EAAE,EAAE;MAC9C+I,KAAK,CAAC5C,IAAI,CAAC,IAAIijB,KAAK,CAACO,WAAW,CAAC3pB,CAAC,CAAC,CAAC,CAAC;IACvC;IAEA,OAAO+I,KAAK;EACd;EAEA,OAAO;IACLA,KAAK,EAAE2gB,QAAQ,CAAC,CAAC;IACjB7hB,OAAO,EAAE2hB,SAAS,CAAC3hB,OAAO;IAC1BzH,IAAI,EAAEwpB,sBAAsB,CAACJ,SAAS,CAAC;IACvCK,QAAQ,EAAEL,SAAS,CAACzgB,KAAK;IACzB+gB,YAAY,EAAEN;EAChB,CAAC;AACH;AAEA,SAAS7hB,iBAAKA,CAAClF,CAAC,EAAEgnB,IAAI,EAAE;EACtB,IAAIvgB,GAAG,GAAGzG,CAAC;EAEX,IAAIyG,GAAG,CAAC6gB,MAAM,IAAI7gB,GAAG,CAAC8gB,KAAK,EAAE;IAC3B,IAAIC,UAAU,GAAG,EAAE;IACnB,OAAO/gB,GAAG,EAAE;MACV+gB,UAAU,CAAC9jB,IAAI,CAAC,IAAIojB,KAAK,CAACrgB,GAAG,EAAEugB,IAAI,CAAC,CAAC;MACrCvgB,GAAG,GAAGA,GAAG,CAAC6gB,MAAM,IAAI7gB,GAAG,CAAC8gB,KAAK;MAE7BP,IAAI,GAAG,CAAC,CAAC,CAAC;IACZ;;IAEA;IACAQ,UAAU,CAAC,CAAC,CAAC,CAACA,UAAU,GAAGA,UAAU;IACrC,OAAOA,UAAU,CAAC,CAAC,CAAC;EACtB,CAAC,MAAM;IACL,OAAO,IAAIV,KAAK,CAACrgB,GAAG,EAAEugB,IAAI,CAAC;EAC7B;AACF;AAEA,SAASS,eAAeA,CAACC,MAAM,EAAE;EAC/B,IAAI,CAACA,MAAM,IAAI,CAACA,MAAM,CAACnpB,KAAK,EAAE;IAC5B,OAAO,CAAC,uDAAuD,EAAE,EAAE,CAAC;EACtE;EACA,IAAIopB,aAAa,GAAGD,MAAM,CAACnpB,KAAK,CAACmoB,gBAAgB,CAAC;EAClD,IAAIkB,QAAQ,GAAG,WAAW;EAE1B,IAAID,aAAa,EAAE;IACjBC,QAAQ,GAAGD,aAAa,CAACA,aAAa,CAAC5pB,MAAM,GAAG,CAAC,CAAC;IAClD2pB,MAAM,GAAGA,MAAM,CAAC3oB,OAAO,CACrB,CAAC4oB,aAAa,CAACA,aAAa,CAAC5pB,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI6pB,QAAQ,GAAG,GAAG,EAChE,EACF,CAAC;IACDF,MAAM,GAAGA,MAAM,CAAC3oB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;EACjD;EACA,OAAO,CAAC6oB,QAAQ,EAAEF,MAAM,CAAC;AAC3B;;AAEA;AACA;AACA;AACA,SAASP,sBAAsBA,CAAC/lB,KAAK,EAAE;EACrC,IAAIzD,IAAI,GAAGyD,KAAK,CAACzD,IAAI,IAAIyD,KAAK,CAACzD,IAAI,CAACI,MAAM,IAAIqD,KAAK,CAACzD,IAAI;EACxD,IAAIkqB,eAAe,GACjBzmB,KAAK,CAAChE,WAAW,CAACO,IAAI,IACtByD,KAAK,CAAChE,WAAW,CAACO,IAAI,CAACI,MAAM,IAC7BqD,KAAK,CAAChE,WAAW,CAACO,IAAI;EAExB,IAAI,CAACA,IAAI,IAAI,CAACkqB,eAAe,EAAE;IAC7B,OAAOlqB,IAAI,IAAIkqB,eAAe;EAChC;EAEA,IAAIlqB,IAAI,KAAK,OAAO,EAAE;IACpB,OAAOkqB,eAAe;EACxB;EACA,OAAOlqB,IAAI;AACb;AAEA,gDAAe;EACbmI,iBAAiB,EAAjBA,iBAAiB;EACjB2hB,eAAe,EAAfA,eAAe;EACfzhB,aAAa,EAAbA,aAAa;EACbd,KAAK,EAALA,iBAAK;EACL4hB,KAAK,EAALA,KAAK;EACLH,KAAK,EAALA;AACF,CAAC;;AC9HkC;AACS;AACV;AAElC,SAASmB,kBAAkBA,CAAC9f,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,EAAE;EACnD,IAAIU,IAAI,CAACvB,GAAG,IAAIhB,WAAW,CAACqhB,KAAK,CAAC9e,IAAI,CAACvB,GAAG,CAAC,CAAC9I,IAAI,KAAK,cAAc,EAAE;IACnE,IAAIqR,aAAa,GAAG,IAAI1Q,KAAK,CAAC,CAAC;IAC/B0Q,aAAa,CAACrR,IAAI,GAAGqK,IAAI,CAACvB,GAAG,CAAC9I,IAAI;IAClCqR,aAAa,CAAC5J,OAAO,GAAG4C,IAAI,CAACvB,GAAG,CAACrB,OAAO;IACxC4J,aAAa,CAAC1I,KAAK,GAAG0B,IAAI,CAACvB,GAAG,CAACH,KAAK;IACpC0I,aAAa,CAACsY,MAAM,GAAGtf,IAAI,CAACvB,GAAG;IAC/BuB,IAAI,CAACvB,GAAG,GAAGuI,aAAa;EAC1B;EACA1H,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAAS+f,mBAAmBA,CAAC/f,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,EAAE;EACpDU,IAAI,CAACE,IAAI,GAAGF,IAAI,CAACE,IAAI,IAAI,CAAC,CAAC;EAC3B,IAAIF,IAAI,CAACvB,GAAG,EAAE;IACZ,IAAI;MACFuB,IAAI,CAACggB,SAAS,GACZhgB,IAAI,CAACvB,GAAG,CAACwhB,gBAAgB,IACzBxiB,WAAW,CAACP,KAAK,CAAC8C,IAAI,CAACvB,GAAG,EAAEuB,IAAI,CAACO,UAAU,CAAC;MAE9C,IAAIlF,OAAO,CAACmF,eAAe,EAAE;QAC3BA,0BAAe,CAACR,IAAI,CAAC;MACvB;IACF,CAAC,CAAC,OAAOhI,CAAC,EAAE;MACVwG,UAAM,CAACpF,KAAK,CAAC,uCAAuC,EAAEpB,CAAC,CAAC;MACxD,IAAI;QACFgI,IAAI,CAAC5C,OAAO,GACV4C,IAAI,CAACvB,GAAG,CAACrB,OAAO,IAChB4C,IAAI,CAACvB,GAAG,CAACyhB,WAAW,IACpBlgB,IAAI,CAAC5C,OAAO,IACZ7F,MAAM,CAACyI,IAAI,CAACvB,GAAG,CAAC;MACpB,CAAC,CAAC,OAAOwb,EAAE,EAAE;QACXja,IAAI,CAAC5C,OAAO,GAAG7F,MAAM,CAACyI,IAAI,CAACvB,GAAG,CAAC,IAAIlH,MAAM,CAAC0iB,EAAE,CAAC;MAC/C;MACA,OAAOja,IAAI,CAACvB,GAAG;IACjB;EACF;EACAa,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAASQ,0BAAeA,CAACR,IAAI,EAAE;EAC7B,IAAImgB,KAAK,GAAG,EAAE;EACd,IAAI1hB,GAAG,GAAGuB,IAAI,CAACvB,GAAG;EAElB0hB,KAAK,CAACzkB,IAAI,CAAC+C,GAAG,CAAC;EAEf,OAAOA,GAAG,CAAC6gB,MAAM,IAAI7gB,GAAG,CAAC8gB,KAAK,EAAE;IAC9B9gB,GAAG,GAAGA,GAAG,CAAC6gB,MAAM,IAAI7gB,GAAG,CAAC8gB,KAAK;IAC7BY,KAAK,CAACzkB,IAAI,CAAC+C,GAAG,CAAC;EACjB;EAEA7E,eAAiB,CAACoG,IAAI,EAAEmgB,KAAK,CAAC;AAChC;AAEA,SAASC,2BAA2BA,CAACpgB,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,EAAE;EAC5D,IAAI,CAACU,IAAI,CAAC5C,OAAO,IAAI,CAAC4C,IAAI,CAACggB,SAAS,IAAI,CAAChgB,IAAI,CAACX,MAAM,EAAE;IACpDC,QAAQ,CAAC,IAAIhJ,KAAK,CAAC,wCAAwC,CAAC,EAAE,IAAI,CAAC;EACrE;EACAgJ,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAASqgB,WAAWA,CAACrgB,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,EAAE;EAC5C,IAAI4F,WAAW,GACZ7J,OAAO,CAAC8H,OAAO,IAAI9H,OAAO,CAAC8H,OAAO,CAAC+B,WAAW,IAAK7J,OAAO,CAAC6J,WAAW;EACzElF,IAAI,CAACE,IAAI,GAAGtG,SAAO,CAACoG,IAAI,CAACE,IAAI,EAAE;IAC7BgF,WAAW,EAAEA,WAAW;IACxB5E,KAAK,EAAEN,IAAI,CAACM,KAAK;IACjBwN,QAAQ,EAAEzS,OAAO,CAACyS,QAAQ;IAC1B9J,QAAQ,EAAE,SAAS;IACnBwB,SAAS,EAAE,YAAY;IACvBF,QAAQ,EAAE,YAAY;IACtBgb,MAAM,EAAE,CAAC,CAAC;IACV5nB,IAAI,EAAEsH,IAAI,CAACtH,IAAI;IACfwG,QAAQ,EAAE;MACRvJ,IAAI,EAAE,oBAAoB;MAC1B4P,OAAO,EAAElK,OAAO,CAACkK;IACnB,CAAC;IACDlG,MAAM,EAAEW,IAAI,CAACX;EACf,CAAC,CAAC;EACFC,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAASugB,cAAcA,CAACloB,MAAM,EAAE;EAC9B,OAAO,UAAU2H,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,EAAE;IACxC,IAAIkhB,WAAW,GAAG,CAAC,CAAC;IAEpB,IAAInoB,MAAM,IAAIA,MAAM,CAACqF,QAAQ,EAAE;MAC7B8iB,WAAW,CAACjnB,GAAG,GAAGlB,MAAM,CAACqF,QAAQ,CAACO,IAAI;MACtCuiB,WAAW,CAACC,YAAY,GAAGpoB,MAAM,CAACqF,QAAQ,CAAC/D,MAAM;IACnD;IAEA,IAAI+mB,YAAY,GAAG,YAAY;IAC/B,IAAI,CAACrlB,OAAO,CAACoH,SAAS,EAAE;MACtBie,YAAY,GAAG,IAAI;IACrB,CAAC,MAAM,IAAIrlB,OAAO,CAACoH,SAAS,KAAK,IAAI,EAAE;MACrCie,YAAY,IAAI,YAAY;IAC9B;IACA,IAAIA,YAAY,EAAEF,WAAW,CAACG,OAAO,GAAGD,YAAY;IAEpD,IAAIhsB,MAAM,CAACoN,IAAI,CAAC0e,WAAW,CAAC,CAACzqB,MAAM,GAAG,CAAC,EAAE;MACvC6D,GAAK,CAACoG,IAAI,EAAE,cAAc,EAAEwgB,WAAW,CAAC;IAC1C;IAEAlhB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;EACtB,CAAC;AACH;AAEA,SAAS4gB,aAAaA,CAACvoB,MAAM,EAAE;EAC7B,OAAO,UAAU2H,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,EAAE;IACxC,IAAI,CAACjH,MAAM,EAAE;MACX,OAAOiH,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;IAC7B;IACA,IAAI6gB,GAAG,GAAGxoB,MAAM,CAAC+F,SAAS,IAAI,CAAC,CAAC;IAChC,IAAI0iB,GAAG,GAAGzoB,MAAM,CAAC0oB,MAAM,IAAI,CAAC,CAAC;IAC7BnnB,GAAK,CAACoG,IAAI,EAAE,aAAa,EAAE;MACzBghB,UAAU,EAAEhhB,IAAI,CAACC,SAAS,GAAG5H,MAAM,CAAC4oB,iBAAiB;MACrDhhB,SAAS,EAAEpH,IAAI,CAACqoB,KAAK,CAAClhB,IAAI,CAACC,SAAS,GAAG,IAAI,CAAC;MAC5CkhB,UAAU,EAAE;QACVC,OAAO,EAAEP,GAAG,CAACxiB,SAAS;QACtBiH,QAAQ,EAAEub,GAAG,CAACvb,QAAQ;QACtB+b,cAAc,EAAER,GAAG,CAACS,aAAa;QACjCP,MAAM,EAAE;UACNQ,KAAK,EAAET,GAAG,CAACS,KAAK;UAChBC,MAAM,EAAEV,GAAG,CAACU;QACd;MACF;IACF,CAAC,CAAC;IACFliB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;EACtB,CAAC;AACH;AAEA,SAASyhB,aAAaA,CAACppB,MAAM,EAAE;EAC7B,OAAO,UAAU2H,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,EAAE;IACxC,IAAI,CAACjH,MAAM,IAAI,CAACA,MAAM,CAAC+F,SAAS,EAAE;MAChC,OAAOkB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;IAC7B;IACA,IAAI0hB,OAAO,GAAG,EAAE;IAChB,IAAIC,UAAU,GAAGtpB,MAAM,CAAC+F,SAAS,CAACsjB,OAAO,IAAI,EAAE;IAC/C,IAAIE,GAAG;IACP,KAAK,IAAIrsB,CAAC,GAAG,CAAC,EAAEwF,CAAC,GAAG4mB,UAAU,CAAC5rB,MAAM,EAAER,CAAC,GAAGwF,CAAC,EAAE,EAAExF,CAAC,EAAE;MACjDqsB,GAAG,GAAGD,UAAU,CAACpsB,CAAC,CAAC;MACnBmsB,OAAO,CAAChmB,IAAI,CAAC;QAAE/F,IAAI,EAAEisB,GAAG,CAACjsB,IAAI;QAAEuqB,WAAW,EAAE0B,GAAG,CAAC1B;MAAY,CAAC,CAAC;IAChE;IACAtmB,GAAK,CAACoG,IAAI,EAAE,gCAAgC,EAAE0hB,OAAO,CAAC;IACtDpiB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;EACtB,CAAC;AACH;AAEA,SAAS6hB,OAAOA,CAAC7hB,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,EAAE;EACxC,IAAIU,IAAI,CAACggB,SAAS,EAAE;IAClB,IAAIhgB,IAAI,CAACggB,SAAS,CAACR,UAAU,EAAE;MAC7BsC,iBAAiB,CAAC9hB,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,CAAC;IAC5C,CAAC,MAAM;MACLyiB,YAAY,CAAC/hB,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,CAAC;IACvC;EACF,CAAC,MAAM;IACL0iB,cAAc,CAAChiB,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,CAAC;EACzC;AACF;AAEA,SAAS0iB,cAAcA,CAAChiB,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,EAAE;EAC/C,IAAIlC,OAAO,GAAG4C,IAAI,CAAC5C,OAAO;EAC1B,IAAIiC,MAAM,GAAGW,IAAI,CAACX,MAAM;EAExB,IAAI,CAACjC,OAAO,EAAE;IACZA,OAAO,GAAG,2CAA2C;EACvD;EACA,IAAIxH,MAAM,GAAG;IACXwP,IAAI,EAAEhI;EACR,CAAC;EAED,IAAIiC,MAAM,EAAE;IACVzJ,MAAM,CAACyP,KAAK,GAAGzL,SAAO,CAACyF,MAAM,CAAC;EAChC;EAEAzF,GAAK,CAACoG,IAAI,EAAE,WAAW,EAAE;IAAE5C,OAAO,EAAExH;EAAO,CAAC,CAAC;EAC7C0J,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAASiiB,aAAaA,CAACjiB,IAAI,EAAE;EAC3B;EACA,IAAI1B,KAAK,GAAG0B,IAAI,CAACggB,SAAS,CAAC1hB,KAAK;EAChC,IACEA,KAAK,IACLA,KAAK,CAACvI,MAAM,KAAK,CAAC,IAClBiK,IAAI,CAACkiB,mBAAmB,IACxBliB,IAAI,CAACkiB,mBAAmB,CAAC5jB,KAAK,EAC9B;IACAA,KAAK,GAAG0B,IAAI,CAACkiB,mBAAmB,CAAC5jB,KAAK;EACxC;EACA,OAAOA,KAAK;AACd;AAEA,SAASwjB,iBAAiBA,CAAC9hB,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,EAAE;EAClD,IAAIkgB,UAAU,GAAGxf,IAAI,CAACggB,SAAS,CAACR,UAAU;EAC1C,IAAI2C,MAAM,GAAG,EAAE;EAEf,IAAIC,gBAAgB,GAAG5C,UAAU,CAACzpB,MAAM;EACxC,KAAK,IAAIR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6sB,gBAAgB,EAAE7sB,CAAC,EAAE,EAAE;IACzC,IAAI8sB,KAAK,GAAGC,UAAU,CAACtiB,IAAI,EAAEwf,UAAU,CAACjqB,CAAC,CAAC,EAAE8F,OAAO,CAAC;IACpD8mB,MAAM,CAACzmB,IAAI,CAAC2mB,KAAK,CAAC;EACpB;EAEAzoB,GAAK,CAACoG,IAAI,EAAE,WAAW,EAAE;IAAEuiB,WAAW,EAAEJ;EAAO,CAAC,CAAC;EACjD7iB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAAS+hB,YAAYA,CAAC/hB,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,EAAE;EAC7C,IAAIhB,KAAK,GAAG2jB,aAAa,CAACjiB,IAAI,CAAC;EAE/B,IAAI1B,KAAK,EAAE;IACT,IAAI+jB,KAAK,GAAGC,UAAU,CAACtiB,IAAI,EAAEA,IAAI,CAACggB,SAAS,EAAE3kB,OAAO,CAAC;IACrDzB,GAAK,CAACoG,IAAI,EAAE,WAAW,EAAE;MAAEqiB,KAAK,EAAEA;IAAM,CAAC,CAAC;IAC1C/iB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;EACtB,CAAC,MAAM;IACL,IAAIggB,SAAS,GAAGhgB,IAAI,CAACggB,SAAS;IAC9B,IAAIwC,KAAK,GAAG/kB,WAAW,CAACgiB,eAAe,CAACO,SAAS,CAAC5iB,OAAO,CAAC;IAC1D,IAAIqlB,SAAS,GAAGC,UAAU,CAAC1C,SAAS,EAAEwC,KAAK,CAAC,CAAC,CAAC,EAAEnnB,OAAO,CAAC;IACxD,IAAI+B,OAAO,GAAGolB,KAAK,CAAC,CAAC,CAAC;IAEtBxiB,IAAI,CAAC5C,OAAO,GAAGqlB,SAAS,GAAG,IAAI,GAAGrlB,OAAO;IACzC4kB,cAAc,CAAChiB,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,CAAC;EACzC;AACF;AAEA,SAASgjB,UAAUA,CAACtiB,IAAI,EAAEggB,SAAS,EAAE3kB,OAAO,EAAE;EAC5C,IAAI6kB,WAAW,GAAGlgB,IAAI,IAAIA,IAAI,CAACE,IAAI,CAACggB,WAAW;EAC/C,IAAI7gB,MAAM,GAAGW,IAAI,IAAIA,IAAI,CAACX,MAAM;EAChC,IAAIf,KAAK,GAAG2jB,aAAa,CAACjiB,IAAI,CAAC;EAE/B,IAAIwiB,KAAK,GAAG/kB,WAAW,CAACgiB,eAAe,CAACO,SAAS,CAAC5iB,OAAO,CAAC;EAC1D,IAAIqlB,SAAS,GAAGC,UAAU,CAAC1C,SAAS,EAAEwC,KAAK,CAAC,CAAC,CAAC,EAAEnnB,OAAO,CAAC;EACxD,IAAI+B,OAAO,GAAGolB,KAAK,CAAC,CAAC,CAAC;EACtB,IAAIH,KAAK,GAAG;IACVtD,SAAS,EAAE;MACT4D,KAAK,EAAEF,SAAS;MAChBrlB,OAAO,EAAEA;IACX;EACF,CAAC;EAED,IAAI8iB,WAAW,EAAE;IACfmC,KAAK,CAACtD,SAAS,CAACmB,WAAW,GAAGA,WAAW;EAC3C;EAEA,IAAI5hB,KAAK,EAAE;IACT,IAAIA,KAAK,CAACvI,MAAM,KAAK,CAAC,EAAE;MACtBssB,KAAK,CAACtD,SAAS,CAACzgB,KAAK,GAAG0hB,SAAS,CAACZ,QAAQ;MAC1CiD,KAAK,CAACtD,SAAS,CAAC7B,GAAG,GAAG3lB,MAAM,CAACyoB,SAAS,CAACX,YAAY,CAAC;IACtD;IACA,IAAIT,UAAU;IACd,IAAIgE,KAAK;IACT,IAAI9lB,IAAI;IACR,IAAI+lB,GAAG;IACP,IAAI3O,IAAI;IACR,IAAI4O,aAAa;IACjB,IAAIvtB,CAAC,EAAEwtB,GAAG;IAEVV,KAAK,CAACW,MAAM,GAAG,EAAE;IACjB,KAAKztB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+I,KAAK,CAACvI,MAAM,EAAE,EAAER,CAAC,EAAE;MACjCqpB,UAAU,GAAGtgB,KAAK,CAAC/I,CAAC,CAAC;MACrBqtB,KAAK,GAAG;QACNK,QAAQ,EAAErE,UAAU,CAACrlB,GAAG,GAAGK,WAAa,CAACglB,UAAU,CAACrlB,GAAG,CAAC,GAAG,WAAW;QACtE8D,MAAM,EAAEuhB,UAAU,CAACjhB,IAAI,IAAI,IAAI;QAC/B4Q,MAAM,EACJ,CAACqQ,UAAU,CAAC/gB,IAAI,IAAI+gB,UAAU,CAAC/gB,IAAI,KAAK,GAAG,GACvC,aAAa,GACb+gB,UAAU,CAAC/gB,IAAI;QACrBP,KAAK,EAAEshB,UAAU,CAAChhB;MACpB,CAAC;MACD,IAAIvC,OAAO,CAAC6nB,YAAY,EAAE;QACxBN,KAAK,CAACrpB,GAAG,GAAGqlB,UAAU,CAACrlB,GAAG;MAC5B;MACA,IACEqpB,KAAK,CAACrU,MAAM,IACZqU,KAAK,CAACrU,MAAM,CAAC4J,QAAQ,IACrByK,KAAK,CAACrU,MAAM,CAAC4J,QAAQ,CAAC,kBAAkB,CAAC,EACzC;QACA;MACF;MAEArb,IAAI,GAAG+lB,GAAG,GAAG3O,IAAI,GAAG,IAAI;MACxB4O,aAAa,GAAGlE,UAAU,CAAC7gB,OAAO,GAAG6gB,UAAU,CAAC7gB,OAAO,CAAChI,MAAM,GAAG,CAAC;MAClE,IAAI+sB,aAAa,EAAE;QACjBC,GAAG,GAAGlqB,IAAI,CAACE,KAAK,CAAC+pB,aAAa,GAAG,CAAC,CAAC;QACnCD,GAAG,GAAGjE,UAAU,CAAC7gB,OAAO,CAACgB,KAAK,CAAC,CAAC,EAAEgkB,GAAG,CAAC;QACtCjmB,IAAI,GAAG8hB,UAAU,CAAC7gB,OAAO,CAACglB,GAAG,CAAC;QAC9B7O,IAAI,GAAG0K,UAAU,CAAC7gB,OAAO,CAACgB,KAAK,CAACgkB,GAAG,CAAC;MACtC;MAEA,IAAIjmB,IAAI,EAAE;QACR8lB,KAAK,CAAC9lB,IAAI,GAAGA,IAAI;MACnB;MAEA,IAAI+lB,GAAG,IAAI3O,IAAI,EAAE;QACf0O,KAAK,CAAC7kB,OAAO,GAAG,CAAC,CAAC;QAClB,IAAI8kB,GAAG,IAAIA,GAAG,CAAC9sB,MAAM,EAAE;UACrB6sB,KAAK,CAAC7kB,OAAO,CAAC8kB,GAAG,GAAGA,GAAG;QACzB;QACA,IAAI3O,IAAI,IAAIA,IAAI,CAACne,MAAM,EAAE;UACvB6sB,KAAK,CAAC7kB,OAAO,CAACmW,IAAI,GAAGA,IAAI;QAC3B;MACF;MAEA,IAAI0K,UAAU,CAAC3f,IAAI,EAAE;QACnB2jB,KAAK,CAAC3jB,IAAI,GAAG2f,UAAU,CAAC3f,IAAI;MAC9B;MAEAojB,KAAK,CAACW,MAAM,CAACtnB,IAAI,CAACknB,KAAK,CAAC;IAC1B;;IAEA;IACAP,KAAK,CAACW,MAAM,CAACxQ,OAAO,CAAC,CAAC;IAEtB,IAAInT,MAAM,EAAE;MACVgjB,KAAK,CAAChd,KAAK,GAAGzL,SAAO,CAACyF,MAAM,CAAC;IAC/B;EACF;EAEA,OAAOgjB,KAAK;AACd;AAEA,SAASK,UAAUA,CAAC1C,SAAS,EAAEwC,KAAK,EAAEnnB,OAAO,EAAE;EAC7C,IAAI2kB,SAAS,CAACrqB,IAAI,EAAE;IAClB,OAAOqqB,SAAS,CAACrqB,IAAI;EACvB,CAAC,MAAM,IAAI0F,OAAO,CAACokB,eAAe,EAAE;IAClC,OAAO+C,KAAK;EACd,CAAC,MAAM;IACL,OAAO,WAAW;EACpB;AACF;AAEA,SAASW,WAAWA,CAACC,OAAO,EAAE;EAC5B,OAAO,UAAUpjB,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,EAAE;IACxC,IAAI8jB,OAAO,EAAE;MACX,IAAI9f,WAAW,GAAGjI,OAAO,CAACiI,WAAW,IAAI,EAAE;MAC3C,IAAI+f,UAAU,GAAGhoB,OAAO,CAACgoB,UAAU,IAAI,EAAE;MACzCrjB,IAAI,CAACE,IAAI,GAAGkjB,OAAO,CAACpjB,IAAI,CAACE,IAAI,EAAEoD,WAAW,EAAE+f,UAAU,CAAC;IACzD;IACA/jB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;EACtB,CAAC;AACH;;;ACxVkC;AAElC,SAASsjB,aAAaA,CAACtjB,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,EAAE;EAC9C,IAAIU,IAAI,CAACuM,WAAW,EAAE;IACpBvM,IAAI,CAACE,IAAI,CAACqM,WAAW,GAAG,IAAI;EAC9B;EACA,IAAIvM,IAAI,CAACI,aAAa,EAAE;IACtBJ,IAAI,CAACE,IAAI,CAACE,aAAa,GAAGJ,IAAI,CAACI,aAAa;EAC9C;EACAd,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAASujB,iBAAiBA,CAACvjB,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,EAAE;EAClD,IAAIkkB,cAAc,GAAGnoB,OAAO,CAAC8H,OAAO,IAAI,CAAC,CAAC;EAC1C,IAAIqgB,cAAc,CAACpe,IAAI,EAAE;IACvB,OAAOoe,cAAc,CAACpe,IAAI;EAC5B;EAEApF,IAAI,CAACE,IAAI,GAAGtG,SAAO,CAACoG,IAAI,CAACE,IAAI,EAAEsjB,cAAc,CAAC;EAC9ClkB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAASyjB,gBAAgBA,CAACzjB,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,EAAE;EACjD,IAAIU,IAAI,CAAC4L,eAAe,EAAE;IACxBhS,GAAK,CAACoG,IAAI,EAAE,qBAAqB,EAAEA,IAAI,CAAC4L,eAAe,CAAC;EAC1D;EACAtM,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAAS0jB,mBAAmBA,CAAC1jB,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,EAAE;EACpD,IAAI,CAACU,IAAI,CAAC5C,OAAO,EAAE;IACjBkC,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;IACpB;EACF;EACA,IAAI2jB,SAAS,GAAG,yBAAyB;EACzC,IAAItB,KAAK,GAAGzoB,GAAK,CAACoG,IAAI,EAAE2jB,SAAS,CAAC;EAClC,IAAI,CAACtB,KAAK,EAAE;IACVsB,SAAS,GAAG,iBAAiB;IAC7BtB,KAAK,GAAGzoB,GAAK,CAACoG,IAAI,EAAE2jB,SAAS,CAAC;EAChC;EACA,IAAItB,KAAK,EAAE;IACT,IAAI,EAAEA,KAAK,CAACtD,SAAS,IAAIsD,KAAK,CAACtD,SAAS,CAACmB,WAAW,CAAC,EAAE;MACrDtmB,GAAK,CAACoG,IAAI,EAAE2jB,SAAS,GAAG,wBAAwB,EAAE3jB,IAAI,CAAC5C,OAAO,CAAC;MAC/DkC,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;MACpB;IACF;IACA,IAAIqF,KAAK,GAAGzL,GAAK,CAACoG,IAAI,EAAE2jB,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnD,IAAIC,QAAQ,GAAGhqB,SAAO,CAACyL,KAAK,EAAE;MAAEjI,OAAO,EAAE4C,IAAI,CAAC5C;IAAQ,CAAC,CAAC;IACxDxD,GAAK,CAACoG,IAAI,EAAE2jB,SAAS,GAAG,QAAQ,EAAEC,QAAQ,CAAC;EAC7C;EACAtkB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAAS6jB,aAAaA,CAACrlB,MAAM,EAAE;EAC7B,OAAO,UAAUwB,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,EAAE;IACxC,IAAIwkB,OAAO,GAAGlqB,SAAO,CAACoG,IAAI,CAAC;IAC3B,IAAI+X,QAAQ,GAAG,IAAI;IACnB,IAAI;MACF,IAAIne,UAAY,CAACyB,OAAO,CAACmO,SAAS,CAAC,EAAE;QACnCuO,QAAQ,GAAG1c,OAAO,CAACmO,SAAS,CAACsa,OAAO,CAAC5jB,IAAI,EAAEF,IAAI,CAAC;MAClD;IACF,CAAC,CAAC,OAAOhI,CAAC,EAAE;MACVqD,OAAO,CAACmO,SAAS,GAAG,IAAI;MACxBhL,MAAM,CAACpF,KAAK,CACV,+EAA+E,EAC/EpB,CACF,CAAC;MACDsH,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;MACpB;IACF;IACA,IAAIpG,SAAW,CAACme,QAAQ,CAAC,EAAE;MACzBA,QAAQ,CAAC5f,IAAI,CACX,UAAU4rB,YAAY,EAAE;QACtB,IAAIA,YAAY,EAAE;UAChBD,OAAO,CAAC5jB,IAAI,GAAG6jB,YAAY;QAC7B;QACAzkB,QAAQ,CAAC,IAAI,EAAEwkB,OAAO,CAAC;MACzB,CAAC,EACD,UAAU1qB,KAAK,EAAE;QACfkG,QAAQ,CAAClG,KAAK,EAAE4G,IAAI,CAAC;MACvB,CACF,CAAC;IACH,CAAC,MAAM;MACLV,QAAQ,CAAC,IAAI,EAAEwkB,OAAO,CAAC;IACzB;EACF,CAAC;AACH;AAEA,SAASE,kBAAkBA,CAAChkB,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,EAAE;EACnD,IAAI,CAACjE,OAAO,CAAC4oB,UAAU,EAAE;IACvB,OAAO3kB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;EAC7B;EACA,IAAIkkB,SAAS,GAAG,gBAAgB;EAChC,IAAI7kB,MAAM,GAAGzF,GAAK,CAACoG,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;EAC7CX,MAAM,CAAC6kB,SAAS,CAAC,GAAG7oB,OAAO;EAC3B2E,IAAI,CAACE,IAAI,CAACb,MAAM,GAAGA,MAAM;EACzBC,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAASmkB,iBAAiBA,CAAC9oB,OAAO,EAAE1F,IAAI,EAAE;EACxC,IAAIiE,UAAY,CAACyB,OAAO,CAAC1F,IAAI,CAAC,CAAC,EAAE;IAC/B0F,OAAO,CAAC1F,IAAI,CAAC,GAAG0F,OAAO,CAAC1F,IAAI,CAAC,CAACb,QAAQ,CAAC,CAAC;EAC1C;AACF;AAEA,SAASsvB,oBAAoBA,CAACpkB,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,EAAE;EACrD,IAAI+kB,iBAAiB,GAAGhpB,OAAO,CAAC+O,kBAAkB;;EAElD;EACA+Z,iBAAiB,CAACE,iBAAiB,EAAE,WAAW,CAAC;EACjDF,iBAAiB,CAACE,iBAAiB,EAAE,aAAa,CAAC;EACnDF,iBAAiB,CAACE,iBAAiB,EAAE,gBAAgB,CAAC;EAEtD,OAAOA,iBAAiB,CAACjpB,WAAW;EACpC4E,IAAI,CAACE,IAAI,CAAChB,QAAQ,CAAColB,kBAAkB,GAAGD,iBAAiB;EACzD/kB,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;AAEA,SAASukB,iBAAiBA,CAACvkB,IAAI,EAAE3E,OAAO,EAAEiE,QAAQ,EAAE;EAClD,IAAII,UAAU,GAAG9F,SAAO,CACtBoG,IAAI,CAACd,QAAQ,CAACslB,MAAM,CAACtlB,QAAQ,CAACQ,UAAU,EACxCM,IAAI,CAACN,UACP,CAAC;EAED,IAAI9F,GAAK,CAACoG,IAAI,EAAE,kBAAkB,CAAC,EAAE;IACnCN,UAAU,CAAC+kB,YAAY,GAAG,IAAI;EAChC;EAEA,IAAIzkB,IAAI,CAACuM,WAAW,EAAE;IACpB7M,UAAU,CAACglB,WAAW,GAAG1kB,IAAI,CAACuM,WAAW;EAC3C;EAEA,IAAIvM,IAAI,CAACvB,GAAG,EAAE;IACZ,IAAI;MACFiB,UAAU,CAACilB,SAAS,GAAG;QACrBvnB,OAAO,EAAE4C,IAAI,CAACvB,GAAG,CAACrB,OAAO;QACzBzH,IAAI,EAAEqK,IAAI,CAACvB,GAAG,CAAC9I,IAAI;QACnBivB,gBAAgB,EAAE5kB,IAAI,CAACvB,GAAG,CAACrJ,WAAW,IAAI4K,IAAI,CAACvB,GAAG,CAACrJ,WAAW,CAACO,IAAI;QACnEstB,QAAQ,EAAEjjB,IAAI,CAACvB,GAAG,CAACqe,QAAQ;QAC3Bnf,IAAI,EAAEqC,IAAI,CAACvB,GAAG,CAAC6f,UAAU;QACzB1gB,MAAM,EAAEoC,IAAI,CAACvB,GAAG,CAAC8f,YAAY;QAC7BjgB,KAAK,EAAE0B,IAAI,CAACvB,GAAG,CAACH;MAClB,CAAC;IACH,CAAC,CAAC,OAAOtG,CAAC,EAAE;MACV0H,UAAU,CAACilB,SAAS,GAAG;QAAEE,MAAM,EAAEttB,MAAM,CAACS,CAAC;MAAE,CAAC;IAC9C;EACF;EAEAgI,IAAI,CAACE,IAAI,CAAChB,QAAQ,CAACQ,UAAU,GAAG9F,SAAO,CACrCoG,IAAI,CAACE,IAAI,CAAChB,QAAQ,CAACQ,UAAU,EAC7BA,UACF,CAAC;EACDJ,QAAQ,CAAC,IAAI,EAAEU,IAAI,CAAC;AACtB;;;ACzJmC;AAEnC,SAAS8kB,WAAWA,CAAC9kB,IAAI,EAAE+kB,QAAQ,EAAE;EACnC,IAAInrB,GAAK,CAACmrB,QAAQ,EAAE,iCAAiC,CAAC,EAAE;IACtD,OAAO,CAACnrB,GAAK,CAACoG,IAAI,EAAE,2BAA2B,CAAC;EAClD;EACA,OAAO,IAAI;AACb;;;ACPkC;AAElC,SAASglB,UAAUA,CAAChlB,IAAI,EAAE+kB,QAAQ,EAAE;EAClC,IAAIzkB,KAAK,GAAGN,IAAI,CAACM,KAAK;EACtB,IAAI2kB,QAAQ,GAAGrrB,MAAQ,CAAC0G,KAAK,CAAC,IAAI,CAAC;EACnC,IAAI4kB,WAAW,GAAGH,QAAQ,CAACG,WAAW;EACtC,IAAIC,cAAc,GAAGvrB,MAAQ,CAACsrB,WAAW,CAAC,IAAI,CAAC;EAE/C,IAAID,QAAQ,GAAGE,cAAc,EAAE;IAC7B,OAAO,KAAK;EACd;EACA,OAAO,IAAI;AACb;AAEA,SAASC,eAAeA,CAAC5mB,MAAM,EAAE;EAC/B,OAAO,UAAUwB,IAAI,EAAE+kB,QAAQ,EAAE;IAC/B,IAAIM,UAAU,GAAG,CAAC,CAACrlB,IAAI,CAACuM,WAAW;IACnC,OAAOvM,IAAI,CAACuM,WAAW;IACvB,IAAItN,IAAI,GAAGe,IAAI,CAACI,aAAa;IAC7B,OAAOJ,IAAI,CAACI,aAAa;IACzB,IAAI;MACF,IAAIxG,UAAY,CAACmrB,QAAQ,CAACO,cAAc,CAAC,EAAE;QACzCP,QAAQ,CAACO,cAAc,CAACD,UAAU,EAAEpmB,IAAI,EAAEe,IAAI,CAAC;MACjD;IACF,CAAC,CAAC,OAAOhI,CAAC,EAAE;MACV+sB,QAAQ,CAACO,cAAc,GAAG,IAAI;MAC9B9mB,MAAM,CAACpF,KAAK,CAAC,8CAA8C,EAAEpB,CAAC,CAAC;IACjE;IACA,IAAI;MACF,IACE4B,UAAY,CAACmrB,QAAQ,CAACD,WAAW,CAAC,IAClCC,QAAQ,CAACD,WAAW,CAACO,UAAU,EAAEpmB,IAAI,EAAEe,IAAI,CAAC,EAC5C;QACA,OAAO,KAAK;MACd;IACF,CAAC,CAAC,OAAOhI,CAAC,EAAE;MACV+sB,QAAQ,CAACD,WAAW,GAAG,IAAI;MAC3BtmB,MAAM,CAACpF,KAAK,CAAC,oDAAoD,EAAEpB,CAAC,CAAC;IACvE;IACA,OAAO,IAAI;EACb,CAAC;AACH;AAEA,SAASutB,mBAAmBA,CAAC/mB,MAAM,EAAE;EACnC,OAAO,UAAUwB,IAAI,EAAE+kB,QAAQ,EAAE;IAC/B,OAAO,CAACS,YAAY,CAACxlB,IAAI,EAAE+kB,QAAQ,EAAE,WAAW,EAAEvmB,MAAM,CAAC;EAC3D,CAAC;AACH;AAEA,SAASinB,eAAeA,CAACjnB,MAAM,EAAE;EAC/B,OAAO,UAAUwB,IAAI,EAAE+kB,QAAQ,EAAE;IAC/B,OAAOS,YAAY,CAACxlB,IAAI,EAAE+kB,QAAQ,EAAE,UAAU,EAAEvmB,MAAM,CAAC;EACzD,CAAC;AACH;AAEA,SAASknB,WAAWA,CAACrD,KAAK,EAAEsD,IAAI,EAAEC,KAAK,EAAE;EACvC,IAAI,CAACvD,KAAK,EAAE;IACV,OAAO,CAACuD,KAAK;EACf;EAEA,IAAI5C,MAAM,GAAGX,KAAK,CAACW,MAAM;EAEzB,IAAI,CAACA,MAAM,IAAIA,MAAM,CAACjtB,MAAM,KAAK,CAAC,EAAE;IAClC,OAAO,CAAC6vB,KAAK;EACf;EAEA,IAAIhD,KAAK,EAAEK,QAAQ,EAAE1pB,GAAG,EAAEssB,QAAQ;EAClC,IAAIC,UAAU,GAAGH,IAAI,CAAC5vB,MAAM;EAC5B,IAAIgwB,WAAW,GAAG/C,MAAM,CAACjtB,MAAM;EAC/B,KAAK,IAAIR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwwB,WAAW,EAAExwB,CAAC,EAAE,EAAE;IACpCqtB,KAAK,GAAGI,MAAM,CAACztB,CAAC,CAAC;IACjB0tB,QAAQ,GAAGL,KAAK,CAACK,QAAQ;IAEzB,IAAI,CAACrpB,MAAQ,CAACqpB,QAAQ,EAAE,QAAQ,CAAC,EAAE;MACjC,OAAO,CAAC2C,KAAK;IACf;IAEA,KAAK,IAAI9lB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgmB,UAAU,EAAEhmB,CAAC,EAAE,EAAE;MACnCvG,GAAG,GAAGosB,IAAI,CAAC7lB,CAAC,CAAC;MACb+lB,QAAQ,GAAG,IAAI5uB,MAAM,CAACsC,GAAG,CAAC;MAE1B,IAAIssB,QAAQ,CAAC1uB,IAAI,CAAC8rB,QAAQ,CAAC,EAAE;QAC3B,OAAO,IAAI;MACb;IACF;EACF;EACA,OAAO,KAAK;AACd;AAEA,SAASuC,YAAYA,CAACxlB,IAAI,EAAE+kB,QAAQ,EAAEiB,WAAW,EAAExnB,MAAM,EAAE;EACzD;EACA,IAAIonB,KAAK,GAAG,KAAK;EACjB,IAAII,WAAW,KAAK,WAAW,EAAE;IAC/BJ,KAAK,GAAG,IAAI;EACd;EAEA,IAAID,IAAI,EAAExD,MAAM;EAChB,IAAI;IACFwD,IAAI,GAAGC,KAAK,GAAGb,QAAQ,CAACphB,aAAa,GAAGohB,QAAQ,CAACvhB,YAAY;IAC7D2e,MAAM,GAAGvoB,GAAK,CAACoG,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAACpG,GAAK,CAACoG,IAAI,EAAE,YAAY,CAAC,CAAC;;IAEvE;IACA;IACA,IAAI,CAAC2lB,IAAI,IAAIA,IAAI,CAAC5vB,MAAM,KAAK,CAAC,EAAE;MAC9B,OAAO,CAAC6vB,KAAK;IACf;IACA,IAAIzD,MAAM,CAACpsB,MAAM,KAAK,CAAC,IAAI,CAACosB,MAAM,CAAC,CAAC,CAAC,EAAE;MACrC,OAAO,CAACyD,KAAK;IACf;IAEA,IAAIK,YAAY,GAAG9D,MAAM,CAACpsB,MAAM;IAChC,KAAK,IAAIR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0wB,YAAY,EAAE1wB,CAAC,EAAE,EAAE;MACrC,IAAImwB,WAAW,CAACvD,MAAM,CAAC5sB,CAAC,CAAC,EAAEowB,IAAI,EAAEC,KAAK,CAAC,EAAE;QACvC,OAAO,IAAI;MACb;IACF;EACF,CAAC,CAAC,OACA5tB;EACA,4BACA;IACA,IAAI4tB,KAAK,EAAE;MACTb,QAAQ,CAACphB,aAAa,GAAG,IAAI;IAC/B,CAAC,MAAM;MACLohB,QAAQ,CAACvhB,YAAY,GAAG,IAAI;IAC9B;IACA,IAAI0iB,QAAQ,GAAGN,KAAK,GAAG,eAAe,GAAG,cAAc;IACvDpnB,MAAM,CAACpF,KAAK,CACV,2CAA2C,GACzC8sB,QAAQ,GACR,2BAA2B,GAC3BA,QAAQ,GACR,GAAG,EACLluB,CACF,CAAC;IACD,OAAO,CAAC4tB,KAAK;EACf;EACA,OAAO,KAAK;AACd;AAEA,SAASO,gBAAgBA,CAAC3nB,MAAM,EAAE;EAChC,OAAO,UAAUwB,IAAI,EAAE+kB,QAAQ,EAAE;IAC/B,IAAIxvB,CAAC,EAAEuK,CAAC,EAAEsmB,eAAe,EAAErmB,GAAG,EAAEomB,gBAAgB,EAAEE,eAAe,EAAEC,QAAQ;IAE3E,IAAI;MACFH,gBAAgB,GAAG,KAAK;MACxBC,eAAe,GAAGrB,QAAQ,CAACqB,eAAe;MAE1C,IAAI,CAACA,eAAe,IAAIA,eAAe,CAACrwB,MAAM,KAAK,CAAC,EAAE;QACpD,OAAO,IAAI;MACb;MAEAuwB,QAAQ,GAAGC,gBAAgB,CAACvmB,IAAI,CAAC;MAEjC,IAAIsmB,QAAQ,CAACvwB,MAAM,KAAK,CAAC,EAAE;QACzB,OAAO,IAAI;MACb;MAEAgK,GAAG,GAAGqmB,eAAe,CAACrwB,MAAM;MAC5B,KAAKR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwK,GAAG,EAAExK,CAAC,EAAE,EAAE;QACxB8wB,eAAe,GAAG,IAAIpvB,MAAM,CAACmvB,eAAe,CAAC7wB,CAAC,CAAC,EAAE,IAAI,CAAC;QAEtD,KAAKuK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwmB,QAAQ,CAACvwB,MAAM,EAAE+J,CAAC,EAAE,EAAE;UACpCqmB,gBAAgB,GAAGE,eAAe,CAAClvB,IAAI,CAACmvB,QAAQ,CAACxmB,CAAC,CAAC,CAAC;UAEpD,IAAIqmB,gBAAgB,EAAE;YACpB,OAAO,KAAK;UACd;QACF;MACF;IACF,CAAC,CAAC,OACAnuB;IACA,4BACA;MACA+sB,QAAQ,CAACqB,eAAe,GAAG,IAAI;MAC/B5nB,MAAM,CAACpF,KAAK,CACV,mGACF,CAAC;IACH;IAEA,OAAO,IAAI;EACb,CAAC;AACH;AAEA,SAASmtB,gBAAgBA,CAACvmB,IAAI,EAAE;EAC9B,IAAIoF,IAAI,GAAGpF,IAAI,CAACoF,IAAI;EACpB,IAAIkhB,QAAQ,GAAG,EAAE;;EAEjB;EACA;EACA;EACA,IAAIlhB,IAAI,CAACmd,WAAW,EAAE;IACpB,IAAI/C,UAAU,GAAGpa,IAAI,CAACmd,WAAW;IACjC,KAAK,IAAIhtB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiqB,UAAU,CAACzpB,MAAM,EAAER,CAAC,EAAE,EAAE;MAC1C,IAAI8sB,KAAK,GAAG7C,UAAU,CAACjqB,CAAC,CAAC;MACzB+wB,QAAQ,CAAC5qB,IAAI,CAAC9B,GAAK,CAACyoB,KAAK,EAAE,mBAAmB,CAAC,CAAC;IAClD;EACF;EACA,IAAIjd,IAAI,CAACid,KAAK,EAAE;IACdiE,QAAQ,CAAC5qB,IAAI,CAAC9B,GAAK,CAACwL,IAAI,EAAE,yBAAyB,CAAC,CAAC;EACvD;EACA,IAAIA,IAAI,CAAChI,OAAO,EAAE;IAChBkpB,QAAQ,CAAC5qB,IAAI,CAAC9B,GAAK,CAACwL,IAAI,EAAE,cAAc,CAAC,CAAC;EAC5C;EACA,OAAOkhB,QAAQ;AACjB;;;AC5MA;AACA;AACA;AACA;AACA,6CAAe;EACb7c,OAAO,EAAE,KAAK;EAAE;EAChB+c,SAAS,EAAE,IAAI;EAAE;;EAEjB;EACAC,eAAe,EAAE;IACfC,aAAa,EAAE,GAAG;IAClBC,WAAW,EAAE,GAAG;IAChBC,YAAY,EAAE;EAChB,CAAC;EACDC,QAAQ,EAAE,CACR;IACExvB,IAAI,EAAE,YAAY;IAClBiJ,KAAK,EAAE,CAAC,OAAO,EAAE,UAAU;EAC7B,CAAC,CACF;EAEDrH,KAAK,EAAE;IACL6tB,SAAS,EAAE,IAAI;IAAE;IACjBC,QAAQ,EAAE,KAAK,CAAE;EACnB,CAAC;EAED;EACAC,gBAAgB,EAAE,IAAI;EAAE;EACxBC,YAAY,EAAE,KAAK;EAAE;EACrBC,YAAY,EAAE,IAAI;EAAE;;EAEpB;EACA;EACA;EACAC,gBAAgB,EAAE;IAChBztB,QAAQ,EAAE,IAAI;IACd0tB,KAAK,EAAE,KAAK;IACZC,GAAG,EAAE,KAAK;IACVC,IAAI,EAAE,KAAK;IACXC,KAAK,EAAE,KAAK;IACZC,IAAI,EAAE,KAAK;IACX,gBAAgB,EAAE,KAAK;IACvBC,KAAK,EAAE,KAAK;IACZC,MAAM,EAAE,KAAK;IACbC,KAAK,EAAE,KAAK;IACZhuB,MAAM,EAAE,KAAK;IACbiuB,IAAI,EAAE,KAAK;IACXruB,GAAG,EAAE,KAAK;IACVsuB,IAAI,EAAE;EACR,CAAC;EAED;EACAC,aAAa,EAAE,KAAK;EAEpB;EACAC,UAAU,EAAE,UAAU;EACtBC,aAAa,EAAE,SAAS;EACxBC,WAAW,EAAE,WAAW;EAExB;EACA;EACAC,cAAc,EAAE;IACdC,MAAM,EAAE,IAAI;IAAE;IACdC,OAAO,EAAE,IAAI;IAAE;IACfC,WAAW,EAAE,IAAI;IAAE;IACnBC,cAAc,EAAE,IAAI;IAAE;IACtBC,oBAAoB,EAAE,IAAI;IAAE;IAC5BC,cAAc,EAAE,IAAI;IAAE;IACtBC,cAAc,EAAE,IAAI;IAAE;IACtBC,iBAAiB,EAAE,IAAI;IAAE;IACzBC,kBAAkB,EAAE,IAAI;IAAE;IAC1BC,oBAAoB,EAAE,IAAI,CAAE;EAC9B;;EAEA;EACA;EACA;EACA;EACA;;EAEA;EACA;AACF,CAAC;;AClFD;AACA;AACA;AACA,qDAAe;EACbnf,OAAO,EAAE,KAAK;EACdqE,QAAQ,EAAE;AACZ,CAAC;;ACND;AACA;AACA;AACO,IAAMvI,OAAO,GAAG,YAAY;AAC5B,IAAMuI,QAAQ,GAAG,6BAA6B;AAC9C,IAAMxB,QAAQ,GAAG,OAAO;AACxB,IAAM4Y,WAAW,GAAG,OAAO;AAC3B,IAAM2D,kBAAkB,GAAG,OAAO;AAClC,IAAMzkB,QAAQ,GAAG,CAAC;AAClB,IAAM0kB,WAAW,GAAG,EAAE;AAEtB,IAAMC,iBAAiB,GAAG,CAC/B,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,YAAY,EACZ,WAAW,EACX,aAAa,CACd;AAEM,IAAMC,cAAc,GAAG,iDAC5B,SAAS,EACT,oBAAoB,EACpB,aAAa,EACb,OAAO,EACP,qBAAqB,CACtB;AAEM,IAAMC,kBAAkB,GAAG,iDAChC,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,CAClB;AAEM,IAAMC,kBAAkB,GAAG,iDAChC,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,QAAQ,EACR,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,cAAc,CACf;;AAED;AACA,iDAAe;EACb3jB,OAAO,EAAPA,OAAO;EACPuI,QAAQ,EAARA,QAAQ;EACRxB,QAAQ,EAARA,QAAQ;EACR4Y,WAAW,EAAXA,WAAW;EACX2D,kBAAkB,EAAlBA,kBAAkB;EAClBzkB,QAAQ,EAARA,QAAQ;EACR0kB,WAAW,EAAXA;AACF,CAAC;;;;;;;;ACnED;AACA;AACA;AACmD;AAE5C,IAAMxlB,WAAW,MAAAN,MAAA,CAAAmmB,kBAAA,CACnBJ,iBAAiB,IACpB,WAAW,EACX,aAAa,EACb,YAAY,EACZ,SAAS,EACT,OAAO,EACP,UAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,MAAM,EACN,MAAM,EACN,MAAM,EACN,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,yBAAyB,EACzB,QAAQ,EACR,WAAW,EACX,UAAU,EACV,SAAS,EACT,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,SAAS,EACT,QAAQ,EACT;;AAED;AACA,qDAAe;EAAEzlB,WAAW,EAAXA;AAAY,CAAC;;;;;;;;;;;;AClDK;AACA;AACP;AACM;AACU;AAEL;AACJ;AAEW;AACO;AACP;AACO;AACT;AACM;AACG;;AAErD;AACA,IAAIqmB,SAAS,GAAG,IAAI;AAAC,IAEf5f,YAAO;EACX,SAAAA,QAAY1O,OAAO,EAAEmpB,MAAM,EAAE;IAAA3e,mBAAA,OAAAkE,OAAA;IAC3BvL,UAAM,CAACoX,IAAI,CAAC;MAAEtJ,QAAQ,EAAEjR,OAAO,CAACiR,QAAQ,IAAI;IAAQ,CAAC,CAAC;IACtD,IAAI,CAACjR,OAAO,GAAGzB,aAAe,CAAC4Q,mBAAc,EAAEnP,OAAO,EAAE,IAAI,EAAEmD,UAAM,CAAC;IACrE,IAAI,CAACnD,OAAO,CAAC+O,kBAAkB,GAAG/O,OAAO;IACzC,IAAI,CAACuuB,UAAU,GAAG,IAAI,CAACA,UAAU,IAAI,CAAC,CAAC;IACvC,IAAMC,SAAS,GAAG,IAAI,CAACD,UAAU,CAAC5f,SAAS;IAC3C,IAAM8f,YAAY,GAAG,IAAI,CAACF,UAAU,CAACG,YAAY;IACjD,IAAI,CAACC,WAAW,GAAG,IAAI,CAACJ,UAAU,CAACI,WAAW;IAC9C,IAAI,CAACC,KAAK,GAAG,IAAI,CAACL,UAAU,CAACK,KAAK;IAClC,IAAMtW,UAAU,GAAG,IAAI,CAACiW,UAAU,CAACjW,UAAU;IAC7C,IAAMuW,OAAO,GAAG,IAAI,CAACN,UAAU,CAAC3f,OAAO;IACvC,IAAMkgB,MAAM,GAAG,IAAI,CAACP,UAAU,CAAChkB,MAAM;IAErC,IAAM+H,SAAS,GAAG,IAAI2M,iBAAS,CAAC3G,UAAU,CAAC;IAC3C,IAAMhO,GAAG,GAAG,IAAI0jB,OAAG,CAAC,IAAI,CAAChuB,OAAO,EAAEsS,SAAS,EAAE+F,mBAAM,EAAEC,UAAU,CAAC;IAChE,IAAIuW,OAAO,EAAE;MACX,IAAI,CAACjgB,OAAO,GAAG,IAAIigB,OAAO,CAACE,QAAQ,CAAC,CAAC,EAAEzkB,GAAG,EAAE,IAAI,CAACtK,OAAO,CAAC;MACzD,IAAI,CAAC4O,OAAO,CAACogB,WAAW,CAAC,CAAC;IAC5B;IACA,IAAIR,SAAS,EAAE;MACb,IAAI,CAAC7f,SAAS,GAAG,IAAI6f,SAAS,CAAC,IAAI,CAACxuB,OAAO,EAAE,IAAI,CAAC4O,OAAO,CAAC;IAC5D;IAEA,IAAIkgB,MAAM,IAAIvwB,SAAW,CAAC,CAAC,EAAE;MAC3B,IAAM0wB,aAAa,GAAG,IAAI,CAACjvB,OAAO,CAACuK,MAAM;MACzC,IAAI,CAACA,MAAM,GAAG,IAAIukB,MAAM,CAAC;QACvBlgB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBD,SAAS,EAAE,IAAI,CAACA,SAAS;QACzB3O,OAAO,EAAEivB;MACX,CAAC,CAAC;MAEF,IAAIA,aAAa,CAAC7gB,OAAO,IAAI6gB,aAAa,CAAC9D,SAAS,EAAE;QACpD,IAAI,CAAC5gB,MAAM,CAAC2kB,QAAQ,CAACC,KAAK,CAAC,CAAC;MAC9B;IACF;IAEA,IAAI,CAAChG,MAAM,GACTA,MAAM,IACN,IAAI4E,OAAM,CACR,IAAI,CAAC/tB,OAAO,EACZsK,GAAG,EACHnH,UAAM,EACN,IAAI,CAACwL,SAAS,EACd,IAAI,CAACC,OAAO,EACZ,IAAI,CAACrE,MAAM,EACX,SACF,CAAC;IACH,IAAIqI,OAAO,GAAGmc,QAAQ,CAAC,CAAC;IACxB,IAAIK,SAAS,GAAG,OAAOvsB,QAAQ,IAAI,WAAW,IAAIA,QAAQ;IAC1D,IAAI,CAACwsB,QAAQ,GAAGzc,OAAO,CAAC0c,MAAM,IAAI1c,OAAO,CAAC0c,MAAM,CAACC,OAAO,CAAC,CAAC;IAC1D,IAAI,CAAC/T,sBAAsB,GAAG,CAAC;IAC/BgU,uBAAuB,CAAC,IAAI,CAACrG,MAAM,CAACtlB,QAAQ,EAAE,IAAI,EAAE+O,OAAO,CAAC;IAC5D6c,oBAAoB,CAAC,IAAI,CAACtG,MAAM,CAACnb,KAAK,CAAC;IACvC,IAAI,CAAC0hB,qBAAqB,CAAC,CAAC;IAC5B,IAAIjB,YAAY,EAAE;MAChB,IAAI,CAACC,YAAY,GAAG,IAAID,YAAY,CAClC,IAAI,CAACzuB,OAAO,EACZ,IAAI,CAACmpB,MAAM,CAACxa,SAAS,EACrB,IAAI,EACJiE,OAAO,EACPwc,SACF,CAAC;MACD,IAAI,CAACV,YAAY,CAACiB,UAAU,CAAC,CAAC;IAChC;IAEA,IAAI,CAACC,+BAA+B,CAAC5vB,OAAO,CAAC;;IAE7C;IACA,IAAI,CAAC6vB,OAAO,GAAG,IAAI;EACrB;EAAC,OAAA7kB,gBAAA,CAAA0D,OAAA;IAAA1U,GAAA;IAAA+B,KAAA,EAcD,SAAAqT,MAAMA,CAACpP,OAAO,EAAE;MACd,IAAI,CAACmpB,MAAM,CAAC/Z,MAAM,CAACpP,OAAO,CAAC;MAC3B,OAAO,IAAI;IACb;EAAC;IAAAhG,GAAA;IAAA+B,KAAA,EAED,SAAAkP,SAASA,CAACjL,OAAO,EAAEqP,WAAW,EAAE;MAAA,IAAAoB,aAAA,EAAAhE,YAAA,EAAAqjB,kBAAA;MAC9B,IAAI9vB,OAAO,CAACiR,QAAQ,EAAE;QACpB9N,UAAM,CAACoX,IAAI,CAAC;UAAEtJ,QAAQ,EAAEjR,OAAO,CAACiR;QAAS,CAAC,CAAC;MAC7C;MACA,IAAI,CAAC2e,+BAA+B,CAAC5vB,OAAO,CAAC;MAC7C,IAAImL,UAAU,GAAG,IAAI,CAACnL,OAAO;MAC7B,IAAI8H,OAAO,GAAG,CAAC,CAAC;MAChB,IAAIuH,WAAW,EAAE;QACfvH,OAAO,GAAG;UAAEA,OAAO,EAAEuH;QAAY,CAAC;MACpC;MAEA,IAAI,CAACrP,OAAO,GAAGzB,aAAe,CAAC4M,UAAU,EAAEnL,OAAO,EAAE8H,OAAO,EAAE3E,UAAM,CAAC;MACpE,IAAI,CAACnD,OAAO,CAAC+O,kBAAkB,GAAGxQ,aAAe,CAC/C4M,UAAU,CAAC4D,kBAAkB,EAC7B/O,OAAO,EACP8H,OACF,CAAC;MAED,CAAA2I,aAAA,OAAI,CAAC7B,OAAO,cAAA6B,aAAA,eAAZA,aAAA,CAAcxF,SAAS,CAAC,IAAI,CAACjL,OAAO,CAAC;MACrC,CAAAyM,YAAA,OAAI,CAAClC,MAAM,cAAAkC,YAAA,eAAXA,YAAA,CAAaxB,SAAS,CAAC,IAAI,CAACjL,OAAO,CAACuK,MAAM,CAAC;MAC3C,IAAI,CAAC4e,MAAM,CAACle,SAAS,CAAC,IAAI,CAACjL,OAAO,EAAEqP,WAAW,CAAC;MAChD,CAAAygB,kBAAA,OAAI,CAACpB,YAAY,cAAAoB,kBAAA,eAAjBA,kBAAA,CAAmB7kB,SAAS,CAAC,IAAI,CAACjL,OAAO,CAAC;MAC1C,IAAI,CAAC0vB,qBAAqB,CAAC,CAAC;MAC5B,OAAO,IAAI;IACb;EAAC;IAAA11B,GAAA;IAAA+B,KAAA,EAED,SAAAkT,SAASA,CAAA,EAAG;MACV,OAAO,IAAI,CAACka,MAAM,CAACla,SAAS;IAC9B;EAAC;IAAAjV,GAAA;IAAA+B,KAAA,EAED,SAAAqM,GAAGA,CAAA,EAAG;MACJ,IAAIzD,IAAI,GAAG,IAAI,CAACorB,WAAW,CAACp1B,SAAS,CAAC;MACtC,IAAI0C,IAAI,GAAGsH,IAAI,CAACtH,IAAI;MACpB,IAAI,CAAC8rB,MAAM,CAAC/gB,GAAG,CAACzD,IAAI,CAAC;MACrB,OAAO;QAAEtH,IAAI,EAAEA;MAAK,CAAC;IACvB;EAAC;IAAArD,GAAA;IAAA+B,KAAA,EAED,SAAA6B,KAAKA,CAAA,EAAG;MACN,IAAI+G,IAAI,GAAG,IAAI,CAACorB,WAAW,CAACp1B,SAAS,CAAC;MACtC,IAAI0C,IAAI,GAAGsH,IAAI,CAACtH,IAAI;MACpB,IAAI,CAAC8rB,MAAM,CAACvrB,KAAK,CAAC+G,IAAI,CAAC;MACvB,OAAO;QAAEtH,IAAI,EAAEA;MAAK,CAAC;IACvB;EAAC;IAAArD,GAAA;IAAA+B,KAAA,EAED,SAAA8B,IAAIA,CAAA,EAAG;MACL,IAAI8G,IAAI,GAAG,IAAI,CAACorB,WAAW,CAACp1B,SAAS,CAAC;MACtC,IAAI0C,IAAI,GAAGsH,IAAI,CAACtH,IAAI;MACpB,IAAI,CAAC8rB,MAAM,CAACtrB,IAAI,CAAC8G,IAAI,CAAC;MACtB,OAAO;QAAEtH,IAAI,EAAEA;MAAK,CAAC;IACvB;EAAC;IAAArD,GAAA;IAAA+B,KAAA,EAED,SAAAyT,IAAIA,CAAA,EAAG;MACL,IAAI7K,IAAI,GAAG,IAAI,CAACorB,WAAW,CAACp1B,SAAS,CAAC;MACtC,IAAI0C,IAAI,GAAGsH,IAAI,CAACtH,IAAI;MACpB,IAAI,CAAC8rB,MAAM,CAAC3Z,IAAI,CAAC7K,IAAI,CAAC;MACtB,OAAO;QAAEtH,IAAI,EAAEA;MAAK,CAAC;IACvB;EAAC;IAAArD,GAAA;IAAA+B,KAAA,EAED,SAAA+B,OAAOA,CAAA,EAAG;MACR,IAAI6G,IAAI,GAAG,IAAI,CAACorB,WAAW,CAACp1B,SAAS,CAAC;MACtC,IAAI0C,IAAI,GAAGsH,IAAI,CAACtH,IAAI;MACpB,IAAI,CAAC8rB,MAAM,CAACrrB,OAAO,CAAC6G,IAAI,CAAC;MACzB,OAAO;QAAEtH,IAAI,EAAEA;MAAK,CAAC;IACvB;EAAC;IAAArD,GAAA;IAAA+B,KAAA,EAED,SAAAgC,KAAKA,CAAA,EAAG;MACN,IAAI4G,IAAI,GAAG,IAAI,CAACorB,WAAW,CAACp1B,SAAS,CAAC;MACtC,IAAI0C,IAAI,GAAGsH,IAAI,CAACtH,IAAI;MACpB,IAAI,CAAC8rB,MAAM,CAACprB,KAAK,CAAC4G,IAAI,CAAC;MACvB,OAAO;QAAEtH,IAAI,EAAEA;MAAK,CAAC;IACvB;EAAC;IAAArD,GAAA;IAAA+B,KAAA,EAED,SAAAiC,QAAQA,CAAA,EAAG;MACT,IAAI2G,IAAI,GAAG,IAAI,CAACorB,WAAW,CAACp1B,SAAS,CAAC;MACtC,IAAI0C,IAAI,GAAGsH,IAAI,CAACtH,IAAI;MACpB,IAAI,CAAC8rB,MAAM,CAACnrB,QAAQ,CAAC2G,IAAI,CAAC;MAC1B,OAAO;QAAEtH,IAAI,EAAEA;MAAK,CAAC;IACvB;EAAC;IAAArD,GAAA;IAAA+B,KAAA,EAED,SAAA8T,gBAAgBA,CAAClL,IAAI,EAAE;MACrB,OAAO,IAAI,CAACwkB,MAAM,CAACtZ,gBAAgB,CAAClL,IAAI,CAAC;IAC3C;EAAC;IAAA3K,GAAA;IAAA+B,KAAA,EAED,SAAA+T,eAAeA,CAACC,WAAW,EAAE;MAC3B,OAAO,IAAI,CAACoZ,MAAM,CAACrZ,eAAe,CAACC,WAAW,CAAC;IACjD;EAAC;IAAA/V,GAAA;IAAA+B,KAAA,EAED,SAAAi0B,mBAAmBA,CAACttB,OAAO,EAAE;MAC3B,OAAO,IAAI,CAACutB,aAAa,CAAAxW,iBAAA;QAAGzd,IAAI,EAAE;MAAQ,GAAK0G,OAAO,CAAE,CAAC;IAC3D;EAAC;IAAA1I,GAAA;IAAA+B,KAAA,EAED,SAAAk0B,aAAaA,CAACvtB,OAAO,EAAE;MACrB,IAAI,CAAC,IAAI,CAAC6H,MAAM,EAAE,OAAO,IAAI;MAE7B,OAAO,IAAI,CAACA,MAAM,CAAC0lB,aAAa,CAACvtB,OAAO,CAAC;IAC3C;EAAC;IAAA1I,GAAA;IAAA+B,KAAA,EAED,SAAA2zB,qBAAqBA,CAAA,EAAG;MACtB,IAAI9c,OAAO,GAAGmc,QAAQ,CAAC,CAAC;MAExB,IAAI,CAAC,IAAI,CAACmB,8BAA8B,EAAE;QACxC,IACE,IAAI,CAAClwB,OAAO,CAACmwB,eAAe,IAC5B,IAAI,CAACnwB,OAAO,CAACowB,wBAAwB,EACrC;UACAnC,yBAAiC,CAACrb,OAAO,EAAE,IAAI,CAAC;UAChD,IAAI,IAAI,CAAC+b,WAAW,IAAI,IAAI,CAAC3uB,OAAO,CAACqwB,uBAAuB,EAAE;YAC5D,IAAI,CAAC1B,WAAW,CAAC/b,OAAO,EAAE,IAAI,CAAC;UACjC;UACA,IAAI,CAACsd,8BAA8B,GAAG,IAAI;QAC5C;MACF;MACA,IAAI,CAAC,IAAI,CAACI,8BAA8B,EAAE;QACxC,IACE,IAAI,CAACtwB,OAAO,CAACyb,0BAA0B,IACvC,IAAI,CAACzb,OAAO,CAACuwB,yBAAyB,EACtC;UACAtC,0BAAkC,CAACrb,OAAO,EAAE,IAAI,CAAC;UACjD,IAAI,CAAC0d,8BAA8B,GAAG,IAAI;QAC5C;MACF;IACF;EAAC;IAAAt2B,GAAA;IAAA+B,KAAA,EAED,SAAAwf,uBAAuBA,CAACxZ,OAAO,EAAE7D,GAAG,EAAE8D,MAAM,EAAEC,KAAK,EAAElE,KAAK,EAAE2E,OAAO,EAAE;MACnE,IACE,CAAC,IAAI,CAAC1C,OAAO,CAACmwB,eAAe,IAC7B,CAAC,IAAI,CAACnwB,OAAO,CAACowB,wBAAwB,EACtC;QACA;MACF;;MAEA;MACA;MACA;MACA;MACA,IACE,IAAI,CAACpwB,OAAO,CAACwwB,sBAAsB,IACnC,IAAI,CAACnB,QAAQ,IACbtxB,KAAK,KAAK,IAAI,IACdG,GAAG,KAAK,EAAE,EACV;QACA,OAAO,WAAW;MACpB;MAEA,IAAIyG,IAAI;MACR,IAAIggB,SAAS,GAAGpmB,sBAAwB,CACtCwD,OAAO,EACP7D,GAAG,EACH8D,MAAM,EACNC,KAAK,EACLlE,KAAK,EACL,SAAS,EACT,oBAAoB,EACpBqE,WACF,CAAC;MACD,IAAI7D,OAAS,CAACR,KAAK,CAAC,EAAE;QACpB4G,IAAI,GAAG,IAAI,CAACorB,WAAW,CAAC,CAAChuB,OAAO,EAAEhE,KAAK,EAAE2E,OAAO,CAAC,CAAC;QAClDiC,IAAI,CAACkiB,mBAAmB,GAAGlC,SAAS;MACtC,CAAC,MAAM,IAAIpmB,OAAS,CAACL,GAAG,CAAC,EAAE;QACzByG,IAAI,GAAG,IAAI,CAACorB,WAAW,CAAC,CAAChuB,OAAO,EAAE7D,GAAG,EAAEwE,OAAO,CAAC,CAAC;QAChDiC,IAAI,CAACkiB,mBAAmB,GAAGlC,SAAS;MACtC,CAAC,MAAM;QACLhgB,IAAI,GAAG,IAAI,CAACorB,WAAW,CAAC,CAAChuB,OAAO,EAAEW,OAAO,CAAC,CAAC;QAC3CiC,IAAI,CAACggB,SAAS,GAAGA,SAAS;MAC5B;MACAhgB,IAAI,CAACM,KAAK,GAAG,IAAI,CAACjF,OAAO,CAACwtB,kBAAkB;MAC5C7oB,IAAI,CAACuM,WAAW,GAAG,IAAI;MACvB,IAAI,CAACiY,MAAM,CAAC/gB,GAAG,CAACzD,IAAI,CAAC;IACvB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAXE;IAAA3K,GAAA;IAAA+B,KAAA,EAYA,SAAAif,qBAAqBA,CAAA,EAAG;MACtB,IAAI,CAAC,IAAI,CAAChb,OAAO,CAACwwB,sBAAsB,IAAI,CAAC,IAAI,CAACnB,QAAQ,EAAE;QAC1D;MACF;MAEA,IAAI9xB,CAAC,GAAG,IAAI;MACZ,SAASkzB,iBAAiBA,CAAC1yB,KAAK,EAAE2yB,MAAM,EAAE;QACxC,IAAInzB,CAAC,CAACyC,OAAO,CAACwwB,sBAAsB,EAAE;UACpC,IAAIjzB,CAAC,CAACie,sBAAsB,EAAE;YAC5B;YACA;YACA;YACA;YACA;YACAje,CAAC,CAACie,sBAAsB,IAAI,CAAC;YAE7B,IAAI,CAACzd,KAAK,EAAE;cACV;cACA;cACA;cACA;YACF;;YAEA;YACAA,KAAK,CAAC4yB,YAAY,GAAG,IAAI;;YAEzB;YACA;YACA;YACApzB,CAAC,CAACge,uBAAuB,CAACxd,KAAK,CAACgE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAEhE,KAAK,CAAC;UACnE;QACF;;QAEA;QACA,OAAOA,KAAK,CAACkF,KAAK;MACpB;;MAEA;MACA,IAAI;QACFhI,KAAK,CAACw1B,iBAAiB,GAAGA,iBAAiB;MAC7C,CAAC,CAAC,OAAO9zB,CAAC,EAAE;QACV,IAAI,CAACqD,OAAO,CAACwwB,sBAAsB,GAAG,KAAK;QAC3C,IAAI,CAACzyB,KAAK,CAAC,gCAAgC,EAAEpB,CAAC,CAAC;MACjD;IACF;EAAC;IAAA3C,GAAA;IAAA+B,KAAA,EAED,SAAAmgB,wBAAwBA,CAACH,MAAM,EAAEC,OAAO,EAAE;MACxC,IACE,CAAC,IAAI,CAAChc,OAAO,CAACyb,0BAA0B,IACxC,CAAC,IAAI,CAACzb,OAAO,CAACuwB,yBAAyB,EACvC;QACA;MACF;MAEA,IAAIxuB,OAAO,GAAG,4CAA4C;MAC1D,IAAIga,MAAM,EAAE;QACV,IAAIA,MAAM,CAACha,OAAO,EAAE;UAClBA,OAAO,GAAGga,MAAM,CAACha,OAAO;QAC1B,CAAC,MAAM;UACL,IAAI6uB,YAAY,GAAGryB,SAAW,CAACwd,MAAM,CAAC;UACtC,IAAI6U,YAAY,CAAC70B,KAAK,EAAE;YACtBgG,OAAO,GAAG6uB,YAAY,CAAC70B,KAAK;UAC9B;QACF;MACF;MACA,IAAI2G,OAAO,GACRqZ,MAAM,IAAIA,MAAM,CAACV,eAAe,IAChCW,OAAO,IAAIA,OAAO,CAACX,eAAgB;MAEtC,IAAI1W,IAAI;MACR,IAAIpG,OAAS,CAACwd,MAAM,CAAC,EAAE;QACrBpX,IAAI,GAAG,IAAI,CAACorB,WAAW,CAAC,CAAChuB,OAAO,EAAEga,MAAM,EAAErZ,OAAO,CAAC,CAAC;MACrD,CAAC,MAAM;QACLiC,IAAI,GAAG,IAAI,CAACorB,WAAW,CAAC,CAAChuB,OAAO,EAAEga,MAAM,EAAErZ,OAAO,CAAC,CAAC;QACnDiC,IAAI,CAACggB,SAAS,GAAGpmB,sBAAwB,CACvCwD,OAAO,EACP,EAAE,EACF,CAAC,EACD,CAAC,EACD,IAAI,EACJ,oBAAoB,EACpB,EAAE,EACFK,WACF,CAAC;MACH;MACAuC,IAAI,CAACM,KAAK,GAAG,IAAI,CAACjF,OAAO,CAACwtB,kBAAkB;MAC5C7oB,IAAI,CAACuM,WAAW,GAAG,IAAI;MACvBvM,IAAI,CAACI,aAAa,GAAGJ,IAAI,CAACI,aAAa,IAAI,EAAE;MAC7CJ,IAAI,CAACI,aAAa,CAAC1E,IAAI,CAAC2b,OAAO,CAAC;MAChC,IAAI,CAACmN,MAAM,CAAC/gB,GAAG,CAACzD,IAAI,CAAC;IACvB;EAAC;IAAA3K,GAAA;IAAA+B,KAAA,EAED,SAAAoY,IAAIA,CAAC9Y,CAAC,EAAEqH,OAAO,EAAEmuB,OAAO,EAAE;MACxB,IAAI;QACF,IAAIC,KAAK;QACT,IAAIvyB,UAAY,CAACmE,OAAO,CAAC,EAAE;UACzBouB,KAAK,GAAGpuB,OAAO;QACjB,CAAC,MAAM;UACLouB,KAAK,GAAG,SAARA,KAAKA,CAAA,EAAe;YAClB,OAAOpuB,OAAO,IAAI,CAAC,CAAC;UACtB,CAAC;QACH;QAEA,IAAI,CAACnE,UAAY,CAAClD,CAAC,CAAC,EAAE;UACpB,OAAOA,CAAC;QACV;QAEA,IAAIA,CAAC,CAAC01B,OAAO,EAAE;UACb,OAAO11B,CAAC;QACV;QAEA,IAAI,CAACA,CAAC,CAAC21B,gBAAgB,EAAE;UACvB31B,CAAC,CAAC21B,gBAAgB,GAAG,YAAY;YAC/B,IAAIH,OAAO,IAAItyB,UAAY,CAACsyB,OAAO,CAAC,EAAE;cACpCA,OAAO,CAAC9Y,KAAK,CAAC,IAAI,EAAEpd,SAAS,CAAC;YAChC;YACA,IAAI;cACF,OAAOU,CAAC,CAAC0c,KAAK,CAAC,IAAI,EAAEpd,SAAS,CAAC;YACjC,CAAC,CAAC,OAAOkjB,GAAG,EAAE;cACZ,IAAIlhB,CAAC,GAAGkhB,GAAG;cACX,IAAIlhB,CAAC,IAAIK,MAAM,CAACoe,oBAAoB,KAAKze,CAAC,EAAE;gBAC1C,IAAI4B,MAAQ,CAAC5B,CAAC,EAAE,QAAQ,CAAC,EAAE;kBACzBA,CAAC,GAAG,IAAIT,MAAM,CAACS,CAAC,CAAC;gBACnB;gBACAA,CAAC,CAAC0e,eAAe,GAAGyV,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;gBACjCn0B,CAAC,CAAC0e,eAAe,CAAC4V,cAAc,GAAG51B,CAAC,CAAC5B,QAAQ,CAAC,CAAC;gBAE/CuD,MAAM,CAACoe,oBAAoB,GAAGze,CAAC;cACjC;cACA,MAAMA,CAAC;YACT;UACF,CAAC;UAEDtB,CAAC,CAAC21B,gBAAgB,CAACD,OAAO,GAAG,IAAI;UAEjC,IAAI11B,CAAC,CAAC9B,cAAc,EAAE;YACpB,KAAK,IAAI23B,IAAI,IAAI71B,CAAC,EAAE;cAClB,IAAIA,CAAC,CAAC9B,cAAc,CAAC23B,IAAI,CAAC,IAAIA,IAAI,KAAK,kBAAkB,EAAE;gBACzD71B,CAAC,CAAC21B,gBAAgB,CAACE,IAAI,CAAC,GAAG71B,CAAC,CAAC61B,IAAI,CAAC;cACpC;YACF;UACF;QACF;QAEA,OAAO71B,CAAC,CAAC21B,gBAAgB;MAC3B,CAAC,CAAC,OAAOr0B,CAAC,EAAE;QACV;QACA,OAAOtB,CAAC;MACV;IACF;EAAC;IAAArB,GAAA;IAAA+B,KAAA,EAED,SAAA0T,YAAYA,CAAA,EAAG;MACb,IAAI1J,KAAK,GAAGxH,oBAAsB,CAAC5D,SAAS,CAAC;MAC7C,OAAO,IAAI,CAACwuB,MAAM,CAAC1Z,YAAY,CAAC1J,KAAK,CAAC/J,IAAI,EAAE+J,KAAK,CAACD,QAAQ,EAAEC,KAAK,CAACd,KAAK,CAAC;IAC1E;EAAC;IAAAjL,GAAA;IAAA+B,KAAA,EAED,SAAAo1B,cAAcA,CAACC,IAAI,EAAE;MAAA,IAAA1gB,cAAA;MACnB,IAAI,GAAAA,cAAA,GAAC,IAAI,CAAC9B,OAAO,cAAA8B,cAAA,eAAZA,cAAA,CAAc2gB,OAAO,GAAE;MAE5B,IAAI,CAACziB,OAAO,CAACyiB,OAAO,CAACC,OAAO,CAACF,IAAI,CAAC;IACpC;EAAC;IAAAp3B,GAAA;IAAA+B,KAAA,EAED,SAAAw1B,oBAAoBA,CAACC,KAAK,EAAE;MAAA,IAAAC,cAAA;MAC1B,IAAI,GAAAA,cAAA,GAAC,IAAI,CAAC7iB,OAAO,cAAA6iB,cAAA,eAAZA,cAAA,CAAcJ,OAAO,GAAE;MAE5BG,KAAK,GAAA/X,iBAAA,KAAQ+X,KAAK,CAAE;MAEpB,IAAI,CAAC5iB,OAAO,CAACyiB,OAAO,CAACK,aAAa,CAACF,KAAK,CAAC;IAC3C;EAAC;IAAAx3B,GAAA;IAAA+B,KAAA,EAED,SAAA6zB,+BAA+BA,CAAC5vB,OAAO,EAAE;MAAA,IAAA2xB,gBAAA,EAAAC,eAAA,EAAAC,iBAAA,EAAAC,iBAAA,EAAAC,iBAAA;MACvC,IAAMC,MAAM,GAAGhyB,OAAO,CAACgyB,MAAM,MAAAL,gBAAA,GAAI3xB,OAAO,CAAC8H,OAAO,cAAA6pB,gBAAA,uBAAfA,gBAAA,CAAiBK,MAAM;MACxD,IAAIA,MAAM,EAAE;QACV,IAAI,CAACb,cAAc,CAACa,MAAM,CAAC;MAC7B;MACA,IAAMC,YAAY,GAChB,EAAAL,eAAA,GAAA5xB,OAAO,CAACmpB,MAAM,cAAAyI,eAAA,gBAAAA,eAAA,GAAdA,eAAA,CAAgB9L,UAAU,cAAA8L,eAAA,uBAA1BA,eAAA,CAA4BK,YAAY,KACxCjyB,OAAO,CAACkyB,WAAW,IACnBlyB,OAAO,CAACiyB,YAAY,MAAAJ,iBAAA,GACpB7xB,OAAO,CAAC8H,OAAO,cAAA+pB,iBAAA,gBAAAA,iBAAA,GAAfA,iBAAA,CAAiB1I,MAAM,cAAA0I,iBAAA,gBAAAA,iBAAA,GAAvBA,iBAAA,CAAyB/L,UAAU,cAAA+L,iBAAA,uBAAnCA,iBAAA,CAAqCI,YAAY,OAAAH,iBAAA,GACjD9xB,OAAO,CAAC8H,OAAO,cAAAgqB,iBAAA,uBAAfA,iBAAA,CAAiBG,YAAY,OAAAF,iBAAA,GAC7B/xB,OAAO,CAAC8H,OAAO,cAAAiqB,iBAAA,uBAAfA,iBAAA,CAAiBG,WAAW;MAC9B,IAAI,CAACX,oBAAoB,CAAC;QACxB,qBAAqB,EAAEU,YAAY;QACnC,uBAAuB,EAAE,oBAAoB;QAC7C,0BAA0B,EAAEjyB,OAAO,CAACkK;MACtC,CAAC,CAAC;IACJ;;IAEA;EAAA;IAAAlQ,GAAA;IAAA+B,KAAA,EACA,SAAA2T,uBAAuBA,CAAC/S,CAAC,EAAEgT,EAAE,EAAE;MAC7B,IAAI,CAACA,EAAE,EAAE;QACPA,EAAE,GAAG,IAAI1I,IAAI,CAAC,CAAC;MACjB;MACA,OAAO,IAAI,CAACkiB,MAAM,CAACzZ,uBAAuB,CAACC,EAAE,CAAC;IAChD;EAAC;IAAA3V,GAAA;IAAA+B,KAAA,EAED,SAAA6T,WAAWA,CAACjT,CAAC,EAAEgT,EAAE,EAAE;MACjB,IAAI,CAACA,EAAE,EAAE;QACPA,EAAE,GAAG,IAAI1I,IAAI,CAAC,CAAC;MACjB;MACA,OAAO,IAAI,CAACkiB,MAAM,CAACvZ,WAAW,CAACD,EAAE,CAAC;IACpC;EAAC;IAAA3V,GAAA;IAAA+B,KAAA,EAED,SAAAo2B,QAAQA,CAAA,EAAG;MACThvB,UAAM,CAACtF,IAAI,CACT,qHACF,CAAC;IACH;EAAC;IAAA7D,GAAA;IAAA+B,KAAA,EAED,SAAAg0B,WAAWA,CAACnsB,IAAI,EAAE;MAChB,OAAOrF,UAAY,CAACqF,IAAI,EAAET,UAAM,EAAE,IAAI,CAAC;IACzC;;IAEA;IACA;IACA;IACA;EAAA;IAAAnJ,GAAA;IAAA+B,KAAA,EAhaA,SAAOwe,IAAIA,CAACva,OAAO,EAAEmpB,MAAM,EAAE;MAC3B,IAAImF,SAAS,EAAE;QACb,OAAOA,SAAS,CAAClf,MAAM,CAACpP,OAAO,CAAC,CAACiL,SAAS,CAACjL,OAAO,CAAC;MACrD;MACAsuB,SAAS,GAAG,IAAI5f,OAAO,CAAC1O,OAAO,EAAEmpB,MAAM,CAAC;MACxC,OAAOmF,SAAS;IAClB;EAAC;IAAAt0B,GAAA;IAAA+B,KAAA,EAED,SAAOq2B,aAAaA,CAAC7D,UAAU,EAAE;MAC/B7f,OAAO,CAACpV,SAAS,CAACi1B,UAAU,GAAGA,UAAU;IAC3C;EAAC;IAAAv0B,GAAA;IAAA+B,KAAA,EAuZD,SAAOs2B,YAAYA,CAACnf,MAAM,EAAEtP,IAAI,EAAE;MAChC,IAAI,CAAC0qB,SAAS,EAAE;QACd,IAAMvsB,OAAO,GAAG,4BAA4B;QAC5CoB,UAAM,CAACpF,KAAK,CAACgE,OAAO,CAAC;QACrB,IAAMuwB,aAAa,GAAGC,iBAAiB,CAAC3uB,IAAI,CAAC;QAC7C,IAAI0uB,aAAa,EAAE;UACjBA,aAAa,CAAC,IAAIr3B,KAAK,CAAC8G,OAAO,CAAC,CAAC;QACnC;QACA;MACF;MACA,OAAOusB,SAAS,CAACpb,MAAM,CAAC,CAAC6E,KAAK,CAACuW,SAAS,EAAE1qB,IAAI,CAAC;IACjD;EAAC;AAAA;AAoBH;AAAA4uB,QAAA,GAxgBM9jB,YAAO;AAAAZ,mBAAA,CAAPY,YAAO,YAsfK;EAAA,SAAAkL,IAAA,GAAAjf,SAAA,CAAAD,MAAA,EAAIkJ,IAAI,OAAAiW,KAAA,CAAAD,IAAA,GAAAE,IAAA,MAAAA,IAAA,GAAAF,IAAA,EAAAE,IAAA;IAAJlW,IAAI,CAAAkW,IAAA,IAAAnf,SAAA,CAAAmf,IAAA;EAAA;EAAA,OAAKpL,QAAO,CAAC2jB,YAAY,CAAC,QAAQ,EAAEzuB,IAAI,CAAC;AAAA;AAAAkK,mBAAA,CAtf7DY,YAAO,eAufQ;EAAA,SAAAqL,KAAA,GAAApf,SAAA,CAAAD,MAAA,EAAIkJ,IAAI,OAAAiW,KAAA,CAAAE,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJpW,IAAI,CAAAoW,KAAA,IAAArf,SAAA,CAAAqf,KAAA;EAAA;EAAA,OAAKtL,QAAO,CAAC2jB,YAAY,CAAC,WAAW,EAAEzuB,IAAI,CAAC;AAAA;AAAAkK,mBAAA,CAvfnEY,YAAO,eAwfQ;EAAA,SAAAuL,KAAA,GAAAtf,SAAA,CAAAD,MAAA,EAAIkJ,IAAI,OAAAiW,KAAA,CAAAI,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJtW,IAAI,CAAAsW,KAAA,IAAAvf,SAAA,CAAAuf,KAAA;EAAA;EAAA,OAAKxL,QAAO,CAAC2jB,YAAY,CAAC,WAAW,EAAEzuB,IAAI,CAAC;AAAA;AAAAkK,mBAAA,CAxfnEY,YAAO,SAyfE;EAAA,SAAAyL,KAAA,GAAAxf,SAAA,CAAAD,MAAA,EAAIkJ,IAAI,OAAAiW,KAAA,CAAAM,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJxW,IAAI,CAAAwW,KAAA,IAAAzf,SAAA,CAAAyf,KAAA;EAAA;EAAA,OAAK1L,QAAO,CAAC2jB,YAAY,CAAC,KAAK,EAAEzuB,IAAI,CAAC;AAAA;AAAAkK,mBAAA,CAzfvDY,YAAO,WA0fI;EAAA,SAAA2L,KAAA,GAAA1f,SAAA,CAAAD,MAAA,EAAIkJ,IAAI,OAAAiW,KAAA,CAAAQ,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJ1W,IAAI,CAAA0W,KAAA,IAAA3f,SAAA,CAAA2f,KAAA;EAAA;EAAA,OAAK5L,QAAO,CAAC2jB,YAAY,CAAC,OAAO,EAAEzuB,IAAI,CAAC;AAAA;AAAAkK,mBAAA,CA1f3DY,YAAO,UA2fG;EAAA,SAAA+jB,KAAA,GAAA93B,SAAA,CAAAD,MAAA,EAAIkJ,IAAI,OAAAiW,KAAA,CAAA4Y,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJ9uB,IAAI,CAAA8uB,KAAA,IAAA/3B,SAAA,CAAA+3B,KAAA;EAAA;EAAA,OAAKhkB,QAAO,CAAC2jB,YAAY,CAAC,MAAM,EAAEzuB,IAAI,CAAC;AAAA;AAAAkK,mBAAA,CA3fzDY,YAAO,UA4fG;EAAA,SAAAikB,KAAA,GAAAh4B,SAAA,CAAAD,MAAA,EAAIkJ,IAAI,OAAAiW,KAAA,CAAA8Y,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJhvB,IAAI,CAAAgvB,KAAA,IAAAj4B,SAAA,CAAAi4B,KAAA;EAAA;EAAA,OAAKlkB,QAAO,CAAC2jB,YAAY,CAAC,MAAM,EAAEzuB,IAAI,CAAC;AAAA;AAAAkK,mBAAA,CA5fzDY,YAAO,aA6fM;EAAA,SAAAmkB,KAAA,GAAAl4B,SAAA,CAAAD,MAAA,EAAIkJ,IAAI,OAAAiW,KAAA,CAAAgZ,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJlvB,IAAI,CAAAkvB,KAAA,IAAAn4B,SAAA,CAAAm4B,KAAA;EAAA;EAAA,OAAKpkB,QAAO,CAAC2jB,YAAY,CAAC,SAAS,EAAEzuB,IAAI,CAAC;AAAA;AAAAkK,mBAAA,CA7f/DY,YAAO,WA8fI;EAAA,SAAAqkB,KAAA,GAAAp4B,SAAA,CAAAD,MAAA,EAAIkJ,IAAI,OAAAiW,KAAA,CAAAkZ,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;IAAJpvB,IAAI,CAAAovB,KAAA,IAAAr4B,SAAA,CAAAq4B,KAAA;EAAA;EAAA,OAAKtkB,QAAO,CAAC2jB,YAAY,CAAC,OAAO,EAAEzuB,IAAI,CAAC;AAAA;AAAAkK,mBAAA,CA9f3DY,YAAO,cA+fO;EAAA,SAAAukB,MAAA,GAAAt4B,SAAA,CAAAD,MAAA,EAAIkJ,IAAI,OAAAiW,KAAA,CAAAoZ,MAAA,GAAAC,MAAA,MAAAA,MAAA,GAAAD,MAAA,EAAAC,MAAA;IAAJtvB,IAAI,CAAAsvB,MAAA,IAAAv4B,SAAA,CAAAu4B,MAAA;EAAA;EAAA,OAAKxkB,QAAO,CAAC2jB,YAAY,CAAC,UAAU,EAAEzuB,IAAI,CAAC;AAAA;AAAAkK,mBAAA,CA/fjEY,YAAO,sBAggBe;EAAA,SAAAykB,MAAA,GAAAx4B,SAAA,CAAAD,MAAA,EAAIkJ,IAAI,OAAAiW,KAAA,CAAAsZ,MAAA,GAAAC,MAAA,MAAAA,MAAA,GAAAD,MAAA,EAAAC,MAAA;IAAJxvB,IAAI,CAAAwvB,MAAA,IAAAz4B,SAAA,CAAAy4B,MAAA;EAAA;EAAA,OAChC1kB,QAAO,CAAC2jB,YAAY,CAAC,kBAAkB,EAAEzuB,IAAI,CAAC;AAAA;AAAAkK,mBAAA,CAjgB5CY,YAAO,qBAkgBc;EAAA,SAAA2kB,MAAA,GAAA14B,SAAA,CAAAD,MAAA,EAAIkJ,IAAI,OAAAiW,KAAA,CAAAwZ,MAAA,GAAAC,MAAA,MAAAA,MAAA,GAAAD,MAAA,EAAAC,MAAA;IAAJ1vB,IAAI,CAAA0vB,MAAA,IAAA34B,SAAA,CAAA24B,MAAA;EAAA;EAAA,OAC/B5kB,QAAO,CAAC2jB,YAAY,CAAC,iBAAiB,EAAEzuB,IAAI,CAAC;AAAA;AAAAkK,mBAAA,CAngB3CY,YAAO,UAogBG;EAAA,SAAA6kB,MAAA,GAAA54B,SAAA,CAAAD,MAAA,EAAIkJ,IAAI,OAAAiW,KAAA,CAAA0Z,MAAA,GAAAC,MAAA,MAAAA,MAAA,GAAAD,MAAA,EAAAC,MAAA;IAAJ5vB,IAAI,CAAA4vB,MAAA,IAAA74B,SAAA,CAAA64B,MAAA;EAAA;EAAA,OAAK9kB,QAAO,CAAC2jB,YAAY,CAAC,MAAM,EAAEzuB,IAAI,CAAC;AAAA;AAAAkK,mBAAA,CApgBzDY,YAAO,kBAqgBW;EAAA,SAAA+kB,MAAA,GAAA94B,SAAA,CAAAD,MAAA,EAAIkJ,IAAI,OAAAiW,KAAA,CAAA4Z,MAAA,GAAAC,MAAA,MAAAA,MAAA,GAAAD,MAAA,EAAAC,MAAA;IAAJ9vB,IAAI,CAAA8vB,MAAA,IAAA/4B,SAAA,CAAA+4B,MAAA;EAAA;EAAA,OAAKhlB,QAAO,CAAC2jB,YAAY,CAAC,cAAc,EAAEzuB,IAAI,CAAC;AAAA;AAK/E,SAAS4rB,uBAAuBA,CAAC3rB,QAAQ,EAAEgsB,OAAO,EAAEjd,OAAO,EAAE;EAC3D/O,QAAQ,CACLqK,YAAY,CAACD,kBAA6B,CAAC,CAC3CC,YAAY,CAACD,mBAA8B,CAAC,CAC5CC,YAAY,CAACD,2BAAsC,CAAC,CACpDC,YAAY,CAACD,WAAsB,CAAC,CACpCC,YAAY,CAACD,cAAyB,CAAC2E,OAAO,CAAC,CAAC,CAChD1E,YAAY,CAACD,aAAwB,CAAC2E,OAAO,CAAC,CAAC,CAC/C1E,YAAY,CAACD,aAAwB,CAAC2E,OAAO,CAAC,CAAC,CAC/C1E,YAAY,CAACD,OAAkB,CAAC,CAChCC,YAAY,CAACggB,mBAAoC,CAAC,CAClDhgB,YAAY,CAACggB,gBAAiC,CAAC,CAC/ChgB,YAAY,CAACggB,kBAAmC,CAAC,CACjDhgB,YAAY,CAACD,WAAsB,CAAC4hB,OAAO,CAACjB,KAAK,CAAC,CAAC,CACnD1gB,YAAY,CAACggB,iBAAkC,CAAC,CAChDhgB,YAAY,CAACggB,aAA8B,CAAC/qB,UAAM,CAAC,CAAC,CACpD+K,YAAY,CAACggB,oBAAqC,CAAC,CACnDhgB,YAAY,CAACggB,iBAAkC,CAAC,CAChDhgB,YAAY,CAACggB,aAA8B,CAAC;AACjD;AAEA,SAASuB,oBAAoBA,CAACzhB,KAAK,EAAE;EACnCA,KAAK,CACF5C,YAAY,CAAC+iB,UAA2B,CAAC,CACzC/iB,YAAY,CAACX,WAAsB,CAAC,CACpCW,YAAY,CAAC+iB,eAAgC,CAAChrB,UAAM,CAAC,CAAC,CACtDiI,YAAY,CAAC+iB,mBAAoC,CAAChrB,UAAM,CAAC,CAAC,CAC1DiI,YAAY,CAAC+iB,eAAgC,CAAChrB,UAAM,CAAC,CAAC,CACtDiI,YAAY,CAAC+iB,gBAAiC,CAAChrB,UAAM,CAAC,CAAC;AAC5D;AAEA,SAASovB,iBAAiBA,CAAC3uB,IAAI,EAAE;EAC/B,KAAK,IAAI1J,CAAC,GAAG,CAAC,EAAEwK,GAAG,GAAGd,IAAI,CAAClJ,MAAM,EAAER,CAAC,GAAGwK,GAAG,EAAE,EAAExK,CAAC,EAAE;IAC/C,IAAIqE,UAAY,CAACqF,IAAI,CAAC1J,CAAC,CAAC,CAAC,EAAE;MACzB,OAAO0J,IAAI,CAAC1J,CAAC,CAAC;IAChB;EACF;EACA,OAAOmF,SAAS;AAClB;AAEA,SAAS0vB,QAAQA,CAAA,EAAG;EAClB,OACG,OAAO/xB,MAAM,IAAI,WAAW,IAAIA,MAAM,IACtC,OAAO6V,IAAI,IAAI,WAAW,IAAIA,IAAK;AAExC;AAQwB;AACoB;AAE5C,IAAM1D,mBAAc,GAAG;EACrBtF,WAAW,EAAE,SAAS;EACtBK,OAAO,EAAEA,OAAO;EAChBjC,WAAW,EAAE0rB,4BAA2B;EACxC1iB,QAAQ,EAAEA,QAAQ;EAClB4Y,WAAW,EAAEA,WAAW;EACxB2D,kBAAkB,EAAEA,kBAAkB;EACtC/a,QAAQ,EAAEA,QAAQ;EAClB5E,OAAO,EAAE,KAAK;EACdO,OAAO,EAAE,IAAI;EACblC,QAAQ,EAAE,IAAI;EACd0c,UAAU,EAAE,KAAK;EACjBgL,uBAAuB,EAAE,IAAI;EAC7BxsB,SAAS,EAAE,IAAI;EACfopB,sBAAsB,EAAE,IAAI;EAC5BtgB,qBAAqB,EAAE,IAAI;EAC3BmgB,uBAAuB,EAAE,KAAK;EAC9B9lB,MAAM,EAAE6jB,QAAc;EACtBxf,OAAO,EAAEyf,gBAAeA;AAC1B,CAAC;AAED,yCAAe3f,YAAO;;;;;;;;;;;;;;AC3mBY;AAElC,IAAMmlB,UAAU,GAAG,GAAG;;AAEtB;AACA,SAASC,UAAUA,CAACC,MAAM,EAAE;EAC1B,OAAO,CAACv2B,IAAI,CAACw2B,KAAK,CAACD,MAAM,GAAG,IAAI,CAAC,EAAEv2B,IAAI,CAACqoB,KAAK,CAAEkO,MAAM,GAAG,IAAI,GAAI,GAAG,CAAC,CAAC;AACvE;AAAC,IAEKvF,SAAS;EACb,SAAAA,UAAYxuB,OAAO,EAAE4O,OAAO,EAAE;IAAA,IAAA6B,aAAA;IAAAjG,wBAAA,OAAAgkB,SAAA;IAC5B,IAAI,CAACxgB,KAAK,GAAG,EAAE;IACf,IAAI,CAAChO,OAAO,GAAGzB,SAAO,CAACyB,OAAO,CAAC;IAC/B,IAAIi0B,kBAAkB,GAAG,IAAI,CAACj0B,OAAO,CAACi0B,kBAAkB,IAAIJ,UAAU;IACtE,IAAI,CAACK,YAAY,GAAG12B,IAAI,CAAC22B,GAAG,CAAC,CAAC,EAAE32B,IAAI,CAAC42B,GAAG,CAACH,kBAAkB,EAAEJ,UAAU,CAAC,CAAC;IACzE,IAAI,CAACjlB,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACylB,aAAa,IAAA5jB,aAAA,GAAG,IAAI,CAAC7B,OAAO,cAAA6B,aAAA,uBAAZA,aAAA,CAAc6jB,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;EACvE;EAAC,OAAAtpB,qBAAA,CAAAwjB,SAAA;IAAAx0B,GAAA;IAAA+B,KAAA,EAED,SAAAkP,SAASA,CAACjL,OAAO,EAAE;MACjB,IAAImL,UAAU,GAAG,IAAI,CAACnL,OAAO;MAC7B,IAAI,CAACA,OAAO,GAAGzB,SAAO,CAAC4M,UAAU,EAAEnL,OAAO,CAAC;MAC3C,IAAIi0B,kBAAkB,GAAG,IAAI,CAACj0B,OAAO,CAACi0B,kBAAkB,IAAIJ,UAAU;MACtE,IAAIU,YAAY,GAAG/2B,IAAI,CAAC22B,GAAG,CAAC,CAAC,EAAE32B,IAAI,CAAC42B,GAAG,CAACH,kBAAkB,EAAEJ,UAAU,CAAC,CAAC;MACxE,IAAIW,WAAW,GAAG,CAAC;MACnB,IAAI,IAAI,CAACxmB,KAAK,CAACtT,MAAM,GAAG65B,YAAY,EAAE;QACpCC,WAAW,GAAG,IAAI,CAACxmB,KAAK,CAACtT,MAAM,GAAG65B,YAAY;MAChD;MACA,IAAI,CAACL,YAAY,GAAGK,YAAY;MAChC,IAAI,CAACvmB,KAAK,CAACvC,MAAM,CAAC,CAAC,EAAE+oB,WAAW,CAAC;IACnC;EAAC;IAAAx6B,GAAA;IAAA+B,KAAA,EAED,SAAAyU,UAAUA,CAAA,EAAG;MACX,IAAIikB,MAAM,GAAG5a,KAAK,CAACvgB,SAAS,CAACoK,KAAK,CAAC9J,IAAI,CAAC,IAAI,CAACoU,KAAK,EAAE,CAAC,CAAC;MACtD,IAAIzP,UAAY,CAAC,IAAI,CAACyB,OAAO,CAAC00B,eAAe,CAAC,EAAE;QAC9C,IAAI;UACF,IAAIx6B,CAAC,GAAGu6B,MAAM,CAAC/5B,MAAM;UACrB,OAAOR,CAAC,EAAE,EAAE;YACV,IAAI,IAAI,CAAC8F,OAAO,CAAC00B,eAAe,CAACD,MAAM,CAACv6B,CAAC,CAAC,CAAC,EAAE;cAC3Cu6B,MAAM,CAAChpB,MAAM,CAACvR,CAAC,EAAE,CAAC,CAAC;YACrB;UACF;QACF,CAAC,CAAC,OAAOyC,CAAC,EAAE;UACV,IAAI,CAACqD,OAAO,CAAC00B,eAAe,GAAG,IAAI;QACrC;MACF;;MAEA;MACAD,MAAM,GAAGA,MAAM,CAACrT,MAAM,CAAC,UAACzkB,CAAC;QAAA,OAAKA,CAAC,CAACX,IAAI,KAAK,cAAc;MAAA,EAAC;;MAExD;MACAy4B,MAAM,GAAGA,MAAM,CAACpT,GAAG,CAAC,UAAA1I,IAAA;QAAA,IAAGgc,cAAc,GAAAhc,IAAA,CAAdgc,cAAc;UAAK5uB,KAAK,GAAA6uB,wBAAA,CAAAjc,IAAA,EAAAkc,SAAA;QAAA,OAAO9uB,KAAK;MAAA,EAAC;MAE5D,OAAO0uB,MAAM;IACf;EAAC;IAAAz6B,GAAA;IAAA+B,KAAA,EAED,SAAA+4B,mBAAmBA,CAAA,EAAkB;MAAA,IAAjB5uB,UAAU,GAAAvL,SAAA,CAAAD,MAAA,QAAAC,SAAA,QAAA0E,SAAA,GAAA1E,SAAA,MAAG,CAAC,CAAC;MACjC,IAAI,IAAI,CAAC05B,aAAa,EAAE;QACtB,IAAI,CAACA,aAAa,CAACU,GAAG,CAAC7uB,UAAU,CAAC;QAClC,IAAI,CAACmuB,aAAa,GAAG,IAAI,CAACzlB,OAAO,CAAC0lB,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;MACtE;IACF;EAAC;IAAAt6B,GAAA;IAAA+B,KAAA,EAED,SAAAqQ,OAAOA,CACLpQ,IAAI,EACJ8J,QAAQ,EACRb,KAAK,EACL+vB,WAAW,EAGX;MAAA,IAFApwB,SAAS,GAAAjK,SAAA,CAAAD,MAAA,QAAAC,SAAA,QAAA0E,SAAA,GAAA1E,SAAA,MAAG,IAAI;MAAA,IAChBg6B,cAAc,GAAAh6B,SAAA,CAAAD,MAAA,QAAAC,SAAA,QAAA0E,SAAA,GAAA1E,SAAA,MAAG,IAAI;MAErB,IAAIgC,CAAC,GAAG;QACNsI,KAAK,EAAEgwB,QAAQ,CAACj5B,IAAI,EAAEiJ,KAAK,CAAC;QAC5BjJ,IAAI,EAAEA,IAAI;QACVk5B,YAAY,EAAEtwB,SAAS,IAAIrG,WAAK,CAAC,CAAC;QAClCwL,IAAI,EAAEjE,QAAQ;QACdlH,MAAM,EAAE;MACV,CAAC;MACD,IAAIo2B,WAAW,EAAE;QACfr4B,CAAC,CAACU,IAAI,GAAG23B,WAAW;MACtB;MACA,IAAIL,cAAc,EAAE;QAClBh4B,CAAC,CAACg4B,cAAc,GAAGA,cAAc;MACnC;MAEA,IAAI;QACF,IACEp2B,UAAY,CAAC,IAAI,CAACyB,OAAO,CAAC00B,eAAe,CAAC,IAC1C,IAAI,CAAC10B,OAAO,CAAC00B,eAAe,CAAC/3B,CAAC,CAAC,EAC/B;UACA,OAAO,KAAK;QACd;MACF,CAAC,CAAC,OAAOkhB,GAAG,EAAE;QACZ,IAAI,CAAC7d,OAAO,CAAC00B,eAAe,GAAG,IAAI;MACrC;MAEA,IAAI,CAACr0B,IAAI,CAAC1D,CAAC,CAAC;MACZ,OAAOA,CAAC;IACV;EAAC;IAAA3C,GAAA;IAAA+B,KAAA,EAED,SAAA0T,YAAYA,CAACzT,IAAI,EAAE8J,QAAQ,EAAEb,KAAK,EAAE+vB,WAAW,EAAE;MAC/C,OAAO,IAAI,CAAC5oB,OAAO,CAACpQ,IAAI,EAAE8J,QAAQ,EAAEb,KAAK,EAAE+vB,WAAW,CAAC;IACzD;EAAC;IAAAh7B,GAAA;IAAA+B,KAAA,EAED,SAAAo5B,YAAYA,CAAC/xB,GAAG,EAAE6B,KAAK,EAAE+vB,WAAW,EAAEpwB,SAAS,EAAE;MAAA,IAAAwwB,mBAAA;MAC/C,IAAMrzB,OAAO,GAAGqB,GAAG,CAACrB,OAAO,IAAI7F,MAAM,CAACkH,GAAG,CAAC;MAC1C,IAAI0C,QAAQ,GAAG;QAAE/D,OAAO,EAAPA;MAAQ,CAAC;MAC1B,IAAIqB,GAAG,CAACH,KAAK,EAAE;QACb6C,QAAQ,CAAC7C,KAAK,GAAGG,GAAG,CAACH,KAAK;MAC5B;MACA,IAAM0xB,cAAc,GAAG;QACrB5yB,OAAO,EAAPA,OAAO;QACPkD,KAAK,EAALA,KAAK;QACLjJ,IAAI,EAAE,OAAO;QACbqB,IAAI,EAAE23B;MACR,CAAC;MAED,CAAAI,mBAAA,OAAI,CAACf,aAAa,cAAAe,mBAAA,eAAlBA,mBAAA,CAAoBpkB,QAAQ,CAC1B,0BAA0B,EAC1B2jB,cAAc,EACdb,UAAU,CAAClvB,SAAS,CACtB,CAAC;MAED,OAAO,IAAI,CAACwH,OAAO,CACjB,OAAO,EACPtG,QAAQ,EACRb,KAAK,EACL+vB,WAAW,EACXpwB,SAAS,EACT+vB,cACF,CAAC;IACH;EAAC;IAAA36B,GAAA;IAAA+B,KAAA,EAED,SAAAs5B,UAAUA,CAACtzB,OAAO,EAAEkD,KAAK,EAAE+vB,WAAW,EAAEpwB,SAAS,EAAE;MACjD,IAAI+vB,cAAc,GAAG,IAAI;;MAEzB;MACA,IAAIK,WAAW,EAAE;QAAA,IAAAM,oBAAA;QACbX,cAAc,GAAG;UACjB5yB,OAAO,EAAPA,OAAO;UACPkD,KAAK,EAALA,KAAK;UACLjJ,IAAI,EAAE,SAAS;UACfqB,IAAI,EAAE23B;QACR,CAAC,GAAAM,oBAAA,GACC,IAAI,CAACjB,aAAa,cAAAiB,oBAAA,uBAAlBA,oBAAA,CAAoBtkB,QAAQ,CAC1B,0BAA0B,EAC1B2jB,cAAc,EACdb,UAAU,CAAClvB,SAAS,CACtB,CAAC;MACL,CAAC,MAAM;QAAA,IAAA2wB,oBAAA;QACLZ,cAAc,GAAG;UAAE5yB,OAAO,EAAPA,OAAO;UAAEkD,KAAK,EAALA;QAAM,CAAC;QACnC,CAAAswB,oBAAA,OAAI,CAAClB,aAAa,cAAAkB,oBAAA,eAAlBA,oBAAA,CAAoBvkB,QAAQ,CAC1B,mBAAmB,EACnB2jB,cAAc,EACdb,UAAU,CAAClvB,SAAS,CACtB,CAAC;MACH;MAEA,OAAO,IAAI,CAACwH,OAAO,CACjB,KAAK,EACL;QAAErK,OAAO,EAAPA;MAAQ,CAAC,EACXkD,KAAK,EACL+vB,WAAW,EACXpwB,SAAS,EACT+vB,cACF,CAAC;IACH;EAAC;IAAA36B,GAAA;IAAA+B,KAAA,EAED,SAAAy5B,cAAcA,CAAC1vB,QAAQ,EAAE2vB,OAAO,EAAET,WAAW,EAAE7tB,WAAW,EAAE;MAAA,IAAAuuB,kBAAA,EAAAC,oBAAA;MAC1DF,OAAO,GAAGA,OAAO,IAAI,KAAK;MAC1B3vB,QAAQ,CAAC2vB,OAAO,GAAG3vB,QAAQ,CAAC2vB,OAAO,IAAIA,OAAO;MAC9C,IAAItuB,WAAW,EAAE;QACfrB,QAAQ,CAAC5B,OAAO,GAAGiD,WAAW;MAChC;MACA,IAAMlC,KAAK,GAAG,IAAI,CAAC2wB,eAAe,CAAC9vB,QAAQ,CAAC+vB,WAAW,CAAC;MACxD,IAAMC,WAAW,GAAG,CAAChwB,QAAQ,CAACiwB,WAAW,IAAI,CAAC,IAAI,GAAG;MACrD,IAAMpB,cAAc,GAAG;QACrB34B,IAAI,EAAE8J,QAAQ,CAAC2vB,OAAO;QACtBviB,MAAM,EAAEpN,QAAQ,CAACoN,MAAM;QACvBhV,GAAG,EAAE4H,QAAQ,CAAC5H,GAAG;QACjB83B,UAAU,EAAElwB,QAAQ,CAAC+vB,WAAW;QAChC,iBAAiB,EAAE10B,IAAI,CAACF,SAAS,CAAC6E,QAAQ,CAACmwB,eAAe,IAAI,CAAC,CAAC,CAAC;QACjE,kBAAkB,EAAE90B,IAAI,CAACF,SAAS,CAAC,EAAAy0B,kBAAA,GAAA5vB,QAAQ,CAAC4W,QAAQ,cAAAgZ,kBAAA,uBAAjBA,kBAAA,CAAmBppB,OAAO,KAAI,CAAC,CAAC,CAAC;QACpE,uBAAuB,EAAEwpB,WAAW,CAACr8B,QAAQ,CAAC;MAChD,CAAC;MAED,CAAAk8B,oBAAA,OAAI,CAACtB,aAAa,cAAAsB,oBAAA,eAAlBA,oBAAA,CAAoB3kB,QAAQ,CAC1B,uBAAuB,EACvB2jB,cAAc,EACdb,UAAU,CAAChuB,QAAQ,CAACowB,aAAa,CACnC,CAAC;MAED,OAAO,IAAI,CAAC9pB,OAAO,CACjB,SAAS,EACTtG,QAAQ,EACRb,KAAK,EACL+vB,WAAW,EACXlvB,QAAQ,CAACowB,aAAa,EACtBvB,cACF,CAAC;IACH;EAAC;IAAA36B,GAAA;IAAA+B,KAAA,EAED,SAAA65B,eAAeA,CAACI,UAAU,EAAE;MAC1B,IAAIA,UAAU,IAAI,GAAG,IAAIA,UAAU,GAAG,GAAG,EAAE;QACzC,OAAO,MAAM;MACf;MACA,IAAIA,UAAU,KAAK,CAAC,IAAIA,UAAU,IAAI,GAAG,EAAE;QACzC,OAAO,OAAO;MAChB;MACA,OAAO,MAAM;IACf;EAAC;IAAAh8B,GAAA;IAAA+B,KAAA,EAED,SAAAo6B,UAAUA,CAACV,OAAO,EAAEW,OAAO,EAAEr6B,KAAK,EAAEs6B,OAAO,EAAErB,WAAW,EAAE;MACxD,IAAIlvB,QAAQ,GAAG;QACb2vB,OAAO,EAAEA,OAAO;QAChBW,OAAO,EAAEA;MACX,CAAC;MACD,IAAIr6B,KAAK,KAAKsD,SAAS,EAAE;QACvByG,QAAQ,CAAC/J,KAAK,GAAGA,KAAK;MACxB;MACA,IAAIs6B,OAAO,KAAKh3B,SAAS,EAAE;QACzByG,QAAQ,CAACuwB,OAAO,GAAGA,OAAO;MAC5B;MACA,OAAO,IAAI,CAACjqB,OAAO,CAAC,KAAK,EAAEtG,QAAQ,EAAE,MAAM,EAAEkvB,WAAW,CAAC;IAC3D;EAAC;IAAAh7B,GAAA;IAAA+B,KAAA,EAED,SAAAu6B,YAAYA,CAAAtd,KAAA,EAAmD;MAAA,IAAAud,oBAAA;MAAA,IAAhDv6B,IAAI,GAAAgd,KAAA,CAAJhd,IAAI;QAAEw6B,WAAW,GAAAxd,KAAA,CAAXwd,WAAW;QAAEJ,OAAO,GAAApd,KAAA,CAAPod,OAAO;QAAEr6B,KAAK,GAAAid,KAAA,CAALjd,KAAK;QAAE6I,SAAS,GAAAoU,KAAA,CAATpU,SAAS;MACzD,IAAMtK,IAAI,GAAG,qBAAqB;MAClC,IAAMwL,QAAQ,GAAG;QACf9J,IAAI,EAAE1B,IAAI;QACVm7B,OAAO,EAAEz5B,IAAI;QACbo6B,OAAO,EAAPA,OAAO;QACPr6B,KAAK,EAALA;MACF,CAAC;MACD,IAAM44B,cAAc,GAAG;QACrB34B,IAAI,EAAJA,IAAI;QACJw6B,WAAW,EAAXA,WAAW;QACXJ,OAAO,EAAPA,OAAO;QACPr6B,KAAK,EAALA,KAAK;QACL06B,eAAe,EAAE3C,UAAU,CAAClvB,SAAS;MACvC,CAAC;MACD,IAAMmB,KAAK,GAAG,IAAI,CAAC2wB,iBAAiB,CAACp8B,IAAI,EAAEq6B,cAAc,CAAC;MAC1D,IAAI5uB,KAAK,EAAE;QACT,OAAO,IAAI,CAAC4wB,oBAAoB,CAAC5wB,KAAK,EAAE4uB,cAAc,EAAE/vB,SAAS,CAAC;MACpE;MAEA,CAAA2xB,oBAAA,OAAI,CAAClC,aAAa,cAAAkC,oBAAA,eAAlBA,oBAAA,CAAoBvlB,QAAQ,CAAC1W,IAAI,EAAEq6B,cAAc,EAAEb,UAAU,CAAClvB,SAAS,CAAC,CAAC;MAEzE,OAAO,IAAI,CAACwH,OAAO,CACjB,KAAK,EACLtG,QAAQ,EACR,MAAM,EACN,IAAI,EACJlB,SAAS,EACT+vB,cACF,CAAC;IACH;EAAC;IAAA36B,GAAA;IAAA+B,KAAA,EAED,SAAA66B,YAAYA,CAAAC,KAAA,EAA4C;MAAA,IAAAC,oBAAA;MAAA,IAAzC96B,IAAI,GAAA66B,KAAA,CAAJ76B,IAAI;QAAEw6B,WAAW,GAAAK,KAAA,CAAXL,WAAW;QAAEJ,OAAO,GAAAS,KAAA,CAAPT,OAAO;QAAExxB,SAAS,GAAAiyB,KAAA,CAATjyB,SAAS;MAClD,IAAMtK,IAAI,GAAG,qBAAqB;MAClC,IAAMwL,QAAQ,GAAG;QACf9J,IAAI,EAAE1B,IAAI;QACVm7B,OAAO,EAAEz5B,IAAI;QACbo6B,OAAO,EAAPA;MACF,CAAC;MACD,IAAMzB,cAAc,GAAG;QACrB34B,IAAI,EAAJA,IAAI;QACJw6B,WAAW,EAAXA,WAAW;QACXJ,OAAO,EAAPA,OAAO;QACPK,eAAe,EAAE3C,UAAU,CAAClvB,SAAS;MACvC,CAAC;MACD,IAAMmB,KAAK,GAAG,IAAI,CAAC2wB,iBAAiB,CAACp8B,IAAI,EAAEq6B,cAAc,CAAC;MAC1D,IAAI5uB,KAAK,EAAE;QACT,OAAO,IAAI,CAAC4wB,oBAAoB,CAAC5wB,KAAK,EAAE4uB,cAAc,EAAE/vB,SAAS,CAAC;MACpE;MAEA,CAAAkyB,oBAAA,OAAI,CAACzC,aAAa,cAAAyC,oBAAA,eAAlBA,oBAAA,CAAoB9lB,QAAQ,CAAC1W,IAAI,EAAEq6B,cAAc,EAAEb,UAAU,CAAClvB,SAAS,CAAC,CAAC;MAEzE,OAAO,IAAI,CAACwH,OAAO,CACjB,KAAK,EACLtG,QAAQ,EACR,MAAM,EACN,IAAI,EACJlB,SAAS,EACT+vB,cACF,CAAC;IACH;EAAC;IAAA36B,GAAA;IAAA+B,KAAA,EAED,SAAA26B,iBAAiBA,CAACp8B,IAAI,EAAE4L,UAAU,EAAE;MAClC,IAAM6wB,SAAS,GAAG,IAAI,CAACC,UAAU,CAAC,IAAI,CAAChpB,KAAK,CAAC;MAE7C,IACE+oB,SAAS,IACTA,SAAS,CAAChtB,IAAI,CAAC/N,IAAI,KAAK1B,IAAI,IAC5By8B,SAAS,CAACpC,cAAc,CAACsC,MAAM,KAAK/wB,UAAU,CAAC+wB,MAAM,EACrD;QACA,OAAOF,SAAS;MAClB;IACF;EAAC;IAAA/8B,GAAA;IAAA+B,KAAA,EAED,SAAA46B,oBAAoBA,CAAC5wB,KAAK,EAAEG,UAAU,EAAEtB,SAAS,EAAE;MACjD,IAAMsyB,QAAQ,GAAG15B,IAAI,CAAC22B,GAAG,CAACvvB,SAAS,GAAGmB,KAAK,CAACmvB,YAAY,EAAE,CAAC,CAAC;MAC5DnvB,KAAK,CAACgE,IAAI,CAAChO,KAAK,GAAGmK,UAAU,CAACnK,KAAK;MACnCgK,KAAK,CAAC4uB,cAAc,CAAC54B,KAAK,GAAGmK,UAAU,CAACnK,KAAK;MAC7CgK,KAAK,CAAC4uB,cAAc,CAACxO,MAAM,GAAGjgB,UAAU,CAACigB,MAAM;MAC/CpgB,KAAK,CAAC4uB,cAAc,CAACzO,KAAK,GAAGhgB,UAAU,CAACggB,KAAK;MAC7CngB,KAAK,CAAC4uB,cAAc,CAACwC,aAAa,GAAGjxB,UAAU,CAACixB,aAAa;MAC7DpxB,KAAK,CAAC4uB,cAAc,CAAC,iBAAiB,CAAC,GAAGb,UAAU,CAAClvB,SAAS,CAAC;MAC/DmB,KAAK,CAAC4uB,cAAc,CAAC,kBAAkB,CAAC,GAAGb,UAAU,CAACoD,QAAQ,CAAC;MAC/DnxB,KAAK,CAAC4uB,cAAc,CAACnzB,KAAK,GAAG,CAACuE,KAAK,CAAC4uB,cAAc,CAACnzB,KAAK,IAAI,CAAC,IAAI,CAAC;MAClEuE,KAAK,CAAC4uB,cAAc,CAACyC,IAAI,GAAGrxB,KAAK,CAAC4uB,cAAc,CAACnzB,KAAK,IAAI01B,QAAQ,GAAG,IAAI,CAAC;IAC5E;EAAC;IAAAl9B,GAAA;IAAA+B,KAAA,EAED,SAAAi7B,UAAUA,CAAC1M,IAAI,EAAE;MACf,OAAOA,IAAI,CAAC5vB,MAAM,GAAG,CAAC,GAAG4vB,IAAI,CAACA,IAAI,CAAC5vB,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI;IACvD;EAAC;IAAAV,GAAA;IAAA+B,KAAA,EAED,SAAAs7B,YAAYA,CAAAC,KAAA,EAA4C;MAAA,IAAAC,oBAAA;MAAA,IAAzCv7B,IAAI,GAAAs7B,KAAA,CAAJt7B,IAAI;QAAEw6B,WAAW,GAAAc,KAAA,CAAXd,WAAW;QAAEJ,OAAO,GAAAkB,KAAA,CAAPlB,OAAO;QAAExxB,SAAS,GAAA0yB,KAAA,CAAT1yB,SAAS;MAClD,IAAMtK,IAAI,GAAG,qBAAqB;MAClC,IAAMwL,QAAQ,GAAG;QACf9J,IAAI,EAAE1B,IAAI;QACVm7B,OAAO,EAAEz5B,IAAI;QACbo6B,OAAO,EAAPA;MACF,CAAC;MACD,IAAMzB,cAAc,GAAG;QACrB34B,IAAI,EAAJA,IAAI;QACJw6B,WAAW,EAAXA,WAAW;QACXJ,OAAO,EAAPA;MACF,CAAC;MAED,CAAAmB,oBAAA,OAAI,CAAClD,aAAa,cAAAkD,oBAAA,eAAlBA,oBAAA,CAAoBvmB,QAAQ,CAAC1W,IAAI,EAAEq6B,cAAc,EAAEb,UAAU,CAAClvB,SAAS,CAAC,CAAC;MAEzE,OAAO,IAAI,CAACwH,OAAO,CACjB,KAAK,EACLtG,QAAQ,EACR,MAAM,EACN,IAAI,EACJlB,SAAS,EACT+vB,cACF,CAAC;IACH;EAAC;IAAA36B,GAAA;IAAA+B,KAAA,EAED,SAAAy7B,aAAaA,CAAAC,KAAA,EAOV;MAAA,IAAAC,oBAAA;MAAA,IAND17B,IAAI,GAAAy7B,KAAA,CAAJz7B,IAAI;QACJw6B,WAAW,GAAAiB,KAAA,CAAXjB,WAAW;QACXtQ,KAAK,GAAAuR,KAAA,CAALvR,KAAK;QACLC,MAAM,GAAAsR,KAAA,CAANtR,MAAM;QACNgR,aAAa,GAAAM,KAAA,CAAbN,aAAa;QACbvyB,SAAS,GAAA6yB,KAAA,CAAT7yB,SAAS;MAET,IAAMtK,IAAI,GAAG,sBAAsB;MACnC,IAAMwL,QAAQ,GAAG;QACf9J,IAAI,EAAE1B,IAAI;QACVm7B,OAAO,EAAEz5B,IAAI;QACbkqB,KAAK,EAALA,KAAK;QACLC,MAAM,EAANA,MAAM;QACNgR,aAAa,EAAbA;MACF,CAAC;MACD,IAAMxC,cAAc,GAAG;QACrB34B,IAAI,EAAJA,IAAI;QACJw6B,WAAW,EAAXA,WAAW;QACXtQ,KAAK,EAALA,KAAK;QACLC,MAAM,EAANA,MAAM;QACNgR,aAAa,EAAbA;MACF,CAAC;MAED,IAAMpxB,KAAK,GAAG,IAAI,CAAC2wB,iBAAiB,CAACp8B,IAAI,EAAEq6B,cAAc,CAAC;MAC1D,IAAI5uB,KAAK,EAAE;QACT,OAAO,IAAI,CAAC4wB,oBAAoB,CAAC5wB,KAAK,EAAE4uB,cAAc,EAAE/vB,SAAS,CAAC;MACpE;MAEA,CAAA8yB,oBAAA,OAAI,CAACrD,aAAa,cAAAqD,oBAAA,eAAlBA,oBAAA,CAAoB1mB,QAAQ,CAAC1W,IAAI,EAAEq6B,cAAc,EAAEb,UAAU,CAAClvB,SAAS,CAAC,CAAC;MAEzE,OAAO,IAAI,CAACwH,OAAO,CACjB,KAAK,EACLtG,QAAQ,EACR,MAAM,EACN,IAAI,EACJlB,SAAS,EACT+vB,cACF,CAAC;IACH;EAAC;IAAA36B,GAAA;IAAA+B,KAAA,EAED,SAAA47B,eAAeA,CAAAC,KAAA,EASZ;MAAA,IAAAC,oBAAA;MAAA,IARD77B,IAAI,GAAA47B,KAAA,CAAJ57B,IAAI;QACJw6B,WAAW,GAAAoB,KAAA,CAAXpB,WAAW;QACXJ,OAAO,GAAAwB,KAAA,CAAPxB,OAAO;QACP0B,UAAU,GAAAF,KAAA,CAAVE,UAAU;QACVC,aAAa,GAAAH,KAAA,CAAbG,aAAa;QACbC,KAAK,GAAAJ,KAAA,CAALI,KAAK;QACLC,UAAU,GAAAL,KAAA,CAAVK,UAAU;QACVrzB,SAAS,GAAAgzB,KAAA,CAAThzB,SAAS;MAET,IAAMtK,IAAI,GAAG,wBAAwB;MACrC,IAAIwL,QAAQ,GAAG;QACb9J,IAAI,EAAE1B,IAAI;QACVm7B,OAAO,EAAEz5B,IAAI;QACbw6B,WAAW,EAAXA;MACF,CAAC;MAED,IAAI7B,cAAc,GAAG;QACnB34B,IAAI,EAAJA,IAAI;QACJw6B,WAAW,EAAXA;MACF,CAAC;MAED,IAAIx6B,IAAI,KAAK,WAAW,EAAE;QACxB8J,QAAQ,GAAA2T,sBAAA,CAAAA,sBAAA,KAAQ3T,QAAQ;UAAEswB,OAAO,EAAPA,OAAO;UAAE0B,UAAU,EAAVA,UAAU;UAAEC,aAAa,EAAbA;QAAa,EAAE;QAC9DpD,cAAc,GAAAlb,sBAAA,CAAAA,sBAAA,KACTkb,cAAc;UACjByB,OAAO,EAAPA,OAAO;UACP0B,UAAU,EAAVA,UAAU;UACVC,aAAa,EAAbA;QAAa,EACd;MACH;MAEA,IAAI/7B,IAAI,KAAK,MAAM,EAAE;QACnB8J,QAAQ,GAAA2T,sBAAA,CAAAA,sBAAA,KACH3T,QAAQ;UACXswB,OAAO,EAAPA,OAAO;UACP0B,UAAU,EAAVA,UAAU;UACVC,aAAa,EAAbA,aAAa;UACbC,KAAK,EAALA,KAAK;UACLC,UAAU,EAAVA;QAAU,EACX;QACDtD,cAAc,GAAAlb,sBAAA,CAAAA,sBAAA,KACTkb,cAAc;UACjByB,OAAO,EAAPA,OAAO;UACP0B,UAAU,EAAVA,UAAU;UACVC,aAAa,EAAbA,aAAa;UACbC,KAAK,EAALA,KAAK;UACLC,UAAU,EAAVA;QAAU,EACX;MACH;MAEA,CAAAJ,oBAAA,OAAI,CAACxD,aAAa,cAAAwD,oBAAA,eAAlBA,oBAAA,CAAoB7mB,QAAQ,CAAC1W,IAAI,EAAEq6B,cAAc,EAAEb,UAAU,CAAClvB,SAAS,CAAC,CAAC;MAEzE,OAAO,IAAI,CAACwH,OAAO,CACjB,KAAK,EACLtG,QAAQ,EACR,MAAM,EACN,IAAI,EACJlB,SAAS,EACT+vB,cACF,CAAC;IACH;EAAC;IAAA36B,GAAA;IAAA+B,KAAA,EAED,SAAAm8B,iBAAiBA,CAACC,IAAI,EAAEC,EAAE,EAAEpD,WAAW,EAAEpwB,SAAS,EAAE;MAAA,IAAAyzB,qBAAA;MAClD,CAAAA,qBAAA,OAAI,CAAChE,aAAa,cAAAgE,qBAAA,eAAlBA,qBAAA,CAAoBrnB,QAAQ,CAC1B,0BAA0B,EAC1B;QAAE,mBAAmB,EAAEmnB,IAAI;QAAE,UAAU,EAAEC;MAAG,CAAC,EAC7CtE,UAAU,CAAClvB,SAAS,CACtB,CAAC;MAED,OAAO,IAAI,CAACwH,OAAO,CACjB,YAAY,EACZ;QAAE+rB,IAAI,EAAJA,IAAI;QAAEC,EAAE,EAAFA;MAAG,CAAC,EACZ,MAAM,EACNpD,WAAW,EACXpwB,SACF,CAAC;IACH;EAAC;IAAA5K,GAAA;IAAA+B,KAAA,EAED,SAAA2T,uBAAuBA,CAACC,EAAE,EAAE;MAC1B,OAAO,IAAI,CAACvD,OAAO,CACjB,YAAY,EACZ;QAAEqpB,OAAO,EAAE;MAAmB,CAAC,EAC/B,MAAM,EACNp2B,SAAS,EACTsQ,EAAE,IAAIA,EAAE,CAAC2oB,OAAO,CAAC,CACnB,CAAC;MACD;AACJ;AACA;AACA;IACE;EAAC;IAAAt+B,GAAA;IAAA+B,KAAA,EAED,SAAA6T,WAAWA,CAACD,EAAE,EAAE;MACd,OAAO,IAAI,CAACvD,OAAO,CACjB,YAAY,EACZ;QAAEqpB,OAAO,EAAE;MAAO,CAAC,EACnB,MAAM,EACNp2B,SAAS,EACTsQ,EAAE,IAAIA,EAAE,CAAC2oB,OAAO,CAAC,CACnB,CAAC;MACD;AACJ;AACA;AACA;IACE;EAAC;IAAAt+B,GAAA;IAAA+B,KAAA,EAED,SAAAw8B,yBAAyBA,CAAAC,KAAA,EAAmC;MAAA,IAAAC,qBAAA;MAAA,IAAhCz8B,IAAI,GAAAw8B,KAAA,CAAJx8B,IAAI;QAAEw6B,WAAW,GAAAgC,KAAA,CAAXhC,WAAW;QAAE5xB,SAAS,GAAA4zB,KAAA,CAAT5zB,SAAS;MACtD,IAAMtK,IAAI,GAAG,4BAA4B;MACzC,IAAMwL,QAAQ,GAAG;QACf9J,IAAI,EAAE1B,IAAI;QACVm7B,OAAO,EAAEz5B;MACX,CAAC;MACD,IAAM24B,cAAc,GAAG;QACrB34B,IAAI,EAAJA,IAAI;QACJw6B,WAAW,EAAXA;MACF,CAAC;MAED,CAAAiC,qBAAA,OAAI,CAACpE,aAAa,cAAAoE,qBAAA,eAAlBA,qBAAA,CAAoBznB,QAAQ,CAAC1W,IAAI,EAAEq6B,cAAc,EAAEb,UAAU,CAAClvB,SAAS,CAAC,CAAC;MAEzE,OAAO,IAAI,CAACwH,OAAO,CACjB,cAAc,EACdtG,QAAQ,EACR,MAAM,EACN,IAAI,EACJlB,SAAS,EACT+vB,cACF,CAAC;IACH;;IAEA;EAAA;IAAA36B,GAAA;IAAA+B,KAAA,EACA,SAAAuU,mBAAmBA,CAAC3L,IAAI,EAAE;MACxB,IAAI,CAAC,IAAI,CAAC3E,OAAO,CAAC4zB,uBAAuB,EAAE;QACzC;MACF;MACA,IAAIjvB,IAAI,CAACvB,GAAG,EAAE;QACZ,OAAO,IAAI,CAAC+xB,YAAY,CAACxwB,IAAI,CAACvB,GAAG,EAAEuB,IAAI,CAACM,KAAK,EAAEN,IAAI,CAACtH,IAAI,EAAEsH,IAAI,CAACC,SAAS,CAAC;MAC3E;MACA,IAAID,IAAI,CAAC5C,OAAO,EAAE;QAChB,OAAO,IAAI,CAACszB,UAAU,CACpB1wB,IAAI,CAAC5C,OAAO,EACZ4C,IAAI,CAACM,KAAK,EACVN,IAAI,CAACtH,IAAI,EACTsH,IAAI,CAACC,SACP,CAAC;MACH;MACA,IAAID,IAAI,CAACX,MAAM,EAAE;QACf,OAAO,IAAI,CAACoI,OAAO,CACjB,KAAK,EACLzH,IAAI,CAACX,MAAM,EACXW,IAAI,CAACM,KAAK,EACVN,IAAI,CAACtH,IAAI,EACTsH,IAAI,CAACC,SACP,CAAC;MACH;IACF;EAAC;IAAA5K,GAAA;IAAA+B,KAAA,EAED,SAAAsE,IAAIA,CAAC1D,CAAC,EAAE;MACN,IAAI,CAACqR,KAAK,CAAC3N,IAAI,CAAC1D,CAAC,CAAC;MAClB,IAAI,IAAI,CAACqR,KAAK,CAACtT,MAAM,GAAG,IAAI,CAACw5B,YAAY,EAAE;QACzC,IAAI,CAAClmB,KAAK,CAACJ,KAAK,CAAC,CAAC;MACpB;IACF;EAAC;AAAA;AAGH,SAASqnB,QAAQA,CAACj5B,IAAI,EAAEiJ,KAAK,EAAE;EAC7B,IAAIA,KAAK,EAAE;IACT,OAAOA,KAAK;EACd;EACA,IAAIgL,YAAY,GAAG;IACjBlS,KAAK,EAAE,OAAO;IACd26B,MAAM,EAAE;EACV,CAAC;EACD,OAAOzoB,YAAY,CAACjU,IAAI,CAAC,IAAI,MAAM;AACrC;AAEA,8CAAewyB,SAAS;;AC/iBxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASliB,OAAOA,CAACA,OAAO,EAAE;EACxB,IAAI,OAAOqsB,OAAO,KAAK,WAAW,EAAE;IAClC,OAAO,IAAIC,YAAY,CAACtsB,OAAO,CAAC;EAClC;EAEA,OAAO,IAAIqsB,OAAO,CAACrsB,OAAO,CAAC;AAC7B;AAEA,SAASusB,aAAaA,CAACv+B,IAAI,EAAE;EAC3B,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;IAC5BA,IAAI,GAAG4B,MAAM,CAAC5B,IAAI,CAAC;EACrB;EACA,OAAOA,IAAI,CAACa,WAAW,CAAC,CAAC;AAC3B;AAEA,SAAS29B,cAAcA,CAAC/8B,KAAK,EAAE;EAC7B,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC7BA,KAAK,GAAGG,MAAM,CAACH,KAAK,CAAC;EACvB;EACA,OAAOA,KAAK;AACd;AAEA,SAASg9B,WAAWA,CAACC,KAAK,EAAE;EAC1B,IAAIplB,QAAQ,GAAG;IACboC,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAc;MAChB,IAAIja,KAAK,GAAGi9B,KAAK,CAACprB,KAAK,CAAC,CAAC;MACzB,OAAO;QAAEtH,IAAI,EAAEvK,KAAK,KAAKsD,SAAS;QAAEtD,KAAK,EAAEA;MAAM,CAAC;IACpD;EACF,CAAC;EAED,OAAO6X,QAAQ;AACjB;AAEA,SAASglB,YAAYA,CAACtsB,OAAO,EAAE;EAC7B,IAAI,CAAC+U,GAAG,GAAG,CAAC,CAAC;EAEb,IAAI/U,OAAO,YAAYssB,YAAY,EAAE;IACnCtsB,OAAO,CAAC0I,OAAO,CAAC,UAAUjZ,KAAK,EAAEzB,IAAI,EAAE;MACrC,IAAI,CAAC2+B,MAAM,CAAC3+B,IAAI,EAAEyB,KAAK,CAAC;IAC1B,CAAC,EAAE,IAAI,CAAC;EACV,CAAC,MAAM,IAAI8d,KAAK,CAACqH,OAAO,CAAC5U,OAAO,CAAC,EAAE;IACjCA,OAAO,CAAC0I,OAAO,CAAC,UAAUkkB,MAAM,EAAE;MAChC,IAAI,CAACD,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,EAAE,IAAI,CAAC;EACV,CAAC,MAAM,IAAI5sB,OAAO,EAAE;IAClBjT,MAAM,CAAC8/B,mBAAmB,CAAC7sB,OAAO,CAAC,CAAC0I,OAAO,CAAC,UAAU1a,IAAI,EAAE;MAC1D,IAAI,CAAC2+B,MAAM,CAAC3+B,IAAI,EAAEgS,OAAO,CAAChS,IAAI,CAAC,CAAC;IAClC,CAAC,EAAE,IAAI,CAAC;EACV;AACF;AAEAs+B,YAAY,CAACt/B,SAAS,CAAC2/B,MAAM,GAAG,UAAU3+B,IAAI,EAAEyB,KAAK,EAAE;EACrDzB,IAAI,GAAGu+B,aAAa,CAACv+B,IAAI,CAAC;EAC1ByB,KAAK,GAAG+8B,cAAc,CAAC/8B,KAAK,CAAC;EAC7B,IAAIq9B,QAAQ,GAAG,IAAI,CAAC/X,GAAG,CAAC/mB,IAAI,CAAC;EAC7B,IAAI,CAAC+mB,GAAG,CAAC/mB,IAAI,CAAC,GAAG8+B,QAAQ,GAAGA,QAAQ,GAAG,IAAI,GAAGr9B,KAAK,GAAGA,KAAK;AAC7D,CAAC;AAED68B,YAAY,CAACt/B,SAAS,CAACkN,GAAG,GAAG,UAAUlM,IAAI,EAAE;EAC3CA,IAAI,GAAGu+B,aAAa,CAACv+B,IAAI,CAAC;EAC1B,OAAO,IAAI,CAAC++B,GAAG,CAAC/+B,IAAI,CAAC,GAAG,IAAI,CAAC+mB,GAAG,CAAC/mB,IAAI,CAAC,GAAG,IAAI;AAC/C,CAAC;AAEDs+B,YAAY,CAACt/B,SAAS,CAAC+/B,GAAG,GAAG,UAAU/+B,IAAI,EAAE;EAC3C,OAAO,IAAI,CAAC+mB,GAAG,CAAC9nB,cAAc,CAACs/B,aAAa,CAACv+B,IAAI,CAAC,CAAC;AACrD,CAAC;AAEDs+B,YAAY,CAACt/B,SAAS,CAAC0b,OAAO,GAAG,UAAU/Q,QAAQ,EAAEq1B,OAAO,EAAE;EAC5D,KAAK,IAAIh/B,IAAI,IAAI,IAAI,CAAC+mB,GAAG,EAAE;IACzB,IAAI,IAAI,CAACA,GAAG,CAAC9nB,cAAc,CAACe,IAAI,CAAC,EAAE;MACjC2J,QAAQ,CAACrK,IAAI,CAAC0/B,OAAO,EAAE,IAAI,CAACjY,GAAG,CAAC/mB,IAAI,CAAC,EAAEA,IAAI,EAAE,IAAI,CAAC;IACpD;EACF;AACF,CAAC;AAEDs+B,YAAY,CAACt/B,SAAS,CAAC4kB,OAAO,GAAG,YAAY;EAC3C,IAAI8a,KAAK,GAAG,EAAE;EACd,IAAI,CAAChkB,OAAO,CAAC,UAAUjZ,KAAK,EAAEzB,IAAI,EAAE;IAClC0+B,KAAK,CAAC34B,IAAI,CAAC,CAAC/F,IAAI,EAAEyB,KAAK,CAAC,CAAC;EAC3B,CAAC,CAAC;EACF,OAAOg9B,WAAW,CAACC,KAAK,CAAC;AAC3B,CAAC;AAED,oDAAe1sB,OAAO;;AC7FtB,SAAS5Q,OAAOA,CAAC/B,GAAG,EAAEW,IAAI,EAAEwM,WAAW,EAAEyyB,YAAY,EAAEv9B,IAAI,EAAE;EAC3D,IAAIw9B,IAAI,GAAG7/B,GAAG,CAACW,IAAI,CAAC;EACpBX,GAAG,CAACW,IAAI,CAAC,GAAGwM,WAAW,CAAC0yB,IAAI,CAAC;EAC7B,IAAID,YAAY,EAAE;IAChBA,YAAY,CAACv9B,IAAI,CAAC,CAACqE,IAAI,CAAC,CAAC1G,GAAG,EAAEW,IAAI,EAAEk/B,IAAI,CAAC,CAAC;EAC5C;AACF;AAEA,oDAAe99B,OAAO;;ACRa;AAEnC,SAAS+9B,QAAQA,CAAC9/B,GAAG,EAAE6I,IAAI,EAAEe,IAAI,EAAE;EACjC,IAAInD,CAAC,EAAEwU,CAAC,EAAE1a,CAAC;EACX,IAAIw/B,KAAK,GAAGn7B,MAAQ,CAAC5E,GAAG,EAAE,QAAQ,CAAC;EACnC,IAAIunB,OAAO,GAAG3iB,MAAQ,CAAC5E,GAAG,EAAE,OAAO,CAAC;EACpC,IAAI8M,IAAI,GAAG,EAAE;EACb,IAAIkzB,SAAS;;EAEb;EACAp2B,IAAI,GAAGA,IAAI,IAAI;IAAE5J,GAAG,EAAE,EAAE;IAAEigC,MAAM,EAAE;EAAG,CAAC;EAEtC,IAAIF,KAAK,EAAE;IACTC,SAAS,GAAGp2B,IAAI,CAAC5J,GAAG,CAAC+G,OAAO,CAAC/G,GAAG,CAAC;IAEjC,IAAI+/B,KAAK,IAAIC,SAAS,KAAK,CAAC,CAAC,EAAE;MAC7B;MACA,OAAOp2B,IAAI,CAACq2B,MAAM,CAACD,SAAS,CAAC,IAAIp2B,IAAI,CAAC5J,GAAG,CAACggC,SAAS,CAAC;IACtD;IAEAp2B,IAAI,CAAC5J,GAAG,CAAC0G,IAAI,CAAC1G,GAAG,CAAC;IAClBggC,SAAS,GAAGp2B,IAAI,CAAC5J,GAAG,CAACe,MAAM,GAAG,CAAC;EACjC;EAEA,IAAIg/B,KAAK,EAAE;IACT,KAAKt5B,CAAC,IAAIzG,GAAG,EAAE;MACb,IAAIN,MAAM,CAACC,SAAS,CAACC,cAAc,CAACK,IAAI,CAACD,GAAG,EAAEyG,CAAC,CAAC,EAAE;QAChDqG,IAAI,CAACpG,IAAI,CAACD,CAAC,CAAC;MACd;IACF;EACF,CAAC,MAAM,IAAI8gB,OAAO,EAAE;IAClB,KAAKhnB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGP,GAAG,CAACe,MAAM,EAAE,EAAER,CAAC,EAAE;MAC/BuM,IAAI,CAACpG,IAAI,CAACnG,CAAC,CAAC;IACd;EACF;EAEA,IAAIK,MAAM,GAAGm/B,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE;EAC5B,IAAIG,IAAI,GAAG,IAAI;EACf,KAAK3/B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGuM,IAAI,CAAC/L,MAAM,EAAE,EAAER,CAAC,EAAE;IAChCkG,CAAC,GAAGqG,IAAI,CAACvM,CAAC,CAAC;IACX0a,CAAC,GAAGjb,GAAG,CAACyG,CAAC,CAAC;IACV7F,MAAM,CAAC6F,CAAC,CAAC,GAAGoC,IAAI,CAACpC,CAAC,EAAEwU,CAAC,EAAErR,IAAI,CAAC;IAC5Bs2B,IAAI,GAAGA,IAAI,IAAIt/B,MAAM,CAAC6F,CAAC,CAAC,KAAKzG,GAAG,CAACyG,CAAC,CAAC;EACrC;EAEA,IAAIs5B,KAAK,IAAI,CAACG,IAAI,EAAE;IAClBt2B,IAAI,CAACq2B,MAAM,CAACD,SAAS,CAAC,GAAGp/B,MAAM;EACjC;EAEA,OAAO,CAACs/B,IAAI,GAAGt/B,MAAM,GAAGZ,GAAG;AAC7B;AAEA,qDAAe8/B,QAAQ;;ACpDW;AACW;AAE7C,SAAS7K,KAAKA,CAAC/pB,IAAI,EAAEoD,WAAW,EAAE+f,UAAU,EAAE;EAC5C/f,WAAW,GAAGA,WAAW,IAAI,EAAE;EAE/B,IAAI+f,UAAU,EAAE;IACd,KAAK,IAAI9tB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG8tB,UAAU,CAACttB,MAAM,EAAE,EAAER,CAAC,EAAE;MAC1C4/B,SAAS,CAACj1B,IAAI,EAAEmjB,UAAU,CAAC9tB,CAAC,CAAC,CAAC;IAChC;EACF;EAEA,IAAI6/B,QAAQ,GAAGC,oBAAoB,CAAC/xB,WAAW,CAAC;EAChD,IAAIgyB,QAAQ,GAAGC,yBAAyB,CAACjyB,WAAW,CAAC;EAErD,SAASkyB,gBAAgBA,CAACC,MAAM,EAAEC,SAAS,EAAE;IAC3C,OAAOA,SAAS,GAAG97B,MAAQ,CAAC,CAAC;EAC/B;EAEA,SAAS+7B,aAAaA,CAAC1lB,CAAC,EAAE;IACxB,IAAI1a,CAAC;IACL,IAAIqE,MAAQ,CAACqW,CAAC,EAAE,QAAQ,CAAC,EAAE;MACzB,KAAK1a,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+/B,QAAQ,CAACv/B,MAAM,EAAE,EAAER,CAAC,EAAE;QACpC0a,CAAC,GAAGA,CAAC,CAAClZ,OAAO,CAACu+B,QAAQ,CAAC//B,CAAC,CAAC,EAAEigC,gBAAgB,CAAC;MAC9C;IACF;IACA,OAAOvlB,CAAC;EACV;EAEA,SAAS2lB,WAAWA,CAACn6B,CAAC,EAAEwU,CAAC,EAAE;IACzB,IAAI1a,CAAC;IACL,KAAKA,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6/B,QAAQ,CAACr/B,MAAM,EAAE,EAAER,CAAC,EAAE;MACpC,IAAI6/B,QAAQ,CAAC7/B,CAAC,CAAC,CAAC4B,IAAI,CAACsE,CAAC,CAAC,EAAE;QACvBwU,CAAC,GAAGrW,MAAQ,CAAC,CAAC;QACd;MACF;IACF;IACA,OAAOqW,CAAC;EACV;EAEA,SAAS4lB,QAAQA,CAACp6B,CAAC,EAAEwU,CAAC,EAAErR,IAAI,EAAE;IAC5B,IAAIk3B,IAAI,GAAGF,WAAW,CAACn6B,CAAC,EAAEwU,CAAC,CAAC;IAC5B,IAAI6lB,IAAI,KAAK7lB,CAAC,EAAE;MACd,IAAIrW,MAAQ,CAACqW,CAAC,EAAE,QAAQ,CAAC,IAAIrW,MAAQ,CAACqW,CAAC,EAAE,OAAO,CAAC,EAAE;QACjD,OAAO6kB,gBAAQ,CAAC7kB,CAAC,EAAE4lB,QAAQ,EAAEj3B,IAAI,CAAC;MACpC;MACA,OAAO+2B,aAAa,CAACG,IAAI,CAAC;IAC5B,CAAC,MAAM;MACL,OAAOA,IAAI;IACb;EACF;EAEA,OAAOhB,gBAAQ,CAAC50B,IAAI,EAAE21B,QAAQ,CAAC;AACjC;AAEA,SAASV,SAASA,CAACngC,GAAG,EAAE6G,IAAI,EAAE;EAC5B,IAAIiG,IAAI,GAAGjG,IAAI,CAACkG,KAAK,CAAC,GAAG,CAAC;EAC1B,IAAIoZ,IAAI,GAAGrZ,IAAI,CAAC/L,MAAM,GAAG,CAAC;EAC1B,IAAI;IACF,KAAK,IAAIR,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI4lB,IAAI,EAAE,EAAE5lB,CAAC,EAAE;MAC9B,IAAIA,CAAC,GAAG4lB,IAAI,EAAE;QACZnmB,GAAG,GAAGA,GAAG,CAAC8M,IAAI,CAACvM,CAAC,CAAC,CAAC;MACpB,CAAC,MAAM;QACLP,GAAG,CAAC8M,IAAI,CAACvM,CAAC,CAAC,CAAC,GAAGqE,MAAQ,CAAC,CAAC;MAC3B;IACF;EACF,CAAC,CAAC,OAAO5B,CAAC,EAAE;IACV;EAAA;AAEJ;AAEA,SAASq9B,oBAAoBA,CAAC/xB,WAAW,EAAE;EACzC,IAAIqT,GAAG,GAAG,EAAE;EACZ,IAAIof,GAAG;EACP,KAAK,IAAIxgC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+N,WAAW,CAACvN,MAAM,EAAE,EAAER,CAAC,EAAE;IAC3CwgC,GAAG,GAAG,gBAAgB,GAAGzyB,WAAW,CAAC/N,CAAC,CAAC,GAAG,6BAA6B;IACvEohB,GAAG,CAACjb,IAAI,CAAC,IAAIzE,MAAM,CAAC8+B,GAAG,EAAE,GAAG,CAAC,CAAC;EAChC;EACA,OAAOpf,GAAG;AACZ;AAEA,SAAS4e,yBAAyBA,CAACjyB,WAAW,EAAE;EAC9C,IAAIqT,GAAG,GAAG,EAAE;EACZ,IAAIof,GAAG;EACP,KAAK,IAAIxgC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+N,WAAW,CAACvN,MAAM,EAAE,EAAER,CAAC,EAAE;IAC3CwgC,GAAG,GAAG,eAAe,GAAGzyB,WAAW,CAAC/N,CAAC,CAAC,GAAG,4BAA4B;IACrEohB,GAAG,CAACjb,IAAI,CAAC,IAAIzE,MAAM,CAAC,GAAG,GAAG8+B,GAAG,GAAG,cAAc,EAAE,KAAK,CAAC,CAAC;EACzD;EACA,OAAOpf,GAAG;AACZ;AAEA,8CAAesT,KAAK;;;;;AC3FpB,SAAS+L,cAAcA,CAACh+B,CAAC,EAAE;EACzB,OAAO,CAACA,CAAC,CAACi+B,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,EAAEz/B,WAAW,CAAC,CAAC;AACrD;AAEA,SAAS0/B,kBAAkBA,CAACzE,OAAO,EAAEp6B,IAAI,EAAE8+B,QAAQ,EAAE;EACnD,IAAI1E,OAAO,CAAC2E,OAAO,CAAC5/B,WAAW,CAAC,CAAC,KAAKa,IAAI,CAACb,WAAW,CAAC,CAAC,EAAE;IACxD,OAAO,KAAK;EACd;EACA,IAAI,CAAC2/B,QAAQ,EAAE;IACb,OAAO,IAAI;EACb;EACA1E,OAAO,GAAGuE,cAAc,CAACvE,OAAO,CAAC;EACjC,KAAK,IAAIl8B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4gC,QAAQ,CAACpgC,MAAM,EAAER,CAAC,EAAE,EAAE;IACxC,IAAI4gC,QAAQ,CAAC5gC,CAAC,CAAC,KAAKk8B,OAAO,EAAE;MAC3B,OAAO,IAAI;IACb;EACF;EACA,OAAO,KAAK;AACd;AAEA,SAAS4E,mBAAmBA,CAAClf,GAAG,EAAEmf,GAAG,EAAE;EACrC,IAAInf,GAAG,CAACmb,MAAM,EAAE;IACd,OAAOnb,GAAG,CAACmb,MAAM;EACnB;EACA,IAAIgE,GAAG,IAAIA,GAAG,CAACC,gBAAgB,EAAE;IAC/B,OAAOD,GAAG,CAACC,gBAAgB,CAACpf,GAAG,CAACqf,OAAO,EAAErf,GAAG,CAACsf,OAAO,CAAC;EACvD;EACA,OAAO/7B,SAAS;AAClB;AAEA,SAASg8B,WAAWA,CAACC,IAAI,EAAE;EACzB,IAAIC,UAAU,GAAG,CAAC;EAClB,IAAIC,GAAG,GAAG,EAAE;EACZ,IAAIC,eAAe;EACnB,KAAK,IAAItV,MAAM,GAAG,CAAC,EAAEmV,IAAI,IAAInV,MAAM,GAAGoV,UAAU,EAAEpV,MAAM,EAAE,EAAE;IAC1DsV,eAAe,GAAGC,eAAe,CAACJ,IAAI,CAAC;IACvC,IAAIG,eAAe,CAACV,OAAO,KAAK,MAAM,EAAE;MACtC;IACF;IACAS,GAAG,CAAChhB,OAAO,CAACihB,eAAe,CAAC;IAC5BH,IAAI,GAAGA,IAAI,CAACK,UAAU;EACxB;EACA,OAAOH,GAAG;AACZ;AAEA,SAASI,oBAAoBA,CAACr1B,CAAC,EAAE;EAC/B,IAAIs1B,UAAU,GAAG,EAAE;EACnB,IAAIC,SAAS,GAAG,KAAK;IACnBC,eAAe,GAAGD,SAAS,CAACphC,MAAM;EACpC,IAAI8gC,GAAG,GAAG,EAAE;IACV92B,GAAG,GAAG,CAAC;IACPs3B,OAAO;IACPC,WAAW;EAEb,KAAK,IAAI/hC,CAAC,GAAGqM,CAAC,CAAC7L,MAAM,GAAG,CAAC,EAAER,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;IACtC8hC,OAAO,GAAGE,mBAAmB,CAAC31B,CAAC,CAACrM,CAAC,CAAC,CAAC;IACnC+hC,WAAW,GAAGv3B,GAAG,GAAG82B,GAAG,CAAC9gC,MAAM,GAAGqhC,eAAe,GAAGC,OAAO,CAACthC,MAAM;IACjE,IAAIR,CAAC,GAAGqM,CAAC,CAAC7L,MAAM,GAAG,CAAC,IAAIuhC,WAAW,IAAIJ,UAAU,GAAG,CAAC,EAAE;MACrDL,GAAG,CAAChhB,OAAO,CAAC,KAAK,CAAC;MAClB;IACF;IACAghB,GAAG,CAAChhB,OAAO,CAACwhB,OAAO,CAAC;IACpBt3B,GAAG,IAAIs3B,OAAO,CAACthC,MAAM;EACvB;EACA,OAAO8gC,GAAG,CAACl7B,IAAI,CAACw7B,SAAS,CAAC;AAC5B;AAEA,SAASK,wBAAaA,CAACb,IAAI,EAAE;EAC3B,OAAOM,oBAAoB,CAACP,WAAW,CAACC,IAAI,CAAC,CAAC;AAChD;AAEA,SAASY,mBAAmBA,CAACE,IAAI,EAAE;EACjC,IAAI,CAACA,IAAI,IAAI,CAACA,IAAI,CAACrB,OAAO,EAAE;IAC1B,OAAO,EAAE;EACX;EACA,IAAIS,GAAG,GAAG,CAACY,IAAI,CAACrB,OAAO,CAAC;EACxB,IAAIqB,IAAI,CAACC,EAAE,EAAE;IACXb,GAAG,CAACn7B,IAAI,CAAC,GAAG,GAAG+7B,IAAI,CAACC,EAAE,CAAC;EACzB;EACA,IAAID,IAAI,CAACE,OAAO,EAAE;IAChBd,GAAG,CAACn7B,IAAI,CAAC,GAAG,GAAG+7B,IAAI,CAACE,OAAO,CAACh8B,IAAI,CAAC,GAAG,CAAC,CAAC;EACxC;EACA,KAAK,IAAIpG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkiC,IAAI,CAACl2B,UAAU,CAACxL,MAAM,EAAER,CAAC,EAAE,EAAE;IAC/CshC,GAAG,CAACn7B,IAAI,CACN,GAAG,GAAG+7B,IAAI,CAACl2B,UAAU,CAAChM,CAAC,CAAC,CAACF,GAAG,GAAG,IAAI,GAAGoiC,IAAI,CAACl2B,UAAU,CAAChM,CAAC,CAAC,CAAC6B,KAAK,GAAG,IACnE,CAAC;EACH;EAEA,OAAOy/B,GAAG,CAACl7B,IAAI,CAAC,EAAE,CAAC;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASo7B,eAAeA,CAACJ,IAAI,EAAE;EAC7B,IAAI,CAACA,IAAI,IAAI,CAACA,IAAI,CAACP,OAAO,EAAE;IAC1B,OAAO,IAAI;EACb;EACA,IAAIS,GAAG,GAAG,CAAC,CAAC;IACVpU,SAAS;IACTptB,GAAG;IACHuiC,IAAI;IACJriC,CAAC;EACHshC,GAAG,CAACT,OAAO,GAAGO,IAAI,CAACP,OAAO,CAAC5/B,WAAW,CAAC,CAAC;EACxC,IAAImgC,IAAI,CAACe,EAAE,EAAE;IACXb,GAAG,CAACa,EAAE,GAAGf,IAAI,CAACe,EAAE;EAClB;EACAjV,SAAS,GAAGkU,IAAI,CAAClU,SAAS;EAC1B,IAAIA,SAAS,IAAI,OAAOA,SAAS,KAAK,QAAQ,EAAE;IAC9CoU,GAAG,CAACc,OAAO,GAAGlV,SAAS,CAAC1gB,KAAK,CAAC,KAAK,CAAC;EACtC;EACA,IAAIR,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;EACjDs1B,GAAG,CAACt1B,UAAU,GAAG,EAAE;EACnB,KAAKhM,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgM,UAAU,CAACxL,MAAM,EAAER,CAAC,EAAE,EAAE;IACtCF,GAAG,GAAGkM,UAAU,CAAChM,CAAC,CAAC;IACnBqiC,IAAI,GAAGjB,IAAI,CAACV,YAAY,CAAC5gC,GAAG,CAAC;IAC7B,IAAIuiC,IAAI,EAAE;MACRf,GAAG,CAACt1B,UAAU,CAAC7F,IAAI,CAAC;QAAErG,GAAG,EAAEA,GAAG;QAAE+B,KAAK,EAAEwgC;MAAK,CAAC,CAAC;IAChD;EACF;EACA,OAAOf,GAAG;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASgB,iBAAiBA,CAACpG,OAAO,EAAEkG,OAAO,EAAEG,SAAS,EAAE;EACtD,IAAI;IAAA,IAAAt2B,SAAA,GAAAC,oCAAA,CACgBk2B,OAAO;MAAAj2B,KAAA;IAAA;MAAzB,KAAAF,SAAA,CAAAvE,CAAA,MAAAyE,KAAA,GAAAF,SAAA,CAAA/J,CAAA,IAAAkK,IAAA,GAA2B;QAAA,IAAhBo2B,GAAG,GAAAr2B,KAAA,CAAAtK,KAAA;QACZ,IAAI,OAAO2gC,GAAG,KAAK,QAAQ,EAAE;UAC3B,IAAItG,OAAO,CAACuG,SAAS,CAACC,QAAQ,CAACF,GAAG,CAAC,EAAE;YACnC,OAAO,IAAI;UACb;QACF,CAAC,MAAM;UAAA,IAAAG,UAAA,GAAAz2B,oCAAA,CACWgwB,OAAO,CAACuG,SAAS;YAAAG,MAAA;UAAA;YAAjC,KAAAD,UAAA,CAAAj7B,CAAA,MAAAk7B,MAAA,GAAAD,UAAA,CAAAzgC,CAAA,IAAAkK,IAAA,GAAmC;cAAA,IAAxBhJ,CAAC,GAAAw/B,MAAA,CAAA/gC,KAAA;cACV,IAAI2gC,GAAG,CAAC5gC,IAAI,CAACwB,CAAC,CAAC,EAAE;gBACf,OAAO,IAAI;cACb;YACF;UAAC,SAAA8F,GAAA;YAAAy5B,UAAA,CAAAlgC,CAAA,CAAAyG,GAAA;UAAA;YAAAy5B,UAAA,CAAAxhC,CAAA;UAAA;QACH;MACF;IAAC,SAAA+H,GAAA;MAAA+C,SAAA,CAAAxJ,CAAA,CAAAyG,GAAA;IAAA;MAAA+C,SAAA,CAAA9K,CAAA;IAAA;IAAA,IAAA0hC,UAAA,GAAA32B,oCAAA,CACiBq2B,SAAS;MAAAO,MAAA;IAAA;MAA3B,KAAAD,UAAA,CAAAn7B,CAAA,MAAAo7B,MAAA,GAAAD,UAAA,CAAA3gC,CAAA,IAAAkK,IAAA,GAA6B;QAAA,IAAlB22B,GAAG,GAAAD,MAAA,CAAAjhC,KAAA;QACZ,IAAIq6B,OAAO,CAACrU,OAAO,CAACkb,GAAG,CAAC,EAAE;UACxB,OAAO,IAAI;QACb;MACF;IAAC,SAAA75B,GAAA;MAAA25B,UAAA,CAAApgC,CAAA,CAAAyG,GAAA;IAAA;MAAA25B,UAAA,CAAA1hC,CAAA;IAAA;EACH,CAAC,CAAC,OAAOsB,CAAC,EAAE;IACV;EAAA;EAEF,OAAO,KAAK;AACd;;;;;;;;;;;;;;;;;ACvKmC;AACS;AACA;AACZ;AACM;AACK;AAE3C,IAAMyV,kBAAQ,GAAG;EACfgrB,OAAO,EAAE,IAAI;EACbC,sBAAsB,EAAE,KAAK;EAC7BC,mBAAmB,EAAE,KAAK;EAC1BC,qBAAqB,EAAE,KAAK;EAC5BC,kBAAkB,EAAE,KAAK;EACzBC,qBAAqB,EAAE,KAAK;EAC5BC,qBAAqB,EAAE,KAAK;EAC5BC,mBAAmB,EAAE,KAAK;EAC1Bv1B,GAAG,EAAE,IAAI;EACTw1B,GAAG,EAAE,IAAI;EACTC,UAAU,EAAE,IAAI;EAChBC,YAAY,EAAE,IAAI;EAClBC,qBAAqB,EAAE,IAAI;EAC3BC,4BAA4B,EAAE;AAChC,CAAC;AAED,SAASC,OAAOA,CAAC1E,YAAY,EAAEv9B,IAAI,EAAE;EACnC,IAAIkiC,CAAC;EACL,OAAO3E,YAAY,CAACv9B,IAAI,CAAC,CAACtB,MAAM,EAAE;IAChCwjC,CAAC,GAAG3E,YAAY,CAACv9B,IAAI,CAAC,CAAC4R,KAAK,CAAC,CAAC;IAC9BswB,CAAC,CAAC,CAAC,CAAC,CAACA,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;EACnB;AACF;AAEA,SAASC,mBAAmBA,CAACtZ,WAAW,EAAE;EACxC,IAAI,CAACA,WAAW,IAAI,CAACA,WAAW,CAAC3e,UAAU,EAAE;IAC3C,OAAO,IAAI;EACb;EACA,IAAMsrB,KAAK,GAAG3M,WAAW,CAAC3e,UAAU;EAAC,IAAAC,SAAA,GAAAC,mCAAA,CACrBorB,KAAK;IAAAnrB,KAAA;EAAA;IAArB,KAAAF,SAAA,CAAAvE,CAAA,MAAAyE,KAAA,GAAAF,SAAA,CAAA/J,CAAA,IAAAkK,IAAA,GAAuB;MAAA,IAAZC,CAAC,GAAAF,KAAA,CAAAtK,KAAA;MACV,IAAIwK,CAAC,CAACvM,GAAG,KAAK,MAAM,EAAE;QACpB,OAAOuM,CAAC,CAACxK,KAAK;MAChB;IACF;EAAC,SAAAqH,GAAA;IAAA+C,SAAA,CAAAxJ,CAAA,CAAAyG,GAAA;EAAA;IAAA+C,SAAA,CAAA9K,CAAA;EAAA;EACD,OAAO,IAAI;AACb;AAEA,SAAS+iC,oBAAoBA,CAACn2B,WAAW,EAAE;EACzC,IAAMo2B,QAAQ,GAAG,EAAE;EAAC,IAAAtB,UAAA,GAAA32B,mCAAA,CACA6B,WAAW;IAAA+0B,MAAA;EAAA;IAA/B,KAAAD,UAAA,CAAAn7B,CAAA,MAAAo7B,MAAA,GAAAD,UAAA,CAAA3gC,CAAA,IAAAkK,IAAA,GAAiC;MAAA,IAAtBg4B,KAAK,GAAAtB,MAAA,CAAAjhC,KAAA;MACdsiC,QAAQ,CAACh+B,IAAI,CAAC,IAAIzE,MAAM,CAAC0iC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvC;EAAC,SAAAl7B,GAAA;IAAA25B,UAAA,CAAApgC,CAAA,CAAAyG,GAAA;EAAA;IAAA25B,UAAA,CAAA1hC,CAAA;EAAA;EACD,OAAO,UAAUwpB,WAAW,EAAE;IAC5B,IAAMvqB,IAAI,GAAG6jC,mBAAmB,CAACtZ,WAAW,CAAC;IAC7C,IAAI,CAACvqB,IAAI,EAAE;MACT,OAAO,KAAK;IACd;IACA,SAAA0jB,EAAA,MAAAugB,SAAA,GAAgBF,QAAQ,EAAArgB,EAAA,GAAAugB,SAAA,CAAA7jC,MAAA,EAAAsjB,EAAA,IAAE;MAArB,IAAMnhB,CAAC,GAAA0hC,SAAA,CAAAvgB,EAAA;MACV,IAAInhB,CAAC,CAACf,IAAI,CAACxB,IAAI,CAAC,EAAE;QAChB,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd,CAAC;AACH;AAAC,IAEKm0B,YAAY;EAChB,SAAAA,aAAYzuB,OAAO,EAAE2O,SAAS,EAAEkhB,OAAO,EAAE2O,OAAO,EAAEC,SAAS,EAAE;IAAAj0B,gCAAA,OAAAikB,YAAA;IAAA3gB,gCAAA,mCAk4BlC,YAAY;MACrC,IAAI,CAAC4wB,eAAe,CAAC,cAAc,CAAC;IACtC,CAAC;IAn4BC,IAAI,CAAC1+B,OAAO,GAAGA,OAAO;IACtB,IAAI2+B,cAAc,GAAG3+B,OAAO,CAAC2+B,cAAc;IAC3C,IAAI3+B,OAAO,CAACoO,OAAO,KAAK,KAAK,IAAIuwB,cAAc,KAAK,KAAK,EAAE;MACzD,IAAI,CAACA,cAAc,GAAG,CAAC,CAAC;IAC1B,CAAC,MAAM;MACL,IAAI,CAACpgC,MAAQ,CAACogC,cAAc,EAAE,QAAQ,CAAC,EAAE;QACvCA,cAAc,GAAGvsB,kBAAQ;MAC3B;MACA,IAAI,CAACusB,cAAc,GAAGpgC,SAAO,CAAC6T,kBAAQ,EAAEusB,cAAc,CAAC;IACzD;IACA,IAAI,CAACC,kBAAkB,CAAC,CAAC;IACzB,IAAI,CAACjwB,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACkhB,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACxrB,UAAU,GAAGwrB,OAAO,CAAC1G,MAAM,CAACtlB,QAAQ,CAACQ,UAAU;IACpD,IAAI,CAACm6B,OAAO,GAAGA,OAAO,IAAI,CAAC,CAAC;IAC5B,IAAI,CAACC,SAAS,GAAGA,SAAS,IAAI,CAAC,CAAC;IAChC,IAAI,CAAClF,YAAY,GAAG;MAClB6D,OAAO,EAAE,EAAE;MACXh1B,GAAG,EAAE,EAAE;MACPy1B,UAAU,EAAE,EAAE;MACdC,YAAY,EAAE;IAChB,CAAC;IACD,IAAI,CAACe,aAAa,GAAG;MACnBjB,GAAG,EAAE,EAAE;MACPE,YAAY,EAAE,EAAE;MAChBgB,qBAAqB,EAAE;IACzB,CAAC;IAED,IAAI,CAACC,SAAS,GAAG,IAAI,CAACP,OAAO,CAACn8B,QAAQ;IACtC,IAAI,CAAC28B,SAAS,GAAG,IAAI,CAACD,SAAS,IAAI,IAAI,CAACA,SAAS,CAACn8B,IAAI;EACxD;EAAC,OAAAoI,6BAAA,CAAAyjB,YAAA;IAAAz0B,GAAA;IAAA+B,KAAA,EAED,SAAA6iC,kBAAkBA,CAAA,EAAG;MAAA,IAAAK,qBAAA,EAAAC,eAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA;MACnB,IAAM1/B,OAAO,GAAG,IAAI,CAACA,OAAO;MAC5B,IAAI,CAAC2/B,oBAAoB,GAAG,CAAC,GAAAV,qBAAA,GAC3Bj/B,OAAO,CAAC2/B,oBAAoB,cAAAV,qBAAA,cAAAA,qBAAA,IAAAC,eAAA,GAAIl/B,OAAO,CAACuK,MAAM,cAAA20B,eAAA,uBAAdA,eAAA,CAAgBzS,aAAa,CAC9D;MACD,IAAI,CAACmT,iBAAiB,GAAG5/B,OAAO,CAAC4/B,iBAAiB;MAClD,IAAI,CAACxB,oBAAoB,GAAGA,oBAAoB,CAACp+B,OAAO,CAACiI,WAAW,CAAC;MACrE,IAAI,CAAC43B,WAAW,IAAAV,gBAAA,GAAGn/B,OAAO,CAACuK,MAAM,cAAA40B,gBAAA,uBAAdA,gBAAA,CAAgBU,WAAW;MAC9C,IAAI,CAAC/T,gBAAgB,GAAG,EAAAsT,gBAAA,GAAAp/B,OAAO,CAACuK,MAAM,cAAA60B,gBAAA,uBAAdA,gBAAA,CAAgBtT,gBAAgB,KAAI,CAAC,CAAC;MAC9D,IAAI,CAACgU,YAAY,GAAG,EAAAT,gBAAA,GAClBr/B,OAAO,CAACuK,MAAM,cAAA80B,gBAAA,uBAAdA,gBAAA,CAAgB3S,UAAU,GAAA4S,gBAAA,GAC1Bt/B,OAAO,CAACuK,MAAM,cAAA+0B,gBAAA,uBAAdA,gBAAA,CAAgB1S,WAAW,GAAA2S,gBAAA,GAC3Bv/B,OAAO,CAACuK,MAAM,cAAAg1B,gBAAA,uBAAdA,gBAAA,CAAgB5S,aAAa,CAC9B,CAACvL,MAAM,CAAC2e,OAAO,CAAC;MACjB,IAAI,CAACC,cAAc,GAAG,EAAAR,gBAAA,GACpBx/B,OAAO,CAACuK,MAAM,cAAAi1B,gBAAA,uBAAdA,gBAAA,CAAgBS,aAAa,GAAAR,gBAAA,GAC7Bz/B,OAAO,CAACuK,MAAM,cAAAk1B,gBAAA,uBAAdA,gBAAA,CAAgBS,cAAc,GAAAR,gBAAA,GAC9B1/B,OAAO,CAACuK,MAAM,cAAAm1B,gBAAA,uBAAdA,gBAAA,CAAgBS,gBAAgB,CACjC,CAAC/e,MAAM,CAAC2e,OAAO,CAAC;IACnB;EAAC;IAAA/lC,GAAA;IAAA+B,KAAA,EAED,SAAAkP,SAASA,CAACjL,OAAO,EAAE;MACjB,IAAI,CAACA,OAAO,GAAGzB,SAAO,CAAC,IAAI,CAACyB,OAAO,EAAEA,OAAO,CAAC;MAC7C,IAAI2+B,cAAc,GAAG3+B,OAAO,CAAC2+B,cAAc;MAC3C,IAAMyB,WAAW,GAAG7hC,SAAO,CAAC,IAAI,CAACogC,cAAc,CAAC;MAChD,IAAI3+B,OAAO,CAACoO,OAAO,KAAK,KAAK,IAAIuwB,cAAc,KAAK,KAAK,EAAE;QACzD,IAAI,CAACA,cAAc,GAAG,CAAC,CAAC;MAC1B,CAAC,MAAM;QACL,IAAI,CAACpgC,MAAQ,CAACogC,cAAc,EAAE,QAAQ,CAAC,EAAE;UACvCA,cAAc,GAAGvsB,kBAAQ;QAC3B;QACA,IAAI,CAACusB,cAAc,GAAGpgC,SAAO,CAAC6T,kBAAQ,EAAEusB,cAAc,CAAC;MACzD;MACA,IAAI,CAACC,kBAAkB,CAAC,CAAC;MACzB,IAAI,CAACjP,UAAU,CAACyQ,WAAW,CAAC;IAC9B;;IAEA;EAAA;IAAApmC,GAAA;IAAA+B,KAAA,EACA,SAAA4zB,UAAUA,CAACyQ,WAAW,EAAE;MACtB,IAAI,IAAI,CAACzB,cAAc,CAACvB,OAAO,IAAI,EAAEgD,WAAW,IAAIA,WAAW,CAAChD,OAAO,CAAC,EAAE;QACxE,IAAI,CAACiD,iBAAiB,CAAC,CAAC;MAC1B,CAAC,MAAM,IACL,CAAC,IAAI,CAAC1B,cAAc,CAACvB,OAAO,IAC5BgD,WAAW,IACXA,WAAW,CAAChD,OAAO,EACnB;QACA,IAAI,CAACkD,mBAAmB,CAAC,CAAC;MAC5B;MAEA,IAAI,IAAI,CAAC3B,cAAc,CAACv2B,GAAG,IAAI,EAAEg4B,WAAW,IAAIA,WAAW,CAACh4B,GAAG,CAAC,EAAE;QAChE,IAAI,CAACm4B,iBAAiB,CAAC,CAAC;MAC1B,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC5B,cAAc,CAACv2B,GAAG,IAAIg4B,WAAW,IAAIA,WAAW,CAACh4B,GAAG,EAAE;QACrE,IAAI,CAACo4B,mBAAmB,CAAC,CAAC;MAC5B;MAEA,IAAI,IAAI,CAAC7B,cAAc,CAACf,GAAG,IAAI,EAAEwC,WAAW,IAAIA,WAAW,CAACxC,GAAG,CAAC,EAAE;QAChE,IAAI,CAAC6C,aAAa,CAAC,CAAC;MACtB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC9B,cAAc,CAACf,GAAG,IAAIwC,WAAW,IAAIA,WAAW,CAACxC,GAAG,EAAE;QACrE,IAAI,CAAC8C,eAAe,CAAC,CAAC;MACxB;MAEA,IACE,IAAI,CAAC/B,cAAc,CAACd,UAAU,IAC9B,EAAEuC,WAAW,IAAIA,WAAW,CAACvC,UAAU,CAAC,EACxC;QACA,IAAI,CAAC8C,oBAAoB,CAAC,CAAC;MAC7B,CAAC,MAAM,IACL,CAAC,IAAI,CAAChC,cAAc,CAACd,UAAU,IAC/BuC,WAAW,IACXA,WAAW,CAACvC,UAAU,EACtB;QACA,IAAI,CAAC+C,sBAAsB,CAAC,CAAC;MAC/B;MAEA,IACE,IAAI,CAACjC,cAAc,CAACb,YAAY,IAChC,EAAEsC,WAAW,IAAIA,WAAW,CAACtC,YAAY,CAAC,EAC1C;QACA,IAAI,CAAC+C,sBAAsB,CAAC,CAAC;MAC/B,CAAC,MAAM,IACL,CAAC,IAAI,CAAClC,cAAc,CAACb,YAAY,IACjCsC,WAAW,IACXA,WAAW,CAACtC,YAAY,EACxB;QACA,IAAI,CAACgD,wBAAwB,CAAC,CAAC;MACjC;MAEA,IACE,IAAI,CAACnC,cAAc,CAACZ,qBAAqB,IACzC,EAAEqC,WAAW,IAAIA,WAAW,CAACrC,qBAAqB,CAAC,EACnD;QACA,IAAI,CAACgD,+BAA+B,CAAC,CAAC;MACxC,CAAC,MAAM,IACL,CAAC,IAAI,CAACpC,cAAc,CAACZ,qBAAqB,IAC1CqC,WAAW,IACXA,WAAW,CAACrC,qBAAqB,EACjC;QACA,IAAI,CAACiD,iCAAiC,CAAC,CAAC;MAC1C;IACF;EAAC;IAAAhnC,GAAA;IAAA+B,KAAA,EAED,SAAAukC,mBAAmBA,CAAA,EAAG;MACpBrC,OAAO,CAAC,IAAI,CAAC1E,YAAY,EAAE,SAAS,CAAC;IACvC;EAAC;IAAAv/B,GAAA;IAAA+B,KAAA,EAED,SAAAskC,iBAAiBA,CAAA,EAAG;MAClB,IAAMxtB,IAAI,GAAG,IAAI;MAEjB,SAASouB,QAAQA,CAAC/P,IAAI,EAAEgQ,GAAG,EAAE;QAC3B,IAAIhQ,IAAI,IAAIgQ,GAAG,IAAI3iC,UAAY,CAAC2iC,GAAG,CAAChQ,IAAI,CAAC,CAAC,EAAE;UAC1Cx1B,eAAO,CAACwlC,GAAG,EAAEhQ,IAAI,EAAE,UAAUsI,IAAI,EAAE;YACjC,OAAO3mB,IAAI,CAACgd,OAAO,CAAC1b,IAAI,CAACqlB,IAAI,CAAC;UAChC,CAAC,CAAC;QACJ;MACF;MAEA,IAAI,gBAAgB,IAAI,IAAI,CAACgF,OAAO,EAAE;QACpC,IAAM2C,IAAI,GAAG,IAAI,CAAC3C,OAAO,CAACxrB,cAAc,CAAC1Z,SAAS;QAClDoC,eAAO,CACLylC,IAAI,EACJ,MAAM,EACN,UAAU3H,IAAI,EAAE;UACd,OAAO,UAAUtmB,MAAM,EAAEhV,GAAG,EAAE;YAC5B,IAAMkjC,WAAW,GAAGC,YAAY,CAACnjC,GAAG,CAAC;YACrC,IAAIK,MAAQ,CAACL,GAAG,EAAE,QAAQ,CAAC,IAAIkjC,WAAW,EAAE;cAC1CljC,GAAG,GAAGkjC,WAAW,GAAGljC,GAAG,CAACzE,QAAQ,CAAC,CAAC,GAAGyE,GAAG;cACxC,IAAI,IAAI,CAACojC,aAAa,EAAE;gBACtB,IAAI,CAACA,aAAa,CAACpuB,MAAM,GAAGA,MAAM;gBAClC,IAAI,CAACouB,aAAa,CAACpjC,GAAG,GAAGA,GAAG;gBAC5B,IAAI,CAACojC,aAAa,CAACzL,WAAW,GAAG,IAAI;gBACrC,IAAI,CAACyL,aAAa,CAACpL,aAAa,GAAG33B,WAAK,CAAC,CAAC;gBAC1C,IAAI,CAAC+iC,aAAa,CAACvL,WAAW,GAAG,IAAI;cACvC,CAAC,MAAM;gBACL,IAAI,CAACuL,aAAa,GAAG;kBACnBpuB,MAAM,EAAEA,MAAM;kBACdhV,GAAG,EAAEA,GAAG;kBACR23B,WAAW,EAAE,IAAI;kBACjBK,aAAa,EAAE33B,WAAK,CAAC,CAAC;kBACtBw3B,WAAW,EAAE;gBACf,CAAC;cACH;YACF;YACA,OAAOyD,IAAI,CAACzhB,KAAK,CAAC,IAAI,EAAEpd,SAAS,CAAC;UACpC,CAAC;QACH,CAAC,EACD,IAAI,CAAC4+B,YAAY,EACjB,SACF,CAAC;QAED79B,eAAO,CACLylC,IAAI,EACJ,kBAAkB,EAClB,UAAU3H,IAAI,EAAE;UACd,OAAO,UAAUN,MAAM,EAAEn9B,KAAK,EAAE;YAC9B;YACA,IAAI,CAAC,IAAI,CAACulC,aAAa,EAAE;cACvB,IAAI,CAACA,aAAa,GAAG,CAAC,CAAC;YACzB;YACA,IAAI/iC,MAAQ,CAAC26B,MAAM,EAAE,QAAQ,CAAC,IAAI36B,MAAQ,CAACxC,KAAK,EAAE,QAAQ,CAAC,EAAE;cAC3D,IAAI8W,IAAI,CAAC8rB,cAAc,CAACpB,qBAAqB,EAAE;gBAC7C,IAAI,CAAC,IAAI,CAAC+D,aAAa,CAACrL,eAAe,EAAE;kBACvC,IAAI,CAACqL,aAAa,CAACrL,eAAe,GAAG,CAAC,CAAC;gBACzC;gBACA,IAAI,CAACqL,aAAa,CAACrL,eAAe,CAACiD,MAAM,CAAC,GAAGn9B,KAAK;cACpD;cACA;cACA,IAAIm9B,MAAM,CAAC/9B,WAAW,CAAC,CAAC,KAAK,cAAc,EAAE;gBAC3C,IAAI,CAACmmC,aAAa,CAACC,oBAAoB,GAAGxlC,KAAK;cACjD;YACF;YACA,OAAOy9B,IAAI,CAACzhB,KAAK,CAAC,IAAI,EAAEpd,SAAS,CAAC;UACpC,CAAC;QACH,CAAC,EACD,IAAI,CAAC4+B,YAAY,EACjB,SACF,CAAC;QAED79B,eAAO,CACLylC,IAAI,EACJ,MAAM,EACN,UAAU3H,IAAI,EAAE;UACd,OAAO,UAAU30B,IAAI,EAAE;YACrB,IAAMq8B,GAAG,GAAG,IAAI;YAEhB,SAASM,yBAAyBA,CAAA,EAAG;cACnC,IAAIN,GAAG,CAACI,aAAa,EAAE;gBACrB,IAAIJ,GAAG,CAACI,aAAa,CAACzL,WAAW,KAAK,IAAI,EAAE;kBAC1CqL,GAAG,CAACI,aAAa,CAACzL,WAAW,GAAG,CAAC;kBACjC,IAAIhjB,IAAI,CAAC8rB,cAAc,CAACnB,kBAAkB,EAAE;oBAC1C0D,GAAG,CAACI,aAAa,CAACp9B,OAAO,GAAGW,IAAI;kBAClC;kBACAq8B,GAAG,CAACO,eAAe,GAAG5uB,IAAI,CAAC2iB,cAAc,CACvC0L,GAAG,CAACI,aAAa,EACjB,KAAK,EACLjiC,SACF,CAAC;gBACH;gBACA,IAAI6hC,GAAG,CAAC9jB,UAAU,GAAG,CAAC,EAAE;kBACtB8jB,GAAG,CAACI,aAAa,CAACpL,aAAa,GAAG33B,WAAK,CAAC,CAAC;gBAC3C;gBACA,IAAI2iC,GAAG,CAAC9jB,UAAU,GAAG,CAAC,EAAE;kBACtB,IAAM2Y,WAAW,GAAGx3B,WAAK,CAAC,CAAC;kBAC3B2iC,GAAG,CAACI,aAAa,CAACvL,WAAW,GAAGA,WAAW;kBAE3C,IAAIzpB,QAAO,GAAG,IAAI;kBAClB40B,GAAG,CAACI,aAAa,CAACI,qBAAqB,GACrCR,GAAG,CAAC1jB,iBAAiB,CAAC,cAAc,CAAC;kBACvC,IAAI3K,IAAI,CAAC8rB,cAAc,CAACtB,sBAAsB,EAAE;oBAC9C,IAAMsE,aAAa,GACjB9uB,IAAI,CAAC8rB,cAAc,CAACtB,sBAAsB;oBAC5C/wB,QAAO,GAAG,CAAC,CAAC;oBACZ,IAAI;sBACF,IAAI4sB,MAAM;sBACV,IAAIyI,aAAa,KAAK,IAAI,EAAE;wBAC1B,IAAMC,UAAU,GAAGV,GAAG,CAACW,qBAAqB,CAAC,CAAC;wBAC9C,IAAID,UAAU,EAAE;0BACd,IAAMj8B,GAAG,GAAGi8B,UAAU,CAACE,IAAI,CAAC,CAAC,CAACp7B,KAAK,CAAC,SAAS,CAAC;0BAC9C,IAAIY,KAAK,EAAEvL,KAAK;0BAAC,IAAA8gC,UAAA,GAAAz2B,mCAAA,CACDT,GAAG;4BAAAm3B,MAAA;0BAAA;4BAAnB,KAAAD,UAAA,CAAAj7B,CAAA,MAAAk7B,MAAA,GAAAD,UAAA,CAAAzgC,CAAA,IAAAkK,IAAA,GAAqB;8BAAA,IAAV3F,CAAC,GAAAm8B,MAAA,CAAA/gC,KAAA;8BACVuL,KAAK,GAAG3G,CAAC,CAAC+F,KAAK,CAAC,IAAI,CAAC;8BACrBwyB,MAAM,GAAG5xB,KAAK,CAACsG,KAAK,CAAC,CAAC;8BACtB7R,KAAK,GAAGuL,KAAK,CAAChH,IAAI,CAAC,IAAI,CAAC;8BACxBgM,QAAO,CAAC4sB,MAAM,CAAC,GAAGn9B,KAAK;4BACzB;0BAAC,SAAAqH,GAAA;4BAAAy5B,UAAA,CAAAlgC,CAAA,CAAAyG,GAAA;0BAAA;4BAAAy5B,UAAA,CAAAxhC,CAAA;0BAAA;wBACH;sBACF,CAAC,MAAM;wBAAA,IAAA0mC,UAAA,GAAA37B,mCAAA,CACWu7B,aAAa;0BAAAK,MAAA;wBAAA;0BAA7B,KAAAD,UAAA,CAAAngC,CAAA,MAAAogC,MAAA,GAAAD,UAAA,CAAA3lC,CAAA,IAAAkK,IAAA,GAA+B;4BAAA,IAApB3F,EAAC,GAAAqhC,MAAA,CAAAjmC,KAAA;4BACVuQ,QAAO,CAAC3L,EAAC,CAAC,GAAGugC,GAAG,CAAC1jB,iBAAiB,CAAC7c,EAAC,CAAC;0BACvC;wBAAC,SAAAyC,GAAA;0BAAA2+B,UAAA,CAAAplC,CAAA,CAAAyG,GAAA;wBAAA;0BAAA2+B,UAAA,CAAA1mC,CAAA;wBAAA;sBACH;oBACF,CAAC,CAAC,OAAOsB,CAAC,EAAE;sBACV;AACtB;oBADsB;kBAGJ;kBACA,IAAIoN,IAAI,GAAG,IAAI;kBACf,IAAI8I,IAAI,CAAC8rB,cAAc,CAACrB,mBAAmB,EAAE;oBAC3C,IAAI;sBACFvzB,IAAI,GAAGm3B,GAAG,CAAC5jB,YAAY;oBACzB,CAAC,CAAC,OAAO3gB,CAAC,EAAE;sBACV;oBAAA;kBAEJ;kBACA,IAAI+f,QAAQ,GAAG,IAAI;kBACnB,IAAI3S,IAAI,IAAIuC,QAAO,EAAE;oBACnBoQ,QAAQ,GAAG,CAAC,CAAC;oBACb,IAAI3S,IAAI,EAAE;sBACR,IACE8I,IAAI,CAACovB,iBAAiB,CACpBf,GAAG,CAACI,aAAa,CAACI,qBACpB,CAAC,EACD;wBACAhlB,QAAQ,CAAC3S,IAAI,GAAG8I,IAAI,CAACqvB,SAAS,CAACn4B,IAAI,CAAC;sBACtC,CAAC,MAAM;wBACL2S,QAAQ,CAAC3S,IAAI,GAAGA,IAAI;sBACtB;oBACF;oBACA,IAAIuC,QAAO,EAAE;sBACXoQ,QAAQ,CAACpQ,OAAO,GAAGA,QAAO;oBAC5B;kBACF;kBACA,IAAIoQ,QAAQ,EAAE;oBACZwkB,GAAG,CAACI,aAAa,CAAC5kB,QAAQ,GAAGA,QAAQ;kBACvC;kBACA,IAAI;oBACF,IAAIjb,IAAI,GAAGy/B,GAAG,CAACxjB,MAAM;oBACrBjc,IAAI,GAAGA,IAAI,KAAK,IAAI,GAAG,GAAG,GAAGA,IAAI;oBACjCy/B,GAAG,CAACI,aAAa,CAACzL,WAAW,GAAGp0B,IAAI;oBACpCoR,IAAI,CAACsvB,sBAAsB,CACzBjB,GAAG,CAACO,eAAe,EACnB1L,WAAW,EACXt0B,IACF,CAAC;oBACDy/B,GAAG,CAACO,eAAe,CAACx8B,KAAK,GACvB4N,IAAI,CAAClE,SAAS,CAACinB,eAAe,CAACn0B,IAAI,CAAC;oBACtCoR,IAAI,CAACuvB,iBAAiB,CAAClB,GAAG,CAACI,aAAa,CAAC;kBAC3C,CAAC,CAAC,OAAO3kC,CAAC,EAAE;oBACV;kBAAA;gBAEJ;cACF;YACF;YAEAskC,QAAQ,CAAC,QAAQ,EAAEC,GAAG,CAAC;YACvBD,QAAQ,CAAC,SAAS,EAAEC,GAAG,CAAC;YACxBD,QAAQ,CAAC,YAAY,EAAEC,GAAG,CAAC;YAE3B,IACE,oBAAoB,IAAIA,GAAG,IAC3B3iC,UAAY,CAAC2iC,GAAG,CAAC/jB,kBAAkB,CAAC,EACpC;cACAzhB,eAAO,CAACwlC,GAAG,EAAE,oBAAoB,EAAE,UAAU1H,IAAI,EAAE;gBACjD,OAAO3mB,IAAI,CAACgd,OAAO,CAAC1b,IAAI,CACtBqlB,IAAI,EACJn6B,SAAS,EACTmiC,yBACF,CAAC;cACH,CAAC,CAAC;YACJ,CAAC,MAAM;cACLN,GAAG,CAAC/jB,kBAAkB,GAAGqkB,yBAAyB;YACpD;YACA,IAAIN,GAAG,CAACI,aAAa,IAAIzuB,IAAI,CAACwvB,eAAe,CAAC,CAAC,EAAE;cAC/CnB,GAAG,CAACI,aAAa,CAACr+B,KAAK,GAAG,IAAIhI,KAAK,CAAC,CAAC,CAACgI,KAAK;YAC7C;YACA,OAAOu2B,IAAI,CAACzhB,KAAK,CAAC,IAAI,EAAEpd,SAAS,CAAC;UACpC,CAAC;QACH,CAAC,EACD,IAAI,CAAC4+B,YAAY,EACjB,SACF,CAAC;MACH;MAEA,IAAI,OAAO,IAAI,IAAI,CAACiF,OAAO,EAAE;QAC3B9iC,eAAO,CACL,IAAI,CAAC8iC,OAAO,EACZ,OAAO,EACP,UAAUhF,IAAI,EAAE;UACd,OAAO,UAAUve,EAAE,EAAEngB,CAAC,EAAE;YACtB,IAAM8I,IAAI,GAAAiW,KAAA,CAAAvgB,SAAA,CAAAoK,KAAA,CAAA9J,IAAA,CAAOe,SAAS,CAAC;YAC3B,IAAMkN,KAAK,GAAGjE,IAAI,CAAC,CAAC,CAAC;YACrB,IAAIsP,MAAM,GAAG,KAAK;YAClB,IAAIhV,GAAG;YACP,IAAMkjC,WAAW,GAAGC,YAAY,CAACx5B,KAAK,CAAC;YACvC,IAAItJ,MAAQ,CAACsJ,KAAK,EAAE,QAAQ,CAAC,IAAIu5B,WAAW,EAAE;cAC5CljC,GAAG,GAAGkjC,WAAW,GAAGv5B,KAAK,CAACpO,QAAQ,CAAC,CAAC,GAAGoO,KAAK;YAC9C,CAAC,MAAM,IAAIA,KAAK,EAAE;cAChB3J,GAAG,GAAG2J,KAAK,CAAC3J,GAAG;cACf,IAAI2J,KAAK,CAACqL,MAAM,EAAE;gBAChBA,MAAM,GAAGrL,KAAK,CAACqL,MAAM;cACvB;YACF;YACA,IAAItP,IAAI,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,CAACsP,MAAM,EAAE;cAC7BA,MAAM,GAAGtP,IAAI,CAAC,CAAC,CAAC,CAACsP,MAAM;YACzB;YACA,IAAMpN,QAAQ,GAAG;cACfoN,MAAM,EAAEA,MAAM;cACdhV,GAAG,EAAEA,GAAG;cACR23B,WAAW,EAAE,IAAI;cACjBK,aAAa,EAAE33B,WAAK,CAAC,CAAC;cACtBw3B,WAAW,EAAE;YACf,CAAC;YACD,IAAInyB,IAAI,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,CAAC0I,OAAO,EAAE;cAC9B;cACA;cACA,IAAMg2B,UAAU,GAAGh2B,eAAO,CAAC1I,IAAI,CAAC,CAAC,CAAC,CAAC0I,OAAO,CAAC;cAE3CxG,QAAQ,CAACy7B,oBAAoB,GAAGe,UAAU,CAAC97B,GAAG,CAAC,cAAc,CAAC;cAE9D,IAAIqM,IAAI,CAAC8rB,cAAc,CAACpB,qBAAqB,EAAE;gBAC7Cz3B,QAAQ,CAACmwB,eAAe,GAAGpjB,IAAI,CAAC0vB,YAAY,CAC1CD,UAAU,EACVzvB,IAAI,CAAC8rB,cAAc,CAACpB,qBACtB,CAAC;cACH;YACF;YAEA,IAAI1qB,IAAI,CAAC8rB,cAAc,CAACnB,kBAAkB,EAAE;cAC1C,IAAI55B,IAAI,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,CAACmG,IAAI,EAAE;gBAC3BjE,QAAQ,CAAC5B,OAAO,GAAGN,IAAI,CAAC,CAAC,CAAC,CAACmG,IAAI;cACjC,CAAC,MAAM,IACLnG,IAAI,CAAC,CAAC,CAAC,IACP,CAACrF,MAAQ,CAACqF,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAC5BA,IAAI,CAAC,CAAC,CAAC,CAACmG,IAAI,EACZ;gBACAjE,QAAQ,CAAC5B,OAAO,GAAGN,IAAI,CAAC,CAAC,CAAC,CAACmG,IAAI;cACjC;YACF;YACA,IAAMy4B,cAAc,GAAG3vB,IAAI,CAAC2iB,cAAc,CACxC1vB,QAAQ,EACR,OAAO,EACPzG,SACF,CAAC;YACD,IAAIwT,IAAI,CAACwvB,eAAe,CAAC,CAAC,EAAE;cAC1Bv8B,QAAQ,CAAC7C,KAAK,GAAG,IAAIhI,KAAK,CAAC,CAAC,CAACgI,KAAK;YACpC;;YAEA;YACA;YACA,OAAOu2B,IAAI,CAACzhB,KAAK,CAAC,IAAI,EAAEnU,IAAI,CAAC,CAAC9G,IAAI,CAAC,UAAUuG,IAAI,EAAE;cACjD,IAAM0yB,WAAW,GAAGx3B,WAAK,CAAC,CAAC;cAC3BuH,QAAQ,CAACiwB,WAAW,GAAGA,WAAW;cAClCjwB,QAAQ,CAAC+vB,WAAW,GAAGxyB,IAAI,CAACqa,MAAM;cAClC7K,IAAI,CAACsvB,sBAAsB,CACzBK,cAAc,EACdzM,WAAW,EACX1yB,IAAI,CAACqa,MACP,CAAC;cAED5X,QAAQ,CAAC47B,qBAAqB,GAAGr+B,IAAI,CAACiJ,OAAO,CAAC9F,GAAG,CAAC,cAAc,CAAC;cACjE,IAAI8F,OAAO,GAAG,IAAI;cAClB,IAAIuG,IAAI,CAAC8rB,cAAc,CAACtB,sBAAsB,EAAE;gBAC9C/wB,OAAO,GAAGuG,IAAI,CAAC0vB,YAAY,CACzBl/B,IAAI,CAACiJ,OAAO,EACZuG,IAAI,CAAC8rB,cAAc,CAACtB,sBACtB,CAAC;cACH;cACA,IAAItzB,IAAI,GAAG,IAAI;cACf,IAAI8I,IAAI,CAAC8rB,cAAc,CAACrB,mBAAmB,EAAE;gBAC3C,IAAI,OAAOj6B,IAAI,CAAC4oB,IAAI,KAAK,UAAU,EAAE;kBACnC;kBACA;kBACA;kBACAliB,IAAI,GAAG1G,IAAI,CAAChJ,KAAK,CAAC,CAAC,CAAC4xB,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC9B;cACF;cACA,IAAI3f,OAAO,IAAIvC,IAAI,EAAE;gBACnBjE,QAAQ,CAAC4W,QAAQ,GAAG,CAAC,CAAC;gBACtB,IAAI3S,IAAI,EAAE;kBACR;kBACA,IAAI,OAAOA,IAAI,CAACjN,IAAI,KAAK,UAAU,EAAE;oBACnCiN,IAAI,CAACjN,IAAI,CAAC,UAAUmvB,IAAI,EAAE;sBACxB,IACEA,IAAI,IACJpZ,IAAI,CAACovB,iBAAiB,CAACn8B,QAAQ,CAAC47B,qBAAqB,CAAC,EACtD;wBACA57B,QAAQ,CAAC4W,QAAQ,CAAC3S,IAAI,GAAG8I,IAAI,CAACqvB,SAAS,CAACjW,IAAI,CAAC;sBAC/C,CAAC,MAAM;wBACLnmB,QAAQ,CAAC4W,QAAQ,CAAC3S,IAAI,GAAGkiB,IAAI;sBAC/B;oBACF,CAAC,CAAC;kBACJ,CAAC,MAAM;oBACLnmB,QAAQ,CAAC4W,QAAQ,CAAC3S,IAAI,GAAGA,IAAI;kBAC/B;gBACF;gBACA,IAAIuC,OAAO,EAAE;kBACXxG,QAAQ,CAAC4W,QAAQ,CAACpQ,OAAO,GAAGA,OAAO;gBACrC;cACF;cACAuG,IAAI,CAACuvB,iBAAiB,CAACt8B,QAAQ,CAAC;cAChC,OAAOzC,IAAI;YACb,CAAC,CAAC;UACJ,CAAC;QACH,CAAC,EACD,IAAI,CAACk2B,YAAY,EACjB,SACF,CAAC;MACH;IACF;EAAC;IAAAv/B,GAAA;IAAA+B,KAAA,EAED,SAAAy5B,cAAcA,CAAC1vB,QAAQ,EAAE2vB,OAAO,EAAET,WAAW,EAAE;MAC7C,IACElvB,QAAQ,CAAC5B,OAAO,IAChB,IAAI,CAAC+9B,iBAAiB,CAACn8B,QAAQ,CAACy7B,oBAAoB,CAAC,EACrD;QACAz7B,QAAQ,CAAC5B,OAAO,GAAG,IAAI,CAACg+B,SAAS,CAACp8B,QAAQ,CAAC5B,OAAO,CAAC;MACrD;MACA,OAAO,IAAI,CAACyK,SAAS,CAAC6mB,cAAc,CAAC1vB,QAAQ,EAAE2vB,OAAO,EAAET,WAAW,CAAC;IACtE;EAAC;IAAAh7B,GAAA;IAAA+B,KAAA,EAED,SAAAkmC,iBAAiBA,CAACQ,WAAW,EAAE;MAC7B,OAAOA,WAAW,IAChBlkC,MAAQ,CAACkkC,WAAW,EAAE,QAAQ,CAAC,IAC/BA,WAAW,CAACtnC,WAAW,CAAC,CAAC,CAACsI,QAAQ,CAAC,MAAM,CAAC,GACxC,IAAI,GACJ,KAAK;IACX;EAAC;IAAAzJ,GAAA;IAAA+B,KAAA,EAED,SAAAomC,sBAAsBA,CAACp8B,KAAK,EAAE28B,SAAS,EAAE1M,UAAU,EAAE;MACnD,IAAIjwB,KAAK,CAAC4uB,cAAc,EAAE;QACxB5uB,KAAK,CAAC4uB,cAAc,CAAC,uBAAuB,CAAC,GAAG,CAC9C+N,SAAS,GAAG,GAAG,EACfjpC,QAAQ,CAAC,CAAC;QACZsM,KAAK,CAAC4uB,cAAc,CAACqB,UAAU,GAAGA,UAAU;MAC9C;IACF;EAAC;IAAAh8B,GAAA;IAAA+B,KAAA,EAED,SAAAmmC,SAASA,CAACnlB,IAAI,EAAE;MACd,OAAO5b,IAAI,CAACF,SAAS,CAAC2tB,SAAK,CAACztB,IAAI,CAACU,KAAK,CAACkb,IAAI,CAAC,EAAE,IAAI,CAAC/c,OAAO,CAACiI,WAAW,CAAC,CAAC;IAC1E;EAAC;IAAAjO,GAAA;IAAA+B,KAAA,EAED,SAAAwmC,YAAYA,CAACI,SAAS,EAAEhB,aAAa,EAAE;MACrC,IAAMiB,UAAU,GAAG,CAAC,CAAC;MACrB,IAAI;QACF,IAAIjB,aAAa,KAAK,IAAI,EAAE;UAC1B,IAAI,OAAOgB,SAAS,CAACzkB,OAAO,KAAK,UAAU,EAAE;YAC3C;YACA,IAAM0jB,UAAU,GAAGe,SAAS,CAACzkB,OAAO,CAAC,CAAC;YACtC,IAAI2kB,aAAa,GAAGjB,UAAU,CAAC5rB,IAAI,CAAC,CAAC;YACrC,OAAO,CAAC6sB,aAAa,CAACv8B,IAAI,EAAE;cAC1Bs8B,UAAU,CAACC,aAAa,CAAC9mC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG8mC,aAAa,CAAC9mC,KAAK,CAAC,CAAC,CAAC;cAC3D8mC,aAAa,GAAGjB,UAAU,CAAC5rB,IAAI,CAAC,CAAC;YACnC;UACF;QACF,CAAC,MAAM;UAAA,IAAA8sB,UAAA,GAAA18B,mCAAA,CACWu7B,aAAa;YAAAoB,MAAA;UAAA;YAA7B,KAAAD,UAAA,CAAAlhC,CAAA,MAAAmhC,MAAA,GAAAD,UAAA,CAAA1mC,CAAA,IAAAkK,IAAA,GAA+B;cAAA,IAApB3F,CAAC,GAAAoiC,MAAA,CAAAhnC,KAAA;cACV6mC,UAAU,CAACjiC,CAAC,CAAC,GAAGgiC,SAAS,CAACn8B,GAAG,CAAC7F,CAAC,CAAC;YAClC;UAAC,SAAAyC,GAAA;YAAA0/B,UAAA,CAAAnmC,CAAA,CAAAyG,GAAA;UAAA;YAAA0/B,UAAA,CAAAznC,CAAA;UAAA;QACH;MACF,CAAC,CAAC,OAAOsB,CAAC,EAAE;QACV;MAAA;MAEF,OAAOimC,UAAU;IACnB;EAAC;IAAA5oC,GAAA;IAAA+B,KAAA,EAED,SAAAsmC,eAAeA,CAAA,EAAG;MAChB,OACE,IAAI,CAAC1D,cAAc,CAAClB,qBAAqB,IACzC,IAAI,CAACkB,cAAc,CAACjB,qBAAqB,IACzC,IAAI,CAACiB,cAAc,CAAChB,mBAAmB;IAE3C;EAAC;IAAA3jC,GAAA;IAAA+B,KAAA,EAED,SAAAqmC,iBAAiBA,CAACt8B,QAAQ,EAAE;MAC1B,IAAM4X,MAAM,GAAG5X,QAAQ,CAAC+vB,WAAW;MAEnC,IACGnY,MAAM,IAAI,GAAG,IAAI,IAAI,CAACihB,cAAc,CAAClB,qBAAqB,IAC1D/f,MAAM,IAAI,GAAG,IAAI,IAAI,CAACihB,cAAc,CAACjB,qBAAsB,IAC3DhgB,MAAM,KAAK,CAAC,IAAI,IAAI,CAACihB,cAAc,CAAChB,mBAAoB,EACzD;QACA,IAAM5/B,KAAK,GAAG,IAAI9C,KAAK,CAAC,kCAAkC,GAAGyiB,MAAM,CAAC;QACpE3f,KAAK,CAACkF,KAAK,GAAG6C,QAAQ,CAAC7C,KAAK;QAC5B,IAAI,CAAC4sB,OAAO,CAAC9xB,KAAK,CAACA,KAAK,EAAE;UAAEmH,UAAU,EAAE;QAAE,CAAC,CAAC;MAC9C;IACF;EAAC;IAAAlL,GAAA;IAAA+B,KAAA,EAED,SAAAykC,mBAAmBA,CAAA,EAAG;MACpB,IAAItC,CAAC;MACL,OAAO,IAAI,CAAC3E,YAAY,CAAC,KAAK,CAAC,CAAC7+B,MAAM,EAAE;QACtCwjC,CAAC,GAAG,IAAI,CAAC3E,YAAY,CAAC,KAAK,CAAC,CAAC3rB,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC4wB,OAAO,CAAC/jB,OAAO,CAACyjB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;MACnC;IACF;EAAC;IAAAlkC,GAAA;IAAA+B,KAAA,EAED,SAAAwkC,iBAAiBA,CAAA,EAAG;MAAA,IAAAyC,aAAA;MAClB,IAAI,GAAAA,aAAA,GAAC,IAAI,CAACxE,OAAO,cAAAwE,aAAA,gBAAAA,aAAA,GAAZA,aAAA,CAAcvoB,OAAO,cAAAuoB,aAAA,eAArBA,aAAA,CAAuB56B,GAAG,GAAE;QAC/B;MACF;MAEA,IAAMyK,IAAI,GAAG,IAAI;MACjB,IAAMvV,CAAC,GAAG,IAAI,CAACkhC,OAAO,CAAC/jB,OAAO;MAE9B,SAASwoB,WAAWA,CAAC/vB,MAAM,EAAE;QAC3B,YAAY;;QAAE;QAEd,IAAMsmB,IAAI,GAAGl8B,CAAC,CAAC4V,MAAM,CAAC;QACtB,IAAMgwB,WAAW,GAAG5lC,CAAC;QACrB,IAAM2H,KAAK,GAAGiO,MAAM,KAAK,MAAM,GAAG,SAAS,GAAGA,MAAM;QACpD5V,CAAC,CAAC4V,MAAM,CAAC,GAAG,YAAY;UACtB,IAAMtP,IAAI,GAAGiW,KAAK,CAACvgB,SAAS,CAACoK,KAAK,CAAC9J,IAAI,CAACe,SAAS,CAAC;UAClD,IAAMoH,OAAO,GAAGxD,kBAAoB,CAACqF,IAAI,CAAC;UAC1CiP,IAAI,CAAClE,SAAS,CAAC0mB,UAAU,CAACtzB,OAAO,EAAEkD,KAAK,EAAE,IAAI,EAAE1G,WAAK,CAAC,CAAC,CAAC;UACxD,IAAIi7B,IAAI,EAAE;YACR/9B,QAAQ,CAACnC,SAAS,CAACye,KAAK,CAACne,IAAI,CAAC4/B,IAAI,EAAE0J,WAAW,EAAEt/B,IAAI,CAAC;UACxD;QACF,CAAC;QACDiP,IAAI,CAAC0mB,YAAY,CAAC,KAAK,CAAC,CAACl5B,IAAI,CAAC,CAAC6S,MAAM,EAAEsmB,IAAI,CAAC,CAAC;MAC/C;MACA,IAAM2J,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;MACzD,IAAI;QACF,SAAAC,GAAA,MAAAC,QAAA,GAAgBF,OAAO,EAAAC,GAAA,GAAAC,QAAA,CAAA3oC,MAAA,EAAA0oC,GAAA,IAAE;UAApB,IAAM7jC,CAAC,GAAA8jC,QAAA,CAAAD,GAAA;UACVH,WAAW,CAAC1jC,CAAC,CAAC;QAChB;MACF,CAAC,CAAC,OAAO5C,CAAC,EAAE;QACV,IAAI,CAAC0H,UAAU,CAACk8B,iBAAiB,GAAG;UAAExiC,KAAK,EAAEpB,CAAC,CAACoF;QAAQ,CAAC;MAC1D;IACF;EAAC;IAAA/H,GAAA;IAAA+B,KAAA,EAED,SAAA2kC,eAAeA,CAAA,EAAG;MAChB,IAAI,CAAChC,eAAe,CAAC,KAAK,CAAC;IAC7B;EAAC;IAAA1kC,GAAA;IAAA+B,KAAA,EAED,SAAA0kC,aAAaA,CAAA,EAAG;MAAA,IAAA50B,KAAA;MACd,IAAMgH,IAAI,GAAG,IAAI;MACjB,IAAI,CAACywB,WAAW,CACd,KAAK,EACL,IAAI,CAAC9E,OAAO,EACZ,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,EACpC,UAAC7hC,CAAC;QAAA,OAAKkP,KAAI,CAAC03B,WAAW,CAAC,OAAO,EAAE5mC,CAAC,CAAC;MAAA,CACrC,CAAC;MACD,IAAI,CAAC2mC,WAAW,CACd,KAAK,EACL,IAAI,CAAC9E,OAAO,EACZ,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,EAC1D,UAAC7hC,CAAC;QAAA,OAAKkP,KAAI,CAAC03B,WAAW,CAAC,UAAU,EAAE5mC,CAAC,CAAC;MAAA,CACxC,CAAC;MACD,IAAI,CAAC2mC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC9E,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAC7hC,CAAC;QAAA,OACzDkP,KAAI,CAAC03B,WAAW,CAAC,OAAO,EAAE5mC,CAAC,CAAC;MAAA,CAC9B,CAAC;MACD,IAAI,CAAC2mC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC9E,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,UAAC7hC,CAAC;QAAA,OAC7DkP,KAAI,CAAC03B,WAAW,CAAC,MAAM,EAAE5mC,CAAC,CAAC;MAAA,CAC7B,CAAC;MACD,IAAI,CAAC2mC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC9E,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,UAAC7hC,CAAC;QAAA,OAC3DkP,KAAI,CAAC03B,WAAW,CAAC,OAAO,EAAE5mC,CAAC,CAAC;MAAA,CAC9B,CAAC;MACD,IAAI,CAAC2mC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC9E,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,UAAC7hC,CAAC;QAAA,OAClDkP,KAAI,CAAC03B,WAAW,CAAC,QAAQ,EAAE5mC,CAAC,CAAC;MAAA,CAC/B,CAAC;MACD,IAAI,CAAC2mC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC7E,SAAS,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAC9hC,CAAC;QAAA,OAC9DkP,KAAI,CAAC03B,WAAW,CAAC,eAAe,EAAE5mC,CAAC,CAAC;MAAA,CACtC,CAAC;IACH;EAAC;IAAA3C,GAAA;IAAA+B,KAAA,EAED,SAAAwnC,WAAWA,CAACjpC,IAAI,EAAEwhB,GAAG,EAAE;MACrB,IAAI;QACF,OAAO;UACL0nB,KAAK,EAAE,IAAI,CAACC,WAAW;UACvBC,QAAQ,EAAE,IAAI,CAACC,UAAU;UACzBC,KAAK,EAAE,IAAI,CAACC,WAAW;UACvBC,IAAI,EAAE,IAAI,CAACC,UAAU;UACrBl8B,KAAK,EAAE,IAAI,CAACm8B,WAAW;UACvBC,MAAM,EAAE,IAAI,CAACC,YAAY;UACzBC,aAAa,EAAE,IAAI,CAACC;QACtB,CAAC,CAAC9pC,IAAI,CAAC,CAACV,IAAI,CAAC,IAAI,EAAEkiB,GAAG,CAAC;MACzB,CAAC,CAAC,OAAO+B,GAAG,EAAE;QACZpD,OAAO,CAACrS,GAAG,IAAAT,MAAA,CAAIrN,IAAI,qBAAkBwhB,GAAG,EAAE+B,GAAG,EAAEA,GAAG,CAAC5a,KAAK,CAAC;MAC3D;IACF;EAAC;IAAAjJ,GAAA;IAAA+B,KAAA,EAED,SAAAqoC,mBAAmBA,CAACtoB,GAAG,EAAE;MACvB,IAAM3P,QAAQ,GAAG,IAAI,CAAC0jB,OAAO,CAACI,aAAa,CAAC;QAC1Cj0B,IAAI,EAAE,YAAY;QAClBwE,IAAI,EAAE,IAAIpC,GAAG,CAAC,IAAI,CAAC2gC,SAAS,CAACn8B,IAAI,CAAC,CAAC+P;MACrC,CAAC,CAAC;IACJ;EAAC;IAAA3Y,GAAA;IAAA+B,KAAA,EAED,SAAA0nC,WAAWA,CAAC3nB,GAAG,EAAE;MAAA,IAAAuoB,WAAA;MACf,IAAMtJ,OAAO,IAAAsJ,WAAA,GAAGvoB,GAAG,CAACmb,MAAM,cAAAoN,WAAA,uBAAVA,WAAA,CAAYtJ,OAAO,CAAC5/B,WAAW,CAAC,CAAC;MACjD,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAACsI,QAAQ,CAACs3B,OAAO,CAAC,EAAE;MAEvD,IAAI,CAACpsB,SAAS,CAACioB,YAAY,CAAC;QAC1B56B,IAAI,EAAE8f,GAAG,CAAC9f,IAAI;QACdw6B,WAAW,EAAE,CAAC1a,GAAG,CAACwoB,SAAS;QAC3BlO,OAAO,EAAE+G,wBAAqB,CAACrhB,GAAG,CAACmb,MAAM,CAAC;QAC1CryB,SAAS,EAAErG,WAAK,CAAC;MACnB,CAAC,CAAC;IACJ;EAAC;IAAAvE,GAAA;IAAA+B,KAAA,EAED,SAAA8nC,WAAWA,CAAC/nB,GAAG,EAAE;MAAA,IAAAyoB,YAAA;MACf,IAAMvoC,IAAI,GAAG8f,GAAG,CAAC9f,IAAI;MACrB,IAAMo6B,OAAO,GAAG,CAAAmO,YAAA,GAAAzoB,GAAG,CAACmb,MAAM,cAAAsN,YAAA,eAAVA,YAAA,CAAYvnC,MAAM,GAC9B,QAAQ,GACRmgC,wBAAqB,CAACrhB,GAAG,CAACmb,MAAM,CAAC;MAErC,IAAI,CAACtoB,SAAS,CAAC0oB,YAAY,CAAC;QAC1Br7B,IAAI,EAAEA,IAAI;QACVw6B,WAAW,EAAE,CAAC1a,GAAG,CAACwoB,SAAS;QAC3BlO,OAAO,EAAPA,OAAO;QACPxxB,SAAS,EAAErG,WAAK,CAAC;MACnB,CAAC,CAAC;IACJ;EAAC;IAAAvE,GAAA;IAAA+B,KAAA,EAED,SAAAgoC,UAAUA,CAACjoB,GAAG,EAAE;MAAA,IAAA0oB,YAAA;MACd;MACA,IAAMxoC,IAAI,GAAG8f,GAAG,CAAC9f,IAAI;MACrB,IAAMmgC,aAAa,GAAG,CAAAqI,YAAA,GAAA1oB,GAAG,CAACmb,MAAM,cAAAuN,YAAA,eAAVA,YAAA,CAAYxnC,MAAM,GACpC,QAAQ,GACRmgC,wBAAqB,CAACrhB,GAAG,CAACmb,MAAM,CAAC;IACvC;EAAC;IAAAj9B,GAAA;IAAA+B,KAAA,EAED,SAAAmoC,YAAYA,CAACpoB,GAAG,EAAE;MAChB,IAAMqb,aAAa,GAAGn6B,MAAM,CAAC0oB,MAAM,CAACQ,KAAK,GAAGlpB,MAAM,CAACynC,UAAU;MAE7D,IAAI,CAAC91B,SAAS,CAAC6oB,aAAa,CAAC;QAC3Bx7B,IAAI,EAAE8f,GAAG,CAAC9f,IAAI;QACdw6B,WAAW,EAAE,CAAC1a,GAAG,CAACwoB,SAAS;QAC3Bpe,KAAK,EAAElpB,MAAM,CAACynC,UAAU;QACxBte,MAAM,EAAEnpB,MAAM,CAAC0nC,WAAW;QAC1BvN,aAAa,EAAEA,aAAa;QAC5BvyB,SAAS,EAAErG,WAAK,CAAC;MACnB,CAAC,CAAC;IACJ;EAAC;IAAAvE,GAAA;IAAA+B,KAAA,EAED,SAAA4nC,UAAUA,CAAC7nB,GAAG,EAAE;MACd,IAAM9f,IAAI,GAAG8f,GAAG,CAAC9f,IAAI;MACrB,IAAIg8B,KAAK,EAAEC,UAAU,EAAEH,UAAU,EAAEC,aAAa;MAEhD,IAAI/7B,IAAI,KAAK,MAAM,EAAE;QACnBg8B,KAAK,GAAG,EAAE;QACVC,UAAU,GAAG,EAAE;QACf,IAAM0M,IAAI,MAAAh9B,MAAA,CAAAmmB,2BAAA,CAAOhS,GAAG,CAAC8oB,YAAY,CAACC,KAAK,GAAA/W,2BAAA,CAAKhS,GAAG,CAAC8oB,YAAY,CAAC5L,KAAK,EAAC;QAAC,IAAA8L,UAAA,GAAA1+B,mCAAA,CACpDu+B,IAAI;UAAAI,MAAA;QAAA;UAApB,KAAAD,UAAA,CAAAljC,CAAA,MAAAmjC,MAAA,GAAAD,UAAA,CAAA1oC,CAAA,IAAAkK,IAAA,GAAsB;YAAA,IAAXhH,CAAC,GAAAylC,MAAA,CAAAhpC,KAAA;YACV,IAAIuD,CAAC,CAAC0lC,IAAI,IAAI1lC,CAAC,CAACtD,IAAI,EAAE;cACpBg8B,KAAK,CAAC33B,IAAI,CAACf,CAAC,CAAC0lC,IAAI,CAAC;cAClB/M,UAAU,CAAC53B,IAAI,CAACf,CAAC,CAACtD,IAAI,CAAC;YACzB;UACF;QAAC,SAAAoH,GAAA;UAAA0hC,UAAA,CAAAnoC,CAAA,CAAAyG,GAAA;QAAA;UAAA0hC,UAAA,CAAAzpC,CAAA;QAAA;MACH;MACA,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAACoI,QAAQ,CAACzH,IAAI,CAAC,EAAE;QAAA,IAAAipC,iBAAA,EAAAC,kBAAA;QACxCpN,UAAU,IAAAmN,iBAAA,GAAGnpB,GAAG,CAAC8oB,YAAY,cAAAK,iBAAA,uBAAhBA,iBAAA,CAAkBnN,UAAU;QACzCC,aAAa,IAAAmN,kBAAA,GAAGppB,GAAG,CAAC8oB,YAAY,cAAAM,kBAAA,uBAAhBA,kBAAA,CAAkBnN,aAAa;MACjD;MAEA,IAAI,CAACppB,SAAS,CAACgpB,eAAe,CAAC;QAC7B37B,IAAI,EAAJA,IAAI;QACJw6B,WAAW,EAAE,CAAC1a,GAAG,CAACwoB,SAAS;QAC3BlO,OAAO,EAAE+G,wBAAqB,CAACrhB,GAAG,CAACmb,MAAM,CAAC;QAC1Ca,UAAU,EAAEA,UAAU;QACtBC,aAAa,EAAEA,aAAa;QAC5BC,KAAK,EAAE72B,IAAI,CAACF,SAAS,CAAC+2B,KAAK,CAAC;QAC5BC,UAAU,EAAE92B,IAAI,CAACF,SAAS,CAACg3B,UAAU,CAAC;QACtCrzB,SAAS,EAAErG,WAAK,CAAC;MACnB,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;EAHE;IAAAvE,GAAA;IAAA+B,KAAA,EAIA,SAAAopC,eAAeA,CAACppC,KAAK,EAAEq6B,OAAO,EAAE2E,OAAO,EAAEqK,SAAS,EAAE;MAClD,IAAMC,IAAI,GAAG,QAAQ;MAErB,IAAID,SAAS,KAAK,UAAU,EAAE;QAC5B,OAAOC,IAAI;MACb;MAEA,IAAI,IAAI,CAAC1F,oBAAoB,EAAE;QAC7B,OAAO0F,IAAI;MACb,CAAC,MAAM;QACL,IAAMxgB,WAAW,GAAGsY,eAAuB,CAAC/G,OAAO,CAAC;QACpD,IAAI,IAAI,CAACwJ,iBAAiB,EAAE;UAC1B,IAAI,IAAI,CAACA,iBAAiB,CAAC/a,WAAW,CAAC,EAAE;YACvC,OAAOwgB,IAAI;UACb;QACF,CAAC,MAAM,IAAI,IAAI,CAACjH,oBAAoB,CAACvZ,WAAW,CAAC,EAAE;UACjD,OAAOwgB,IAAI;QACb;MACF;;MAEA;MACA,IACElI,iBAAyB,CAAC/G,OAAO,EAAE,IAAI,CAAC0J,YAAY,EAAE,IAAI,CAACE,cAAc,CAAC,EAC1E;QACA,OAAOqF,IAAI;MACb;;MAEA;MACA;MACA;MACA,IACE,IAAI,CAACvZ,gBAAgB,CAACiP,OAAO,CAAC5/B,WAAW,CAAC,CAAC,CAAC,IAC5C,IAAI,CAAC2wB,gBAAgB,CAACsZ,SAAS,CAAC,EAChC;QACA,IAAI,IAAI,CAACvF,WAAW,EAAE;UACpB,OAAO,IAAI,CAACA,WAAW,CAAC9jC,KAAK,EAAEq6B,OAAO,CAAC;QACzC,CAAC,MAAM;UACL,OAAOiP,IAAI;QACb;MACF;MAEA,OAAOtpC,KAAK;IACd;;IAEA;AACF;AACA;AACA;EAHE;IAAA/B,GAAA;IAAA+B,KAAA,EAIA,SAAAioC,WAAWA,CAACloB,GAAG,EAAE;MAAA,IAAAwpB,YAAA,EAAAC,YAAA,EAAAC,YAAA,EAAAC,YAAA;MACf,IAAMzpC,IAAI,GAAG8f,GAAG,CAAC9f,IAAI;MACrB,IAAM++B,OAAO,IAAAuK,YAAA,GAAGxpB,GAAG,CAACmb,MAAM,cAAAqO,YAAA,uBAAVA,YAAA,CAAYvK,OAAO,CAAC5/B,WAAW,CAAC,CAAC;MACjD,IAAIY,KAAK,IAAAwpC,YAAA,GAAGzpB,GAAG,CAACmb,MAAM,cAAAsO,YAAA,uBAAVA,YAAA,CAAYxpC,KAAK;MAC7B,IAAIqpC,SAAS,GAAG,EAAAI,YAAA,GAAA1pB,GAAG,CAACmb,MAAM,cAAAuO,YAAA,gBAAAA,YAAA,GAAVA,YAAA,CAAYt/B,UAAU,cAAAs/B,YAAA,gBAAAA,YAAA,GAAtBA,YAAA,CAAwBxpC,IAAI,cAAAwpC,YAAA,uBAA5BA,YAAA,CAA8BzpC,KAAK,OAAA0pC,YAAA,GAAI3pB,GAAG,CAACmb,MAAM,cAAAwO,YAAA,uBAAVA,YAAA,CAAYzpC,IAAI;MAEvE,IAAID,KAAK,KAAKsD,SAAS,EAAE;QACvBtD,KAAK,GAAG,IAAI,CAACopC,eAAe,CAACppC,KAAK,EAAE+f,GAAG,CAACmb,MAAM,EAAE8D,OAAO,EAAEqK,SAAS,CAAC;MACrE;MAEA,QAAQppC,IAAI;QACV,KAAK,OAAO;UACV,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAACyH,QAAQ,CAAC2hC,SAAS,CAAC,EAAE;UAC/C,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC3hC,QAAQ,CAACs3B,OAAO,CAAC,EAAE;YAC5CqK,SAAS,GAAGrK,OAAO;UACrB;UACA;QAEF,KAAK,QAAQ;UACX,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAACt3B,QAAQ,CAAC2hC,SAAS,CAAC,EAAE;UAChD,IAAIA,SAAS,KAAK,UAAU,EAAE;YAAA,IAAAM,YAAA;YAC5B3pC,KAAK,IAAA2pC,YAAA,GAAG5pB,GAAG,CAACmb,MAAM,cAAAyO,YAAA,uBAAVA,YAAA,CAAYrP,OAAO;UAC7B;UACA;MACJ;MAEA,IAAI,CAAC1nB,SAAS,CAAC2nB,YAAY,CAAC;QAC1Bt6B,IAAI,EAAEopC,SAAS;QACf5O,WAAW,EAAE,CAAC1a,GAAG,CAACwoB,SAAS;QAC3BlO,OAAO,EAAE+G,wBAAqB,CAACrhB,GAAG,CAACmb,MAAM,CAAC;QAC1Cl7B,KAAK,EAALA,KAAK;QACL6I,SAAS,EAAErG,WAAK,CAAC;MACnB,CAAC,CAAC;IACJ;EAAC;IAAAvE,GAAA;IAAA+B,KAAA,EAED,SAAA6kC,sBAAsBA,CAAA,EAAG;MACvB,IAAMtR,MAAM,GAAG,IAAI,CAACkP,OAAO,CAAClP,MAAM;MAClC,IAAMqW,iBAAiB,GAAGrW,MAAM,IAAIA,MAAM,CAACsW,GAAG,IAAItW,MAAM,CAACsW,GAAG,CAACrW,OAAO;MACpE;MACA,IAAMsW,YAAY,GAChB,CAACF,iBAAiB,IAClB,IAAI,CAACnH,OAAO,CAACsH,OAAO,IACpB,IAAI,CAACtH,OAAO,CAACsH,OAAO,CAACC,SAAS;MAChC,IAAI,CAACF,YAAY,EAAE;QACjB;MACF;MACA5H,OAAO,CAAC,IAAI,CAAC1E,YAAY,EAAE,YAAY,CAAC;IAC1C;EAAC;IAAAv/B,GAAA;IAAA+B,KAAA,EAED,SAAA4kC,oBAAoBA,CAAA,EAAG;MACrB,IAAMrR,MAAM,GAAG,IAAI,CAACkP,OAAO,CAAClP,MAAM;MAClC,IAAMqW,iBAAiB,GAAGrW,MAAM,IAAIA,MAAM,CAACsW,GAAG,IAAItW,MAAM,CAACsW,GAAG,CAACrW,OAAO;MACpE;MACA,IAAMsW,YAAY,GAChB,CAACF,iBAAiB,IAClB,IAAI,CAACnH,OAAO,CAACsH,OAAO,IACpB,IAAI,CAACtH,OAAO,CAACsH,OAAO,CAACC,SAAS;MAChC,IAAI,CAACF,YAAY,EAAE;QACjB;MACF;MACA,IAAMhzB,IAAI,GAAG,IAAI;MACjBnX,eAAO,CACL,IAAI,CAAC8iC,OAAO,EACZ,YAAY,EACZ,UAAUhF,IAAI,EAAE;QACd,OAAO,YAAY;UACjB,IAAM/+B,OAAO,GAAGoY,IAAI,CAACksB,SAAS,CAACn8B,IAAI;UACnCiQ,IAAI,CAACmzB,eAAe,CAACnzB,IAAI,CAACmsB,SAAS,EAAEvkC,OAAO,CAAC;UAC7C,IAAI++B,IAAI,EAAE;YACRA,IAAI,CAACzhB,KAAK,CAAC,IAAI,EAAEpd,SAAS,CAAC;UAC7B;QACF,CAAC;MACH,CAAC,EACD,IAAI,CAAC4+B,YAAY,EACjB,YACF,CAAC;MAED79B,eAAO,CACL,IAAI,CAAC8iC,OAAO,CAACsH,OAAO,EACpB,WAAW,EACX,UAAUtM,IAAI,EAAE;QACd,OAAO,YAAY;UACjB,IAAMt7B,GAAG,GAAGvD,SAAS,CAACD,MAAM,GAAG,CAAC,GAAGC,SAAS,CAAC,CAAC,CAAC,GAAG0E,SAAS;UAC3D,IAAInB,GAAG,EAAE;YACP2U,IAAI,CAACmzB,eAAe,CAACnzB,IAAI,CAACmsB,SAAS,EAAE9gC,GAAG,GAAG,EAAE,CAAC;UAChD;UACA,OAAOs7B,IAAI,CAACzhB,KAAK,CAAC,IAAI,EAAEpd,SAAS,CAAC;QACpC,CAAC;MACH,CAAC,EACD,IAAI,CAAC4+B,YAAY,EACjB,YACF,CAAC;IACH;EAAC;IAAAv/B,GAAA;IAAA+B,KAAA,EAED,SAAAiqC,eAAeA,CAAC7N,IAAI,EAAEC,EAAE,EAAE;MACxB,IAAM6N,UAAU,GAAG/I,KAAe,CAAC,IAAI,CAAC6B,SAAS,CAACn8B,IAAI,CAAC;MACvD,IAAMsjC,QAAQ,GAAGhJ,KAAe,CAAC9E,EAAE,CAAC;MACpC,IAAM+N,UAAU,GAAGjJ,KAAe,CAAC/E,IAAI,CAAC;MACxC,IAAI,CAAC6G,SAAS,GAAG5G,EAAE;MACnB,IACE6N,UAAU,CAACnlC,QAAQ,KAAKolC,QAAQ,CAACplC,QAAQ,IACzCmlC,UAAU,CAAC7yB,IAAI,KAAK8yB,QAAQ,CAAC9yB,IAAI,EACjC;QACAglB,EAAE,GAAG8N,QAAQ,CAAC1lC,IAAI,IAAI0lC,QAAQ,CAACrmB,IAAI,IAAI,EAAE,CAAC;MAC5C;MACA,IACEomB,UAAU,CAACnlC,QAAQ,KAAKqlC,UAAU,CAACrlC,QAAQ,IAC3CmlC,UAAU,CAAC7yB,IAAI,KAAK+yB,UAAU,CAAC/yB,IAAI,EACnC;QACA+kB,IAAI,GAAGgO,UAAU,CAAC3lC,IAAI,IAAI2lC,UAAU,CAACtmB,IAAI,IAAI,EAAE,CAAC;MAClD;MACA,IAAI,CAAClR,SAAS,CAACupB,iBAAiB,CAACC,IAAI,EAAEC,EAAE,EAAE,IAAI,EAAE75B,WAAK,CAAC,CAAC,CAAC;MACzD,IAAM4N,QAAQ,GAAG,IAAI,CAAC0jB,OAAO,CAACI,aAAa,CAAC;QAC1Cj0B,IAAI,EAAE,YAAY;QAClBwE,IAAI,EAAE43B;MACR,CAAC,CAAC;IACJ;EAAC;IAAAp+B,GAAA;IAAA+B,KAAA,EAMD,SAAA8kC,sBAAsBA,CAAA,EAAG;MACvB,IAAMhuB,IAAI,GAAG,IAAI;MACjB,IAAI,CAACywB,WAAW,CACd,cAAc,EACd,IAAI,CAAC9E,OAAO,EACZ,CAAC,QAAQ,EAAE,SAAS,CAAC,EACrB,UAAC1iB,GAAG;QAAA,OAAKjJ,IAAI,CAACuzB,kBAAkB,CAACtqB,GAAG,CAAC;MAAA,CACvC,CAAC;IACH;EAAC;IAAA9hB,GAAA;IAAA+B,KAAA,EAED,SAAAqqC,kBAAkBA,CAACtqB,GAAG,EAAE;MACtB,IAAM9f,IAAI,GAAG8f,GAAG,CAAC9f,IAAI;MAErB,IAAI,CAAC2S,SAAS,CAAC4pB,yBAAyB,CAAC;QACvCv8B,IAAI,EAAJA,IAAI;QACJw6B,WAAW,EAAE,CAAC1a,GAAG,CAACwoB,SAAS;QAC3B1/B,SAAS,EAAErG,WAAK,CAAC;MACnB,CAAC,CAAC;IACJ;EAAC;IAAAvE,GAAA;IAAA+B,KAAA,EAED,SAAAsqC,cAAcA,CAACC,QAAQ,EAAE;MACvB,IAAIvkC,OAAO,GACT,6BAA6B,GAC7B,cAAc,GACdukC,QAAQ,CAACC,UAAU,GACnB,IAAI,GACJ,qBAAqB,GACrBD,QAAQ,CAACE,iBAAiB,GAC1B,IAAI,GACJ,sBAAsB,GACtBF,QAAQ,CAACG,kBAAkB,GAC3B,IAAI;MAEN,IAAIH,QAAQ,CAACI,UAAU,EAAE;QACvB3kC,OAAO,IACL,YAAY,GACZukC,QAAQ,CAACI,UAAU,GACnB,IAAI,GACJ,QAAQ,GACRJ,QAAQ,CAACrjB,UAAU,GACnB,IAAI,GACJ,OAAO,GACPqjB,QAAQ,CAACpjB,YAAY,GACrB,IAAI;MACR;MAEAnhB,OAAO,IAAI,kBAAkB,GAAGukC,QAAQ,CAACK,cAAc;MAEvD,IAAI,CAACh4B,SAAS,CAAC0mB,UAAU,CAACtzB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAExD,WAAK,CAAC,CAAC,CAAC;MAC1D,IAAI,CAACqoC,cAAc,CAAC7kC,OAAO,CAAC;IAC9B;EAAC;IAAA/H,GAAA;IAAA+B,KAAA,EAED,SAAA6qC,cAAcA,CAAC7kC,OAAO,EAAE;MACtB,IAAI,IAAI,CAAC48B,cAAc,CAACX,4BAA4B,EAAE;QACpD,IAAI,CAACnO,OAAO,CAAC9xB,KAAK,CAACgE,OAAO,CAAC;MAC7B;IACF;EAAC;IAAA/H,GAAA;IAAA+B,KAAA,EAED,SAAAilC,iCAAiCA,CAAA,EAAG;MAClC,IAAI,CAACtC,eAAe,CAAC,uBAAuB,CAAC;IAC/C;EAAC;IAAA1kC,GAAA;IAAA+B,KAAA,EAED,SAAAglC,+BAA+BA,CAAA,EAAG;MAChC,IAAI,EAAE,kBAAkB,IAAI,IAAI,CAACtC,SAAS,CAAC,EAAE;QAC3C;MACF;MAEA,IAAMoI,UAAU,GAAG,IAAI,CAACR,cAAc,CAAC/3B,IAAI,CAAC,IAAI,CAAC;MACjD,IAAI,CAACg1B,WAAW,CACd,uBAAuB,EACvB,IAAI,CAAC7E,SAAS,EACd,CAAC,yBAAyB,CAAC,EAC3BoI,UACF,CAAC;IACH;EAAC;IAAA7sC,GAAA;IAAA+B,KAAA,EAED,SAAAunC,WAAWA,CAACwD,OAAO,EAAEntC,GAAG,EAAEotC,KAAK,EAAEpsB,OAAO,EAAE;MAAA,IAAA/N,MAAA;MACxC,IAAIjT,GAAG,CAACwiB,gBAAgB,EAAE;QAAA,IAAA6qB,UAAA,GAAA5gC,mCAAA,CACR2gC,KAAK;UAAAE,MAAA;QAAA;UAAA,IAAAC,KAAA,YAAAA,MAAA,EAAE;YAAA,IAAZpsC,CAAC,GAAAmsC,MAAA,CAAAlrC,KAAA;YACV,IAAMiE,OAAO,GAAG;cAAEoM,OAAO,EAAE,IAAI;cAAE+6B,OAAO,EAAE;YAAK,CAAC;YAChDxtC,GAAG,CAACwiB,gBAAgB,CAACrhB,CAAC,EAAE6f,OAAO,EAAE3a,OAAO,EAAE,IAAI,CAAC;YAC/C4M,MAAI,CAACiyB,aAAa,CAACiI,OAAO,CAAC,CAACzmC,IAAI,CAAC,YAAY;cAC3C1G,GAAG,CAACiiB,mBAAmB,CAAC9gB,CAAC,EAAE6f,OAAO,EAAE3a,OAAO,CAAC;YAC9C,CAAC,CAAC;UACJ,CAAC;UAND,KAAAgnC,UAAA,CAAAplC,CAAA,MAAAqlC,MAAA,GAAAD,UAAA,CAAA5qC,CAAA,IAAAkK,IAAA;YAAA4gC,KAAA;UAAA;QAMC,SAAA9jC,GAAA;UAAA4jC,UAAA,CAAArqC,CAAA,CAAAyG,GAAA;QAAA;UAAA4jC,UAAA,CAAA3rC,CAAA;QAAA;MACH;IACF;EAAC;IAAArB,GAAA;IAAA+B,KAAA,EAED,SAAA2iC,eAAeA,CAACoI,OAAO,EAAE;MACvB,IAAIvpC,CAAC;MACL,OAAO,IAAI,CAACshC,aAAa,CAACiI,OAAO,CAAC,CAACpsC,MAAM,EAAE;QACzC6C,CAAC,GAAG,IAAI,CAACshC,aAAa,CAACiI,OAAO,CAAC,CAACl5B,KAAK,CAAC,CAAC;QACvCrQ,CAAC,CAAC,CAAC;MACL;IACF;EAAC;AAAA;AAGH,SAAS8jC,YAAYA,CAACx5B,KAAK,EAAE;EAC3B,OAAO,OAAOzJ,GAAG,KAAK,WAAW,IAAIyJ,KAAK,YAAYzJ,GAAG;AAC3D;AAEA,sDAAeqwB,YAAY;;AC5iC3B,SAASE,WAAWA,CAAC3xB,MAAM,EAAE2d,OAAO,EAAEC,IAAI,EAAE;EAC1C,IAAI,CAAC5d,MAAM,EAAE;IACX;EACF;EACA;EACA,IAAIixB,OAAO,GACT,2YAA2Y,CAACvnB,KAAK,CAC/Y,GACF,CAAC;EACH,IAAIxM,CAAC,EAAEkV,MAAM;EACb,KAAKlV,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+zB,OAAO,CAACvzB,MAAM,EAAE,EAAER,CAAC,EAAE;IACnCkV,MAAM,GAAG6e,OAAO,CAAC/zB,CAAC,CAAC;IAEnB,IAAI8C,MAAM,CAACoS,MAAM,CAAC,IAAIpS,MAAM,CAACoS,MAAM,CAAC,CAAC9V,SAAS,EAAE;MAC9C8tC,wBAAwB,CAACzsB,OAAO,EAAE3d,MAAM,CAACoS,MAAM,CAAC,CAAC9V,SAAS,EAAEshB,IAAI,CAAC;IACnE;EACF;AACF;AAEA,SAASwsB,wBAAwBA,CAACzsB,OAAO,EAAErhB,SAAS,EAAEshB,IAAI,EAAE;EAC1D,IACEthB,SAAS,CAACC,cAAc,IACxBD,SAAS,CAACC,cAAc,CAAC,kBAAkB,CAAC,EAC5C;IACA,IAAI8tC,mBAAmB,GAAG/tC,SAAS,CAAC6iB,gBAAgB;IACpD,OACEkrB,mBAAmB,CAACC,cAAc,IAClCD,mBAAmB,CAAC1rB,aAAa,EACjC;MACA0rB,mBAAmB,GAAGA,mBAAmB,CAACC,cAAc;IAC1D;IACA,IAAIC,KAAK,GAAG,SAARA,KAAKA,CAAaxhC,KAAK,EAAE9B,QAAQ,EAAEujC,MAAM,EAAE;MAC7CH,mBAAmB,CAACztC,IAAI,CAAC,IAAI,EAAEmM,KAAK,EAAE4U,OAAO,CAACxG,IAAI,CAAClQ,QAAQ,CAAC,EAAEujC,MAAM,CAAC;IACvE,CAAC;IACDD,KAAK,CAACD,cAAc,GAAGD,mBAAmB;IAC1CE,KAAK,CAAC5rB,aAAa,GAAGf,IAAI;IAC1BthB,SAAS,CAAC6iB,gBAAgB,GAAGorB,KAAK;IAElC,IAAIE,sBAAsB,GAAGnuC,SAAS,CAACsiB,mBAAmB;IAC1D,OACE6rB,sBAAsB,CAACC,iBAAiB,IACxCD,sBAAsB,CAAC9rB,aAAa,EACpC;MACA8rB,sBAAsB,GAAGA,sBAAsB,CAACC,iBAAiB;IACnE;IACA,IAAIC,QAAQ,GAAG,SAAXA,QAAQA,CAAa5hC,KAAK,EAAE9B,QAAQ,EAAEujC,MAAM,EAAE;MAChDC,sBAAsB,CAAC7tC,IAAI,CACzB,IAAI,EACJmM,KAAK,EACJ9B,QAAQ,IAAIA,QAAQ,CAAC+sB,gBAAgB,IAAK/sB,QAAQ,EACnDujC,MACF,CAAC;IACH,CAAC;IACDG,QAAQ,CAACD,iBAAiB,GAAGD,sBAAsB;IACnDE,QAAQ,CAAChsB,aAAa,GAAGf,IAAI;IAC7BthB,SAAS,CAACsiB,mBAAmB,GAAG+rB,QAAQ;EAC1C;AACF;AAEA,wDAAehZ,WAAW;;AC3DQ;AACW;AAE7C,SAAS9M,GAAGA,CAAC/Z,OAAO,EAAE8/B,UAAU,EAAE;EAChC,OAAO,CAAC9/B,OAAO,EAAEvJ,SAAW,CAACuJ,OAAO,EAAE8/B,UAAU,CAAC,CAAC;AACpD;AAEA,SAASC,YAAYA,CAAClgB,MAAM,EAAE2E,KAAK,EAAE;EACnC,IAAI5nB,GAAG,GAAGijB,MAAM,CAACjtB,MAAM;EACvB,IAAIgK,GAAG,GAAG4nB,KAAK,GAAG,CAAC,EAAE;IACnB,OAAO3E,MAAM,CAACjkB,KAAK,CAAC,CAAC,EAAE4oB,KAAK,CAAC,CAAC3kB,MAAM,CAACggB,MAAM,CAACjkB,KAAK,CAACgB,GAAG,GAAG4nB,KAAK,CAAC,CAAC;EACjE;EACA,OAAO3E,MAAM;AACf;AAEA,SAASmgB,cAAcA,CAAChgC,OAAO,EAAE8/B,UAAU,EAAEtb,KAAK,EAAE;EAClDA,KAAK,GAAG,OAAOA,KAAK,KAAK,WAAW,GAAG,EAAE,GAAGA,KAAK;EACjD,IAAIviB,IAAI,GAAGjC,OAAO,CAACjD,IAAI,CAACkF,IAAI;EAC5B,IAAI4d,MAAM;EACV,IAAI5d,IAAI,CAACmd,WAAW,EAAE;IACpB,IAAIpC,KAAK,GAAG/a,IAAI,CAACmd,WAAW;IAC5B,KAAK,IAAIhtB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4qB,KAAK,CAACpqB,MAAM,EAAER,CAAC,EAAE,EAAE;MACrCytB,MAAM,GAAG7C,KAAK,CAAC5qB,CAAC,CAAC,CAACytB,MAAM;MACxBA,MAAM,GAAGkgB,YAAY,CAAClgB,MAAM,EAAE2E,KAAK,CAAC;MACpCxH,KAAK,CAAC5qB,CAAC,CAAC,CAACytB,MAAM,GAAGA,MAAM;IAC1B;EACF,CAAC,MAAM,IAAI5d,IAAI,CAACid,KAAK,EAAE;IACrBW,MAAM,GAAG5d,IAAI,CAACid,KAAK,CAACW,MAAM;IAC1BA,MAAM,GAAGkgB,YAAY,CAAClgB,MAAM,EAAE2E,KAAK,CAAC;IACpCviB,IAAI,CAACid,KAAK,CAACW,MAAM,GAAGA,MAAM;EAC5B;EACA,OAAO,CAAC7f,OAAO,EAAEvJ,SAAW,CAACuJ,OAAO,EAAE8/B,UAAU,CAAC,CAAC;AACpD;AAEA,SAASG,kBAAkBA,CAACrjC,GAAG,EAAEkB,GAAG,EAAE;EACpC,IAAI,CAACA,GAAG,EAAE;IACR,OAAOA,GAAG;EACZ;EACA,IAAIA,GAAG,CAAClL,MAAM,GAAGgK,GAAG,EAAE;IACpB,OAAOkB,GAAG,CAAClC,KAAK,CAAC,CAAC,EAAEgB,GAAG,GAAG,CAAC,CAAC,CAACiD,MAAM,CAAC,KAAK,CAAC;EAC5C;EACA,OAAO/B,GAAG;AACZ;AAEA,SAASoiC,eAAeA,CAACtjC,GAAG,EAAEoD,OAAO,EAAE8/B,UAAU,EAAE;EACjD,SAASK,SAASA,CAAC7nC,CAAC,EAAEwU,CAAC,EAAErR,IAAI,EAAE;IAC7B,QAAQhF,QAAU,CAACqW,CAAC,CAAC;MACnB,KAAK,QAAQ;QACX,OAAOmzB,kBAAkB,CAACrjC,GAAG,EAAEkQ,CAAC,CAAC;MACnC,KAAK,QAAQ;MACb,KAAK,OAAO;QACV,OAAO6kB,gBAAQ,CAAC7kB,CAAC,EAAEqzB,SAAS,EAAE1kC,IAAI,CAAC;MACrC;QACE,OAAOqR,CAAC;IACZ;EACF;EACA9M,OAAO,GAAG2xB,gBAAQ,CAAC3xB,OAAO,EAAEmgC,SAAS,CAAC;EACtC,OAAO,CAACngC,OAAO,EAAEvJ,SAAW,CAACuJ,OAAO,EAAE8/B,UAAU,CAAC,CAAC;AACpD;AAEA,SAASM,iBAAiBA,CAACC,SAAS,EAAE;EACpC,IAAIA,SAAS,CAACzkB,SAAS,EAAE;IACvB,OAAOykB,SAAS,CAACzkB,SAAS,CAACmB,WAAW;IACtCsjB,SAAS,CAACzkB,SAAS,CAAC3hB,OAAO,GAAGgmC,kBAAkB,CAC9C,GAAG,EACHI,SAAS,CAACzkB,SAAS,CAAC3hB,OACtB,CAAC;EACH;EACAomC,SAAS,CAACxgB,MAAM,GAAGkgB,YAAY,CAACM,SAAS,CAACxgB,MAAM,EAAE,CAAC,CAAC;EACpD,OAAOwgB,SAAS;AAClB;AAEA,SAASC,OAAOA,CAACtgC,OAAO,EAAE8/B,UAAU,EAAE;EACpC,IAAI79B,IAAI,GAAGjC,OAAO,CAACjD,IAAI,CAACkF,IAAI;EAC5B,IAAIA,IAAI,CAACmd,WAAW,EAAE;IACpB,IAAIpC,KAAK,GAAG/a,IAAI,CAACmd,WAAW;IAC5B,KAAK,IAAIhtB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4qB,KAAK,CAACpqB,MAAM,EAAER,CAAC,EAAE,EAAE;MACrC4qB,KAAK,CAAC5qB,CAAC,CAAC,GAAGguC,iBAAiB,CAACpjB,KAAK,CAAC5qB,CAAC,CAAC,CAAC;IACxC;EACF,CAAC,MAAM,IAAI6P,IAAI,CAACid,KAAK,EAAE;IACrBjd,IAAI,CAACid,KAAK,GAAGkhB,iBAAiB,CAACn+B,IAAI,CAACid,KAAK,CAAC;EAC5C;EACA,OAAO,CAAClf,OAAO,EAAEvJ,SAAW,CAACuJ,OAAO,EAAE8/B,UAAU,CAAC,CAAC;AACpD;AAEA,SAASS,eAAeA,CAACvgC,OAAO,EAAEwgC,OAAO,EAAE;EACzC,OAAO/pC,WAAa,CAACuJ,OAAO,CAAC,GAAGwgC,OAAO;AACzC;AAEA,SAAS/uB,QAAQA,CAACzR,OAAO,EAAE8/B,UAAU,EAAEU,OAAO,EAAE;EAC9CA,OAAO,GAAG,OAAOA,OAAO,KAAK,WAAW,GAAG,GAAG,GAAG,IAAI,GAAGA,OAAO;EAC/D,IAAIC,UAAU,GAAG,CACf1mB,GAAG,EACHimB,cAAc,EACdE,eAAe,CAAC15B,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAChC05B,eAAe,CAAC15B,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAC/B05B,eAAe,CAAC15B,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAC/B85B,OAAO,CACR;EACD,IAAII,QAAQ,EAAEC,OAAO,EAAEluC,MAAM;EAE7B,OAAQiuC,QAAQ,GAAGD,UAAU,CAAC36B,KAAK,CAAC,CAAC,EAAG;IACtC66B,OAAO,GAAGD,QAAQ,CAAC1gC,OAAO,EAAE8/B,UAAU,CAAC;IACvC9/B,OAAO,GAAG2gC,OAAO,CAAC,CAAC,CAAC;IACpBluC,MAAM,GAAGkuC,OAAO,CAAC,CAAC,CAAC;IACnB,IAAIluC,MAAM,CAACwD,KAAK,IAAI,CAACsqC,eAAe,CAAC9tC,MAAM,CAACwB,KAAK,EAAEusC,OAAO,CAAC,EAAE;MAC3D,OAAO/tC,MAAM;IACf;EACF;EACA,OAAOA,MAAM;AACf;AAEA,+CAAe;EACbgf,QAAQ,EAARA,QAAQ;EAER;EACAsI,GAAG,EAAHA,GAAG;EACHimB,cAAc,EAAdA,cAAc;EACdE,eAAe,EAAfA,eAAe;EACfD,kBAAkB,EAAlBA;AACF,CAAC;;;;;;;;ACxHM,IAAM1zB,OAAO;EAClB,SAAAA,QAAYq0B,aAAa,EAAE;IAAAl+B,sBAAA,OAAA6J,OAAA;IACzB,IAAI,CAACs0B,eAAe,GAAGD,aAAa,GAAG,IAAIE,GAAG,CAACF,aAAa,CAAC,GAAG,IAAIE,GAAG,CAAC,CAAC;EAC3E;EAAC,OAAA59B,mBAAA,CAAAqJ,OAAA;IAAAra,GAAA;IAAA+B,KAAA,EAED,SAAA8sC,QAAQA,CAAC7uC,GAAG,EAAE;MACZ,OAAO,IAAI,CAAC2uC,eAAe,CAACniC,GAAG,CAACxM,GAAG,CAAC;IACtC;EAAC;IAAAA,GAAA;IAAA+B,KAAA,EAED,SAAA+sC,QAAQA,CAAC9uC,GAAG,EAAE+B,KAAK,EAAE;MACnB,IAAM2G,OAAO,GAAG,IAAI2R,OAAO,CAAC,IAAI,CAACs0B,eAAe,CAAC;MACjDjmC,OAAO,CAACimC,eAAe,CAAChiC,GAAG,CAAC3M,GAAG,EAAE+B,KAAK,CAAC;MACvC,OAAO2G,OAAO;IAChB;EAAC;IAAA1I,GAAA;IAAA+B,KAAA,EAED,SAAAgtC,WAAWA,CAAC/uC,GAAG,EAAE;MACf,IAAM0I,OAAO,GAAG,IAAI2R,OAAO,CAACxB,IAAI,CAAC81B,eAAe,CAAC;MACjDjmC,OAAO,CAACimC,eAAe,CAACK,MAAM,CAAChvC,GAAG,CAAC;MACnC,OAAO0I,OAAO;IAChB;EAAC;AAAA;AAGI,IAAMumC,YAAY,GAAG,IAAI50B,OAAO,CAAC,CAAC;;;;;;;;ACtBG;AAErC,IAAM60B,cAAc;EACzB,SAAAA,eAAA,EAAc;IAAA1+B,6BAAA,OAAA0+B,cAAA;IACZ,IAAI,CAACC,cAAc,GAAGF,YAAY;EACpC;EAAC,OAAAj+B,0BAAA,CAAAk+B,cAAA;IAAAlvC,GAAA;IAAA+B,KAAA,EAED,SAAAuV,MAAMA,CAAA,EAAG;MACP,OAAO,IAAI,CAAC63B,cAAc;IAC5B;EAAC;IAAAnvC,GAAA;IAAA+B,KAAA,EAED,SAAAqtC,YAAYA,CAAC1mC,OAAO,EAAE;MACpB,IAAM2mC,eAAe,GAAG,IAAI,CAACF,cAAc;MAC3C,IAAI,CAACA,cAAc,GAAGzmC,OAAO,IAAIumC,YAAY;MAC7C,OAAOI,eAAe;IACxB;EAAC;IAAArvC,GAAA;IAAA+B,KAAA,EAED,SAAAutC,WAAWA,CAAC5mC,OAAO,EAAE;MACnB,IAAI,CAACymC,cAAc,GAAGzmC,OAAO;MAC7B,OAAO,IAAI,CAACymC,cAAc;IAC5B;EAAC;IAAAnvC,GAAA;IAAA+B,KAAA,EAED,SAAAwtC,KAAIA,CAAC7mC,OAAO,EAAEuY,EAAE,EAAEqe,OAAO,EAAW;MAClC,IAAM+P,eAAe,GAAG,IAAI,CAACD,YAAY,CAAC1mC,OAAO,CAAC;MAClD,IAAI;QAAA,SAAAkX,IAAA,GAAAjf,SAAA,CAAAD,MAAA,EAFwBkJ,IAAI,OAAAiW,KAAA,CAAAD,IAAA,OAAAA,IAAA,WAAAE,IAAA,MAAAA,IAAA,GAAAF,IAAA,EAAAE,IAAA;UAAJlW,IAAI,CAAAkW,IAAA,QAAAnf,SAAA,CAAAmf,IAAA;QAAA;QAG9B,OAAOmB,EAAE,CAACrhB,IAAI,CAAAme,KAAA,CAAPkD,EAAE,GAAMqe,OAAO,EAAA3xB,MAAA,CAAK/D,IAAI,EAAC;MAClC,CAAC,SAAS;QACR,IAAI,CAAC0lC,WAAW,CAACD,eAAe,CAAC;MACnC;IACF;EAAC;AAAA;AAGI,SAASG,gBAAgBA,CAACxvC,GAAG,EAAE;EACpC;EACA,OAAO2Z,MAAM,CAAC81B,GAAG,CAACzvC,GAAG,CAAC;AACxB;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS0vC,GAAGA,CAAA,EAAa;EAAA,IAAZC,KAAK,GAAAhvC,SAAA,CAAAD,MAAA,QAAAC,SAAA,QAAA0E,SAAA,GAAA1E,SAAA,MAAG,EAAE;EACrB,IAAIivC,WAAW,GAAG,IAAIC,UAAU,CAACF,KAAK,CAAC;EACvCG,MAAM,CAACC,eAAe,CAACH,WAAW,CAAC;EACnC,IAAII,OAAO,GAAGnwB,KAAK,CAACse,IAAI,CAACyR,WAAW,EAAE,UAACK,IAAI;IAAA,OACzCA,IAAI,CAACxwC,QAAQ,CAAC,EAAE,CAAC,CAACywC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAAA,CACpC,CAAC,CAAC5pC,IAAI,CAAC,EAAE,CAAC;EACV,OAAO0pC,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAe;EAAEN,GAAG,EAAHA;AAAI,CAAC;;;;;;;;;;;ACvBG;AAEzB,IAAMS,WAAW,GAAG,gBAAgB;AAE7B,IAAMC,OAAO;EAGlB,SAAAA,QAAYx7B,OAAO,EAAE5O,OAAO,EAAE;IAAAwK,sBAAA,OAAA4/B,OAAA;IAAAt8B,sBAAA;IAC5B,IAAI,CAAC9N,OAAO,GAAGA,OAAO;IACtB,IAAI,CAAC4O,OAAO,GAAGA,OAAO;IACtB,IAAI,CAAC5R,MAAM,GAAG4R,OAAO,CAAC5R,MAAM;IAC5B,IAAI,CAACq0B,OAAO,GAAG,IAAI;IACnB,IAAI,CAACgZ,WAAW,GAAG,CAAC,CAAC;EACvB;EAAC,OAAAr/B,mBAAA,CAAAo/B,OAAA;IAAApwC,GAAA;IAAA+B,KAAA,EAED,SAAAwe,IAAIA,CAAA,EAAa;MAAA,IAAZiX,KAAK,GAAA72B,SAAA,CAAAD,MAAA,QAAAC,SAAA,QAAA0E,SAAA,GAAA1E,SAAA,MAAG,CAAC,CAAC;MACb,IAAI,IAAI,CAAC02B,OAAO,EAAE;QAChB,OAAO,IAAI;MACb;MACA,IAAI,CAACiZ,UAAU,CAAC,CAAC,IAAI,IAAI,CAACC,aAAa,CAAC,CAAC;MAEzC,IAAI,CAACC,qBAAqB,CAAChZ,KAAK,CAAC;MAEjC,OAAO,IAAI;IACb;EAAC;IAAAx3B,GAAA;IAAA+B,KAAA,EAED,SAAAuuC,UAAUA,CAAA,EAAG;MACX,IAAI;QACF,IAAMG,iBAAiB,GAAG,IAAI,CAACztC,MAAM,CAAC0tC,cAAc,CAACC,OAAO,CAACR,WAAW,CAAC;QAEzE,IAAI,CAACM,iBAAiB,EAAE;UACtB,OAAO,IAAI;QACb;QAEA,IAAI,CAACpZ,OAAO,GAAGlwB,IAAI,CAACU,KAAK,CAAC4oC,iBAAiB,CAAC;MAC9C,CAAC,CAAC,OAAAG,OAAA,EAAM;QACN,OAAO,IAAI;MACb;MACA,OAAO,IAAI;IACb;EAAC;IAAA5wC,GAAA;IAAA+B,KAAA,EAED,SAAAwuC,aAAaA,CAAA,EAAG;MACd,IAAI,CAAClZ,OAAO,GAAG;QACbgL,EAAE,EAAEA,EAAE,CAACqN,GAAG,CAAC,CAAC;QACZmB,SAAS,EAAE5jC,IAAI,CAAC7J,GAAG,CAAC;MACtB,CAAC;MAED,OAAO,IAAI,CAAC0tC,UAAU,CAAC,IAAI,CAACzZ,OAAO,CAAC;IACtC;EAAC;IAAAr3B,GAAA;IAAA+B,KAAA,EAED,SAAA+uC,UAAUA,CAACzZ,OAAO,EAAE;MAClB,IAAM0Z,aAAa,GAAG5pC,IAAI,CAACF,SAAS,CAACowB,OAAO,CAAC;MAE7C,IAAI;QACF,IAAI,CAACr0B,MAAM,CAAC0tC,cAAc,CAACM,OAAO,CAACb,WAAW,EAAEY,aAAa,CAAC;MAChE,CAAC,CAAC,OAAAE,QAAA,EAAM;QACN,OAAO,IAAI;MACb;MACA,OAAO,IAAI;IACb;EAAC;IAAAjxC,GAAA;IAAAwM,GAAA,EAED,SAAAA,IAAA,EAAiB;MACf,OAAO,IAAI,CAAC6jC,WAAW;IACzB;EAAC;IAAArwC,GAAA;IAAA+B,KAAA,EAED,SAAA21B,aAAaA,CAACxrB,UAAU,EAAE;MACxB,IAAI,CAACmkC,WAAW,GAAA5wB,oBAAA,CAAAA,oBAAA,KAAQ,IAAI,CAAC4wB,WAAW,GAAKnkC,UAAU,CAAE;MACzD,OAAO,IAAI;IACb;EAAC;IAAAlM,GAAA;IAAA+B,KAAA,EAED,SAAAu1B,OAAOA,CAACF,IAAI,EAAE;MACZ,IAAI,CAACM,aAAa,CAAC;QACjB,SAAS,EAAEN,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEiL,EAAE;QACnB,YAAY,EAAEjL,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAErF,KAAK;QACzB,WAAW,EAAE,CAAAqF,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE92B,IAAI,MAAI82B,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE8Z,QAAQ;MAC3C,CAAC,CAAC;MACF,OAAO,IAAI;IACb;EAAC;IAAAlxC,GAAA;IAAA+B,KAAA,EAED,SAAAyuC,qBAAqBA,CAAChZ,KAAK,EAAE;MAAA,IAAA2Z,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA;MAC3B,IAAI,CAAC3Z,aAAa,CAAAjY,oBAAA;QAChB,YAAY,EAAE,IAAI,CAAC4X,OAAO,CAACgL,EAAE;QAC7B,gBAAgB,GAAA8O,qBAAA,GAAEpoC,SAAS,CAACuoC,aAAa,cAAAH,qBAAA,uBAAvBA,qBAAA,CAAyBI,MAAM;QACjD,kBAAkB,EAAExoC,SAAS,CAACkH,QAAQ;QACtC,gBAAgB,GAAAmhC,sBAAA,GAAEroC,SAAS,CAACuoC,aAAa,cAAAF,sBAAA,uBAAvBA,sBAAA,CAAyBI,MAAM;QACjD,kBAAkB,GAAAH,sBAAA,GAAEtoC,SAAS,CAACuoC,aAAa,cAAAD,sBAAA,uBAAvBA,sBAAA,CAAyB1iC,QAAQ;QACrD,gBAAgB,EAAE,YAAY;QAAE;QAChC,4BAA4B,EAAE,YAAY;QAC1C,qBAAqB,EAAE5F,SAAS,CAACC;MAAS,GACvCwuB,KAAK,CACT,CAAC;MACF,OAAO,IAAI;IACb;EAAC;AAAA;;AC5FH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASsC,iBAAUA,CAACC,MAAM,EAAE;EAC1B,OAAO,CAACv2B,IAAI,CAACw2B,KAAK,CAACD,MAAM,GAAG,IAAI,CAAC,EAAEv2B,IAAI,CAACqoB,KAAK,CAAEkO,MAAM,GAAG,IAAI,GAAI,GAAG,CAAC,CAAC;AACvE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS0X,QAAQA,CAACC,MAAM,EAAE;EACxB,OAAOA,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGluC,IAAI,CAACqoB,KAAK,CAAC6lB,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACtD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,OAAOA,CAACD,MAAM,EAAE;EACvB,OAAOA,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGA,MAAM,CAAC,CAAC,CAAC;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASE,GAAGA,CAACrlC,CAAC,EAAE23B,CAAC,EAAE;EACjB,OAAO,CAAC33B,CAAC,CAAC,CAAC,CAAC,GAAG23B,CAAC,CAAC,CAAC,CAAC,GAAG1gC,IAAI,CAACw2B,KAAK,CAAC,CAACztB,CAAC,CAAC,CAAC,CAAC,GAAG23B,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC33B,CAAC,CAAC,CAAC,CAAC,GAAG23B,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC7E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS9gC,GAAGA,CAAA,EAAyB;EAAA,IAAxByuC,cAAc,GAAAlxC,SAAA,CAAAD,MAAA,QAAAC,SAAA,QAAA0E,SAAA,GAAA1E,SAAA,MAAG,KAAK;EACjC,IAAIkxC,cAAc,EAAE;IAClB,OAAOD,GAAG,CACR9X,iBAAU,CAACgY,WAAW,CAACC,UAAU,CAAC,EAClCjY,iBAAU,CAACgY,WAAW,CAAC1uC,GAAG,CAAC,CAAC,CAC9B,CAAC;EACH;EACA,OAAO02B,iBAAU,CAAC7sB,IAAI,CAAC7J,GAAG,CAAC,CAAC,CAAC;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS4uC,QAAQA,CAACjwC,KAAK,EAAE;EACvB,OACE8d,KAAK,CAACqH,OAAO,CAACnlB,KAAK,CAAC,IACpBA,KAAK,CAACrB,MAAM,KAAK,CAAC,IAClB,OAAOqB,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAC5B,OAAOA,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;AAEhC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAAe;EAAE+3B,UAAU,EAAVA,iBAAU;EAAE2X,QAAQ,EAARA,QAAQ;EAAEE,OAAO,EAAPA,OAAO;EAAEC,GAAG,EAAHA,GAAG;EAAExuC,GAAG,EAAHA,GAAG;EAAE4uC,QAAQ,EAARA;AAAS,CAAC;;;;;;;;;;;;;;;;;;;ACvGnC;;AAEjC;AACA;AACA;AACA;AACO,IAAMC,YAAY;EACvB,SAAAA,aAAY3hC,GAAG,EAAgB;IAAA,IAAdtK,OAAO,GAAArF,SAAA,CAAAD,MAAA,QAAAC,SAAA,QAAA0E,SAAA,GAAA1E,SAAA,MAAG,CAAC,CAAC;IAAA6P,uBAAA,OAAAyhC,YAAA;IAC3B,IAAI,CAAC3hC,GAAG,GAAGA,GAAG;IACd,IAAI,CAACtK,OAAO,GAAGA,OAAO;EACxB;;EAEA;AACF;AACA;AACA;AACA;AACA;EALE,OAAAgL,oBAAA,CAAAihC,YAAA;IAAAjyC,GAAA;IAAA+B,KAAA,EAMA,SAAAmwC,OAAMA,CAACC,KAAK,EAAEC,eAAe,EAAE;MAC7BC,eAAe,CAAChsC,IAAI,CAAA0X,KAAA,CAApBs0B,eAAe,EAAAve,0BAAA,CAASqe,KAAK,EAAC;IAChC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAnyC,GAAA;IAAA+B,KAAA,EAOA,SAAAuwC,SAASA,CAAA,EAAG;MAAA,IAAAzgC,KAAA;MACV,IAAMsgC,KAAK,GAAGE,eAAe,CAAC3oC,KAAK,CAAC,CAAC;MACrC2oC,eAAe,CAAC3xC,MAAM,GAAG,CAAC;MAE1B,IAAI,CAACyxC,KAAK,IAAI,CAACA,KAAK,CAACzxC,MAAM,EAAE;QAC3B,OAAO;UAAE6xC,aAAa,EAAE;QAAG,CAAC;MAC9B;MAEA,IAAMC,QAAQ,GAAIL,KAAK,CAAC,CAAC,CAAC,IAAIA,KAAK,CAAC,CAAC,CAAC,CAACK,QAAQ,IAAK,CAAC,CAAC;MAEtD,IAAMC,QAAQ,GAAG,IAAI7D,GAAG,CAAC,CAAC;MAAC,IAAAziC,SAAA,GAAAC,kCAAA,CAER+lC,KAAK;QAAA9lC,KAAA;MAAA;QAAxB,KAAAF,SAAA,CAAAvE,CAAA,MAAAyE,KAAA,GAAAF,SAAA,CAAA/J,CAAA,IAAAkK,IAAA,GAA0B;UAAA,IAAfqK,IAAI,GAAAtK,KAAA,CAAAtK,KAAA;UACb,IAAM2wC,QAAQ,GAAG/7B,IAAI,CAACg8B,oBAAoB,MAAAhlC,MAAA,CACnCgJ,IAAI,CAACg8B,oBAAoB,CAACryC,IAAI,OAAAqN,MAAA,CAAIgJ,IAAI,CAACg8B,oBAAoB,CAACziC,OAAO,IACtE,eAAe;UAEnB,IAAI,CAACuiC,QAAQ,CAACpT,GAAG,CAACqT,QAAQ,CAAC,EAAE;YAC3BD,QAAQ,CAAC9lC,GAAG,CAAC+lC,QAAQ,EAAE;cACrBr7B,KAAK,EAAEV,IAAI,CAACg8B,oBAAoB,IAAI;gBAClCryC,IAAI,EAAE,SAAS;gBACf4P,OAAO,EAAE,OAAO;gBAChBhE,UAAU,EAAE;cACd,CAAC;cACDimC,KAAK,EAAE;YACT,CAAC,CAAC;UACJ;UAEAM,QAAQ,CAACjmC,GAAG,CAACkmC,QAAQ,CAAC,CAACP,KAAK,CAAC9rC,IAAI,CAAC,IAAI,CAACusC,cAAc,CAACj8B,IAAI,CAAC,CAAC;QAC9D;MAAC,SAAAvN,GAAA;QAAA+C,SAAA,CAAAxJ,CAAA,CAAAyG,GAAA;MAAA;QAAA+C,SAAA,CAAA9K,CAAA;MAAA;MAED,OAAO;QACLkxC,aAAa,EAAE,CACb;UACEC,QAAQ,EAAE,IAAI,CAACK,kBAAkB,CAACL,QAAQ,CAAC;UAC3CM,UAAU,EAAEjzB,KAAK,CAACse,IAAI,CAACsU,QAAQ,CAAC53B,MAAM,CAAC,CAAC,CAAC,CAACwM,GAAG,CAAC,UAAC0rB,SAAS;YAAA,OAAM;cAC5D17B,KAAK,EAAExF,KAAI,CAACmhC,8BAA8B,CAACD,SAAS,CAAC17B,KAAK,CAAC;cAC3D86B,KAAK,EAAEY,SAAS,CAACZ;YACnB,CAAC;UAAA,CAAC;QACJ,CAAC;MAEL,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAnyC,GAAA;IAAA+B,KAAA,EAOA,SAAA8c,IAAIA,CAAC/Q,OAAO,EAAgB;MAAA,IAAdwE,OAAO,GAAA3R,SAAA,CAAAD,MAAA,QAAAC,SAAA,QAAA0E,SAAA,GAAA1E,SAAA,MAAG,CAAC,CAAC;MACxB,OAAO,IAAI,CAAC2P,GAAG,CAACyO,SAAS,CAACjR,OAAO,EAAEwE,OAAO,CAAC;IAC7C;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAtS,GAAA;IAAA+B,KAAA,EAOA,SAAA6wC,cAAcA,CAACj8B,IAAI,EAAE;MAAA,IAAA/D,MAAA;MACnB,IAAMqgC,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAI/mC,UAAU,EAAK;QAC1C,OAAO7M,MAAM,CAAC6kB,OAAO,CAAChY,UAAU,IAAI,CAAC,CAAC,CAAC,CAACmb,GAAG,CAAC,UAAA1I,IAAA;UAAA,IAAAK,KAAA,GAAAoF,sBAAA,CAAAzF,IAAA;YAAE3e,GAAG,GAAAgf,KAAA;YAAEjd,KAAK,GAAAid,KAAA;UAAA,OAAO;YAC7Dhf,GAAG,EAAHA,GAAG;YACH+B,KAAK,EAAE6Q,MAAI,CAACsgC,kBAAkB,CAACnxC,KAAK;UACtC,CAAC;QAAA,CAAC,CAAC;MACL,CAAC;MAED,IAAMoxC,eAAe,GAAG,SAAlBA,eAAeA,CAAI1Y,MAAM,EAAK;QAClC,OAAO,CAACA,MAAM,IAAI,EAAE,EAAEpT,GAAG,CAAC,UAACtb,KAAK;UAAA,OAAM;YACpCqnC,YAAY,EAAE1B,MAAM,CAACC,OAAO,CAAC5lC,KAAK,CAACwmB,IAAI,CAAC;YACxCjyB,IAAI,EAAEyL,KAAK,CAACzL,IAAI;YAChB4L,UAAU,EAAE+mC,mBAAmB,CAAClnC,KAAK,CAACG,UAAU;UAClD,CAAC;QAAA,CAAC,CAAC;MACL,CAAC;MAED,OAAO;QACL6K,OAAO,EAAEJ,IAAI,CAACqB,WAAW,CAACjB,OAAO;QACjCD,MAAM,EAAEH,IAAI,CAACqB,WAAW,CAAClB,MAAM;QAC/Bu8B,YAAY,EAAE18B,IAAI,CAAC08B,YAAY,IAAI,EAAE;QACrC/yC,IAAI,EAAEqW,IAAI,CAACrW,IAAI;QACf0qC,IAAI,EAAEr0B,IAAI,CAACq0B,IAAI,IAAI,CAAC;QAAE;QACtBsI,iBAAiB,EAAE5B,MAAM,CAACC,OAAO,CAACh7B,IAAI,CAACnI,SAAS,CAAC;QACjDiuB,eAAe,EAAEiV,MAAM,CAACC,OAAO,CAACh7B,IAAI,CAAC48B,OAAO,CAAC;QAC7CrnC,UAAU,EAAE+mC,mBAAmB,CAACt8B,IAAI,CAACzK,UAAU,CAAC;QAChDuuB,MAAM,EAAE0Y,eAAe,CAACx8B,IAAI,CAAC8jB,MAAM;MACrC,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAz6B,GAAA;IAAA+B,KAAA,EAOA,SAAA8wC,kBAAkBA,CAACL,QAAQ,EAAE;MAAA,IAAAx/B,MAAA;MAC3B,IAAM9G,UAAU,GAAGsmC,QAAQ,CAACtmC,UAAU,IAAI,CAAC,CAAC;MAC5C,IAAMsnC,SAAS,GAAGn0C,MAAM,CAAC6kB,OAAO,CAAChY,UAAU,CAAC,CAACmb,GAAG,CAAC,UAAAwV,KAAA;QAAA,IAAAS,KAAA,GAAAlZ,sBAAA,CAAAyY,KAAA;UAAE78B,GAAG,GAAAs9B,KAAA;UAAEv7B,KAAK,GAAAu7B,KAAA;QAAA,OAAO;UAClEt9B,GAAG,EAAHA,GAAG;UACH+B,KAAK,EAAEiR,MAAI,CAACkgC,kBAAkB,CAACnxC,KAAK;QACtC,CAAC;MAAA,CAAC,CAAC;MAEH,OAAO;QACLmK,UAAU,EAAEsnC;MACd,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAxzC,GAAA;IAAA+B,KAAA,EAOA,SAAAixC,8BAA8BA,CAAC37B,KAAK,EAAE;MAAA,IAAA3D,MAAA;MACpC,OAAO;QACLpT,IAAI,EAAE+W,KAAK,CAAC/W,IAAI,IAAI,EAAE;QACtB4P,OAAO,EAAEmH,KAAK,CAACnH,OAAO,IAAI,EAAE;QAC5BhE,UAAU,EAAE,CAACmL,KAAK,CAACnL,UAAU,IAAI,EAAE,EAAEmb,GAAG,CAAC,UAACkb,IAAI;UAAA,OAAM;YAClDviC,GAAG,EAAEuiC,IAAI,CAACviC,GAAG;YACb+B,KAAK,EAAE2R,MAAI,CAACw/B,kBAAkB,CAAC3Q,IAAI,CAACxgC,KAAK;UAC3C,CAAC;QAAA,CAAC;MACJ,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA/B,GAAA;IAAA+B,KAAA,EAOA,SAAAmxC,kBAAkBA,CAACnxC,KAAK,EAAE;MAAA,IAAA0xC,MAAA;MACxB,IAAI1xC,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAKsD,SAAS,EAAE;QACzC,OAAO;UAAEquC,WAAW,EAAE;QAAG,CAAC;MAC5B;MAEA,IAAM1xC,IAAI,GAAAhB,eAAA,CAAUe,KAAK;MAEzB,IAAIC,IAAI,KAAK,QAAQ,EAAE;QACrB,OAAO;UAAE0xC,WAAW,EAAE3xC;QAAM,CAAC;MAC/B,CAAC,MAAM,IAAIC,IAAI,KAAK,QAAQ,EAAE;QAC5B,IAAIK,MAAM,CAACsxC,SAAS,CAAC5xC,KAAK,CAAC,EAAE;UAC3B,OAAO;YAAE6xC,QAAQ,EAAE7xC,KAAK,CAACtC,QAAQ,CAAC;UAAE,CAAC;QACvC,CAAC,MAAM;UACL,OAAO;YAAEo0C,WAAW,EAAE9xC;UAAM,CAAC;QAC/B;MACF,CAAC,MAAM,IAAIC,IAAI,KAAK,SAAS,EAAE;QAC7B,OAAO;UAAE8xC,SAAS,EAAE/xC;QAAM,CAAC;MAC7B,CAAC,MAAM,IAAI8d,KAAK,CAACqH,OAAO,CAACnlB,KAAK,CAAC,EAAE;QAC/B,OAAO;UACLgyC,UAAU,EAAE;YACVl5B,MAAM,EAAE9Y,KAAK,CAACslB,GAAG,CAAC,UAACzM,CAAC;cAAA,OAAK64B,MAAI,CAACP,kBAAkB,CAACt4B,CAAC,CAAC;YAAA;UACrD;QACF,CAAC;MACH,CAAC,MAAM,IAAI5Y,IAAI,KAAK,QAAQ,EAAE;QAC5B,OAAO;UACLgyC,WAAW,EAAE;YACXn5B,MAAM,EAAExb,MAAM,CAAC6kB,OAAO,CAACniB,KAAK,CAAC,CAACslB,GAAG,CAAC,UAAAoW,KAAA;cAAA,IAAAG,KAAA,GAAAxZ,sBAAA,CAAAqZ,KAAA;gBAAEr3B,CAAC,GAAAw3B,KAAA;gBAAEhjB,CAAC,GAAAgjB,KAAA;cAAA,OAAO;gBAC7C59B,GAAG,EAAEoG,CAAC;gBACNrE,KAAK,EAAE0xC,MAAI,CAACP,kBAAkB,CAACt4B,CAAC;cAClC,CAAC;YAAA,CAAC;UACJ;QACF,CAAC;MACH;MAEA,OAAO;QAAE84B,WAAW,EAAExxC,MAAM,CAACH,KAAK;MAAE,CAAC;IACvC;EAAC;AAAA;AAGI,IAAMswC,eAAe,GAAG,EAAE;;;;;;;;;;;AC1MC;AAE3B,IAAM4B,aAAa;EACxB,SAAAA,cAAYC,QAAQ,EAAgB;IAAA,IAAdluC,OAAO,GAAArF,SAAA,CAAAD,MAAA,QAAAC,SAAA,QAAA0E,SAAA,GAAA1E,SAAA,MAAG,CAAC,CAAC;IAAA6P,4BAAA,OAAAyjC,aAAA;IAChC,IAAI,CAACC,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACluC,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACmuC,YAAY,GAAG,IAAIvF,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC36B,UAAU,GAAG,CAAC,IAAI,CAACua,aAAa,CAACla,IAAI,CAAC,IAAI,CAAC,CAAC;EACnD;EAAC,OAAAtD,yBAAA,CAAAijC,aAAA;IAAAj0C,GAAA;IAAA+B,KAAA,EAED,SAAAmS,YAAYA,CAACkgC,WAAW,EAAE;MACxB,IAAI,CAACngC,UAAU,CAACuM,OAAO,CAAC4zB,WAAW,CAAC;IACtC;EAAC;IAAAp0C,GAAA;IAAA+B,KAAA,EAED,SAAAysB,aAAaA,CAAC7X,IAAI,EAAE;MAClB,IAAI,IAAI,CAAC3Q,OAAO,CAACquC,aAAa,EAAE;QAC9B,IAAI,CAACruC,OAAO,CAACquC,aAAa,CAAC;UAAE19B,IAAI,EAAEA;QAAK,CAAC,CAAC;MAC5C;IACF;EAAC;IAAA3W,GAAA;IAAA+B,KAAA,EAED,SAAAuyC,eAAeA,CAAC39B,IAAI,EAAE;MAAA,IAAAxK,SAAA,GAAAC,uCAAA,CACI,IAAI,CAAC6H,UAAU;QAAA5H,KAAA;MAAA;QAAvC,KAAAF,SAAA,CAAAvE,CAAA,MAAAyE,KAAA,GAAAF,SAAA,CAAA/J,CAAA,IAAAkK,IAAA,GAAyC;UAAA,IAA9B6H,SAAS,GAAA9H,KAAA,CAAAtK,KAAA;UAClB,IAAI;YACFoS,SAAS,CAACwC,IAAI,CAAC;UACjB,CAAC,CAAC,OAAOhU,CAAC,EAAE;YACVwG,UAAM,CAACpF,KAAK,CAAC,uCAAuC,EAAEpB,CAAC,CAAC;UAC1D;QACF;MAAC,SAAAyG,GAAA;QAAA+C,SAAA,CAAAxJ,CAAA,CAAAyG,GAAA;MAAA;QAAA+C,SAAA,CAAA9K,CAAA;MAAA;IACH;EAAC;IAAArB,GAAA;IAAA+B,KAAA,EAED,SAAAwyC,OAAOA,CAAC59B,IAAI,EAAE69B,cAAc,EAAE;MAC5B,IAAI,CAACL,YAAY,CAACxnC,GAAG,CAACgK,IAAI,CAACA,IAAI,CAACqB,WAAW,CAAClB,MAAM,EAAEH,IAAI,CAAC;IAC3D;EAAC;IAAA3W,GAAA;IAAA+B,KAAA,EAED,SAAA0yC,KAAKA,CAAC99B,IAAI,EAAE;MACV,IAAI,CAAC29B,eAAe,CAAC39B,IAAI,CAACA,IAAI,CAAC;MAC/B,IAAI,CAACu9B,QAAQ,CAAChC,MAAM,CAAC,CAACv7B,IAAI,CAACu7B,MAAM,CAAC,CAAC,CAAC,CAAC;MACrC,IAAI,CAACiC,YAAY,CAACnF,MAAM,CAACr4B,IAAI,CAACA,IAAI,CAACqB,WAAW,CAAClB,MAAM,CAAC;IACxD;EAAC;AAAA;;;;;;;;;;;;;;ACtC8B;AAE1B,IAAM49B,IAAI;EACf,SAAAA,KAAY1uC,OAAO,EAAE;IAAAwK,mBAAA,OAAAkkC,IAAA;IACnB,IAAI,CAAC7C,cAAc,GAAG7rC,OAAO,CAAC6rC,cAAc;IAC5C,IAAI,CAAC8C,gBAAgB,CAAC3uC,OAAO,CAAC;IAE9B,IAAI,CAAC4uC,aAAa,GAAG5uC,OAAO,CAAC4uC,aAAa;IAC1C,IAAI,CAACA,aAAa,CAACL,OAAO,CAAC,IAAI,EAAEvuC,OAAO,CAAC0C,OAAO,CAAC;IAEjD,IAAI1C,OAAO,CAACkG,UAAU,EAAE;MACtB,IAAI,CAACwrB,aAAa,CAAC1xB,OAAO,CAACkG,UAAU,CAAC;IACxC;IACA,OAAO,IAAI;EACb;EAAC,OAAA8E,gBAAA,CAAA0jC,IAAA;IAAA10C,GAAA;IAAA+B,KAAA,EAED,SAAA4yC,gBAAgBA,CAAC3uC,OAAO,EAAE;MAAA,IAAA6uC,gBAAA;MACxB,IAAI,CAACl+B,IAAI,GAAG;QACVrW,IAAI,EAAE0F,OAAO,CAAC1F,IAAI;QAClB0qC,IAAI,EAAEhlC,OAAO,CAACglC,IAAI;QAClBhzB,WAAW,EAAEhS,OAAO,CAACgS,WAAW;QAChCq7B,YAAY,EAAErtC,OAAO,CAACqtC,YAAY;QAClC7kC,SAAS,EAAExI,OAAO,CAACwI,SAAS,IAAIkjC,MAAM,CAACtuC,GAAG,CAAC4C,OAAO,CAAC6rC,cAAc,CAAC;QAClE0B,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf7vB,MAAM,EAAE;UAAEjc,IAAI,EAAE,CAAC;UAAEM,OAAO,EAAE;QAAG,CAAC;QAChCmE,UAAU,EAAE;UAAE,YAAY,GAAA2oC,gBAAA,GAAE7uC,OAAO,CAACqxB,OAAO,cAAAwd,gBAAA,uBAAfA,gBAAA,CAAiBxS;QAAG,CAAC;QACjDyS,KAAK,EAAE,EAAE;QACTra,MAAM,EAAE,EAAE;QACVyC,QAAQ,EAAE,CAAC;QACX6X,KAAK,EAAE,KAAK;QACZvC,QAAQ,EAAExsC,OAAO,CAACwsC,QAAQ;QAC1BG,oBAAoB,EAAE3sC,OAAO,CAACqR,KAAK;QACnC29B,sBAAsB,EAAE,CAAC;QACzBC,kBAAkB,EAAE,CAAC;QACrBC,iBAAiB,EAAE;MACrB,CAAC;IACH;EAAC;IAAAl1C,GAAA;IAAA+B,KAAA,EAED,SAAAiW,WAAWA,CAAA,EAAG;MACZ,OAAO,IAAI,CAACrB,IAAI,CAACqB,WAAW;IAC9B;EAAC;IAAAhY,GAAA;IAAAwM,GAAA,EAED,SAAAA,IAAA,EAAa;MACX,OAAO,IAAI,CAACmK,IAAI,CAACqB,WAAW,CAAClB,MAAM;IACrC;EAAC;IAAA9W,GAAA;IAAAwM,GAAA,EAED,SAAAA,IAAA,EAAc;MACZ,OAAO,IAAI,CAACmK,IAAI,CAACqB,WAAW,CAACjB,OAAO;IACtC;EAAC;IAAA/W,GAAA;IAAA+B,KAAA,EAED,SAAAozC,YAAYA,CAACn1C,GAAG,EAAE+B,KAAK,EAAE;MACvB,IAAIA,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC4U,IAAI,CAACo+B,KAAK,EAAE,OAAO,IAAI;MACjD,IAAI/0C,GAAG,CAACU,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;MAEjC,IAAI,CAACiW,IAAI,CAACzK,UAAU,CAAClM,GAAG,CAAC,GAAG+B,KAAK;MACjC,OAAO,IAAI;IACb;EAAC;IAAA/B,GAAA;IAAA+B,KAAA,EAED,SAAA21B,aAAaA,CAACxrB,UAAU,EAAE;MACxB,SAAA8X,EAAA,MAAAC,eAAA,GAAqB5kB,MAAM,CAAC6kB,OAAO,CAAChY,UAAU,CAAC,EAAA8X,EAAA,GAAAC,eAAA,CAAAvjB,MAAA,EAAAsjB,EAAA,IAAE;QAA5C,IAAAG,kBAAA,GAAAC,kBAAA,CAAAH,eAAA,CAAAD,EAAA;UAAO5d,CAAC,GAAA+d,kBAAA;UAAEvJ,CAAC,GAAAuJ,kBAAA;QACd,IAAI,CAACgxB,YAAY,CAAC/uC,CAAC,EAAEwU,CAAC,CAAC;MACzB;MACA,OAAO,IAAI;IACb;EAAC;IAAA5a,GAAA;IAAA+B,KAAA,EAED,SAAAiV,QAAQA,CAAC1W,IAAI,EAAyB;MAAA,IAAvB4L,UAAU,GAAAvL,SAAA,CAAAD,MAAA,QAAAC,SAAA,QAAA0E,SAAA,GAAA1E,SAAA,MAAG,CAAC,CAAC;MAAA,IAAE4xB,IAAI,GAAA5xB,SAAA,CAAAD,MAAA,OAAAC,SAAA,MAAA0E,SAAA;MAClC,IAAI,IAAI,CAACsR,IAAI,CAACo+B,KAAK,EAAE,OAAO,IAAI;MAEhC,IAAI,CAACp+B,IAAI,CAAC8jB,MAAM,CAACp0B,IAAI,CAAC;QACpB/F,IAAI,EAAJA,IAAI;QACJ4L,UAAU,EAAVA,UAAU;QACVqmB,IAAI,EAAEA,IAAI,IAAImf,MAAM,CAACtuC,GAAG,CAAC,CAAC;QAC1B4xC,sBAAsB,EAAE;MAC1B,CAAC,CAAC;MAEF,OAAO,IAAI;IACb;EAAC;IAAAh1C,GAAA;IAAA+B,KAAA,EAED,SAAAqzC,WAAWA,CAAA,EAAG;MACZ,OAAO,IAAI,CAACz+B,IAAI,CAACo+B,KAAK,KAAK,KAAK;IAClC;EAAC;IAAA/0C,GAAA;IAAA+B,KAAA,EAED,SAAAg5B,GAAGA,CAAC7uB,UAAU,EAAEqmB,IAAI,EAAE;MACpB,IAAIrmB,UAAU,EAAE,IAAI,CAACwrB,aAAa,CAACxrB,UAAU,CAAC;MAC9C,IAAI,CAACyK,IAAI,CAAC48B,OAAO,GAAGhhB,IAAI,IAAImf,MAAM,CAACtuC,GAAG,CAAC,IAAI,CAACyuC,cAAc,CAAC;MAC3D,IAAI,CAACl7B,IAAI,CAACo+B,KAAK,GAAG,IAAI;MACtB,IAAI,CAACH,aAAa,CAACH,KAAK,CAAC,IAAI,CAAC;IAChC;EAAC;IAAAz0C,GAAA;IAAA+B,KAAA,EAED,SAAAmwC,OAAMA,CAAA,EAAG;MACP,OAAO,IAAI,CAACv7B,IAAI;IAClB;EAAC;AAAA;;;;;;;;;;;AC3F8B;AACR;AAElB,IAAM0+B,MAAM;EACjB,SAAAA,OAAYzgC,OAAO,EAAEggC,aAAa,EAAE;IAAApkC,qBAAA,OAAA6kC,MAAA;IAClC,IAAI,CAACT,aAAa,GAAGA,aAAa;IAClC,IAAI,CAAChgC,OAAO,GAAGA,OAAO;EACxB;EAAC,OAAA5D,kBAAA,CAAAqkC,MAAA;IAAAr1C,GAAA;IAAA+B,KAAA,EAED,SAAAu4B,SAASA,CACPh6B,IAAI,EAGJ;MAAA,IAAAg1C,qBAAA,EAAAC,iBAAA,EAAAC,qBAAA;MAAA,IAFAxvC,OAAO,GAAArF,SAAA,CAAAD,MAAA,QAAAC,SAAA,QAAA0E,SAAA,GAAA1E,SAAA,MAAG,CAAC,CAAC;MAAA,IACZ+H,OAAO,GAAA/H,SAAA,CAAAD,MAAA,QAAAC,SAAA,QAAA0E,SAAA,GAAA1E,SAAA,MAAG,IAAI,CAACiU,OAAO,CAAC6gC,cAAc,CAACn+B,MAAM,CAAC,CAAC;MAE9C,IAAMo+B,UAAU,GAAG,IAAI,CAAC9gC,OAAO,CAACgC,OAAO,CAAClO,OAAO,CAAC;MAChD,IAAMitC,iBAAiB,GAAGD,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAE19B,WAAW,CAAC,CAAC;MACnD,IAAMlB,MAAM,GAAGurB,EAAE,CAACqN,GAAG,CAAC,CAAC,CAAC;MACxB,IAAI34B,OAAO;MACX,IAAI6+B,UAAU,GAAG,CAAC;MAClB,IAAIC,UAAU,GAAG,IAAI;MACrB,IAAIxC,YAAY;MAChB,IAAIsC,iBAAiB,EAAE;QACrB5+B,OAAO,GAAG4+B,iBAAiB,CAAC5+B,OAAO;QACnC8+B,UAAU,GAAGF,iBAAiB,CAACE,UAAU;QACzCxC,YAAY,GAAGsC,iBAAiB,CAAC7+B,MAAM;MACzC,CAAC,MAAM;QACLC,OAAO,GAAGsrB,EAAE,CAACqN,GAAG,CAAC,EAAE,CAAC;MACtB;MAEA,IAAM1E,IAAI,GAAG,CAAC;MACd,IAAMhzB,WAAW,GAAG;QAAEjB,OAAO,EAAPA,OAAO;QAAED,MAAM,EAANA,MAAM;QAAE8+B,UAAU,EAAVA,UAAU;QAAEC,UAAU,EAAVA;MAAW,CAAC;MAC/D,IAAMrD,QAAQ,GAAG;QACftmC,UAAU,EAAAuT,mBAAA,CAAAA,mBAAA,KACJ,EAAA61B,qBAAA,OAAI,CAAC1gC,OAAO,CAAC49B,QAAQ,cAAA8C,qBAAA,uBAArBA,qBAAA,CAAuBppC,UAAU,KAAI,CAAC,CAAC,GACvC,EAAAqpC,iBAAA,GAAAvvC,OAAO,CAACwsC,QAAQ,cAAA+C,iBAAA,uBAAhBA,iBAAA,CAAkBrpC,UAAU,KAAI,CAAC,CAAC;MAE1C,CAAC;MAED,IAAMyK,IAAI,GAAG,IAAI+9B,IAAI,CAAC;QACpBlC,QAAQ,EAAEA,QAAQ;QAClBn7B,KAAK,EAAE,IAAI,CAACzC,OAAO,CAACyC,KAAK;QACzBggB,OAAO,GAAAme,qBAAA,GAAE,IAAI,CAAC5gC,OAAO,CAACyiB,OAAO,cAAAme,qBAAA,uBAApBA,qBAAA,CAAsBne,OAAO;QACtC3uB,OAAO,EAAPA,OAAO;QACPsP,WAAW,EAAXA,WAAW;QACX1X,IAAI,EAAJA,IAAI;QACJ0qC,IAAI,EAAJA,IAAI;QACJqI,YAAY,EAAZA,YAAY;QACZuB,aAAa,EAAE,IAAI,CAACA,aAAa;QACjCpmC,SAAS,EAAExI,OAAO,CAACwI,SAAS;QAC5BqjC,cAAc,EAAE7rC,OAAO,CAAC6rC;MAC1B,CAAC,CAAC;MACF,OAAOl7B,IAAI;IACb;EAAC;AAAA;;;;;;;;;;;ACpDoE;AAChC;AACM;AACM;AACd;AACZ;AAEzB,IAAMm/B,QAAQ,GAAGtG,gBAAgB,CAAC,0BAA0B,CAAC;AAAC,IAEzC3a,OAAO;EAC1B,SAAAA,QAAYjc,OAAO,EAAEtI,GAAG,EAAEtK,OAAO,EAAE;IAAAwK,sBAAA,OAAAqkB,OAAA;IACjC,IAAI,CAACvkB,GAAG,GAAGA,GAAG;IACd,IAAI,CAACtK,OAAO,GAAGA,OAAO;IACtB,IAAI,CAAChD,MAAM,GAAG4V,OAAO;IAErB,IAAI,IAAI,CAAC5V,MAAM,CAAC0tC,cAAc,EAAE;MAC9B,IAAI,CAACrZ,OAAO,GAAG,IAAI+Y,OAAO,CAAC,IAAI,EAAEpqC,OAAO,CAAC;IAC3C;IACA,IAAI,CAAC+vC,YAAY,CAAC,CAAC;EACrB;EAAC,OAAA/kC,mBAAA,CAAA6jB,OAAA;IAAA70B,GAAA;IAAA+B,KAAA,EAED,SAAAkP,SAASA,CAACjL,OAAO,EAAE;MACjB;MACA,IAAI,CAACA,OAAO,GAAGA,OAAO;IACxB;EAAC;IAAAhG,GAAA;IAAA+B,KAAA,EAED,SAAAizB,WAAWA,CAAA,EAAG;MACZ,IAAI,IAAI,CAACqC,OAAO,EAAE;QAChB,IAAI,CAACA,OAAO,CAAC9W,IAAI,CAAC,CAAC;MACrB;IACF;EAAC;IAAAvgB,GAAA;IAAAwM,GAAA,EAED,SAAAA,IAAA,EAAgB;MACd,IAAI,IAAI,CAAC6qB,OAAO,EAAE;QAChB,OAAO,IAAI,CAACA,OAAO,CAACA,OAAO,CAACgL,EAAE;MAChC;MACA,OAAO,IAAI;IACb;EAAC;IAAAriC,GAAA;IAAAwM,GAAA,EAED,SAAAA,IAAA,EAAe;MAAA,IAAAwpC,qBAAA,EAAAC,sBAAA;MACb,OAAO;QACL/pC,UAAU,EAAAuT,oBAAA,CAAAA,oBAAA,KACJ,IAAI,CAACzZ,OAAO,CAACwsC,QAAQ,IAAI,CAAC,CAAC;UAC/B,qBAAqB,GAAAwD,qBAAA,IAAAC,sBAAA,GACnB,IAAI,CAACjwC,OAAO,CAAC8H,OAAO,cAAAmoC,sBAAA,uBAApBA,sBAAA,CAAsBpmC,WAAW,cAAAmmC,qBAAA,cAAAA,qBAAA,GAAI,IAAI,CAAChwC,OAAO,CAAC6J;QAAW;MAEnE,CAAC;IACH;EAAC;IAAA7P,GAAA;IAAAwM,GAAA,EAED,SAAAA,IAAA,EAAY;MACV,OAAO;QACLlM,IAAI,EAAE,oBAAoB;QAC1B4P,OAAO,EAAE,IAAI,CAAClK,OAAO,CAACkK;MACxB,CAAC;IACH;EAAC;IAAAlQ,GAAA;IAAA+B,KAAA,EAED,SAAAm0C,KAAKA,CAAA,EAAa;MAAA,IAAZvG,KAAK,GAAAhvC,SAAA,CAAAD,MAAA,QAAAC,SAAA,QAAA0E,SAAA,GAAA1E,SAAA,MAAG,EAAE;MACd,OAAO0hC,EAAE,CAACqN,GAAG,CAACC,KAAK,CAAC;IACtB;EAAC;IAAA3vC,GAAA;IAAA+B,KAAA,EAED,SAAAg0C,YAAYA,CAAA,EAAG;MACb,IAAI,CAACN,cAAc,GAAG,IAAIvG,cAAc,CAAC,CAAC;MAC1C,IAAI,CAACgF,QAAQ,GAAG,IAAIjC,YAAY,CAAC,IAAI,CAAC3hC,GAAG,EAAE,IAAI,CAACtK,OAAO,CAAC;MACxD,IAAI,CAAC4uC,aAAa,GAAG,IAAIX,aAAa,CAAC,IAAI,CAACC,QAAQ,EAAE,IAAI,CAACluC,OAAO,CAAC4O,OAAO,CAAC;MAC3E,IAAI,CAACC,MAAM,GAAG,IAAIwgC,MAAM,CAAC,IAAI,EAAE,IAAI,CAACT,aAAa,CAAC;IACpD;EAAC;IAAA50C,GAAA;IAAA+B,KAAA,EAED,SAAAo0C,SAASA,CAAA,EAAG;MACV,OAAO,IAAI,CAACthC,MAAM;IACpB;EAAC;IAAA7U,GAAA;IAAA+B,KAAA,EAED,SAAAq0C,gBAAgBA,CAAChC,WAAW,EAAE;MAC5B,IAAI,CAACQ,aAAa,CAAC1gC,YAAY,CAACkgC,WAAW,CAAC;IAC9C;EAAC;IAAAp0C,GAAA;IAAA+B,KAAA,EAED,SAAA6U,OAAOA,CAAA,EAAyC;MAAA,IAAxClO,OAAO,GAAA/H,SAAA,CAAAD,MAAA,QAAAC,SAAA,QAAA0E,SAAA,GAAA1E,SAAA,MAAG,IAAI,CAAC80C,cAAc,CAACn+B,MAAM,CAAC,CAAC;MAC5C,OAAO5O,OAAO,CAACmmC,QAAQ,CAACiH,QAAQ,CAAC;IACnC;EAAC;IAAA91C,GAAA;IAAA+B,KAAA,EAED,SAAAs0C,OAAOA,CAAA,EAA+C;MAAA,IAA9C3tC,OAAO,GAAA/H,SAAA,CAAAD,MAAA,QAAAC,SAAA,QAAA0E,SAAA,GAAA1E,SAAA,MAAG,IAAI,CAAC80C,cAAc,CAACn+B,MAAM,CAAC,CAAC;MAAA,IAAEX,IAAI,GAAAhW,SAAA,CAAAD,MAAA,OAAAC,SAAA,MAAA0E,SAAA;MAClD,OAAOqD,OAAO,CAAComC,QAAQ,CAACgH,QAAQ,EAAEn/B,IAAI,CAAC;IACzC;EAAC;IAAA3W,GAAA;IAAA+B,KAAA,EAED,SAAAu4B,SAASA,CAACh6B,IAAI,EAAwD;MAAA,IAAtD0F,OAAO,GAAArF,SAAA,CAAAD,MAAA,QAAAC,SAAA,QAAA0E,SAAA,GAAA1E,SAAA,MAAG,CAAC,CAAC;MAAA,IAAE+H,OAAO,GAAA/H,SAAA,CAAAD,MAAA,QAAAC,SAAA,QAAA0E,SAAA,GAAA1E,SAAA,MAAG,IAAI,CAAC80C,cAAc,CAACn+B,MAAM,CAAC,CAAC;MAClE,OAAO,IAAI,CAACzC,MAAM,CAACylB,SAAS,CAACh6B,IAAI,EAAE0F,OAAO,EAAE0C,OAAO,CAAC;IACtD;EAAC;IAAA1I,GAAA;IAAA+B,KAAA,EAED,SAAAwtC,KAAIA,CAAC7mC,OAAO,EAAEuY,EAAE,EAAEqe,OAAO,EAAW;MAAA,IAAAgX,oBAAA;MAAA,SAAA12B,IAAA,GAAAjf,SAAA,CAAAD,MAAA,EAANkJ,IAAI,OAAAiW,KAAA,CAAAD,IAAA,OAAAA,IAAA,WAAAE,IAAA,MAAAA,IAAA,GAAAF,IAAA,EAAAE,IAAA;QAAJlW,IAAI,CAAAkW,IAAA,QAAAnf,SAAA,CAAAmf,IAAA;MAAA;MAChC,OAAO,CAAAw2B,oBAAA,OAAI,CAACb,cAAc,EAAClG,IAAI,CAAAxxB,KAAA,CAAAu4B,oBAAA,GAAC5tC,OAAO,EAAEuY,EAAE,EAAEqe,OAAO,EAAA3xB,MAAA,CAAK/D,IAAI,EAAC;IAChE;EAAC;IAAA5J,GAAA;IAAA+B,KAAA,EAED,SAAAw0C,QAAQA,CAACj2C,IAAI,EAAE0F,OAAO,EAAEib,EAAE,EAAEqe,OAAO,EAAE;MACnC,IAAM3oB,IAAI,GAAG,IAAI,CAAC2jB,SAAS,CAACh6B,IAAI,EAAE0F,OAAO,CAAC;MAC1C,OAAO,IAAI,CAACupC,IAAI,CACd,IAAI,CAAC8G,OAAO,CAAC,IAAI,CAACZ,cAAc,CAACn+B,MAAM,CAAC,CAAC,EAAEX,IAAI,CAAC,EAChDsK,EAAE,EACFqe,OAAO,EACP3oB,IACF,CAAC;IACH;EAAC;AAAA;;;ACnG6B;AACQ;AACE;AACC;AACX;AACU;AACE;AAE5CjC,IAAO,CAAC0jB,aAAa,CAAC;EACpBzjB,SAAS,EAAE6f,SAAS;EACpBE,YAAY,EAAED,iBAAY;EAC1BE,WAAW,EAAEA,mBAAW;EACxBC,KAAK,EAAEA,SAAK;EACZtW,UAAU,EAAEA,UAAU;EACtB1J,OAAO,EAAEigB,OAAOA;AAClB,CAAC,CAAC;AAEF,oDAAengB,IAAO;;ACjBc;AAEpC,IAAK,OAAO1R,MAAM,KAAK,WAAW,IAAK,CAACA,MAAM,CAAC4oB,iBAAiB,EAAE;EAChE5oB,MAAM,CAAC4oB,iBAAiB,GAAI,IAAI3e,IAAI,CAAC,CAAC,CAAEqxB,OAAO,CAAC,CAAC;AACnD;AAEA,uDAAezI,eAAO,E","sources":["webpack://rollbar/webpack/universalModuleDefinition","webpack://rollbar/webpack/bootstrap","webpack://rollbar/webpack/runtime/define property getters","webpack://rollbar/webpack/runtime/hasOwnProperty shorthand","webpack://rollbar/webpack/runtime/make namespace object","webpack://rollbar/./src/merge.js","webpack://rollbar/./src/utility.js","webpack://rollbar/./src/rateLimiter.js","webpack://rollbar/./src/queue.js","webpack://rollbar/./src/notifier.js","webpack://rollbar/./src/rollbar.js","webpack://rollbar/./src/apiUtility.js","webpack://rollbar/./src/api.js","webpack://rollbar/./src/logger.js","webpack://rollbar/./src/browser/globalSetup.js","webpack://rollbar/./src/browser/transport/fetch.js","webpack://rollbar/./src/browser/transport/xhr.js","webpack://rollbar/./src/browser/transport.js","webpack://rollbar/./src/browser/url.js","webpack://rollbar/./node_modules/error-stack-parser-es/dist/lite.mjs","webpack://rollbar/./node_modules/error-stack-parser-es/dist/index.mjs","webpack://rollbar/./src/errorParser.js","webpack://rollbar/./src/browser/transforms.js","webpack://rollbar/./src/transforms.js","webpack://rollbar/./src/browser/predicates.js","webpack://rollbar/./src/predicates.js","webpack://rollbar/./src/browser/replay/defaults.js","webpack://rollbar/./src/tracing/defaults.js","webpack://rollbar/./src/defaults.js","webpack://rollbar/./src/browser/defaults.js","webpack://rollbar/./src/browser/core.js","webpack://rollbar/./src/telemetry.js","webpack://rollbar/./src/utility/headers.js","webpack://rollbar/./src/utility/replace.js","webpack://rollbar/./src/utility/traverse.js","webpack://rollbar/./src/scrub.js","webpack://rollbar/./src/browser/domUtility.js","webpack://rollbar/./src/browser/telemetry.js","webpack://rollbar/./src/browser/wrapGlobals.js","webpack://rollbar/./src/truncation.js","webpack://rollbar/./src/tracing/context.js","webpack://rollbar/./src/tracing/contextManager.js","webpack://rollbar/./src/tracing/id.js","webpack://rollbar/./src/tracing/session.js","webpack://rollbar/./src/tracing/hrtime.js","webpack://rollbar/./src/tracing/exporter.js","webpack://rollbar/./src/tracing/spanProcessor.js","webpack://rollbar/./src/tracing/span.js","webpack://rollbar/./src/tracing/tracer.js","webpack://rollbar/./src/tracing/tracing.js","webpack://rollbar/./src/browser/rollbar.js","webpack://rollbar/./src/browser/bundles/rollbar.noconflict.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"rollbar\"] = factory();\n\telse\n\t\troot[\"rollbar\"] = factory();\n})(this, function() {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(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__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\n\nvar isPlainObject = function isPlainObject(obj) {\n if (!obj || toStr.call(obj) !== '[object Object]') {\n return false;\n }\n\n var hasOwnConstructor = hasOwn.call(obj, 'constructor');\n var hasIsPrototypeOf =\n obj.constructor &&\n obj.constructor.prototype &&\n hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n // Not own constructor property must be Object\n if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n return false;\n }\n\n // Own properties are enumerated firstly, so to speed up,\n // if last one is own, then all properties are own.\n var key;\n for (key in obj) {\n /**/\n }\n\n return typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\nfunction merge() {\n var i,\n src,\n copy,\n clone,\n name,\n result = Object.create(null), // no prototype pollution on Object\n current = null,\n length = arguments.length;\n\n for (i = 0; i < length; i++) {\n current = arguments[i];\n if (current == null) {\n continue;\n }\n\n for (name in current) {\n src = result[name];\n copy = current[name];\n if (result !== copy) {\n if (copy && isPlainObject(copy)) {\n clone = src && isPlainObject(src) ? src : {};\n result[name] = merge(clone, copy);\n } else if (typeof copy !== 'undefined') {\n result[name] = copy;\n }\n }\n }\n }\n return result;\n}\n\nexport default merge;\n","import merge from './merge.js';\n\n/*\n * isType - Given a Javascript value and a string, returns true if the type of the value matches the\n * given string.\n *\n * @param x - any value\n * @param t - a lowercase string containing one of the following type names:\n * - undefined\n * - null\n * - error\n * - number\n * - boolean\n * - string\n * - symbol\n * - function\n * - object\n * - array\n * @returns true if x is of type t, otherwise false\n */\nfunction isType(x, t) {\n return t === typeName(x);\n}\n\n/*\n * typeName - Given a Javascript value, returns the type of the object as a string\n */\nfunction typeName(x) {\n var name = typeof x;\n if (name !== 'object') {\n return name;\n }\n if (!x) {\n return 'null';\n }\n if (x instanceof Error) {\n return 'error';\n }\n return {}.toString\n .call(x)\n .match(/\\s([a-zA-Z]+)/)[1]\n .toLowerCase();\n}\n\n/* isFunction - a convenience function for checking if a value is a function\n *\n * @param f - any value\n * @returns true if f is a function, otherwise false\n */\nfunction isFunction(f) {\n return isType(f, 'function');\n}\n\n/* isNativeFunction - a convenience function for checking if a value is a native JS function\n *\n * @param f - any value\n * @returns true if f is a native JS function, otherwise false\n */\nfunction isNativeFunction(f) {\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n var funcMatchString = Function.prototype.toString\n .call(Object.prototype.hasOwnProperty)\n .replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?');\n var reIsNative = RegExp('^' + funcMatchString + '$');\n return isObject(f) && reIsNative.test(f);\n}\n\n/* isObject - Checks if the argument is an object\n *\n * @param value - any value\n * @returns true is value is an object function is an object)\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/* isString - Checks if the argument is a string\n *\n * @param value - any value\n * @returns true if value is a string\n */\nfunction isString(value) {\n return typeof value === 'string' || value instanceof String;\n}\n\n/**\n * isFiniteNumber - determines whether the passed value is a finite number\n *\n * @param {*} n - any value\n * @returns true if value is a finite number\n */\nfunction isFiniteNumber(n) {\n return Number.isFinite(n);\n}\n\n/*\n * isDefined - a convenience function for checking if a value is not equal to undefined\n *\n * @param u - any value\n * @returns true if u is anything other than undefined\n */\nfunction isDefined(u) {\n return !isType(u, 'undefined');\n}\n\n/*\n * isIterable - convenience function for checking if a value can be iterated, essentially\n * whether it is an object or an array.\n *\n * @param i - any value\n * @returns true if i is an object or an array as determined by `typeName`\n */\nfunction isIterable(i) {\n var type = typeName(i);\n return type === 'object' || type === 'array';\n}\n\n/*\n * isError - convenience function for checking if a value is of an error type\n *\n * @param e - any value\n * @returns true if e is an error\n */\nfunction isError(e) {\n // Detect both Error and Firefox Exception type\n return isType(e, 'error') || isType(e, 'exception');\n}\n\n/* isPromise - a convenience function for checking if a value is a promise\n *\n * @param p - any value\n * @returns true if f is a function, otherwise false\n */\nfunction isPromise(p) {\n return isObject(p) && isType(p.then, 'function');\n}\n\n/**\n * isBrowser - a convenience function for checking if the code is running in a browser\n *\n * @returns true if the code is running in a browser environment\n */\nfunction isBrowser() {\n return typeof window !== 'undefined';\n}\n\nfunction redact() {\n return '********';\n}\n\n// from http://stackoverflow.com/a/8809472/1138191\nfunction uuid4() {\n var d = now();\n var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(\n /[xy]/g,\n function (c) {\n var r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : (r & 0x7) | 0x8).toString(16);\n },\n );\n return uuid;\n}\n\nvar LEVELS = {\n debug: 0,\n info: 1,\n warning: 2,\n error: 3,\n critical: 4,\n};\n\nfunction sanitizeHref(url) {\n try {\n const urlObject = new URL(url);\n if (urlObject.password) {\n urlObject.password = redact();\n }\n if (urlObject.search) {\n urlObject.search = redact();\n }\n return urlObject.toString();\n } catch (_) {\n return url; // Return original URL if parsing fails\n }\n}\n\nfunction sanitizeUrl(url) {\n var baseUrlParts = parseUri(url);\n if (!baseUrlParts) {\n return '(unknown)';\n }\n\n // remove a trailing # if there is no anchor\n if (baseUrlParts.anchor === '') {\n baseUrlParts.source = baseUrlParts.source.replace('#', '');\n }\n\n url = baseUrlParts.source.replace('?' + baseUrlParts.query, '');\n return url;\n}\n\nvar parseUriOptions = {\n strictMode: false,\n key: [\n 'source',\n 'protocol',\n 'authority',\n 'userInfo',\n 'user',\n 'password',\n 'host',\n 'port',\n 'relative',\n 'path',\n 'directory',\n 'file',\n 'query',\n 'anchor',\n ],\n q: {\n name: 'queryKey',\n parser: /(?:^|&)([^&=]*)=?([^&]*)/g,\n },\n parser: {\n strict:\n /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?))?((((?:[^?#\\/]*\\/)*)([^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n loose:\n /^(?:(?![^:@]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n },\n};\n\nfunction parseUri(str) {\n if (!isType(str, 'string')) {\n return undefined;\n }\n\n var o = parseUriOptions;\n var m = o.parser[o.strictMode ? 'strict' : 'loose'].exec(str);\n var uri = {};\n\n for (var i = 0, l = o.key.length; i < l; ++i) {\n uri[o.key[i]] = m[i] || '';\n }\n\n uri[o.q.name] = {};\n uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {\n if ($1) {\n uri[o.q.name][$1] = $2;\n }\n });\n\n return uri;\n}\n\nfunction addParamsAndAccessTokenToPath(accessToken, options, params) {\n params = params || {};\n params.access_token = accessToken;\n var paramsArray = [];\n var k;\n for (k in params) {\n if (Object.prototype.hasOwnProperty.call(params, k)) {\n paramsArray.push([k, params[k]].join('='));\n }\n }\n var query = '?' + paramsArray.sort().join('&');\n\n options = options || {};\n options.path = options.path || '';\n var qs = options.path.indexOf('?');\n var h = options.path.indexOf('#');\n var p;\n if (qs !== -1 && (h === -1 || h > qs)) {\n p = options.path;\n options.path = p.substring(0, qs) + query + '&' + p.substring(qs + 1);\n } else {\n if (h !== -1) {\n p = options.path;\n options.path = p.substring(0, h) + query + p.substring(h);\n } else {\n options.path = options.path + query;\n }\n }\n}\n\nfunction formatUrl(u, protocol) {\n protocol = protocol || u.protocol;\n if (!protocol && u.port) {\n if (u.port === 80) {\n protocol = 'http:';\n } else if (u.port === 443) {\n protocol = 'https:';\n }\n }\n protocol = protocol || 'https:';\n\n if (!u.hostname) {\n return null;\n }\n var result = protocol + '//' + u.hostname;\n if (u.port) {\n result = result + ':' + u.port;\n }\n if (u.path) {\n result = result + u.path;\n }\n return result;\n}\n\nfunction stringify(obj, backup) {\n var value, error;\n try {\n value = JSON.stringify(obj);\n } catch (jsonError) {\n if (backup && isFunction(backup)) {\n try {\n value = backup(obj);\n } catch (backupError) {\n error = backupError;\n }\n } else {\n error = jsonError;\n }\n }\n return { error: error, value: value };\n}\n\nfunction maxByteSize(string) {\n // The transport will use utf-8, so assume utf-8 encoding.\n //\n // This minimal implementation will accurately count bytes for all UCS-2 and\n // single code point UTF-16. If presented with multi code point UTF-16,\n // which should be rare, it will safely overcount, not undercount.\n //\n // While robust utf-8 encoders exist, this is far smaller and far more performant.\n // For quickly counting payload size for truncation, smaller is better.\n\n var count = 0;\n var length = string.length;\n\n for (var i = 0; i < length; i++) {\n var code = string.charCodeAt(i);\n if (code < 128) {\n // up to 7 bits\n count = count + 1;\n } else if (code < 2048) {\n // up to 11 bits\n count = count + 2;\n } else if (code < 65536) {\n // up to 16 bits\n count = count + 3;\n }\n }\n\n return count;\n}\n\nfunction jsonParse(s) {\n var value, error;\n try {\n value = JSON.parse(s);\n } catch (e) {\n error = e;\n }\n return { error: error, value: value };\n}\n\nfunction makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n mode,\n backupMessage,\n errorParser,\n) {\n var location = {\n url: url || '',\n line: lineno,\n column: colno,\n };\n location.func = errorParser.guessFunctionName(location.url, location.line);\n location.context = errorParser.gatherContext(location.url, location.line);\n var href =\n typeof document !== 'undefined' &&\n document &&\n document.location &&\n document.location.href;\n var useragent =\n typeof window !== 'undefined' &&\n window &&\n window.navigator &&\n window.navigator.userAgent;\n return {\n mode: mode,\n message: error ? String(error) : message || backupMessage,\n url: href,\n stack: [location],\n useragent: useragent,\n };\n}\n\nfunction wrapCallback(logger, f) {\n return function (err, resp) {\n try {\n f(err, resp);\n } catch (e) {\n logger.error(e);\n }\n };\n}\n\nfunction nonCircularClone(obj) {\n var seen = [obj];\n\n function clone(obj, seen) {\n var value,\n name,\n newSeen,\n result = {};\n\n try {\n for (name in obj) {\n value = obj[name];\n\n if (value && (isType(value, 'object') || isType(value, 'array'))) {\n if (seen.includes(value)) {\n result[name] = 'Removed circular reference: ' + typeName(value);\n } else {\n newSeen = seen.slice();\n newSeen.push(value);\n result[name] = clone(value, newSeen);\n }\n continue;\n }\n\n result[name] = value;\n }\n } catch (e) {\n result = 'Failed cloning custom data: ' + e.message;\n }\n return result;\n }\n return clone(obj, seen);\n}\n\nfunction createItem(args, logger, notifier, requestKeys, lambdaContext) {\n var message, err, custom, callback, request;\n var arg;\n var extraArgs = [];\n var diagnostic = {};\n var argTypes = [];\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n argTypes.push(typ);\n switch (typ) {\n case 'undefined':\n break;\n case 'string':\n message ? extraArgs.push(arg) : (message = arg);\n break;\n case 'function':\n callback = wrapCallback(logger, arg);\n break;\n case 'date':\n extraArgs.push(arg);\n break;\n case 'error':\n case 'domexception':\n case 'exception': // Firefox Exception type\n err ? extraArgs.push(arg) : (err = arg);\n break;\n case 'object':\n case 'array':\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n err ? extraArgs.push(arg) : (err = arg);\n break;\n }\n if (requestKeys && typ === 'object' && !request) {\n for (var j = 0, len = requestKeys.length; j < len; ++j) {\n if (arg[requestKeys[j]] !== undefined) {\n request = arg;\n break;\n }\n }\n if (request) {\n break;\n }\n }\n custom ? extraArgs.push(arg) : (custom = arg);\n break;\n default:\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n err ? extraArgs.push(arg) : (err = arg);\n break;\n }\n extraArgs.push(arg);\n }\n }\n\n // if custom is an array this turns it into an object with integer keys\n if (custom) custom = nonCircularClone(custom);\n\n if (extraArgs.length > 0) {\n if (!custom) custom = nonCircularClone({});\n custom.extraArgs = nonCircularClone(extraArgs);\n }\n\n var item = {\n message: message,\n err: err,\n custom: custom,\n timestamp: now(),\n callback: callback,\n notifier: notifier,\n diagnostic: diagnostic,\n uuid: uuid4(),\n };\n\n item.data = item.data || {};\n\n setCustomItemKeys(item, custom);\n\n if (requestKeys && request) {\n item.request = request;\n }\n if (lambdaContext) {\n item.lambdaContext = lambdaContext;\n }\n item._originalArgs = args;\n item.diagnostic.original_arg_types = argTypes;\n return item;\n}\n\nfunction setCustomItemKeys(item, custom) {\n if (custom && custom.level !== undefined) {\n item.level = custom.level;\n delete custom.level;\n }\n if (custom && custom.skipFrames !== undefined) {\n item.skipFrames = custom.skipFrames;\n delete custom.skipFrames;\n }\n}\n\nfunction addErrorContext(item, errors) {\n var custom = item.data.custom || {};\n var contextAdded = false;\n\n try {\n for (var i = 0; i < errors.length; ++i) {\n if (errors[i].hasOwnProperty('rollbarContext')) {\n custom = merge(custom, nonCircularClone(errors[i].rollbarContext));\n contextAdded = true;\n }\n }\n\n // Avoid adding an empty object to the data.\n if (contextAdded) {\n item.data.custom = custom;\n }\n } catch (e) {\n item.diagnostic.error_context = 'Failed: ' + e.message;\n }\n}\n\nvar TELEMETRY_TYPES = [\n 'log',\n 'network',\n 'dom',\n 'navigation',\n 'error',\n 'manual',\n];\nvar TELEMETRY_LEVELS = ['critical', 'error', 'warning', 'info', 'debug'];\n\nfunction arrayIncludes(arr, val) {\n for (var k = 0; k < arr.length; ++k) {\n if (arr[k] === val) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction createTelemetryEvent(args) {\n var type, metadata, level;\n var arg;\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n switch (typ) {\n case 'string':\n if (!type && arrayIncludes(TELEMETRY_TYPES, arg)) {\n type = arg;\n } else if (!level && arrayIncludes(TELEMETRY_LEVELS, arg)) {\n level = arg;\n }\n break;\n case 'object':\n metadata = arg;\n break;\n default:\n break;\n }\n }\n var event = {\n type: type || 'manual',\n metadata: metadata || {},\n level: level,\n };\n\n return event;\n}\n\nfunction addItemAttributes(itemData, attributes) {\n itemData.attributes = itemData.attributes || [];\n for (const a of attributes) {\n if (a.value === undefined) {\n continue;\n }\n itemData.attributes.push(a);\n }\n}\n\n/*\n * get - given an obj/array and a keypath, return the value at that keypath or\n * undefined if not possible.\n *\n * @param obj - an object or array\n * @param path - a string of keys separated by '.' such as 'plugin.jquery.0.message'\n * which would correspond to 42 in `{plugin: {jquery: [{message: 42}]}}`\n */\nfunction get(obj, path) {\n if (!obj) {\n return undefined;\n }\n var keys = path.split('.');\n var result = obj;\n try {\n for (var i = 0, len = keys.length; i < len; ++i) {\n result = result[keys[i]];\n }\n } catch (e) {\n result = undefined;\n }\n return result;\n}\n\nfunction set(obj, path, value) {\n if (!obj) {\n return;\n }\n\n // Prevent prototype pollution by setting the prototype to null.\n Object.setPrototypeOf(obj, null);\n\n var keys = path.split('.');\n var len = keys.length;\n if (len < 1) {\n return;\n }\n if (len === 1) {\n obj[keys[0]] = value;\n return;\n }\n try {\n var temp = obj[keys[0]] || {};\n var replacement = temp;\n for (var i = 1; i < len - 1; ++i) {\n temp[keys[i]] = temp[keys[i]] || {};\n temp = temp[keys[i]];\n }\n temp[keys[len - 1]] = value;\n obj[keys[0]] = replacement;\n } catch (e) {\n return;\n }\n}\n\nfunction formatArgsAsString(args) {\n var i, len, arg;\n var result = [];\n for (i = 0, len = args.length; i < len; ++i) {\n arg = args[i];\n switch (typeName(arg)) {\n case 'object':\n arg = stringify(arg);\n arg = arg.error || arg.value;\n if (arg.length > 500) {\n arg = arg.substr(0, 497) + '...';\n }\n break;\n case 'null':\n arg = 'null';\n break;\n case 'undefined':\n arg = 'undefined';\n break;\n case 'symbol':\n arg = arg.toString();\n break;\n }\n result.push(arg);\n }\n return result.join(' ');\n}\n\nfunction now() {\n if (Date.now) {\n return +Date.now();\n }\n return +new Date();\n}\n\nfunction filterIp(requestData, captureIp) {\n if (!requestData || !requestData['user_ip'] || captureIp === true) {\n return;\n }\n var newIp = requestData['user_ip'];\n if (!captureIp) {\n newIp = null;\n } else {\n try {\n var parts;\n if (newIp.indexOf('.') !== -1) {\n parts = newIp.split('.');\n parts.pop();\n parts.push('0');\n newIp = parts.join('.');\n } else if (newIp.indexOf(':') !== -1) {\n parts = newIp.split(':');\n if (parts.length > 2) {\n var beginning = parts.slice(0, 3);\n var slashIdx = beginning[2].indexOf('/');\n if (slashIdx !== -1) {\n beginning[2] = beginning[2].substring(0, slashIdx);\n }\n var terminal = '0000:0000:0000:0000:0000';\n newIp = beginning.concat(terminal).join(':');\n }\n } else {\n newIp = null;\n }\n } catch (e) {\n newIp = null;\n }\n }\n requestData['user_ip'] = newIp;\n}\n\nfunction handleOptions(current, input, payload, logger) {\n var result = merge(current, input, payload);\n result = updateDeprecatedOptions(result, logger);\n if (!input || input.overwriteScrubFields) {\n return result;\n }\n if (input.scrubFields) {\n result.scrubFields = (current.scrubFields || []).concat(input.scrubFields);\n }\n return result;\n}\n\nfunction updateDeprecatedOptions(options, logger) {\n if (options.hostWhiteList && !options.hostSafeList) {\n options.hostSafeList = options.hostWhiteList;\n options.hostWhiteList = undefined;\n logger && logger.log('hostWhiteList is deprecated. Use hostSafeList.');\n }\n if (options.hostBlackList && !options.hostBlockList) {\n options.hostBlockList = options.hostBlackList;\n options.hostBlackList = undefined;\n logger && logger.log('hostBlackList is deprecated. Use hostBlockList.');\n }\n return options;\n}\n\nexport {\n addParamsAndAccessTokenToPath,\n createItem,\n addErrorContext,\n createTelemetryEvent,\n addItemAttributes,\n filterIp,\n formatArgsAsString,\n formatUrl,\n get,\n handleOptions,\n isError,\n isFiniteNumber,\n isFunction,\n isIterable,\n isNativeFunction,\n isObject,\n isString,\n isType,\n isPromise,\n isBrowser,\n jsonParse,\n LEVELS,\n makeUnhandledStackInfo,\n merge,\n now,\n redact,\n sanitizeHref,\n sanitizeUrl,\n set,\n stringify,\n maxByteSize,\n typeName,\n uuid4,\n};\n","import * as _ from './utility.js';\n\n/*\n * RateLimiter - an object that encapsulates the logic for counting items sent to Rollbar\n *\n * @param options - the same options that are accepted by configureGlobal offered as a convenience\n */\nfunction RateLimiter(options) {\n this.startTime = _.now();\n this.counter = 0;\n this.perMinCounter = 0;\n this.platform = null;\n this.platformOptions = {};\n this.configureGlobal(options);\n}\n\nRateLimiter.globalSettings = {\n startTime: _.now(),\n maxItems: undefined,\n itemsPerMinute: undefined,\n};\n\n/*\n * configureGlobal - set the global rate limiter options\n *\n * @param options - Only the following values are recognized:\n * startTime: a timestamp of the form returned by (new Date()).getTime()\n * maxItems: the maximum items\n * itemsPerMinute: the max number of items to send in a given minute\n */\nRateLimiter.prototype.configureGlobal = function (options) {\n if (options.startTime !== undefined) {\n RateLimiter.globalSettings.startTime = options.startTime;\n }\n if (options.maxItems !== undefined) {\n RateLimiter.globalSettings.maxItems = options.maxItems;\n }\n if (options.itemsPerMinute !== undefined) {\n RateLimiter.globalSettings.itemsPerMinute = options.itemsPerMinute;\n }\n};\n\n/*\n * shouldSend - determine if we should send a given item based on rate limit settings\n *\n * @param item - the item we are about to send\n * @returns An object with the following structure:\n * error: (Error|null)\n * shouldSend: bool\n * payload: (Object|null)\n * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and\n * exactly one of error or payload will be non-null. If error is non-null, the returned Error will\n * describe the situation, but it means that we were already over a rate limit (either globally or\n * per minute) when this item was checked. If error is null, and therefore payload is non-null, it\n * means this item put us over the global rate limit and the payload should be sent to Rollbar in\n * place of the passed in item.\n */\nRateLimiter.prototype.shouldSend = function (item, now) {\n now = now || _.now();\n var elapsedTime = now - this.startTime;\n if (elapsedTime < 0 || elapsedTime >= 60000) {\n this.startTime = now;\n this.perMinCounter = 0;\n }\n\n var globalRateLimit = RateLimiter.globalSettings.maxItems;\n var globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute;\n\n if (checkRate(item, globalRateLimit, this.counter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n globalRateLimit + ' max items reached',\n false,\n );\n } else if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n globalRateLimitPerMin + ' items per minute reached',\n false,\n );\n }\n this.counter++;\n this.perMinCounter++;\n\n var shouldSend = !checkRate(item, globalRateLimit, this.counter);\n var perMinute = shouldSend;\n shouldSend =\n shouldSend && !checkRate(item, globalRateLimitPerMin, this.perMinCounter);\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n null,\n shouldSend,\n globalRateLimit,\n globalRateLimitPerMin,\n perMinute,\n );\n};\n\nRateLimiter.prototype.setPlatformOptions = function (platform, options) {\n this.platform = platform;\n this.platformOptions = options;\n};\n\n/* Helpers */\n\nfunction checkRate(item, limit, counter) {\n return !item.ignoreRateLimit && limit >= 1 && counter > limit;\n}\n\nfunction shouldSendValue(\n platform,\n options,\n error,\n shouldSend,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n var payload = null;\n if (error) {\n error = new Error(error);\n }\n if (!error && !shouldSend) {\n payload = rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n );\n }\n return { error: error, shouldSend: shouldSend, payload: payload };\n}\n\nfunction rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n var environment =\n options.environment || (options.payload && options.payload.environment);\n var msg;\n if (perMinute) {\n msg = 'item per minute limit reached, ignoring errors until timeout';\n } else {\n msg = 'maxItems has been hit, ignoring errors until reset.';\n }\n var item = {\n body: {\n message: {\n body: msg,\n extra: {\n maxItems: globalRateLimit,\n itemsPerMinute: limitPerMin,\n },\n },\n },\n language: 'javascript',\n environment: environment,\n notifier: {\n version:\n (options.notifier && options.notifier.version) || options.version,\n },\n };\n if (platform === 'browser') {\n item.platform = 'browser';\n item.framework = 'browser-js';\n item.notifier.name = 'rollbar-browser-js';\n } else if (platform === 'server') {\n item.framework = options.framework || 'node-js';\n item.notifier.name = options.notifier.name;\n } else if (platform === 'react-native') {\n item.framework = options.framework || 'react-native';\n item.notifier.name = options.notifier.name;\n }\n return item;\n}\n\nexport default RateLimiter;\n","import * as _ from './utility.js';\n\n/**\n * Queue - an object which handles which handles a queue of items to be sent to Rollbar.\n * This object handles rate limiting via a passed in rate limiter, retries based on connection\n * errors, and filtering of items based on a set of configurable predicates. The communication to\n * the backend is performed via a given API object.\n */\nclass Queue {\n /**\n * @param rateLimiter - An object which conforms to the interface\n * `rateLimiter.shouldSend(item) -> bool`\n * @param api - An object which conforms to the interface\n * `api.postItem(payload, function(err, response))`\n * @param logger - An object used to log verbose messages if desired\n * @param options - see `Queue.prototype.configure`\n * @param replay - Optional `Replay` for coordinating session replay with error occurrences\n */\n constructor(rateLimiter, api, logger, options, replay) {\n this.rateLimiter = rateLimiter;\n this.api = api;\n this.logger = logger;\n this.options = options;\n this.replay = replay;\n this.predicates = [];\n this.pendingItems = [];\n this.pendingRequests = [];\n this.retryQueue = [];\n this.retryHandle = null;\n this.waitCallback = null;\n this.waitIntervalID = null;\n }\n\n /**\n * configure - updates the options this queue uses\n *\n * @param options\n */\n configure(options) {\n this.api?.configure(options);\n const oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n return this;\n }\n\n /**\n * addPredicate - adds a predicate to the end of the list of predicates for this queue\n *\n * @param predicate - function(item, options) -> (bool|{err: Error})\n * Returning true means that this predicate passes and the item is okay to go on the queue\n * Returning false means do not add the item to the queue, but it is not an error\n * Returning {err: Error} means do not add the item to the queue, and the given error explains why\n * Returning {err: undefined} is equivalent to returning true but don't do that\n */\n addPredicate(predicate) {\n if (_.isFunction(predicate)) {\n this.predicates.push(predicate);\n }\n return this;\n }\n\n addPendingItem(item) {\n this.pendingItems.push(item);\n }\n\n removePendingItem(item) {\n const idx = this.pendingItems.indexOf(item);\n if (idx !== -1) {\n this.pendingItems.splice(idx, 1);\n }\n }\n\n /**\n * addItem - Send an item to the Rollbar API if all of the predicates are satisfied\n *\n * @param item - Item instance with the payload to send to the backend\n * @param callback - function(error, repsonse) which will be called with the response from the API\n * in the case of a success, otherwise response will be null and error will have a value. If both\n * error and response are null then the item was stopped by a predicate which did not consider this\n * to be an error condition, but nonetheless did not send the item to the API.\n * @param originalError - The original error before any transformations that is to be logged if any\n * @param originalItem - The original item before transforms, used in pendingItems queue\n */\n addItem(item, callback, originalError, originalItem) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {\n return;\n };\n }\n const data = item.data;\n const predicateResult = this._applyPredicates(data);\n if (predicateResult.stop) {\n this.removePendingItem(originalItem);\n callback(predicateResult.err);\n return;\n }\n this._maybeLog(data, originalError);\n this.removePendingItem(originalItem);\n if (!this.options.transmit) {\n callback(new Error('Transmit disabled'));\n return;\n }\n\n if (this.replay && data.body) {\n item.replayId = this.replay.capture(null, data.uuid, {\n type: 'occurrence',\n level: item.level,\n });\n\n if (item.replayId) {\n _.addItemAttributes(item.data, [\n { key: 'replay_id', value: item.replayId },\n ]);\n }\n }\n\n this.pendingRequests.push(data);\n try {\n this._makeApiRequest(data, (err, resp, headers) => {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers);\n }\n\n callback(err, resp);\n });\n } catch (err) {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay?.discard(item.replayId);\n }\n\n callback(err);\n }\n }\n\n /**\n * wait - Stop any further errors from being added to the queue, and get called back when all items\n * currently processing have finished sending to the backend.\n *\n * @param callback - function() called when all pending items have been sent\n */\n wait(callback) {\n if (!_.isFunction(callback)) {\n return;\n }\n this.waitCallback = callback;\n if (this._maybeCallWait()) {\n return;\n }\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitIntervalID = setInterval(() => {\n this._maybeCallWait();\n }, 500);\n }\n\n /**\n * Sequentially applies the predicates that have been added to the queue to the\n * given item with the currently configured options.\n *\n * @param item - An item in the queue\n * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue,\n * the error value should be passed up to a callbak if we are stopping.\n */\n _applyPredicates(item) {\n let p = null;\n for (let i = 0, len = this.predicates.length; i < len; i++) {\n p = this.predicates[i](item, this.options);\n if (!p || p.err !== undefined) {\n return { stop: true, err: p.err };\n }\n }\n return { stop: false, err: null };\n }\n\n /**\n * Send an item to Rollbar, callback when done, if there is an error make an\n * effort to retry if we are configured to do so.\n *\n * @param item - an item ready to send to the backend\n * @param callback - function(err, response)\n */\n _makeApiRequest(item, callback) {\n const rateLimitResponse = this.rateLimiter.shouldSend(item);\n if (rateLimitResponse.shouldSend) {\n this.api.postItem(item, (err, resp, headers) => {\n if (err) {\n this._maybeRetry(err, item, callback);\n } else {\n callback(err, resp, headers);\n }\n });\n } else if (rateLimitResponse.error) {\n callback(rateLimitResponse.error);\n } else {\n this.api.postItem(rateLimitResponse.payload, callback);\n }\n }\n\n // These are errors basically mean there is no internet connection\n static RETRIABLE_ERRORS = [\n 'ECONNRESET',\n 'ENOTFOUND',\n 'ESOCKETTIMEDOUT',\n 'ETIMEDOUT',\n 'ECONNREFUSED',\n 'EHOSTUNREACH',\n 'EPIPE',\n 'EAI_AGAIN',\n ];\n\n /**\n * Given the error returned by the API, decide if we should retry or just callback\n * with the error.\n *\n * @param err - an error returned by the API transport\n * @param item - the item that was trying to be sent when this error occured\n * @param callback - function(err, response)\n */\n _maybeRetry(err, item, callback) {\n let shouldRetry = false;\n if (this.options.retryInterval) {\n for (let i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) {\n if (err.code === Queue.RETRIABLE_ERRORS[i]) {\n shouldRetry = true;\n break;\n }\n }\n if (shouldRetry && _.isFiniteNumber(this.options.maxRetries)) {\n item.retries = item.retries ? item.retries + 1 : 1;\n if (item.retries > this.options.maxRetries) {\n shouldRetry = false;\n }\n }\n }\n if (shouldRetry) {\n this._retryApiRequest(item, callback);\n } else {\n callback(err);\n }\n }\n\n /**\n * Add an item and a callback to a queue and possibly start a timer to process\n * that queue based on the retryInterval in the options for this queue.\n *\n * @param item - an item that failed to send due to an error we deem retriable\n * @param callback - function(err, response)\n */\n _retryApiRequest(item, callback) {\n this.retryQueue.push({ item, callback });\n\n if (!this.retryHandle) {\n this.retryHandle = setInterval(() => {\n while (this.retryQueue.length) {\n const retryObject = this.retryQueue.shift();\n this._makeApiRequest(retryObject.item, retryObject.callback);\n }\n }, this.options.retryInterval);\n }\n }\n\n /**\n * Removes the item from the pending request queue, this queue is used to\n * enable to functionality of providing a callback that clients can pass to `wait` to be notified\n * when the pending request queue has been emptied. This must be called when the API finishes\n * processing this item. If a `wait` callback is configured, it is called by this function.\n *\n * @param item - the item previously added to the pending request queue\n */\n _dequeuePendingRequest(item) {\n const idx = this.pendingRequests.indexOf(item);\n if (idx !== -1) {\n this.pendingRequests.splice(idx, 1);\n this._maybeCallWait();\n }\n }\n\n _maybeLog(data, originalError) {\n if (this.logger && this.options.verbose) {\n let message =\n originalError ||\n _.get(data, 'body.trace.exception.message') ||\n _.get(data, 'body.trace_chain.0.exception.message');\n if (message) {\n this.logger.error(message);\n return;\n }\n message = _.get(data, 'body.message.body');\n if (message) {\n this.logger.log(message);\n }\n }\n }\n\n _maybeCallWait() {\n if (\n _.isFunction(this.waitCallback) &&\n this.pendingItems.length === 0 &&\n this.pendingRequests.length === 0\n ) {\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitCallback();\n return true;\n }\n return false;\n }\n}\n\nexport default Queue;\n","import * as _ from './utility.js';\n\n/*\n * Notifier - the internal object responsible for delegating between the client exposed API, the\n * chain of transforms necessary to turn an item into something that can be sent to Rollbar, and the\n * queue which handles the communcation with the Rollbar API servers.\n *\n * @param queue - an object that conforms to the interface: addItem(item, callback)\n * @param options - an object representing the options to be set for this notifier, this should have\n * any defaults already set by the caller\n */\nfunction Notifier(queue, options) {\n this.queue = queue;\n this.options = options;\n this.transforms = [];\n this.diagnostic = {};\n}\n\n/*\n * configure - updates the options for this notifier with the passed in object\n *\n * @param options - an object which gets merged with the current options set on this notifier\n * @returns this\n */\nNotifier.prototype.configure = function (options) {\n this.queue && this.queue.configure(options);\n var oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n return this;\n};\n\n/*\n * addTransform - adds a transform onto the end of the queue of transforms for this notifier\n *\n * @param transform - a function which takes three arguments:\n * * item: An Object representing the data to eventually be sent to Rollbar\n * * options: The current value of the options for this notifier\n * * callback: function(err: (Null|Error), item: (Null|Object)) the transform must call this\n * callback with a null value for error if it wants the processing chain to continue, otherwise\n * with an error to terminate the processing. The item should be the updated item after this\n * transform is finished modifying it.\n */\nNotifier.prototype.addTransform = function (transform) {\n if (_.isFunction(transform)) {\n this.transforms.push(transform);\n }\n return this;\n};\n\n/*\n * log - the internal log function which applies the configured transforms and then pushes onto the\n * queue to be sent to the backend.\n *\n * @param item - An object with the following structure:\n * message [String] - An optional string to be sent to rollbar\n * error [Error] - An optional error\n *\n * @param callback - A function of type function(err, resp) which will be called with exactly one\n * null argument and one non-null argument. The callback will be called once, either during the\n * transform stage if an error occurs inside a transform, or in response to the communication with\n * the backend. The second argument will be the response from the backend in case of success.\n */\nNotifier.prototype.log = function (item, callback) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n\n if (!this.options.enabled) {\n return callback(new Error('Rollbar is not enabled'));\n }\n\n this.queue.addPendingItem(item);\n var originalError = item.err;\n this._applyTransforms(\n item,\n function (err, i) {\n if (err) {\n this.queue.removePendingItem(item);\n return callback(err, null);\n }\n this.queue.addItem(i, callback, originalError, item);\n }.bind(this),\n );\n};\n\n/* Internal */\n\n/*\n * _applyTransforms - Applies the transforms that have been added to this notifier sequentially. See\n * `addTransform` for more information.\n *\n * @param item - An item to be transformed\n * @param callback - A function of type function(err, item) which will be called with a non-null\n * error and a null item in the case of a transform failure, or a null error and non-null item after\n * all transforms have been applied.\n */\nNotifier.prototype._applyTransforms = function (item, callback) {\n var transformIndex = -1;\n var transformsLength = this.transforms.length;\n var transforms = this.transforms;\n var options = this.options;\n\n var cb = function (err, i) {\n if (err) {\n callback(err, null);\n return;\n }\n\n transformIndex++;\n\n if (transformIndex === transformsLength) {\n callback(null, i);\n return;\n }\n\n transforms[transformIndex](i, options, cb);\n };\n\n cb(null, item);\n};\n\nexport default Notifier;\n","import RateLimiter from './rateLimiter.js';\nimport Queue from './queue.js';\nimport Notifier from './notifier.js';\nimport * as _ from './utility.js';\n\n/*\n * Rollbar - the interface to Rollbar\n *\n * @param options\n * @param api\n * @param logger\n */\nfunction Rollbar(options, api, logger, telemeter, tracing, replay, platform) {\n this.options = _.merge(options);\n this.logger = logger;\n Rollbar.rateLimiter.configureGlobal(this.options);\n Rollbar.rateLimiter.setPlatformOptions(platform, this.options);\n this.api = api;\n this.queue = new Queue(\n Rollbar.rateLimiter,\n api,\n logger,\n this.options,\n replay,\n );\n\n this.tracing = tracing;\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is created\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier = new Notifier(this.queue, this.options);\n this.telemeter = telemeter;\n setStackTraceLimit(options);\n this.lastError = null;\n this.lastErrorHash = 'none';\n}\n\nvar defaultOptions = {\n maxItems: 0,\n itemsPerMinute: 60,\n};\n\nRollbar.rateLimiter = new RateLimiter(defaultOptions);\n\nRollbar.prototype.global = function (options) {\n Rollbar.rateLimiter.configureGlobal(options);\n return this;\n};\n\nRollbar.prototype.configure = function (options, payloadData) {\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.merge(oldOptions, options, payload);\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is configured\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier && this.notifier.configure(this.options);\n this.telemeter && this.telemeter.configure(this.options);\n setStackTraceLimit(options);\n this.global(this.options);\n\n if (validateTracer(options.tracer)) {\n this.tracer = options.tracer;\n }\n\n return this;\n};\n\nRollbar.prototype.log = function (item) {\n var level = this._defaultLogLevel();\n return this._log(level, item);\n};\n\nRollbar.prototype.debug = function (item) {\n this._log('debug', item);\n};\n\nRollbar.prototype.info = function (item) {\n this._log('info', item);\n};\n\nRollbar.prototype.warn = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.warning = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.error = function (item) {\n this._log('error', item);\n};\n\nRollbar.prototype.critical = function (item) {\n this._log('critical', item);\n};\n\nRollbar.prototype.wait = function (callback) {\n this.queue.wait(callback);\n};\n\nRollbar.prototype.captureEvent = function (type, metadata, level) {\n return this.telemeter && this.telemeter.captureEvent(type, metadata, level);\n};\n\nRollbar.prototype.captureDomContentLoaded = function (ts) {\n return this.telemeter && this.telemeter.captureDomContentLoaded(ts);\n};\n\nRollbar.prototype.captureLoad = function (ts) {\n return this.telemeter && this.telemeter.captureLoad(ts);\n};\n\nRollbar.prototype.buildJsonPayload = function (item) {\n return this.api.buildJsonPayload(item);\n};\n\nRollbar.prototype.sendJsonPayload = function (jsonPayload) {\n this.api.postJsonPayload(jsonPayload);\n};\n\n/* Internal */\n\nRollbar.prototype._log = function (defaultLevel, item) {\n var callback;\n if (item.callback) {\n callback = item.callback;\n delete item.callback;\n }\n if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) {\n if (callback) {\n var error = new Error('ignored identical item');\n error.item = item;\n callback(error);\n }\n return;\n }\n try {\n item.level = item.level || defaultLevel;\n\n this._addTracingAttributes(item);\n\n // Legacy OpenTracing support\n this._addTracingInfo(item);\n\n const telemeter = this.telemeter;\n if (telemeter) {\n telemeter._captureRollbarItem(item);\n item.telemetryEvents = telemeter.copyEvents() || [];\n }\n\n this.notifier.log(item, callback);\n } catch (e) {\n if (callback) {\n callback(e);\n }\n this.logger.error(e);\n }\n};\n\nRollbar.prototype._addTracingAttributes = function (item) {\n const span = this.tracing?.getSpan();\n\n const attributes = [\n { key: 'session_id', value: this.tracing?.sessionId },\n { key: 'span_id', value: span?.spanId },\n { key: 'trace_id', value: span?.traceId },\n ];\n _.addItemAttributes(item.data, attributes);\n\n span?.addEvent('rollbar.occurrence', [\n { key: 'rollbar.occurrence.uuid', value: item.uuid },\n ]);\n};\n\nRollbar.prototype._defaultLogLevel = function () {\n return this.options.logLevel || 'debug';\n};\n\nRollbar.prototype._sameAsLastError = function (item) {\n if (!item._isUncaught) {\n return false;\n }\n var itemHash = generateItemHash(item);\n if (this.lastErrorHash === itemHash) {\n return true;\n }\n this.lastError = item.err;\n this.lastErrorHash = itemHash;\n return false;\n};\n\nRollbar.prototype._addTracingInfo = function (item) {\n // Tracer validation occurs in the constructor\n // or in the Rollbar.prototype.configure methods\n if (this.tracer) {\n // add rollbar occurrence uuid to span\n var span = this.tracer.scope().active();\n\n if (validateSpan(span)) {\n span.setTag('rollbar.error_uuid', item.uuid);\n span.setTag('rollbar.has_error', true);\n span.setTag('error', true);\n span.setTag(\n 'rollbar.item_url',\n `https://rollbar.com/item/uuid/?uuid=${item.uuid}`,\n );\n span.setTag(\n 'rollbar.occurrence_url',\n `https://rollbar.com/occurrence/uuid/?uuid=${item.uuid}`,\n );\n\n // add span ID & trace ID to occurrence\n var opentracingSpanId = span.context().toSpanId();\n var opentracingTraceId = span.context().toTraceId();\n\n if (item.custom) {\n item.custom.opentracing_span_id = opentracingSpanId;\n item.custom.opentracing_trace_id = opentracingTraceId;\n } else {\n item.custom = {\n opentracing_span_id: opentracingSpanId,\n opentracing_trace_id: opentracingTraceId,\n };\n }\n }\n }\n};\n\nfunction generateItemHash(item) {\n var message = item.message || '';\n var stack = (item.err || {}).stack || String(item.err);\n return message + '::' + stack;\n}\n\n// Node.js, Chrome, Safari, and some other browsers support this property\n// which globally sets the number of stack frames returned in an Error object.\n// If a browser can't use it, no harm done.\nfunction setStackTraceLimit(options) {\n if (options.stackTraceLimit) {\n Error.stackTraceLimit = options.stackTraceLimit;\n }\n}\n\n/**\n * Validate the Tracer object provided to the Client\n * is valid for our Opentracing use case.\n * @param {opentracer.Tracer} tracer\n */\nfunction validateTracer(tracer) {\n if (!tracer) {\n return false;\n }\n\n if (!tracer.scope || typeof tracer.scope !== 'function') {\n return false;\n }\n\n var scope = tracer.scope();\n\n if (!scope || !scope.active || typeof scope.active !== 'function') {\n return false;\n }\n\n return true;\n}\n\n/**\n * Validate the Span object provided\n * @param {opentracer.Span} span\n */\nfunction validateSpan(span) {\n if (!span || !span.context || typeof span.context !== 'function') {\n return false;\n }\n\n var spanContext = span.context();\n\n if (\n !spanContext ||\n !spanContext.toSpanId ||\n !spanContext.toTraceId ||\n typeof spanContext.toSpanId !== 'function' ||\n typeof spanContext.toTraceId !== 'function'\n ) {\n return false;\n }\n\n return true;\n}\n\nexport default Rollbar;\n","import * as _ from './utility.js';\n\nfunction buildPayload(data) {\n if (!_.isType(data.context, 'string')) {\n var contextResult = _.stringify(data.context);\n if (contextResult.error) {\n data.context = \"Error: could not serialize 'context'\";\n } else {\n data.context = contextResult.value || '';\n }\n if (data.context.length > 255) {\n data.context = data.context.substr(0, 255);\n }\n }\n return {\n data: data,\n };\n}\n\nfunction getTransportFromOptions(options, defaults, url) {\n var hostname = defaults.hostname;\n var protocol = defaults.protocol;\n var port = defaults.port;\n var path = defaults.path;\n var search = defaults.search;\n var timeout = options.timeout;\n var transport = detectTransport(options);\n\n var proxy = options.proxy;\n if (options.endpoint) {\n var opts = url.parse(options.endpoint);\n hostname = opts.hostname;\n protocol = opts.protocol;\n port = opts.port;\n path = opts.pathname;\n search = opts.search;\n }\n return {\n timeout: timeout,\n hostname: hostname,\n protocol: protocol,\n port: port,\n path: path,\n search: search,\n proxy: proxy,\n transport: transport,\n };\n}\n\nfunction detectTransport(options) {\n var gWindow =\n (typeof window != 'undefined' && window) ||\n (typeof self != 'undefined' && self);\n var transport = options.defaultTransport || 'xhr';\n if (typeof gWindow.fetch === 'undefined') transport = 'xhr';\n if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch';\n return transport;\n}\n\nfunction transportOptions(transport, method) {\n var protocol = transport.protocol || 'https:';\n var port =\n transport.port ||\n (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined);\n var hostname = transport.hostname;\n var path = transport.path;\n var timeout = transport.timeout;\n var transportAPI = transport.transport;\n if (transport.search) {\n path = path + transport.search;\n }\n if (transport.proxy) {\n path = protocol + '//' + hostname + path;\n hostname = transport.proxy.host || transport.proxy.hostname;\n port = transport.proxy.port;\n protocol = transport.proxy.protocol || protocol;\n }\n return {\n timeout: timeout,\n protocol: protocol,\n hostname: hostname,\n path: path,\n port: port,\n method: method,\n transport: transportAPI,\n };\n}\n\nfunction appendPathToPath(base, path) {\n var baseTrailingSlash = /\\/$/.test(base);\n var pathBeginningSlash = /^\\//.test(path);\n\n if (baseTrailingSlash && pathBeginningSlash) {\n path = path.substring(1);\n } else if (!baseTrailingSlash && !pathBeginningSlash) {\n path = '/' + path;\n }\n\n return base + path;\n}\n\nexport {\n buildPayload,\n getTransportFromOptions,\n transportOptions,\n appendPathToPath,\n};\n","import * as _ from './utility.js';\nimport * as helpers from './apiUtility.js';\n\nvar defaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/item/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\nvar OTLPDefaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/session/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\n/**\n * Api is an object that encapsulates methods of communicating with\n * the Rollbar API. It is a standard interface with some parts implemented\n * differently for server or browser contexts. It is an object that should\n * be instantiated when used so it can contain non-global options that may\n * be different for another instance of RollbarApi.\n *\n * @param options {\n * accessToken: the accessToken to use for posting items to rollbar\n * endpoint: an alternative endpoint to send errors to\n * must be a valid, fully qualified URL.\n * The default is: https://api.rollbar.com/api/1/item\n * proxy: if you wish to proxy requests provide an object\n * with the following keys:\n * host or hostname (required): foo.example.com\n * port (optional): 123\n * protocol (optional): https\n * }\n */\nfunction Api(options, transport, urllib, truncation) {\n this.options = options;\n this.transport = transport;\n this.url = urllib;\n this.truncation = truncation;\n this.accessToken = options.accessToken;\n this.transportOptions = _getTransport(options, urllib);\n this.OTLPTransportOptions = _getOTLPTransport(options, urllib);\n}\n\n/**\n * Wraps transport.post in a Promise to support async/await\n *\n * @param {Object} options - Options for the API request\n * @param {string} options.accessToken - The access token for authentication\n * @param {Object} options.transportOptions - Options for the transport\n * @param {Object} options.payload - The data payload to send\n * @returns {Promise} A promise that resolves with the response or rejects with an error\n * @private\n */\nApi.prototype._postPromise = function ({\n accessToken,\n options,\n payload,\n headers,\n}) {\n const self = this;\n return new Promise((resolve, reject) => {\n self.transport.post({\n accessToken,\n options,\n payload,\n headers,\n callback: (err, resp) => (err ? reject(err) : resolve(resp)),\n });\n });\n};\n\n/**\n *\n * @param data\n * @param callback\n */\nApi.prototype.postItem = function (data, callback) {\n const options = helpers.transportOptions(this.transportOptions, 'POST');\n const payload = helpers.buildPayload(data);\n const self = this;\n\n // ensure the network request is scheduled after the current tick.\n setTimeout(function () {\n self.transport.post({\n accessToken: self.accessToken,\n options,\n payload,\n callback,\n });\n }, 0);\n};\n\n/**\n * Posts spans to the Rollbar API using the session endpoint\n *\n * @param {Array} payload - The spans to send\n * @returns {Promise} A promise that resolves with the API response\n */\nApi.prototype.postSpans = async function (payload, headers = {}) {\n const options = helpers.transportOptions(this.OTLPTransportOptions, 'POST');\n\n return await this._postPromise({\n accessToken: this.accessToken,\n options,\n payload,\n headers,\n });\n};\n\n/**\n *\n * @param data\n * @param callback\n */\nApi.prototype.buildJsonPayload = function (data, callback) {\n var payload = helpers.buildPayload(data);\n\n var stringifyResult;\n if (this.truncation) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = _.stringify(payload);\n }\n\n if (stringifyResult.error) {\n if (callback) {\n callback(stringifyResult.error);\n }\n return null;\n }\n\n return stringifyResult.value;\n};\n\n/**\n *\n * @param jsonPayload\n * @param callback\n */\nApi.prototype.postJsonPayload = function (jsonPayload, callback) {\n var transportOptions = helpers.transportOptions(\n this.transportOptions,\n 'POST',\n );\n this.transport.postJsonPayload(\n this.accessToken,\n transportOptions,\n jsonPayload,\n callback,\n );\n};\n\nApi.prototype.configure = function (options) {\n var oldOptions = this.oldOptions;\n this.options = _.merge(oldOptions, options);\n this.transportOptions = _getTransport(this.options, this.url);\n this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url);\n if (this.options.accessToken !== undefined) {\n this.accessToken = this.options.accessToken;\n }\n return this;\n};\n\nfunction _getTransport(options, url) {\n return helpers.getTransportFromOptions(options, defaultOptions, url);\n}\n\nfunction _getOTLPTransport(options, url) {\n options = { ...options, endpoint: options.tracing?.endpoint };\n return helpers.getTransportFromOptions(options, OTLPDefaultOptions, url);\n}\n\nexport default Api;\n","let log = () => {};\n\nconst levels = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n disable: 4,\n};\n\nconst logger = {\n error: (...args) => log('error', args),\n warn: (...args) => log('warn', args),\n info: (...args) => log('info', args),\n debug: (...args) => log('debug', args),\n log: (...args) => log('info', args),\n init: ({ logLevel }) => {\n log = function (level, args) {\n if (levels[level] < levels[logLevel]) return;\n\n args.unshift('Rollbar:');\n\n console[level].apply(console, args);\n };\n },\n};\n\nexport default logger;\n","function captureUncaughtExceptions(window, handler, shim) {\n if (!window) {\n return;\n }\n var oldOnError;\n\n if (typeof handler._rollbarOldOnError === 'function') {\n oldOnError = handler._rollbarOldOnError;\n } else if (window.onerror) {\n oldOnError = window.onerror;\n while (oldOnError._rollbarOldOnError) {\n oldOnError = oldOnError._rollbarOldOnError;\n }\n handler._rollbarOldOnError = oldOnError;\n }\n\n handler.handleAnonymousErrors();\n\n var fn = function () {\n var args = Array.prototype.slice.call(arguments, 0);\n _rollbarWindowOnError(window, handler, oldOnError, args);\n };\n if (shim) {\n fn._rollbarOldOnError = oldOnError;\n }\n window.onerror = fn;\n}\n\nfunction _rollbarWindowOnError(window, r, old, args) {\n if (window._rollbarWrappedError) {\n if (!args[4]) {\n args[4] = window._rollbarWrappedError;\n }\n if (!args[5]) {\n args[5] = window._rollbarWrappedError._rollbarContext;\n }\n window._rollbarWrappedError = null;\n }\n\n var ret = r.handleUncaughtException.apply(r, args);\n\n if (old) {\n old.apply(window, args);\n }\n\n // Let other chained onerror handlers above run before setting this.\n // If an error is thrown and caught within a chained onerror handler,\n // Error.prepareStackTrace() will see that one before the one we want.\n if (ret === 'anonymous') {\n r.anonymousErrorsPending += 1; // See Rollbar.prototype.handleAnonymousErrors()\n }\n}\n\nfunction captureUnhandledRejections(window, handler, shim) {\n if (!window) {\n return;\n }\n\n if (\n typeof window._rollbarURH === 'function' &&\n window._rollbarURH.belongsToShim\n ) {\n window.removeEventListener('unhandledrejection', window._rollbarURH);\n }\n\n var rejectionHandler = function (evt) {\n var reason, promise, detail;\n try {\n reason = evt.reason;\n } catch (e) {\n reason = undefined;\n }\n try {\n promise = evt.promise;\n } catch (e) {\n promise = '[unhandledrejection] error getting `promise` from event';\n }\n try {\n detail = evt.detail;\n if (!reason && detail) {\n reason = detail.reason;\n promise = detail.promise;\n }\n } catch (e) {\n // Ignore\n }\n if (!reason) {\n reason = '[unhandledrejection] error getting `reason` from event';\n }\n\n if (handler && handler.handleUnhandledRejection) {\n handler.handleUnhandledRejection(reason, promise);\n }\n };\n rejectionHandler.belongsToShim = shim;\n window._rollbarURH = rejectionHandler;\n window.addEventListener('unhandledrejection', rejectionHandler);\n}\n\nexport { captureUncaughtExceptions, captureUnhandledRejections };\n","import logger from '../../logger.js';\nimport * as _ from '../../utility.js';\n\nfunction makeFetchRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n timeout,\n}) {\n var controller;\n var timeoutId;\n\n if (_.isFiniteNumber(timeout)) {\n controller = new AbortController();\n timeoutId = setTimeout(function () {\n controller.abort();\n }, timeout);\n }\n\n headers = {\n 'Content-Type': 'application/json',\n 'X-Rollbar-Access-Token': accessToken,\n signal: controller && controller.signal,\n ...headers,\n };\n\n fetch(url, {\n method,\n headers,\n body: payload,\n })\n .then(function (response) {\n if (timeoutId) clearTimeout(timeoutId);\n const respHeaders = response.headers;\n\n const isItemRoute = url.endsWith('/api/1/item/');\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': respHeaders.get('Rollbar-Replay-Enabled'),\n 'Rollbar-Replay-RateLimit-Remaining': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n\n const json = response.json();\n callback(null, json, headers);\n })\n .catch(function (error) {\n logger.error(error.message);\n callback(error);\n });\n}\n\nexport default makeFetchRequest;\n","/*global XDomainRequest*/\n\nimport * as _ from '../../utility.js';\nimport logger from '../../logger.js';\n\nfunction makeXhrRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n requestFactory,\n timeout,\n}) {\n var request;\n if (requestFactory) {\n request = requestFactory();\n } else {\n request = _createXMLHTTPObject();\n }\n if (!request) {\n // Give up, no way to send requests\n return callback(new Error('No way to send a request'));\n }\n try {\n try {\n var onreadystatechange = function () {\n try {\n if (onreadystatechange && request.readyState === 4) {\n onreadystatechange = undefined;\n\n var parseResponse = _.jsonParse(request.responseText);\n if (_isSuccess(request)) {\n const isItemRoute = url.endsWith('/api/1/item/');\n\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': request.getResponseHeader(\n 'Rollbar-Replay-Enabled',\n ),\n 'Rollbar-Replay-RateLimit-Remaining':\n request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n callback(parseResponse.error, parseResponse.value, headers);\n return;\n } else if (_isNormalFailure(request)) {\n if (request.status === 403) {\n // likely caused by using a server access token\n var message =\n parseResponse.value && parseResponse.value.message;\n logger.error(message);\n }\n // return valid http status codes\n callback(new Error(String(request.status)));\n } else {\n // IE will return a status 12000+ on some sort of connection failure,\n // so we return a blank error\n // http://msdn.microsoft.com/en-us/library/aa383770%28VS.85%29.aspx\n var msg =\n 'XHR response had no status code (likely connection failure)';\n callback(_newRetriableError(msg));\n }\n }\n } catch (ex) {\n //jquery source mentions firefox may error out while accessing the\n //request members if there is a network error\n //https://github.com/jquery/jquery/blob/a938d7b1282fc0e5c52502c225ae8f0cef219f0a/src/ajax/xhr.js#L111\n var exc;\n if (ex && ex.stack) {\n exc = ex;\n } else {\n exc = new Error(ex);\n }\n callback(exc);\n }\n };\n\n request.open(method, url, true);\n if (request.setRequestHeader) {\n request.setRequestHeader('Content-Type', 'application/json');\n request.setRequestHeader('X-Rollbar-Access-Token', accessToken);\n for (const [h, v] of Object.entries(headers ?? {})) {\n request.setRequestHeader(h, v);\n }\n }\n\n if (_.isFiniteNumber(timeout)) {\n request.timeout = timeout;\n }\n\n request.onreadystatechange = onreadystatechange;\n request.send(payload);\n } catch (e1) {\n // Sending using the normal xmlhttprequest object didn't work, try XDomainRequest\n if (typeof XDomainRequest !== 'undefined') {\n // Assume we are in a really old browser which has a bunch of limitations:\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n\n // Extreme paranoia: if we have XDomainRequest then we have a window, but just in case\n if (!window || !window.location) {\n return callback(\n new Error(\n 'No window available during request, unknown environment',\n ),\n );\n }\n\n // If the current page is http, try and send over http\n if (\n window.location.href.substring(0, 5) === 'http:' &&\n url.substring(0, 5) === 'https'\n ) {\n url = 'http' + url.substring(5);\n }\n\n var xdomainrequest = new XDomainRequest();\n xdomainrequest.onprogress = function () {};\n xdomainrequest.ontimeout = function () {\n var msg = 'Request timed out';\n var code = 'ETIMEDOUT';\n callback(_newRetriableError(msg, code));\n };\n xdomainrequest.onerror = function () {\n callback(new Error('Error during request'));\n };\n xdomainrequest.onload = function () {\n var parseResponse = _.jsonParse(xdomainrequest.responseText);\n callback(parseResponse.error, parseResponse.value);\n };\n xdomainrequest.open(method, url, true);\n xdomainrequest.send(payload);\n } else {\n callback(new Error('Cannot find a method to transport a request'));\n }\n }\n } catch (e2) {\n callback(e2);\n }\n}\n\nfunction _createXMLHTTPObject() {\n /* global ActiveXObject:false */\n\n var factories = [\n function () {\n return new XMLHttpRequest();\n },\n function () {\n return new ActiveXObject('Msxml2.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Msxml3.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Microsoft.XMLHTTP');\n },\n ];\n var xmlhttp;\n var i;\n var numFactories = factories.length;\n for (i = 0; i < numFactories; i++) {\n try {\n xmlhttp = factories[i]();\n break;\n } catch (e) {\n // pass\n }\n }\n return xmlhttp;\n}\n\nfunction _isSuccess(r) {\n return r && r.status && r.status === 200;\n}\n\nfunction _isNormalFailure(r) {\n return r && _.isType(r.status, 'number') && r.status >= 400 && r.status < 600;\n}\n\nfunction _newRetriableError(message, code) {\n var err = new Error(message);\n err.code = code || 'ENOTFOUND';\n return err;\n}\n\nexport default makeXhrRequest;\n","import * as _ from '../utility.js';\nimport makeFetchRequest from './transport/fetch.js';\nimport makeXhrRequest from './transport/xhr.js';\n\n/*\n * accessToken may be embedded in payload but that should not\n * be assumed\n *\n * options: {\n * hostname\n * protocol\n * path\n * port\n * method\n * transport ('xhr' | 'fetch')\n * }\n *\n * params is an object containing key/value pairs. These\n * will be appended to the path as 'key=value&key=value'\n *\n * payload is an unserialized object\n */\nfunction Transport(truncation) {\n this.truncation = truncation;\n}\n\nTransport.prototype.get = function (\n accessToken,\n options,\n params,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n _.addParamsAndAccessTokenToPath(accessToken, options, params);\n\n var method = 'GET';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.post = function ({\n accessToken,\n options,\n payload,\n headers,\n callback,\n requestFactory,\n}) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n\n if (!payload) {\n return callback(new Error('Cannot send empty request'));\n }\n\n var stringifyResult;\n // Check payload.body to ensure only items are truncated.\n if (this.truncation && payload.body) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = _.stringify(payload);\n }\n if (stringifyResult.error) {\n return callback(stringifyResult.error);\n }\n\n var payload = stringifyResult.value;\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.postJsonPayload = function (\n accessToken,\n options,\n payload,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\n// Wraps `_makeRequest` if zone.js is being used, ensuring that Rollbar\n// API calls are not intercepted by any child forked zones.\n// This is equivalent to `NgZone.runOutsideAngular` in Angular.\nTransport.prototype._makeZoneRequest = function () {\n var gWindow =\n (typeof window != 'undefined' && window) ||\n (typeof self != 'undefined' && self);\n // Whenever zone.js is loaded and `Zone` is exposed globally, access\n // the root zone to ensure that requests are always made within it.\n // This approach is framework-agnostic, regardless of which\n // framework zone.js is used with.\n var rootZone = gWindow && gWindow.Zone && gWindow.Zone.root;\n var args = Array.prototype.slice.call(arguments);\n\n if (rootZone) {\n var self = this;\n rootZone.run(function () {\n self._makeRequest.apply(undefined, args);\n });\n } else {\n this._makeRequest.apply(undefined, args);\n }\n};\n\nTransport.prototype._makeRequest = function (params) {\n const { payload, callback, transport } = params;\n if (typeof RollbarProxy !== 'undefined') {\n return _proxyRequest(payload, callback);\n }\n\n if (transport === 'fetch') {\n makeFetchRequest(params);\n } else {\n makeXhrRequest(params);\n }\n};\n\n/* global RollbarProxy */\nfunction _proxyRequest(json, callback) {\n var rollbarProxy = new RollbarProxy();\n rollbarProxy.sendJsonPayload(\n json,\n function (_msg) {\n /* do nothing */\n },\n function (err) {\n callback(new Error(err));\n },\n );\n}\n\nexport default Transport;\n","// See https://nodejs.org/docs/latest/api/url.html\nfunction parse(url) {\n var result = {\n protocol: null,\n auth: null,\n host: null,\n path: null,\n hash: null,\n href: url,\n hostname: null,\n port: null,\n pathname: null,\n search: null,\n query: null,\n };\n\n var i, last;\n i = url.indexOf('//');\n if (i !== -1) {\n result.protocol = url.substring(0, i);\n last = i + 2;\n } else {\n last = 0;\n }\n\n i = url.indexOf('@', last);\n if (i !== -1) {\n result.auth = url.substring(last, i);\n last = i + 1;\n }\n\n i = url.indexOf('/', last);\n if (i === -1) {\n i = url.indexOf('?', last);\n if (i === -1) {\n i = url.indexOf('#', last);\n if (i === -1) {\n result.host = url.substring(last);\n } else {\n result.host = url.substring(last, i);\n result.hash = url.substring(i);\n }\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n return result;\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n\n i = url.indexOf('#', last);\n if (i === -1) {\n result.path = url.substring(last);\n } else {\n result.path = url.substring(last, i);\n result.hash = url.substring(i);\n }\n\n if (result.path) {\n var pathParts = result.path.split('?');\n result.pathname = pathParts[0];\n result.query = pathParts[1];\n result.search = result.query ? '?' + result.query : null;\n }\n return result;\n}\n\nexport { parse };\n","const FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\nfunction parse(error, options) {\n if (typeof error.stacktrace !== \"undefined\" || typeof error[\"opera#sourceloc\"] !== \"undefined\")\n return parseOpera(error, options);\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIE(error, options);\n else if (error.stack)\n return parseFFOrSafari(error, options);\n else if (options?.allowEmpty)\n return [];\n else\n throw new Error(\"Cannot parse given Error object\");\n}\nfunction parseStack(stackString, options) {\n if (stackString.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIeString(stackString, options);\n else\n return parseFFOrSafariString(stackString, options);\n}\nfunction extractLocation(urlLike) {\n if (!urlLike.includes(\":\"))\n return [urlLike, undefined, undefined];\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n const parts = regExp.exec(urlLike.replace(/[()]/g, \"\"));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n}\nfunction applySlice(lines, options) {\n if (options && options.slice != null) {\n if (Array.isArray(options.slice))\n return lines.slice(options.slice[0], options.slice[1]);\n return lines.slice(0, options.slice);\n }\n return lines;\n}\nfunction parseV8OrIE(error, options) {\n return parseV8OrIeString(error.stack, options);\n}\nfunction parseV8OrIeString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\"(eval \")) {\n line = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(,.*$)/g, \"\");\n }\n let sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\").replace(/^.*?\\s+/, \"\");\n const location = sanitizedLine.match(/ (\\(.+\\)$)/);\n sanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n const locationParts = extractLocation(location ? location[1] : sanitizedLine);\n const functionName = location && sanitizedLine || undefined;\n const fileName = [\"eval\", \"\"].includes(locationParts[0]) ? undefined : locationParts[0];\n return {\n function: functionName,\n file: fileName,\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\nfunction parseFFOrSafari(error, options) {\n return parseFFOrSafariString(error.stack, options);\n}\nfunction parseFFOrSafariString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\" > eval\"))\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, \":$1\");\n if (!line.includes(\"@\") && !line.includes(\":\")) {\n return {\n function: line\n };\n } else {\n const functionNameRegex = /(([^\\n\\r\"\\u2028\\u2029]*\".[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*(?:@[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*)*(?:[\\n\\r\\u2028\\u2029][^@]*)?)?[^@]*)@/;\n const matches = line.match(functionNameRegex);\n const functionName = matches && matches[1] ? matches[1] : undefined;\n const locationParts = extractLocation(line.replace(functionNameRegex, \"\"));\n return {\n function: functionName,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n }\n });\n}\nfunction parseOpera(e, options) {\n if (!e.stacktrace || e.message.includes(\"\\n\") && e.message.split(\"\\n\").length > e.stacktrace.split(\"\\n\").length)\n return parseOpera9(e);\n else if (!e.stack)\n return parseOpera10(e);\n else\n return parseOpera11(e, options);\n}\nfunction parseOpera9(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n const lines = e.message.split(\"\\n\");\n const result = [];\n for (let i = 2, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n file: match[2],\n line: +match[1],\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera10(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n const lines = e.stacktrace.split(\"\\n\");\n const result = [];\n for (let i = 0, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n function: match[3] || undefined,\n file: match[2],\n line: match[1] ? +match[1] : undefined,\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera11(error, options) {\n const filtered = applySlice(\n // @ts-expect-error missing stack property\n error.stack.split(\"\\n\").filter((line) => {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }),\n options\n );\n return filtered.map((line) => {\n const tokens = line.split(\"@\");\n const locationParts = extractLocation(tokens.pop());\n const functionCall = tokens.shift() || \"\";\n const functionName = functionCall.replace(//, \"$2\").replace(/\\([^)]*\\)/g, \"\") || undefined;\n let argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/))\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, \"$1\");\n const args = argsRaw === undefined || argsRaw === \"[arguments not available]\" ? undefined : argsRaw.split(\",\");\n return {\n function: functionName,\n args,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\n\nexport { extractLocation, parse, parseFFOrSafari, parseFFOrSafariString, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseStack, parseV8OrIE, parseV8OrIeString };\n","import { parse as parse$1, parseV8OrIE as parseV8OrIE$1, parseFFOrSafari as parseFFOrSafari$1, parseOpera as parseOpera$1, parseOpera9 as parseOpera9$1, parseOpera10 as parseOpera10$1, parseOpera11 as parseOpera11$1 } from './lite.mjs';\nexport { extractLocation } from './lite.mjs';\n\nfunction stackframesLiteToStackframes(liteStackframes) {\n return liteStackframes.map((liteStackframe) => {\n return {\n functionName: liteStackframe.function,\n args: liteStackframe.args,\n fileName: liteStackframe.file,\n lineNumber: liteStackframe.line,\n columnNumber: liteStackframe.col,\n source: liteStackframe.raw\n };\n });\n}\nfunction parse(error, options) {\n return stackframesLiteToStackframes(parse$1(error, options));\n}\nfunction parseV8OrIE(error) {\n return stackframesLiteToStackframes(parseV8OrIE$1(error));\n}\nfunction parseFFOrSafari(error) {\n return stackframesLiteToStackframes(parseFFOrSafari$1(error));\n}\nfunction parseOpera(e) {\n return stackframesLiteToStackframes(parseOpera$1(e));\n}\nfunction parseOpera9(e) {\n return stackframesLiteToStackframes(parseOpera9$1(e));\n}\nfunction parseOpera10(e) {\n return stackframesLiteToStackframes(parseOpera10$1(e));\n}\nfunction parseOpera11(error) {\n return stackframesLiteToStackframes(parseOpera11$1(error));\n}\n\nexport { parse, parseFFOrSafari, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseV8OrIE };\n","import { parse as parseErrorStack } from 'error-stack-parser-es';\n\nvar UNKNOWN_FUNCTION = '?';\nvar ERR_CLASS_REGEXP = new RegExp(\n '^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): ',\n);\n\nfunction guessFunctionName() {\n return UNKNOWN_FUNCTION;\n}\n\nfunction gatherContext() {\n return null;\n}\n\nfunction Frame(stackFrame) {\n var data = {};\n\n data._stackFrame = stackFrame;\n\n data.url = stackFrame.fileName;\n data.line = stackFrame.lineNumber;\n data.func = stackFrame.functionName;\n data.column = stackFrame.columnNumber;\n data.args = stackFrame.args;\n\n data.context = gatherContext();\n\n return data;\n}\n\nfunction Stack(exception, skip) {\n function getStack() {\n var parserStack = [];\n\n skip = skip || 0;\n\n try {\n parserStack = parseErrorStack(exception);\n } catch (e) {\n parserStack = [];\n }\n\n var stack = [];\n\n for (var i = skip; i < parserStack.length; i++) {\n stack.push(new Frame(parserStack[i]));\n }\n\n return stack;\n }\n\n return {\n stack: getStack(),\n message: exception.message,\n name: _mostSpecificErrorName(exception),\n rawStack: exception.stack,\n rawException: exception,\n };\n}\n\nfunction parse(e, skip) {\n var err = e;\n\n if (err.nested || err.cause) {\n var traceChain = [];\n while (err) {\n traceChain.push(new Stack(err, skip));\n err = err.nested || err.cause;\n\n skip = 0; // Only apply skip value to primary error\n }\n\n // Return primary error with full trace chain attached.\n traceChain[0].traceChain = traceChain;\n return traceChain[0];\n } else {\n return new Stack(err, skip);\n }\n}\n\nfunction guessErrorClass(errMsg) {\n if (!errMsg || !errMsg.match) {\n return ['Unknown error. There was no error message to display.', ''];\n }\n var errClassMatch = errMsg.match(ERR_CLASS_REGEXP);\n var errClass = '(unknown)';\n\n if (errClassMatch) {\n errClass = errClassMatch[errClassMatch.length - 1];\n errMsg = errMsg.replace(\n (errClassMatch[errClassMatch.length - 2] || '') + errClass + ':',\n '',\n );\n errMsg = errMsg.replace(/(^[\\s]+|[\\s]+$)/g, '');\n }\n return [errClass, errMsg];\n}\n\n// * Prefers any value over an empty string\n// * Prefers any value over 'Error' where possible\n// * Prefers name over constructor.name when both are more specific than 'Error'\nfunction _mostSpecificErrorName(error) {\n var name = error.name && error.name.length && error.name;\n var constructorName =\n error.constructor.name &&\n error.constructor.name.length &&\n error.constructor.name;\n\n if (!name || !constructorName) {\n return name || constructorName;\n }\n\n if (name === 'Error') {\n return constructorName;\n }\n return name;\n}\n\nexport default {\n guessFunctionName,\n guessErrorClass,\n gatherContext,\n parse,\n Stack,\n Frame,\n};\n","import * as _ from '../utility.js';\nimport errorParser from '../errorParser.js';\nimport logger from '../logger.js';\n\nfunction handleDomException(item, options, callback) {\n if (item.err && errorParser.Stack(item.err).name === 'DOMException') {\n var originalError = new Error();\n originalError.name = item.err.name;\n originalError.message = item.err.message;\n originalError.stack = item.err.stack;\n originalError.nested = item.err;\n item.err = originalError;\n }\n callback(null, item);\n}\n\nfunction handleItemWithError(item, options, callback) {\n item.data = item.data || {};\n if (item.err) {\n try {\n item.stackInfo =\n item.err._savedStackTrace ||\n errorParser.parse(item.err, item.skipFrames);\n\n if (options.addErrorContext) {\n addErrorContext(item);\n }\n } catch (e) {\n logger.error('Error while parsing the error object.', e);\n try {\n item.message =\n item.err.message ||\n item.err.description ||\n item.message ||\n String(item.err);\n } catch (e2) {\n item.message = String(item.err) || String(e2);\n }\n delete item.err;\n }\n }\n callback(null, item);\n}\n\nfunction addErrorContext(item) {\n var chain = [];\n var err = item.err;\n\n chain.push(err);\n\n while (err.nested || err.cause) {\n err = err.nested || err.cause;\n chain.push(err);\n }\n\n _.addErrorContext(item, chain);\n}\n\nfunction ensureItemHasSomethingToSay(item, options, callback) {\n if (!item.message && !item.stackInfo && !item.custom) {\n callback(new Error('No message, stack info, or custom data'), null);\n }\n callback(null, item);\n}\n\nfunction addBaseInfo(item, options, callback) {\n var environment =\n (options.payload && options.payload.environment) || options.environment;\n item.data = _.merge(item.data, {\n environment: environment,\n level: item.level,\n endpoint: options.endpoint,\n platform: 'browser',\n framework: 'browser-js',\n language: 'javascript',\n server: {},\n uuid: item.uuid,\n notifier: {\n name: 'rollbar-browser-js',\n version: options.version,\n },\n custom: item.custom,\n });\n callback(null, item);\n}\n\nfunction addRequestInfo(window) {\n return function (item, options, callback) {\n var requestInfo = {};\n\n if (window && window.location) {\n requestInfo.url = window.location.href;\n requestInfo.query_string = window.location.search;\n }\n\n var remoteString = '$remote_ip';\n if (!options.captureIp) {\n remoteString = null;\n } else if (options.captureIp !== true) {\n remoteString += '_anonymize';\n }\n if (remoteString) requestInfo.user_ip = remoteString;\n\n if (Object.keys(requestInfo).length > 0) {\n _.set(item, 'data.request', requestInfo);\n }\n\n callback(null, item);\n };\n}\n\nfunction addClientInfo(window) {\n return function (item, options, callback) {\n if (!window) {\n return callback(null, item);\n }\n var nav = window.navigator || {};\n var scr = window.screen || {};\n _.set(item, 'data.client', {\n runtime_ms: item.timestamp - window._rollbarStartTime,\n timestamp: Math.round(item.timestamp / 1000),\n javascript: {\n browser: nav.userAgent,\n language: nav.language,\n cookie_enabled: nav.cookieEnabled,\n screen: {\n width: scr.width,\n height: scr.height,\n },\n },\n });\n callback(null, item);\n };\n}\n\nfunction addPluginInfo(window) {\n return function (item, options, callback) {\n if (!window || !window.navigator) {\n return callback(null, item);\n }\n var plugins = [];\n var navPlugins = window.navigator.plugins || [];\n var cur;\n for (var i = 0, l = navPlugins.length; i < l; ++i) {\n cur = navPlugins[i];\n plugins.push({ name: cur.name, description: cur.description });\n }\n _.set(item, 'data.client.javascript.plugins', plugins);\n callback(null, item);\n };\n}\n\nfunction addBody(item, options, callback) {\n if (item.stackInfo) {\n if (item.stackInfo.traceChain) {\n addBodyTraceChain(item, options, callback);\n } else {\n addBodyTrace(item, options, callback);\n }\n } else {\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction addBodyMessage(item, options, callback) {\n var message = item.message;\n var custom = item.custom;\n\n if (!message) {\n message = 'Item sent with null or missing arguments.';\n }\n var result = {\n body: message,\n };\n\n if (custom) {\n result.extra = _.merge(custom);\n }\n\n _.set(item, 'data.body', { message: result });\n callback(null, item);\n}\n\nfunction stackFromItem(item) {\n // Transform a TraceKit stackInfo object into a Rollbar trace\n var stack = item.stackInfo.stack;\n if (\n stack &&\n stack.length === 0 &&\n item._unhandledStackInfo &&\n item._unhandledStackInfo.stack\n ) {\n stack = item._unhandledStackInfo.stack;\n }\n return stack;\n}\n\nfunction addBodyTraceChain(item, options, callback) {\n var traceChain = item.stackInfo.traceChain;\n var traces = [];\n\n var traceChainLength = traceChain.length;\n for (var i = 0; i < traceChainLength; i++) {\n var trace = buildTrace(item, traceChain[i], options);\n traces.push(trace);\n }\n\n _.set(item, 'data.body', { trace_chain: traces });\n callback(null, item);\n}\n\nfunction addBodyTrace(item, options, callback) {\n var stack = stackFromItem(item);\n\n if (stack) {\n var trace = buildTrace(item, item.stackInfo, options);\n _.set(item, 'data.body', { trace: trace });\n callback(null, item);\n } else {\n var stackInfo = item.stackInfo;\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n\n item.message = className + ': ' + message;\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction buildTrace(item, stackInfo, options) {\n var description = item && item.data.description;\n var custom = item && item.custom;\n var stack = stackFromItem(item);\n\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n var trace = {\n exception: {\n class: className,\n message: message,\n },\n };\n\n if (description) {\n trace.exception.description = description;\n }\n\n if (stack) {\n if (stack.length === 0) {\n trace.exception.stack = stackInfo.rawStack;\n trace.exception.raw = String(stackInfo.rawException);\n }\n var stackFrame;\n var frame;\n var code;\n var pre;\n var post;\n var contextLength;\n var i, mid;\n\n trace.frames = [];\n for (i = 0; i < stack.length; ++i) {\n stackFrame = stack[i];\n frame = {\n filename: stackFrame.url ? _.sanitizeUrl(stackFrame.url) : '(unknown)',\n lineno: stackFrame.line || null,\n method:\n !stackFrame.func || stackFrame.func === '?'\n ? '[anonymous]'\n : stackFrame.func,\n colno: stackFrame.column,\n };\n if (options.sendFrameUrl) {\n frame.url = stackFrame.url;\n }\n if (\n frame.method &&\n frame.method.endsWith &&\n frame.method.endsWith('_rollbar_wrapped')\n ) {\n continue;\n }\n\n code = pre = post = null;\n contextLength = stackFrame.context ? stackFrame.context.length : 0;\n if (contextLength) {\n mid = Math.floor(contextLength / 2);\n pre = stackFrame.context.slice(0, mid);\n code = stackFrame.context[mid];\n post = stackFrame.context.slice(mid);\n }\n\n if (code) {\n frame.code = code;\n }\n\n if (pre || post) {\n frame.context = {};\n if (pre && pre.length) {\n frame.context.pre = pre;\n }\n if (post && post.length) {\n frame.context.post = post;\n }\n }\n\n if (stackFrame.args) {\n frame.args = stackFrame.args;\n }\n\n trace.frames.push(frame);\n }\n\n // NOTE(cory): reverse the frames since rollbar.com expects the most recent call last\n trace.frames.reverse();\n\n if (custom) {\n trace.extra = _.merge(custom);\n }\n }\n\n return trace;\n}\n\nfunction errorClass(stackInfo, guess, options) {\n if (stackInfo.name) {\n return stackInfo.name;\n } else if (options.guessErrorClass) {\n return guess;\n } else {\n return '(unknown)';\n }\n}\n\nfunction addScrubber(scrubFn) {\n return function (item, options, callback) {\n if (scrubFn) {\n var scrubFields = options.scrubFields || [];\n var scrubPaths = options.scrubPaths || [];\n item.data = scrubFn(item.data, scrubFields, scrubPaths);\n }\n callback(null, item);\n };\n}\n\nexport {\n handleDomException,\n handleItemWithError,\n ensureItemHasSomethingToSay,\n addBaseInfo,\n addRequestInfo,\n addClientInfo,\n addPluginInfo,\n addBody,\n addScrubber,\n};\n","import * as _ from './utility.js';\n\nfunction itemToPayload(item, options, callback) {\n if (item._isUncaught) {\n item.data._isUncaught = true;\n }\n if (item._originalArgs) {\n item.data._originalArgs = item._originalArgs;\n }\n callback(null, item);\n}\n\nfunction addPayloadOptions(item, options, callback) {\n var payloadOptions = options.payload || {};\n if (payloadOptions.body) {\n delete payloadOptions.body;\n }\n\n item.data = _.merge(item.data, payloadOptions);\n callback(null, item);\n}\n\nfunction addTelemetryData(item, options, callback) {\n if (item.telemetryEvents) {\n _.set(item, 'data.body.telemetry', item.telemetryEvents);\n }\n callback(null, item);\n}\n\nfunction addMessageWithError(item, options, callback) {\n if (!item.message) {\n callback(null, item);\n return;\n }\n var tracePath = 'data.body.trace_chain.0';\n var trace = _.get(item, tracePath);\n if (!trace) {\n tracePath = 'data.body.trace';\n trace = _.get(item, tracePath);\n }\n if (trace) {\n if (!(trace.exception && trace.exception.description)) {\n _.set(item, tracePath + '.exception.description', item.message);\n callback(null, item);\n return;\n }\n var extra = _.get(item, tracePath + '.extra') || {};\n var newExtra = _.merge(extra, { message: item.message });\n _.set(item, tracePath + '.extra', newExtra);\n }\n callback(null, item);\n}\n\nfunction userTransform(logger) {\n return function (item, options, callback) {\n var newItem = _.merge(item);\n var response = null;\n try {\n if (_.isFunction(options.transform)) {\n response = options.transform(newItem.data, item);\n }\n } catch (e) {\n options.transform = null;\n logger.error(\n 'Error while calling custom transform() function. Removing custom transform().',\n e,\n );\n callback(null, item);\n return;\n }\n if (_.isPromise(response)) {\n response.then(\n function (promisedItem) {\n if (promisedItem) {\n newItem.data = promisedItem;\n }\n callback(null, newItem);\n },\n function (error) {\n callback(error, item);\n },\n );\n } else {\n callback(null, newItem);\n }\n };\n}\n\nfunction addConfigToPayload(item, options, callback) {\n if (!options.sendConfig) {\n return callback(null, item);\n }\n var configKey = '_rollbarConfig';\n var custom = _.get(item, 'data.custom') || {};\n custom[configKey] = options;\n item.data.custom = custom;\n callback(null, item);\n}\n\nfunction addFunctionOption(options, name) {\n if (_.isFunction(options[name])) {\n options[name] = options[name].toString();\n }\n}\n\nfunction addConfiguredOptions(item, options, callback) {\n var configuredOptions = options._configuredOptions;\n\n // These must be stringified or they'll get dropped during serialization.\n addFunctionOption(configuredOptions, 'transform');\n addFunctionOption(configuredOptions, 'checkIgnore');\n addFunctionOption(configuredOptions, 'onSendCallback');\n\n delete configuredOptions.accessToken;\n item.data.notifier.configured_options = configuredOptions;\n callback(null, item);\n}\n\nfunction addDiagnosticKeys(item, options, callback) {\n var diagnostic = _.merge(\n item.notifier.client.notifier.diagnostic,\n item.diagnostic,\n );\n\n if (_.get(item, 'err._isAnonymous')) {\n diagnostic.is_anonymous = true;\n }\n\n if (item._isUncaught) {\n diagnostic.is_uncaught = item._isUncaught;\n }\n\n if (item.err) {\n try {\n diagnostic.raw_error = {\n message: item.err.message,\n name: item.err.name,\n constructor_name: item.err.constructor && item.err.constructor.name,\n filename: item.err.fileName,\n line: item.err.lineNumber,\n column: item.err.columnNumber,\n stack: item.err.stack,\n };\n } catch (e) {\n diagnostic.raw_error = { failed: String(e) };\n }\n }\n\n item.data.notifier.diagnostic = _.merge(\n item.data.notifier.diagnostic,\n diagnostic,\n );\n callback(null, item);\n}\n\nexport {\n itemToPayload,\n addPayloadOptions,\n addTelemetryData,\n addMessageWithError,\n userTransform,\n addConfigToPayload,\n addConfiguredOptions,\n addDiagnosticKeys,\n};\n","import * as _ from '../utility.js';\n\nfunction checkIgnore(item, settings) {\n if (_.get(settings, 'plugins.jquery.ignoreAjaxErrors')) {\n return !_.get(item, 'body.message.extra.isAjax');\n }\n return true;\n}\n\nexport { checkIgnore };\n","import * as _ from './utility.js';\n\nfunction checkLevel(item, settings) {\n var level = item.level;\n var levelVal = _.LEVELS[level] || 0;\n var reportLevel = settings.reportLevel;\n var reportLevelVal = _.LEVELS[reportLevel] || 0;\n\n if (levelVal < reportLevelVal) {\n return false;\n }\n return true;\n}\n\nfunction userCheckIgnore(logger) {\n return function (item, settings) {\n var isUncaught = !!item._isUncaught;\n delete item._isUncaught;\n var args = item._originalArgs;\n delete item._originalArgs;\n try {\n if (_.isFunction(settings.onSendCallback)) {\n settings.onSendCallback(isUncaught, args, item);\n }\n } catch (e) {\n settings.onSendCallback = null;\n logger.error('Error while calling onSendCallback, removing', e);\n }\n try {\n if (\n _.isFunction(settings.checkIgnore) &&\n settings.checkIgnore(isUncaught, args, item)\n ) {\n return false;\n }\n } catch (e) {\n settings.checkIgnore = null;\n logger.error('Error while calling custom checkIgnore(), removing', e);\n }\n return true;\n };\n}\n\nfunction urlIsNotBlockListed(logger) {\n return function (item, settings) {\n return !urlIsOnAList(item, settings, 'blocklist', logger);\n };\n}\n\nfunction urlIsSafeListed(logger) {\n return function (item, settings) {\n return urlIsOnAList(item, settings, 'safelist', logger);\n };\n}\n\nfunction matchFrames(trace, list, block) {\n if (!trace) {\n return !block;\n }\n\n var frames = trace.frames;\n\n if (!frames || frames.length === 0) {\n return !block;\n }\n\n var frame, filename, url, urlRegex;\n var listLength = list.length;\n var frameLength = frames.length;\n for (var i = 0; i < frameLength; i++) {\n frame = frames[i];\n filename = frame.filename;\n\n if (!_.isType(filename, 'string')) {\n return !block;\n }\n\n for (var j = 0; j < listLength; j++) {\n url = list[j];\n urlRegex = new RegExp(url);\n\n if (urlRegex.test(filename)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction urlIsOnAList(item, settings, safeOrBlock, logger) {\n // safelist is the default\n var block = false;\n if (safeOrBlock === 'blocklist') {\n block = true;\n }\n\n var list, traces;\n try {\n list = block ? settings.hostBlockList : settings.hostSafeList;\n traces = _.get(item, 'body.trace_chain') || [_.get(item, 'body.trace')];\n\n // These two checks are important to come first as they are defaults\n // in case the list is missing or the trace is missing or not well-formed\n if (!list || list.length === 0) {\n return !block;\n }\n if (traces.length === 0 || !traces[0]) {\n return !block;\n }\n\n var tracesLength = traces.length;\n for (var i = 0; i < tracesLength; i++) {\n if (matchFrames(traces[i], list, block)) {\n return true;\n }\n }\n } catch (\n e\n /* istanbul ignore next */\n ) {\n if (block) {\n settings.hostBlockList = null;\n } else {\n settings.hostSafeList = null;\n }\n var listName = block ? 'hostBlockList' : 'hostSafeList';\n logger.error(\n \"Error while reading your configuration's \" +\n listName +\n ' option. Removing custom ' +\n listName +\n '.',\n e,\n );\n return !block;\n }\n return false;\n}\n\nfunction messageIsIgnored(logger) {\n return function (item, settings) {\n var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages;\n\n try {\n messageIsIgnored = false;\n ignoredMessages = settings.ignoredMessages;\n\n if (!ignoredMessages || ignoredMessages.length === 0) {\n return true;\n }\n\n messages = messagesFromItem(item);\n\n if (messages.length === 0) {\n return true;\n }\n\n len = ignoredMessages.length;\n for (i = 0; i < len; i++) {\n rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi');\n\n for (j = 0; j < messages.length; j++) {\n messageIsIgnored = rIgnoredMessage.test(messages[j]);\n\n if (messageIsIgnored) {\n return false;\n }\n }\n }\n } catch (\n e\n /* istanbul ignore next */\n ) {\n settings.ignoredMessages = null;\n logger.error(\n \"Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages.\",\n );\n }\n\n return true;\n };\n}\n\nfunction messagesFromItem(item) {\n var body = item.body;\n var messages = [];\n\n // The payload schema only allows one of trace_chain, message, or trace.\n // However, existing test cases are based on having both trace and message present.\n // So here we preserve the ability to collect strings from any combination of these keys.\n if (body.trace_chain) {\n var traceChain = body.trace_chain;\n for (var i = 0; i < traceChain.length; i++) {\n var trace = traceChain[i];\n messages.push(_.get(trace, 'exception.message'));\n }\n }\n if (body.trace) {\n messages.push(_.get(body, 'trace.exception.message'));\n }\n if (body.message) {\n messages.push(_.get(body, 'message.body'));\n }\n return messages;\n}\n\nexport {\n checkLevel,\n userCheckIgnore,\n urlIsNotBlockListed,\n urlIsSafeListed,\n messageIsIgnored,\n};\n","/**\n * Default session replay recording options\n * See https://github.com/rrweb-io/rrweb/blob/master/guide.md#options for details\n */\nexport default {\n enabled: false, // Whether recording is enabled\n autoStart: true, // Start recording automatically when Rollbar initializes\n\n // defaults used by triggers that don't specify them\n triggerDefaults: {\n samplingRatio: 1.0,\n preDuration: 300,\n postDuration: 5,\n },\n triggers: [\n {\n type: 'occurrence',\n level: ['error', 'critical'],\n },\n ],\n\n debug: {\n logErrors: true, // Whether to log errors emitted by rrweb.\n logEmits: false, // Whether to log emitted events\n },\n\n // Recording options\n inlineStylesheet: true, // Whether to inline stylesheets to improve replay accuracy\n inlineImages: false, // Whether to record the image content\n collectFonts: true, // Whether to collect fonts in the website\n\n // Privacy options\n // Fine-grained control over which input types to mask\n // By default only password inputs are masked if maskInputs is true\n maskInputOptions: {\n password: true,\n email: false,\n tel: false,\n text: false,\n color: false,\n date: false,\n 'datetime-local': false,\n month: false,\n number: false,\n range: false,\n search: false,\n time: false,\n url: false,\n week: false,\n },\n\n // Mask all input values\n maskAllInputs: false,\n\n // Class names to block, mask, or ignore the content of elements.\n blockClass: 'rb-block',\n maskTextClass: 'rb-mask',\n ignoreClass: 'rb-ignore',\n\n // Remove unnecessary parts of the DOM\n // By default all removable elements are removed\n slimDOMOptions: {\n script: true, // Remove script elements\n comment: true, // Remove comments\n headFavicon: true, // Remove favicons in the head\n headWhitespace: true, // Remove whitespace in head\n headMetaDescKeywords: true, // Remove meta description and keywords\n headMetaSocial: true, // Remove social media meta tags\n headMetaRobots: true, // Remove robots meta directives\n headMetaHttpEquiv: true, // Remove http-equiv meta directives\n headMetaAuthorship: true, // Remove authorship meta directives\n headMetaVerification: true, // Remove verification meta directives\n },\n\n // Custom callbacks for advanced use cases\n // These are undefined by default and can be set programmatically\n // maskInputFn: undefined, // Custom function to mask input values\n // maskTextFn: undefined, // Custom function to mask text content\n // errorHandler: undefined, // Custom error handler for recording errors\n\n // Plugin system\n // plugins: [] // List of plugins to use (must be set programmatically)\n};\n","/**\n * Default tracing options\n */\nexport default {\n enabled: false,\n endpoint: 'api.rollbar.com/api/1/session/',\n};\n","/**\n * Default options shared across platforms\n */\nexport const version = '3.0.0-rc.1';\nexport const endpoint = 'api.rollbar.com/api/1/item/';\nexport const logLevel = 'debug';\nexport const reportLevel = 'debug';\nexport const uncaughtErrorLevel = 'error';\nexport const maxItems = 0;\nexport const itemsPerMin = 60;\n\nexport const commonScrubFields = [\n 'pw',\n 'pass',\n 'passwd',\n 'password',\n 'secret',\n 'confirm_password',\n 'confirmPassword',\n 'password_confirmation',\n 'passwordConfirmation',\n 'access_token',\n 'accessToken',\n 'X-Rollbar-Access-Token',\n 'secret_key',\n 'secretKey',\n 'secretToken',\n];\n\nexport const apiScrubFields = [\n 'api_key',\n 'authenticity_token',\n 'oauth_token',\n 'token',\n 'user_session_secret',\n];\n\nexport const requestScrubFields = [\n 'request.session.csrf',\n 'request.session._csrf',\n 'request.params._csrf',\n 'request.cookie',\n 'request.cookies',\n];\n\nexport const commonScrubHeaders = [\n 'authorization',\n 'www-authorization',\n 'http_authorization',\n 'omniauth.auth',\n 'cookie',\n 'oauth-access-token',\n 'x-access-token',\n 'x_csrf_token',\n 'http_x_csrf_token',\n 'x-csrf-token',\n];\n\n// For backward compatibility with default export\nexport default {\n version,\n endpoint,\n logLevel,\n reportLevel,\n uncaughtErrorLevel,\n maxItems,\n itemsPerMin,\n};\n","/**\n * Default browser options\n */\nimport { commonScrubFields } from '../defaults.js';\n\nexport const scrubFields = [\n ...commonScrubFields,\n 'cc-number',\n 'card number',\n 'cardnumber',\n 'cardnum',\n 'ccnum',\n 'ccnumber',\n 'cc num',\n 'creditcardnumber',\n 'credit card number',\n 'newcreditcardnumber',\n 'new credit card',\n 'creditcardno',\n 'credit card no',\n 'card#',\n 'card #',\n 'cc-csc',\n 'cvc',\n 'cvc2',\n 'cvv2',\n 'ccv2',\n 'security code',\n 'card verification',\n 'name on credit card',\n 'name on card',\n 'nameoncard',\n 'cardholder',\n 'card holder',\n 'name des karteninhabers',\n 'ccname',\n 'card type',\n 'cardtype',\n 'cc type',\n 'cctype',\n 'payment type',\n 'expiration date',\n 'expirationdate',\n 'expdate',\n 'cc-exp',\n 'ccmonth',\n 'ccyear',\n];\n\n// For compatibility with existing code that expects default export with scrubFields property\nexport default { scrubFields };\n","import Client from '../rollbar.js';\nimport * as _ from '../utility.js';\nimport API from '../api.js';\nimport logger from '../logger.js';\nimport * as globals from './globalSetup.js';\n\nimport Transport from './transport.js';\nimport * as urllib from './url.js';\n\nimport * as transforms from './transforms.js';\nimport * as sharedTransforms from '../transforms.js';\nimport * as predicates from './predicates.js';\nimport * as sharedPredicates from '../predicates.js';\nimport errorParser from '../errorParser.js';\nimport replayDefaults from './replay/defaults.js';\nimport tracingDefaults from '../tracing/defaults.js';\n\n// Used to support global `Rollbar` instance.\nlet _instance = null;\n\nclass Rollbar {\n constructor(options, client) {\n logger.init({ logLevel: options.logLevel || 'error' });\n this.options = _.handleOptions(defaultOptions, options, null, logger);\n this.options._configuredOptions = options;\n this.components = this.components || {};\n const Telemeter = this.components.telemeter;\n const Instrumenter = this.components.instrumenter;\n this.wrapGlobals = this.components.wrapGlobals;\n this.scrub = this.components.scrub;\n const truncation = this.components.truncation;\n const Tracing = this.components.tracing;\n const Replay = this.components.replay;\n\n const transport = new Transport(truncation);\n const api = new API(this.options, transport, urllib, truncation);\n if (Tracing) {\n this.tracing = new Tracing(_gWindow(), api, this.options);\n this.tracing.initSession();\n }\n if (Telemeter) {\n this.telemeter = new Telemeter(this.options, this.tracing);\n }\n\n if (Replay && _.isBrowser()) {\n const replayOptions = this.options.replay;\n this.replay = new Replay({\n tracing: this.tracing,\n telemeter: this.telemeter,\n options: replayOptions,\n });\n\n if (replayOptions.enabled && replayOptions.autoStart) {\n this.replay.recorder.start();\n }\n }\n\n this.client =\n client ||\n new Client(\n this.options,\n api,\n logger,\n this.telemeter,\n this.tracing,\n this.replay,\n 'browser',\n );\n var gWindow = _gWindow();\n var gDocument = typeof document != 'undefined' && document;\n this.isChrome = gWindow.chrome && gWindow.chrome.runtime; // check .runtime to avoid Edge browsers\n this.anonymousErrorsPending = 0;\n addTransformsToNotifier(this.client.notifier, this, gWindow);\n addPredicatesToQueue(this.client.queue);\n this.setupUnhandledCapture();\n if (Instrumenter) {\n this.instrumenter = new Instrumenter(\n this.options,\n this.client.telemeter,\n this,\n gWindow,\n gDocument,\n );\n this.instrumenter.instrument();\n }\n\n this.setSessionAttributesFromOptions(options);\n\n // Used with rollbar-react for rollbar-react-native compatibility.\n this.rollbar = this;\n }\n\n static init(options, client) {\n if (_instance) {\n return _instance.global(options).configure(options);\n }\n _instance = new Rollbar(options, client);\n return _instance;\n }\n\n static setComponents(components) {\n Rollbar.prototype.components = components;\n }\n\n global(options) {\n this.client.global(options);\n return this;\n }\n\n configure(options, payloadData) {\n if (options.logLevel) {\n logger.init({ logLevel: options.logLevel });\n }\n this.setSessionAttributesFromOptions(options);\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.handleOptions(oldOptions, options, payload, logger);\n this.options._configuredOptions = _.handleOptions(\n oldOptions._configuredOptions,\n options,\n payload,\n );\n\n this.tracing?.configure(this.options);\n this.replay?.configure(this.options.replay);\n this.client.configure(this.options, payloadData);\n this.instrumenter?.configure(this.options);\n this.setupUnhandledCapture();\n return this;\n }\n\n lastError() {\n return this.client.lastError;\n }\n\n log() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.log(item);\n return { uuid: uuid };\n }\n\n debug() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.debug(item);\n return { uuid: uuid };\n }\n\n info() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.info(item);\n return { uuid: uuid };\n }\n\n warn() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warn(item);\n return { uuid: uuid };\n }\n\n warning() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warning(item);\n return { uuid: uuid };\n }\n\n error() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.error(item);\n return { uuid: uuid };\n }\n\n critical() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.critical(item);\n return { uuid: uuid };\n }\n\n buildJsonPayload(item) {\n return this.client.buildJsonPayload(item);\n }\n\n sendJsonPayload(jsonPayload) {\n return this.client.sendJsonPayload(jsonPayload);\n }\n\n triggerDirectReplay(context) {\n return this.triggerReplay({ type: 'direct', ...context });\n }\n\n triggerReplay(context) {\n if (!this.replay) return null;\n\n return this.replay.triggerReplay(context);\n }\n\n setupUnhandledCapture() {\n var gWindow = _gWindow();\n\n if (!this.unhandledExceptionsInitialized) {\n if (\n this.options.captureUncaught ||\n this.options.handleUncaughtExceptions\n ) {\n globals.captureUncaughtExceptions(gWindow, this);\n if (this.wrapGlobals && this.options.wrapGlobalEventHandlers) {\n this.wrapGlobals(gWindow, this);\n }\n this.unhandledExceptionsInitialized = true;\n }\n }\n if (!this.unhandledRejectionsInitialized) {\n if (\n this.options.captureUnhandledRejections ||\n this.options.handleUnhandledRejections\n ) {\n globals.captureUnhandledRejections(gWindow, this);\n this.unhandledRejectionsInitialized = true;\n }\n }\n }\n\n handleUncaughtException(message, url, lineno, colno, error, context) {\n if (\n !this.options.captureUncaught &&\n !this.options.handleUncaughtExceptions\n ) {\n return;\n }\n\n // Chrome will always send 5+ arguments and error will be valid or null, not undefined.\n // If error is undefined, we have a different caller.\n // Chrome also sends errors from web workers with null error, but does not invoke\n // prepareStackTrace() for these. Test for empty url to skip them.\n if (\n this.options.inspectAnonymousErrors &&\n this.isChrome &&\n error === null &&\n url === ''\n ) {\n return 'anonymous';\n }\n\n var item;\n var stackInfo = _.makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n 'onerror',\n 'uncaught exception',\n errorParser,\n );\n if (_.isError(error)) {\n item = this._createItem([message, error, context]);\n item._unhandledStackInfo = stackInfo;\n } else if (_.isError(url)) {\n item = this._createItem([message, url, context]);\n item._unhandledStackInfo = stackInfo;\n } else {\n item = this._createItem([message, context]);\n item.stackInfo = stackInfo;\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n this.client.log(item);\n }\n\n /**\n * Chrome only. Other browsers will ignore.\n *\n * Use Error.prepareStackTrace to extract information about errors that\n * do not have a valid error object in onerror().\n *\n * In tested version of Chrome, onerror is called first but has no way\n * to communicate with prepareStackTrace. Use a counter to let this\n * handler know which errors to send to Rollbar.\n *\n * In config options, set inspectAnonymousErrors to enable.\n */\n handleAnonymousErrors() {\n if (!this.options.inspectAnonymousErrors || !this.isChrome) {\n return;\n }\n\n var r = this;\n function prepareStackTrace(error, _stack) {\n if (r.options.inspectAnonymousErrors) {\n if (r.anonymousErrorsPending) {\n // This is the only known way to detect that onerror saw an anonymous error.\n // It depends on onerror reliably being called before Error.prepareStackTrace,\n // which so far holds true on tested versions of Chrome. If versions of Chrome\n // are tested that behave differently, this logic will need to be updated\n // accordingly.\n r.anonymousErrorsPending -= 1;\n\n if (!error) {\n // Not likely to get here, but calling handleUncaughtException from here\n // without an error object would throw off the anonymousErrorsPending counter,\n // so return now.\n return;\n }\n\n // Allow this to be tracked later.\n error._isAnonymous = true;\n\n // url, lineno, colno shouldn't be needed for these errors.\n // If that changes, update this accordingly, using the unused\n // _stack param as needed (rather than parse error.toString()).\n r.handleUncaughtException(error.message, null, null, null, error);\n }\n }\n\n // Workaround to ensure stack is preserved for normal errors.\n return error.stack;\n }\n\n // https://v8.dev/docs/stack-trace-api\n try {\n Error.prepareStackTrace = prepareStackTrace;\n } catch (e) {\n this.options.inspectAnonymousErrors = false;\n this.error('anonymous error handler failed', e);\n }\n }\n\n handleUnhandledRejection(reason, promise) {\n if (\n !this.options.captureUnhandledRejections &&\n !this.options.handleUnhandledRejections\n ) {\n return;\n }\n\n var message = 'unhandled rejection was null or undefined!';\n if (reason) {\n if (reason.message) {\n message = reason.message;\n } else {\n var reasonResult = _.stringify(reason);\n if (reasonResult.value) {\n message = reasonResult.value;\n }\n }\n }\n var context =\n (reason && reason._rollbarContext) ||\n (promise && promise._rollbarContext);\n\n var item;\n if (_.isError(reason)) {\n item = this._createItem([message, reason, context]);\n } else {\n item = this._createItem([message, reason, context]);\n item.stackInfo = _.makeUnhandledStackInfo(\n message,\n '',\n 0,\n 0,\n null,\n 'unhandledrejection',\n '',\n errorParser,\n );\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n item._originalArgs = item._originalArgs || [];\n item._originalArgs.push(promise);\n this.client.log(item);\n }\n\n wrap(f, context, _before) {\n try {\n var ctxFn;\n if (_.isFunction(context)) {\n ctxFn = context;\n } else {\n ctxFn = function () {\n return context || {};\n };\n }\n\n if (!_.isFunction(f)) {\n return f;\n }\n\n if (f._isWrap) {\n return f;\n }\n\n if (!f._rollbar_wrapped) {\n f._rollbar_wrapped = function () {\n if (_before && _.isFunction(_before)) {\n _before.apply(this, arguments);\n }\n try {\n return f.apply(this, arguments);\n } catch (exc) {\n var e = exc;\n if (e && window._rollbarWrappedError !== e) {\n if (_.isType(e, 'string')) {\n e = new String(e);\n }\n e._rollbarContext = ctxFn() || {};\n e._rollbarContext._wrappedSource = f.toString();\n\n window._rollbarWrappedError = e;\n }\n throw e;\n }\n };\n\n f._rollbar_wrapped._isWrap = true;\n\n if (f.hasOwnProperty) {\n for (var prop in f) {\n if (f.hasOwnProperty(prop) && prop !== '_rollbar_wrapped') {\n f._rollbar_wrapped[prop] = f[prop];\n }\n }\n }\n }\n\n return f._rollbar_wrapped;\n } catch (e) {\n // Return the original function if the wrap fails.\n return f;\n }\n }\n\n captureEvent() {\n var event = _.createTelemetryEvent(arguments);\n return this.client.captureEvent(event.type, event.metadata, event.level);\n }\n\n setSessionUser(user) {\n if (!this.tracing?.session) return;\n\n this.tracing.session.setUser(user);\n }\n\n setSessionAttributes(attrs) {\n if (!this.tracing?.session) return;\n\n attrs = { ...attrs };\n\n this.tracing.session.setAttributes(attrs);\n }\n\n setSessionAttributesFromOptions(options) {\n const person = options.person || options.payload?.person;\n if (person) {\n this.setSessionUser(person);\n }\n const code_version =\n options.client?.javascript?.code_version ||\n options.codeVersion ||\n options.code_version ||\n options.payload?.client?.javascript?.code_version ||\n options.payload?.code_version ||\n options.payload?.codeVersion;\n this.setSessionAttributes({\n 'rollbar.codeVersion': code_version,\n 'rollbar.notifier.name': 'rollbar-browser-js',\n 'rollbar.notifier.version': options.version,\n });\n }\n\n // The following two methods are used internally and are not meant for public use\n captureDomContentLoaded(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureDomContentLoaded(ts);\n }\n\n captureLoad(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureLoad(ts);\n }\n\n loadFull() {\n logger.info(\n 'Unexpected Rollbar.loadFull() called on a Notifier instance. This can happen when Rollbar is loaded multiple times.',\n );\n }\n\n _createItem(args) {\n return _.createItem(args, logger, this);\n }\n\n // Static version of instance methods support the legacy pattern of a\n // global `Rollbar` instance, where after calling `Rollbar.init()`,\n // `Rollbar` can be used as if it were an instance.\n // If support for this pattern is dropped, these static methods can be removed.\n static callInstance(method, args) {\n if (!_instance) {\n const message = 'Rollbar is not initialized';\n logger.error(message);\n const maybeCallback = _getFirstFunction(args);\n if (maybeCallback) {\n maybeCallback(new Error(message));\n }\n return;\n }\n return _instance[method].apply(_instance, args);\n }\n\n static global = (...args) => Rollbar.callInstance('global', args);\n static configure = (...args) => Rollbar.callInstance('configure', args);\n static lastError = (...args) => Rollbar.callInstance('lastError', args);\n static log = (...args) => Rollbar.callInstance('log', args);\n static debug = (...args) => Rollbar.callInstance('debug', args);\n static info = (...args) => Rollbar.callInstance('info', args);\n static warn = (...args) => Rollbar.callInstance('warn', args);\n static warning = (...args) => Rollbar.callInstance('warning', args);\n static error = (...args) => Rollbar.callInstance('error', args);\n static critical = (...args) => Rollbar.callInstance('critical', args);\n static buildJsonPayload = (...args) =>\n Rollbar.callInstance('buildJsonPayload', args);\n static sendJsonPayload = (...args) =>\n Rollbar.callInstance('sendJsonPayload', args);\n static wrap = (...args) => Rollbar.callInstance('wrap', args);\n static captureEvent = (...args) => Rollbar.callInstance('captureEvent', args);\n}\n\n/* Internal */\n\nfunction addTransformsToNotifier(notifier, rollbar, gWindow) {\n notifier\n .addTransform(transforms.handleDomException)\n .addTransform(transforms.handleItemWithError)\n .addTransform(transforms.ensureItemHasSomethingToSay)\n .addTransform(transforms.addBaseInfo)\n .addTransform(transforms.addRequestInfo(gWindow))\n .addTransform(transforms.addClientInfo(gWindow))\n .addTransform(transforms.addPluginInfo(gWindow))\n .addTransform(transforms.addBody)\n .addTransform(sharedTransforms.addMessageWithError)\n .addTransform(sharedTransforms.addTelemetryData)\n .addTransform(sharedTransforms.addConfigToPayload)\n .addTransform(transforms.addScrubber(rollbar.scrub))\n .addTransform(sharedTransforms.addPayloadOptions)\n .addTransform(sharedTransforms.userTransform(logger))\n .addTransform(sharedTransforms.addConfiguredOptions)\n .addTransform(sharedTransforms.addDiagnosticKeys)\n .addTransform(sharedTransforms.itemToPayload);\n}\n\nfunction addPredicatesToQueue(queue) {\n queue\n .addPredicate(sharedPredicates.checkLevel)\n .addPredicate(predicates.checkIgnore)\n .addPredicate(sharedPredicates.userCheckIgnore(logger))\n .addPredicate(sharedPredicates.urlIsNotBlockListed(logger))\n .addPredicate(sharedPredicates.urlIsSafeListed(logger))\n .addPredicate(sharedPredicates.messageIsIgnored(logger));\n}\n\nfunction _getFirstFunction(args) {\n for (var i = 0, len = args.length; i < len; ++i) {\n if (_.isFunction(args[i])) {\n return args[i];\n }\n }\n return undefined;\n}\n\nfunction _gWindow() {\n return (\n (typeof window != 'undefined' && window) ||\n (typeof self != 'undefined' && self)\n );\n}\n\nimport {\n version,\n logLevel,\n reportLevel,\n uncaughtErrorLevel,\n endpoint,\n} from '../defaults.js';\nimport browserDefaults from './defaults.js';\n\nconst defaultOptions = {\n environment: 'unknown',\n version: version,\n scrubFields: browserDefaults.scrubFields,\n logLevel: logLevel,\n reportLevel: reportLevel,\n uncaughtErrorLevel: uncaughtErrorLevel,\n endpoint: endpoint,\n verbose: false,\n enabled: true,\n transmit: true,\n sendConfig: false,\n includeItemsInTelemetry: true,\n captureIp: true,\n inspectAnonymousErrors: true,\n ignoreDuplicateErrors: true,\n wrapGlobalEventHandlers: false,\n replay: replayDefaults,\n tracing: tracingDefaults,\n};\n\nexport default Rollbar;\n","import * as _ from './utility.js';\n\nconst MAX_EVENTS = 100;\n\n// Temporary workaround while solving commonjs -> esm issues in Node 18 - 20.\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\nclass Telemeter {\n constructor(options, tracing) {\n this.queue = [];\n this.options = _.merge(options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n this.tracing = tracing;\n this.telemetrySpan = this.tracing?.startSpan('rollbar-telemetry', {});\n }\n\n configure(options) {\n var oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n var newMaxEvents = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n var deleteCount = 0;\n if (this.queue.length > newMaxEvents) {\n deleteCount = this.queue.length - newMaxEvents;\n }\n this.maxQueueSize = newMaxEvents;\n this.queue.splice(0, deleteCount);\n }\n\n copyEvents() {\n var events = Array.prototype.slice.call(this.queue, 0);\n if (_.isFunction(this.options.filterTelemetry)) {\n try {\n var i = events.length;\n while (i--) {\n if (this.options.filterTelemetry(events[i])) {\n events.splice(i, 1);\n }\n }\n } catch (e) {\n this.options.filterTelemetry = null;\n }\n }\n\n // Filter until supported in legacy telemetry\n events = events.filter((e) => e.type !== 'connectivity');\n\n // Remove internal keys from output\n events = events.map(({ otelAttributes, ...event }) => event);\n\n return events;\n }\n\n exportTelemetrySpan(attributes = {}) {\n if (this.telemetrySpan) {\n this.telemetrySpan.end(attributes);\n this.telemetrySpan = this.tracing.startSpan('rollbar-telemetry', {});\n }\n }\n\n capture(\n type,\n metadata,\n level,\n rollbarUUID,\n timestamp = null,\n otelAttributes = null,\n ) {\n var e = {\n level: getLevel(type, level),\n type: type,\n timestamp_ms: timestamp || _.now(),\n body: metadata,\n source: 'client',\n };\n if (rollbarUUID) {\n e.uuid = rollbarUUID;\n }\n if (otelAttributes) {\n e.otelAttributes = otelAttributes;\n }\n\n try {\n if (\n _.isFunction(this.options.filterTelemetry) &&\n this.options.filterTelemetry(e)\n ) {\n return false;\n }\n } catch (exc) {\n this.options.filterTelemetry = null;\n }\n\n this.push(e);\n return e;\n }\n\n captureEvent(type, metadata, level, rollbarUUID) {\n return this.capture(type, metadata, level, rollbarUUID);\n }\n\n captureError(err, level, rollbarUUID, timestamp) {\n const message = err.message || String(err);\n var metadata = { message };\n if (err.stack) {\n metadata.stack = err.stack;\n }\n const otelAttributes = {\n message,\n level,\n type: 'error',\n uuid: rollbarUUID,\n };\n\n this.telemetrySpan?.addEvent(\n 'rollbar-occurrence-event',\n otelAttributes,\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'error',\n metadata,\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureLog(message, level, rollbarUUID, timestamp) {\n let otelAttributes = null;\n\n // If the uuid is present, this is a message occurrence.\n if (rollbarUUID) {\n ((otelAttributes = {\n message,\n level,\n type: 'message',\n uuid: rollbarUUID,\n }),\n this.telemetrySpan?.addEvent(\n 'rollbar-occurrence-event',\n otelAttributes,\n fromMillis(timestamp),\n ));\n } else {\n otelAttributes = { message, level };\n this.telemetrySpan?.addEvent(\n 'rollbar-log-event',\n otelAttributes,\n fromMillis(timestamp),\n );\n }\n\n return this.capture(\n 'log',\n { message },\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNetwork(metadata, subtype, rollbarUUID, requestData) {\n subtype = subtype || 'xhr';\n metadata.subtype = metadata.subtype || subtype;\n if (requestData) {\n metadata.request = requestData;\n }\n const level = this.levelFromStatus(metadata.status_code);\n const endTimeNano = (metadata.end_time_ms || 0) * 1e6;\n const otelAttributes = {\n type: metadata.subtype,\n method: metadata.method,\n url: metadata.url,\n statusCode: metadata.status_code,\n 'request.headers': JSON.stringify(metadata.request_headers || {}),\n 'response.headers': JSON.stringify(metadata.response?.headers || {}),\n 'response.timeUnixNano': endTimeNano.toString(),\n };\n\n this.telemetrySpan?.addEvent(\n 'rollbar-network-event',\n otelAttributes,\n fromMillis(metadata.start_time_ms),\n );\n\n return this.capture(\n 'network',\n metadata,\n level,\n rollbarUUID,\n metadata.start_time_ms,\n otelAttributes,\n );\n }\n\n levelFromStatus(statusCode) {\n if (statusCode >= 200 && statusCode < 400) {\n return 'info';\n }\n if (statusCode === 0 || statusCode >= 400) {\n return 'error';\n }\n return 'info';\n }\n\n captureDom(subtype, element, value, checked, rollbarUUID) {\n var metadata = {\n subtype: subtype,\n element: element,\n };\n if (value !== undefined) {\n metadata.value = value;\n }\n if (checked !== undefined) {\n metadata.checked = checked;\n }\n return this.capture('dom', metadata, 'info', rollbarUUID);\n }\n\n captureInput({ type, isSynthetic, element, value, timestamp }) {\n const name = 'rollbar-input-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n value,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n value,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureClick({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-click-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n _getRepeatedEvent(name, attributes) {\n const lastEvent = this._lastEvent(this.queue);\n\n if (\n lastEvent &&\n lastEvent.body.type === name &&\n lastEvent.otelAttributes.target === attributes.target\n ) {\n return lastEvent;\n }\n }\n\n _updateRepeatedEvent(event, attributes, timestamp) {\n const duration = Math.max(timestamp - event.timestamp_ms, 1);\n event.body.value = attributes.value;\n event.otelAttributes.value = attributes.value;\n event.otelAttributes.height = attributes.height;\n event.otelAttributes.width = attributes.width;\n event.otelAttributes.textZoomRatio = attributes.textZoomRatio;\n event.otelAttributes['endTimeUnixNano'] = fromMillis(timestamp);\n event.otelAttributes['durationUnixNano'] = fromMillis(duration);\n event.otelAttributes.count = (event.otelAttributes.count || 1) + 1;\n event.otelAttributes.rate = event.otelAttributes.count / (duration / 1000);\n }\n\n _lastEvent(list) {\n return list.length > 0 ? list[list.length - 1] : null;\n }\n\n captureFocus({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-focus-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureResize({\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n timestamp,\n }) {\n const name = 'rollbar-resize-event';\n const metadata = {\n type: name,\n subtype: type,\n width,\n height,\n textZoomRatio,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n };\n\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureDragDrop({\n type,\n isSynthetic,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n timestamp,\n }) {\n const name = 'rollbar-dragdrop-event';\n let metadata = {\n type: name,\n subtype: type,\n isSynthetic,\n };\n\n let otelAttributes = {\n type,\n isSynthetic,\n };\n\n if (type === 'dragstart') {\n metadata = { ...metadata, element, dropEffect, effectAllowed };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n };\n }\n\n if (type === 'drop') {\n metadata = {\n ...metadata,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNavigation(from, to, rollbarUUID, timestamp) {\n this.telemetrySpan?.addEvent(\n 'rollbar-navigation-event',\n { 'previous.url.full': from, 'url.full': to },\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'navigation',\n { from, to },\n 'info',\n rollbarUUID,\n timestamp,\n );\n }\n\n captureDomContentLoaded(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'DOMContentLoaded' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'DOMContentLoaded'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureLoad(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'load' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'load'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureConnectivityChange({ type, isSynthetic, timestamp }) {\n const name = 'rollbar-connectivity-event';\n const metadata = {\n type: name,\n subtype: type,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'connectivity',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n // Only intended to be used internally by the notifier\n _captureRollbarItem(item) {\n if (!this.options.includeItemsInTelemetry) {\n return;\n }\n if (item.err) {\n return this.captureError(item.err, item.level, item.uuid, item.timestamp);\n }\n if (item.message) {\n return this.captureLog(\n item.message,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n if (item.custom) {\n return this.capture(\n 'log',\n item.custom,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n }\n\n push(e) {\n this.queue.push(e);\n if (this.queue.length > this.maxQueueSize) {\n this.queue.shift();\n }\n }\n}\n\nfunction getLevel(type, level) {\n if (level) {\n return level;\n }\n var defaultLevel = {\n error: 'error',\n manual: 'info',\n };\n return defaultLevel[type] || 'info';\n}\n\nexport default Telemeter;\n","/*\n * headers - Detect when fetch Headers are undefined and use a partial polyfill.\n *\n * A full polyfill is not used in order to keep package size as small as possible.\n * Since this is only used internally and is not added to the window object,\n * the full interface doesn't need to be supported.\n *\n * This implementation is modified from whatwg-fetch:\n * https://github.com/github/fetch\n */\nfunction headers(headers) {\n if (typeof Headers === 'undefined') {\n return new FetchHeaders(headers);\n }\n\n return new Headers(headers);\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n return name.toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value;\n}\n\nfunction iteratorFor(items) {\n var iterator = {\n next: function () {\n var value = items.shift();\n return { done: value === undefined, value: value };\n },\n };\n\n return iterator;\n}\n\nfunction FetchHeaders(headers) {\n this.map = {};\n\n if (headers instanceof FetchHeaders) {\n headers.forEach(function (value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function (header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function (name) {\n this.append(name, headers[name]);\n }, this);\n }\n}\n\nFetchHeaders.prototype.append = function (name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n};\n\nFetchHeaders.prototype.get = function (name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null;\n};\n\nFetchHeaders.prototype.has = function (name) {\n return this.map.hasOwnProperty(normalizeName(name));\n};\n\nFetchHeaders.prototype.forEach = function (callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n};\n\nFetchHeaders.prototype.entries = function () {\n var items = [];\n this.forEach(function (value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items);\n};\n\nexport default headers;\n","function replace(obj, name, replacement, replacements, type) {\n var orig = obj[name];\n obj[name] = replacement(orig);\n if (replacements) {\n replacements[type].push([obj, name, orig]);\n }\n}\n\nexport default replace;\n","import * as _ from '../utility.js';\n\nfunction traverse(obj, func, seen) {\n var k, v, i;\n var isObj = _.isType(obj, 'object');\n var isArray = _.isType(obj, 'array');\n var keys = [];\n var seenIndex;\n\n // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11.\n seen = seen || { obj: [], mapped: [] };\n\n if (isObj) {\n seenIndex = seen.obj.indexOf(obj);\n\n if (isObj && seenIndex !== -1) {\n // Prefer the mapped object if there is one.\n return seen.mapped[seenIndex] || seen.obj[seenIndex];\n }\n\n seen.obj.push(obj);\n seenIndex = seen.obj.length - 1;\n }\n\n if (isObj) {\n for (k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k)) {\n keys.push(k);\n }\n }\n } else if (isArray) {\n for (i = 0; i < obj.length; ++i) {\n keys.push(i);\n }\n }\n\n var result = isObj ? {} : [];\n var same = true;\n for (i = 0; i < keys.length; ++i) {\n k = keys[i];\n v = obj[k];\n result[k] = func(k, v, seen);\n same = same && result[k] === obj[k];\n }\n\n if (isObj && !same) {\n seen.mapped[seenIndex] = result;\n }\n\n return !same ? result : obj;\n}\n\nexport default traverse;\n","import * as _ from './utility.js';\nimport traverse from './utility/traverse.js';\n\nfunction scrub(data, scrubFields, scrubPaths) {\n scrubFields = scrubFields || [];\n\n if (scrubPaths) {\n for (var i = 0; i < scrubPaths.length; ++i) {\n scrubPath(data, scrubPaths[i]);\n }\n }\n\n var paramRes = _getScrubFieldRegexs(scrubFields);\n var queryRes = _getScrubQueryParamRegexs(scrubFields);\n\n function redactQueryParam(dummy0, paramPart) {\n return paramPart + _.redact();\n }\n\n function paramScrubber(v) {\n var i;\n if (_.isType(v, 'string')) {\n for (i = 0; i < queryRes.length; ++i) {\n v = v.replace(queryRes[i], redactQueryParam);\n }\n }\n return v;\n }\n\n function valScrubber(k, v) {\n var i;\n for (i = 0; i < paramRes.length; ++i) {\n if (paramRes[i].test(k)) {\n v = _.redact();\n break;\n }\n }\n return v;\n }\n\n function scrubber(k, v, seen) {\n var tmpV = valScrubber(k, v);\n if (tmpV === v) {\n if (_.isType(v, 'object') || _.isType(v, 'array')) {\n return traverse(v, scrubber, seen);\n }\n return paramScrubber(tmpV);\n } else {\n return tmpV;\n }\n }\n\n return traverse(data, scrubber);\n}\n\nfunction scrubPath(obj, path) {\n var keys = path.split('.');\n var last = keys.length - 1;\n try {\n for (var i = 0; i <= last; ++i) {\n if (i < last) {\n obj = obj[keys[i]];\n } else {\n obj[keys[i]] = _.redact();\n }\n }\n } catch (e) {\n // Missing key is OK;\n }\n}\n\nfunction _getScrubFieldRegexs(scrubFields) {\n var ret = [];\n var pat;\n for (var i = 0; i < scrubFields.length; ++i) {\n pat = '^\\\\[?(%5[bB])?' + scrubFields[i] + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?$';\n ret.push(new RegExp(pat, 'i'));\n }\n return ret;\n}\n\nfunction _getScrubQueryParamRegexs(scrubFields) {\n var ret = [];\n var pat;\n for (var i = 0; i < scrubFields.length; ++i) {\n pat = '\\\\[?(%5[bB])?' + scrubFields[i] + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?';\n ret.push(new RegExp('(' + pat + '=)([^&\\\\n]+)', 'igm'));\n }\n return ret;\n}\n\nexport default scrub;\n","function getElementType(e) {\n return (e.getAttribute('type') || '').toLowerCase();\n}\n\nfunction isDescribedElement(element, type, subtypes) {\n if (element.tagName.toLowerCase() !== type.toLowerCase()) {\n return false;\n }\n if (!subtypes) {\n return true;\n }\n element = getElementType(element);\n for (var i = 0; i < subtypes.length; i++) {\n if (subtypes[i] === element) {\n return true;\n }\n }\n return false;\n}\n\nfunction getElementFromEvent(evt, doc) {\n if (evt.target) {\n return evt.target;\n }\n if (doc && doc.elementFromPoint) {\n return doc.elementFromPoint(evt.clientX, evt.clientY);\n }\n return undefined;\n}\n\nfunction treeToArray(elem) {\n var MAX_HEIGHT = 5;\n var out = [];\n var nextDescription;\n for (var height = 0; elem && height < MAX_HEIGHT; height++) {\n nextDescription = describeElement(elem);\n if (nextDescription.tagName === 'html') {\n break;\n }\n out.unshift(nextDescription);\n elem = elem.parentNode;\n }\n return out;\n}\n\nfunction elementArrayToString(a) {\n var MAX_LENGTH = 80;\n var separator = ' > ',\n separatorLength = separator.length;\n var out = [],\n len = 0,\n nextStr,\n totalLength;\n\n for (var i = a.length - 1; i >= 0; i--) {\n nextStr = descriptionToString(a[i]);\n totalLength = len + out.length * separatorLength + nextStr.length;\n if (i < a.length - 1 && totalLength >= MAX_LENGTH + 3) {\n out.unshift('...');\n break;\n }\n out.unshift(nextStr);\n len += nextStr.length;\n }\n return out.join(separator);\n}\n\nfunction elementString(elem) {\n return elementArrayToString(treeToArray(elem));\n}\n\nfunction descriptionToString(desc) {\n if (!desc || !desc.tagName) {\n return '';\n }\n var out = [desc.tagName];\n if (desc.id) {\n out.push('#' + desc.id);\n }\n if (desc.classes) {\n out.push('.' + desc.classes.join('.'));\n }\n for (var i = 0; i < desc.attributes.length; i++) {\n out.push(\n '[' + desc.attributes[i].key + '=\"' + desc.attributes[i].value + '\"]',\n );\n }\n\n return out.join('');\n}\n\n/**\n * Input: a dom element\n * Output: null if tagName is falsey or input is falsey, else\n * {\n * tagName: String,\n * id: String | undefined,\n * classes: [String] | undefined,\n * attributes: [\n * {\n * key: OneOf(type, name, title, alt),\n * value: String\n * }\n * ]\n * }\n */\nfunction describeElement(elem) {\n if (!elem || !elem.tagName) {\n return null;\n }\n var out = {},\n className,\n key,\n attr,\n i;\n out.tagName = elem.tagName.toLowerCase();\n if (elem.id) {\n out.id = elem.id;\n }\n className = elem.className;\n if (className && typeof className === 'string') {\n out.classes = className.split(/\\s+/);\n }\n var attributes = ['type', 'name', 'title', 'alt'];\n out.attributes = [];\n for (i = 0; i < attributes.length; i++) {\n key = attributes[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.attributes.push({ key: key, value: attr });\n }\n }\n return out;\n}\n\n/*\n * Detects if the given element matches any of the given class names (string or regex),\n * or CSS selectors.\n * @param {HTMLElement} element - The DOM element to check.\n * @param {Array} classes - An array of class names (string or regex) to match against.\n * @param {Array} selectors - An array of CSS selectors to match against.\n * @return {boolean} - True if the element matches any of the classes or selectors, false otherwise.\n */\nfunction isMatchingElement(element, classes, selectors) {\n try {\n for (const cls of classes) {\n if (typeof cls === 'string') {\n if (element.classList.contains(cls)) {\n return true;\n }\n } else {\n for (const c of element.classList) {\n if (cls.test(c)) {\n return true;\n }\n }\n }\n }\n for (const sel of selectors) {\n if (element.matches(sel)) {\n return true;\n }\n }\n } catch (e) {\n // ignore errors from invalid arguments\n }\n return false;\n}\n\nexport {\n describeElement,\n descriptionToString,\n elementArrayToString,\n elementString,\n treeToArray,\n getElementFromEvent,\n isDescribedElement,\n getElementType,\n isMatchingElement,\n};\n","import * as _ from '../utility.js';\nimport headers from '../utility/headers.js';\nimport replace from '../utility/replace.js';\nimport scrub from '../scrub.js';\nimport * as urlparser from './url.js';\nimport * as domUtil from './domUtility.js';\n\nconst defaults = {\n network: true,\n networkResponseHeaders: false,\n networkResponseBody: false,\n networkRequestHeaders: false,\n networkRequestBody: false,\n networkErrorOnHttp5xx: false,\n networkErrorOnHttp4xx: false,\n networkErrorOnHttp0: false,\n log: true,\n dom: true,\n navigation: true,\n connectivity: true,\n contentSecurityPolicy: true,\n errorOnContentSecurityPolicy: false,\n};\n\nfunction restore(replacements, type) {\n let b;\n while (replacements[type].length) {\n b = replacements[type].shift();\n b[0][b[1]] = b[2];\n }\n}\n\nfunction nameFromDescription(description) {\n if (!description || !description.attributes) {\n return null;\n }\n const attrs = description.attributes;\n for (const a of attrs) {\n if (a.key === 'name') {\n return a.value;\n }\n }\n return null;\n}\n\nfunction defaultValueScrubber(scrubFields) {\n const patterns = [];\n for (const field of scrubFields) {\n patterns.push(new RegExp(field, 'i'));\n }\n return function (description) {\n const name = nameFromDescription(description);\n if (!name) {\n return false;\n }\n for (const p of patterns) {\n if (p.test(name)) {\n return true;\n }\n }\n return false;\n };\n}\n\nclass Instrumenter {\n constructor(options, telemeter, rollbar, _window, _document) {\n this.options = options;\n let autoInstrument = options.autoInstrument;\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.telemeter = telemeter;\n this.rollbar = rollbar;\n this.diagnostic = rollbar.client.notifier.diagnostic;\n this._window = _window || {};\n this._document = _document || {};\n this.replacements = {\n network: [],\n log: [],\n navigation: [],\n connectivity: [],\n };\n this.eventRemovers = {\n dom: [],\n connectivity: [],\n contentsecuritypolicy: [],\n };\n\n this._location = this._window.location;\n this._lastHref = this._location && this._location.href;\n }\n\n configureScrubbing() {\n const options = this.options;\n this.scrubTelemetryInputs = !!(\n options.scrubTelemetryInputs ?? options.replay?.maskAllInputs\n );\n this.telemetryScrubber = options.telemetryScrubber;\n this.defaultValueScrubber = defaultValueScrubber(options.scrubFields);\n this.maskInputFn = options.replay?.maskInputFn;\n this.maskInputOptions = options.replay?.maskInputOptions || {};\n this.scrubClasses = [\n options.replay?.blockClass,\n options.replay?.ignoreClass,\n options.replay?.maskTextClass,\n ].filter(Boolean);\n this.scrubSelectors = [\n options.replay?.blockSelector,\n options.replay?.ignoreSelector,\n options.replay?.maskTextSelector,\n ].filter(Boolean);\n }\n\n configure(options) {\n this.options = _.merge(this.options, options);\n let autoInstrument = options.autoInstrument;\n const oldSettings = _.merge(this.autoInstrument);\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.instrument(oldSettings);\n }\n\n // eslint-disable-next-line complexity\n instrument(oldSettings) {\n if (this.autoInstrument.network && !(oldSettings && oldSettings.network)) {\n this.instrumentNetwork();\n } else if (\n !this.autoInstrument.network &&\n oldSettings &&\n oldSettings.network\n ) {\n this.deinstrumentNetwork();\n }\n\n if (this.autoInstrument.log && !(oldSettings && oldSettings.log)) {\n this.instrumentConsole();\n } else if (!this.autoInstrument.log && oldSettings && oldSettings.log) {\n this.deinstrumentConsole();\n }\n\n if (this.autoInstrument.dom && !(oldSettings && oldSettings.dom)) {\n this.instrumentDom();\n } else if (!this.autoInstrument.dom && oldSettings && oldSettings.dom) {\n this.deinstrumentDom();\n }\n\n if (\n this.autoInstrument.navigation &&\n !(oldSettings && oldSettings.navigation)\n ) {\n this.instrumentNavigation();\n } else if (\n !this.autoInstrument.navigation &&\n oldSettings &&\n oldSettings.navigation\n ) {\n this.deinstrumentNavigation();\n }\n\n if (\n this.autoInstrument.connectivity &&\n !(oldSettings && oldSettings.connectivity)\n ) {\n this.instrumentConnectivity();\n } else if (\n !this.autoInstrument.connectivity &&\n oldSettings &&\n oldSettings.connectivity\n ) {\n this.deinstrumentConnectivity();\n }\n\n if (\n this.autoInstrument.contentSecurityPolicy &&\n !(oldSettings && oldSettings.contentSecurityPolicy)\n ) {\n this.instrumentContentSecurityPolicy();\n } else if (\n !this.autoInstrument.contentSecurityPolicy &&\n oldSettings &&\n oldSettings.contentSecurityPolicy\n ) {\n this.deinstrumentContentSecurityPolicy();\n }\n }\n\n deinstrumentNetwork() {\n restore(this.replacements, 'network');\n }\n\n instrumentNetwork() {\n const self = this;\n\n function wrapProp(prop, xhr) {\n if (prop in xhr && _.isFunction(xhr[prop])) {\n replace(xhr, prop, function (orig) {\n return self.rollbar.wrap(orig);\n });\n }\n }\n\n if ('XMLHttpRequest' in this._window) {\n const xhrp = this._window.XMLHttpRequest.prototype;\n replace(\n xhrp,\n 'open',\n function (orig) {\n return function (method, url) {\n const isUrlObject = _isUrlObject(url);\n if (_.isType(url, 'string') || isUrlObject) {\n url = isUrlObject ? url.toString() : url;\n if (this.__rollbar_xhr) {\n this.__rollbar_xhr.method = method;\n this.__rollbar_xhr.url = url;\n this.__rollbar_xhr.status_code = null;\n this.__rollbar_xhr.start_time_ms = _.now();\n this.__rollbar_xhr.end_time_ms = null;\n } else {\n this.__rollbar_xhr = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'setRequestHeader',\n function (orig) {\n return function (header, value) {\n // If xhr.open is async, __rollbar_xhr may not be initialized yet.\n if (!this.__rollbar_xhr) {\n this.__rollbar_xhr = {};\n }\n if (_.isType(header, 'string') && _.isType(value, 'string')) {\n if (self.autoInstrument.networkRequestHeaders) {\n if (!this.__rollbar_xhr.request_headers) {\n this.__rollbar_xhr.request_headers = {};\n }\n this.__rollbar_xhr.request_headers[header] = value;\n }\n // We want the content type even if request header telemetry is off.\n if (header.toLowerCase() === 'content-type') {\n this.__rollbar_xhr.request_content_type = value;\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'send',\n function (orig) {\n return function (data) {\n const xhr = this;\n\n function onreadystatechangeHandler() {\n if (xhr.__rollbar_xhr) {\n if (xhr.__rollbar_xhr.status_code === null) {\n xhr.__rollbar_xhr.status_code = 0;\n if (self.autoInstrument.networkRequestBody) {\n xhr.__rollbar_xhr.request = data;\n }\n xhr.__rollbar_event = self.captureNetwork(\n xhr.__rollbar_xhr,\n 'xhr',\n undefined,\n );\n }\n if (xhr.readyState < 2) {\n xhr.__rollbar_xhr.start_time_ms = _.now();\n }\n if (xhr.readyState > 3) {\n const end_time_ms = _.now();\n xhr.__rollbar_xhr.end_time_ms = end_time_ms;\n\n let headers = null;\n xhr.__rollbar_xhr.response_content_type =\n xhr.getResponseHeader('Content-Type');\n if (self.autoInstrument.networkResponseHeaders) {\n const headersConfig =\n self.autoInstrument.networkResponseHeaders;\n headers = {};\n try {\n let header;\n if (headersConfig === true) {\n const allHeaders = xhr.getAllResponseHeaders();\n if (allHeaders) {\n const arr = allHeaders.trim().split(/[\\r\\n]+/);\n let parts, value;\n for (const h of arr) {\n parts = h.split(': ');\n header = parts.shift();\n value = parts.join(': ');\n headers[header] = value;\n }\n }\n } else {\n for (const h of headersConfig) {\n headers[h] = xhr.getResponseHeader(h);\n }\n }\n } catch (e) {\n /* we ignore the errors here that could come from different\n * browser issues with the xhr methods */\n }\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n try {\n body = xhr.responseText;\n } catch (e) {\n /* ignore errors from reading responseText */\n }\n }\n let response = null;\n if (body || headers) {\n response = {};\n if (body) {\n if (\n self.isJsonContentType(\n xhr.__rollbar_xhr.response_content_type,\n )\n ) {\n response.body = self.scrubJson(body);\n } else {\n response.body = body;\n }\n }\n if (headers) {\n response.headers = headers;\n }\n }\n if (response) {\n xhr.__rollbar_xhr.response = response;\n }\n try {\n let code = xhr.status;\n code = code === 1223 ? 204 : code;\n xhr.__rollbar_xhr.status_code = code;\n self.addOtelNetworkResponse(\n xhr.__rollbar_event,\n end_time_ms,\n code,\n );\n xhr.__rollbar_event.level =\n self.telemeter.levelFromStatus(code);\n self.errorOnHttpStatus(xhr.__rollbar_xhr);\n } catch (e) {\n /* ignore possible exception from xhr.status */\n }\n }\n }\n }\n\n wrapProp('onload', xhr);\n wrapProp('onerror', xhr);\n wrapProp('onprogress', xhr);\n\n if (\n 'onreadystatechange' in xhr &&\n _.isFunction(xhr.onreadystatechange)\n ) {\n replace(xhr, 'onreadystatechange', function (orig) {\n return self.rollbar.wrap(\n orig,\n undefined,\n onreadystatechangeHandler,\n );\n });\n } else {\n xhr.onreadystatechange = onreadystatechangeHandler;\n }\n if (xhr.__rollbar_xhr && self.trackHttpErrors()) {\n xhr.__rollbar_xhr.stack = new Error().stack;\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n }\n\n if ('fetch' in this._window) {\n replace(\n this._window,\n 'fetch',\n function (orig) {\n return function (fn, t) {\n const args = [...arguments];\n const input = args[0];\n let method = 'GET';\n let url;\n const isUrlObject = _isUrlObject(input);\n if (_.isType(input, 'string') || isUrlObject) {\n url = isUrlObject ? input.toString() : input;\n } else if (input) {\n url = input.url;\n if (input.method) {\n method = input.method;\n }\n }\n if (args[1] && args[1].method) {\n method = args[1].method;\n }\n const metadata = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n if (args[1] && args[1].headers) {\n // Argument may be a Headers object, or plain object. Ensure here that\n // we are working with a Headers object with case-insensitive keys.\n const reqHeaders = headers(args[1].headers);\n\n metadata.request_content_type = reqHeaders.get('Content-Type');\n\n if (self.autoInstrument.networkRequestHeaders) {\n metadata.request_headers = self.fetchHeaders(\n reqHeaders,\n self.autoInstrument.networkRequestHeaders,\n );\n }\n }\n\n if (self.autoInstrument.networkRequestBody) {\n if (args[1] && args[1].body) {\n metadata.request = args[1].body;\n } else if (\n args[0] &&\n !_.isType(args[0], 'string') &&\n args[0].body\n ) {\n metadata.request = args[0].body;\n }\n }\n const telemetryEvent = self.captureNetwork(\n metadata,\n 'fetch',\n undefined,\n );\n if (self.trackHttpErrors()) {\n metadata.stack = new Error().stack;\n }\n\n // Start our handler before returning the promise. This allows resp.clone()\n // to execute before other handlers touch the response.\n return orig.apply(this, args).then(function (resp) {\n const end_time_ms = _.now();\n metadata.end_time_ms = end_time_ms;\n metadata.status_code = resp.status;\n self.addOtelNetworkResponse(\n telemetryEvent,\n end_time_ms,\n resp.status,\n );\n\n metadata.response_content_type = resp.headers.get('Content-Type');\n let headers = null;\n if (self.autoInstrument.networkResponseHeaders) {\n headers = self.fetchHeaders(\n resp.headers,\n self.autoInstrument.networkResponseHeaders,\n );\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n if (typeof resp.text === 'function') {\n // Response.text() is not implemented on some platforms\n // The response must be cloned to prevent reading (and locking) the original stream.\n // This must be done before other handlers touch the response.\n body = resp.clone().text(); //returns a Promise\n }\n }\n if (headers || body) {\n metadata.response = {};\n if (body) {\n // Test to ensure body is a Promise, which it should always be.\n if (typeof body.then === 'function') {\n body.then(function (text) {\n if (\n text &&\n self.isJsonContentType(metadata.response_content_type)\n ) {\n metadata.response.body = self.scrubJson(text);\n } else {\n metadata.response.body = text;\n }\n });\n } else {\n metadata.response.body = body;\n }\n }\n if (headers) {\n metadata.response.headers = headers;\n }\n }\n self.errorOnHttpStatus(metadata);\n return resp;\n });\n };\n },\n this.replacements,\n 'network',\n );\n }\n }\n\n captureNetwork(metadata, subtype, rollbarUUID) {\n if (\n metadata.request &&\n this.isJsonContentType(metadata.request_content_type)\n ) {\n metadata.request = this.scrubJson(metadata.request);\n }\n return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID);\n }\n\n isJsonContentType(contentType) {\n return contentType &&\n _.isType(contentType, 'string') &&\n contentType.toLowerCase().includes('json')\n ? true\n : false;\n }\n\n addOtelNetworkResponse(event, endTimeMs, statusCode) {\n if (event.otelAttributes) {\n event.otelAttributes['response.timeUnixNano'] = (\n endTimeMs * 1e6\n ).toString();\n event.otelAttributes.statusCode = statusCode;\n }\n }\n\n scrubJson(json) {\n return JSON.stringify(scrub(JSON.parse(json), this.options.scrubFields));\n }\n\n fetchHeaders(inHeaders, headersConfig) {\n const outHeaders = {};\n try {\n if (headersConfig === true) {\n if (typeof inHeaders.entries === 'function') {\n // Headers.entries() is not implemented in IE\n const allHeaders = inHeaders.entries();\n let currentHeader = allHeaders.next();\n while (!currentHeader.done) {\n outHeaders[currentHeader.value[0]] = currentHeader.value[1];\n currentHeader = allHeaders.next();\n }\n }\n } else {\n for (const h of headersConfig) {\n outHeaders[h] = inHeaders.get(h);\n }\n }\n } catch (e) {\n /* ignore probable IE errors */\n }\n return outHeaders;\n }\n\n trackHttpErrors() {\n return (\n this.autoInstrument.networkErrorOnHttp5xx ||\n this.autoInstrument.networkErrorOnHttp4xx ||\n this.autoInstrument.networkErrorOnHttp0\n );\n }\n\n errorOnHttpStatus(metadata) {\n const status = metadata.status_code;\n\n if (\n (status >= 500 && this.autoInstrument.networkErrorOnHttp5xx) ||\n (status >= 400 && this.autoInstrument.networkErrorOnHttp4xx) ||\n (status === 0 && this.autoInstrument.networkErrorOnHttp0)\n ) {\n const error = new Error('HTTP request failed with Status ' + status);\n error.stack = metadata.stack;\n this.rollbar.error(error, { skipFrames: 1 });\n }\n }\n\n deinstrumentConsole() {\n let b;\n while (this.replacements['log'].length) {\n b = this.replacements['log'].shift();\n this._window.console[b[0]] = b[1];\n }\n }\n\n instrumentConsole() {\n if (!this._window?.console?.log) {\n return;\n }\n\n const self = this;\n const c = this._window.console;\n\n function wrapConsole(method) {\n 'use strict'; // See https://github.com/rollbar/rollbar.js/pull/778\n\n const orig = c[method];\n const origConsole = c;\n const level = method === 'warn' ? 'warning' : method;\n c[method] = function () {\n const args = Array.prototype.slice.call(arguments);\n const message = _.formatArgsAsString(args);\n self.telemeter.captureLog(message, level, null, _.now());\n if (orig) {\n Function.prototype.apply.call(orig, origConsole, args);\n }\n };\n self.replacements['log'].push([method, orig]);\n }\n const methods = ['debug', 'info', 'warn', 'error', 'log'];\n try {\n for (const m of methods) {\n wrapConsole(m);\n }\n } catch (e) {\n this.diagnostic.instrumentConsole = { error: e.message };\n }\n }\n\n deinstrumentDom() {\n this.removeListeners('dom');\n }\n\n instrumentDom() {\n const self = this;\n this.addListener(\n 'dom',\n this._window,\n ['click', 'dblclick', 'contextmenu'],\n (e) => this.handleEvent('click', e),\n );\n this.addListener(\n 'dom',\n this._window,\n ['dragstart', 'dragend', 'dragenter', 'dragleave', 'drop'],\n (e) => this.handleEvent('dragdrop', e),\n );\n this.addListener('dom', this._window, ['blur', 'focus'], (e) =>\n this.handleEvent('focus', e),\n );\n this.addListener('dom', this._window, ['submit', 'invalid'], (e) =>\n this.handleEvent('form', e),\n );\n this.addListener('dom', this._window, ['input', 'change'], (e) =>\n this.handleEvent('input', e),\n );\n this.addListener('dom', this._window, ['resize'], (e) =>\n this.handleEvent('resize', e),\n );\n this.addListener('dom', this._document, ['DOMContentLoaded'], (e) =>\n this.handleEvent('contentLoaded', e),\n );\n }\n\n handleEvent(name, evt) {\n try {\n return {\n click: this.handleClick,\n dragdrop: this.handleDrag,\n focus: this.handleFocus,\n form: this.handleForm,\n input: this.handleInput,\n resize: this.handleResize,\n contentLoaded: this.handleContentLoaded,\n }[name].call(this, evt);\n } catch (exc) {\n console.log(`${name} handler error`, evt, exc, exc.stack);\n }\n }\n\n handleContentLoaded(evt) {\n const replayId = this.rollbar.triggerReplay({\n type: 'navigation',\n path: new URL(this._location.href).pathname,\n });\n }\n\n handleClick(evt) {\n const tagName = evt.target?.tagName.toLowerCase();\n if (['input', 'select', 'textarea'].includes(tagName)) return;\n\n this.telemeter.captureClick({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n timestamp: _.now(),\n });\n }\n\n handleFocus(evt) {\n const type = evt.type;\n const element = evt.target?.window\n ? 'window'\n : domUtil.elementString(evt.target);\n\n this.telemeter.captureFocus({\n type: type,\n isSynthetic: !evt.isTrusted,\n element,\n timestamp: _.now(),\n });\n }\n\n handleForm(evt) {\n // TODO: implement form event handling\n const type = evt.type;\n const elementString = evt.target?.window\n ? 'window'\n : domUtil.elementString(evt.target);\n }\n\n handleResize(evt) {\n const textZoomRatio = window.screen.width / window.innerWidth;\n\n this.telemeter.captureResize({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n width: window.innerWidth,\n height: window.innerHeight,\n textZoomRatio: textZoomRatio,\n timestamp: _.now(),\n });\n }\n\n handleDrag(evt) {\n const type = evt.type;\n let kinds, mediaTypes, dropEffect, effectAllowed;\n\n if (type === 'drop') {\n kinds = [];\n mediaTypes = [];\n const objs = [...evt.dataTransfer.files, ...evt.dataTransfer.items];\n for (const o of objs) {\n if (o.kind && o.type) {\n kinds.push(o.kind);\n mediaTypes.push(o.type);\n }\n }\n }\n if (['drop', 'dragstart'].includes(type)) {\n dropEffect = evt.dataTransfer?.dropEffect;\n effectAllowed = evt.dataTransfer?.effectAllowed;\n }\n\n this.telemeter.captureDragDrop({\n type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n dropEffect: dropEffect,\n effectAllowed: effectAllowed,\n kinds: JSON.stringify(kinds),\n mediaTypes: JSON.stringify(mediaTypes),\n timestamp: _.now(),\n });\n }\n\n /*\n * Applies Rollbar telemetry scrubbing options to the dom input value.\n * When replay options are present, applies those as well.\n */\n scrubInputValue(value, element, tagName, inputType) {\n const mask = '******';\n\n if (inputType === 'password') {\n return mask;\n }\n\n if (this.scrubTelemetryInputs) {\n return mask;\n } else {\n const description = domUtil.describeElement(element);\n if (this.telemetryScrubber) {\n if (this.telemetryScrubber(description)) {\n return mask;\n }\n } else if (this.defaultValueScrubber(description)) {\n return mask;\n }\n }\n\n // Apply replay options regardless of other scrubbing\n if (\n domUtil.isMatchingElement(element, this.scrubClasses, this.scrubSelectors)\n ) {\n return mask;\n }\n\n // This check is last since maskInputFn returns a modified value rather\n // than a boolean, which would cause an early return even if the value\n // was not scrubbed.\n if (\n this.maskInputOptions[tagName.toLowerCase()] ||\n this.maskInputOptions[inputType]\n ) {\n if (this.maskInputFn) {\n return this.maskInputFn(value, element);\n } else {\n return mask;\n }\n }\n\n return value;\n }\n\n /*\n * Uses the `input` event for everything except radio and checkbox inputs.\n * For those, it uses the `change` event.\n */\n handleInput(evt) {\n const type = evt.type;\n const tagName = evt.target?.tagName.toLowerCase();\n let value = evt.target?.value;\n let inputType = evt.target?.attributes?.type?.value || evt.target?.type;\n\n if (value !== undefined) {\n value = this.scrubInputValue(value, evt.target, tagName, inputType);\n }\n\n switch (type) {\n case 'input':\n if (['radio', 'checkbox'].includes(inputType)) return;\n if (['select', 'textarea'].includes(tagName)) {\n inputType = tagName;\n }\n break;\n\n case 'change':\n if (!['radio', 'checkbox'].includes(inputType)) return;\n if (inputType === 'checkbox') {\n value = evt.target?.checked;\n }\n break;\n }\n\n this.telemeter.captureInput({\n type: inputType,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n value,\n timestamp: _.now(),\n });\n }\n\n deinstrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n restore(this.replacements, 'navigation');\n }\n\n instrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n const self = this;\n replace(\n this._window,\n 'onpopstate',\n function (orig) {\n return function () {\n const current = self._location.href;\n self.handleUrlChange(self._lastHref, current);\n if (orig) {\n orig.apply(this, arguments);\n }\n };\n },\n this.replacements,\n 'navigation',\n );\n\n replace(\n this._window.history,\n 'pushState',\n function (orig) {\n return function () {\n const url = arguments.length > 2 ? arguments[2] : undefined;\n if (url) {\n self.handleUrlChange(self._lastHref, url + '');\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'navigation',\n );\n }\n\n handleUrlChange(from, to) {\n const parsedHref = urlparser.parse(this._location.href);\n const parsedTo = urlparser.parse(to);\n const parsedFrom = urlparser.parse(from);\n this._lastHref = to;\n if (\n parsedHref.protocol === parsedTo.protocol &&\n parsedHref.host === parsedTo.host\n ) {\n to = parsedTo.path + (parsedTo.hash || '');\n }\n if (\n parsedHref.protocol === parsedFrom.protocol &&\n parsedHref.host === parsedFrom.host\n ) {\n from = parsedFrom.path + (parsedFrom.hash || '');\n }\n this.telemeter.captureNavigation(from, to, null, _.now());\n const replayId = this.rollbar.triggerReplay({\n type: 'navigation',\n path: to,\n });\n }\n\n deinstrumentConnectivity = function () {\n this.removeListeners('connectivity');\n };\n\n instrumentConnectivity() {\n const self = this;\n this.addListener(\n 'connectivity',\n this._window,\n ['online', 'offline'],\n (evt) => self.handleConnectivity(evt),\n );\n }\n\n handleConnectivity(evt) {\n const type = evt.type;\n\n this.telemeter.captureConnectivityChange({\n type,\n isSynthetic: !evt.isTrusted,\n timestamp: _.now(),\n });\n }\n\n handleCspEvent(cspEvent) {\n let message =\n 'Security Policy Violation: ' +\n 'blockedURI: ' +\n cspEvent.blockedURI +\n ', ' +\n 'violatedDirective: ' +\n cspEvent.violatedDirective +\n ', ' +\n 'effectiveDirective: ' +\n cspEvent.effectiveDirective +\n ', ';\n\n if (cspEvent.sourceFile) {\n message +=\n 'location: ' +\n cspEvent.sourceFile +\n ', ' +\n 'line: ' +\n cspEvent.lineNumber +\n ', ' +\n 'col: ' +\n cspEvent.columnNumber +\n ', ';\n }\n\n message += 'originalPolicy: ' + cspEvent.originalPolicy;\n\n this.telemeter.captureLog(message, 'error', null, _.now());\n this.handleCspError(message);\n }\n\n handleCspError(message) {\n if (this.autoInstrument.errorOnContentSecurityPolicy) {\n this.rollbar.error(message);\n }\n }\n\n deinstrumentContentSecurityPolicy() {\n this.removeListeners('contentsecuritypolicy');\n }\n\n instrumentContentSecurityPolicy() {\n if (!('addEventListener' in this._document)) {\n return;\n }\n\n const cspHandler = this.handleCspEvent.bind(this);\n this.addListener(\n 'contentsecuritypolicy',\n this._document,\n ['securitypolicyviolation'],\n cspHandler,\n );\n }\n\n addListener(section, obj, types, handler) {\n if (obj.addEventListener) {\n for (const t of types) {\n const options = { capture: true, passive: true };\n obj.addEventListener(t, handler, options, true);\n this.eventRemovers[section].push(function () {\n obj.removeEventListener(t, handler, options);\n });\n }\n }\n }\n\n removeListeners(section) {\n let r;\n while (this.eventRemovers[section].length) {\n r = this.eventRemovers[section].shift();\n r();\n }\n }\n}\n\nfunction _isUrlObject(input) {\n return typeof URL !== 'undefined' && input instanceof URL;\n}\n\nexport default Instrumenter;\n","function wrapGlobals(window, handler, shim) {\n if (!window) {\n return;\n }\n // Adapted from https://github.com/bugsnag/bugsnag-js\n var globals =\n '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'.split(\n ',',\n );\n var i, global;\n for (i = 0; i < globals.length; ++i) {\n global = globals[i];\n\n if (window[global] && window[global].prototype) {\n _extendListenerPrototype(handler, window[global].prototype, shim);\n }\n }\n}\n\nfunction _extendListenerPrototype(handler, prototype, shim) {\n if (\n prototype.hasOwnProperty &&\n prototype.hasOwnProperty('addEventListener')\n ) {\n var oldAddEventListener = prototype.addEventListener;\n while (\n oldAddEventListener._rollbarOldAdd &&\n oldAddEventListener.belongsToShim\n ) {\n oldAddEventListener = oldAddEventListener._rollbarOldAdd;\n }\n var addFn = function (event, callback, bubble) {\n oldAddEventListener.call(this, event, handler.wrap(callback), bubble);\n };\n addFn._rollbarOldAdd = oldAddEventListener;\n addFn.belongsToShim = shim;\n prototype.addEventListener = addFn;\n\n var oldRemoveEventListener = prototype.removeEventListener;\n while (\n oldRemoveEventListener._rollbarOldRemove &&\n oldRemoveEventListener.belongsToShim\n ) {\n oldRemoveEventListener = oldRemoveEventListener._rollbarOldRemove;\n }\n var removeFn = function (event, callback, bubble) {\n oldRemoveEventListener.call(\n this,\n event,\n (callback && callback._rollbar_wrapped) || callback,\n bubble,\n );\n };\n removeFn._rollbarOldRemove = oldRemoveEventListener;\n removeFn.belongsToShim = shim;\n prototype.removeEventListener = removeFn;\n }\n}\n\nexport default wrapGlobals;\n","import * as _ from './utility.js';\nimport traverse from './utility/traverse.js';\n\nfunction raw(payload, jsonBackup) {\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction selectFrames(frames, range) {\n var len = frames.length;\n if (len > range * 2) {\n return frames.slice(0, range).concat(frames.slice(len - range));\n }\n return frames;\n}\n\nfunction truncateFrames(payload, jsonBackup, range) {\n range = typeof range === 'undefined' ? 30 : range;\n var body = payload.data.body;\n var frames;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (var i = 0; i < chain.length; i++) {\n frames = chain[i].frames;\n frames = selectFrames(frames, range);\n chain[i].frames = frames;\n }\n } else if (body.trace) {\n frames = body.trace.frames;\n frames = selectFrames(frames, range);\n body.trace.frames = frames;\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction maybeTruncateValue(len, val) {\n if (!val) {\n return val;\n }\n if (val.length > len) {\n return val.slice(0, len - 3).concat('...');\n }\n return val;\n}\n\nfunction truncateStrings(len, payload, jsonBackup) {\n function truncator(k, v, seen) {\n switch (_.typeName(v)) {\n case 'string':\n return maybeTruncateValue(len, v);\n case 'object':\n case 'array':\n return traverse(v, truncator, seen);\n default:\n return v;\n }\n }\n payload = traverse(payload, truncator);\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction truncateTraceData(traceData) {\n if (traceData.exception) {\n delete traceData.exception.description;\n traceData.exception.message = maybeTruncateValue(\n 255,\n traceData.exception.message,\n );\n }\n traceData.frames = selectFrames(traceData.frames, 1);\n return traceData;\n}\n\nfunction minBody(payload, jsonBackup) {\n var body = payload.data.body;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (var i = 0; i < chain.length; i++) {\n chain[i] = truncateTraceData(chain[i]);\n }\n } else if (body.trace) {\n body.trace = truncateTraceData(body.trace);\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction needsTruncation(payload, maxSize) {\n return _.maxByteSize(payload) > maxSize;\n}\n\nfunction truncate(payload, jsonBackup, maxSize) {\n maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize;\n var strategies = [\n raw,\n truncateFrames,\n truncateStrings.bind(null, 1024),\n truncateStrings.bind(null, 512),\n truncateStrings.bind(null, 256),\n minBody,\n ];\n var strategy, results, result;\n\n while ((strategy = strategies.shift())) {\n results = strategy(payload, jsonBackup);\n payload = results[0];\n result = results[1];\n if (result.error || !needsTruncation(result.value, maxSize)) {\n return result;\n }\n }\n return result;\n}\n\nexport default {\n truncate,\n\n /* for testing */\n raw,\n truncateFrames,\n truncateStrings,\n maybeTruncateValue,\n};\n","export class Context {\n constructor(parentContext) {\n this._currentContext = parentContext ? new Map(parentContext) : new Map();\n }\n\n getValue(key) {\n return this._currentContext.get(key);\n }\n\n setValue(key, value) {\n const context = new Context(this._currentContext);\n context._currentContext.set(key, value);\n return context;\n }\n\n deleteValue(key) {\n const context = new Context(self._currentContext);\n context._currentContext.delete(key);\n return context;\n }\n}\n\nexport const ROOT_CONTEXT = new Context();\n","import { ROOT_CONTEXT } from './context.js';\n\nexport class ContextManager {\n constructor() {\n this.currentContext = ROOT_CONTEXT;\n }\n\n active() {\n return this.currentContext;\n }\n\n enterContext(context) {\n const previousContext = this.currentContext;\n this.currentContext = context || ROOT_CONTEXT;\n return previousContext;\n }\n\n exitContext(context) {\n this.currentContext = context;\n return this.currentContext;\n }\n\n with(context, fn, thisArg, ...args) {\n const previousContext = this.enterContext(context);\n try {\n return fn.call(thisArg, ...args);\n } finally {\n this.exitContext(previousContext);\n }\n }\n}\n\nexport function createContextKey(key) {\n // Use Symbol for OpenTelemetry compatibility.\n return Symbol.for(key);\n}\n","/**\n * Generate a random hexadecimal ID of specified byte length\n *\n * @param {number} bytes - Number of bytes for the ID (default: 16)\n * @returns {string} - Hexadecimal string representation\n */\nfunction gen(bytes = 16) {\n let randomBytes = new Uint8Array(bytes);\n crypto.getRandomValues(randomBytes);\n let randHex = Array.from(randomBytes, (byte) =>\n byte.toString(16).padStart(2, '0'),\n ).join('');\n return randHex;\n}\n\n/**\n * Tracing id generation utils\n *\n * @example\n * import id from './id.js';\n *\n * const spanId = id.gen(8); // => \"a1b2c3d4e5f6...\"\n */\nexport default { gen };\n","import id from './id.js';\n\nconst SESSION_KEY = 'RollbarSession';\n\nexport class Session {\n _attributes;\n\n constructor(tracing, options) {\n this.options = options;\n this.tracing = tracing;\n this.window = tracing.window;\n this.session = null;\n this._attributes = {};\n }\n\n init(attrs = {}) {\n if (this.session) {\n return this;\n }\n this.getSession() || this.createSession();\n\n this.initSessionAttributes(attrs);\n\n return this;\n }\n\n getSession() {\n try {\n const serializedSession = this.window.sessionStorage.getItem(SESSION_KEY);\n\n if (!serializedSession) {\n return null;\n }\n\n this.session = JSON.parse(serializedSession);\n } catch {\n return null;\n }\n return this;\n }\n\n createSession() {\n this.session = {\n id: id.gen(),\n createdAt: Date.now(),\n };\n\n return this.setSession(this.session);\n }\n\n setSession(session) {\n const sessionString = JSON.stringify(session);\n\n try {\n this.window.sessionStorage.setItem(SESSION_KEY, sessionString);\n } catch {\n return null;\n }\n return this;\n }\n\n get attributes() {\n return this._attributes;\n }\n\n setAttributes(attributes) {\n this._attributes = { ...this._attributes, ...attributes };\n return this;\n }\n\n setUser(user) {\n this.setAttributes({\n 'user.id': user?.id,\n 'user.email': user?.email,\n 'user.name': user?.name || user?.username,\n });\n return this;\n }\n\n initSessionAttributes(attrs) {\n this.setAttributes({\n 'session.id': this.session.id,\n 'browser.brands': navigator.userAgentData?.brands,\n 'browser.language': navigator.language,\n 'browser.mobile': navigator.userAgentData?.mobile,\n 'browser.platform': navigator.userAgentData?.platform,\n 'client.address': '$remote_ip', // updated at the API\n 'rollbar.notifier.framework': 'browser-js',\n 'user_agent.original': navigator.userAgent,\n ...attrs,\n });\n return this;\n }\n}\n","/**\n * @module hrtime\n *\n * @description Methods for handling OpenTelemetry hrtime.\n */\n\n/**\n * Convert a duration in milliseconds to an OpenTelemetry hrtime tuple.\n *\n * @param {number} millis - The duration in milliseconds.\n * @returns {[number, number]} An array where the first element is seconds\n * and the second is nanoseconds.\n */\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in milliseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in milliseconds.\n */\nfunction toMillis(hrtime) {\n return hrtime[0] * 1e3 + Math.round(hrtime[1] / 1e6);\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in nanoseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in nanoseconds.\n */\nfunction toNanos(hrtime) {\n return hrtime[0] * 1e9 + hrtime[1];\n}\n\n/**\n * Adds two OpenTelemetry hrtime tuples.\n *\n * @param {[number, number]} a - The first hrtime tuple [s, ns].\n * @param {[number, number]} b - The second hrtime tuple [s, ns].\n * @returns {[number, number]} Summed hrtime tuple, normalized.\n *\n */\nfunction add(a, b) {\n return [a[0] + b[0] + Math.trunc((a[1] + b[1]) / 1e9), (a[1] + b[1]) % 1e9];\n}\n\n/**\n * Get the current high-resolution time as an OpenTelemetry hrtime tuple.\n *\n * @param {boolean} usePerformance=false - If true, uses the Performance API (timeOrigin + now()).\n *\n * @returns {[number, number]} The current hrtime tuple [s, ns].\n */\nfunction now(usePerformance = false) {\n if (usePerformance) {\n return add(\n fromMillis(performance.timeOrigin),\n fromMillis(performance.now()),\n );\n }\n return fromMillis(Date.now());\n}\n\n/**\n * Check if a value is a valid OpenTelemetry hrtime tuple.\n *\n * An hrtime tuple is an Array of exactly two numbers:\n * [seconds, nanoseconds]\n *\n * @param {*} value – anything to test\n * @returns {boolean} true if `value` is a [number, number] array of length 2\n *\n * @example\n * isHrTime([ 1, 500 ]); // true\n * isHrTime([ 0, 1e9 ]); // true\n * isHrTime([ '1', 500 ]); // false\n * isHrTime({ 0: 1, 1: 500 }); // false\n */\nfunction isHrTime(value) {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number'\n );\n}\n\n/**\n * Methods for handling hrtime. OpenTelemetry uses the [seconds, nanoseconds]\n * format for hrtime in the `ReadableSpan` interface.\n *\n * @example\n * import hrtime from '@tracing/hrtime.js';\n *\n * hrtime.fromMillis(1000);\n * hrtime.toMillis([0, 1000]);\n * hrtime.add([0, 0], [0, 1000]);\n * hrtime.now();\n * hrtime.isHrTime([0, 1000]);\n */\nexport default { fromMillis, toMillis, toNanos, add, now, isHrTime };\n","import hrtime from './hrtime.js';\n\n/**\n * SpanExporter is responsible for exporting ReadableSpan objects\n * and transforming them into the OTLP-compatible format.\n */\nexport class SpanExporter {\n constructor(api, options = {}) {\n this.api = api;\n this.options = options;\n }\n\n /**\n * Export spans to the span export queue\n *\n * @param {Array} spans - Array of ReadableSpan objects to export\n * @param {Function} _resultCallback - Optional callback (not used)\n */\n export(spans, _resultCallback) {\n spanExportQueue.push(...spans);\n }\n\n /**\n * Transforms an array of ReadableSpan objects into the OTLP format payload\n * compatible with the Rollbar API. This follows the OpenTelemetry protocol\n * specification for traces.\n *\n * @returns {Object} OTLP format payload for API transmission\n */\n toPayload() {\n const spans = spanExportQueue.slice();\n spanExportQueue.length = 0;\n\n if (!spans || !spans.length) {\n return { resourceSpans: [] };\n }\n\n const resource = (spans[0] && spans[0].resource) || {};\n\n const scopeMap = new Map();\n\n for (const span of spans) {\n const scopeKey = span.instrumentationScope\n ? `${span.instrumentationScope.name}:${span.instrumentationScope.version}`\n : 'default:1.0.0';\n\n if (!scopeMap.has(scopeKey)) {\n scopeMap.set(scopeKey, {\n scope: span.instrumentationScope || {\n name: 'default',\n version: '1.0.0',\n attributes: [],\n },\n spans: [],\n });\n }\n\n scopeMap.get(scopeKey).spans.push(this._transformSpan(span));\n }\n\n return {\n resourceSpans: [\n {\n resource: this._transformResource(resource),\n scopeSpans: Array.from(scopeMap.values()).map((scopeData) => ({\n scope: this._transformInstrumentationScope(scopeData.scope),\n spans: scopeData.spans,\n })),\n },\n ],\n };\n }\n\n /**\n * Sends the given payload to the Rollbar API.\n *\n * @param {String} payload - Serialized OTLP format payload\n * @param {Object} headers - Optional request headers\n * @returns {Promise} Promise that resolves when the request completes\n */\n post(payload, headers = {}) {\n return this.api.postSpans(payload, headers);\n }\n\n /**\n * Transforms a ReadableSpan into the OTLP Span format\n *\n * @private\n * @param {Object} span - ReadableSpan object to transform\n * @returns {Object} OTLP Span format\n */\n _transformSpan(span) {\n const transformAttributes = (attributes) => {\n return Object.entries(attributes || {}).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n };\n\n const transformEvents = (events) => {\n return (events || []).map((event) => ({\n timeUnixNano: hrtime.toNanos(event.time),\n name: event.name,\n attributes: transformAttributes(event.attributes),\n }));\n };\n\n return {\n traceId: span.spanContext.traceId,\n spanId: span.spanContext.spanId,\n parentSpanId: span.parentSpanId || '',\n name: span.name,\n kind: span.kind || 1, // INTERNAL by default\n startTimeUnixNano: hrtime.toNanos(span.startTime),\n endTimeUnixNano: hrtime.toNanos(span.endTime),\n attributes: transformAttributes(span.attributes),\n events: transformEvents(span.events),\n };\n }\n\n /**\n * Transforms a resource object into OTLP Resource format\n *\n * @private\n * @param {Object} resource - Resource information\n * @returns {Object} OTLP Resource format\n */\n _transformResource(resource) {\n const attributes = resource.attributes || {};\n const keyValues = Object.entries(attributes).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n\n return {\n attributes: keyValues,\n };\n }\n\n /**\n * Transforms an instrumentation scope into OTLP InstrumentationScope format\n *\n * @private\n * @param {Object} scope - Instrumentation scope information\n * @returns {Object} OTLP InstrumentationScope format\n */\n _transformInstrumentationScope(scope) {\n return {\n name: scope.name || '',\n version: scope.version || '',\n attributes: (scope.attributes || []).map((attr) => ({\n key: attr.key,\n value: this._transformAnyValue(attr.value),\n })),\n };\n }\n\n /**\n * Transforms a JavaScript value into an OTLP AnyValue\n *\n * @private\n * @param {any} value - Value to transform\n * @returns {Object} OTLP AnyValue format\n */\n _transformAnyValue(value) {\n if (value === null || value === undefined) {\n return { stringValue: '' };\n }\n\n const type = typeof value;\n\n if (type === 'string') {\n return { stringValue: value };\n } else if (type === 'number') {\n if (Number.isInteger(value)) {\n return { intValue: value.toString() };\n } else {\n return { doubleValue: value };\n }\n } else if (type === 'boolean') {\n return { boolValue: value };\n } else if (Array.isArray(value)) {\n return {\n arrayValue: {\n values: value.map((v) => this._transformAnyValue(v)),\n },\n };\n } else if (type === 'object') {\n return {\n kvlistValue: {\n values: Object.entries(value).map(([k, v]) => ({\n key: k,\n value: this._transformAnyValue(v),\n })),\n },\n };\n }\n\n return { stringValue: String(value) };\n }\n}\n\nexport const spanExportQueue = [];\n","import logger from '../logger.js';\n\nexport class SpanProcessor {\n constructor(exporter, options = {}) {\n this.exporter = exporter;\n this.options = options;\n this.pendingSpans = new Map();\n this.transforms = [this.userTransform.bind(this)];\n }\n\n addTransform(transformFn) {\n this.transforms.unshift(transformFn);\n }\n\n userTransform(span) {\n if (this.options.transformSpan) {\n this.options.transformSpan({ span: span });\n }\n }\n\n applyTransforms(span) {\n for (const transform of this.transforms) {\n try {\n transform(span);\n } catch (e) {\n logger.error('Error running span transform callback', e);\n }\n }\n }\n\n onStart(span, _parentContext) {\n this.pendingSpans.set(span.span.spanContext.spanId, span);\n }\n\n onEnd(span) {\n this.applyTransforms(span.span);\n this.exporter.export([span.export()]);\n this.pendingSpans.delete(span.span.spanContext.spanId);\n }\n}\n","import hrtime from './hrtime.js';\n\nexport class Span {\n constructor(options) {\n this.usePerformance = options.usePerformance;\n this.initReadableSpan(options);\n\n this.spanProcessor = options.spanProcessor;\n this.spanProcessor.onStart(this, options.context);\n\n if (options.attributes) {\n this.setAttributes(options.attributes);\n }\n return this;\n }\n\n initReadableSpan(options) {\n this.span = {\n name: options.name,\n kind: options.kind,\n spanContext: options.spanContext,\n parentSpanId: options.parentSpanId,\n startTime: options.startTime || hrtime.now(options.usePerformance),\n endTime: [0, 0],\n status: { code: 0, message: '' },\n attributes: { 'session.id': options.session?.id },\n links: [],\n events: [],\n duration: 0,\n ended: false,\n resource: options.resource,\n instrumentationScope: options.scope,\n droppedAttributesCount: 0,\n droppedEventsCount: 0,\n droppedLinksCount: 0,\n };\n }\n\n spanContext() {\n return this.span.spanContext;\n }\n\n get spanId() {\n return this.span.spanContext.spanId;\n }\n\n get traceId() {\n return this.span.spanContext.traceId;\n }\n\n setAttribute(key, value) {\n if (value == null || this.span.ended) return this;\n if (key.length === 0) return this;\n\n this.span.attributes[key] = value;\n return this;\n }\n\n setAttributes(attributes) {\n for (const [k, v] of Object.entries(attributes)) {\n this.setAttribute(k, v);\n }\n return this;\n }\n\n addEvent(name, attributes = {}, time) {\n if (this.span.ended) return this;\n\n this.span.events.push({\n name,\n attributes,\n time: time || hrtime.now(),\n droppedAttributesCount: 0,\n });\n\n return this;\n }\n\n isRecording() {\n return this.span.ended === false;\n }\n\n end(attributes, time) {\n if (attributes) this.setAttributes(attributes);\n this.span.endTime = time || hrtime.now(this.usePerformance);\n this.span.ended = true;\n this.spanProcessor.onEnd(this);\n }\n\n export() {\n return this.span;\n }\n}\n","import { Span } from './span.js';\nimport id from './id.js';\n\nexport class Tracer {\n constructor(tracing, spanProcessor) {\n this.spanProcessor = spanProcessor;\n this.tracing = tracing;\n }\n\n startSpan(\n name,\n options = {},\n context = this.tracing.contextManager.active(),\n ) {\n const parentSpan = this.tracing.getSpan(context);\n const parentSpanContext = parentSpan?.spanContext();\n const spanId = id.gen(8);\n let traceId;\n let traceFlags = 0;\n let traceState = null;\n let parentSpanId;\n if (parentSpanContext) {\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n parentSpanId = parentSpanContext.spanId;\n } else {\n traceId = id.gen(16);\n }\n\n const kind = 0;\n const spanContext = { traceId, spanId, traceFlags, traceState };\n const resource = {\n attributes: {\n ...(this.tracing.resource?.attributes || {}),\n ...(options.resource?.attributes || {}),\n },\n };\n\n const span = new Span({\n resource: resource,\n scope: this.tracing.scope,\n session: this.tracing.session?.session,\n context,\n spanContext,\n name,\n kind,\n parentSpanId,\n spanProcessor: this.spanProcessor,\n startTime: options.startTime,\n usePerformance: options.usePerformance,\n });\n return span;\n }\n}\n","import { ContextManager, createContextKey } from './contextManager.js';\nimport { Session } from './session.js';\nimport { SpanExporter } from './exporter.js';\nimport { SpanProcessor } from './spanProcessor.js';\nimport { Tracer } from './tracer.js';\nimport id from './id.js';\n\nconst SPAN_KEY = createContextKey('Rollbar Context Key SPAN');\n\nexport default class Tracing {\n constructor(gWindow, api, options) {\n this.api = api;\n this.options = options;\n this.window = gWindow;\n\n if (this.window.sessionStorage) {\n this.session = new Session(this, options);\n }\n this.createTracer();\n }\n\n configure(options) {\n // Options merge happens before configure is called, so we can just replace.\n this.options = options;\n }\n\n initSession() {\n if (this.session) {\n this.session.init();\n }\n }\n\n get sessionId() {\n if (this.session) {\n return this.session.session.id;\n }\n return null;\n }\n\n get resource() {\n return {\n attributes: {\n ...(this.options.resource || {}),\n 'rollbar.environment':\n this.options.payload?.environment ?? this.options.environment,\n },\n };\n }\n\n get scope() {\n return {\n name: 'rollbar-browser-js',\n version: this.options.version,\n };\n }\n\n idGen(bytes = 16) {\n return id.gen(bytes);\n }\n\n createTracer() {\n this.contextManager = new ContextManager();\n this.exporter = new SpanExporter(this.api, this.options);\n this.spanProcessor = new SpanProcessor(this.exporter, this.options.tracing);\n this.tracer = new Tracer(this, this.spanProcessor);\n }\n\n getTracer() {\n return this.tracer;\n }\n\n addSpanTransform(transformFn) {\n this.spanProcessor.addTransform(transformFn);\n }\n\n getSpan(context = this.contextManager.active()) {\n return context.getValue(SPAN_KEY);\n }\n\n setSpan(context = this.contextManager.active(), span) {\n return context.setValue(SPAN_KEY, span);\n }\n\n startSpan(name, options = {}, context = this.contextManager.active()) {\n return this.tracer.startSpan(name, options, context);\n }\n\n with(context, fn, thisArg, ...args) {\n return this.contextManager.with(context, fn, thisArg, ...args);\n }\n\n withSpan(name, options, fn, thisArg) {\n const span = this.startSpan(name, options);\n return this.with(\n this.setSpan(this.contextManager.active(), span),\n fn,\n thisArg,\n span,\n );\n }\n}\n","import Rollbar from './core.js';\nimport Telemeter from '../telemetry.js';\nimport Instrumenter from './telemetry.js';\nimport wrapGlobals from './wrapGlobals.js';\nimport scrub from '../scrub.js';\nimport truncation from '../truncation.js';\nimport Tracing from '../tracing/tracing.js';\n\nRollbar.setComponents({\n telemeter: Telemeter,\n instrumenter: Instrumenter,\n wrapGlobals: wrapGlobals,\n scrub: scrub,\n truncation: truncation,\n tracing: Tracing,\n});\n\nexport default Rollbar;\n","import rollbar from '../rollbar.js';\n\nif ((typeof window !== 'undefined') && !window._rollbarStartTime) {\n window._rollbarStartTime = (new Date()).getTime();\n}\n\nexport default rollbar;\n"],"names":["hasOwn","Object","prototype","hasOwnProperty","toStr","toString","isPlainObject","obj","call","hasOwnConstructor","hasIsPrototypeOf","constructor","key","merge","i","src","copy","clone","name","result","create","current","length","arguments","isType","x","t","typeName","_typeof","Error","match","toLowerCase","isFunction","f","isNativeFunction","reRegExpChar","funcMatchString","Function","replace","reIsNative","RegExp","isObject","test","value","type","isString","String","isFiniteNumber","n","Number","isFinite","isDefined","u","isIterable","isError","e","isPromise","p","then","isBrowser","window","redact","uuid4","d","now","uuid","c","r","Math","random","floor","LEVELS","debug","info","warning","error","critical","sanitizeHref","url","urlObject","URL","password","search","_","sanitizeUrl","baseUrlParts","parseUri","anchor","source","query","parseUriOptions","strictMode","q","parser","strict","loose","str","undefined","o","m","exec","uri","l","$0","$1","$2","addParamsAndAccessTokenToPath","accessToken","options","params","access_token","paramsArray","k","push","join","sort","path","qs","indexOf","h","substring","formatUrl","protocol","port","hostname","stringify","backup","JSON","jsonError","backupError","maxByteSize","string","count","code","charCodeAt","jsonParse","s","parse","makeUnhandledStackInfo","message","lineno","colno","mode","backupMessage","errorParser","location","line","column","func","guessFunctionName","context","gatherContext","href","document","useragent","navigator","userAgent","stack","wrapCallback","logger","err","resp","nonCircularClone","seen","newSeen","includes","slice","createItem","args","notifier","requestKeys","lambdaContext","custom","callback","request","arg","extraArgs","diagnostic","argTypes","typ","DOMException","j","len","item","timestamp","data","setCustomItemKeys","_originalArgs","original_arg_types","level","skipFrames","addErrorContext","errors","contextAdded","rollbarContext","error_context","TELEMETRY_TYPES","TELEMETRY_LEVELS","arrayIncludes","arr","val","createTelemetryEvent","metadata","event","addItemAttributes","itemData","attributes","_iterator","_createForOfIteratorHelper","_step","done","a","get","keys","split","set","setPrototypeOf","temp","replacement","formatArgsAsString","substr","Date","filterIp","requestData","captureIp","newIp","parts","pop","beginning","slashIdx","terminal","concat","handleOptions","input","payload","updateDeprecatedOptions","overwriteScrubFields","scrubFields","hostWhiteList","hostSafeList","log","hostBlackList","hostBlockList","RateLimiter","startTime","counter","perMinCounter","platform","platformOptions","configureGlobal","globalSettings","maxItems","itemsPerMinute","shouldSend","elapsedTime","globalRateLimit","globalRateLimitPerMin","checkRate","shouldSendValue","perMinute","setPlatformOptions","limit","ignoreRateLimit","limitPerMin","rateLimitPayload","environment","msg","body","extra","language","version","framework","Queue","rateLimiter","api","replay","_classCallCheck","predicates","pendingItems","pendingRequests","retryQueue","retryHandle","waitCallback","waitIntervalID","_createClass","configure","_this$api","oldOptions","addPredicate","predicate","addPendingItem","removePendingItem","idx","splice","addItem","originalError","originalItem","_this","predicateResult","_applyPredicates","stop","_maybeLog","transmit","replayId","capture","_makeApiRequest","headers","_dequeuePendingRequest","sendOrDiscardReplay","_this$replay","discard","wait","_this2","_maybeCallWait","clearInterval","setInterval","_this3","rateLimitResponse","postItem","_maybeRetry","shouldRetry","retryInterval","RETRIABLE_ERRORS","maxRetries","retries","_retryApiRequest","_this4","retryObject","shift","verbose","_defineProperty","Notifier","queue","transforms","addTransform","transform","enabled","_applyTransforms","bind","transformIndex","transformsLength","cb","Rollbar","telemeter","tracing","tracer","validateTracer","_configuredOptions","setStackTraceLimit","lastError","lastErrorHash","defaultOptions","global","payloadData","_defaultLogLevel","_log","warn","captureEvent","captureDomContentLoaded","ts","captureLoad","buildJsonPayload","sendJsonPayload","jsonPayload","postJsonPayload","defaultLevel","ignoreDuplicateErrors","_sameAsLastError","_addTracingAttributes","_addTracingInfo","_captureRollbarItem","telemetryEvents","copyEvents","_this$tracing","_this$tracing2","span","getSpan","sessionId","spanId","traceId","addEvent","logLevel","_isUncaught","itemHash","generateItemHash","scope","active","validateSpan","setTag","opentracingSpanId","toSpanId","opentracingTraceId","toTraceId","opentracing_span_id","opentracing_trace_id","stackTraceLimit","spanContext","buildPayload","contextResult","getTransportFromOptions","defaults","timeout","transport","detectTransport","proxy","endpoint","opts","pathname","gWindow","self","defaultTransport","fetch","XMLHttpRequest","transportOptions","method","transportAPI","host","appendPathToPath","base","baseTrailingSlash","pathBeginningSlash","_regeneratorRuntime","defineProperty","Symbol","iterator","asyncIterator","toStringTag","define","enumerable","configurable","writable","wrap","Generator","Context","makeInvokeMethod","tryCatch","y","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","mark","__proto__","awrap","async","Promise","reverse","prev","charAt","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","apply","_next","_throw","helpers","OTLPDefaultOptions","Api","urllib","truncation","_getTransport","OTLPTransportOptions","_getOTLPTransport","_postPromise","_ref","reject","post","setTimeout","postSpans","_ref2","_callee","_args","_callee$","_context","_x","stringifyResult","truncate","_options$tracing","_objectSpread","levels","disable","_len","Array","_key","_len2","_key2","_len3","_key3","_len4","_key4","_len5","_key5","init","unshift","console","captureUncaughtExceptions","handler","shim","oldOnError","_rollbarOldOnError","onerror","handleAnonymousErrors","fn","_rollbarWindowOnError","old","_rollbarWrappedError","_rollbarContext","ret","handleUncaughtException","anonymousErrorsPending","captureUnhandledRejections","_rollbarURH","belongsToShim","removeEventListener","rejectionHandler","evt","reason","promise","detail","handleUnhandledRejection","addEventListener","makeFetchRequest","controller","timeoutId","AbortController","abort","signal","response","clearTimeout","respHeaders","isItemRoute","endsWith","json","makeXhrRequest","requestFactory","_createXMLHTTPObject","onreadystatechange","readyState","parseResponse","responseText","_isSuccess","getResponseHeader","_isNormalFailure","status","_newRetriableError","ex","exc","open","setRequestHeader","_i","_Object$entries","entries","_Object$entries$_i","_slicedToArray","send","e1","XDomainRequest","xdomainrequest","onprogress","ontimeout","onload","e2","factories","ActiveXObject","xmlhttp","numFactories","Transport","_makeZoneRequest","rootZone","Zone","root","run","_makeRequest","RollbarProxy","_proxyRequest","rollbarProxy","_msg","auth","hash","last","parseInt","pathParts","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","allowEmpty","parseStack","stackString","parseV8OrIeString","parseFFOrSafariString","extractLocation","urlLike","regExp","applySlice","lines","isArray","filtered","filter","map","sanitizedLine","locationParts","functionName","fileName","function","file","col","raw","functionNameRegex","matches","parseOpera9","parseOpera10","parseOpera11","lineRE","tokens","functionCall","argsRaw","parse$1","parseV8OrIE$1","parseFFOrSafari$1","parseOpera$1","parseOpera9$1","parseOpera10$1","parseOpera11$1","stackframesLiteToStackframes","liteStackframes","liteStackframe","lineNumber","columnNumber","parseErrorStack","UNKNOWN_FUNCTION","ERR_CLASS_REGEXP","Frame","stackFrame","_stackFrame","Stack","exception","skip","getStack","parserStack","_mostSpecificErrorName","rawStack","rawException","nested","cause","traceChain","guessErrorClass","errMsg","errClassMatch","errClass","constructorName","handleDomException","handleItemWithError","stackInfo","_savedStackTrace","description","chain","ensureItemHasSomethingToSay","addBaseInfo","server","addRequestInfo","requestInfo","query_string","remoteString","user_ip","addClientInfo","nav","scr","screen","runtime_ms","_rollbarStartTime","round","javascript","browser","cookie_enabled","cookieEnabled","width","height","addPluginInfo","plugins","navPlugins","cur","addBody","addBodyTraceChain","addBodyTrace","addBodyMessage","stackFromItem","_unhandledStackInfo","traces","traceChainLength","trace","buildTrace","trace_chain","guess","className","errorClass","class","frame","pre","contextLength","mid","frames","filename","sendFrameUrl","addScrubber","scrubFn","scrubPaths","itemToPayload","addPayloadOptions","payloadOptions","addTelemetryData","addMessageWithError","tracePath","newExtra","userTransform","newItem","promisedItem","addConfigToPayload","sendConfig","configKey","addFunctionOption","addConfiguredOptions","configuredOptions","configured_options","addDiagnosticKeys","client","is_anonymous","is_uncaught","raw_error","constructor_name","failed","checkIgnore","settings","checkLevel","levelVal","reportLevel","reportLevelVal","userCheckIgnore","isUncaught","onSendCallback","urlIsNotBlockListed","urlIsOnAList","urlIsSafeListed","matchFrames","list","block","urlRegex","listLength","frameLength","safeOrBlock","tracesLength","listName","messageIsIgnored","ignoredMessages","rIgnoredMessage","messages","messagesFromItem","autoStart","triggerDefaults","samplingRatio","preDuration","postDuration","triggers","logErrors","logEmits","inlineStylesheet","inlineImages","collectFonts","maskInputOptions","email","tel","text","color","date","month","number","range","time","week","maskAllInputs","blockClass","maskTextClass","ignoreClass","slimDOMOptions","script","comment","headFavicon","headWhitespace","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","uncaughtErrorLevel","itemsPerMin","commonScrubFields","apiScrubFields","requestScrubFields","commonScrubHeaders","_toConsumableArray","Client","API","globals","sharedTransforms","sharedPredicates","replayDefaults","tracingDefaults","_instance","components","Telemeter","Instrumenter","instrumenter","wrapGlobals","scrub","Tracing","Replay","_gWindow","initSession","replayOptions","recorder","start","gDocument","isChrome","chrome","runtime","addTransformsToNotifier","addPredicatesToQueue","setupUnhandledCapture","instrument","setSessionAttributesFromOptions","rollbar","_this$instrumenter","_createItem","triggerDirectReplay","triggerReplay","unhandledExceptionsInitialized","captureUncaught","handleUncaughtExceptions","wrapGlobalEventHandlers","unhandledRejectionsInitialized","handleUnhandledRejections","inspectAnonymousErrors","prepareStackTrace","_stack","_isAnonymous","reasonResult","_before","ctxFn","_isWrap","_rollbar_wrapped","_wrappedSource","prop","setSessionUser","user","session","setUser","setSessionAttributes","attrs","_this$tracing3","setAttributes","_options$payload","_options$client","_options$payload2","_options$payload3","_options$payload4","person","code_version","codeVersion","loadFull","setComponents","callInstance","maybeCallback","_getFirstFunction","_Rollbar","_len6","_key6","_len7","_key7","_len8","_key8","_len9","_key9","_len10","_key10","_len11","_key11","_len12","_key12","_len13","_key13","_len14","_key14","browserDefaults","includeItemsInTelemetry","MAX_EVENTS","fromMillis","millis","trunc","maxTelemetryEvents","maxQueueSize","max","min","telemetrySpan","startSpan","newMaxEvents","deleteCount","events","filterTelemetry","otelAttributes","_objectWithoutProperties","_excluded","exportTelemetrySpan","end","rollbarUUID","getLevel","timestamp_ms","captureError","_this$telemetrySpan","captureLog","_this$telemetrySpan2","_this$telemetrySpan3","captureNetwork","subtype","_metadata$response","_this$telemetrySpan4","levelFromStatus","status_code","endTimeNano","end_time_ms","statusCode","request_headers","start_time_ms","captureDom","element","checked","captureInput","_this$telemetrySpan5","isSynthetic","endTimeUnixNano","_getRepeatedEvent","_updateRepeatedEvent","captureClick","_ref3","_this$telemetrySpan6","lastEvent","_lastEvent","target","duration","textZoomRatio","rate","captureFocus","_ref4","_this$telemetrySpan7","captureResize","_ref5","_this$telemetrySpan8","captureDragDrop","_ref6","_this$telemetrySpan9","dropEffect","effectAllowed","kinds","mediaTypes","captureNavigation","from","to","_this$telemetrySpan10","getTime","captureConnectivityChange","_ref7","_this$telemetrySpan11","manual","Headers","FetchHeaders","normalizeName","normalizeValue","iteratorFor","items","append","header","getOwnPropertyNames","oldValue","has","thisArg","replacements","orig","traverse","isObj","seenIndex","mapped","same","scrubPath","paramRes","_getScrubFieldRegexs","queryRes","_getScrubQueryParamRegexs","redactQueryParam","dummy0","paramPart","paramScrubber","valScrubber","scrubber","tmpV","pat","getElementType","getAttribute","isDescribedElement","subtypes","tagName","getElementFromEvent","doc","elementFromPoint","clientX","clientY","treeToArray","elem","MAX_HEIGHT","out","nextDescription","describeElement","parentNode","elementArrayToString","MAX_LENGTH","separator","separatorLength","nextStr","totalLength","descriptionToString","elementString","desc","id","classes","attr","isMatchingElement","selectors","cls","classList","contains","_iterator3","_step3","_iterator2","_step2","sel","urlparser","domUtil","network","networkResponseHeaders","networkResponseBody","networkRequestHeaders","networkRequestBody","networkErrorOnHttp5xx","networkErrorOnHttp4xx","networkErrorOnHttp0","dom","navigation","connectivity","contentSecurityPolicy","errorOnContentSecurityPolicy","restore","b","nameFromDescription","defaultValueScrubber","patterns","field","_patterns","_window","_document","removeListeners","autoInstrument","configureScrubbing","eventRemovers","contentsecuritypolicy","_location","_lastHref","_options$scrubTelemet","_options$replay","_options$replay2","_options$replay3","_options$replay4","_options$replay5","_options$replay6","_options$replay7","_options$replay8","_options$replay9","scrubTelemetryInputs","telemetryScrubber","maskInputFn","scrubClasses","Boolean","scrubSelectors","blockSelector","ignoreSelector","maskTextSelector","oldSettings","instrumentNetwork","deinstrumentNetwork","instrumentConsole","deinstrumentConsole","instrumentDom","deinstrumentDom","instrumentNavigation","deinstrumentNavigation","instrumentConnectivity","deinstrumentConnectivity","instrumentContentSecurityPolicy","deinstrumentContentSecurityPolicy","wrapProp","xhr","xhrp","isUrlObject","_isUrlObject","__rollbar_xhr","request_content_type","onreadystatechangeHandler","__rollbar_event","response_content_type","headersConfig","allHeaders","getAllResponseHeaders","trim","_iterator4","_step4","isJsonContentType","scrubJson","addOtelNetworkResponse","errorOnHttpStatus","trackHttpErrors","reqHeaders","fetchHeaders","telemetryEvent","contentType","endTimeMs","inHeaders","outHeaders","currentHeader","_iterator5","_step5","_this$_window","wrapConsole","origConsole","methods","_i2","_methods","addListener","handleEvent","click","handleClick","dragdrop","handleDrag","focus","handleFocus","form","handleForm","handleInput","resize","handleResize","contentLoaded","handleContentLoaded","_evt$target","isTrusted","_evt$target2","_evt$target3","innerWidth","innerHeight","objs","dataTransfer","files","_iterator6","_step6","kind","_evt$dataTransfer","_evt$dataTransfer2","scrubInputValue","inputType","mask","_evt$target4","_evt$target5","_evt$target6","_evt$target7","_evt$target8","chromePackagedApp","app","hasPushState","history","pushState","handleUrlChange","parsedHref","parsedTo","parsedFrom","handleConnectivity","handleCspEvent","cspEvent","blockedURI","violatedDirective","effectiveDirective","sourceFile","originalPolicy","handleCspError","cspHandler","section","types","_iterator7","_step7","_loop","passive","_extendListenerPrototype","oldAddEventListener","_rollbarOldAdd","addFn","bubble","oldRemoveEventListener","_rollbarOldRemove","removeFn","jsonBackup","selectFrames","truncateFrames","maybeTruncateValue","truncateStrings","truncator","truncateTraceData","traceData","minBody","needsTruncation","maxSize","strategies","strategy","results","parentContext","_currentContext","Map","getValue","setValue","deleteValue","delete","ROOT_CONTEXT","ContextManager","currentContext","enterContext","previousContext","exitContext","with","createContextKey","for","gen","bytes","randomBytes","Uint8Array","crypto","getRandomValues","randHex","byte","padStart","SESSION_KEY","Session","_attributes","getSession","createSession","initSessionAttributes","serializedSession","sessionStorage","getItem","_unused","createdAt","setSession","sessionString","setItem","_unused2","username","_navigator$userAgentD","_navigator$userAgentD2","_navigator$userAgentD3","userAgentData","brands","mobile","toMillis","hrtime","toNanos","add","usePerformance","performance","timeOrigin","isHrTime","SpanExporter","export","spans","_resultCallback","spanExportQueue","toPayload","resourceSpans","resource","scopeMap","scopeKey","instrumentationScope","_transformSpan","_transformResource","scopeSpans","scopeData","_transformInstrumentationScope","transformAttributes","_transformAnyValue","transformEvents","timeUnixNano","parentSpanId","startTimeUnixNano","endTime","keyValues","_this5","stringValue","isInteger","intValue","doubleValue","boolValue","arrayValue","kvlistValue","SpanProcessor","exporter","pendingSpans","transformFn","transformSpan","applyTransforms","onStart","_parentContext","onEnd","Span","initReadableSpan","spanProcessor","_options$session","links","ended","droppedAttributesCount","droppedEventsCount","droppedLinksCount","setAttribute","isRecording","Tracer","_this$tracing$resourc","_options$resource","_this$tracing$session","contextManager","parentSpan","parentSpanContext","traceFlags","traceState","SPAN_KEY","createTracer","_this$options$payload","_this$options$payload2","idGen","getTracer","addSpanTransform","setSpan","_this$contextManager","withSpan","default"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"rollbar.noconflict.umd.js","mappings":"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","sources":["webpack://rollbar/webpack/universalModuleDefinition","webpack://rollbar/webpack/bootstrap","webpack://rollbar/webpack/runtime/define property getters","webpack://rollbar/webpack/runtime/hasOwnProperty shorthand","webpack://rollbar/webpack/runtime/make namespace object","webpack://rollbar/./src/utility.js","webpack://rollbar/./src/utility/traverse.js","webpack://rollbar/./src/scrub.js","webpack://rollbar/./src/telemetry.js","webpack://rollbar/./src/tracing/context.js","webpack://rollbar/./src/tracing/contextManager.js","webpack://rollbar/./src/tracing/hrtime.js","webpack://rollbar/./src/tracing/exporter.js","webpack://rollbar/./src/tracing/id.js","webpack://rollbar/./src/tracing/session.js","webpack://rollbar/./src/logger.js","webpack://rollbar/./src/tracing/spanProcessor.js","webpack://rollbar/./src/tracing/span.js","webpack://rollbar/./src/tracing/tracer.js","webpack://rollbar/./src/tracing/tracing.js","webpack://rollbar/./src/truncation.js","webpack://rollbar/./src/apiUtility.js","webpack://rollbar/./src/api.js","webpack://rollbar/./src/defaults.js","webpack://rollbar/./node_modules/error-stack-parser-es/dist/lite.mjs","webpack://rollbar/./node_modules/error-stack-parser-es/dist/index.mjs","webpack://rollbar/./src/errorParser.js","webpack://rollbar/./src/predicates.js","webpack://rollbar/./src/notifier.js","webpack://rollbar/./src/queue.js","webpack://rollbar/./src/rateLimiter.js","webpack://rollbar/./src/rollbar.js","webpack://rollbar/./src/tracing/defaults.js","webpack://rollbar/./src/transforms.js","webpack://rollbar/./src/browser/defaults.js","webpack://rollbar/./src/browser/globalSetup.js","webpack://rollbar/./src/browser/predicates.js","webpack://rollbar/./src/browser/replay/defaults.js","webpack://rollbar/./src/browser/transforms.js","webpack://rollbar/./src/browser/transport/fetch.js","webpack://rollbar/./src/browser/transport/xhr.js","webpack://rollbar/./src/browser/transport.js","webpack://rollbar/./src/browser/url.js","webpack://rollbar/./src/browser/core.js","webpack://rollbar/./src/utility/headers.js","webpack://rollbar/./src/utility/replace.js","webpack://rollbar/./src/browser/domUtility.js","webpack://rollbar/./src/browser/telemetry.js","webpack://rollbar/./src/browser/wrapGlobals.js","webpack://rollbar/./src/browser/rollbar.js","webpack://rollbar/./src/browser/bundles/rollbar.noconflict.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"rollbar\"] = factory();\n\telse\n\t\troot[\"rollbar\"] = factory();\n})(this, function() {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(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__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*\n * isType - Given a Javascript value and a string, returns true if the type of the value matches the\n * given string.\n *\n * @param x - any value\n * @param t - a lowercase string containing one of the following type names:\n * - undefined\n * - null\n * - error\n * - number\n * - boolean\n * - string\n * - symbol\n * - function\n * - object\n * - array\n * @returns true if x is of type t, otherwise false\n */\nfunction isType(x, t) {\n return t === typeName(x);\n}\n\n/*\n * typeName - Given a Javascript value, returns the type of the object as a string\n */\nfunction typeName(x) {\n var name = typeof x;\n if (name !== 'object') {\n return name;\n }\n if (!x) {\n return 'null';\n }\n if (x instanceof Error) {\n return 'error';\n }\n return {}.toString\n .call(x)\n .match(/\\s([a-zA-Z]+)/)[1]\n .toLowerCase();\n}\n\n/* isFunction - a convenience function for checking if a value is a function\n *\n * @param f - any value\n * @returns true if f is a function, otherwise false\n */\nfunction isFunction(f) {\n return isType(f, 'function');\n}\n\n/* isNativeFunction - a convenience function for checking if a value is a native JS function\n *\n * @param f - any value\n * @returns true if f is a native JS function, otherwise false\n */\nfunction isNativeFunction(f) {\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n var funcMatchString = Function.prototype.toString\n .call(Object.prototype.hasOwnProperty)\n .replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?');\n var reIsNative = RegExp('^' + funcMatchString + '$');\n return isObject(f) && reIsNative.test(f);\n}\n\n/* isObject - Checks if the argument is an object\n *\n * @param value - any value\n * @returns true is value is an object function is an object)\n */\nfunction isObject(value) {\n return (\n value != null && (typeof value == 'object' || typeof value == 'function')\n );\n}\n\n/* hasOwn - safe helper around Object.hasOwnProperty */\nfunction hasOwn(obj, prop) {\n if (obj == null) {\n return false;\n }\n if (Object.hasOwn) {\n return Object.hasOwn(obj, prop);\n }\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n/* isString - Checks if the argument is a string\n *\n * @param value - any value\n * @returns true if value is a string\n */\nfunction isString(value) {\n return typeof value === 'string' || value instanceof String;\n}\n\n/**\n * isFiniteNumber - determines whether the passed value is a finite number\n *\n * @param {*} n - any value\n * @returns true if value is a finite number\n */\nfunction isFiniteNumber(n) {\n return Number.isFinite(n);\n}\n\n/*\n * isIterable - convenience function for checking if a value can be iterated, essentially\n * whether it is an object or an array.\n *\n * @param i - any value\n * @returns true if i is an object or an array as determined by `typeName`\n */\nfunction isIterable(i) {\n var type = typeName(i);\n return type === 'object' || type === 'array';\n}\n\n/*\n * isError - convenience function for checking if a value is of an error type\n *\n * @param e - any value\n * @returns true if e is an error\n */\nfunction isError(e) {\n // Detect both Error and Firefox Exception type\n return isType(e, 'error') || isType(e, 'exception');\n}\n\n/* isPromise - a convenience function for checking if a value is a promise\n *\n * @param p - any value\n * @returns true if f is a function, otherwise false\n */\nfunction isPromise(p) {\n return isObject(p) && isType(p.then, 'function');\n}\n\n/**\n * isBrowser - a convenience function for checking if the code is running in a browser\n *\n * @returns true if the code is running in a browser environment\n */\nfunction isBrowser() {\n return typeof window !== 'undefined';\n}\n\nfunction redact() {\n return '********';\n}\n\n// from http://stackoverflow.com/a/8809472/1138191\nfunction uuid4() {\n var d = now();\n var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(\n /[xy]/g,\n function (c) {\n var r = ((d + Math.random() * 16) % 16) | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : (r & 0x7) | 0x8).toString(16);\n },\n );\n return uuid;\n}\n\nvar LEVELS = {\n debug: 0,\n info: 1,\n warning: 2,\n error: 3,\n critical: 4,\n};\n\nfunction sanitizeHref(url) {\n try {\n const urlObject = new URL(url);\n if (urlObject.password) {\n urlObject.password = redact();\n }\n if (urlObject.search) {\n urlObject.search = redact();\n }\n return urlObject.toString();\n } catch (_) {\n return url; // Return original URL if parsing fails\n }\n}\n\nfunction sanitizeUrl(url) {\n var baseUrlParts = parseUri(url);\n if (!baseUrlParts) {\n return '(unknown)';\n }\n\n // remove a trailing # if there is no anchor\n if (baseUrlParts.anchor === '') {\n baseUrlParts.source = baseUrlParts.source.replace('#', '');\n }\n\n url = baseUrlParts.source.replace('?' + baseUrlParts.query, '');\n return url;\n}\n\nvar parseUriOptions = {\n strictMode: false,\n key: [\n 'source',\n 'protocol',\n 'authority',\n 'userInfo',\n 'user',\n 'password',\n 'host',\n 'port',\n 'relative',\n 'path',\n 'directory',\n 'file',\n 'query',\n 'anchor',\n ],\n q: {\n name: 'queryKey',\n parser: /(?:^|&)([^&=]*)=?([^&]*)/g,\n },\n parser: {\n strict:\n /^(?:([^:/?#]+):)?(?:\\/\\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\\d*))?))?((((?:[^?#/]*\\/)*)([^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n loose:\n /^(?:(?![^:@]+:[^:@/]*@)([^:/?#.]+):)?(?:\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[?#]|$)))*\\/?)?([^?#/]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n },\n};\n\nfunction parseUri(str) {\n if (!isType(str, 'string')) {\n return undefined;\n }\n\n var o = parseUriOptions;\n var m = o.parser[o.strictMode ? 'strict' : 'loose'].exec(str);\n var uri = {};\n\n for (var i = 0, l = o.key.length; i < l; ++i) {\n uri[o.key[i]] = m[i] || '';\n }\n\n uri[o.q.name] = {};\n uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {\n if ($1) {\n uri[o.q.name][$1] = $2;\n }\n });\n\n return uri;\n}\n\nfunction addParamsAndAccessTokenToPath(accessToken, options, params) {\n params = params || {};\n params.access_token = accessToken;\n var paramsArray = [];\n var k;\n for (k in params) {\n if (Object.prototype.hasOwnProperty.call(params, k)) {\n paramsArray.push([k, params[k]].join('='));\n }\n }\n var query = '?' + paramsArray.sort().join('&');\n\n options = options || {};\n options.path = options.path || '';\n var qs = options.path.indexOf('?');\n var h = options.path.indexOf('#');\n var p;\n if (qs !== -1 && (h === -1 || h > qs)) {\n p = options.path;\n options.path = p.substring(0, qs) + query + '&' + p.substring(qs + 1);\n } else {\n if (h !== -1) {\n p = options.path;\n options.path = p.substring(0, h) + query + p.substring(h);\n } else {\n options.path = options.path + query;\n }\n }\n}\n\nfunction formatUrl(u, protocol) {\n protocol = protocol || u.protocol;\n if (!protocol && u.port) {\n if (u.port === 80) {\n protocol = 'http:';\n } else if (u.port === 443) {\n protocol = 'https:';\n }\n }\n protocol = protocol || 'https:';\n\n if (!u.hostname) {\n return null;\n }\n var result = protocol + '//' + u.hostname;\n if (u.port) {\n result = result + ':' + u.port;\n }\n if (u.path) {\n result = result + u.path;\n }\n return result;\n}\n\nfunction stringify(obj, backup) {\n var value, error;\n try {\n value = JSON.stringify(obj);\n } catch (jsonError) {\n if (backup && isFunction(backup)) {\n try {\n value = backup(obj);\n } catch (backupError) {\n error = backupError;\n }\n } else {\n error = jsonError;\n }\n }\n return { error: error, value: value };\n}\n\nfunction maxByteSize(string) {\n // The transport will use utf-8, so assume utf-8 encoding.\n //\n // This minimal implementation will accurately count bytes for all UCS-2 and\n // single code point UTF-16. If presented with multi code point UTF-16,\n // which should be rare, it will safely overcount, not undercount.\n //\n // While robust utf-8 encoders exist, this is far smaller and far more performant.\n // For quickly counting payload size for truncation, smaller is better.\n\n var count = 0;\n var length = string.length;\n\n for (var i = 0; i < length; i++) {\n var code = string.charCodeAt(i);\n if (code < 128) {\n // up to 7 bits\n count = count + 1;\n } else if (code < 2048) {\n // up to 11 bits\n count = count + 2;\n } else if (code < 65536) {\n // up to 16 bits\n count = count + 3;\n }\n }\n\n return count;\n}\n\nfunction jsonParse(s) {\n var value, error;\n try {\n value = JSON.parse(s);\n } catch (e) {\n error = e;\n }\n return { error, value };\n}\n\nfunction makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n mode,\n backupMessage,\n errorParser,\n) {\n var location = {\n url: url || '',\n line: lineno,\n column: colno,\n };\n location.func = errorParser.guessFunctionName(location.url, location.line);\n location.context = errorParser.gatherContext(location.url, location.line);\n var href =\n typeof document !== 'undefined' &&\n document &&\n document.location &&\n document.location.href;\n var useragent =\n typeof window !== 'undefined' &&\n window &&\n window.navigator &&\n window.navigator.userAgent;\n return {\n mode: mode,\n message: error ? String(error) : message || backupMessage,\n url: href,\n stack: [location],\n useragent: useragent,\n };\n}\n\nfunction wrapCallback(logger, f) {\n return function (err, resp) {\n try {\n f(err, resp);\n } catch (e) {\n logger.error(e);\n }\n };\n}\n\nfunction nonCircularClone(obj) {\n var seen = [obj];\n\n function clone(obj, seen) {\n var value,\n name,\n newSeen,\n result = {};\n\n try {\n for (name in obj) {\n value = obj[name];\n\n if (value && (isType(value, 'object') || isType(value, 'array'))) {\n if (seen.includes(value)) {\n result[name] = 'Removed circular reference: ' + typeName(value);\n } else {\n newSeen = seen.slice();\n newSeen.push(value);\n result[name] = clone(value, newSeen);\n }\n continue;\n }\n\n result[name] = value;\n }\n } catch (e) {\n result = 'Failed cloning custom data: ' + e.message;\n }\n return result;\n }\n return clone(obj, seen);\n}\n\nfunction createItem(args, logger, notifier, requestKeys, lambdaContext) {\n var message, err, custom, callback, request;\n var arg;\n var extraArgs = [];\n var diagnostic = {};\n var argTypes = [];\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n argTypes.push(typ);\n switch (typ) {\n case 'undefined':\n break;\n case 'string':\n if (message) {\n extraArgs.push(arg);\n } else {\n message = arg;\n }\n break;\n case 'function':\n callback = wrapCallback(logger, arg);\n break;\n case 'date':\n extraArgs.push(arg);\n break;\n case 'error':\n case 'domexception':\n case 'exception': // Firefox Exception type\n if (err) {\n extraArgs.push(arg);\n } else {\n err = arg;\n }\n break;\n case 'object':\n case 'array':\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n if (err) {\n extraArgs.push(arg);\n } else {\n err = arg;\n }\n break;\n }\n if (requestKeys && typ === 'object' && !request) {\n for (var j = 0, len = requestKeys.length; j < len; ++j) {\n if (arg[requestKeys[j]] !== undefined) {\n request = arg;\n break;\n }\n }\n if (request) {\n break;\n }\n }\n if (custom) {\n extraArgs.push(arg);\n } else {\n custom = arg;\n }\n break;\n default:\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n if (err) {\n extraArgs.push(arg);\n } else {\n err = arg;\n }\n break;\n }\n extraArgs.push(arg);\n }\n }\n\n // if custom is an array this turns it into an object with integer keys\n if (custom) custom = nonCircularClone(custom);\n\n if (extraArgs.length > 0) {\n if (!custom) custom = nonCircularClone({});\n custom.extraArgs = nonCircularClone(extraArgs);\n }\n\n var item = {\n message: message,\n err: err,\n custom: custom,\n timestamp: now(),\n callback: callback,\n notifier: notifier,\n diagnostic: diagnostic,\n uuid: uuid4(),\n };\n\n item.data = item.data || {};\n\n setCustomItemKeys(item, custom);\n\n if (requestKeys && request) {\n item.request = request;\n }\n if (lambdaContext) {\n item.lambdaContext = lambdaContext;\n }\n item._originalArgs = args;\n item.diagnostic.original_arg_types = argTypes;\n return item;\n}\n\nfunction setCustomItemKeys(item, custom) {\n if (custom && custom.level !== undefined) {\n item.level = custom.level;\n delete custom.level;\n }\n if (custom && custom.skipFrames !== undefined) {\n item.skipFrames = custom.skipFrames;\n delete custom.skipFrames;\n }\n}\n\nfunction addErrorContext(item, errors) {\n var custom = item.data.custom || {};\n var contextAdded = false;\n\n try {\n for (const error of errors) {\n if (hasOwn(error, 'rollbarContext')) {\n custom = merge(custom, nonCircularClone(error.rollbarContext));\n contextAdded = true;\n }\n }\n\n // Avoid adding an empty object to the data.\n if (contextAdded) {\n item.data.custom = custom;\n }\n } catch (e) {\n item.diagnostic.error_context = 'Failed: ' + e.message;\n }\n}\n\nvar TELEMETRY_TYPES = [\n 'log',\n 'network',\n 'dom',\n 'navigation',\n 'error',\n 'manual',\n];\nvar TELEMETRY_LEVELS = ['critical', 'error', 'warning', 'info', 'debug'];\n\nfunction arrayIncludes(arr, val) {\n for (const entry of arr) {\n if (entry === val) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction createTelemetryEvent(args) {\n var type, metadata, level;\n var arg;\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n switch (typ) {\n case 'string':\n if (!type && arrayIncludes(TELEMETRY_TYPES, arg)) {\n type = arg;\n } else if (!level && arrayIncludes(TELEMETRY_LEVELS, arg)) {\n level = arg;\n }\n break;\n case 'object':\n metadata = arg;\n break;\n default:\n break;\n }\n }\n var event = {\n type: type || 'manual',\n metadata: metadata || {},\n level: level,\n };\n\n return event;\n}\n\nfunction addItemAttributes(itemData, attributes) {\n itemData.attributes = itemData.attributes || [];\n for (const a of attributes) {\n if (a.value === undefined) {\n continue;\n }\n itemData.attributes.push(a);\n }\n}\n\n/*\n * get - given an obj/array and a keypath, return the value at that keypath or\n * undefined if not possible.\n *\n * @param obj - an object or array\n * @param path - a string of keys separated by '.' such as 'plugin.jquery.0.message'\n * which would correspond to 42 in `{plugin: {jquery: [{message: 42}]}}`\n */\nfunction get(obj, path) {\n if (!obj) {\n return undefined;\n }\n var keys = path.split('.');\n var result = obj;\n try {\n for (var i = 0, len = keys.length; i < len; ++i) {\n result = result[keys[i]];\n }\n } catch (_e) {\n result = undefined;\n }\n return result;\n}\n\nfunction set(obj, path, value) {\n if (!obj) {\n return;\n }\n\n // Prevent prototype pollution by setting the prototype to null.\n Object.setPrototypeOf(obj, null);\n\n var keys = path.split('.');\n var len = keys.length;\n if (len < 1) {\n return;\n }\n if (len === 1) {\n obj[keys[0]] = value;\n return;\n }\n try {\n var temp = obj[keys[0]] || {};\n var replacement = temp;\n for (var i = 1; i < len - 1; ++i) {\n temp[keys[i]] = temp[keys[i]] || {};\n temp = temp[keys[i]];\n }\n temp[keys[len - 1]] = value;\n obj[keys[0]] = replacement;\n } catch (_e) {\n return;\n }\n}\n\nfunction formatArgsAsString(args) {\n var i, len, arg;\n var result = [];\n for (i = 0, len = args.length; i < len; ++i) {\n arg = args[i];\n switch (typeName(arg)) {\n case 'object':\n arg = stringify(arg);\n arg = arg.error || arg.value;\n if (arg.length > 500) {\n arg = arg.substr(0, 497) + '...';\n }\n break;\n case 'null':\n arg = 'null';\n break;\n case 'undefined':\n arg = 'undefined';\n break;\n case 'symbol':\n arg = arg.toString();\n break;\n }\n result.push(arg);\n }\n return result.join(' ');\n}\n\nfunction now() {\n if (Date.now) {\n return Date.now();\n }\n return Number(new Date());\n}\n\nfunction filterIp(requestData, captureIp) {\n if (!requestData || !requestData['user_ip'] || captureIp === true) {\n return;\n }\n var newIp = requestData['user_ip'];\n if (!captureIp) {\n newIp = null;\n } else {\n try {\n var parts;\n if (newIp.indexOf('.') !== -1) {\n parts = newIp.split('.');\n parts.pop();\n parts.push('0');\n newIp = parts.join('.');\n } else if (newIp.indexOf(':') !== -1) {\n parts = newIp.split(':');\n if (parts.length > 2) {\n var beginning = parts.slice(0, 3);\n var slashIdx = beginning[2].indexOf('/');\n if (slashIdx !== -1) {\n beginning[2] = beginning[2].substring(0, slashIdx);\n }\n var terminal = '0000:0000:0000:0000:0000';\n newIp = beginning.concat(terminal).join(':');\n }\n } else {\n newIp = null;\n }\n } catch (_e) {\n newIp = null;\n }\n }\n requestData['user_ip'] = newIp;\n}\n\nfunction handleOptions(current, input, payload, logger) {\n var result = merge(current, input, payload);\n result = updateDeprecatedOptions(result, logger);\n if (!input || input.overwriteScrubFields) {\n return result;\n }\n if (input.scrubFields) {\n result.scrubFields = (current.scrubFields || []).concat(input.scrubFields);\n }\n return result;\n}\n\nfunction updateDeprecatedOptions(options, logger) {\n if (options.hostWhiteList && !options.hostSafeList) {\n options.hostSafeList = options.hostWhiteList;\n options.hostWhiteList = undefined;\n logger && logger.log('hostWhiteList is deprecated. Use hostSafeList.');\n }\n if (options.hostBlackList && !options.hostBlockList) {\n options.hostBlockList = options.hostBlackList;\n options.hostBlackList = undefined;\n logger && logger.log('hostBlackList is deprecated. Use hostBlockList.');\n }\n return options;\n}\n\nfunction merge() {\n function isPlainObject(obj) {\n if (!obj || Object.prototype.toString.call(obj) !== '[object Object]') {\n return false;\n }\n\n var hasOwnConstructor = hasOwn(obj, 'constructor');\n var hasIsPrototypeOf =\n obj.constructor &&\n obj.constructor.prototype &&\n hasOwn(obj.constructor.prototype, 'isPrototypeOf');\n // Not own constructor property must be Object\n if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n return false;\n }\n\n // Own properties are enumerated firstly, so to speed up,\n // if last one is own, then all properties are own.\n var key;\n for (key in obj) {\n /**/\n }\n\n return typeof key === 'undefined' || hasOwn(obj, key);\n }\n\n var i,\n src,\n copy,\n clone,\n name,\n result = Object.create(null), // no prototype pollution on Object\n current = null,\n length = arguments.length;\n\n for (i = 0; i < length; i++) {\n current = arguments[i];\n if (current === null || current === undefined) {\n continue;\n }\n\n for (name in current) {\n src = result[name];\n copy = current[name];\n if (result !== copy) {\n if (copy && isPlainObject(copy)) {\n clone = src && isPlainObject(src) ? src : {};\n result[name] = merge(clone, copy);\n } else if (typeof copy !== 'undefined') {\n result[name] = copy;\n }\n }\n }\n }\n return result;\n}\n\nexport {\n addParamsAndAccessTokenToPath,\n createItem,\n addErrorContext,\n createTelemetryEvent,\n addItemAttributes,\n filterIp,\n formatArgsAsString,\n formatUrl,\n get,\n handleOptions,\n isError,\n isFiniteNumber,\n isFunction,\n hasOwn,\n isIterable,\n isNativeFunction,\n isObject,\n isString,\n isType,\n isPromise,\n isBrowser,\n jsonParse,\n LEVELS,\n makeUnhandledStackInfo,\n merge,\n now,\n redact,\n sanitizeHref,\n sanitizeUrl,\n set,\n stringify,\n maxByteSize,\n typeName,\n uuid4,\n};\n","import * as _ from '../utility.js';\n\nfunction traverse(obj, func, seen) {\n var k, v, i;\n var isObj = _.isType(obj, 'object');\n var isArray = _.isType(obj, 'array');\n var keys = [];\n var seenIndex;\n\n // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11.\n seen = seen || { obj: [], mapped: [] };\n\n if (isObj) {\n seenIndex = seen.obj.indexOf(obj);\n\n if (isObj && seenIndex !== -1) {\n // Prefer the mapped object if there is one.\n return seen.mapped[seenIndex] || seen.obj[seenIndex];\n }\n\n seen.obj.push(obj);\n seenIndex = seen.obj.length - 1;\n }\n\n if (isObj) {\n for (k in obj) {\n if (_.hasOwn(obj, k)) {\n keys.push(k);\n }\n }\n } else if (isArray) {\n for (i = 0; i < obj.length; ++i) {\n keys.push(i);\n }\n }\n\n var result = isObj ? {} : [];\n var same = true;\n for (i = 0; i < keys.length; ++i) {\n k = keys[i];\n v = obj[k];\n result[k] = func(k, v, seen);\n same = same && result[k] === obj[k];\n }\n\n if (isObj && !same) {\n seen.mapped[seenIndex] = result;\n }\n\n return !same ? result : obj;\n}\n\nexport default traverse;\n","import traverse from './utility/traverse.js';\nimport * as _ from './utility.js';\n\nfunction scrub(data, scrubFields, scrubPaths) {\n scrubFields = scrubFields || [];\n\n if (scrubPaths) {\n for (const path of scrubPaths) {\n scrubPath(data, path);\n }\n }\n\n var paramRes = _getScrubFieldRegexs(scrubFields);\n var queryRes = _getScrubQueryParamRegexs(scrubFields);\n\n function redactQueryParam(dummy0, paramPart) {\n return paramPart + _.redact();\n }\n\n function paramScrubber(v) {\n if (_.isType(v, 'string')) {\n for (const regex of queryRes) {\n v = v.replace(regex, redactQueryParam);\n }\n }\n return v;\n }\n\n function valScrubber(k, v) {\n for (const regex of paramRes) {\n if (regex.test(k)) {\n v = _.redact();\n break;\n }\n }\n return v;\n }\n\n function scrubber(k, v, seen) {\n var tmpV = valScrubber(k, v);\n if (tmpV === v) {\n if (_.isType(v, 'object') || _.isType(v, 'array')) {\n return traverse(v, scrubber, seen);\n }\n return paramScrubber(tmpV);\n } else {\n return tmpV;\n }\n }\n\n return traverse(data, scrubber);\n}\n\nfunction scrubPath(obj, path) {\n var keys = path.split('.');\n var last = keys.length - 1;\n try {\n for (const [index, key] of keys.entries()) {\n if (index < last) {\n obj = obj[key];\n } else {\n obj[key] = _.redact();\n }\n }\n } catch (_e) {\n // Missing key is OK;\n }\n}\n\nfunction _getScrubFieldRegexs(scrubFields) {\n var ret = [];\n for (const field of scrubFields) {\n var pat = '^\\\\[?(%5[bB])?' + field + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?$';\n ret.push(new RegExp(pat, 'i'));\n }\n return ret;\n}\n\nfunction _getScrubQueryParamRegexs(scrubFields) {\n var ret = [];\n for (const field of scrubFields) {\n var pat = '\\\\[?(%5[bB])?' + field + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?';\n ret.push(new RegExp('(' + pat + '=)([^&\\\\n]+)', 'igm'));\n }\n return ret;\n}\n\nexport default scrub;\n","import * as _ from './utility.js';\n\nconst MAX_EVENTS = 100;\n\n// Temporary workaround while solving commonjs -> esm issues in Node 18 - 20.\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\nclass Telemeter {\n constructor(options, tracing) {\n this.queue = [];\n this.options = _.merge(options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n this.tracing = tracing;\n this.telemetrySpan = this.tracing?.startSpan('rollbar-telemetry', {});\n }\n\n configure(options) {\n var oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n var newMaxEvents = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n var deleteCount = 0;\n if (this.queue.length > newMaxEvents) {\n deleteCount = this.queue.length - newMaxEvents;\n }\n this.maxQueueSize = newMaxEvents;\n this.queue.splice(0, deleteCount);\n }\n\n copyEvents() {\n var events = Array.prototype.slice.call(this.queue, 0);\n if (_.isFunction(this.options.filterTelemetry)) {\n try {\n var i = events.length;\n while (i--) {\n if (this.options.filterTelemetry(events[i])) {\n events.splice(i, 1);\n }\n }\n } catch (_e) {\n this.options.filterTelemetry = null;\n }\n }\n\n // Filter until supported in legacy telemetry\n events = events.filter((e) => e.type !== 'connectivity');\n\n // Remove internal keys from output\n events = events.map(\n ({ otelAttributes: _otelAttributes, ...event }) => event,\n );\n\n return events;\n }\n\n exportTelemetrySpan(attributes = {}) {\n if (this.telemetrySpan) {\n this.telemetrySpan.end(attributes);\n this.telemetrySpan = this.tracing.startSpan('rollbar-telemetry', {});\n }\n }\n\n capture(\n type,\n metadata,\n level,\n rollbarUUID,\n timestamp = null,\n otelAttributes = null,\n ) {\n var e = {\n level: getLevel(type, level),\n type: type,\n timestamp_ms: timestamp || _.now(),\n body: metadata,\n source: 'client',\n };\n if (rollbarUUID) {\n e.uuid = rollbarUUID;\n }\n if (otelAttributes) {\n e.otelAttributes = otelAttributes;\n }\n\n try {\n if (\n _.isFunction(this.options.filterTelemetry) &&\n this.options.filterTelemetry(e)\n ) {\n return false;\n }\n } catch (_exc) {\n this.options.filterTelemetry = null;\n }\n\n this.push(e);\n return e;\n }\n\n captureEvent(type, metadata, level, rollbarUUID) {\n return this.capture(type, metadata, level, rollbarUUID);\n }\n\n captureError(err, level, rollbarUUID, timestamp) {\n const message = err.message || String(err);\n var metadata = { message };\n if (err.stack) {\n metadata.stack = err.stack;\n }\n const otelAttributes = {\n message,\n level,\n type: 'error',\n uuid: rollbarUUID,\n };\n\n this.telemetrySpan?.addEvent(\n 'rollbar-occurrence-event',\n otelAttributes,\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'error',\n metadata,\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureLog(message, level, rollbarUUID, timestamp) {\n const event = rollbarUUID\n ? 'rollbar-occurrence-event'\n : 'rollbar-log-event';\n const otelAttributes = {\n message,\n level,\n ...(rollbarUUID ? { type: 'message', uuid: rollbarUUID } : {}),\n };\n\n this.telemetrySpan?.addEvent(event, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'log',\n { message },\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNetwork(metadata, subtype, rollbarUUID, requestData) {\n subtype = subtype || 'xhr';\n metadata.subtype = metadata.subtype || subtype;\n if (requestData) {\n metadata.request = requestData;\n }\n const level = this.levelFromStatus(metadata.status_code);\n const endTimeNano = (metadata.end_time_ms || 0) * 1e6;\n const otelAttributes = {\n type: metadata.subtype,\n method: metadata.method,\n url: metadata.url,\n statusCode: metadata.status_code,\n 'request.headers': JSON.stringify(metadata.request_headers || {}),\n 'response.headers': JSON.stringify(metadata.response?.headers || {}),\n 'response.timeUnixNano': endTimeNano.toString(),\n };\n const requestBody = metadata.request;\n const responseBody = metadata.response?.body;\n if (requestBody) {\n otelAttributes['request.body'] = JSON.stringify(requestBody);\n }\n if (responseBody) {\n otelAttributes['response.body'] = JSON.stringify(responseBody);\n }\n\n this.telemetrySpan?.addEvent(\n 'rollbar-network-event',\n otelAttributes,\n fromMillis(metadata.start_time_ms),\n );\n\n return this.capture(\n 'network',\n metadata,\n level,\n rollbarUUID,\n metadata.start_time_ms,\n otelAttributes,\n );\n }\n\n levelFromStatus(statusCode) {\n if (statusCode >= 200 && statusCode < 400) {\n return 'info';\n }\n if (statusCode === 0 || statusCode >= 400) {\n return 'error';\n }\n return 'info';\n }\n\n captureDom(subtype, element, value, checked, rollbarUUID) {\n var metadata = {\n subtype: subtype,\n element: element,\n };\n if (value !== undefined) {\n metadata.value = value;\n }\n if (checked !== undefined) {\n metadata.checked = checked;\n }\n return this.capture('dom', metadata, 'info', rollbarUUID);\n }\n\n captureInput({ type, isSynthetic, element, value, timestamp }) {\n const name = 'rollbar-input-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n value,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n value,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureClick({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-click-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n _getRepeatedEvent(name, attributes) {\n const lastEvent = this._lastEvent(this.queue);\n\n if (\n lastEvent &&\n lastEvent.body.type === name &&\n lastEvent.otelAttributes.target === attributes.target\n ) {\n return lastEvent;\n }\n }\n\n _updateRepeatedEvent(event, attributes, timestamp) {\n const duration = Math.max(timestamp - event.timestamp_ms, 1);\n event.body.value = attributes.value;\n event.otelAttributes.value = attributes.value;\n event.otelAttributes.height = attributes.height;\n event.otelAttributes.width = attributes.width;\n event.otelAttributes.textZoomRatio = attributes.textZoomRatio;\n event.otelAttributes['endTimeUnixNano'] = fromMillis(timestamp);\n event.otelAttributes['durationUnixNano'] = fromMillis(duration);\n event.otelAttributes.count = (event.otelAttributes.count || 1) + 1;\n event.otelAttributes.rate = event.otelAttributes.count / (duration / 1000);\n }\n\n _lastEvent(list) {\n return list.length > 0 ? list[list.length - 1] : null;\n }\n\n captureFocus({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-focus-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureResize({\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n timestamp,\n }) {\n const name = 'rollbar-resize-event';\n const metadata = {\n type: name,\n subtype: type,\n width,\n height,\n textZoomRatio,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n };\n\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureDragDrop({\n type,\n isSynthetic,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n timestamp,\n }) {\n const name = 'rollbar-dragdrop-event';\n let metadata = {\n type: name,\n subtype: type,\n isSynthetic,\n };\n\n let otelAttributes = {\n type,\n isSynthetic,\n };\n\n if (type === 'dragstart') {\n metadata = { ...metadata, element, dropEffect, effectAllowed };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n };\n }\n\n if (type === 'drop') {\n metadata = {\n ...metadata,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNavigation(from, to, rollbarUUID, timestamp) {\n this.telemetrySpan?.addEvent(\n 'rollbar-navigation-event',\n { 'previous.url.full': from, 'url.full': to },\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'navigation',\n { from, to },\n 'info',\n rollbarUUID,\n timestamp,\n );\n }\n\n captureDomContentLoaded(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'DOMContentLoaded' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'DOMContentLoaded'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureLoad(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'load' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'load'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureConnectivityChange({ type, isSynthetic, timestamp }) {\n const name = 'rollbar-connectivity-event';\n const metadata = {\n type: name,\n subtype: type,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'connectivity',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n // Only intended to be used internally by the notifier\n _captureRollbarItem(item) {\n if (!this.options.includeItemsInTelemetry) {\n return;\n }\n if (item.err) {\n return this.captureError(item.err, item.level, item.uuid, item.timestamp);\n }\n if (item.message) {\n return this.captureLog(\n item.message,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n if (item.custom) {\n return this.capture(\n 'log',\n item.custom,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n }\n\n push(e) {\n this.queue.push(e);\n if (this.queue.length > this.maxQueueSize) {\n this.queue.shift();\n }\n }\n}\n\nfunction getLevel(type, level) {\n if (level) {\n return level;\n }\n var defaultLevel = {\n error: 'error',\n manual: 'info',\n };\n return defaultLevel[type] || 'info';\n}\n\nexport default Telemeter;\n","export class Context {\n constructor(parentContext) {\n this._currentContext = parentContext ? new Map(parentContext) : new Map();\n }\n\n getValue(key) {\n return this._currentContext.get(key);\n }\n\n setValue(key, value) {\n const context = new Context(this._currentContext);\n context._currentContext.set(key, value);\n return context;\n }\n\n deleteValue(key) {\n const context = new Context(self._currentContext);\n context._currentContext.delete(key);\n return context;\n }\n}\n\nexport const ROOT_CONTEXT = new Context();\n","import { ROOT_CONTEXT } from './context.js';\n\nexport class ContextManager {\n constructor() {\n this.currentContext = ROOT_CONTEXT;\n }\n\n active() {\n return this.currentContext;\n }\n\n enterContext(context) {\n const previousContext = this.currentContext;\n this.currentContext = context || ROOT_CONTEXT;\n return previousContext;\n }\n\n exitContext(context) {\n this.currentContext = context;\n return this.currentContext;\n }\n\n with(context, fn, thisArg, ...args) {\n const previousContext = this.enterContext(context);\n try {\n return fn.call(thisArg, ...args);\n } finally {\n this.exitContext(previousContext);\n }\n }\n}\n\nexport function createContextKey(key) {\n // Use Symbol for OpenTelemetry compatibility.\n return Symbol.for(key);\n}\n","/**\n * @module hrtime\n *\n * @description Methods for handling OpenTelemetry hrtime.\n */\n\n/**\n * Convert a duration in milliseconds to an OpenTelemetry hrtime tuple.\n *\n * @param {number} millis - The duration in milliseconds.\n * @returns {[number, number]} An array where the first element is seconds\n * and the second is nanoseconds.\n */\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in milliseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in milliseconds.\n */\nfunction toMillis(hrtime) {\n return hrtime[0] * 1e3 + Math.round(hrtime[1] / 1e6);\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in nanoseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in nanoseconds.\n */\nfunction toNanos(hrtime) {\n return hrtime[0] * 1e9 + hrtime[1];\n}\n\n/**\n * Adds two OpenTelemetry hrtime tuples.\n *\n * @param {[number, number]} a - The first hrtime tuple [s, ns].\n * @param {[number, number]} b - The second hrtime tuple [s, ns].\n * @returns {[number, number]} Summed hrtime tuple, normalized.\n *\n */\nfunction add(a, b) {\n return [a[0] + b[0] + Math.trunc((a[1] + b[1]) / 1e9), (a[1] + b[1]) % 1e9];\n}\n\n/**\n * Get the current high-resolution time as an OpenTelemetry hrtime tuple.\n *\n * @param {boolean} usePerformance=false - If true, uses the Performance API (timeOrigin + now()).\n *\n * @returns {[number, number]} The current hrtime tuple [s, ns].\n */\nfunction now(usePerformance = false) {\n if (usePerformance) {\n return add(\n fromMillis(performance.timeOrigin),\n fromMillis(performance.now()),\n );\n }\n return fromMillis(Date.now());\n}\n\n/**\n * Check if a value is a valid OpenTelemetry hrtime tuple.\n *\n * An hrtime tuple is an Array of exactly two numbers:\n * [seconds, nanoseconds]\n *\n * @param {*} value – anything to test\n * @returns {boolean} true if `value` is a [number, number] array of length 2\n *\n * @example\n * isHrTime([ 1, 500 ]); // true\n * isHrTime([ 0, 1e9 ]); // true\n * isHrTime([ '1', 500 ]); // false\n * isHrTime({ 0: 1, 1: 500 }); // false\n */\nfunction isHrTime(value) {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number'\n );\n}\n\n/**\n * Methods for handling hrtime. OpenTelemetry uses the [seconds, nanoseconds]\n * format for hrtime in the `ReadableSpan` interface.\n *\n * @example\n * import hrtime from '@tracing/hrtime.js';\n *\n * hrtime.fromMillis(1000);\n * hrtime.toMillis([0, 1000]);\n * hrtime.add([0, 0], [0, 1000]);\n * hrtime.now();\n * hrtime.isHrTime([0, 1000]);\n */\nexport default { fromMillis, toMillis, toNanos, add, now, isHrTime };\n","import hrtime from './hrtime.js';\n\n/**\n * SpanExporter is responsible for exporting ReadableSpan objects\n * and transforming them into the OTLP-compatible format.\n */\nexport class SpanExporter {\n constructor(api, options = {}) {\n this.api = api;\n this.options = options;\n }\n\n /**\n * Export spans to the span export queue\n *\n * @param {Array} spans - Array of ReadableSpan objects to export\n * @param {Function} _resultCallback - Optional callback (not used)\n */\n export(spans, _resultCallback) {\n spanExportQueue.push(...spans);\n }\n\n /**\n * Transforms an array of ReadableSpan objects into the OTLP format payload\n * compatible with the Rollbar API. This follows the OpenTelemetry protocol\n * specification for traces.\n *\n * @returns {Object} OTLP format payload for API transmission\n */\n toPayload() {\n const spans = spanExportQueue.slice();\n spanExportQueue.length = 0;\n\n if (!spans || !spans.length) {\n return { resourceSpans: [] };\n }\n\n const resource = (spans[0] && spans[0].resource) || {};\n\n const scopeMap = new Map();\n\n for (const span of spans) {\n const scopeKey = span.instrumentationScope\n ? `${span.instrumentationScope.name}:${span.instrumentationScope.version}`\n : 'default:1.0.0';\n\n if (!scopeMap.has(scopeKey)) {\n scopeMap.set(scopeKey, {\n scope: span.instrumentationScope || {\n name: 'default',\n version: '1.0.0',\n attributes: [],\n },\n spans: [],\n });\n }\n\n scopeMap.get(scopeKey).spans.push(this._transformSpan(span));\n }\n\n return {\n resourceSpans: [\n {\n resource: this._transformResource(resource),\n scopeSpans: Array.from(scopeMap.values()).map((scopeData) => ({\n scope: this._transformInstrumentationScope(scopeData.scope),\n spans: scopeData.spans,\n })),\n },\n ],\n };\n }\n\n /**\n * Sends the given payload to the Rollbar API.\n *\n * @param {String} payload - Serialized OTLP format payload\n * @param {Object} headers - Optional request headers\n * @returns {Promise} Promise that resolves when the request completes\n */\n post(payload, headers = {}) {\n return this.api.postSpans(payload, headers);\n }\n\n /**\n * Transforms a ReadableSpan into the OTLP Span format\n *\n * @private\n * @param {Object} span - ReadableSpan object to transform\n * @returns {Object} OTLP Span format\n */\n _transformSpan(span) {\n const transformAttributes = (attributes) => {\n return Object.entries(attributes || {}).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n };\n\n const transformEvents = (events) => {\n return (events || []).map((event) => ({\n timeUnixNano: hrtime.toNanos(event.time),\n name: event.name,\n attributes: transformAttributes(event.attributes),\n }));\n };\n\n return {\n traceId: span.spanContext.traceId,\n spanId: span.spanContext.spanId,\n parentSpanId: span.parentSpanId || '',\n name: span.name,\n kind: span.kind || 1, // INTERNAL by default\n startTimeUnixNano: hrtime.toNanos(span.startTime),\n endTimeUnixNano: hrtime.toNanos(span.endTime),\n attributes: transformAttributes(span.attributes),\n events: transformEvents(span.events),\n };\n }\n\n /**\n * Transforms a resource object into OTLP Resource format\n *\n * @private\n * @param {Object} resource - Resource information\n * @returns {Object} OTLP Resource format\n */\n _transformResource(resource) {\n const attributes = resource.attributes || {};\n const keyValues = Object.entries(attributes).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n\n return {\n attributes: keyValues,\n };\n }\n\n /**\n * Transforms an instrumentation scope into OTLP InstrumentationScope format\n *\n * @private\n * @param {Object} scope - Instrumentation scope information\n * @returns {Object} OTLP InstrumentationScope format\n */\n _transformInstrumentationScope(scope) {\n return {\n name: scope.name || '',\n version: scope.version || '',\n attributes: (scope.attributes || []).map((attr) => ({\n key: attr.key,\n value: this._transformAnyValue(attr.value),\n })),\n };\n }\n\n /**\n * Transforms a JavaScript value into an OTLP AnyValue\n *\n * @private\n * @param {any} value - Value to transform\n * @returns {Object} OTLP AnyValue format\n */\n _transformAnyValue(value) {\n if (value === null || value === undefined) {\n return { stringValue: '' };\n }\n\n const type = typeof value;\n\n if (type === 'string') {\n return { stringValue: value };\n } else if (type === 'number') {\n if (Number.isInteger(value)) {\n return { intValue: value.toString() };\n } else {\n return { doubleValue: value };\n }\n } else if (type === 'boolean') {\n return { boolValue: value };\n } else if (Array.isArray(value)) {\n return {\n arrayValue: {\n values: value.map((v) => this._transformAnyValue(v)),\n },\n };\n } else if (type === 'object') {\n return {\n kvlistValue: {\n values: Object.entries(value).map(([k, v]) => ({\n key: k,\n value: this._transformAnyValue(v),\n })),\n },\n };\n }\n\n return { stringValue: String(value) };\n }\n}\n\nexport const spanExportQueue = [];\n","/**\n * Generate a random hexadecimal ID of specified byte length\n *\n * @param {number} bytes - Number of bytes for the ID (default: 16)\n * @returns {string} - Hexadecimal string representation\n */\nfunction gen(bytes = 16) {\n let randomBytes = new Uint8Array(bytes);\n crypto.getRandomValues(randomBytes);\n let randHex = Array.from(randomBytes, (byte) =>\n byte.toString(16).padStart(2, '0'),\n ).join('');\n return randHex;\n}\n\n/**\n * Tracing id generation utils\n *\n * @example\n * import id from './id.js';\n *\n * const spanId = id.gen(8); // => \"a1b2c3d4e5f6...\"\n */\nexport default { gen };\n","import id from './id.js';\n\nconst SESSION_KEY = 'RollbarSession';\n\nexport class Session {\n _attributes;\n\n constructor(tracing, options) {\n this.options = options;\n this.tracing = tracing;\n this.window = tracing.window;\n this.session = null;\n this._attributes = {};\n }\n\n init(attrs = {}) {\n if (this.session) {\n return this;\n }\n this.getSession() || this.createSession();\n\n this.initSessionAttributes(attrs);\n\n return this;\n }\n\n getSession() {\n try {\n const serializedSession = this.window.sessionStorage.getItem(SESSION_KEY);\n\n if (!serializedSession) {\n return null;\n }\n\n this.session = JSON.parse(serializedSession);\n } catch {\n return null;\n }\n return this;\n }\n\n createSession() {\n this.session = {\n id: id.gen(),\n createdAt: Date.now(),\n };\n\n return this.setSession(this.session);\n }\n\n setSession(session) {\n const sessionString = JSON.stringify(session);\n\n try {\n this.window.sessionStorage.setItem(SESSION_KEY, sessionString);\n } catch {\n return null;\n }\n return this;\n }\n\n get attributes() {\n return this._attributes;\n }\n\n setAttributes(attributes) {\n this._attributes = { ...this._attributes, ...attributes };\n return this;\n }\n\n setUser(user) {\n this.setAttributes({\n 'user.id': user?.id,\n 'user.email': user?.email,\n 'user.name': user?.name || user?.username,\n });\n return this;\n }\n\n initSessionAttributes(attrs) {\n this.setAttributes({\n 'session.id': this.session.id,\n 'browser.brands': navigator.userAgentData?.brands,\n 'browser.language': navigator.language,\n 'browser.mobile': navigator.userAgentData?.mobile,\n 'browser.platform': navigator.userAgentData?.platform,\n 'client.address': '$remote_ip', // updated at the API\n 'rollbar.notifier.framework': 'browser-js',\n 'user_agent.original': navigator.userAgent,\n ...attrs,\n });\n return this;\n }\n}\n","let log = () => {};\n\nconst levels = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n disable: 4,\n};\n\nconst logger = {\n error: (...args) => log('error', args),\n warn: (...args) => log('warn', args),\n info: (...args) => log('info', args),\n debug: (...args) => log('debug', args),\n log: (...args) => log('info', args),\n init: ({ logLevel }) => {\n log = function (level, args) {\n if (levels[level] < levels[logLevel]) return;\n\n args.unshift('Rollbar:');\n\n // eslint-disable-next-line no-console\n console[level].apply(console, args);\n };\n },\n};\n\nexport default logger;\n","import logger from '../logger.js';\n\nexport class SpanProcessor {\n constructor(exporter, options = {}) {\n this.exporter = exporter;\n this.options = options;\n this.pendingSpans = new Map();\n this.transforms = [this.userTransform.bind(this)];\n }\n\n addTransform(transformFn) {\n this.transforms.unshift(transformFn);\n }\n\n userTransform(span) {\n if (this.options.transformSpan) {\n this.options.transformSpan({ span: span });\n }\n }\n\n applyTransforms(span) {\n for (const transform of this.transforms) {\n try {\n transform(span);\n } catch (e) {\n logger.error('Error running span transform callback', e);\n }\n }\n }\n\n onStart(span, _parentContext) {\n this.pendingSpans.set(span.span.spanContext.spanId, span);\n }\n\n onEnd(span) {\n this.applyTransforms(span.span);\n this.exporter.export([span.export()]);\n this.pendingSpans.delete(span.span.spanContext.spanId);\n }\n}\n","import hrtime from './hrtime.js';\n\nexport class Span {\n constructor(options) {\n this.usePerformance = options.usePerformance;\n this.initReadableSpan(options);\n\n this.spanProcessor = options.spanProcessor;\n this.spanProcessor.onStart(this, options.context);\n\n if (options.attributes) {\n this.setAttributes(options.attributes);\n }\n return this;\n }\n\n initReadableSpan(options) {\n this.span = {\n name: options.name,\n kind: options.kind,\n spanContext: options.spanContext,\n parentSpanId: options.parentSpanId,\n startTime: options.startTime || hrtime.now(options.usePerformance),\n endTime: [0, 0],\n status: { code: 0, message: '' },\n attributes: { 'session.id': options.session?.id },\n links: [],\n events: [],\n duration: 0,\n ended: false,\n resource: options.resource,\n instrumentationScope: options.scope,\n droppedAttributesCount: 0,\n droppedEventsCount: 0,\n droppedLinksCount: 0,\n };\n }\n\n spanContext() {\n return this.span.spanContext;\n }\n\n get spanId() {\n return this.span.spanContext.spanId;\n }\n\n get traceId() {\n return this.span.spanContext.traceId;\n }\n\n setAttribute(key, value) {\n if (value == null || this.span.ended) return this;\n if (key.length === 0) return this;\n\n this.span.attributes[key] = value;\n return this;\n }\n\n setAttributes(attributes) {\n for (const [k, v] of Object.entries(attributes)) {\n this.setAttribute(k, v);\n }\n return this;\n }\n\n addEvent(name, attributes = {}, time) {\n if (this.span.ended) return this;\n\n this.span.events.push({\n name,\n attributes,\n time: time || hrtime.now(),\n droppedAttributesCount: 0,\n });\n\n return this;\n }\n\n isRecording() {\n return this.span.ended === false;\n }\n\n end(attributes, time) {\n if (attributes) this.setAttributes(attributes);\n this.span.endTime = time || hrtime.now(this.usePerformance);\n this.span.ended = true;\n this.spanProcessor.onEnd(this);\n }\n\n export() {\n return this.span;\n }\n}\n","import id from './id.js';\nimport { Span } from './span.js';\n\nexport class Tracer {\n constructor(tracing, spanProcessor) {\n this.spanProcessor = spanProcessor;\n this.tracing = tracing;\n }\n\n startSpan(\n name,\n options = {},\n context = this.tracing.contextManager.active(),\n ) {\n const parentSpan = this.tracing.getSpan(context);\n const parentSpanContext = parentSpan?.spanContext();\n const spanId = id.gen(8);\n let traceId;\n let traceFlags = 0;\n let traceState = null;\n let parentSpanId;\n if (parentSpanContext) {\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n parentSpanId = parentSpanContext.spanId;\n } else {\n traceId = id.gen(16);\n }\n\n const kind = 0;\n const spanContext = { traceId, spanId, traceFlags, traceState };\n const resource = {\n attributes: {\n ...(this.tracing.resource?.attributes || {}),\n ...(options.resource?.attributes || {}),\n },\n };\n\n const span = new Span({\n resource: resource,\n scope: this.tracing.scope,\n session: this.tracing.session?.session,\n context,\n spanContext,\n name,\n kind,\n parentSpanId,\n spanProcessor: this.spanProcessor,\n startTime: options.startTime,\n usePerformance: options.usePerformance,\n });\n return span;\n }\n}\n","import { ContextManager, createContextKey } from './contextManager.js';\nimport { SpanExporter } from './exporter.js';\nimport id from './id.js';\nimport { Session } from './session.js';\nimport { SpanProcessor } from './spanProcessor.js';\nimport { Tracer } from './tracer.js';\n\nconst SPAN_KEY = createContextKey('Rollbar Context Key SPAN');\n\nexport default class Tracing {\n constructor(gWindow, api, options) {\n this.api = api;\n this.options = options;\n this.window = gWindow;\n\n if (this.window.sessionStorage) {\n this.session = new Session(this, options);\n }\n this.createTracer();\n }\n\n configure(options) {\n // Options merge happens before configure is called, so we can just replace.\n this.options = options;\n }\n\n initSession() {\n if (this.session) {\n this.session.init();\n }\n }\n\n get sessionId() {\n if (this.session) {\n return this.session.session.id;\n }\n return null;\n }\n\n get resource() {\n return {\n attributes: {\n ...(this.options.resource || {}),\n 'rollbar.environment':\n this.options.payload?.environment ?? this.options.environment,\n },\n };\n }\n\n get scope() {\n return {\n name: 'rollbar-browser-js',\n version: this.options.version,\n };\n }\n\n idGen(bytes = 16) {\n return id.gen(bytes);\n }\n\n createTracer() {\n this.contextManager = new ContextManager();\n this.exporter = new SpanExporter(this.api, this.options);\n this.spanProcessor = new SpanProcessor(this.exporter, this.options.tracing);\n this.tracer = new Tracer(this, this.spanProcessor);\n }\n\n getTracer() {\n return this.tracer;\n }\n\n addSpanTransform(transformFn) {\n this.spanProcessor.addTransform(transformFn);\n }\n\n getSpan(context = this.contextManager.active()) {\n return context.getValue(SPAN_KEY);\n }\n\n setSpan(context = this.contextManager.active(), span) {\n return context.setValue(SPAN_KEY, span);\n }\n\n startSpan(name, options = {}, context = this.contextManager.active()) {\n return this.tracer.startSpan(name, options, context);\n }\n\n with(context, fn, thisArg, ...args) {\n return this.contextManager.with(context, fn, thisArg, ...args);\n }\n\n withSpan(name, options, fn, thisArg) {\n const span = this.startSpan(name, options);\n return this.with(\n this.setSpan(this.contextManager.active(), span),\n fn,\n thisArg,\n span,\n );\n }\n}\n","import traverse from './utility/traverse.js';\nimport * as _ from './utility.js';\n\nfunction raw(payload, jsonBackup) {\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction selectFrames(frames, range) {\n var len = frames.length;\n if (len > range * 2) {\n return frames.slice(0, range).concat(frames.slice(len - range));\n }\n return frames;\n}\n\nfunction truncateFrames(payload, jsonBackup, range) {\n range = typeof range === 'undefined' ? 30 : range;\n var body = payload.data.body;\n var frames;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (const trace of chain) {\n frames = trace.frames;\n frames = selectFrames(frames, range);\n trace.frames = frames;\n }\n } else if (body.trace) {\n frames = body.trace.frames;\n frames = selectFrames(frames, range);\n body.trace.frames = frames;\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction maybeTruncateValue(len, val) {\n if (!val) {\n return val;\n }\n if (val.length > len) {\n return val.slice(0, len - 3).concat('...');\n }\n return val;\n}\n\nfunction truncateStrings(len, payload, jsonBackup) {\n function truncator(k, v, seen) {\n switch (_.typeName(v)) {\n case 'string':\n return maybeTruncateValue(len, v);\n case 'object':\n case 'array':\n return traverse(v, truncator, seen);\n default:\n return v;\n }\n }\n payload = traverse(payload, truncator);\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction truncateTraceData(traceData) {\n if (traceData.exception) {\n delete traceData.exception.description;\n traceData.exception.message = maybeTruncateValue(\n 255,\n traceData.exception.message,\n );\n }\n traceData.frames = selectFrames(traceData.frames, 1);\n return traceData;\n}\n\nfunction minBody(payload, jsonBackup) {\n var body = payload.data.body;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (const [index, trace] of chain.entries()) {\n chain[index] = truncateTraceData(trace);\n }\n } else if (body.trace) {\n body.trace = truncateTraceData(body.trace);\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction needsTruncation(payload, maxSize) {\n return _.maxByteSize(payload) > maxSize;\n}\n\nfunction truncate(payload, jsonBackup, maxSize) {\n maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize;\n var strategies = [\n raw,\n truncateFrames,\n truncateStrings.bind(null, 1024),\n truncateStrings.bind(null, 512),\n truncateStrings.bind(null, 256),\n minBody,\n ];\n var strategy, results, result;\n\n while ((strategy = strategies.shift())) {\n results = strategy(payload, jsonBackup);\n payload = results[0];\n result = results[1];\n if (result.error || !needsTruncation(result.value, maxSize)) {\n return result;\n }\n }\n return result;\n}\n\nexport default {\n truncate,\n\n /* for testing */\n raw,\n truncateFrames,\n truncateStrings,\n maybeTruncateValue,\n};\n","import * as _ from './utility.js';\n\nfunction buildPayload(data) {\n if (!_.isType(data.context, 'string')) {\n var contextResult = _.stringify(data.context);\n if (contextResult.error) {\n data.context = \"Error: could not serialize 'context'\";\n } else {\n data.context = contextResult.value || '';\n }\n if (data.context.length > 255) {\n data.context = data.context.substr(0, 255);\n }\n }\n return {\n data: data,\n };\n}\n\nfunction getTransportFromOptions(options, defaults, url) {\n var hostname = defaults.hostname;\n var protocol = defaults.protocol;\n var port = defaults.port;\n var path = defaults.path;\n var search = defaults.search;\n var timeout = options.timeout;\n var transport = detectTransport(options);\n\n var proxy = options.proxy;\n if (options.endpoint) {\n var opts = url.parse(options.endpoint);\n hostname = opts.hostname;\n protocol = opts.protocol;\n port = opts.port;\n path = opts.pathname;\n search = opts.search;\n }\n return {\n timeout: timeout,\n hostname: hostname,\n protocol: protocol,\n port: port,\n path: path,\n search: search,\n proxy: proxy,\n transport: transport,\n };\n}\n\nfunction detectTransport(options) {\n var gWindow =\n (typeof window !== 'undefined' && window) ||\n (typeof self !== 'undefined' && self);\n var transport = options.defaultTransport || 'xhr';\n if (typeof gWindow.fetch === 'undefined') transport = 'xhr';\n if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch';\n return transport;\n}\n\nfunction transportOptions(transport, method) {\n var protocol = transport.protocol || 'https:';\n var port =\n transport.port ||\n (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined);\n var hostname = transport.hostname;\n var path = transport.path;\n var timeout = transport.timeout;\n var transportAPI = transport.transport;\n if (transport.search) {\n path = path + transport.search;\n }\n if (transport.proxy) {\n path = protocol + '//' + hostname + path;\n hostname = transport.proxy.host || transport.proxy.hostname;\n port = transport.proxy.port;\n protocol = transport.proxy.protocol || protocol;\n }\n return {\n timeout: timeout,\n protocol: protocol,\n hostname: hostname,\n path: path,\n port: port,\n method: method,\n transport: transportAPI,\n };\n}\n\nfunction appendPathToPath(base, path) {\n var baseTrailingSlash = /\\/$/.test(base);\n var pathBeginningSlash = /^\\//.test(path);\n\n if (baseTrailingSlash && pathBeginningSlash) {\n path = path.substring(1);\n } else if (!baseTrailingSlash && !pathBeginningSlash) {\n path = '/' + path;\n }\n\n return base + path;\n}\n\nexport {\n buildPayload,\n getTransportFromOptions,\n transportOptions,\n appendPathToPath,\n};\n","import * as helpers from './apiUtility.js';\nimport { stringify, merge } from './utility.js';\n\nconst defaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/item/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\nconst OTLPDefaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/session/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\n/**\n * Api encapsulates methods of communicating with the Rollbar API. It is a\n * standard interface with some parts implemented differently for server or\n * browser contexts. It is an object that should be instantiated when used so\n * it can contain non-global options that may be different for another instance\n * of RollbarApi.\n */\nclass Api {\n /**\n * @param {Object} options - Configuration supplied from the parent Rollbar instance.\n * @param {string} options.accessToken - Token used to authenticate API calls.\n * @param {string} [options.endpoint] - Optional fully qualified URL overriding\n * the default `https://api.rollbar.com/api/1/item`.\n * @param {Object} [options.proxy] - Optional proxy descriptor containing:\n * `host`/`hostname` (required), `port`, and `protocol`.\n * @param {Object} transport - Adapter implementing `post` and `postJsonPayload`.\n * @param {Object} urllib - Minimal URL helper used for option normalization.\n * @param {Object} truncation - Optional truncation helper for payload size enforcement.\n */\n constructor(options, transport, urllib, truncation) {\n this.options = options;\n this.transport = transport;\n this.url = urllib;\n this.truncation = truncation;\n this.accessToken = options.accessToken;\n this.transportOptions = _getTransport(options, urllib);\n this.OTLPTransportOptions = _getOTLPTransport(options, urllib);\n }\n\n /**\n * Wraps transport.post in a Promise to support async/await\n *\n * @param {Object} options - Options for the API request\n * @param {string} options.accessToken - The access token for authentication\n * @param {Object} options.transportOptions - Options for the transport\n * @param {Object} options.payload - The data payload to send\n * @returns {Promise} A promise that resolves with the response or rejects with an error\n * @private\n */\n _postPromise({ accessToken, options, payload, headers }) {\n return new Promise((resolve, reject) => {\n this.transport.post({\n accessToken,\n options,\n payload,\n headers,\n callback: (err, resp) => (err ? reject(err) : resolve(resp)),\n });\n });\n }\n\n /**\n *\n * @param data\n * @param callback\n */\n postItem(data, callback) {\n const options = helpers.transportOptions(this.transportOptions, 'POST');\n const payload = helpers.buildPayload(data);\n\n // ensure the network request is scheduled after the current tick.\n setTimeout(() => {\n this.transport.post({\n accessToken: this.accessToken,\n options,\n payload,\n callback,\n });\n }, 0);\n }\n\n /**\n * Posts spans to the Rollbar API using the session endpoint\n *\n * @param {Array} payload - The spans to send\n * @returns {Promise} A promise that resolves with the API response\n */\n async postSpans(payload, headers = {}) {\n const options = helpers.transportOptions(this.OTLPTransportOptions, 'POST');\n\n return this._postPromise({\n accessToken: this.accessToken,\n options,\n payload,\n headers,\n });\n }\n\n /**\n *\n * @param data\n * @param callback\n */\n buildJsonPayload(data, callback) {\n const payload = helpers.buildPayload(data);\n\n let stringifyResult;\n if (this.truncation) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = stringify(payload);\n }\n\n if (stringifyResult.error) {\n if (callback) {\n callback(stringifyResult.error);\n }\n return null;\n }\n\n return stringifyResult.value;\n }\n\n /**\n *\n * @param jsonPayload\n * @param callback\n */\n postJsonPayload(jsonPayload, callback) {\n const transportOptions = helpers.transportOptions(\n this.transportOptions,\n 'POST',\n );\n this.transport.postJsonPayload(\n this.accessToken,\n transportOptions,\n jsonPayload,\n callback,\n );\n }\n\n configure(options) {\n const oldOptions = this.options;\n this.options = merge(oldOptions, options);\n this.transportOptions = _getTransport(this.options, this.url);\n this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url);\n if (this.options.accessToken !== undefined) {\n this.accessToken = this.options.accessToken;\n }\n return this;\n }\n}\n\nfunction _getTransport(options, url) {\n return helpers.getTransportFromOptions(options, defaultOptions, url);\n}\n\nfunction _getOTLPTransport(options, url) {\n options = { ...options, endpoint: options.tracing?.endpoint };\n return helpers.getTransportFromOptions(options, OTLPDefaultOptions, url);\n}\n\nexport default Api;\n","/**\n * Default options shared across platforms\n */\nexport const version = '3.0.0';\nexport const endpoint = 'api.rollbar.com/api/1/item/';\nexport const logLevel = 'debug';\nexport const reportLevel = 'debug';\nexport const uncaughtErrorLevel = 'error';\nexport const maxItems = 0;\nexport const itemsPerMin = 60;\n\nexport const commonScrubFields = [\n 'pw',\n 'pass',\n 'passwd',\n 'password',\n 'secret',\n 'confirm_password',\n 'confirmPassword',\n 'password_confirmation',\n 'passwordConfirmation',\n 'access_token',\n 'accessToken',\n 'X-Rollbar-Access-Token',\n 'secret_key',\n 'secretKey',\n 'secretToken',\n];\n\nexport const apiScrubFields = [\n 'api_key',\n 'authenticity_token',\n 'oauth_token',\n 'token',\n 'user_session_secret',\n];\n\nexport const requestScrubFields = [\n 'request.session.csrf',\n 'request.session._csrf',\n 'request.params._csrf',\n 'request.cookie',\n 'request.cookies',\n];\n\nexport const commonScrubHeaders = [\n 'authorization',\n 'www-authorization',\n 'http_authorization',\n 'omniauth.auth',\n 'cookie',\n 'oauth-access-token',\n 'x-access-token',\n 'x_csrf_token',\n 'http_x_csrf_token',\n 'x-csrf-token',\n];\n\n// For backward compatibility with default export\nexport default {\n version,\n endpoint,\n logLevel,\n reportLevel,\n uncaughtErrorLevel,\n maxItems,\n itemsPerMin,\n};\n","const FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\nfunction parse(error, options) {\n if (typeof error.stacktrace !== \"undefined\" || typeof error[\"opera#sourceloc\"] !== \"undefined\")\n return parseOpera(error, options);\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIE(error, options);\n else if (error.stack)\n return parseFFOrSafari(error, options);\n else if (options?.allowEmpty)\n return [];\n else\n throw new Error(\"Cannot parse given Error object\");\n}\nfunction parseStack(stackString, options) {\n if (stackString.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIeString(stackString, options);\n else\n return parseFFOrSafariString(stackString, options);\n}\nfunction extractLocation(urlLike) {\n if (!urlLike.includes(\":\"))\n return [urlLike, undefined, undefined];\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n const parts = regExp.exec(urlLike.replace(/[()]/g, \"\"));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n}\nfunction applySlice(lines, options) {\n if (options && options.slice != null) {\n if (Array.isArray(options.slice))\n return lines.slice(options.slice[0], options.slice[1]);\n return lines.slice(0, options.slice);\n }\n return lines;\n}\nfunction parseV8OrIE(error, options) {\n return parseV8OrIeString(error.stack, options);\n}\nfunction parseV8OrIeString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\"(eval \")) {\n line = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(,.*$)/g, \"\");\n }\n let sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\").replace(/^.*?\\s+/, \"\");\n const location = sanitizedLine.match(/ (\\(.+\\)$)/);\n sanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n const locationParts = extractLocation(location ? location[1] : sanitizedLine);\n const functionName = location && sanitizedLine || undefined;\n const fileName = [\"eval\", \"\"].includes(locationParts[0]) ? undefined : locationParts[0];\n return {\n function: functionName,\n file: fileName,\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\nfunction parseFFOrSafari(error, options) {\n return parseFFOrSafariString(error.stack, options);\n}\nfunction parseFFOrSafariString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\" > eval\"))\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, \":$1\");\n if (!line.includes(\"@\") && !line.includes(\":\")) {\n return {\n function: line\n };\n } else {\n const functionNameRegex = /(([^\\n\\r\"\\u2028\\u2029]*\".[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*(?:@[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*)*(?:[\\n\\r\\u2028\\u2029][^@]*)?)?[^@]*)@/;\n const matches = line.match(functionNameRegex);\n const functionName = matches && matches[1] ? matches[1] : undefined;\n const locationParts = extractLocation(line.replace(functionNameRegex, \"\"));\n return {\n function: functionName,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n }\n });\n}\nfunction parseOpera(e, options) {\n if (!e.stacktrace || e.message.includes(\"\\n\") && e.message.split(\"\\n\").length > e.stacktrace.split(\"\\n\").length)\n return parseOpera9(e);\n else if (!e.stack)\n return parseOpera10(e);\n else\n return parseOpera11(e, options);\n}\nfunction parseOpera9(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n const lines = e.message.split(\"\\n\");\n const result = [];\n for (let i = 2, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n file: match[2],\n line: +match[1],\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera10(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n const lines = e.stacktrace.split(\"\\n\");\n const result = [];\n for (let i = 0, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n function: match[3] || undefined,\n file: match[2],\n line: match[1] ? +match[1] : undefined,\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera11(error, options) {\n const filtered = applySlice(\n // @ts-expect-error missing stack property\n error.stack.split(\"\\n\").filter((line) => {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }),\n options\n );\n return filtered.map((line) => {\n const tokens = line.split(\"@\");\n const locationParts = extractLocation(tokens.pop());\n const functionCall = tokens.shift() || \"\";\n const functionName = functionCall.replace(//, \"$2\").replace(/\\([^)]*\\)/g, \"\") || undefined;\n let argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/))\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, \"$1\");\n const args = argsRaw === undefined || argsRaw === \"[arguments not available]\" ? undefined : argsRaw.split(\",\");\n return {\n function: functionName,\n args,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\n\nexport { extractLocation, parse, parseFFOrSafari, parseFFOrSafariString, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseStack, parseV8OrIE, parseV8OrIeString };\n","import { parse as parse$1, parseV8OrIE as parseV8OrIE$1, parseFFOrSafari as parseFFOrSafari$1, parseOpera as parseOpera$1, parseOpera9 as parseOpera9$1, parseOpera10 as parseOpera10$1, parseOpera11 as parseOpera11$1 } from './lite.mjs';\nexport { extractLocation } from './lite.mjs';\n\nfunction stackframesLiteToStackframes(liteStackframes) {\n return liteStackframes.map((liteStackframe) => {\n return {\n functionName: liteStackframe.function,\n args: liteStackframe.args,\n fileName: liteStackframe.file,\n lineNumber: liteStackframe.line,\n columnNumber: liteStackframe.col,\n source: liteStackframe.raw\n };\n });\n}\nfunction parse(error, options) {\n return stackframesLiteToStackframes(parse$1(error, options));\n}\nfunction parseV8OrIE(error) {\n return stackframesLiteToStackframes(parseV8OrIE$1(error));\n}\nfunction parseFFOrSafari(error) {\n return stackframesLiteToStackframes(parseFFOrSafari$1(error));\n}\nfunction parseOpera(e) {\n return stackframesLiteToStackframes(parseOpera$1(e));\n}\nfunction parseOpera9(e) {\n return stackframesLiteToStackframes(parseOpera9$1(e));\n}\nfunction parseOpera10(e) {\n return stackframesLiteToStackframes(parseOpera10$1(e));\n}\nfunction parseOpera11(error) {\n return stackframesLiteToStackframes(parseOpera11$1(error));\n}\n\nexport { parse, parseFFOrSafari, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseV8OrIE };\n","import { parse as parseErrorStack } from 'error-stack-parser-es';\n\nvar UNKNOWN_FUNCTION = '?';\nvar ERR_CLASS_REGEXP = new RegExp(\n '^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): ',\n);\n\nfunction guessFunctionName() {\n return UNKNOWN_FUNCTION;\n}\n\nfunction gatherContext() {\n return null;\n}\n\nfunction Frame(stackFrame) {\n var data = {};\n\n data._stackFrame = stackFrame;\n\n data.url = stackFrame.fileName;\n data.line = stackFrame.lineNumber;\n data.func = stackFrame.functionName;\n data.column = stackFrame.columnNumber;\n data.args = stackFrame.args;\n\n data.context = gatherContext();\n\n return data;\n}\n\nfunction Stack(exception, skip) {\n function getStack() {\n var parserStack = [];\n\n skip = skip || 0;\n\n try {\n parserStack = parseErrorStack(exception);\n } catch (_e) {\n parserStack = [];\n }\n\n var stack = [];\n\n for (var i = skip; i < parserStack.length; i++) {\n stack.push(new Frame(parserStack[i]));\n }\n\n return stack;\n }\n\n return {\n stack: getStack(),\n message: exception.message,\n name: _mostSpecificErrorName(exception),\n rawStack: exception.stack,\n rawException: exception,\n };\n}\n\nfunction parse(e, skip) {\n var err = e;\n\n if (err.nested || err.cause) {\n var traceChain = [];\n while (err) {\n traceChain.push(new Stack(err, skip));\n err = err.nested || err.cause;\n\n skip = 0; // Only apply skip value to primary error\n }\n\n // Return primary error with full trace chain attached.\n traceChain[0].traceChain = traceChain;\n return traceChain[0];\n } else {\n return new Stack(err, skip);\n }\n}\n\nfunction guessErrorClass(errMsg) {\n if (!errMsg || !errMsg.match) {\n return ['Unknown error. There was no error message to display.', ''];\n }\n var errClassMatch = errMsg.match(ERR_CLASS_REGEXP);\n var errClass = '(unknown)';\n\n if (errClassMatch) {\n errClass = errClassMatch[errClassMatch.length - 1];\n errMsg = errMsg.replace(\n (errClassMatch[errClassMatch.length - 2] || '') + errClass + ':',\n '',\n );\n errMsg = errMsg.replace(/(^[\\s]+|[\\s]+$)/g, '');\n }\n return [errClass, errMsg];\n}\n\n// * Prefers any value over an empty string\n// * Prefers any value over 'Error' where possible\n// * Prefers name over constructor.name when both are more specific than 'Error'\nfunction _mostSpecificErrorName(error) {\n var name = error.name && error.name.length && error.name;\n var constructorName =\n error.constructor.name &&\n error.constructor.name.length &&\n error.constructor.name;\n\n if (!name || !constructorName) {\n return name || constructorName;\n }\n\n if (name === 'Error') {\n return constructorName;\n }\n return name;\n}\n\nexport default {\n guessFunctionName,\n guessErrorClass,\n gatherContext,\n parse,\n Stack,\n Frame,\n};\n","import * as _ from './utility.js';\n\nfunction checkLevel(item, settings) {\n var level = item.level;\n var levelVal = _.LEVELS[level] || 0;\n var reportLevel = settings.reportLevel;\n var reportLevelVal = _.LEVELS[reportLevel] || 0;\n\n if (levelVal < reportLevelVal) {\n return false;\n }\n return true;\n}\n\nfunction userCheckIgnore(logger) {\n return function (item, settings) {\n var isUncaught = Boolean(item._isUncaught);\n delete item._isUncaught;\n var args = item._originalArgs;\n delete item._originalArgs;\n try {\n if (_.isFunction(settings.onSendCallback)) {\n settings.onSendCallback(isUncaught, args, item);\n }\n } catch (e) {\n settings.onSendCallback = null;\n logger.error('Error while calling onSendCallback, removing', e);\n }\n try {\n if (\n _.isFunction(settings.checkIgnore) &&\n settings.checkIgnore(isUncaught, args, item)\n ) {\n return false;\n }\n } catch (e) {\n settings.checkIgnore = null;\n logger.error('Error while calling custom checkIgnore(), removing', e);\n }\n return true;\n };\n}\n\nfunction urlIsNotBlockListed(logger) {\n return function (item, settings) {\n return !urlIsOnAList(item, settings, 'blocklist', logger);\n };\n}\n\nfunction urlIsSafeListed(logger) {\n return function (item, settings) {\n return urlIsOnAList(item, settings, 'safelist', logger);\n };\n}\n\nfunction matchFrames(trace, list, block) {\n if (!trace) {\n return !block;\n }\n\n var frames = trace.frames;\n\n if (!frames || frames.length === 0) {\n return !block;\n }\n\n var frame, filename, url, urlRegex;\n var listLength = list.length;\n var frameLength = frames.length;\n for (var i = 0; i < frameLength; i++) {\n frame = frames[i];\n filename = frame.filename;\n\n if (!_.isType(filename, 'string')) {\n return !block;\n }\n\n for (var j = 0; j < listLength; j++) {\n url = list[j];\n urlRegex = new RegExp(url);\n\n if (urlRegex.test(filename)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction urlIsOnAList(item, settings, safeOrBlock, logger) {\n // safelist is the default\n var block = false;\n if (safeOrBlock === 'blocklist') {\n block = true;\n }\n\n var list, traces;\n try {\n list = block ? settings.hostBlockList : settings.hostSafeList;\n traces = _.get(item, 'body.trace_chain') || [_.get(item, 'body.trace')];\n\n // These two checks are important to come first as they are defaults\n // in case the list is missing or the trace is missing or not well-formed\n if (!list || list.length === 0) {\n return !block;\n }\n if (traces.length === 0 || !traces[0]) {\n return !block;\n }\n\n var tracesLength = traces.length;\n for (var i = 0; i < tracesLength; i++) {\n if (matchFrames(traces[i], list, block)) {\n return true;\n }\n }\n } catch (\n e\n /* istanbul ignore next */\n ) {\n if (block) {\n settings.hostBlockList = null;\n } else {\n settings.hostSafeList = null;\n }\n var listName = block ? 'hostBlockList' : 'hostSafeList';\n logger.error(\n \"Error while reading your configuration's \" +\n listName +\n ' option. Removing custom ' +\n listName +\n '.',\n e,\n );\n return !block;\n }\n return false;\n}\n\nfunction messageIsIgnored(logger) {\n return function (item, settings) {\n var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages;\n\n try {\n messageIsIgnored = false;\n ignoredMessages = settings.ignoredMessages;\n\n if (!ignoredMessages || ignoredMessages.length === 0) {\n return true;\n }\n\n messages = messagesFromItem(item);\n\n if (messages.length === 0) {\n return true;\n }\n\n len = ignoredMessages.length;\n for (i = 0; i < len; i++) {\n rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi');\n\n for (j = 0; j < messages.length; j++) {\n messageIsIgnored = rIgnoredMessage.test(messages[j]);\n\n if (messageIsIgnored) {\n return false;\n }\n }\n }\n } catch (\n _e\n /* istanbul ignore next */\n ) {\n settings.ignoredMessages = null;\n logger.error(\n \"Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages.\",\n );\n }\n\n return true;\n };\n}\n\nfunction messagesFromItem(item) {\n var body = item.body;\n var messages = [];\n\n // The payload schema only allows one of trace_chain, message, or trace.\n // However, existing test cases are based on having both trace and message present.\n // So here we preserve the ability to collect strings from any combination of these keys.\n if (body.trace_chain) {\n var traceChain = body.trace_chain;\n for (const trace of traceChain) {\n messages.push(_.get(trace, 'exception.message'));\n }\n }\n if (body.trace) {\n messages.push(_.get(body, 'trace.exception.message'));\n }\n if (body.message) {\n messages.push(_.get(body, 'message.body'));\n }\n return messages;\n}\n\nexport {\n checkLevel,\n userCheckIgnore,\n urlIsNotBlockListed,\n urlIsSafeListed,\n messageIsIgnored,\n};\n","import { merge, isFunction } from './utility.js';\n\n/*\n * Notifier - delegates between the client exposed API, the chain of transforms\n * necessary to turn an item into something that can be sent to Rollbar, and the\n * queue which handles the communcation with the Rollbar API servers.\n */\nexport default class Notifier {\n /**\n *\n * @param {Object} queue - an object that conforms to the interface:\n * `addItem(item, callback)`\n * @param {Object} options - an object representing the options to be set for\n * this notifier, this should have any defaults already set by the caller\n */\n constructor(queue, options) {\n this.queue = queue;\n this.options = options;\n this.transforms = [];\n this.diagnostic = {};\n }\n\n /**\n * configure - updates the options for this notifier with the passed in object\n *\n * @param {Object} options - an object which gets merged with the current\n * options set on this notifier\n * @returns this\n */\n configure(options) {\n this.queue?.configure(options);\n const oldOptions = this.options;\n this.options = merge(oldOptions, options);\n return this;\n }\n\n /**\n * Adds a transform onto the end of the queue of transforms for this notifier\n *\n * @param {Function} transform - a function which takes three arguments:\n * - item: An Object representing the data to eventually be sent to Rollbar\n * - options: The current value of the options for this notifier\n * - callback: `function(err: (Null|Error), item: (Null|Object))` the\n * transform must call this callback with a null value for error if it\n * wants the processing chain to continue, otherwise with an error to\n * terminate the processing. The item should be the updated item after\n * this transform is finished modifying it.\n */\n addTransform(transform) {\n if (isFunction(transform)) {\n this.transforms.push(transform);\n }\n return this;\n }\n\n /**\n * The internal log function which applies the configured transforms and then\n * pushes onto the queue to be sent to the backend.\n *\n * @param {Object} item - An object with the following structure:\n * - message [String] - An optional string to be sent to rollbar\n * - error [Error] - An optional error\n * @param {Function} callback - A function of type `function(err, resp)` which\n * will be called with exactly one null argument and one non-null argument.\n * The callback will be called once, either during the transform stage if\n * an error occurs inside a transform, or in response to the communication\n * with the backend. The second argument will be the response from the\n * backend in case of success.\n */\n log(item, callback) {\n callback = isFunction(callback) ? callback : () => {};\n\n if (!this.options.enabled) {\n return callback(new Error('Rollbar is not enabled'), null);\n }\n\n this.queue.addPendingItem(item);\n const originalError = item.err;\n this._applyTransforms(item, (err, i) => {\n if (err) {\n this.queue.removePendingItem(item);\n return callback(err, null);\n }\n this.queue.addItem(i, callback, originalError, item);\n });\n }\n\n /* Internal */\n\n /**\n * Applies the transforms that have been added to this notifier sequentially.\n * See `addTransform` for more information.\n *\n * @param {Object} item - An item to be transformed\n * @param {Function} callback - A function of type `function(err, item)` which\n * will be called with a non-null error and a null item in the case of a\n * transform failure, or a null error and non-null item after all\n * transforms have been applied.\n */\n _applyTransforms(item, callback) {\n let transformIndex = -1;\n const transformsLength = this.transforms.length;\n const transforms = this.transforms;\n const options = this.options;\n\n const next = (err, i) => {\n if (err) {\n callback(err, null);\n return;\n }\n\n transformIndex++;\n\n if (transformIndex === transformsLength) {\n callback(null, i);\n return;\n }\n\n transforms[transformIndex](i, options, next);\n };\n\n next(null, item);\n }\n}\n","import * as _ from './utility.js';\n\n/**\n * Queue - an object which handles which handles a queue of items to be sent to Rollbar.\n * This object handles rate limiting via a passed in rate limiter, retries based on connection\n * errors, and filtering of items based on a set of configurable predicates. The communication to\n * the backend is performed via a given API object.\n */\nclass Queue {\n /**\n * @param rateLimiter - An object which conforms to the interface\n * `rateLimiter.shouldSend(item) -> bool`\n * @param api - An object which conforms to the interface\n * `api.postItem(payload, function(err, response))`\n * @param logger - An object used to log verbose messages if desired\n * @param options - see `Queue.prototype.configure`\n * @param replay - Optional `Replay` for coordinating session replay with error occurrences\n */\n constructor(rateLimiter, api, logger, options, replay) {\n this.rateLimiter = rateLimiter;\n this.api = api;\n this.logger = logger;\n this.options = options;\n this.replay = replay;\n this.predicates = [];\n this.pendingItems = [];\n this.pendingRequests = [];\n this.retryQueue = [];\n this.retryHandle = null;\n this.waitCallback = null;\n this.waitIntervalID = null;\n }\n\n /**\n * configure - updates the options this queue uses\n *\n * @param options\n */\n configure(options) {\n this.api?.configure(options);\n const oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n return this;\n }\n\n /**\n * addPredicate - adds a predicate to the end of the list of predicates for this queue\n *\n * @param predicate - function(item, options) -> (bool|{err: Error})\n * Returning true means that this predicate passes and the item is okay to go on the queue\n * Returning false means do not add the item to the queue, but it is not an error\n * Returning {err: Error} means do not add the item to the queue, and the given error explains why\n * Returning {err: undefined} is equivalent to returning true but don't do that\n */\n addPredicate(predicate) {\n if (_.isFunction(predicate)) {\n this.predicates.push(predicate);\n }\n return this;\n }\n\n addPendingItem(item) {\n this.pendingItems.push(item);\n }\n\n removePendingItem(item) {\n const idx = this.pendingItems.indexOf(item);\n if (idx !== -1) {\n this.pendingItems.splice(idx, 1);\n }\n }\n\n /**\n * addItem - Send an item to the Rollbar API if all of the predicates are satisfied\n *\n * @param item - Item instance with the payload to send to the backend\n * @param callback - function(error, repsonse) which will be called with the response from the API\n * in the case of a success, otherwise response will be null and error will have a value. If both\n * error and response are null then the item was stopped by a predicate which did not consider this\n * to be an error condition, but nonetheless did not send the item to the API.\n * @param originalError - The original error before any transformations that is to be logged if any\n * @param originalItem - The original item before transforms, used in pendingItems queue\n */\n addItem(item, callback, originalError, originalItem) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {\n return;\n };\n }\n const data = item.data;\n const predicateResult = this._applyPredicates(data);\n if (predicateResult.stop) {\n this.removePendingItem(originalItem);\n callback(predicateResult.err);\n return;\n }\n this._maybeLog(data, originalError);\n this.removePendingItem(originalItem);\n if (!this.options.transmit) {\n callback(new Error('Transmit disabled'));\n return;\n }\n\n if (this.replay && data.body) {\n item.replayId = this.replay.capture(null, data.uuid, {\n type: 'occurrence',\n level: item.level,\n });\n\n if (item.replayId) {\n _.addItemAttributes(item.data, [\n { key: 'replay_id', value: item.replayId },\n ]);\n }\n }\n\n this.pendingRequests.push(data);\n try {\n this._makeApiRequest(data, (err, resp, headers) => {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers);\n }\n\n callback(err, resp);\n });\n } catch (err) {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay?.discard(item.replayId);\n }\n\n callback(err);\n }\n }\n\n /**\n * wait - Stop any further errors from being added to the queue, and get called back when all items\n * currently processing have finished sending to the backend.\n *\n * @param callback - function() called when all pending items have been sent\n */\n wait(callback) {\n if (!_.isFunction(callback)) {\n return;\n }\n this.waitCallback = callback;\n if (this._maybeCallWait()) {\n return;\n }\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitIntervalID = setInterval(() => {\n this._maybeCallWait();\n }, 500);\n }\n\n /**\n * Sequentially applies the predicates that have been added to the queue to the\n * given item with the currently configured options.\n *\n * @param item - An item in the queue\n * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue,\n * the error value should be passed up to a callbak if we are stopping.\n */\n _applyPredicates(item) {\n let p = null;\n for (let i = 0, len = this.predicates.length; i < len; i++) {\n p = this.predicates[i](item, this.options);\n if (!p || p.err !== undefined) {\n return { stop: true, err: p.err };\n }\n }\n return { stop: false, err: null };\n }\n\n /**\n * Send an item to Rollbar, callback when done, if there is an error make an\n * effort to retry if we are configured to do so.\n *\n * @param item - an item ready to send to the backend\n * @param callback - function(err, response)\n */\n _makeApiRequest(item, callback) {\n const rateLimitResponse = this.rateLimiter.shouldSend(item);\n if (rateLimitResponse.shouldSend) {\n this.api.postItem(item, (err, resp, headers) => {\n if (err) {\n this._maybeRetry(err, item, callback);\n } else {\n callback(err, resp, headers);\n }\n });\n } else if (rateLimitResponse.error) {\n callback(rateLimitResponse.error);\n } else {\n this.api.postItem(rateLimitResponse.payload, callback);\n }\n }\n\n // These are errors basically mean there is no internet connection\n static RETRIABLE_ERRORS = [\n 'ECONNRESET',\n 'ENOTFOUND',\n 'ESOCKETTIMEDOUT',\n 'ETIMEDOUT',\n 'ECONNREFUSED',\n 'EHOSTUNREACH',\n 'EPIPE',\n 'EAI_AGAIN',\n ];\n\n /**\n * Given the error returned by the API, decide if we should retry or just callback\n * with the error.\n *\n * @param err - an error returned by the API transport\n * @param item - the item that was trying to be sent when this error occured\n * @param callback - function(err, response)\n */\n _maybeRetry(err, item, callback) {\n let shouldRetry = false;\n if (this.options.retryInterval) {\n for (let i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) {\n if (err.code === Queue.RETRIABLE_ERRORS[i]) {\n shouldRetry = true;\n break;\n }\n }\n if (shouldRetry && _.isFiniteNumber(this.options.maxRetries)) {\n item.retries = item.retries ? item.retries + 1 : 1;\n if (item.retries > this.options.maxRetries) {\n shouldRetry = false;\n }\n }\n }\n if (shouldRetry) {\n this._retryApiRequest(item, callback);\n } else {\n callback(err);\n }\n }\n\n /**\n * Add an item and a callback to a queue and possibly start a timer to process\n * that queue based on the retryInterval in the options for this queue.\n *\n * @param item - an item that failed to send due to an error we deem retriable\n * @param callback - function(err, response)\n */\n _retryApiRequest(item, callback) {\n this.retryQueue.push({ item, callback });\n\n if (!this.retryHandle) {\n this.retryHandle = setInterval(() => {\n while (this.retryQueue.length) {\n const retryObject = this.retryQueue.shift();\n this._makeApiRequest(retryObject.item, retryObject.callback);\n }\n }, this.options.retryInterval);\n }\n }\n\n /**\n * Removes the item from the pending request queue, this queue is used to\n * enable to functionality of providing a callback that clients can pass to `wait` to be notified\n * when the pending request queue has been emptied. This must be called when the API finishes\n * processing this item. If a `wait` callback is configured, it is called by this function.\n *\n * @param item - the item previously added to the pending request queue\n */\n _dequeuePendingRequest(item) {\n const idx = this.pendingRequests.indexOf(item);\n if (idx !== -1) {\n this.pendingRequests.splice(idx, 1);\n this._maybeCallWait();\n }\n }\n\n _maybeLog(data, originalError) {\n if (this.logger && this.options.verbose) {\n let message =\n originalError ||\n _.get(data, 'body.trace.exception.message') ||\n _.get(data, 'body.trace_chain.0.exception.message');\n if (message) {\n this.logger.error(message);\n return;\n }\n message = _.get(data, 'body.message.body');\n if (message) {\n this.logger.log(message);\n }\n }\n }\n\n _maybeCallWait() {\n if (\n _.isFunction(this.waitCallback) &&\n this.pendingItems.length === 0 &&\n this.pendingRequests.length === 0\n ) {\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitCallback();\n return true;\n }\n return false;\n }\n}\n\nexport default Queue;\n","/*\n * RateLimiter - encapsulates the logic for counting items sent to Rollbar.\n *\n * @param options - the same options that are accepted by configureGlobal offered as a convenience\n */\nclass RateLimiter {\n static globalSettings = {\n startTime: Date.now(),\n maxItems: undefined,\n itemsPerMinute: undefined,\n };\n\n constructor(options = {}) {\n this.startTime = Date.now();\n this.counter = 0;\n this.perMinCounter = 0;\n this.platform = null;\n this.platformOptions = {};\n this.configureGlobal(options);\n }\n\n /*\n * configureGlobal - set the global rate limiter options\n *\n * @param options - Only the following values are recognized:\n * startTime: a timestamp of the form returned by (new Date()).getTime()\n * maxItems: the maximum items\n * itemsPerMinute: the max number of items to send in a given minute\n */\n configureGlobal(options = {}) {\n const { startTime, maxItems, itemsPerMinute } = options;\n\n if (startTime !== undefined) {\n RateLimiter.globalSettings.startTime = startTime;\n }\n if (maxItems !== undefined) {\n RateLimiter.globalSettings.maxItems = maxItems;\n }\n if (itemsPerMinute !== undefined) {\n RateLimiter.globalSettings.itemsPerMinute = itemsPerMinute;\n }\n }\n\n /*\n * shouldSend - determine if we should send a given item based on rate limit settings\n *\n * @param item - the item we are about to send\n * @returns An object with the following structure:\n * error: (Error|null)\n * shouldSend: bool\n * payload: (Object|null)\n * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and\n * exactly one of error or payload will be non-null. If error is non-null, the returned Error will\n * describe the situation, but it means that we were already over a rate limit (either globally or\n * per minute) when this item was checked. If error is null, and therefore payload is non-null, it\n * means this item put us over the global rate limit and the payload should be sent to Rollbar in\n * place of the passed in item.\n */\n shouldSend(item, now = Date.now()) {\n const elapsedTime = now - this.startTime;\n if (elapsedTime < 0 || elapsedTime >= 60000) {\n this.startTime = now;\n this.perMinCounter = 0;\n }\n\n const globalRateLimit = RateLimiter.globalSettings.maxItems;\n const globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute;\n\n if (checkRate(item, globalRateLimit, this.counter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n `${globalRateLimit} max items reached`,\n false,\n );\n }\n\n if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n `${globalRateLimitPerMin} items per minute reached`,\n false,\n );\n }\n\n this.counter += 1;\n this.perMinCounter += 1;\n\n const underGlobalLimit = !checkRate(item, globalRateLimit, this.counter);\n const perMinute = underGlobalLimit;\n const shouldSend =\n underGlobalLimit &&\n !checkRate(item, globalRateLimitPerMin, this.perMinCounter);\n\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n null,\n shouldSend,\n globalRateLimit,\n globalRateLimitPerMin,\n perMinute,\n );\n }\n\n setPlatformOptions(platform, options) {\n this.platform = platform;\n this.platformOptions = options;\n }\n}\n\n/* Helpers */\n\nfunction checkRate(item, limit, counter) {\n return !item.ignoreRateLimit && limit >= 1 && counter > limit;\n}\n\nfunction shouldSendValue(\n platform,\n options,\n error,\n shouldSend,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n let payload = null;\n const errorResult = error ? new Error(error) : null;\n\n if (!errorResult && !shouldSend) {\n payload = rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n );\n }\n\n return { error: errorResult, shouldSend, payload };\n}\n\nfunction rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n const environment =\n options.environment || (options.payload && options.payload.environment);\n const msg = perMinute\n ? 'item per minute limit reached, ignoring errors until timeout'\n : 'maxItems has been hit, ignoring errors until reset.';\n const item = {\n body: {\n message: {\n body: msg,\n extra: {\n maxItems: globalRateLimit,\n itemsPerMinute: limitPerMin,\n },\n },\n },\n language: 'javascript',\n environment: environment,\n notifier: {\n version:\n (options.notifier && options.notifier.version) || options.version,\n },\n };\n if (platform === 'browser') {\n item.platform = 'browser';\n item.framework = 'browser-js';\n item.notifier.name = 'rollbar-browser-js';\n } else if (platform === 'server') {\n item.framework = options.framework || 'node-js';\n item.notifier.name = options.notifier.name;\n } else if (platform === 'react-native') {\n item.framework = options.framework || 'react-native';\n item.notifier.name = options.notifier.name;\n }\n return item;\n}\n\nexport default RateLimiter;\n","import Notifier from './notifier.js';\nimport Queue from './queue.js';\nimport RateLimiter from './rateLimiter.js';\nimport * as _ from './utility.js';\n\n/*\n * Rollbar - the interface to Rollbar\n *\n * @param options\n * @param api\n * @param logger\n */\nfunction Rollbar(options, api, logger, telemeter, tracing, replay, platform) {\n this.options = _.merge(options);\n this.logger = logger;\n Rollbar.rateLimiter.configureGlobal(this.options);\n Rollbar.rateLimiter.setPlatformOptions(platform, this.options);\n this.api = api;\n this.queue = new Queue(\n Rollbar.rateLimiter,\n api,\n logger,\n this.options,\n replay,\n );\n\n this.tracing = tracing;\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is created\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier = new Notifier(this.queue, this.options);\n this.telemeter = telemeter;\n setStackTraceLimit(options);\n this.lastError = null;\n this.lastErrorHash = 'none';\n}\n\nvar defaultOptions = {\n maxItems: 0,\n itemsPerMinute: 60,\n};\n\nRollbar.rateLimiter = new RateLimiter(defaultOptions);\n\nRollbar.prototype.global = function (options) {\n Rollbar.rateLimiter.configureGlobal(options);\n return this;\n};\n\nRollbar.prototype.configure = function (options, payloadData) {\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.merge(oldOptions, options, payload);\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is configured\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier && this.notifier.configure(this.options);\n this.telemeter && this.telemeter.configure(this.options);\n setStackTraceLimit(options);\n this.global(this.options);\n\n if (validateTracer(options.tracer)) {\n this.tracer = options.tracer;\n }\n\n return this;\n};\n\nRollbar.prototype.log = function (item) {\n var level = this._defaultLogLevel();\n return this._log(level, item);\n};\n\nRollbar.prototype.debug = function (item) {\n this._log('debug', item);\n};\n\nRollbar.prototype.info = function (item) {\n this._log('info', item);\n};\n\nRollbar.prototype.warn = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.warning = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.error = function (item) {\n this._log('error', item);\n};\n\nRollbar.prototype.critical = function (item) {\n this._log('critical', item);\n};\n\nRollbar.prototype.wait = function (callback) {\n this.queue.wait(callback);\n};\n\nRollbar.prototype.captureEvent = function (type, metadata, level) {\n return this.telemeter && this.telemeter.captureEvent(type, metadata, level);\n};\n\nRollbar.prototype.captureDomContentLoaded = function (ts) {\n return this.telemeter && this.telemeter.captureDomContentLoaded(ts);\n};\n\nRollbar.prototype.captureLoad = function (ts) {\n return this.telemeter && this.telemeter.captureLoad(ts);\n};\n\nRollbar.prototype.buildJsonPayload = function (item) {\n return this.api.buildJsonPayload(item);\n};\n\nRollbar.prototype.sendJsonPayload = function (jsonPayload) {\n this.api.postJsonPayload(jsonPayload);\n};\n\n/* Internal */\n\nRollbar.prototype._log = function (defaultLevel, item) {\n var callback;\n if (item.callback) {\n callback = item.callback;\n delete item.callback;\n }\n if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) {\n if (callback) {\n var error = new Error('ignored identical item');\n error.item = item;\n callback(error);\n }\n return;\n }\n try {\n item.level = item.level || defaultLevel;\n\n this._addItemAttributes(item);\n\n // Legacy OpenTracing support\n this._addTracingInfo(item);\n\n const telemeter = this.telemeter;\n if (telemeter) {\n telemeter._captureRollbarItem(item);\n item.telemetryEvents = telemeter.copyEvents() || [];\n }\n\n this.notifier.log(item, callback);\n } catch (e) {\n if (callback) {\n callback(e);\n }\n this.logger.error(e);\n }\n};\n\nRollbar.prototype._addItemAttributes = function (item) {\n const span = this.tracing?.getSpan();\n\n const attributes = [\n { key: 'session_id', value: this.tracing?.sessionId },\n { key: 'span_id', value: span?.spanId },\n { key: 'trace_id', value: span?.traceId },\n ];\n if (item._isUncaught) {\n attributes.push({ key: 'is_uncaught', value: 'true' });\n }\n _.addItemAttributes(item.data, attributes);\n\n span?.addEvent('rollbar.occurrence', [\n { key: 'rollbar.occurrence.uuid', value: item.uuid },\n ]);\n};\n\nRollbar.prototype._defaultLogLevel = function () {\n return this.options.logLevel || 'debug';\n};\n\nRollbar.prototype._sameAsLastError = function (item) {\n if (!item._isUncaught) {\n return false;\n }\n var itemHash = generateItemHash(item);\n if (this.lastErrorHash === itemHash) {\n return true;\n }\n this.lastError = item.err;\n this.lastErrorHash = itemHash;\n return false;\n};\n\nRollbar.prototype._addTracingInfo = function (item) {\n // Tracer validation occurs in the constructor\n // or in the Rollbar.prototype.configure methods\n if (this.tracer) {\n // add rollbar occurrence uuid to span\n var span = this.tracer.scope().active();\n\n if (validateSpan(span)) {\n span.setTag('rollbar.error_uuid', item.uuid);\n span.setTag('rollbar.has_error', true);\n span.setTag('error', true);\n span.setTag(\n 'rollbar.item_url',\n `https://rollbar.com/item/uuid/?uuid=${item.uuid}`,\n );\n span.setTag(\n 'rollbar.occurrence_url',\n `https://rollbar.com/occurrence/uuid/?uuid=${item.uuid}`,\n );\n\n // add span ID & trace ID to occurrence\n var opentracingSpanId = span.context().toSpanId();\n var opentracingTraceId = span.context().toTraceId();\n\n if (item.custom) {\n item.custom.opentracing_span_id = opentracingSpanId;\n item.custom.opentracing_trace_id = opentracingTraceId;\n } else {\n item.custom = {\n opentracing_span_id: opentracingSpanId,\n opentracing_trace_id: opentracingTraceId,\n };\n }\n }\n }\n};\n\nfunction generateItemHash(item) {\n var message = item.message || '';\n var stack = (item.err || {}).stack || String(item.err);\n return message + '::' + stack;\n}\n\n// Node.js, Chrome, Safari, and some other browsers support this property\n// which globally sets the number of stack frames returned in an Error object.\n// If a browser can't use it, no harm done.\nfunction setStackTraceLimit(options) {\n if (options.stackTraceLimit) {\n Error.stackTraceLimit = options.stackTraceLimit;\n }\n}\n\n/**\n * Validate the Tracer object provided to the Client\n * is valid for our Opentracing use case.\n * @param {opentracer.Tracer} tracer\n */\nfunction validateTracer(tracer) {\n if (!tracer) {\n return false;\n }\n\n if (!tracer.scope || typeof tracer.scope !== 'function') {\n return false;\n }\n\n var scope = tracer.scope();\n\n if (!scope || !scope.active || typeof scope.active !== 'function') {\n return false;\n }\n\n return true;\n}\n\n/**\n * Validate the Span object provided\n * @param {opentracer.Span} span\n */\nfunction validateSpan(span) {\n if (!span || !span.context || typeof span.context !== 'function') {\n return false;\n }\n\n var spanContext = span.context();\n\n if (\n !spanContext ||\n !spanContext.toSpanId ||\n !spanContext.toTraceId ||\n typeof spanContext.toSpanId !== 'function' ||\n typeof spanContext.toTraceId !== 'function'\n ) {\n return false;\n }\n\n return true;\n}\n\nexport default Rollbar;\n","/**\n * Default tracing options\n */\nexport default {\n enabled: false,\n endpoint: 'api.rollbar.com/api/1/session/',\n};\n","import * as _ from './utility.js';\n\nfunction itemToPayload(item, options, callback) {\n if (item._isUncaught) {\n item.data._isUncaught = true;\n }\n if (item._originalArgs) {\n item.data._originalArgs = item._originalArgs;\n }\n callback(null, item);\n}\n\nfunction addPayloadOptions(item, options, callback) {\n var payloadOptions = options.payload || {};\n if (payloadOptions.body) {\n delete payloadOptions.body;\n }\n\n item.data = _.merge(item.data, payloadOptions);\n callback(null, item);\n}\n\nfunction addTelemetryData(item, options, callback) {\n if (item.telemetryEvents) {\n _.set(item, 'data.body.telemetry', item.telemetryEvents);\n }\n callback(null, item);\n}\n\nfunction addMessageWithError(item, options, callback) {\n if (!item.message) {\n callback(null, item);\n return;\n }\n var tracePath = 'data.body.trace_chain.0';\n var trace = _.get(item, tracePath);\n if (!trace) {\n tracePath = 'data.body.trace';\n trace = _.get(item, tracePath);\n }\n if (trace) {\n if (!(trace.exception && trace.exception.description)) {\n _.set(item, tracePath + '.exception.description', item.message);\n callback(null, item);\n return;\n }\n var extra = _.get(item, tracePath + '.extra') || {};\n var newExtra = _.merge(extra, { message: item.message });\n _.set(item, tracePath + '.extra', newExtra);\n }\n callback(null, item);\n}\n\nfunction userTransform(logger) {\n return function (item, options, callback) {\n var newItem = _.merge(item);\n var response = null;\n try {\n if (_.isFunction(options.transform)) {\n response = options.transform(newItem.data, item);\n }\n } catch (e) {\n options.transform = null;\n logger.error(\n 'Error while calling custom transform() function. Removing custom transform().',\n e,\n );\n callback(null, item);\n return;\n }\n if (_.isPromise(response)) {\n response.then(\n function (promisedItem) {\n if (promisedItem) {\n newItem.data = promisedItem;\n }\n callback(null, newItem);\n },\n function (error) {\n callback(error, item);\n },\n );\n } else {\n callback(null, newItem);\n }\n };\n}\n\nfunction addConfigToPayload(item, options, callback) {\n if (!options.sendConfig) {\n return callback(null, item);\n }\n var configKey = '_rollbarConfig';\n var custom = _.get(item, 'data.custom') || {};\n custom[configKey] = options;\n item.data.custom = custom;\n callback(null, item);\n}\n\nfunction addFunctionOption(options, name) {\n if (_.isFunction(options[name])) {\n options[name] = options[name].toString();\n }\n}\n\nfunction addConfiguredOptions(item, options, callback) {\n var configuredOptions = options._configuredOptions;\n\n // These must be stringified or they'll get dropped during serialization.\n addFunctionOption(configuredOptions, 'transform');\n addFunctionOption(configuredOptions, 'checkIgnore');\n addFunctionOption(configuredOptions, 'onSendCallback');\n\n delete configuredOptions.accessToken;\n item.data.notifier.configured_options = configuredOptions;\n callback(null, item);\n}\n\nfunction addDiagnosticKeys(item, options, callback) {\n var diagnostic = _.merge(\n item.notifier.client.notifier.diagnostic,\n item.diagnostic,\n );\n\n if (_.get(item, 'err._isAnonymous')) {\n diagnostic.is_anonymous = true;\n }\n\n if (item._isUncaught) {\n diagnostic.is_uncaught = item._isUncaught;\n }\n\n if (item.err) {\n try {\n diagnostic.raw_error = {\n message: item.err.message,\n name: item.err.name,\n constructor_name: item.err.constructor && item.err.constructor.name,\n filename: item.err.fileName,\n line: item.err.lineNumber,\n column: item.err.columnNumber,\n stack: item.err.stack,\n };\n } catch (e) {\n diagnostic.raw_error = { failed: String(e) };\n }\n }\n\n item.data.notifier.diagnostic = _.merge(\n item.data.notifier.diagnostic,\n diagnostic,\n );\n callback(null, item);\n}\n\nexport {\n itemToPayload,\n addPayloadOptions,\n addTelemetryData,\n addMessageWithError,\n userTransform,\n addConfigToPayload,\n addConfiguredOptions,\n addDiagnosticKeys,\n};\n","/**\n * Default browser options\n */\nimport { commonScrubFields } from '../defaults.js';\n\nexport const scrubFields = [\n ...commonScrubFields,\n 'cc-number',\n 'card number',\n 'cardnumber',\n 'cardnum',\n 'ccnum',\n 'ccnumber',\n 'cc num',\n 'creditcardnumber',\n 'credit card number',\n 'newcreditcardnumber',\n 'new credit card',\n 'creditcardno',\n 'credit card no',\n 'card#',\n 'card #',\n 'cc-csc',\n 'cvc',\n 'cvc2',\n 'cvv2',\n 'ccv2',\n 'security code',\n 'card verification',\n 'name on credit card',\n 'name on card',\n 'nameoncard',\n 'cardholder',\n 'card holder',\n 'name des karteninhabers',\n 'ccname',\n 'card type',\n 'cardtype',\n 'cc type',\n 'cctype',\n 'payment type',\n 'expiration date',\n 'expirationdate',\n 'expdate',\n 'cc-exp',\n 'ccmonth',\n 'ccyear',\n];\n\n// For compatibility with existing code that expects default export with scrubFields property\nexport default { scrubFields };\n","function captureUncaughtExceptions(window, handler, shim) {\n if (!window) {\n return;\n }\n var oldOnError;\n\n if (typeof handler._rollbarOldOnError === 'function') {\n oldOnError = handler._rollbarOldOnError;\n } else if (window.onerror) {\n oldOnError = window.onerror;\n while (oldOnError._rollbarOldOnError) {\n oldOnError = oldOnError._rollbarOldOnError;\n }\n handler._rollbarOldOnError = oldOnError;\n }\n\n handler.handleAnonymousErrors();\n\n var fn = function () {\n var args = Array.prototype.slice.call(arguments, 0);\n _rollbarWindowOnError(window, handler, oldOnError, args);\n };\n if (shim) {\n fn._rollbarOldOnError = oldOnError;\n }\n window.onerror = fn;\n}\n\nfunction _rollbarWindowOnError(window, r, old, args) {\n if (window._rollbarWrappedError) {\n if (!args[4]) {\n args[4] = window._rollbarWrappedError;\n }\n if (!args[5]) {\n args[5] = window._rollbarWrappedError._rollbarContext;\n }\n window._rollbarWrappedError = null;\n }\n\n var ret = r.handleUncaughtException.apply(r, args);\n\n if (old) {\n old.apply(window, args);\n }\n\n // Let other chained onerror handlers above run before setting this.\n // If an error is thrown and caught within a chained onerror handler,\n // Error.prepareStackTrace() will see that one before the one we want.\n if (ret === 'anonymous') {\n r.anonymousErrorsPending += 1; // See Rollbar.prototype.handleAnonymousErrors()\n }\n}\n\nfunction captureUnhandledRejections(window, handler, shim) {\n if (!window) {\n return;\n }\n\n if (\n typeof window._rollbarURH === 'function' &&\n window._rollbarURH.belongsToShim\n ) {\n window.removeEventListener('unhandledrejection', window._rollbarURH);\n }\n\n var rejectionHandler = function (evt) {\n var reason, promise, detail;\n try {\n reason = evt.reason;\n } catch (_e) {\n reason = undefined;\n }\n try {\n promise = evt.promise;\n } catch (_e) {\n promise = '[unhandledrejection] error getting `promise` from event';\n }\n try {\n detail = evt.detail;\n if (!reason && detail) {\n reason = detail.reason;\n promise = detail.promise;\n }\n } catch (_e) {\n // Ignore\n }\n if (!reason) {\n reason = '[unhandledrejection] error getting `reason` from event';\n }\n\n if (handler && handler.handleUnhandledRejection) {\n handler.handleUnhandledRejection(reason, promise);\n }\n };\n rejectionHandler.belongsToShim = shim;\n window._rollbarURH = rejectionHandler;\n window.addEventListener('unhandledrejection', rejectionHandler);\n}\n\nexport { captureUncaughtExceptions, captureUnhandledRejections };\n","import * as _ from '../utility.js';\n\nfunction checkIgnore(item, settings) {\n if (_.get(settings, 'plugins.jquery.ignoreAjaxErrors')) {\n return !_.get(item, 'body.message.extra.isAjax');\n }\n return true;\n}\n\nexport { checkIgnore };\n","/**\n * Default session replay recording options\n * See https://github.com/rrweb-io/rrweb/blob/master/guide.md#options for details\n */\nexport default {\n enabled: false, // Whether recording is enabled\n autoStart: true, // Start recording automatically when Rollbar initializes\n\n // defaults used by triggers that don't specify them\n triggerDefaults: {\n samplingRatio: 1.0,\n preDuration: 300,\n postDuration: 5,\n },\n triggers: [\n {\n type: 'occurrence',\n level: ['error', 'critical'],\n },\n ],\n\n debug: {\n logErrors: true, // Whether to log errors emitted by rrweb.\n logEmits: false, // Whether to log emitted events\n },\n\n // Recording options\n inlineStylesheet: true, // Whether to inline stylesheets to improve replay accuracy\n inlineImages: false, // Whether to record the image content\n collectFonts: true, // Whether to collect fonts in the website\n\n // Privacy options\n // Fine-grained control over which input types to mask\n // By default only password inputs are masked if maskInputs is true\n maskInputOptions: {\n password: true,\n email: false,\n tel: false,\n text: false,\n color: false,\n date: false,\n 'datetime-local': false,\n month: false,\n number: false,\n range: false,\n search: false,\n time: false,\n url: false,\n week: false,\n },\n\n // Mask all input values\n maskAllInputs: false,\n\n // Class names to block, mask, or ignore the content of elements.\n blockClass: 'rb-block',\n maskTextClass: 'rb-mask',\n ignoreClass: 'rb-ignore',\n\n // Remove unnecessary parts of the DOM\n // By default all removable elements are removed\n slimDOMOptions: {\n script: true, // Remove script elements\n comment: true, // Remove comments\n headFavicon: true, // Remove favicons in the head\n headWhitespace: true, // Remove whitespace in head\n headMetaDescKeywords: true, // Remove meta description and keywords\n headMetaSocial: true, // Remove social media meta tags\n headMetaRobots: true, // Remove robots meta directives\n headMetaHttpEquiv: true, // Remove http-equiv meta directives\n headMetaAuthorship: true, // Remove authorship meta directives\n headMetaVerification: true, // Remove verification meta directives\n },\n\n // Custom callbacks for advanced use cases\n // These are undefined by default and can be set programmatically\n // maskInputFn: undefined, // Custom function to mask input values\n // maskTextFn: undefined, // Custom function to mask text content\n // errorHandler: undefined, // Custom error handler for recording errors\n\n // Plugin system\n // plugins: [] // List of plugins to use (must be set programmatically)\n};\n","import errorParser from '../errorParser.js';\nimport logger from '../logger.js';\nimport * as _ from '../utility.js';\n\nfunction handleDomException(item, options, callback) {\n if (item.err && errorParser.Stack(item.err).name === 'DOMException') {\n var originalError = new Error();\n originalError.name = item.err.name;\n originalError.message = item.err.message;\n originalError.stack = item.err.stack;\n originalError.nested = item.err;\n item.err = originalError;\n }\n callback(null, item);\n}\n\nfunction handleItemWithError(item, options, callback) {\n item.data = item.data || {};\n if (item.err) {\n try {\n item.stackInfo =\n item.err._savedStackTrace ||\n errorParser.parse(item.err, item.skipFrames);\n\n if (options.addErrorContext) {\n addErrorContext(item);\n }\n } catch (e) {\n logger.error('Error while parsing the error object.', e);\n try {\n item.message =\n item.err.message ||\n item.err.description ||\n item.message ||\n String(item.err);\n } catch (e2) {\n item.message = String(item.err) || String(e2);\n }\n delete item.err;\n }\n }\n callback(null, item);\n}\n\nfunction addErrorContext(item) {\n var chain = [];\n var err = item.err;\n\n chain.push(err);\n\n while (err.nested || err.cause) {\n err = err.nested || err.cause;\n chain.push(err);\n }\n\n _.addErrorContext(item, chain);\n}\n\nfunction ensureItemHasSomethingToSay(item, options, callback) {\n if (!item.message && !item.stackInfo && !item.custom) {\n callback(new Error('No message, stack info, or custom data'), null);\n }\n callback(null, item);\n}\n\nfunction addBaseInfo(item, options, callback) {\n var environment =\n (options.payload && options.payload.environment) || options.environment;\n item.data = _.merge(item.data, {\n environment: environment,\n level: item.level,\n endpoint: options.endpoint,\n platform: 'browser',\n framework: 'browser-js',\n language: 'javascript',\n server: {},\n uuid: item.uuid,\n notifier: {\n name: 'rollbar-browser-js',\n version: options.version,\n },\n custom: item.custom,\n });\n callback(null, item);\n}\n\nfunction addRequestInfo(window) {\n return function (item, options, callback) {\n var requestInfo = {};\n\n if (window && window.location) {\n requestInfo.url = window.location.href;\n requestInfo.query_string = window.location.search;\n }\n\n var remoteString = '$remote_ip';\n if (!options.captureIp) {\n remoteString = null;\n } else if (options.captureIp !== true) {\n remoteString += '_anonymize';\n }\n if (remoteString) requestInfo.user_ip = remoteString;\n\n if (Object.keys(requestInfo).length > 0) {\n _.set(item, 'data.request', requestInfo);\n }\n\n callback(null, item);\n };\n}\n\nfunction addClientInfo(window) {\n return function (item, options, callback) {\n if (!window) {\n return callback(null, item);\n }\n var nav = window.navigator || {};\n var scr = window.screen || {};\n _.set(item, 'data.client', {\n runtime_ms: item.timestamp - window._rollbarStartTime,\n timestamp: Math.round(item.timestamp / 1000),\n javascript: {\n browser: nav.userAgent,\n language: nav.language,\n cookie_enabled: nav.cookieEnabled,\n screen: {\n width: scr.width,\n height: scr.height,\n },\n },\n });\n callback(null, item);\n };\n}\n\nfunction addPluginInfo(window) {\n return function (item, options, callback) {\n if (!window || !window.navigator) {\n return callback(null, item);\n }\n var plugins = [];\n var navPlugins = window.navigator.plugins || [];\n var cur;\n for (var i = 0, l = navPlugins.length; i < l; ++i) {\n cur = navPlugins[i];\n plugins.push({ name: cur.name, description: cur.description });\n }\n _.set(item, 'data.client.javascript.plugins', plugins);\n callback(null, item);\n };\n}\n\nfunction addBody(item, options, callback) {\n if (item.stackInfo) {\n if (item.stackInfo.traceChain) {\n addBodyTraceChain(item, options, callback);\n } else {\n addBodyTrace(item, options, callback);\n }\n } else {\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction addBodyMessage(item, options, callback) {\n var message = item.message;\n var custom = item.custom;\n\n if (!message) {\n message = 'Item sent with null or missing arguments.';\n }\n var result = {\n body: message,\n };\n\n if (custom) {\n result.extra = _.merge(custom);\n }\n\n _.set(item, 'data.body', { message: result });\n callback(null, item);\n}\n\nfunction stackFromItem(item, stackInfo = null) {\n // Transform a TraceKit stackInfo object into a Rollbar trace\n let stack = (stackInfo || item.stackInfo).stack;\n if (\n stack &&\n stack.length === 0 &&\n item._unhandledStackInfo &&\n item._unhandledStackInfo.stack\n ) {\n stack = item._unhandledStackInfo.stack;\n }\n return stack;\n}\n\nfunction addBodyTraceChain(item, options, callback) {\n var traceChain = item.stackInfo.traceChain;\n var traces = [];\n\n var traceChainLength = traceChain.length;\n for (var i = 0; i < traceChainLength; i++) {\n var trace = buildTrace(item, traceChain[i], options);\n traces.push(trace);\n }\n\n _.set(item, 'data.body', { trace_chain: traces });\n callback(null, item);\n}\n\nfunction addBodyTrace(item, options, callback) {\n var stack = stackFromItem(item);\n\n if (stack) {\n var trace = buildTrace(item, item.stackInfo, options);\n _.set(item, 'data.body', { trace: trace });\n callback(null, item);\n } else {\n var stackInfo = item.stackInfo;\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n\n item.message = className + ': ' + message;\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction buildTrace(item, stackInfo, options) {\n var description = item && item.data.description;\n var custom = item && item.custom;\n var stack = stackFromItem(item, stackInfo);\n\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n var trace = {\n exception: {\n class: className,\n message: message,\n },\n };\n\n if (description) {\n trace.exception.description = description;\n }\n\n if (stack) {\n if (stack.length === 0) {\n trace.exception.stack = stackInfo.rawStack;\n trace.exception.raw = String(stackInfo.rawException);\n }\n var stackFrame;\n var frame;\n var code;\n var pre;\n var post;\n var contextLength;\n var i, mid;\n\n trace.frames = [];\n for (i = 0; i < stack.length; ++i) {\n stackFrame = stack[i];\n frame = {\n filename: stackFrame.url ? _.sanitizeUrl(stackFrame.url) : '(unknown)',\n lineno: stackFrame.line || null,\n method:\n !stackFrame.func || stackFrame.func === '?'\n ? '[anonymous]'\n : stackFrame.func,\n colno: stackFrame.column,\n };\n if (options.sendFrameUrl) {\n frame.url = stackFrame.url;\n }\n if (\n frame.method &&\n frame.method.endsWith &&\n frame.method.endsWith('_rollbar_wrapped')\n ) {\n continue;\n }\n\n code = pre = post = null;\n contextLength = stackFrame.context ? stackFrame.context.length : 0;\n if (contextLength) {\n mid = Math.floor(contextLength / 2);\n pre = stackFrame.context.slice(0, mid);\n code = stackFrame.context[mid];\n post = stackFrame.context.slice(mid);\n }\n\n if (code) {\n frame.code = code;\n }\n\n if (pre || post) {\n frame.context = {};\n if (pre && pre.length) {\n frame.context.pre = pre;\n }\n if (post && post.length) {\n frame.context.post = post;\n }\n }\n\n if (stackFrame.args) {\n frame.args = stackFrame.args;\n }\n\n trace.frames.push(frame);\n }\n\n // NOTE(cory): reverse the frames since rollbar.com expects the most recent call last\n trace.frames.reverse();\n\n if (custom) {\n trace.extra = _.merge(custom);\n }\n }\n\n return trace;\n}\n\nfunction errorClass(stackInfo, guess, options) {\n if (stackInfo.name) {\n return stackInfo.name;\n } else if (options.guessErrorClass) {\n return guess;\n } else {\n return '(unknown)';\n }\n}\n\nfunction addScrubber(scrubFn) {\n return function (item, options, callback) {\n if (scrubFn) {\n var scrubFields = options.scrubFields || [];\n var scrubPaths = options.scrubPaths || [];\n item.data = scrubFn(item.data, scrubFields, scrubPaths);\n }\n callback(null, item);\n };\n}\n\nexport {\n handleDomException,\n handleItemWithError,\n ensureItemHasSomethingToSay,\n addBaseInfo,\n addRequestInfo,\n addClientInfo,\n addPluginInfo,\n addBody,\n addScrubber,\n};\n","import logger from '../../logger.js';\nimport * as _ from '../../utility.js';\n\nfunction makeFetchRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n timeout,\n}) {\n var controller;\n var timeoutId;\n\n if (_.isFiniteNumber(timeout)) {\n controller = new AbortController();\n timeoutId = setTimeout(function () {\n controller.abort();\n }, timeout);\n }\n\n headers = {\n 'Content-Type': 'application/json',\n 'X-Rollbar-Access-Token': accessToken,\n signal: controller && controller.signal,\n ...headers,\n };\n\n fetch(url, {\n method,\n headers,\n body: payload,\n })\n .then(function (response) {\n if (timeoutId) clearTimeout(timeoutId);\n const respHeaders = response.headers;\n\n const isItemRoute = url.endsWith('/api/1/item/');\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': respHeaders.get('Rollbar-Replay-Enabled'),\n 'Rollbar-Replay-RateLimit-Remaining': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n\n const json = response.json();\n callback(null, json, headers);\n })\n .catch(function (error) {\n logger.error(error.message);\n callback(error);\n });\n}\n\nexport default makeFetchRequest;\n","/*global XDomainRequest*/\n\nimport logger from '../../logger.js';\nimport * as _ from '../../utility.js';\n\nfunction makeXhrRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n requestFactory,\n timeout,\n}) {\n var request;\n if (requestFactory) {\n request = requestFactory();\n } else {\n request = _createXMLHTTPObject();\n }\n if (!request) {\n // Give up, no way to send requests\n return callback(new Error('No way to send a request'));\n }\n try {\n try {\n var onreadystatechange = function () {\n try {\n if (onreadystatechange && request.readyState === 4) {\n onreadystatechange = undefined;\n\n var parseResponse = _.jsonParse(request.responseText);\n if (_isSuccess(request)) {\n const isItemRoute = url.endsWith('/api/1/item/');\n\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': request.getResponseHeader(\n 'Rollbar-Replay-Enabled',\n ),\n 'Rollbar-Replay-RateLimit-Remaining':\n request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n callback(parseResponse.error, parseResponse.value, headers);\n return;\n } else if (_isNormalFailure(request)) {\n if (request.status === 403) {\n // likely caused by using a server access token\n var message =\n parseResponse.value && parseResponse.value.message;\n logger.error(message);\n }\n // return valid http status codes\n callback(new Error(String(request.status)));\n } else {\n // IE will return a status 12000+ on some sort of connection failure,\n // so we return a blank error\n // http://msdn.microsoft.com/en-us/library/aa383770%28VS.85%29.aspx\n var msg =\n 'XHR response had no status code (likely connection failure)';\n callback(_newRetriableError(msg));\n }\n }\n } catch (ex) {\n //jquery source mentions firefox may error out while accessing the\n //request members if there is a network error\n //https://github.com/jquery/jquery/blob/a938d7b1282fc0e5c52502c225ae8f0cef219f0a/src/ajax/xhr.js#L111\n var exc;\n if (ex && ex.stack) {\n exc = ex;\n } else {\n exc = new Error(ex);\n }\n callback(exc);\n }\n };\n\n request.open(method, url, true);\n if (request.setRequestHeader) {\n request.setRequestHeader('Content-Type', 'application/json');\n request.setRequestHeader('X-Rollbar-Access-Token', accessToken);\n for (const [h, v] of Object.entries(headers ?? {})) {\n request.setRequestHeader(h, v);\n }\n }\n\n if (_.isFiniteNumber(timeout)) {\n request.timeout = timeout;\n }\n\n request.onreadystatechange = onreadystatechange;\n request.send(payload);\n } catch (_e1) {\n // Sending using the normal xmlhttprequest object didn't work, try XDomainRequest\n if (typeof XDomainRequest !== 'undefined') {\n // Assume we are in a really old browser which has a bunch of limitations:\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n\n // Extreme paranoia: if we have XDomainRequest then we have a window, but just in case\n if (!window || !window.location) {\n return callback(\n new Error(\n 'No window available during request, unknown environment',\n ),\n );\n }\n\n // If the current page is http, try and send over http\n if (\n window.location.href.substring(0, 5) === 'http:' &&\n url.substring(0, 5) === 'https'\n ) {\n url = 'http' + url.substring(5);\n }\n\n var xdomainrequest = new XDomainRequest();\n xdomainrequest.onprogress = () => {};\n xdomainrequest.ontimeout = function () {\n var msg = 'Request timed out';\n var code = 'ETIMEDOUT';\n callback(_newRetriableError(msg, code));\n };\n xdomainrequest.onerror = function () {\n callback(new Error('Error during request'));\n };\n xdomainrequest.onload = function () {\n var parseResponse = _.jsonParse(xdomainrequest.responseText);\n callback(parseResponse.error, parseResponse.value);\n };\n xdomainrequest.open(method, url, true);\n xdomainrequest.send(payload);\n } else {\n callback(new Error('Cannot find a method to transport a request'));\n }\n }\n } catch (e2) {\n callback(e2);\n }\n}\n\nfunction _createXMLHTTPObject() {\n /* global ActiveXObject:false */\n\n var factories = [\n function () {\n return new XMLHttpRequest();\n },\n function () {\n return new ActiveXObject('Msxml2.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Msxml3.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Microsoft.XMLHTTP');\n },\n ];\n var xmlhttp;\n var i;\n var numFactories = factories.length;\n for (i = 0; i < numFactories; i++) {\n try {\n xmlhttp = factories[i]();\n break;\n } catch (_e) {\n // pass\n }\n }\n return xmlhttp;\n}\n\nfunction _isSuccess(r) {\n return r && r.status && r.status === 200;\n}\n\nfunction _isNormalFailure(r) {\n return r && _.isType(r.status, 'number') && r.status >= 400 && r.status < 600;\n}\n\nfunction _newRetriableError(message, code) {\n var err = new Error(message);\n err.code = code || 'ENOTFOUND';\n return err;\n}\n\nexport default makeXhrRequest;\n","import * as _ from '../utility.js';\n\nimport makeFetchRequest from './transport/fetch.js';\nimport makeXhrRequest from './transport/xhr.js';\n\n/*\n * accessToken may be embedded in payload but that should not\n * be assumed\n *\n * options: {\n * hostname\n * protocol\n * path\n * port\n * method\n * transport ('xhr' | 'fetch')\n * }\n *\n * params is an object containing key/value pairs. These\n * will be appended to the path as 'key=value&key=value'\n *\n * payload is an unserialized object\n */\nfunction Transport(truncation) {\n this.truncation = truncation;\n}\n\nTransport.prototype.get = function (\n accessToken,\n options,\n params,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = () => {};\n }\n _.addParamsAndAccessTokenToPath(accessToken, options, params);\n\n var method = 'GET';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.post = function ({\n accessToken,\n options,\n payload,\n headers,\n callback,\n requestFactory,\n}) {\n if (!callback || !_.isFunction(callback)) {\n callback = () => {};\n }\n\n if (!payload) {\n return callback(new Error('Cannot send empty request'));\n }\n\n var stringifyResult;\n // Check payload.body to ensure only items are truncated.\n if (this.truncation && payload.body) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = _.stringify(payload);\n }\n if (stringifyResult.error) {\n return callback(stringifyResult.error);\n }\n\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload: stringifyResult.value,\n headers,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.postJsonPayload = function (\n accessToken,\n options,\n payload,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = () => {};\n }\n\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\n// Wraps `_makeRequest` if zone.js is being used, ensuring that Rollbar\n// API calls are not intercepted by any child forked zones.\n// This is equivalent to `NgZone.runOutsideAngular` in Angular.\nTransport.prototype._makeZoneRequest = function () {\n var gWindow =\n (typeof window !== 'undefined' && window) ||\n (typeof self !== 'undefined' && self);\n // Whenever zone.js is loaded and `Zone` is exposed globally, access\n // the root zone to ensure that requests are always made within it.\n // This approach is framework-agnostic, regardless of which\n // framework zone.js is used with.\n var rootZone = gWindow && gWindow.Zone && gWindow.Zone.root;\n var args = Array.prototype.slice.call(arguments);\n\n if (rootZone) {\n rootZone.run(() => {\n this._makeRequest.apply(undefined, args);\n });\n } else {\n this._makeRequest.apply(undefined, args);\n }\n};\n\nTransport.prototype._makeRequest = function (params) {\n const { payload, callback, transport } = params;\n if (typeof RollbarProxy !== 'undefined') {\n return _proxyRequest(payload, callback);\n }\n\n if (transport === 'fetch') {\n makeFetchRequest(params);\n } else {\n makeXhrRequest(params);\n }\n};\n\n/* global RollbarProxy */\nfunction _proxyRequest(json, callback) {\n var rollbarProxy = new RollbarProxy();\n rollbarProxy.sendJsonPayload(\n json,\n function (_msg) {\n /* do nothing */\n },\n function (err) {\n callback(new Error(err));\n },\n );\n}\n\nexport default Transport;\n","// See https://nodejs.org/docs/latest/api/url.html\nfunction parse(url) {\n var result = {\n protocol: null,\n auth: null,\n host: null,\n path: null,\n hash: null,\n href: url,\n hostname: null,\n port: null,\n pathname: null,\n search: null,\n query: null,\n };\n\n var i, last;\n i = url.indexOf('//');\n if (i !== -1) {\n result.protocol = url.substring(0, i);\n last = i + 2;\n } else {\n last = 0;\n }\n\n i = url.indexOf('@', last);\n if (i !== -1) {\n result.auth = url.substring(last, i);\n last = i + 1;\n }\n\n i = url.indexOf('/', last);\n if (i === -1) {\n i = url.indexOf('?', last);\n if (i === -1) {\n i = url.indexOf('#', last);\n if (i === -1) {\n result.host = url.substring(last);\n } else {\n result.host = url.substring(last, i);\n result.hash = url.substring(i);\n }\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n return result;\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n\n i = url.indexOf('#', last);\n if (i === -1) {\n result.path = url.substring(last);\n } else {\n result.path = url.substring(last, i);\n result.hash = url.substring(i);\n }\n\n if (result.path) {\n var pathParts = result.path.split('?');\n result.pathname = pathParts[0];\n result.query = pathParts[1];\n result.search = result.query ? '?' + result.query : null;\n }\n return result;\n}\n\nexport { parse };\n","import API from '../api.js';\nimport defaults from '../defaults.js';\nimport errorParser from '../errorParser.js';\nimport logger from '../logger.js';\nimport * as sharedPredicates from '../predicates.js';\nimport Client from '../rollbar.js';\nimport tracingDefaults from '../tracing/defaults.js';\nimport * as sharedTransforms from '../transforms.js';\nimport * as _ from '../utility.js';\n\nimport browserDefaults from './defaults.js';\nimport * as globals from './globalSetup.js';\nimport * as predicates from './predicates.js';\nimport replayDefaults from './replay/defaults.js';\nimport * as transforms from './transforms.js';\nimport Transport from './transport.js';\nimport * as urllib from './url.js';\n\n// Used to support global `Rollbar` instance.\nlet _instance = null;\n\nclass Rollbar {\n constructor(options, client) {\n logger.init({ logLevel: options.logLevel || 'error' });\n this.options = _.handleOptions(defaultOptions, options, null, logger);\n this.options._configuredOptions = options;\n this.components = this.components || {};\n const Telemeter = this.components.telemeter;\n const Instrumenter = this.components.instrumenter;\n this.wrapGlobals = this.components.wrapGlobals;\n this.scrub = this.components.scrub;\n const truncation = this.components.truncation;\n const Tracing = this.components.tracing;\n const Replay = this.components.replay;\n\n const transport = new Transport(truncation);\n const api = new API(this.options, transport, urllib, truncation);\n if (Tracing) {\n this.tracing = new Tracing(_gWindow(), api, this.options);\n this.tracing.initSession();\n }\n if (Telemeter) {\n this.telemeter = new Telemeter(this.options, this.tracing);\n }\n\n if (Replay && _.isBrowser()) {\n const replayOptions = this.options.replay;\n this.replay = new Replay({\n tracing: this.tracing,\n telemeter: this.telemeter,\n options: replayOptions,\n });\n\n if (replayOptions.enabled && replayOptions.autoStart) {\n this.replay.recorder.start();\n }\n }\n\n this.client =\n client ||\n new Client(\n this.options,\n api,\n logger,\n this.telemeter,\n this.tracing,\n this.replay,\n 'browser',\n );\n var gWindow = _gWindow();\n var gDocument = typeof document !== 'undefined' && document;\n this.isChrome = gWindow.chrome && gWindow.chrome.runtime; // check .runtime to avoid Edge browsers\n this.anonymousErrorsPending = 0;\n addTransformsToNotifier(this.client.notifier, this, gWindow);\n addPredicatesToQueue(this.client.queue);\n this.setupUnhandledCapture();\n if (Instrumenter) {\n this.instrumenter = new Instrumenter(\n this.options,\n this.client.telemeter,\n this,\n gWindow,\n gDocument,\n );\n this.instrumenter.instrument();\n }\n\n this.setSessionAttributesFromOptions(options);\n\n // Used with rollbar-react for rollbar-react-native compatibility.\n this.rollbar = this;\n }\n\n static init(options, client) {\n if (_instance) {\n return _instance.global(options).configure(options);\n }\n _instance = new Rollbar(options, client);\n return _instance;\n }\n\n static setComponents(components) {\n Rollbar.prototype.components = components;\n }\n\n global(options) {\n this.client.global(options);\n return this;\n }\n\n configure(options, payloadData) {\n if (options.logLevel) {\n logger.init({ logLevel: options.logLevel });\n }\n this.setSessionAttributesFromOptions(options);\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.handleOptions(oldOptions, options, payload, logger);\n this.options._configuredOptions = _.handleOptions(\n oldOptions._configuredOptions,\n options,\n payload,\n );\n\n this.tracing?.configure(this.options);\n this.replay?.configure(this.options.replay);\n this.client.configure(this.options, payloadData);\n this.instrumenter?.configure(this.options);\n this.setupUnhandledCapture();\n return this;\n }\n\n lastError() {\n return this.client.lastError;\n }\n\n log() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.log(item);\n return { uuid: uuid };\n }\n\n debug() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.debug(item);\n return { uuid: uuid };\n }\n\n info() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.info(item);\n return { uuid: uuid };\n }\n\n warn() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warn(item);\n return { uuid: uuid };\n }\n\n warning() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warning(item);\n return { uuid: uuid };\n }\n\n error() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.error(item);\n return { uuid: uuid };\n }\n\n critical() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.critical(item);\n return { uuid: uuid };\n }\n\n buildJsonPayload(item) {\n return this.client.buildJsonPayload(item);\n }\n\n sendJsonPayload(jsonPayload) {\n return this.client.sendJsonPayload(jsonPayload);\n }\n\n triggerDirectReplay(context) {\n return this.triggerReplay({ type: 'direct', ...context });\n }\n\n triggerReplay(context) {\n if (!this.replay) return null;\n\n return this.replay.triggerReplay(context);\n }\n\n setupUnhandledCapture() {\n var gWindow = _gWindow();\n\n if (!this.unhandledExceptionsInitialized) {\n if (\n this.options.captureUncaught ||\n this.options.handleUncaughtExceptions\n ) {\n globals.captureUncaughtExceptions(gWindow, this);\n if (this.wrapGlobals && this.options.wrapGlobalEventHandlers) {\n this.wrapGlobals(gWindow, this);\n }\n this.unhandledExceptionsInitialized = true;\n }\n }\n if (!this.unhandledRejectionsInitialized) {\n if (\n this.options.captureUnhandledRejections ||\n this.options.handleUnhandledRejections\n ) {\n globals.captureUnhandledRejections(gWindow, this);\n this.unhandledRejectionsInitialized = true;\n }\n }\n }\n\n handleUncaughtException(message, url, lineno, colno, error, context) {\n if (\n !this.options.captureUncaught &&\n !this.options.handleUncaughtExceptions\n ) {\n return;\n }\n\n // Chrome will always send 5+ arguments and error will be valid or null, not undefined.\n // If error is undefined, we have a different caller.\n // Chrome also sends errors from web workers with null error, but does not invoke\n // prepareStackTrace() for these. Test for empty url to skip them.\n if (\n this.options.inspectAnonymousErrors &&\n this.isChrome &&\n error === null &&\n url === ''\n ) {\n return 'anonymous';\n }\n\n var item;\n var stackInfo = _.makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n 'onerror',\n 'uncaught exception',\n errorParser,\n );\n if (_.isError(error)) {\n item = this._createItem([message, error, context]);\n item._unhandledStackInfo = stackInfo;\n } else if (_.isError(url)) {\n item = this._createItem([message, url, context]);\n item._unhandledStackInfo = stackInfo;\n } else {\n item = this._createItem([message, context]);\n item.stackInfo = stackInfo;\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n this.client.log(item);\n }\n\n /**\n * Chrome only. Other browsers will ignore.\n *\n * Use Error.prepareStackTrace to extract information about errors that\n * do not have a valid error object in onerror().\n *\n * In tested version of Chrome, onerror is called first but has no way\n * to communicate with prepareStackTrace. Use a counter to let this\n * handler know which errors to send to Rollbar.\n *\n * In config options, set inspectAnonymousErrors to enable.\n */\n handleAnonymousErrors() {\n if (!this.options.inspectAnonymousErrors || !this.isChrome) {\n return;\n }\n\n const prepareStackTrace = (error, _stack) => {\n if (this.options.inspectAnonymousErrors) {\n if (this.anonymousErrorsPending) {\n // This is the only known way to detect that onerror saw an anonymous error.\n // It depends on onerror reliably being called before Error.prepareStackTrace,\n // which so far holds true on tested versions of Chrome. If versions of Chrome\n // are tested that behave differently, this logic will need to be updated\n // accordingly.\n this.anonymousErrorsPending -= 1;\n\n if (!error) {\n // Not likely to get here, but calling handleUncaughtException from here\n // without an error object would throw off the anonymousErrorsPending counter,\n // so return now.\n return;\n }\n\n // Allow this to be tracked later.\n error._isAnonymous = true;\n\n // url, lineno, colno shouldn't be needed for these errors.\n // If that changes, update this accordingly, using the unused\n // _stack param as needed (rather than parse error.toString()).\n this.handleUncaughtException(error.message, null, null, null, error);\n }\n }\n\n // Workaround to ensure stack is preserved for normal errors.\n return error.stack;\n };\n\n // https://v8.dev/docs/stack-trace-api\n try {\n Error.prepareStackTrace = prepareStackTrace;\n } catch (e) {\n this.options.inspectAnonymousErrors = false;\n this.error('anonymous error handler failed', e);\n }\n }\n\n handleUnhandledRejection(reason, promise) {\n if (\n !this.options.captureUnhandledRejections &&\n !this.options.handleUnhandledRejections\n ) {\n return;\n }\n\n var message = 'unhandled rejection was null or undefined!';\n if (reason) {\n if (reason.message) {\n message = reason.message;\n } else {\n var reasonResult = _.stringify(reason);\n if (reasonResult.value) {\n message = reasonResult.value;\n }\n }\n }\n var context =\n (reason && reason._rollbarContext) ||\n (promise && promise._rollbarContext);\n\n var item;\n if (_.isError(reason)) {\n item = this._createItem([message, reason, context]);\n } else {\n item = this._createItem([message, reason, context]);\n item.stackInfo = _.makeUnhandledStackInfo(\n message,\n '',\n 0,\n 0,\n null,\n 'unhandledrejection',\n '',\n errorParser,\n );\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n item._originalArgs = item._originalArgs || [];\n item._originalArgs.push(promise);\n this.client.log(item);\n }\n\n wrap(f, context, _before) {\n try {\n var ctxFn;\n if (_.isFunction(context)) {\n ctxFn = context;\n } else {\n ctxFn = function () {\n return context || {};\n };\n }\n\n if (!_.isFunction(f)) {\n return f;\n }\n\n if (f._isWrap) {\n return f;\n }\n\n if (!f._rollbar_wrapped) {\n f._rollbar_wrapped = function () {\n if (_before && _.isFunction(_before)) {\n _before.apply(this, arguments);\n }\n try {\n return f.apply(this, arguments);\n } catch (exc) {\n var e = exc;\n if (e && window._rollbarWrappedError !== e) {\n if (_.isType(e, 'string')) {\n e = new String(e);\n }\n e._rollbarContext = ctxFn() || {};\n e._rollbarContext._wrappedSource = f.toString();\n\n window._rollbarWrappedError = e;\n }\n throw e;\n }\n };\n\n f._rollbar_wrapped._isWrap = true;\n\n for (var prop in f) {\n if (_.hasOwn(f, prop) && prop !== '_rollbar_wrapped') {\n f._rollbar_wrapped[prop] = f[prop];\n }\n }\n }\n\n return f._rollbar_wrapped;\n } catch (_e) {\n // Return the original function if the wrap fails.\n return f;\n }\n }\n\n captureEvent() {\n var event = _.createTelemetryEvent(arguments);\n return this.client.captureEvent(event.type, event.metadata, event.level);\n }\n\n setSessionUser(user) {\n if (!this.tracing?.session) return;\n\n this.tracing.session.setUser(user);\n }\n\n setSessionAttributes(attrs) {\n if (!this.tracing?.session) return;\n\n attrs = { ...attrs };\n\n this.tracing.session.setAttributes(attrs);\n }\n\n setSessionAttributesFromOptions(options) {\n const person = options.person || options.payload?.person;\n if (person) {\n this.setSessionUser(person);\n }\n const code_version =\n options.client?.javascript?.code_version ||\n options.codeVersion ||\n options.code_version ||\n options.payload?.client?.javascript?.code_version ||\n options.payload?.code_version ||\n options.payload?.codeVersion;\n this.setSessionAttributes({\n 'rollbar.codeVersion': code_version,\n 'rollbar.notifier.name': 'rollbar-browser-js',\n 'rollbar.notifier.version': options.version,\n });\n }\n\n // The following two methods are used internally and are not meant for public use\n captureDomContentLoaded(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureDomContentLoaded(ts);\n }\n\n captureLoad(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureLoad(ts);\n }\n\n loadFull() {\n logger.info(\n 'Unexpected Rollbar.loadFull() called on a Notifier instance. This can happen when Rollbar is loaded multiple times.',\n );\n }\n\n _createItem(args) {\n return _.createItem(args, logger, this);\n }\n\n // Static version of instance methods support the legacy pattern of a\n // global `Rollbar` instance, where after calling `Rollbar.init()`,\n // `Rollbar` can be used as if it were an instance.\n // If support for this pattern is dropped, these static methods can be removed.\n static callInstance(method, args) {\n if (!_instance) {\n const message = 'Rollbar is not initialized';\n logger.error(message);\n const maybeCallback = _getFirstFunction(args);\n if (maybeCallback) {\n maybeCallback(new Error(message));\n }\n return;\n }\n return _instance[method].apply(_instance, args);\n }\n\n static global = (...args) => Rollbar.callInstance('global', args);\n static configure = (...args) => Rollbar.callInstance('configure', args);\n static lastError = (...args) => Rollbar.callInstance('lastError', args);\n static log = (...args) => Rollbar.callInstance('log', args);\n static debug = (...args) => Rollbar.callInstance('debug', args);\n static info = (...args) => Rollbar.callInstance('info', args);\n static warn = (...args) => Rollbar.callInstance('warn', args);\n static warning = (...args) => Rollbar.callInstance('warning', args);\n static error = (...args) => Rollbar.callInstance('error', args);\n static critical = (...args) => Rollbar.callInstance('critical', args);\n static buildJsonPayload = (...args) =>\n Rollbar.callInstance('buildJsonPayload', args);\n static sendJsonPayload = (...args) =>\n Rollbar.callInstance('sendJsonPayload', args);\n static wrap = (...args) => Rollbar.callInstance('wrap', args);\n static captureEvent = (...args) => Rollbar.callInstance('captureEvent', args);\n}\n\n/* Internal */\n\nfunction addTransformsToNotifier(notifier, rollbar, gWindow) {\n notifier\n .addTransform(transforms.handleDomException)\n .addTransform(transforms.handleItemWithError)\n .addTransform(transforms.ensureItemHasSomethingToSay)\n .addTransform(transforms.addBaseInfo)\n .addTransform(transforms.addRequestInfo(gWindow))\n .addTransform(transforms.addClientInfo(gWindow))\n .addTransform(transforms.addPluginInfo(gWindow))\n .addTransform(transforms.addBody)\n .addTransform(sharedTransforms.addMessageWithError)\n .addTransform(sharedTransforms.addTelemetryData)\n .addTransform(sharedTransforms.addConfigToPayload)\n .addTransform(transforms.addScrubber(rollbar.scrub))\n .addTransform(sharedTransforms.addPayloadOptions)\n .addTransform(sharedTransforms.userTransform(logger))\n .addTransform(sharedTransforms.addConfiguredOptions)\n .addTransform(sharedTransforms.addDiagnosticKeys)\n .addTransform(sharedTransforms.itemToPayload);\n}\n\nfunction addPredicatesToQueue(queue) {\n queue\n .addPredicate(sharedPredicates.checkLevel)\n .addPredicate(predicates.checkIgnore)\n .addPredicate(sharedPredicates.userCheckIgnore(logger))\n .addPredicate(sharedPredicates.urlIsNotBlockListed(logger))\n .addPredicate(sharedPredicates.urlIsSafeListed(logger))\n .addPredicate(sharedPredicates.messageIsIgnored(logger));\n}\n\nfunction _getFirstFunction(args) {\n for (var i = 0, len = args.length; i < len; ++i) {\n if (_.isFunction(args[i])) {\n return args[i];\n }\n }\n return undefined;\n}\n\nfunction _gWindow() {\n return (\n (typeof window !== 'undefined' && window) ||\n (typeof self !== 'undefined' && self)\n );\n}\n\nconst defaultOptions = {\n environment: 'unknown',\n version: defaults.version,\n scrubFields: browserDefaults.scrubFields,\n logLevel: defaults.logLevel,\n reportLevel: defaults.reportLevel,\n uncaughtErrorLevel: defaults.uncaughtErrorLevel,\n endpoint: defaults.endpoint,\n verbose: false,\n enabled: true,\n transmit: true,\n sendConfig: false,\n includeItemsInTelemetry: true,\n captureIp: true,\n inspectAnonymousErrors: true,\n ignoreDuplicateErrors: true,\n wrapGlobalEventHandlers: false,\n replay: replayDefaults,\n tracing: tracingDefaults,\n};\n\nexport default Rollbar;\n","import { hasOwn } from '../utility.js';\n\n/*\n * headers - Detect when fetch Headers are undefined and use a partial polyfill.\n *\n * A full polyfill is not used in order to keep package size as small as possible.\n * Since this is only used internally and is not added to the window object,\n * the full interface doesn't need to be supported.\n *\n * This implementation is modified from whatwg-fetch:\n * https://github.com/github/fetch\n */\nfunction headers(headers) {\n if (typeof Headers === 'undefined') {\n return new FetchHeaders(headers);\n }\n\n return new Headers(headers);\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n return name.toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value;\n}\n\nfunction iteratorFor(items) {\n var iterator = {\n next: function () {\n var value = items.shift();\n return { done: value === undefined, value: value };\n },\n };\n\n return iterator;\n}\n\nfunction FetchHeaders(headers) {\n this.map = {};\n\n if (headers instanceof FetchHeaders) {\n headers.forEach(function (value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function (header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function (name) {\n this.append(name, headers[name]);\n }, this);\n }\n}\n\nFetchHeaders.prototype.append = function (name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n};\n\nFetchHeaders.prototype.get = function (name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null;\n};\n\nFetchHeaders.prototype.has = function (name) {\n return hasOwn(this.map, normalizeName(name));\n};\n\nFetchHeaders.prototype.forEach = function (callback, thisArg) {\n for (var name in this.map) {\n if (hasOwn(this.map, name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n};\n\nFetchHeaders.prototype.entries = function () {\n var items = [];\n this.forEach(function (value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items);\n};\n\nexport default headers;\n","function replace(obj, name, replacement, replacements, type) {\n var orig = obj[name];\n obj[name] = replacement(orig);\n if (replacements) {\n replacements[type].push([obj, name, orig]);\n }\n}\n\nexport default replace;\n","function getElementType(e) {\n return (e.getAttribute('type') || '').toLowerCase();\n}\n\nfunction isDescribedElement(element, type, subtypes) {\n if (element.tagName.toLowerCase() !== type.toLowerCase()) {\n return false;\n }\n if (!subtypes) {\n return true;\n }\n const elementType = getElementType(element);\n for (const subtype of subtypes) {\n if (subtype === elementType) {\n return true;\n }\n }\n return false;\n}\n\nfunction getElementFromEvent(evt, doc) {\n if (evt.target) {\n return evt.target;\n }\n if (doc && doc.elementFromPoint) {\n return doc.elementFromPoint(evt.clientX, evt.clientY);\n }\n return undefined;\n}\n\nfunction treeToArray(elem) {\n var MAX_HEIGHT = 5;\n var out = [];\n var nextDescription;\n for (var height = 0; elem && height < MAX_HEIGHT; height++) {\n nextDescription = describeElement(elem);\n if (!nextDescription || nextDescription.tagName === 'html') {\n break;\n }\n out.unshift(nextDescription);\n elem = elem.parentNode;\n }\n return out;\n}\n\nfunction elementArrayToString(a) {\n var MAX_LENGTH = 80;\n var separator = ' > ',\n separatorLength = separator.length;\n var out = [],\n len = 0,\n nextStr,\n totalLength;\n\n for (var i = a.length - 1; i >= 0; i--) {\n nextStr = descriptionToString(a[i]);\n totalLength = len + out.length * separatorLength + nextStr.length;\n if (i < a.length - 1 && totalLength >= MAX_LENGTH + 3) {\n out.unshift('...');\n break;\n }\n out.unshift(nextStr);\n len += nextStr.length;\n }\n return out.join(separator);\n}\n\nfunction elementString(elem) {\n return elementArrayToString(treeToArray(elem));\n}\n\nfunction descriptionToString(desc) {\n if (!desc || !desc.tagName) {\n return '';\n }\n var out = [desc.tagName];\n if (desc.id) {\n out.push('#' + desc.id);\n }\n if (desc.classes) {\n out.push('.' + desc.classes.join('.'));\n }\n for (const attribute of desc.attributes) {\n out.push('[' + attribute.key + '=\"' + attribute.value + '\"]');\n }\n\n return out.join('');\n}\n\n/**\n * Input: a dom element\n * Output: null if tagName is falsey or input is falsey, else\n * {\n * tagName: String,\n * id: String | undefined,\n * classes: [String] | undefined,\n * attributes: [\n * {\n * key: OneOf(type, name, title, alt),\n * value: String\n * }\n * ]\n * }\n */\nfunction describeElement(elem) {\n if (!elem || !elem.tagName) {\n return null;\n }\n var out = {},\n className;\n out.tagName = elem.tagName.toLowerCase();\n if (elem.id) {\n out.id = elem.id;\n }\n className = elem.className;\n if (className && typeof className === 'string') {\n out.classes = className.split(/\\s+/);\n }\n var attributes = ['type', 'name', 'title', 'alt'];\n out.attributes = [];\n for (const attribute of attributes) {\n const attr = elem.getAttribute(attribute);\n if (attr) {\n out.attributes.push({ key: attribute, value: attr });\n }\n }\n return out;\n}\n\n/*\n * Detects if the given element matches any of the given class names (string or regex),\n * or CSS selectors.\n * @param {HTMLElement} element - The DOM element to check.\n * @param {Array} classes - An array of class names (string or regex) to match against.\n * @param {Array} selectors - An array of CSS selectors to match against.\n * @return {boolean} - True if the element matches any of the classes or selectors, false otherwise.\n */\nfunction isMatchingElement(element, classes, selectors) {\n try {\n for (const cls of classes) {\n if (typeof cls === 'string') {\n if (element.classList.contains(cls)) {\n return true;\n }\n } else {\n for (const c of element.classList) {\n if (cls.test(c)) {\n return true;\n }\n }\n }\n }\n for (const sel of selectors) {\n if (element.matches(sel)) {\n return true;\n }\n }\n } catch (_e) {\n // ignore errors from invalid arguments\n }\n return false;\n}\n\nexport {\n describeElement,\n descriptionToString,\n elementArrayToString,\n elementString,\n treeToArray,\n getElementFromEvent,\n isDescribedElement,\n getElementType,\n isMatchingElement,\n};\n","/* eslint-disable @typescript-eslint/no-this-alias */\n// TODO(matux): refactor to remove no-this-alias disable\n\nimport logger from '../logger.js';\nimport scrub from '../scrub.js';\nimport headers from '../utility/headers.js';\nimport replace from '../utility/replace.js';\nimport * as _ from '../utility.js';\n\nimport * as domUtil from './domUtility.js';\nimport * as urlparser from './url.js';\n\nconst defaults = {\n network: true,\n networkResponseHeaders: false,\n networkResponseBody: false,\n networkRequestHeaders: false,\n networkRequestBody: false,\n networkErrorOnHttp5xx: false,\n networkErrorOnHttp4xx: false,\n networkErrorOnHttp0: false,\n log: true,\n dom: true,\n navigation: true,\n connectivity: true,\n contentSecurityPolicy: true,\n errorOnContentSecurityPolicy: false,\n};\n\nfunction restore(replacements, type) {\n let b;\n while (replacements[type].length) {\n b = replacements[type].shift();\n b[0][b[1]] = b[2];\n }\n}\n\nfunction nameFromDescription(description) {\n if (!description || !description.attributes) {\n return null;\n }\n const attrs = description.attributes;\n for (const a of attrs) {\n if (a.key === 'name') {\n return a.value;\n }\n }\n return null;\n}\n\nfunction defaultValueScrubber(scrubFields) {\n const patterns = [];\n for (const field of scrubFields) {\n patterns.push(new RegExp(field, 'i'));\n }\n return function (description) {\n const name = nameFromDescription(description);\n if (!name) {\n return false;\n }\n for (const p of patterns) {\n if (p.test(name)) {\n return true;\n }\n }\n return false;\n };\n}\n\nclass Instrumenter {\n constructor(options, telemeter, rollbar, _window, _document) {\n this.options = options;\n let autoInstrument = options.autoInstrument;\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.telemeter = telemeter;\n this.rollbar = rollbar;\n this.diagnostic = rollbar.client.notifier.diagnostic;\n this._window = _window || {};\n this._document = _document || {};\n this.replacements = {\n network: [],\n log: [],\n navigation: [],\n connectivity: [],\n };\n this.eventRemovers = {\n dom: [],\n connectivity: [],\n contentsecuritypolicy: [],\n };\n\n this._location = this._window.location;\n this._lastHref = this._location && this._location.href;\n }\n\n configureScrubbing() {\n const options = this.options;\n this.scrubTelemetryInputs = Boolean(\n options.scrubTelemetryInputs ?? options.replay?.maskAllInputs,\n );\n this.telemetryScrubber = options.telemetryScrubber;\n this.defaultValueScrubber = defaultValueScrubber(options.scrubFields);\n this.maskInputFn = options.replay?.maskInputFn;\n this.maskInputOptions = options.replay?.maskInputOptions || {};\n this.scrubClasses = [\n options.replay?.blockClass,\n options.replay?.ignoreClass,\n options.replay?.maskTextClass,\n ].filter(Boolean);\n this.scrubSelectors = [\n options.replay?.blockSelector,\n options.replay?.ignoreSelector,\n options.replay?.maskTextSelector,\n ].filter(Boolean);\n }\n\n configure(options) {\n this.options = _.merge(this.options, options);\n let autoInstrument = options.autoInstrument;\n const oldSettings = _.merge(this.autoInstrument);\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.instrument(oldSettings);\n }\n\n // eslint-disable-next-line complexity\n instrument(oldSettings) {\n if (this.autoInstrument.network && !(oldSettings && oldSettings.network)) {\n this.instrumentNetwork();\n } else if (\n !this.autoInstrument.network &&\n oldSettings &&\n oldSettings.network\n ) {\n this.deinstrumentNetwork();\n }\n\n if (this.autoInstrument.log && !(oldSettings && oldSettings.log)) {\n this.instrumentConsole();\n } else if (!this.autoInstrument.log && oldSettings && oldSettings.log) {\n this.deinstrumentConsole();\n }\n\n if (this.autoInstrument.dom && !(oldSettings && oldSettings.dom)) {\n this.instrumentDom();\n } else if (!this.autoInstrument.dom && oldSettings && oldSettings.dom) {\n this.deinstrumentDom();\n }\n\n if (\n this.autoInstrument.navigation &&\n !(oldSettings && oldSettings.navigation)\n ) {\n this.instrumentNavigation();\n } else if (\n !this.autoInstrument.navigation &&\n oldSettings &&\n oldSettings.navigation\n ) {\n this.deinstrumentNavigation();\n }\n\n if (\n this.autoInstrument.connectivity &&\n !(oldSettings && oldSettings.connectivity)\n ) {\n this.instrumentConnectivity();\n } else if (\n !this.autoInstrument.connectivity &&\n oldSettings &&\n oldSettings.connectivity\n ) {\n this.deinstrumentConnectivity();\n }\n\n if (\n this.autoInstrument.contentSecurityPolicy &&\n !(oldSettings && oldSettings.contentSecurityPolicy)\n ) {\n this.instrumentContentSecurityPolicy();\n } else if (\n !this.autoInstrument.contentSecurityPolicy &&\n oldSettings &&\n oldSettings.contentSecurityPolicy\n ) {\n this.deinstrumentContentSecurityPolicy();\n }\n }\n\n deinstrumentNetwork() {\n restore(this.replacements, 'network');\n }\n\n instrumentNetwork() {\n const self = this;\n\n function wrapProp(prop, xhr) {\n if (prop in xhr && _.isFunction(xhr[prop])) {\n replace(xhr, prop, function (orig) {\n return self.rollbar.wrap(orig);\n });\n }\n }\n\n if ('XMLHttpRequest' in this._window) {\n const xhrp = this._window.XMLHttpRequest.prototype;\n replace(\n xhrp,\n 'open',\n function (orig) {\n return function (method, url) {\n const isUrlObject = _isUrlObject(url);\n if (_.isType(url, 'string') || isUrlObject) {\n url = isUrlObject ? url.toString() : url;\n if (this.__rollbar_xhr) {\n this.__rollbar_xhr.method = method;\n this.__rollbar_xhr.url = url;\n this.__rollbar_xhr.status_code = null;\n this.__rollbar_xhr.start_time_ms = _.now();\n this.__rollbar_xhr.end_time_ms = null;\n } else {\n this.__rollbar_xhr = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'setRequestHeader',\n function (orig) {\n return function (header, value) {\n // If xhr.open is async, __rollbar_xhr may not be initialized yet.\n if (!this.__rollbar_xhr) {\n this.__rollbar_xhr = {};\n }\n if (_.isType(header, 'string') && _.isType(value, 'string')) {\n if (self.autoInstrument.networkRequestHeaders) {\n if (!this.__rollbar_xhr.request_headers) {\n this.__rollbar_xhr.request_headers = {};\n }\n this.__rollbar_xhr.request_headers[header] = value;\n }\n // We want the content type even if request header telemetry is off.\n if (header.toLowerCase() === 'content-type') {\n this.__rollbar_xhr.request_content_type = value;\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'send',\n function (orig) {\n return function (data) {\n const xhr = this;\n\n function onreadystatechangeHandler() {\n if (xhr.__rollbar_xhr) {\n if (xhr.__rollbar_xhr.status_code === null) {\n xhr.__rollbar_xhr.status_code = 0;\n if (self.autoInstrument.networkRequestBody) {\n xhr.__rollbar_xhr.request = data;\n }\n xhr.__rollbar_event = self.captureNetwork(\n xhr.__rollbar_xhr,\n 'xhr',\n undefined,\n );\n }\n if (xhr.readyState < 2) {\n xhr.__rollbar_xhr.start_time_ms = _.now();\n }\n if (xhr.readyState > 3) {\n const end_time_ms = _.now();\n xhr.__rollbar_xhr.end_time_ms = end_time_ms;\n\n let headers = null;\n xhr.__rollbar_xhr.response_content_type =\n xhr.getResponseHeader('Content-Type');\n if (self.autoInstrument.networkResponseHeaders) {\n const headersConfig =\n self.autoInstrument.networkResponseHeaders;\n headers = {};\n try {\n let header;\n if (headersConfig === true) {\n const allHeaders = xhr.getAllResponseHeaders();\n if (allHeaders) {\n const arr = allHeaders.trim().split(/[\\r\\n]+/);\n let parts, value;\n for (const h of arr) {\n parts = h.split(': ');\n header = parts.shift();\n value = parts.join(': ');\n headers[header] = value;\n }\n }\n } else {\n for (const h of headersConfig) {\n headers[h] = xhr.getResponseHeader(h);\n }\n }\n } catch (_e) {\n /* we ignore the errors here that could come from different\n * browser issues with the xhr methods */\n }\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n try {\n body = xhr.responseText;\n } catch (_e) {\n /* ignore errors from reading responseText */\n }\n }\n let response = null;\n if (body || headers) {\n response = {};\n if (body) {\n if (\n self.isJsonContentType(\n xhr.__rollbar_xhr.response_content_type,\n )\n ) {\n response.body = self.scrubJson(body);\n } else {\n response.body = body;\n }\n }\n if (headers) {\n response.headers = headers;\n }\n }\n if (response) {\n xhr.__rollbar_xhr.response = response;\n }\n try {\n let code = xhr.status;\n code = code === 1223 ? 204 : code;\n xhr.__rollbar_xhr.status_code = code;\n self.addOtelNetworkResponse(\n xhr.__rollbar_event,\n end_time_ms,\n code,\n );\n xhr.__rollbar_event.level =\n self.telemeter.levelFromStatus(code);\n self.errorOnHttpStatus(xhr.__rollbar_xhr);\n } catch (_e) {\n /* ignore possible exception from xhr.status */\n }\n }\n }\n }\n\n wrapProp('onload', xhr);\n wrapProp('onerror', xhr);\n wrapProp('onprogress', xhr);\n\n if (\n 'onreadystatechange' in xhr &&\n _.isFunction(xhr.onreadystatechange)\n ) {\n replace(xhr, 'onreadystatechange', function (orig) {\n return self.rollbar.wrap(\n orig,\n undefined,\n onreadystatechangeHandler,\n );\n });\n } else {\n xhr.onreadystatechange = onreadystatechangeHandler;\n }\n if (xhr.__rollbar_xhr && self.trackHttpErrors()) {\n xhr.__rollbar_xhr.stack = new Error().stack;\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n }\n\n if ('fetch' in this._window) {\n replace(\n this._window,\n 'fetch',\n function (orig) {\n return function (_fn, _t) {\n const args = [...arguments];\n const input = args[0];\n let method = 'GET';\n let url;\n const isUrlObject = _isUrlObject(input);\n if (_.isType(input, 'string') || isUrlObject) {\n url = isUrlObject ? input.toString() : input;\n } else if (input) {\n url = input.url;\n if (input.method) {\n method = input.method;\n }\n }\n if (args[1] && args[1].method) {\n method = args[1].method;\n }\n const metadata = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n if (args[1] && args[1].headers) {\n // Argument may be a Headers object, or plain object. Ensure here that\n // we are working with a Headers object with case-insensitive keys.\n const reqHeaders = headers(args[1].headers);\n\n metadata.request_content_type = reqHeaders.get('Content-Type');\n\n if (self.autoInstrument.networkRequestHeaders) {\n metadata.request_headers = self.fetchHeaders(\n reqHeaders,\n self.autoInstrument.networkRequestHeaders,\n );\n }\n }\n\n if (self.autoInstrument.networkRequestBody) {\n if (args[1] && args[1].body) {\n metadata.request = args[1].body;\n } else if (\n args[0] &&\n !_.isType(args[0], 'string') &&\n args[0].body\n ) {\n metadata.request = args[0].body;\n }\n }\n const telemetryEvent = self.captureNetwork(\n metadata,\n 'fetch',\n undefined,\n );\n if (self.trackHttpErrors()) {\n metadata.stack = new Error().stack;\n }\n\n // Start our handler before returning the promise. This allows resp.clone()\n // to execute before other handlers touch the response.\n return orig.apply(this, args).then(function (resp) {\n const end_time_ms = _.now();\n metadata.end_time_ms = end_time_ms;\n metadata.status_code = resp.status;\n self.addOtelNetworkResponse(\n telemetryEvent,\n end_time_ms,\n resp.status,\n );\n\n metadata.response_content_type = resp.headers.get('Content-Type');\n let headers = null;\n if (self.autoInstrument.networkResponseHeaders) {\n headers = self.fetchHeaders(\n resp.headers,\n self.autoInstrument.networkResponseHeaders,\n );\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n if (typeof resp.text === 'function') {\n // Response.text() is not implemented on some platforms\n // The response must be cloned to prevent reading (and locking) the original stream.\n // This must be done before other handlers touch the response.\n body = resp.clone().text(); //returns a Promise\n }\n }\n if (headers || body) {\n metadata.response = {};\n if (body) {\n // Test to ensure body is a Promise, which it should always be.\n if (typeof body.then === 'function') {\n body.then(function (text) {\n if (\n text &&\n self.isJsonContentType(metadata.response_content_type)\n ) {\n metadata.response.body = self.scrubJson(text);\n } else {\n metadata.response.body = text;\n }\n });\n } else {\n metadata.response.body = body;\n }\n }\n if (headers) {\n metadata.response.headers = headers;\n }\n }\n self.errorOnHttpStatus(metadata);\n return resp;\n });\n };\n },\n this.replacements,\n 'network',\n );\n }\n }\n\n captureNetwork(metadata, subtype, rollbarUUID) {\n if (\n metadata.request &&\n this.isJsonContentType(metadata.request_content_type)\n ) {\n metadata.request = this.scrubJson(metadata.request);\n }\n return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID);\n }\n\n isJsonContentType(contentType) {\n return contentType &&\n _.isType(contentType, 'string') &&\n contentType.toLowerCase().includes('json')\n ? true\n : false;\n }\n\n addOtelNetworkResponse(event, endTimeMs, statusCode) {\n if (event.otelAttributes) {\n event.otelAttributes['response.timeUnixNano'] = (\n endTimeMs * 1e6\n ).toString();\n event.otelAttributes.statusCode = statusCode;\n }\n }\n\n scrubJson(json) {\n return JSON.stringify(scrub(JSON.parse(json), this.options.scrubFields));\n }\n\n fetchHeaders(inHeaders, headersConfig) {\n const outHeaders = {};\n try {\n if (headersConfig === true) {\n if (typeof inHeaders.entries === 'function') {\n // Headers.entries() is not implemented in IE\n const allHeaders = inHeaders.entries();\n let currentHeader = allHeaders.next();\n while (!currentHeader.done) {\n outHeaders[currentHeader.value[0]] = currentHeader.value[1];\n currentHeader = allHeaders.next();\n }\n }\n } else {\n for (const h of headersConfig) {\n outHeaders[h] = inHeaders.get(h);\n }\n }\n } catch (_e) {\n /* ignore probable IE errors */\n }\n return outHeaders;\n }\n\n trackHttpErrors() {\n return (\n this.autoInstrument.networkErrorOnHttp5xx ||\n this.autoInstrument.networkErrorOnHttp4xx ||\n this.autoInstrument.networkErrorOnHttp0\n );\n }\n\n errorOnHttpStatus(metadata) {\n const status = metadata.status_code;\n\n if (\n (status >= 500 && this.autoInstrument.networkErrorOnHttp5xx) ||\n (status >= 400 && this.autoInstrument.networkErrorOnHttp4xx) ||\n (status === 0 && this.autoInstrument.networkErrorOnHttp0)\n ) {\n const error = new Error('HTTP request failed with Status ' + status);\n error.stack = metadata.stack;\n this.rollbar.error(error, { skipFrames: 1 });\n }\n }\n\n deinstrumentConsole() {\n let b;\n while (this.replacements['log'].length) {\n b = this.replacements['log'].shift();\n this._window.console[b[0]] = b[1];\n }\n }\n\n instrumentConsole() {\n if (!this._window?.console?.log) {\n return;\n }\n\n const self = this;\n const c = this._window.console;\n\n function wrapConsole(method) {\n // eslint-disable-next-line strict\n 'use strict'; // See https://github.com/rollbar/rollbar.js/pull/778\n\n const orig = c[method];\n const origConsole = c;\n const level = method === 'warn' ? 'warning' : method;\n c[method] = function () {\n const args = Array.prototype.slice.call(arguments);\n const message = _.formatArgsAsString(args);\n self.telemeter.captureLog(message, level, null, _.now());\n if (orig) {\n Function.prototype.apply.call(orig, origConsole, args);\n }\n };\n self.replacements['log'].push([method, orig]);\n }\n const methods = ['debug', 'info', 'warn', 'error', 'log'];\n try {\n for (const m of methods) {\n wrapConsole(m);\n }\n } catch (e) {\n this.diagnostic.instrumentConsole = { error: e.message };\n }\n }\n\n deinstrumentDom() {\n this.removeListeners('dom');\n }\n\n instrumentDom() {\n this.addListener(\n 'dom',\n this._window,\n ['click', 'dblclick', 'contextmenu'],\n (e) => this.handleEvent('click', e),\n );\n this.addListener(\n 'dom',\n this._window,\n ['dragstart', 'dragend', 'dragenter', 'dragleave', 'drop'],\n (e) => this.handleEvent('dragdrop', e),\n );\n this.addListener('dom', this._window, ['blur', 'focus'], (e) =>\n this.handleEvent('focus', e),\n );\n this.addListener('dom', this._window, ['submit', 'invalid'], (e) =>\n this.handleEvent('form', e),\n );\n this.addListener('dom', this._window, ['input', 'change'], (e) =>\n this.handleEvent('input', e),\n );\n this.addListener('dom', this._window, ['resize'], (e) =>\n this.handleEvent('resize', e),\n );\n this.addListener('dom', this._document, ['DOMContentLoaded'], (e) =>\n this.handleEvent('contentLoaded', e),\n );\n }\n\n handleEvent(name, evt) {\n try {\n return {\n click: this.handleClick,\n dragdrop: this.handleDrag,\n focus: this.handleFocus,\n form: this.handleForm,\n input: this.handleInput,\n resize: this.handleResize,\n contentLoaded: this.handleContentLoaded,\n }[name].call(this, evt);\n } catch (exc) {\n logger.log(`${name} handler error`, evt, exc, exc.stack);\n }\n }\n\n handleContentLoaded(_evt) {\n this.rollbar.triggerReplay({\n type: 'navigation',\n path: new URL(this._location.href).pathname,\n });\n }\n\n handleClick(evt) {\n const tagName = evt.target?.tagName.toLowerCase();\n if (['input', 'select', 'textarea'].includes(tagName)) return;\n\n this.telemeter.captureClick({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n timestamp: _.now(),\n });\n }\n\n handleFocus(evt) {\n const type = evt.type;\n const element = evt.target?.window\n ? 'window'\n : domUtil.elementString(evt.target);\n\n this.telemeter.captureFocus({\n type: type,\n isSynthetic: !evt.isTrusted,\n element,\n timestamp: _.now(),\n });\n }\n\n handleForm(_evt) {\n // TODO: implement form event handling\n //const type = evt.type;\n //const elementString = evt.target?.window\n // ? 'window'\n // : domUtil.elementString(evt.target);\n }\n\n handleResize(evt) {\n const textZoomRatio = window.screen.width / window.innerWidth;\n\n this.telemeter.captureResize({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n width: window.innerWidth,\n height: window.innerHeight,\n textZoomRatio: textZoomRatio,\n timestamp: _.now(),\n });\n }\n\n handleDrag(evt) {\n const type = evt.type;\n let kinds, mediaTypes, dropEffect, effectAllowed;\n\n if (type === 'drop') {\n kinds = [];\n mediaTypes = [];\n const objs = [...evt.dataTransfer.files, ...evt.dataTransfer.items];\n for (const o of objs) {\n if (o.kind && o.type) {\n kinds.push(o.kind);\n mediaTypes.push(o.type);\n }\n }\n }\n if (['drop', 'dragstart'].includes(type)) {\n dropEffect = evt.dataTransfer?.dropEffect;\n effectAllowed = evt.dataTransfer?.effectAllowed;\n }\n\n this.telemeter.captureDragDrop({\n type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n dropEffect: dropEffect,\n effectAllowed: effectAllowed,\n kinds: JSON.stringify(kinds),\n mediaTypes: JSON.stringify(mediaTypes),\n timestamp: _.now(),\n });\n }\n\n /*\n * Applies Rollbar telemetry scrubbing options to the dom input value.\n * When replay options are present, applies those as well.\n */\n scrubInputValue(value, element, tagName, inputType) {\n const mask = '******';\n\n if (inputType === 'password') {\n return mask;\n }\n\n if (this.scrubTelemetryInputs) {\n return mask;\n } else {\n const description = domUtil.describeElement(element);\n if (this.telemetryScrubber) {\n if (this.telemetryScrubber(description)) {\n return mask;\n }\n } else if (this.defaultValueScrubber(description)) {\n return mask;\n }\n }\n\n // Apply replay options regardless of other scrubbing\n if (\n domUtil.isMatchingElement(element, this.scrubClasses, this.scrubSelectors)\n ) {\n return mask;\n }\n\n // This check is last since maskInputFn returns a modified value rather\n // than a boolean, which would cause an early return even if the value\n // was not scrubbed.\n if (\n this.maskInputOptions[tagName.toLowerCase()] ||\n this.maskInputOptions[inputType]\n ) {\n if (this.maskInputFn) {\n return this.maskInputFn(value, element);\n } else {\n return mask;\n }\n }\n\n return value;\n }\n\n /*\n * Uses the `input` event for everything except radio and checkbox inputs.\n * For those, it uses the `change` event.\n */\n handleInput(evt) {\n const type = evt.type;\n const tagName = evt.target?.tagName.toLowerCase();\n let value = evt.target?.value;\n let inputType = evt.target?.attributes?.type?.value || evt.target?.type;\n\n if (value !== undefined) {\n value = this.scrubInputValue(value, evt.target, tagName, inputType);\n }\n\n switch (type) {\n case 'input':\n if (['radio', 'checkbox'].includes(inputType)) return;\n if (['select', 'textarea'].includes(tagName)) {\n inputType = tagName;\n }\n break;\n\n case 'change':\n if (!['radio', 'checkbox'].includes(inputType)) return;\n if (inputType === 'checkbox') {\n value = evt.target?.checked;\n }\n break;\n }\n\n this.telemeter.captureInput({\n type: inputType,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n value,\n timestamp: _.now(),\n });\n }\n\n deinstrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n restore(this.replacements, 'navigation');\n }\n\n instrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n const self = this;\n replace(\n this._window,\n 'onpopstate',\n function (orig) {\n return function () {\n const current = self._location.href;\n self.handleUrlChange(self._lastHref, current);\n if (orig) {\n orig.apply(this, arguments);\n }\n };\n },\n this.replacements,\n 'navigation',\n );\n\n replace(\n this._window.history,\n 'pushState',\n function (orig) {\n return function () {\n const url = arguments.length > 2 ? arguments[2] : undefined;\n if (url) {\n self.handleUrlChange(self._lastHref, String(url));\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'navigation',\n );\n }\n\n handleUrlChange(from, to) {\n const parsedHref = urlparser.parse(this._location.href);\n const parsedTo = urlparser.parse(to);\n const parsedFrom = urlparser.parse(from);\n this._lastHref = to;\n if (\n parsedHref.protocol === parsedTo.protocol &&\n parsedHref.host === parsedTo.host\n ) {\n to = parsedTo.path + (parsedTo.hash || '');\n }\n if (\n parsedHref.protocol === parsedFrom.protocol &&\n parsedHref.host === parsedFrom.host\n ) {\n from = parsedFrom.path + (parsedFrom.hash || '');\n }\n this.telemeter.captureNavigation(from, to, null, _.now());\n this.rollbar.triggerReplay({\n type: 'navigation',\n path: to,\n });\n }\n\n deinstrumentConnectivity = function () {\n this.removeListeners('connectivity');\n };\n\n instrumentConnectivity() {\n const self = this;\n this.addListener(\n 'connectivity',\n this._window,\n ['online', 'offline'],\n (evt) => self.handleConnectivity(evt),\n );\n }\n\n handleConnectivity(evt) {\n const type = evt.type;\n\n this.telemeter.captureConnectivityChange({\n type,\n isSynthetic: !evt.isTrusted,\n timestamp: _.now(),\n });\n }\n\n handleCspEvent(cspEvent) {\n let message =\n 'Security Policy Violation: ' +\n 'blockedURI: ' +\n cspEvent.blockedURI +\n ', ' +\n 'violatedDirective: ' +\n cspEvent.violatedDirective +\n ', ' +\n 'effectiveDirective: ' +\n cspEvent.effectiveDirective +\n ', ';\n\n if (cspEvent.sourceFile) {\n message +=\n 'location: ' +\n cspEvent.sourceFile +\n ', ' +\n 'line: ' +\n cspEvent.lineNumber +\n ', ' +\n 'col: ' +\n cspEvent.columnNumber +\n ', ';\n }\n\n message += 'originalPolicy: ' + cspEvent.originalPolicy;\n\n this.telemeter.captureLog(message, 'error', null, _.now());\n this.handleCspError(message);\n }\n\n handleCspError(message) {\n if (this.autoInstrument.errorOnContentSecurityPolicy) {\n this.rollbar.error(message);\n }\n }\n\n deinstrumentContentSecurityPolicy() {\n this.removeListeners('contentsecuritypolicy');\n }\n\n instrumentContentSecurityPolicy() {\n if (!('addEventListener' in this._document)) {\n return;\n }\n\n const cspHandler = this.handleCspEvent.bind(this);\n this.addListener(\n 'contentsecuritypolicy',\n this._document,\n ['securitypolicyviolation'],\n cspHandler,\n );\n }\n\n addListener(section, obj, types, handler) {\n if (obj.addEventListener) {\n for (const t of types) {\n const options = { capture: true, passive: true };\n obj.addEventListener(t, handler, options, true);\n this.eventRemovers[section].push(function () {\n obj.removeEventListener(t, handler, options);\n });\n }\n }\n }\n\n removeListeners(section) {\n let r;\n while (this.eventRemovers[section].length) {\n r = this.eventRemovers[section].shift();\n r();\n }\n }\n}\n\nfunction _isUrlObject(input) {\n return typeof URL !== 'undefined' && input instanceof URL;\n}\n\nexport default Instrumenter;\n","import { hasOwn } from '../utility.js';\n\nfunction wrapGlobals(window, handler, shim) {\n if (!window) {\n return;\n }\n // Adapted from https://github.com/bugsnag/bugsnag-js\n var globals =\n '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'.split(\n ',',\n );\n var i, global;\n for (i = 0; i < globals.length; ++i) {\n global = globals[i];\n\n if (window[global] && window[global].prototype) {\n _extendListenerPrototype(handler, window[global].prototype, shim);\n }\n }\n}\n\nfunction _extendListenerPrototype(handler, prototype, shim) {\n if (hasOwn(prototype, 'addEventListener')) {\n var oldAddEventListener = prototype.addEventListener;\n while (\n oldAddEventListener._rollbarOldAdd &&\n oldAddEventListener.belongsToShim\n ) {\n oldAddEventListener = oldAddEventListener._rollbarOldAdd;\n }\n var addFn = function (event, callback, bubble) {\n oldAddEventListener.call(this, event, handler.wrap(callback), bubble);\n };\n addFn._rollbarOldAdd = oldAddEventListener;\n addFn.belongsToShim = shim;\n prototype.addEventListener = addFn;\n\n var oldRemoveEventListener = prototype.removeEventListener;\n while (\n oldRemoveEventListener._rollbarOldRemove &&\n oldRemoveEventListener.belongsToShim\n ) {\n oldRemoveEventListener = oldRemoveEventListener._rollbarOldRemove;\n }\n var removeFn = function (event, callback, bubble) {\n oldRemoveEventListener.call(\n this,\n event,\n (callback && callback._rollbar_wrapped) || callback,\n bubble,\n );\n };\n removeFn._rollbarOldRemove = oldRemoveEventListener;\n removeFn.belongsToShim = shim;\n prototype.removeEventListener = removeFn;\n }\n}\n\nexport default wrapGlobals;\n","import scrub from '../scrub.js';\nimport Telemeter from '../telemetry.js';\nimport Tracing from '../tracing/tracing.js';\nimport truncation from '../truncation.js';\n\nimport Rollbar from './core.js';\nimport Instrumenter from './telemetry.js';\nimport wrapGlobals from './wrapGlobals.js';\n\nRollbar.setComponents({\n telemeter: Telemeter,\n instrumenter: Instrumenter,\n wrapGlobals: wrapGlobals,\n scrub: scrub,\n truncation: truncation,\n tracing: Tracing,\n});\n\nexport default Rollbar;\n","import rollbar from '../rollbar.js';\n\nif ((typeof window !== 'undefined') && !window._rollbarStartTime) {\n window._rollbarStartTime = (new Date()).getTime();\n}\n\nexport default rollbar;\n"],"names":["isType","x","t","typeName","name","_typeof","Error","toString","call","match","toLowerCase","isFunction","f","isNativeFunction","reRegExpChar","funcMatchString","Function","prototype","Object","hasOwnProperty","replace","reIsNative","RegExp","isObject","test","value","hasOwn","obj","prop","isString","String","isFiniteNumber","n","Number","isFinite","isIterable","i","type","isError","e","isPromise","p","then","isBrowser","window","redact","uuid4","d","now","uuid","c","r","Math","random","floor","LEVELS","debug","info","warning","error","critical","sanitizeHref","url","urlObject","URL","password","search","_","sanitizeUrl","baseUrlParts","parseUri","anchor","source","query","parseUriOptions","strictMode","key","q","parser","strict","loose","str","undefined","o","m","exec","uri","l","length","$0","$1","$2","addParamsAndAccessTokenToPath","accessToken","options","params","access_token","paramsArray","k","push","join","sort","path","qs","indexOf","h","substring","formatUrl","u","protocol","port","hostname","result","stringify","backup","JSON","jsonError","backupError","maxByteSize","string","count","code","charCodeAt","jsonParse","s","parse","makeUnhandledStackInfo","message","lineno","colno","mode","backupMessage","errorParser","location","line","column","func","guessFunctionName","context","gatherContext","href","document","useragent","navigator","userAgent","stack","wrapCallback","logger","err","resp","nonCircularClone","seen","clone","newSeen","includes","slice","createItem","args","notifier","requestKeys","lambdaContext","custom","callback","request","arg","extraArgs","diagnostic","argTypes","typ","DOMException","j","len","item","timestamp","data","setCustomItemKeys","_originalArgs","original_arg_types","level","skipFrames","addErrorContext","errors","contextAdded","_iterator","_createForOfIteratorHelper","_step","done","merge","rollbarContext","error_context","TELEMETRY_TYPES","TELEMETRY_LEVELS","arrayIncludes","arr","val","_iterator2","_step2","entry","createTelemetryEvent","metadata","event","addItemAttributes","itemData","attributes","_iterator3","_step3","a","get","keys","split","_e","set","setPrototypeOf","temp","replacement","formatArgsAsString","substr","Date","filterIp","requestData","captureIp","newIp","parts","pop","beginning","slashIdx","terminal","concat","handleOptions","current","input","payload","updateDeprecatedOptions","overwriteScrubFields","scrubFields","hostWhiteList","hostSafeList","log","hostBlackList","hostBlockList","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","constructor","src","copy","create","arguments","traverse","v","isObj","isArray","seenIndex","mapped","same","scrub","scrubPaths","scrubPath","paramRes","_getScrubFieldRegexs","queryRes","_getScrubQueryParamRegexs","redactQueryParam","dummy0","paramPart","paramScrubber","regex","valScrubber","scrubber","tmpV","last","_iterator4","entries","_step4","_step4$value","_slicedToArray","index","ret","_iterator5","_step5","field","pat","_iterator6","_step6","MAX_EVENTS","fromMillis","millis","trunc","round","Telemeter","tracing","_this$tracing","_classCallCheck","queue","maxTelemetryEvents","maxQueueSize","max","min","telemetrySpan","startSpan","_createClass","configure","oldOptions","newMaxEvents","deleteCount","splice","copyEvents","events","Array","filterTelemetry","filter","map","_ref","_otelAttributes","otelAttributes","_objectWithoutProperties","_excluded","exportTelemetrySpan","end","capture","rollbarUUID","getLevel","timestamp_ms","body","_exc","captureEvent","captureError","_this$telemetrySpan","addEvent","captureLog","_this$telemetrySpan2","_objectSpread","captureNetwork","subtype","_metadata$response","_metadata$response2","_this$telemetrySpan3","levelFromStatus","status_code","endTimeNano","end_time_ms","method","statusCode","request_headers","response","headers","requestBody","responseBody","start_time_ms","captureDom","element","checked","captureInput","_ref2","_this$telemetrySpan4","isSynthetic","endTimeUnixNano","_getRepeatedEvent","_updateRepeatedEvent","captureClick","_ref3","_this$telemetrySpan5","lastEvent","_lastEvent","target","duration","height","width","textZoomRatio","rate","list","captureFocus","_ref4","_this$telemetrySpan6","captureResize","_ref5","_this$telemetrySpan7","captureDragDrop","_ref6","_this$telemetrySpan8","dropEffect","effectAllowed","kinds","mediaTypes","captureNavigation","from","to","_this$telemetrySpan9","captureDomContentLoaded","ts","getTime","captureLoad","captureConnectivityChange","_ref7","_this$telemetrySpan0","_captureRollbarItem","includeItemsInTelemetry","shift","defaultLevel","manual","Context","parentContext","_currentContext","Map","getValue","setValue","deleteValue","self","delete","ROOT_CONTEXT","ContextManager","currentContext","active","enterContext","previousContext","exitContext","with","fn","thisArg","_len","_key","apply","createContextKey","Symbol","for","toMillis","hrtime","toNanos","add","b","usePerformance","performance","timeOrigin","isHrTime","SpanExporter","api","export","spans","_resultCallback","spanExportQueue","_toConsumableArray","toPayload","_this","resourceSpans","resource","scopeMap","span","scopeKey","instrumentationScope","version","has","scope","_transformSpan","_transformResource","scopeSpans","values","scopeData","_transformInstrumentationScope","post","postSpans","_this2","transformAttributes","_transformAnyValue","transformEvents","timeUnixNano","time","traceId","spanContext","spanId","parentSpanId","kind","startTimeUnixNano","startTime","endTime","_this3","keyValues","_this4","attr","_this5","stringValue","isInteger","intValue","doubleValue","boolValue","arrayValue","kvlistValue","gen","bytes","randomBytes","Uint8Array","crypto","getRandomValues","randHex","byte","padStart","id","SESSION_KEY","Session","_defineProperty","session","_attributes","init","attrs","getSession","createSession","initSessionAttributes","serializedSession","sessionStorage","getItem","_unused","createdAt","setSession","sessionString","setItem","_unused2","setAttributes","setUser","user","email","username","_navigator$userAgentD","_navigator$userAgentD2","_navigator$userAgentD3","userAgentData","brands","language","mobile","platform","levels","warn","disable","_len2","_key2","_len3","_key3","_len4","_key4","_len5","_key5","logLevel","unshift","console","SpanProcessor","exporter","pendingSpans","transforms","userTransform","bind","addTransform","transformFn","transformSpan","applyTransforms","transform","onStart","_parentContext","onEnd","Span","initReadableSpan","spanProcessor","_options$session","status","links","ended","droppedAttributesCount","droppedEventsCount","droppedLinksCount","setAttribute","_i","_Object$entries","_Object$entries$_i","isRecording","Tracer","_this$tracing$resourc","_options$resource","_this$tracing$session","contextManager","parentSpan","getSpan","parentSpanContext","traceFlags","traceState","SPAN_KEY","Tracing","gWindow","createTracer","initSession","_this$options$payload","_this$options$payload2","environment","idGen","tracer","getTracer","addSpanTransform","setSpan","_this$contextManager","withSpan","default","raw","jsonBackup","selectFrames","frames","range","truncateFrames","trace_chain","chain","trace","maybeTruncateValue","truncateStrings","truncator","truncateTraceData","traceData","exception","description","minBody","_step2$value","needsTruncation","maxSize","truncate","strategies","strategy","results","buildPayload","contextResult","getTransportFromOptions","defaults","timeout","transport","detectTransport","proxy","endpoint","opts","pathname","defaultTransport","fetch","XMLHttpRequest","transportOptions","transportAPI","host","appendPathToPath","base","baseTrailingSlash","pathBeginningSlash","iterator","toStringTag","Generator","_regeneratorDefine2","y","G","TypeError","return","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","__proto__","displayName","_regenerator","w","defineProperty","_regeneratorDefine","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","_asyncToGenerator","_next","_throw","_defineProperties","_toPropertyKey","_toPrimitive","toPrimitive","helpers","defaultOptions","OTLPDefaultOptions","Api","urllib","truncation","_getTransport","OTLPTransportOptions","_getOTLPTransport","_postPromise","reject","postItem","setTimeout","_postSpans","_callee","_args","_context","_x","buildJsonPayload","stringifyResult","postJsonPayload","jsonPayload","_options$tracing","reportLevel","uncaughtErrorLevel","maxItems","itemsPerMin","commonScrubFields","apiScrubFields","requestScrubFields","commonScrubHeaders","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","allowEmpty","parseStack","stackString","parseV8OrIeString","parseFFOrSafariString","extractLocation","urlLike","regExp","applySlice","lines","filtered","sanitizedLine","locationParts","functionName","fileName","function","file","col","functionNameRegex","matches","parseOpera9","parseOpera10","parseOpera11","lineRE","tokens","functionCall","argsRaw","parse$1","parseV8OrIE$1","parseFFOrSafari$1","parseOpera$1","parseOpera9$1","parseOpera10$1","parseOpera11$1","stackframesLiteToStackframes","liteStackframes","liteStackframe","lineNumber","columnNumber","parseErrorStack","UNKNOWN_FUNCTION","ERR_CLASS_REGEXP","Frame","stackFrame","_stackFrame","Stack","skip","getStack","parserStack","_mostSpecificErrorName","rawStack","rawException","nested","cause","traceChain","guessErrorClass","errMsg","errClassMatch","errClass","constructorName","checkLevel","settings","levelVal","reportLevelVal","userCheckIgnore","isUncaught","Boolean","_isUncaught","onSendCallback","checkIgnore","urlIsNotBlockListed","urlIsOnAList","urlIsSafeListed","matchFrames","block","frame","filename","urlRegex","listLength","frameLength","safeOrBlock","traces","tracesLength","listName","messageIsIgnored","ignoredMessages","rIgnoredMessage","messages","messagesFromItem","Notifier","_this$queue","enabled","addPendingItem","originalError","_applyTransforms","removePendingItem","addItem","transformIndex","transformsLength","next","Queue","rateLimiter","replay","predicates","pendingItems","pendingRequests","retryQueue","retryHandle","waitCallback","waitIntervalID","_this$api","addPredicate","predicate","idx","originalItem","predicateResult","_applyPredicates","stop","_maybeLog","transmit","replayId","_makeApiRequest","_dequeuePendingRequest","sendOrDiscardReplay","_this$replay","discard","wait","_maybeCallWait","clearInterval","setInterval","rateLimitResponse","shouldSend","_maybeRetry","shouldRetry","retryInterval","RETRIABLE_ERRORS","maxRetries","retries","_retryApiRequest","retryObject","verbose","RateLimiter","counter","perMinCounter","platformOptions","configureGlobal","itemsPerMinute","globalSettings","elapsedTime","globalRateLimit","globalRateLimitPerMin","checkRate","shouldSendValue","underGlobalLimit","perMinute","setPlatformOptions","limit","ignoreRateLimit","limitPerMin","errorResult","rateLimitPayload","msg","extra","framework","Rollbar","telemeter","validateTracer","_configuredOptions","setStackTraceLimit","lastError","lastErrorHash","global","payloadData","_defaultLogLevel","_log","sendJsonPayload","ignoreDuplicateErrors","_sameAsLastError","_addItemAttributes","_addTracingInfo","telemetryEvents","_this$tracing2","sessionId","itemHash","generateItemHash","validateSpan","setTag","opentracingSpanId","toSpanId","opentracingTraceId","toTraceId","opentracing_span_id","opentracing_trace_id","stackTraceLimit","itemToPayload","addPayloadOptions","payloadOptions","addTelemetryData","addMessageWithError","tracePath","newExtra","newItem","promisedItem","addConfigToPayload","sendConfig","configKey","addFunctionOption","addConfiguredOptions","configuredOptions","configured_options","addDiagnosticKeys","client","is_anonymous","is_uncaught","raw_error","constructor_name","failed","captureUncaughtExceptions","handler","shim","oldOnError","_rollbarOldOnError","onerror","handleAnonymousErrors","_rollbarWindowOnError","old","_rollbarWrappedError","_rollbarContext","handleUncaughtException","anonymousErrorsPending","captureUnhandledRejections","_rollbarURH","belongsToShim","removeEventListener","rejectionHandler","evt","reason","promise","detail","handleUnhandledRejection","addEventListener","autoStart","triggerDefaults","samplingRatio","preDuration","postDuration","triggers","logErrors","logEmits","inlineStylesheet","inlineImages","collectFonts","maskInputOptions","tel","text","color","date","month","number","week","maskAllInputs","blockClass","maskTextClass","ignoreClass","slimDOMOptions","script","comment","headFavicon","headWhitespace","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","handleDomException","handleItemWithError","stackInfo","_savedStackTrace","e2","ensureItemHasSomethingToSay","addBaseInfo","server","addRequestInfo","requestInfo","query_string","remoteString","user_ip","addClientInfo","nav","scr","screen","runtime_ms","_rollbarStartTime","javascript","browser","cookie_enabled","cookieEnabled","addPluginInfo","plugins","navPlugins","cur","addBody","addBodyTraceChain","addBodyTrace","addBodyMessage","stackFromItem","_unhandledStackInfo","traceChainLength","buildTrace","guess","className","errorClass","class","pre","contextLength","mid","sendFrameUrl","endsWith","reverse","addScrubber","scrubFn","makeFetchRequest","controller","timeoutId","AbortController","abort","signal","clearTimeout","respHeaders","isItemRoute","json","catch","makeXhrRequest","requestFactory","_createXMLHTTPObject","onreadystatechange","readyState","parseResponse","responseText","_isSuccess","getResponseHeader","_isNormalFailure","_newRetriableError","ex","exc","open","setRequestHeader","send","_e1","XDomainRequest","xdomainrequest","onprogress","ontimeout","onload","factories","ActiveXObject","xmlhttp","numFactories","Transport","_makeZoneRequest","rootZone","Zone","root","run","_makeRequest","RollbarProxy","_proxyRequest","rollbarProxy","_msg","auth","hash","parseInt","pathParts","API","sharedPredicates","Client","tracingDefaults","sharedTransforms","browserDefaults","globals","replayDefaults","_instance","components","Instrumenter","instrumenter","wrapGlobals","Replay","_gWindow","replayOptions","recorder","start","gDocument","isChrome","chrome","runtime","addTransformsToNotifier","addPredicatesToQueue","setupUnhandledCapture","instrument","setSessionAttributesFromOptions","rollbar","_this$instrumenter","_createItem","triggerDirectReplay","triggerReplay","unhandledExceptionsInitialized","captureUncaught","handleUncaughtExceptions","wrapGlobalEventHandlers","unhandledRejectionsInitialized","handleUnhandledRejections","inspectAnonymousErrors","prepareStackTrace","_stack","_isAnonymous","reasonResult","wrap","_before","ctxFn","_isWrap","_rollbar_wrapped","_wrappedSource","setSessionUser","setSessionAttributes","_this$tracing3","_options$payload","_options$client","_options$payload2","_options$payload3","_options$payload4","person","code_version","codeVersion","loadFull","setComponents","callInstance","maybeCallback","_getFirstFunction","_Rollbar","_len6","_key6","_len7","_key7","_len8","_key8","_len9","_key9","_len0","_key0","_len1","_key1","_len10","_key10","_len11","_key11","_len12","_key12","Headers","FetchHeaders","normalizeName","normalizeValue","iteratorFor","items","forEach","append","header","getOwnPropertyNames","oldValue","replacements","orig","getElementType","getAttribute","isDescribedElement","subtypes","tagName","elementType","getElementFromEvent","doc","elementFromPoint","clientX","clientY","treeToArray","elem","MAX_HEIGHT","out","nextDescription","describeElement","parentNode","elementArrayToString","MAX_LENGTH","separator","separatorLength","nextStr","totalLength","descriptionToString","elementString","desc","classes","attribute","isMatchingElement","selectors","cls","classList","contains","sel","domUtil","urlparser","network","networkResponseHeaders","networkResponseBody","networkRequestHeaders","networkRequestBody","networkErrorOnHttp5xx","networkErrorOnHttp4xx","networkErrorOnHttp0","dom","navigation","connectivity","contentSecurityPolicy","errorOnContentSecurityPolicy","restore","nameFromDescription","defaultValueScrubber","patterns","_patterns","_window","_document","removeListeners","autoInstrument","configureScrubbing","eventRemovers","contentsecuritypolicy","_location","_lastHref","_options$scrubTelemet","_options$replay","_options$replay2","_options$replay3","_options$replay4","_options$replay5","_options$replay6","_options$replay7","_options$replay8","_options$replay9","scrubTelemetryInputs","telemetryScrubber","maskInputFn","scrubClasses","scrubSelectors","blockSelector","ignoreSelector","maskTextSelector","oldSettings","instrumentNetwork","deinstrumentNetwork","instrumentConsole","deinstrumentConsole","instrumentDom","deinstrumentDom","instrumentNavigation","deinstrumentNavigation","instrumentConnectivity","deinstrumentConnectivity","instrumentContentSecurityPolicy","deinstrumentContentSecurityPolicy","wrapProp","xhr","xhrp","isUrlObject","_isUrlObject","__rollbar_xhr","request_content_type","onreadystatechangeHandler","__rollbar_event","response_content_type","headersConfig","allHeaders","getAllResponseHeaders","trim","isJsonContentType","scrubJson","addOtelNetworkResponse","errorOnHttpStatus","trackHttpErrors","_fn","_t","reqHeaders","fetchHeaders","telemetryEvent","contentType","endTimeMs","inHeaders","outHeaders","currentHeader","_this$_window","wrapConsole","origConsole","methods","_i2","_methods","addListener","handleEvent","click","handleClick","dragdrop","handleDrag","focus","handleFocus","form","handleForm","handleInput","resize","handleResize","contentLoaded","handleContentLoaded","_evt","_evt$target","isTrusted","_evt$target2","innerWidth","innerHeight","objs","dataTransfer","files","_evt$dataTransfer","_evt$dataTransfer2","scrubInputValue","inputType","mask","_evt$target3","_evt$target4","_evt$target5","_evt$target6","_evt$target7","chromePackagedApp","app","hasPushState","history","pushState","handleUrlChange","parsedHref","parsedTo","parsedFrom","handleConnectivity","handleCspEvent","cspEvent","blockedURI","violatedDirective","effectiveDirective","sourceFile","originalPolicy","handleCspError","cspHandler","section","types","_iterator7","_step7","_loop","passive","_extendListenerPrototype","oldAddEventListener","_rollbarOldAdd","addFn","bubble","oldRemoveEventListener","_rollbarOldRemove","removeFn"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/rollbar.noconflict.umd.min.js b/dist/rollbar.noconflict.umd.min.js index fdde31431..33cf744ad 100644 --- a/dist/rollbar.noconflict.umd.min.js +++ b/dist/rollbar.noconflict.umd.min.js @@ -1,3 +1,3 @@ /*! For license information please see rollbar.noconflict.umd.min.js.LICENSE.txt */ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.rollbar=e():t.rollbar=e()}(this,(function(){return function(){"use strict";var t={d:function(e,r){for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o:function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r:function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.d(e,{default:function(){return Rn}});var r={};t.r(r),t.d(r,{parse:function(){return jt}});var n=Object.prototype.hasOwnProperty,o=Object.prototype.toString,i=function(t){if(!t||"[object Object]"!==o.call(t))return!1;var e,r=n.call(t,"constructor"),i=t.constructor&&t.constructor.prototype&&n.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!r&&!i)return!1;for(e in t);return void 0===e||n.call(t,e)};var a=function t(){var e,r,n,o,a,s=Object.create(null),u=null,l=arguments.length;for(e=0;e=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r0&&(s||(s=O({})),s.extraArgs=O(p));var g,w={message:i,err:a,custom:s,timestamp:R(),callback:u,notifier:r,diagnostic:{},uuid:(g=R(),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){var e=(g+16*Math.random())%16|0;return g=Math.floor(g/16),("x"===t?e:7&e|8).toString(16)})))};return w.data=w.data||{},function(t,e){e&&void 0!==e.level&&(t.level=e.level,delete e.level);e&&void 0!==e.skipFrames&&(t.skipFrames=e.skipFrames,delete e.skipFrames)}(w,s),n&&l&&(w.request=l),o&&(w.lambdaContext=o),w._originalArgs=t,w.diagnostic.original_arg_types=h,w}var E=["log","network","dom","navigation","error","manual"],j=["critical","error","warning","info","debug"];function I(t,e){for(var r=0;r=1&&r>e}function q(t,e,r,n,o,i,a){var s=null;return r&&(r=new Error(r)),r||n||(s=function(t,e,r,n,o){var i,a=e.environment||e.payload&&e.payload.environment;i=o?"item per minute limit reached, ignoring errors until timeout":"maxItems has been hit, ignoring errors until reset.";var s={body:{message:{body:i,extra:{maxItems:r,itemsPerMinute:n}}},language:"javascript",environment:a,notifier:{version:e.notifier&&e.notifier.version||e.version}};"browser"===t?(s.platform="browser",s.framework="browser-js",s.notifier.name="rollbar-browser-js"):"server"===t?(s.framework=e.framework||"node-js",s.notifier.name=e.notifier.name):"react-native"===t&&(s.framework=e.framework||"react-native",s.notifier.name=e.notifier.name);return s}(t,e,o,i,a)),{error:r,shouldSend:n,payload:s}}L.globalSettings={startTime:R(),maxItems:void 0,itemsPerMinute:void 0},L.prototype.configureGlobal=function(t){void 0!==t.startTime&&(L.globalSettings.startTime=t.startTime),void 0!==t.maxItems&&(L.globalSettings.maxItems=t.maxItems),void 0!==t.itemsPerMinute&&(L.globalSettings.itemsPerMinute=t.itemsPerMinute)},L.prototype.shouldSend=function(t,e){var r=(e=e||R())-this.startTime;(r<0||r>=6e4)&&(this.startTime=e,this.perMinCounter=0);var n=L.globalSettings.maxItems,o=L.globalSettings.itemsPerMinute;if(N(t,n,this.counter))return q(this.platform,this.platformOptions,n+" max items reached",!1);if(N(t,o,this.perMinCounter))return q(this.platform,this.platformOptions,o+" items per minute reached",!1);this.counter++,this.perMinCounter++;var i=!N(t,n,this.counter),a=i;return i=i&&!N(t,o,this.perMinCounter),q(this.platform,this.platformOptions,null,i,n,o,a)},L.prototype.setPlatformOptions=function(t,e){this.platform=t,this.platformOptions=e};var D=L;function M(t){return M="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},M(t)}function U(t,e){for(var r=0;rthis.options.maxRetries&&(o=!1))}o?this._retryApiRequest(r,n):n(e)}},{key:"_retryApiRequest",value:function(t,e){var r=this;this.retryQueue.push({item:t,callback:e}),this.retryHandle||(this.retryHandle=setInterval((function(){for(;r.retryQueue.length;){var t=r.retryQueue.shift();r._makeApiRequest(t.item,t.callback)}}),this.options.retryInterval))}},{key:"_dequeuePendingRequest",value:function(t){var e=this.pendingRequests.indexOf(t);-1!==e&&(this.pendingRequests.splice(e,1),this._maybeCallWait())}},{key:"_maybeLog",value:function(t,e){if(this.logger&&this.options.verbose){var r=e||T(t,"body.trace.exception.message")||T(t,"body.trace_chain.0.exception.message");if(r)return void this.logger.error(r);(r=T(t,"body.message.body"))&&this.logger.log(r)}}},{key:"_maybeCallWait",value:function(){return!(!p(this.waitCallback)||0!==this.pendingItems.length||0!==this.pendingRequests.length||(this.waitIntervalID&&(this.waitIntervalID=clearInterval(this.waitIntervalID)),this.waitCallback(),0))}}],r&&U(e.prototype,r),n&&U(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r,n}();F=W,V=["ECONNRESET","ENOTFOUND","ESOCKETTIMEDOUT","ETIMEDOUT","ECONNREFUSED","EHOSTUNREACH","EPIPE","EAI_AGAIN"],(J=H(J="RETRIABLE_ERRORS"))in F?Object.defineProperty(F,J,{value:V,enumerable:!0,configurable:!0,writable:!0}):F[J]=V;var B=W;function G(t,e){this.queue=t,this.options=e,this.transforms=[],this.diagnostic={}}G.prototype.configure=function(t){this.queue&&this.queue.configure(t);var e=this.options;return this.options=a(e,t),this},G.prototype.addTransform=function(t){return p(t)&&this.transforms.push(t),this},G.prototype.log=function(t,e){if(e&&p(e)||(e=function(){}),!this.options.enabled)return e(new Error("Rollbar is not enabled"));this.queue.addPendingItem(t);var r=t.err;this._applyTransforms(t,function(n,o){if(n)return this.queue.removePendingItem(t),e(n,null);this.queue.addItem(o,e,r,t)}.bind(this))},G.prototype._applyTransforms=function(t,e){var r=-1,n=this.transforms.length,o=this.transforms,i=this.options,a=function(t,s){t?e(t,null):++r!==n?o[r](s,i,a):e(null,s)};a(null,t)};var $=G;function z(t,e,r,n,o,i,s){this.options=a(t),this.logger=r,z.rateLimiter.configureGlobal(this.options),z.rateLimiter.setPlatformOptions(s,this.options),this.api=e,this.queue=new B(z.rateLimiter,e,r,this.options,i),this.tracing=o;var u=this.options.tracer||null;Z(u)?(this.tracer=u,this.options.tracer="opentracing-tracer-enabled",this.options._configuredOptions.tracer="opentracing-tracer-enabled"):this.tracer=null,this.notifier=new $(this.queue,this.options),this.telemeter=n,X(t),this.lastError=null,this.lastErrorHash="none"}function X(t){t.stackTraceLimit&&(Error.stackTraceLimit=t.stackTraceLimit)}function Z(t){if(!t)return!1;if(!t.scope||"function"!=typeof t.scope)return!1;var e=t.scope();return!(!e||!e.active||"function"!=typeof e.active)}z.rateLimiter=new D({maxItems:0,itemsPerMinute:60}),z.prototype.global=function(t){return z.rateLimiter.configureGlobal(t),this},z.prototype.configure=function(t,e){var r=this.options,n={};e&&(n={payload:e}),this.options=a(r,t,n);var o=this.options.tracer||null;return Z(o)?(this.tracer=o,this.options.tracer="opentracing-tracer-enabled",this.options._configuredOptions.tracer="opentracing-tracer-enabled"):this.tracer=null,this.notifier&&this.notifier.configure(this.options),this.telemeter&&this.telemeter.configure(this.options),X(t),this.global(this.options),Z(t.tracer)&&(this.tracer=t.tracer),this},z.prototype.log=function(t){var e=this._defaultLogLevel();return this._log(e,t)},z.prototype.debug=function(t){this._log("debug",t)},z.prototype.info=function(t){this._log("info",t)},z.prototype.warn=function(t){this._log("warning",t)},z.prototype.warning=function(t){this._log("warning",t)},z.prototype.error=function(t){this._log("error",t)},z.prototype.critical=function(t){this._log("critical",t)},z.prototype.wait=function(t){this.queue.wait(t)},z.prototype.captureEvent=function(t,e,r){return this.telemeter&&this.telemeter.captureEvent(t,e,r)},z.prototype.captureDomContentLoaded=function(t){return this.telemeter&&this.telemeter.captureDomContentLoaded(t)},z.prototype.captureLoad=function(t){return this.telemeter&&this.telemeter.captureLoad(t)},z.prototype.buildJsonPayload=function(t){return this.api.buildJsonPayload(t)},z.prototype.sendJsonPayload=function(t){this.api.postJsonPayload(t)},z.prototype._log=function(t,e){var r;if(e.callback&&(r=e.callback,delete e.callback),this.options.ignoreDuplicateErrors&&this._sameAsLastError(e)){if(r){var n=new Error("ignored identical item");n.item=e,r(n)}}else try{e.level=e.level||t,this._addTracingAttributes(e),this._addTracingInfo(e);var o=this.telemeter;o&&(o._captureRollbarItem(e),e.telemetryEvents=o.copyEvents()||[]),this.notifier.log(e,r)}catch(t){r&&r(t),this.logger.error(t)}},z.prototype._addTracingAttributes=function(t){var e,r,n=null===(e=this.tracing)||void 0===e?void 0:e.getSpan(),o=[{key:"session_id",value:null===(r=this.tracing)||void 0===r?void 0:r.sessionId},{key:"span_id",value:null==n?void 0:n.spanId},{key:"trace_id",value:null==n?void 0:n.traceId}];P(t.data,o),null==n||n.addEvent("rollbar.occurrence",[{key:"rollbar.occurrence.uuid",value:t.uuid}])},z.prototype._defaultLogLevel=function(){return this.options.logLevel||"debug"},z.prototype._sameAsLastError=function(t){if(!t._isUncaught)return!1;var e=function(t){var e=t.message||"",r=(t.err||{}).stack||String(t.err);return e+"::"+r}(t);return this.lastErrorHash===e||(this.lastError=t.err,this.lastErrorHash=e,!1)},z.prototype._addTracingInfo=function(t){if(this.tracer){var e=this.tracer.scope().active();if(function(t){if(!t||!t.context||"function"!=typeof t.context)return!1;var e=t.context();if(!e||!e.toSpanId||!e.toTraceId||"function"!=typeof e.toSpanId||"function"!=typeof e.toTraceId)return!1;return!0}(e)){e.setTag("rollbar.error_uuid",t.uuid),e.setTag("rollbar.has_error",!0),e.setTag("error",!0),e.setTag("rollbar.item_url","https://rollbar.com/item/uuid/?uuid=".concat(t.uuid)),e.setTag("rollbar.occurrence_url","https://rollbar.com/occurrence/uuid/?uuid=".concat(t.uuid));var r=e.context().toSpanId(),n=e.context().toTraceId();t.custom?(t.custom.opentracing_span_id=r,t.custom.opentracing_trace_id=n):t.custom={opentracing_span_id:r,opentracing_trace_id:n}}}};var Q=z;function K(t){if(!c(t.context,"string")){var e=w(t.context);e.error?t.context="Error: could not serialize 'context'":t.context=e.value||"",t.context.length>255&&(t.context=t.context.substr(0,255))}return{data:t}}function Y(t,e,r){var n=e.hostname,o=e.protocol,i=e.port,a=e.path,s=e.search,u=t.timeout,l=function(t){var e="undefined"!=typeof window&&window||"undefined"!=typeof self&&self,r=t.defaultTransport||"xhr";void 0===e.fetch&&(r="xhr");void 0===e.XMLHttpRequest&&(r="fetch");return r}(t),c=t.proxy;if(t.endpoint){var f=r.parse(t.endpoint);n=f.hostname,o=f.protocol,i=f.port,a=f.pathname,s=f.search}return{timeout:u,hostname:n,protocol:o,port:i,path:a,search:s,proxy:c,transport:l}}function tt(t,e){var r=t.protocol||"https:",n=t.port||("http:"===r?80:"https:"===r?443:void 0),o=t.hostname,i=t.path,a=t.timeout,s=t.transport;return t.search&&(i+=t.search),t.proxy&&(i=r+"//"+o+i,o=t.proxy.host||t.proxy.hostname,n=t.proxy.port,r=t.proxy.protocol||r),{timeout:a,protocol:r,hostname:o,path:i,port:n,method:e,transport:s}}function et(t){return et="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},et(t)}function rt(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function nt(t){for(var e=1;e=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(u&&l){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),P(r),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;P(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:A(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),v}},e}function at(t,e,r,n,o,i,a){try{var s=t[i](a),u=s.value}catch(t){return void r(t)}s.done?e(u):Promise.resolve(u).then(n,o)}var st={hostname:"api.rollbar.com",path:"/api/1/item/",search:null,version:"1",protocol:"https:",port:443},ut={hostname:"api.rollbar.com",path:"/api/1/session/",search:null,version:"1",protocol:"https:",port:443};function lt(t,e,r,n){this.options=t,this.transport=e,this.url=r,this.truncation=n,this.accessToken=t.accessToken,this.transportOptions=ct(t,r),this.OTLPTransportOptions=ft(t,r)}function ct(t,e){return Y(t,st,e)}function ft(t,e){var r;return Y(t=nt(nt({},t),{},{endpoint:null===(r=t.tracing)||void 0===r?void 0:r.endpoint}),ut,e)}lt.prototype._postPromise=function(t){var e=t.accessToken,r=t.options,n=t.payload,o=t.headers,i=this;return new Promise((function(t,a){i.transport.post({accessToken:e,options:r,payload:n,headers:o,callback:function(e,r){return e?a(e):t(r)}})}))},lt.prototype.postItem=function(t,e){var r=tt(this.transportOptions,"POST"),n=K(t),o=this;setTimeout((function(){o.transport.post({accessToken:o.accessToken,options:r,payload:n,callback:e})}),0)},lt.prototype.postSpans=function(){var t,e=(t=it().mark((function t(e){var r,n,o=arguments;return it().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=o.length>1&&void 0!==o[1]?o[1]:{},n=tt(this.OTLPTransportOptions,"POST"),t.next=4,this._postPromise({accessToken:this.accessToken,options:n,payload:e,headers:r});case 4:return t.abrupt("return",t.sent);case 5:case"end":return t.stop()}}),t,this)})),function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){at(i,n,o,a,s,"next",t)}function s(t){at(i,n,o,a,s,"throw",t)}a(void 0)}))});return function(t){return e.apply(this,arguments)}}(),lt.prototype.buildJsonPayload=function(t,e){var r,n=K(t);return(r=this.truncation?this.truncation.truncate(n):w(n)).error?(e&&e(r.error),null):r.value},lt.prototype.postJsonPayload=function(t,e){var r=tt(this.transportOptions,"POST");this.transport.postJsonPayload(this.accessToken,r,t,e)},lt.prototype.configure=function(t){var e=this.oldOptions;return this.options=a(e,t),this.transportOptions=ct(this.options,this.url),this.OTLPTransportOptions=ft(this.options,this.url),void 0!==this.options.accessToken&&(this.accessToken=this.options.accessToken),this};var pt=lt,ht=function(){},dt={debug:0,info:1,warn:2,error:3,disable:4},yt={error:function(){for(var t=arguments.length,e=new Array(t),r=0;rt.length)&&(e=t.length);for(var r=0,n=Array(e);r=400&&t.status<600}(e)){if(403===e.status){var o=t.value&&t.value.message;vt.error(o)}s(new Error(String(e.status)))}else{s(St("XHR response had no status code (likely connection failure)"))}}}catch(t){var i;i=t&&t.stack?t:new Error(t),s(i)}};if(e.open(o,n,!0),e.setRequestHeader){e.setRequestHeader("Content-Type","application/json"),e.setRequestHeader("X-Rollbar-Access-Token",r);for(var p=0,h=Object.entries(null!=a?a:{});ps)?(a=e.path,e.path=a.substring(0,s)+i+"&"+a.substring(s+1)):-1!==u?(a=e.path,e.path=a.substring(0,u)+i+a.substring(u)):e.path=e.path+i}(t,e,r);var i=g(e);this._makeZoneRequest({accessToken:t,url:i,method:"GET",callback:n,requestFactory:o,timeout:e.timeout,transport:e.transport})},xt.prototype.post=function(t){var e=this,r=t.accessToken,n=t.options,o=t.payload,i=t.headers,a=t.callback,s=t.requestFactory;return function(t){if(a&&p(a)||(a=function(){}),!t)return a(new Error("Cannot send empty request"));var o;if((o=e.truncation&&t.body?e.truncation.truncate(t):w(t)).error)return a(o.error);t=o.value;var u=g(n);e._makeZoneRequest({accessToken:r,url:u,method:"POST",payload:t,headers:i,callback:a,requestFactory:s,timeout:n.timeout,transport:n.transport})}(o)},xt.prototype.postJsonPayload=function(t,e,r,n,o){n&&p(n)||(n=function(){});var i=g(e);this._makeZoneRequest({accessToken:t,url:i,method:"POST",payload:r,callback:n,requestFactory:o,timeout:e.timeout,transport:e.transport})},xt.prototype._makeZoneRequest=function(){var t="undefined"!=typeof window&&window||void 0!==n&&n,e=t&&t.Zone&&t.Zone.root,r=Array.prototype.slice.call(arguments);if(e){var n=this;e.run((function(){n._makeRequest.apply(void 0,r)}))}else this._makeRequest.apply(void 0,r)},xt.prototype._makeRequest=function(t){var e=t.payload,r=t.callback,n=t.transport;if("undefined"!=typeof RollbarProxy)return function(t,e){(new RollbarProxy).sendJsonPayload(t,(function(t){}),(function(t){e(new Error(t))}))}(e,r);"fetch"===n?wt(t):Ot(t)};var Et=xt;function jt(t){var e,r,n={protocol:null,auth:null,host:null,path:null,hash:null,href:t,hostname:null,port:null,pathname:null,search:null,query:null};if(-1!==(e=t.indexOf("//"))?(n.protocol=t.substring(0,e),r=e+2):r=0,-1!==(e=t.indexOf("@",r))&&(n.auth=t.substring(r,e),r=e+1),-1===(e=t.indexOf("/",r))){if(-1===(e=t.indexOf("?",r)))return-1===(e=t.indexOf("#",r))?n.host=t.substring(r):(n.host=t.substring(r,e),n.hash=t.substring(e)),n.hostname=n.host.split(":")[0],n.port=n.host.split(":")[1],n.port&&(n.port=parseInt(n.port,10)),n;n.host=t.substring(r,e),n.hostname=n.host.split(":")[0],n.port=n.host.split(":")[1],n.port&&(n.port=parseInt(n.port,10)),r=e}else n.host=t.substring(r,e),n.hostname=n.host.split(":")[0],n.port=n.host.split(":")[1],n.port&&(n.port=parseInt(n.port,10)),r=e;if(-1===(e=t.indexOf("#",r))?n.path=t.substring(r):(n.path=t.substring(r,e),n.hash=t.substring(e)),n.path){var o=n.path.split("?");n.pathname=o[0],n.query=o[1],n.search=n.query?"?"+n.query:null}return n}var It=/(^|@)\S+:\d+/,Pt=/^\s*at .*(\S+:\d+|\(native\))/m,Tt=/^(eval@)?(\[native code\])?$/;function At(t,e){if(void 0!==t.stacktrace||void 0!==t["opera#sourceloc"])return function(t,e){return!t.stacktrace||t.message.includes("\n")&&t.message.split("\n").length>t.stacktrace.split("\n").length?function(t,e){for(var r=/Line (\d+).*script (?:in )?(\S+)/i,n=t.message.split("\n"),o=[],i=2,a=n.length;i/,"$2").replace(/\([^)]*\)/g,"")||void 0;return o.match(/\(([^)]*)\)/)&&(e=o.replace(/^[^(]+\(([^)]*)\)$/,"$1")),{function:i,args:void 0===e||"[arguments not available]"===e?void 0:e.split(","),file:n[0],line:n[1]?+n[1]:void 0,col:n[2]?+n[2]:void 0,raw:t}}))}(t,e):function(t,e){for(var r=/Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i,n=t.stacktrace.split("\n"),o=[],i=0,a=n.length;i"].includes(n[0])?void 0:n[0],line:n[1]?+n[1]:void 0,col:n[2]?+n[2]:void 0,raw:t}}))}function Nt(t,e){return Ct(t.split("\n").filter((function(t){return!t.match(Tt)})),e).map((function(t){if(t.includes(" > eval")&&(t=t.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),t.includes("@")||t.includes(":")){var e=/(([^\n\r"\u2028\u2029]*".[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*(?:@[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*)*(?:[\n\r\u2028\u2029][^@]*)?)?[^@]*)@/,r=t.match(e),n=r&&r[1]?r[1]:void 0,o=Rt(t.replace(e,""));return{function:n,file:o[0],line:o[1]?+o[1]:void 0,col:o[2]?+o[2]:void 0,raw:t}}return{function:t}}))}function qt(t){return t.map((function(t){return{functionName:t.function,args:t.args,fileName:t.file,lineNumber:t.line,columnNumber:t.col,source:t.raw}}))}var Dt=new RegExp("^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): ");function Mt(){return null}function Ut(t){var e={};return e._stackFrame=t,e.url=t.fileName,e.line=t.lineNumber,e.func=t.functionName,e.column=t.columnNumber,e.args=t.args,e.context=null,e}function Ht(t,e){return{stack:function(){var r,n=[];e=e||0;try{n=qt(At(t,r))}catch(t){n=[]}for(var o=[],i=e;it.length)&&(e=t.length);for(var r=0,n=Array(e);r0&&A(e,"data.request",o),n(null,e)}}(r)).addTransform(function(t){return function(e,r,n){if(!t)return n(null,e);var o=t.navigator||{},i=t.screen||{};A(e,"data.client",{runtime_ms:e.timestamp-t._rollbarStartTime,timestamp:Math.round(e.timestamp/1e3),javascript:{browser:o.userAgent,language:o.language,cookie_enabled:o.cookieEnabled,screen:{width:i.width,height:i.height}}}),n(null,e)}}(r)).addTransform(function(t){return function(e,r,n){if(!t||!t.navigator)return n(null,e);for(var o,i=[],a=t.navigator.plugins||[],s=0,u=a.length;sn&&(o=this.queue.length-n),this.maxQueueSize=n,this.queue.splice(0,o)}},{key:"copyEvents",value:function(){var t=Array.prototype.slice.call(this.queue,0);if(p(this.options.filterTelemetry))try{for(var e=t.length;e--;)this.options.filterTelemetry(t[e])&&t.splice(e,1)}catch(t){this.options.filterTelemetry=null}return t=t.filter((function(t){return"connectivity"!==t.type})),t=t.map((function(t){t.otelAttributes;var e=function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(-1!==e.indexOf(n))continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.telemetrySpan&&(this.telemetrySpan.end(t),this.telemetrySpan=this.tracing.startSpan("rollbar-telemetry",{}))}},{key:"capture",value:function(t,e,r,n){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,a={level:Je(t,r),type:t,timestamp_ms:o||R(),body:e,source:"client"};n&&(a.uuid=n),i&&(a.otelAttributes=i);try{if(p(this.options.filterTelemetry)&&this.options.filterTelemetry(a))return!1}catch(t){this.options.filterTelemetry=null}return this.push(a),a}},{key:"captureEvent",value:function(t,e,r,n){return this.capture(t,e,r,n)}},{key:"captureError",value:function(t,e,r,n){var o,i=t.message||String(t),a={message:i};t.stack&&(a.stack=t.stack);var s={message:i,level:e,type:"error",uuid:r};return null===(o=this.telemetrySpan)||void 0===o||o.addEvent("rollbar-occurrence-event",s,He(n)),this.capture("error",a,e,r,n,s)}},{key:"captureLog",value:function(t,e,r,n){var o,i,a=null;r?(a={message:t,level:e,type:"message",uuid:r},null===(o=this.telemetrySpan)||void 0===o||o.addEvent("rollbar-occurrence-event",a,He(n))):(a={message:t,level:e},null===(i=this.telemetrySpan)||void 0===i||i.addEvent("rollbar-log-event",a,He(n)));return this.capture("log",{message:t},e,r,n,a)}},{key:"captureNetwork",value:function(t,e,r,n){var o,i;e=e||"xhr",t.subtype=t.subtype||e,n&&(t.request=n);var a=this.levelFromStatus(t.status_code),s=1e6*(t.end_time_ms||0),u={type:t.subtype,method:t.method,url:t.url,statusCode:t.status_code,"request.headers":JSON.stringify(t.request_headers||{}),"response.headers":JSON.stringify((null===(o=t.response)||void 0===o?void 0:o.headers)||{}),"response.timeUnixNano":s.toString()};return null===(i=this.telemetrySpan)||void 0===i||i.addEvent("rollbar-network-event",u,He(t.start_time_ms)),this.capture("network",t,a,r,t.start_time_ms,u)}},{key:"levelFromStatus",value:function(t){return t>=200&&t<400?"info":0===t||t>=400?"error":"info"}},{key:"captureDom",value:function(t,e,r,n,o){var i={subtype:t,element:e};return void 0!==r&&(i.value=r),void 0!==n&&(i.checked=n),this.capture("dom",i,"info",o)}},{key:"captureInput",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.value,a=t.timestamp,s="rollbar-input-event",u={type:s,subtype:r,element:o,value:i},l={type:r,isSynthetic:n,element:o,value:i,endTimeUnixNano:He(a)},c=this._getRepeatedEvent(s,l);return c?this._updateRepeatedEvent(c,l,a):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(s,l,He(a)),this.capture("dom",u,"info",null,a,l))}},{key:"captureClick",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.timestamp,a="rollbar-click-event",s={type:a,subtype:r,element:o},u={type:r,isSynthetic:n,element:o,endTimeUnixNano:He(i)},l=this._getRepeatedEvent(a,u);return l?this._updateRepeatedEvent(l,u,i):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(a,u,He(i)),this.capture("dom",s,"info",null,i,u))}},{key:"_getRepeatedEvent",value:function(t,e){var r=this._lastEvent(this.queue);if(r&&r.body.type===t&&r.otelAttributes.target===e.target)return r}},{key:"_updateRepeatedEvent",value:function(t,e,r){var n=Math.max(r-t.timestamp_ms,1);t.body.value=e.value,t.otelAttributes.value=e.value,t.otelAttributes.height=e.height,t.otelAttributes.width=e.width,t.otelAttributes.textZoomRatio=e.textZoomRatio,t.otelAttributes.endTimeUnixNano=He(r),t.otelAttributes.durationUnixNano=He(n),t.otelAttributes.count=(t.otelAttributes.count||1)+1,t.otelAttributes.rate=t.otelAttributes.count/(n/1e3)}},{key:"_lastEvent",value:function(t){return t.length>0?t[t.length-1]:null}},{key:"captureFocus",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.timestamp,a="rollbar-focus-event",s={type:a,subtype:r,element:o},u={type:r,isSynthetic:n,element:o};return null===(e=this.telemetrySpan)||void 0===e||e.addEvent(a,u,He(i)),this.capture("dom",s,"info",null,i,u)}},{key:"captureResize",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.width,i=t.height,a=t.textZoomRatio,s=t.timestamp,u="rollbar-resize-event",l={type:u,subtype:r,width:o,height:i,textZoomRatio:a},c={type:r,isSynthetic:n,width:o,height:i,textZoomRatio:a},f=this._getRepeatedEvent(u,c);return f?this._updateRepeatedEvent(f,c,s):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(u,c,He(s)),this.capture("dom",l,"info",null,s,c))}},{key:"captureDragDrop",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.dropEffect,a=t.effectAllowed,s=t.kinds,u=t.mediaTypes,l=t.timestamp,c="rollbar-dragdrop-event",f={type:c,subtype:r,isSynthetic:n},p={type:r,isSynthetic:n};return"dragstart"===r&&(f=Ne(Ne({},f),{},{element:o,dropEffect:i,effectAllowed:a}),p=Ne(Ne({},p),{},{element:o,dropEffect:i,effectAllowed:a})),"drop"===r&&(f=Ne(Ne({},f),{},{element:o,dropEffect:i,effectAllowed:a,kinds:s,mediaTypes:u}),p=Ne(Ne({},p),{},{element:o,dropEffect:i,effectAllowed:a,kinds:s,mediaTypes:u})),null===(e=this.telemetrySpan)||void 0===e||e.addEvent(c,p,He(l)),this.capture("dom",f,"info",null,l,p)}},{key:"captureNavigation",value:function(t,e,r,n){var o;return null===(o=this.telemetrySpan)||void 0===o||o.addEvent("rollbar-navigation-event",{"previous.url.full":t,"url.full":e},He(n)),this.capture("navigation",{from:t,to:e},"info",r,n)}},{key:"captureDomContentLoaded",value:function(t){return this.capture("navigation",{subtype:"DOMContentLoaded"},"info",void 0,t&&t.getTime())}},{key:"captureLoad",value:function(t){return this.capture("navigation",{subtype:"load"},"info",void 0,t&&t.getTime())}},{key:"captureConnectivityChange",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.timestamp,i="rollbar-connectivity-event",a={type:i,subtype:r},s={type:r,isSynthetic:n};return null===(e=this.telemetrySpan)||void 0===e||e.addEvent(i,s,He(o)),this.capture("connectivity",a,"info",null,o,s)}},{key:"_captureRollbarItem",value:function(t){if(this.options.includeItemsInTelemetry)return t.err?this.captureError(t.err,t.level,t.uuid,t.timestamp):t.message?this.captureLog(t.message,t.level,t.uuid,t.timestamp):t.custom?this.capture("log",t.custom,t.level,t.uuid,t.timestamp):void 0}},{key:"push",value:function(t){this.queue.push(t),this.queue.length>this.maxQueueSize&&this.queue.shift()}}])}();function Je(t,e){if(e)return e;return{error:"error",manual:"info"}[t]||"info"}var Ve=Fe;function We(t){return"string"!=typeof t&&(t=String(t)),t.toLowerCase()}function Be(t){this.map={},t instanceof Be?t.forEach((function(t,e){this.append(e,t)}),this):Array.isArray(t)?t.forEach((function(t){this.append(t[0],t[1])}),this):t&&Object.getOwnPropertyNames(t).forEach((function(e){this.append(e,t[e])}),this)}Be.prototype.append=function(t,e){t=We(t),e=function(t){return"string"!=typeof t&&(t=String(t)),t}(e);var r=this.map[t];this.map[t]=r?r+", "+e:e},Be.prototype.get=function(t){return t=We(t),this.has(t)?this.map[t]:null},Be.prototype.has=function(t){return this.map.hasOwnProperty(We(t))},Be.prototype.forEach=function(t,e){for(var r in this.map)this.map.hasOwnProperty(r)&&t.call(e,this.map[r],r,this)},Be.prototype.entries=function(){var t=[];return this.forEach((function(e,r){t.push([r,e])})),function(t){return{next:function(){var e=t.shift();return{done:void 0===e,value:e}}}}(t)};var Ge=function(t){return"undefined"==typeof Headers?new Be(t):new Headers(t)};var $e=function(t,e,r,n,o){var i=t[e];t[e]=r(i),n&&n[o].push([t,e,i])};var ze=function(t,e,r){var n,o,i,a,s=c(t,"object"),u=c(t,"array"),l=[];if(r=r||{obj:[],mapped:[]},s){if(a=r.obj.indexOf(t),s&&-1!==a)return r.mapped[a]||r.obj[a];r.obj.push(t),a=r.obj.length-1}if(s)for(n in t)Object.prototype.hasOwnProperty.call(t,n)&&l.push(n);else if(u)for(i=0;i=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function Ke(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=0;i--){if(e=tr(t[i]),r=o+3*n.length+e.length,i=83){n.unshift("...");break}n.unshift(e),o+=e.length}return n.join(" > ")}(function(t){for(var e,r=[],n=0;t&&n<5&&"html"!==(e=er(t)).tagName;n++)r.unshift(e),t=t.parentNode;return r}(t))}function tr(t){if(!t||!t.tagName)return"";var e=[t.tagName];t.id&&e.push("#"+t.id),t.classes&&e.push("."+t.classes.join("."));for(var r=0;r=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function sr(t,e){if(t){if("string"==typeof t)return ur(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ur(t,e):void 0}}function ur(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r3)){var e=R();o.__rollbar_xhr.end_time_ms=e;var r=null;if(o.__rollbar_xhr.response_content_type=o.getResponseHeader("Content-Type"),t.autoInstrument.networkResponseHeaders){var i=t.autoInstrument.networkResponseHeaders;r={};try{var a;if(!0===i){var s=o.getAllResponseHeaders();if(s){var u,l,c,f=ar(s.trim().split(/[\r\n]+/));try{for(f.s();!(c=f.n()).done;){a=(u=c.value.split(": ")).shift(),l=u.join(": "),r[a]=l}}catch(t){f.e(t)}finally{f.f()}}}else{var p,h=ar(i);try{for(h.s();!(p=h.n()).done;){var d=p.value;r[d]=o.getResponseHeader(d)}}catch(t){h.e(t)}finally{h.f()}}}catch(t){}}var y=null;if(t.autoInstrument.networkResponseBody)try{y=o.responseText}catch(t){}var v=null;(y||r)&&(v={},y&&(t.isJsonContentType(o.__rollbar_xhr.response_content_type)?v.body=t.scrubJson(y):v.body=y),r&&(v.headers=r)),v&&(o.__rollbar_xhr.response=v);try{var m=o.status;m=1223===m?204:m,o.__rollbar_xhr.status_code=m,t.addOtelNetworkResponse(o.__rollbar_event,e,m),o.__rollbar_event.level=t.telemeter.levelFromStatus(m),t.errorOnHttpStatus(o.__rollbar_xhr)}catch(t){}}}return e("onload",o),e("onerror",o),e("onprogress",o),"onreadystatechange"in o&&p(o.onreadystatechange)?$e(o,"onreadystatechange",(function(e){return t.rollbar.wrap(e,void 0,i)})):o.onreadystatechange=i,o.__rollbar_xhr&&t.trackHttpErrors()&&(o.__rollbar_xhr.stack=(new Error).stack),r.apply(this,arguments)}}),this.replacements,"network")}"fetch"in this._window&&$e(this._window,"fetch",(function(e){return function(r,n){var o,i=Array.prototype.slice.call(arguments),a=i[0],s="GET",u=hr(a);c(a,"string")||u?o=u?a.toString():a:a&&(o=a.url,a.method&&(s=a.method)),i[1]&&i[1].method&&(s=i[1].method);var l={method:s,url:o,status_code:null,start_time_ms:R(),end_time_ms:null};if(i[1]&&i[1].headers){var f=Ge(i[1].headers);l.request_content_type=f.get("Content-Type"),t.autoInstrument.networkRequestHeaders&&(l.request_headers=t.fetchHeaders(f,t.autoInstrument.networkRequestHeaders))}t.autoInstrument.networkRequestBody&&(i[1]&&i[1].body?l.request=i[1].body:i[0]&&!c(i[0],"string")&&i[0].body&&(l.request=i[0].body));var p=t.captureNetwork(l,"fetch",void 0);return t.trackHttpErrors()&&(l.stack=(new Error).stack),e.apply(this,i).then((function(e){var r=R();l.end_time_ms=r,l.status_code=e.status,t.addOtelNetworkResponse(p,r,e.status),l.response_content_type=e.headers.get("Content-Type");var n=null;t.autoInstrument.networkResponseHeaders&&(n=t.fetchHeaders(e.headers,t.autoInstrument.networkResponseHeaders));var o=null;return t.autoInstrument.networkResponseBody&&"function"==typeof e.text&&(o=e.clone().text()),(n||o)&&(l.response={},o&&("function"==typeof o.then?o.then((function(e){e&&t.isJsonContentType(l.response_content_type)?l.response.body=t.scrubJson(e):l.response.body=e})):l.response.body=o),n&&(l.response.headers=n)),t.errorOnHttpStatus(l),e}))}}),this.replacements,"network")}},{key:"captureNetwork",value:function(t,e,r){return t.request&&this.isJsonContentType(t.request_content_type)&&(t.request=this.scrubJson(t.request)),this.telemeter.captureNetwork(t,e,r)}},{key:"isJsonContentType",value:function(t){return!!(t&&c(t,"string")&&t.toLowerCase().includes("json"))}},{key:"addOtelNetworkResponse",value:function(t,e,r){t.otelAttributes&&(t.otelAttributes["response.timeUnixNano"]=(1e6*e).toString(),t.otelAttributes.statusCode=r)}},{key:"scrubJson",value:function(t){return JSON.stringify(Ze(JSON.parse(t),this.options.scrubFields))}},{key:"fetchHeaders",value:function(t,e){var r={};try{if(!0===e){if("function"==typeof t.entries)for(var n=t.entries(),o=n.next();!o.done;)r[o.value[0]]=o.value[1],o=n.next()}else{var i,a=ar(e);try{for(a.s();!(i=a.n()).done;){var s=i.value;r[s]=t.get(s)}}catch(t){a.e(t)}finally{a.f()}}}catch(t){}return r}},{key:"trackHttpErrors",value:function(){return this.autoInstrument.networkErrorOnHttp5xx||this.autoInstrument.networkErrorOnHttp4xx||this.autoInstrument.networkErrorOnHttp0}},{key:"errorOnHttpStatus",value:function(t){var e=t.status_code;if(e>=500&&this.autoInstrument.networkErrorOnHttp5xx||e>=400&&this.autoInstrument.networkErrorOnHttp4xx||0===e&&this.autoInstrument.networkErrorOnHttp0){var r=new Error("HTTP request failed with Status "+e);r.stack=t.stack,this.rollbar.error(r,{skipFrames:1})}}},{key:"deinstrumentConsole",value:function(){for(var t;this.replacements.log.length;)t=this.replacements.log.shift(),this._window.console[t[0]]=t[1]}},{key:"instrumentConsole",value:function(){var t;if(null!==(t=this._window)&&void 0!==t&&null!==(t=t.console)&&void 0!==t&&t.log){var e=this,r=this._window.console;try{for(var n=0,o=["debug","info","warn","error","log"];n500&&(n=n.substr(0,497)+"...");break;case"null":n="null";break;case"undefined":n="undefined";break;case"symbol":n=n.toString()}o.push(n)}return o.join(" ")}(t);e.telemeter.captureLog(r,i,null,R()),n&&Function.prototype.apply.call(n,o,t)},e.replacements.log.push([t,n])}}},{key:"deinstrumentDom",value:function(){this.removeListeners("dom")}},{key:"instrumentDom",value:function(){var t=this;this.addListener("dom",this._window,["click","dblclick","contextmenu"],(function(e){return t.handleEvent("click",e)})),this.addListener("dom",this._window,["dragstart","dragend","dragenter","dragleave","drop"],(function(e){return t.handleEvent("dragdrop",e)})),this.addListener("dom",this._window,["blur","focus"],(function(e){return t.handleEvent("focus",e)})),this.addListener("dom",this._window,["submit","invalid"],(function(e){return t.handleEvent("form",e)})),this.addListener("dom",this._window,["input","change"],(function(e){return t.handleEvent("input",e)})),this.addListener("dom",this._window,["resize"],(function(e){return t.handleEvent("resize",e)})),this.addListener("dom",this._document,["DOMContentLoaded"],(function(e){return t.handleEvent("contentLoaded",e)}))}},{key:"handleEvent",value:function(t,e){try{return{click:this.handleClick,dragdrop:this.handleDrag,focus:this.handleFocus,form:this.handleForm,input:this.handleInput,resize:this.handleResize,contentLoaded:this.handleContentLoaded}[t].call(this,e)}catch(r){console.log("".concat(t," handler error"),e,r,r.stack)}}},{key:"handleContentLoaded",value:function(t){this.rollbar.triggerReplay({type:"navigation",path:new URL(this._location.href).pathname})}},{key:"handleClick",value:function(t){var e,r=null===(e=t.target)||void 0===e?void 0:e.tagName.toLowerCase();["input","select","textarea"].includes(r)||this.telemeter.captureClick({type:t.type,isSynthetic:!t.isTrusted,element:Ye(t.target),timestamp:R()})}},{key:"handleFocus",value:function(t){var e,r=t.type,n=null!==(e=t.target)&&void 0!==e&&e.window?"window":Ye(t.target);this.telemeter.captureFocus({type:r,isSynthetic:!t.isTrusted,element:n,timestamp:R()})}},{key:"handleForm",value:function(t){var e;t.type,null!==(e=t.target)&&void 0!==e&&e.window||Ye(t.target)}},{key:"handleResize",value:function(t){var e=window.screen.width/window.innerWidth;this.telemeter.captureResize({type:t.type,isSynthetic:!t.isTrusted,width:window.innerWidth,height:window.innerHeight,textZoomRatio:e,timestamp:R()})}},{key:"handleDrag",value:function(t){var e,r,n,o,i,a,s=t.type;if("drop"===s){e=[],r=[];var u,l=ar([].concat(nr(t.dataTransfer.files),nr(t.dataTransfer.items)));try{for(l.s();!(u=l.n()).done;){var c=u.value;c.kind&&c.type&&(e.push(c.kind),r.push(c.type))}}catch(t){l.e(t)}finally{l.f()}}["drop","dragstart"].includes(s)&&(n=null===(i=t.dataTransfer)||void 0===i?void 0:i.dropEffect,o=null===(a=t.dataTransfer)||void 0===a?void 0:a.effectAllowed);this.telemeter.captureDragDrop({type:s,isSynthetic:!t.isTrusted,element:Ye(t.target),dropEffect:n,effectAllowed:o,kinds:JSON.stringify(e),mediaTypes:JSON.stringify(r),timestamp:R()})}},{key:"scrubInputValue",value:function(t,e,r,n){var o="******";if("password"===n)return o;if(this.scrubTelemetryInputs)return o;var i=er(e);if(this.telemetryScrubber){if(this.telemetryScrubber(i))return o}else if(this.defaultValueScrubber(i))return o;return function(t,e,r){try{var n,o=Qe(e);try{for(o.s();!(n=o.n()).done;){var i=n.value;if("string"==typeof i){if(t.classList.contains(i))return!0}else{var a,s=Qe(t.classList);try{for(s.s();!(a=s.n()).done;){var u=a.value;if(i.test(u))return!0}}catch(t){s.e(t)}finally{s.f()}}}}catch(t){o.e(t)}finally{o.f()}var l,c=Qe(r);try{for(c.s();!(l=c.n()).done;){var f=l.value;if(t.matches(f))return!0}}catch(t){c.e(t)}finally{c.f()}}catch(t){}return!1}(e,this.scrubClasses,this.scrubSelectors)?o:this.maskInputOptions[r.toLowerCase()]||this.maskInputOptions[n]?this.maskInputFn?this.maskInputFn(t,e):o:t}},{key:"handleInput",value:function(t){var e,r,n,o,i=t.type,a=null===(e=t.target)||void 0===e?void 0:e.tagName.toLowerCase(),s=null===(r=t.target)||void 0===r?void 0:r.value,u=(null===(n=t.target)||void 0===n||null===(n=n.attributes)||void 0===n||null===(n=n.type)||void 0===n?void 0:n.value)||(null===(o=t.target)||void 0===o?void 0:o.type);switch(void 0!==s&&(s=this.scrubInputValue(s,t.target,a,u)),i){case"input":if(["radio","checkbox"].includes(u))return;["select","textarea"].includes(a)&&(u=a);break;case"change":if(!["radio","checkbox"].includes(u))return;var l;if("checkbox"===u)s=null===(l=t.target)||void 0===l?void 0:l.checked}this.telemeter.captureInput({type:u,isSynthetic:!t.isTrusted,element:Ye(t.target),value:s,timestamp:R()})}},{key:"deinstrumentNavigation",value:function(){var t=this._window.chrome;!(t&&t.app&&t.app.runtime)&&this._window.history&&this._window.history.pushState&&cr(this.replacements,"navigation")}},{key:"instrumentNavigation",value:function(){var t=this._window.chrome;if(!(t&&t.app&&t.app.runtime)&&this._window.history&&this._window.history.pushState){var e=this;$e(this._window,"onpopstate",(function(t){return function(){var r=e._location.href;e.handleUrlChange(e._lastHref,r),t&&t.apply(this,arguments)}}),this.replacements,"navigation"),$e(this._window.history,"pushState",(function(t){return function(){var r=arguments.length>2?arguments[2]:void 0;return r&&e.handleUrlChange(e._lastHref,r+""),t.apply(this,arguments)}}),this.replacements,"navigation")}}},{key:"handleUrlChange",value:function(t,e){var r=jt(this._location.href),n=jt(e),o=jt(t);this._lastHref=e,r.protocol===n.protocol&&r.host===n.host&&(e=n.path+(n.hash||"")),r.protocol===o.protocol&&r.host===o.host&&(t=o.path+(o.hash||"")),this.telemeter.captureNavigation(t,e,null,R());this.rollbar.triggerReplay({type:"navigation",path:e})}},{key:"instrumentConnectivity",value:function(){var t=this;this.addListener("connectivity",this._window,["online","offline"],(function(e){return t.handleConnectivity(e)}))}},{key:"handleConnectivity",value:function(t){var e=t.type;this.telemeter.captureConnectivityChange({type:e,isSynthetic:!t.isTrusted,timestamp:R()})}},{key:"handleCspEvent",value:function(t){var e="Security Policy Violation: blockedURI: "+t.blockedURI+", violatedDirective: "+t.violatedDirective+", effectiveDirective: "+t.effectiveDirective+", ";t.sourceFile&&(e+="location: "+t.sourceFile+", line: "+t.lineNumber+", col: "+t.columnNumber+", "),e+="originalPolicy: "+t.originalPolicy,this.telemeter.captureLog(e,"error",null,R()),this.handleCspError(e)}},{key:"handleCspError",value:function(t){this.autoInstrument.errorOnContentSecurityPolicy&&this.rollbar.error(t)}},{key:"deinstrumentContentSecurityPolicy",value:function(){this.removeListeners("contentsecuritypolicy")}},{key:"instrumentContentSecurityPolicy",value:function(){if("addEventListener"in this._document){var t=this.handleCspEvent.bind(this);this.addListener("contentsecuritypolicy",this._document,["securitypolicyviolation"],t)}}},{key:"addListener",value:function(t,e,r,n){var o=this;if(e.addEventListener){var i,a=ar(r);try{var s=function(){var r=i.value,a={capture:!0,passive:!0};e.addEventListener(r,n,a,!0),o.eventRemovers[t].push((function(){e.removeEventListener(r,n,a)}))};for(a.s();!(i=a.n()).done;)s()}catch(t){a.e(t)}finally{a.f()}}}},{key:"removeListeners",value:function(t){for(;this.eventRemovers[t].length;)this.eventRemovers[t].shift()()}}])}();function hr(t){return"undefined"!=typeof URL&&t instanceof URL}var dr=pr;function yr(t,e,r){if(e.hasOwnProperty&&e.hasOwnProperty("addEventListener")){for(var n=e.addEventListener;n._rollbarOldAdd&&n.belongsToShim;)n=n._rollbarOldAdd;var o=function(e,r,o){n.call(this,e,t.wrap(r),o)};o._rollbarOldAdd=n,o.belongsToShim=r,e.addEventListener=o;for(var i=e.removeEventListener;i._rollbarOldRemove&&i.belongsToShim;)i=i._rollbarOldRemove;var a=function(t,e,r){i.call(this,t,e&&e._rollbar_wrapped||e,r)};a._rollbarOldRemove=i,a.belongsToShim=r,e.removeEventListener=a}}var vr=function(t,e,r){if(t){var n,o,i="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".split(",");for(n=0;n2*e?t.slice(0,e).concat(t.slice(r-e)):t}function gr(t,e,r){r=void 0===r?30:r;var n,o=t.data.body;if(o.trace_chain)for(var i=o.trace_chain,a=0;at?e.slice(0,t-3).concat("..."):e}function kr(t,e,r){return e=ze(e,(function e(r,n,o){switch(f(n)){case"string":return wr(t,n);case"object":case"array":return ze(n,e,o);default:return n}})),[e,w(e,r)]}function _r(t){return t.exception&&(delete t.exception.description,t.exception.message=wr(255,t.exception.message)),t.frames=br(t.frames,1),t}function Sr(t,e){var r=t.data.body;if(r.trace_chain)for(var n=r.trace_chain,o=0;oe}var xr={truncate:function(t,e,r){r=void 0===r?524288:r;for(var n,o,i,a=[mr,gr,kr.bind(null,1024),kr.bind(null,512),kr.bind(null,256),Sr];n=a.shift();)if(t=(o=n(t,e))[0],(i=o[1]).error||!Or(i.value,r))return i;return i},raw:mr,truncateFrames:gr,truncateStrings:kr,maybeTruncateValue:wr};function Er(t){return Er="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Er(t)}function jr(t,e){for(var r=0;r3?o-3:0),a=3;a0&&void 0!==arguments[0]?arguments[0]:16);return crypto.getRandomValues(t),Array.from(t,(function(t){return t.toString(16).padStart(2,"0")})).join("")}};function qr(t){return qr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},qr(t)}function Dr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function Mr(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return this.session||(this.getSession()||this.createSession(),this.initSessionAttributes(t)),this}},{key:"getSession",value:function(){try{var t=this.window.sessionStorage.getItem(Jr);if(!t)return null;this.session=JSON.parse(t)}catch(t){return null}return this}},{key:"createSession",value:function(){return this.session={id:Nr.gen(),createdAt:Date.now()},this.setSession(this.session)}},{key:"setSession",value:function(t){var e=JSON.stringify(t);try{this.window.sessionStorage.setItem(Jr,e)}catch(t){return null}return this}},{key:"attributes",get:function(){return this._attributes}},{key:"setAttributes",value:function(t){return this._attributes=Mr(Mr({},this._attributes),t),this}},{key:"setUser",value:function(t){return this.setAttributes({"user.id":null==t?void 0:t.id,"user.email":null==t?void 0:t.email,"user.name":(null==t?void 0:t.name)||(null==t?void 0:t.username)}),this}},{key:"initSessionAttributes",value:function(t){var e,r,n;return this.setAttributes(Mr({"session.id":this.session.id,"browser.brands":null===(e=navigator.userAgentData)||void 0===e?void 0:e.brands,"browser.language":navigator.language,"browser.mobile":null===(r=navigator.userAgentData)||void 0===r?void 0:r.mobile,"browser.platform":null===(n=navigator.userAgentData)||void 0===n?void 0:n.platform,"client.address":"$remote_ip","rollbar.notifier.framework":"browser-js","user_agent.original":navigator.userAgent},t)),this}}])}();function Wr(t){return[Math.trunc(t/1e3),Math.round(t%1e3*1e6)]}function Br(t,e){return[t[0]+e[0]+Math.trunc((t[1]+e[1])/1e9),(t[1]+e[1])%1e9]}var Gr={fromMillis:Wr,toMillis:function(t){return 1e3*t[0]+Math.round(t[1]/1e6)},toNanos:function(t){return 1e9*t[0]+t[1]},add:Br,now:function(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]?Br(Wr(performance.timeOrigin),Wr(performance.now())):Wr(Date.now())},isHrTime:function(t){return Array.isArray(t)&&2===t.length&&"number"==typeof t[0]&&"number"==typeof t[1]}};function $r(t){return $r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},$r(t)}function zr(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,s=[],u=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(s.push(n.value),s.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(t,e)||Zr(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Xr(t){return function(t){if(Array.isArray(t))return Qr(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||Zr(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Zr(t,e){if(t){if("string"==typeof t)return Qr(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Qr(t,e):void 0}}function Qr(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.api=e,this.options=r}),[{key:"export",value:function(t,e){en.push.apply(en,Xr(t))}},{key:"toPayload",value:function(){var t=this,e=en.slice();if(en.length=0,!e||!e.length)return{resourceSpans:[]};var r,n=e[0]&&e[0].resource||{},o=new Map,i=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=Zr(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}(e);try{for(i.s();!(r=i.n()).done;){var a=r.value,s=a.instrumentationScope?"".concat(a.instrumentationScope.name,":").concat(a.instrumentationScope.version):"default:1.0.0";o.has(s)||o.set(s,{scope:a.instrumentationScope||{name:"default",version:"1.0.0",attributes:[]},spans:[]}),o.get(s).spans.push(this._transformSpan(a))}}catch(t){i.e(t)}finally{i.f()}return{resourceSpans:[{resource:this._transformResource(n),scopeSpans:Array.from(o.values()).map((function(e){return{scope:t._transformInstrumentationScope(e.scope),spans:e.spans}}))}]}}},{key:"post",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.api.postSpans(t,e)}},{key:"_transformSpan",value:function(t){var e,r=this,n=function(t){return Object.entries(t||{}).map((function(t){var e=zr(t,2),n=e[0],o=e[1];return{key:n,value:r._transformAnyValue(o)}}))};return{traceId:t.spanContext.traceId,spanId:t.spanContext.spanId,parentSpanId:t.parentSpanId||"",name:t.name,kind:t.kind||1,startTimeUnixNano:Gr.toNanos(t.startTime),endTimeUnixNano:Gr.toNanos(t.endTime),attributes:n(t.attributes),events:(e=t.events,(e||[]).map((function(t){return{timeUnixNano:Gr.toNanos(t.time),name:t.name,attributes:n(t.attributes)}})))}}},{key:"_transformResource",value:function(t){var e=this,r=t.attributes||{};return{attributes:Object.entries(r).map((function(t){var r=zr(t,2),n=r[0],o=r[1];return{key:n,value:e._transformAnyValue(o)}}))}}},{key:"_transformInstrumentationScope",value:function(t){var e=this;return{name:t.name||"",version:t.version||"",attributes:(t.attributes||[]).map((function(t){return{key:t.key,value:e._transformAnyValue(t.value)}}))}}},{key:"_transformAnyValue",value:function(t){var e=this;if(null==t)return{stringValue:""};var r=$r(t);return"string"===r?{stringValue:t}:"number"===r?Number.isInteger(t)?{intValue:t.toString()}:{doubleValue:t}:"boolean"===r?{boolValue:t}:Array.isArray(t)?{arrayValue:{values:t.map((function(t){return e._transformAnyValue(t)}))}}:"object"===r?{kvlistValue:{values:Object.entries(t).map((function(t){var r=zr(t,2),n=r[0],o=r[1];return{key:n,value:e._transformAnyValue(o)}}))}}:{stringValue:String(t)}}}])}(),en=[];function rn(t){return rn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},rn(t)}function nn(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return on(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?on(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function on(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.exporter=e,this.options=r,this.pendingSpans=new Map,this.transforms=[this.userTransform.bind(this)]}),[{key:"addTransform",value:function(t){this.transforms.unshift(t)}},{key:"userTransform",value:function(t){this.options.transformSpan&&this.options.transformSpan({span:t})}},{key:"applyTransforms",value:function(t){var e,r=nn(this.transforms);try{for(r.s();!(e=r.n()).done;){var n=e.value;try{n(t)}catch(t){vt.error("Error running span transform callback",t)}}}catch(t){r.e(t)}finally{r.f()}}},{key:"onStart",value:function(t,e){this.pendingSpans.set(t.span.spanContext.spanId,t)}},{key:"onEnd",value:function(t){this.applyTransforms(t.span),this.exporter.export([t.export()]),this.pendingSpans.delete(t.span.spanContext.spanId)}}])}();function ln(t){return ln="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ln(t)}function cn(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,s=[],u=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(s.push(n.value),s.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(t,e)||function(t,e){if(t){if("string"==typeof t)return fn(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?fn(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function fn(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0;return this.span.ended||this.span.events.push({name:t,attributes:e,time:r||Gr.now(),droppedAttributesCount:0}),this}},{key:"isRecording",value:function(){return!1===this.span.ended}},{key:"end",value:function(t,e){t&&this.setAttributes(t),this.span.endTime=e||Gr.now(this.usePerformance),this.span.ended=!0,this.spanProcessor.onEnd(this)}},{key:"export",value:function(){return this.span}}])}();function yn(t){return yn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},yn(t)}function vn(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function mn(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.tracing.contextManager.active(),u=this.tracing.getSpan(s),l=null==u?void 0:u.spanContext(),c=Nr.gen(8),f=null;l?(o=l.traceId,f=l.traceState,i=l.spanId):o=Nr.gen(16);var p={traceId:o,spanId:c,traceFlags:0,traceState:f},h={attributes:mn(mn({},(null===(e=this.tracing.resource)||void 0===e?void 0:e.attributes)||{}),(null===(r=a.resource)||void 0===r?void 0:r.attributes)||{})};return new dn({resource:h,scope:this.tracing.scope,session:null===(n=this.tracing.session)||void 0===n?void 0:n.session,context:s,spanContext:p,name:t,kind:0,parentSpanId:i,spanProcessor:this.spanProcessor,startTime:a.startTime,usePerformance:a.usePerformance})}}])}();function _n(t){return _n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_n(t)}function Sn(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function On(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:16;return Nr.gen(t)}},{key:"createTracer",value:function(){this.contextManager=new Lr,this.exporter=new tn(this.api,this.options),this.spanProcessor=new un(this.exporter,this.options.tracing),this.tracer=new kn(this,this.spanProcessor)}},{key:"getTracer",value:function(){return this.tracer}},{key:"addSpanTransform",value:function(t){this.spanProcessor.addTransform(t)}},{key:"getSpan",value:function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.contextManager.active()).getValue(Pn)}},{key:"setSpan",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.contextManager.active(),e=arguments.length>1?arguments[1]:void 0;return t.setValue(Pn,e)}},{key:"startSpan",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.contextManager.active();return this.tracer.startSpan(t,e,r)}},{key:"with",value:function(t,e,r){for(var n,o=arguments.length,i=new Array(o>3?o-3:0),a=3;a=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return s=t.done,t},e:function(t){u=!0,a=t},f:function(){try{s||null==r.return||r.return()}finally{if(u)throw a}}}}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r0&&(u||(u=S({})),u.extraArgs=S(p));var g,w={message:i,err:a,custom:u,timestamp:P(),callback:l,notifier:r,diagnostic:{},uuid:(g=P(),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){var e=(g+16*Math.random())%16|0;return g=Math.floor(g/16),("x"===t?e:7&e|8).toString(16)}))};return w.data=w.data||{},function(t,e){e&&void 0!==e.level&&(t.level=e.level,delete e.level);e&&void 0!==e.skipFrames&&(t.skipFrames=e.skipFrames,delete e.skipFrames)}(w,u),n&&c&&(w.request=c),o&&(w.lambdaContext=o),w._originalArgs=t,w.diagnostic.original_arg_types=h,w}var O=["log","network","dom","navigation","error","manual"],x=["critical","error","warning","info","debug"];function E(t,e){var r,o=n(t);try{for(o.s();!(r=o.n()).done;){if(r.value===e)return!0}}catch(t){o.e(t)}finally{o.f()}return!1}function j(t,e){t.attributes=t.attributes||[];var r,o=n(e);try{for(o.s();!(r=o.n()).done;){var i=r.value;void 0!==i.value&&t.attributes.push(i)}}catch(t){o.e(t)}finally{o.f()}}function I(t,e){if(t){var r=e.split("."),n=t;try{for(var o=0,i=r.length;o=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function N(t,e){if(t){if("string"==typeof t)return D(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?D(t,e):void 0}}function D(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);rn&&(o=this.queue.length-n),this.maxQueueSize=n,this.queue.splice(0,o)}},{key:"copyEvents",value:function(){var t=Array.prototype.slice.call(this.queue,0);if(u(this.options.filterTelemetry))try{for(var e=t.length;e--;)this.options.filterTelemetry(t[e])&&t.splice(e,1)}catch(t){this.options.filterTelemetry=null}return t=(t=t.filter(function(t){return"connectivity"!==t.type})).map(function(t){t.otelAttributes;var e=function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(-1!==e.indexOf(n))continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.telemetrySpan&&(this.telemetrySpan.end(t),this.telemetrySpan=this.tracing.startSpan("rollbar-telemetry",{}))}},{key:"capture",value:function(t,e,r,n){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,a={level:Z(t,r),type:t,timestamp_ms:o||P(),body:e,source:"client"};n&&(a.uuid=n),i&&(a.otelAttributes=i);try{if(u(this.options.filterTelemetry)&&this.options.filterTelemetry(a))return!1}catch(t){this.options.filterTelemetry=null}return this.push(a),a}},{key:"captureEvent",value:function(t,e,r,n){return this.capture(t,e,r,n)}},{key:"captureError",value:function(t,e,r,n){var o,i=t.message||String(t),a={message:i};t.stack&&(a.stack=t.stack);var s={message:i,level:e,type:"error",uuid:r};return null===(o=this.telemetrySpan)||void 0===o||o.addEvent("rollbar-occurrence-event",s,z(n)),this.capture("error",a,e,r,n,s)}},{key:"captureLog",value:function(t,e,r,n){var o,i=r?"rollbar-occurrence-event":"rollbar-log-event",a=V({message:t,level:e},r?{type:"message",uuid:r}:{});return null===(o=this.telemetrySpan)||void 0===o||o.addEvent(i,a,z(n)),this.capture("log",{message:t},e,r,n,a)}},{key:"captureNetwork",value:function(t,e,r,n){var o,i,a;e=e||"xhr",t.subtype=t.subtype||e,n&&(t.request=n);var s=this.levelFromStatus(t.status_code),u=1e6*(t.end_time_ms||0),l={type:t.subtype,method:t.method,url:t.url,statusCode:t.status_code,"request.headers":JSON.stringify(t.request_headers||{}),"response.headers":JSON.stringify((null===(o=t.response)||void 0===o?void 0:o.headers)||{}),"response.timeUnixNano":u.toString()},c=t.request,f=null===(i=t.response)||void 0===i?void 0:i.body;return c&&(l["request.body"]=JSON.stringify(c)),f&&(l["response.body"]=JSON.stringify(f)),null===(a=this.telemetrySpan)||void 0===a||a.addEvent("rollbar-network-event",l,z(t.start_time_ms)),this.capture("network",t,s,r,t.start_time_ms,l)}},{key:"levelFromStatus",value:function(t){return t>=200&&t<400?"info":0===t||t>=400?"error":"info"}},{key:"captureDom",value:function(t,e,r,n,o){var i={subtype:t,element:e};return void 0!==r&&(i.value=r),void 0!==n&&(i.checked=n),this.capture("dom",i,"info",o)}},{key:"captureInput",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.value,a=t.timestamp,s="rollbar-input-event",u={type:s,subtype:r,element:o,value:i},l={type:r,isSynthetic:n,element:o,value:i,endTimeUnixNano:z(a)},c=this._getRepeatedEvent(s,l);return c?this._updateRepeatedEvent(c,l,a):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(s,l,z(a)),this.capture("dom",u,"info",null,a,l))}},{key:"captureClick",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.timestamp,a="rollbar-click-event",s={type:a,subtype:r,element:o},u={type:r,isSynthetic:n,element:o,endTimeUnixNano:z(i)},l=this._getRepeatedEvent(a,u);return l?this._updateRepeatedEvent(l,u,i):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(a,u,z(i)),this.capture("dom",s,"info",null,i,u))}},{key:"_getRepeatedEvent",value:function(t,e){var r=this._lastEvent(this.queue);if(r&&r.body.type===t&&r.otelAttributes.target===e.target)return r}},{key:"_updateRepeatedEvent",value:function(t,e,r){var n=Math.max(r-t.timestamp_ms,1);t.body.value=e.value,t.otelAttributes.value=e.value,t.otelAttributes.height=e.height,t.otelAttributes.width=e.width,t.otelAttributes.textZoomRatio=e.textZoomRatio,t.otelAttributes.endTimeUnixNano=z(r),t.otelAttributes.durationUnixNano=z(n),t.otelAttributes.count=(t.otelAttributes.count||1)+1,t.otelAttributes.rate=t.otelAttributes.count/(n/1e3)}},{key:"_lastEvent",value:function(t){return t.length>0?t[t.length-1]:null}},{key:"captureFocus",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.timestamp,a="rollbar-focus-event",s={type:a,subtype:r,element:o},u={type:r,isSynthetic:n,element:o};return null===(e=this.telemetrySpan)||void 0===e||e.addEvent(a,u,z(i)),this.capture("dom",s,"info",null,i,u)}},{key:"captureResize",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.width,i=t.height,a=t.textZoomRatio,s=t.timestamp,u="rollbar-resize-event",l={type:u,subtype:r,width:o,height:i,textZoomRatio:a},c={type:r,isSynthetic:n,width:o,height:i,textZoomRatio:a},f=this._getRepeatedEvent(u,c);return f?this._updateRepeatedEvent(f,c,s):(null===(e=this.telemetrySpan)||void 0===e||e.addEvent(u,c,z(s)),this.capture("dom",l,"info",null,s,c))}},{key:"captureDragDrop",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.element,i=t.dropEffect,a=t.effectAllowed,s=t.kinds,u=t.mediaTypes,l=t.timestamp,c="rollbar-dragdrop-event",f={type:c,subtype:r,isSynthetic:n},p={type:r,isSynthetic:n};return"dragstart"===r&&(f=V(V({},f),{},{element:o,dropEffect:i,effectAllowed:a}),p=V(V({},p),{},{element:o,dropEffect:i,effectAllowed:a})),"drop"===r&&(f=V(V({},f),{},{element:o,dropEffect:i,effectAllowed:a,kinds:s,mediaTypes:u}),p=V(V({},p),{},{element:o,dropEffect:i,effectAllowed:a,kinds:s,mediaTypes:u})),null===(e=this.telemetrySpan)||void 0===e||e.addEvent(c,p,z(l)),this.capture("dom",f,"info",null,l,p)}},{key:"captureNavigation",value:function(t,e,r,n){var o;return null===(o=this.telemetrySpan)||void 0===o||o.addEvent("rollbar-navigation-event",{"previous.url.full":t,"url.full":e},z(n)),this.capture("navigation",{from:t,to:e},"info",r,n)}},{key:"captureDomContentLoaded",value:function(t){return this.capture("navigation",{subtype:"DOMContentLoaded"},"info",void 0,t&&t.getTime())}},{key:"captureLoad",value:function(t){return this.capture("navigation",{subtype:"load"},"info",void 0,t&&t.getTime())}},{key:"captureConnectivityChange",value:function(t){var e,r=t.type,n=t.isSynthetic,o=t.timestamp,i="rollbar-connectivity-event",a={type:i,subtype:r},s={type:r,isSynthetic:n};return null===(e=this.telemetrySpan)||void 0===e||e.addEvent(i,s,z(o)),this.capture("connectivity",a,"info",null,o,s)}},{key:"_captureRollbarItem",value:function(t){if(this.options.includeItemsInTelemetry)return t.err?this.captureError(t.err,t.level,t.uuid,t.timestamp):t.message?this.captureLog(t.message,t.level,t.uuid,t.timestamp):t.custom?this.capture("log",t.custom,t.level,t.uuid,t.timestamp):void 0}},{key:"push",value:function(t){this.queue.push(t),this.queue.length>this.maxQueueSize&&this.queue.shift()}}],e&&W(t.prototype,e),r&&W(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function Z(t,e){if(e)return e;return{error:"error",manual:"info"}[t]||"info"}var Q=X;function K(t){return K="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},K(t)}function Y(t,e){for(var r=0;r3?o-3:0),a=3;a0&&void 0!==arguments[0]&&arguments[0]?ut(st(performance.timeOrigin),st(performance.now())):st(Date.now())},isHrTime:function(t){return Array.isArray(t)&&2===t.length&&"number"==typeof t[0]&&"number"==typeof t[1]}};function ct(t){return ct="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ct(t)}function ft(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,s=[],u=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(s.push(n.value),s.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(t,e)||ht(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function pt(t){return function(t){if(Array.isArray(t))return dt(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||ht(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ht(t,e){if(t){if("string"==typeof t)return dt(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?dt(t,e):void 0}}function dt(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.api=e,this.options=r},e=[{key:"export",value:function(t,e){bt.push.apply(bt,pt(t))}},{key:"toPayload",value:function(){var t=this,e=bt.slice();if(bt.length=0,!e||!e.length)return{resourceSpans:[]};var r,n=e[0]&&e[0].resource||{},o=new Map,i=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=ht(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}(e);try{for(i.s();!(r=i.n()).done;){var a=r.value,s=a.instrumentationScope?"".concat(a.instrumentationScope.name,":").concat(a.instrumentationScope.version):"default:1.0.0";o.has(s)||o.set(s,{scope:a.instrumentationScope||{name:"default",version:"1.0.0",attributes:[]},spans:[]}),o.get(s).spans.push(this._transformSpan(a))}}catch(t){i.e(t)}finally{i.f()}return{resourceSpans:[{resource:this._transformResource(n),scopeSpans:Array.from(o.values()).map(function(e){return{scope:t._transformInstrumentationScope(e.scope),spans:e.spans}})}]}}},{key:"post",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.api.postSpans(t,e)}},{key:"_transformSpan",value:function(t){var e,r=this,n=function(t){return Object.entries(t||{}).map(function(t){var e=ft(t,2),n=e[0],o=e[1];return{key:n,value:r._transformAnyValue(o)}})};return{traceId:t.spanContext.traceId,spanId:t.spanContext.spanId,parentSpanId:t.parentSpanId||"",name:t.name,kind:t.kind||1,startTimeUnixNano:lt.toNanos(t.startTime),endTimeUnixNano:lt.toNanos(t.endTime),attributes:n(t.attributes),events:(e=t.events,(e||[]).map(function(t){return{timeUnixNano:lt.toNanos(t.time),name:t.name,attributes:n(t.attributes)}}))}}},{key:"_transformResource",value:function(t){var e=this,r=t.attributes||{};return{attributes:Object.entries(r).map(function(t){var r=ft(t,2),n=r[0],o=r[1];return{key:n,value:e._transformAnyValue(o)}})}}},{key:"_transformInstrumentationScope",value:function(t){var e=this;return{name:t.name||"",version:t.version||"",attributes:(t.attributes||[]).map(function(t){return{key:t.key,value:e._transformAnyValue(t.value)}})}}},{key:"_transformAnyValue",value:function(t){var e=this;if(null==t)return{stringValue:""};var r=ct(t);return"string"===r?{stringValue:t}:"number"===r?Number.isInteger(t)?{intValue:t.toString()}:{doubleValue:t}:"boolean"===r?{boolValue:t}:Array.isArray(t)?{arrayValue:{values:t.map(function(t){return e._transformAnyValue(t)})}}:"object"===r?{kvlistValue:{values:Object.entries(t).map(function(t){var r=ft(t,2),n=r[0],o=r[1];return{key:n,value:e._transformAnyValue(o)}})}}:{stringValue:String(t)}}}],e&&yt(t.prototype,e),r&&yt(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}(),bt=[];var gt={gen:function(){var t=new Uint8Array(arguments.length>0&&void 0!==arguments[0]?arguments[0]:16);return crypto.getRandomValues(t),Array.from(t,function(t){return t.toString(16).padStart(2,"0")}).join("")}};function wt(t){return wt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},wt(t)}function kt(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function St(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return this.session||(this.getSession()||this.createSession(),this.initSessionAttributes(t)),this}},{key:"getSession",value:function(){try{var t=this.window.sessionStorage.getItem(Et);if(!t)return null;this.session=JSON.parse(t)}catch(t){return null}return this}},{key:"createSession",value:function(){return this.session={id:gt.gen(),createdAt:Date.now()},this.setSession(this.session)}},{key:"setSession",value:function(t){var e=JSON.stringify(t);try{this.window.sessionStorage.setItem(Et,e)}catch(t){return null}return this}},{key:"attributes",get:function(){return this._attributes}},{key:"setAttributes",value:function(t){return this._attributes=St(St({},this._attributes),t),this}},{key:"setUser",value:function(t){return this.setAttributes({"user.id":null==t?void 0:t.id,"user.email":null==t?void 0:t.email,"user.name":(null==t?void 0:t.name)||(null==t?void 0:t.username)}),this}},{key:"initSessionAttributes",value:function(t){var e,r,n;return this.setAttributes(St({"session.id":this.session.id,"browser.brands":null===(e=navigator.userAgentData)||void 0===e?void 0:e.brands,"browser.language":navigator.language,"browser.mobile":null===(r=navigator.userAgentData)||void 0===r?void 0:r.mobile,"browser.platform":null===(n=navigator.userAgentData)||void 0===n?void 0:n.platform,"client.address":"$remote_ip","rollbar.notifier.framework":"browser-js","user_agent.original":navigator.userAgent},t)),this}}],e&&_t(t.prototype,e),r&&_t(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}(),It=function(){},Tt={debug:0,info:1,warn:2,error:3,disable:4},Pt={error:function(){for(var t=arguments.length,e=new Array(t),r=0;r=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function Lt(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.exporter=e,this.options=r,this.pendingSpans=new Map,this.transforms=[this.userTransform.bind(this)]},e=[{key:"addTransform",value:function(t){this.transforms.unshift(t)}},{key:"userTransform",value:function(t){this.options.transformSpan&&this.options.transformSpan({span:t})}},{key:"applyTransforms",value:function(t){var e,r=Ct(this.transforms);try{for(r.s();!(e=r.n()).done;){var n=e.value;try{n(t)}catch(t){At.error("Error running span transform callback",t)}}}catch(t){r.e(t)}finally{r.f()}}},{key:"onStart",value:function(t,e){this.pendingSpans.set(t.span.spanContext.spanId,t)}},{key:"onEnd",value:function(t){this.applyTransforms(t.span),this.exporter.export([t.export()]),this.pendingSpans.delete(t.span.spanContext.spanId)}}],e&&qt(t.prototype,e),r&&qt(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function Mt(t){return Mt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Mt(t)}function Ut(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,s=[],u=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(s.push(n.value),s.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(t,e)||function(t,e){if(t){if("string"==typeof t)return Ht(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Ht(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ht(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0;return this.span.ended||this.span.events.push({name:t,attributes:e,time:r||lt.now(),droppedAttributesCount:0}),this}},{key:"isRecording",value:function(){return!1===this.span.ended}},{key:"end",value:function(t,e){t&&this.setAttributes(t),this.span.endTime=e||lt.now(this.usePerformance),this.span.ended=!0,this.spanProcessor.onEnd(this)}},{key:"export",value:function(){return this.span}}],e&&Ft(t.prototype,e),r&&Ft(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function Bt(t){return Bt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Bt(t)}function Wt(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function $t(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.tracing.contextManager.active(),u=this.tracing.getSpan(s),l=null==u?void 0:u.spanContext(),c=gt.gen(8),f=null;l?(o=l.traceId,f=l.traceState,i=l.spanId):o=gt.gen(16);var p={traceId:o,spanId:c,traceFlags:0,traceState:f},h={attributes:$t($t({},(null===(e=this.tracing.resource)||void 0===e?void 0:e.attributes)||{}),(null===(r=a.resource)||void 0===r?void 0:r.attributes)||{})};return new Vt({resource:h,scope:this.tracing.scope,session:null===(n=this.tracing.session)||void 0===n?void 0:n.session,context:s,spanContext:p,name:t,kind:0,parentSpanId:i,spanProcessor:this.spanProcessor,startTime:a.startTime,usePerformance:a.usePerformance})}}],e&&zt(t.prototype,e),r&&zt(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r}();function Qt(t){return Qt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Qt(t)}function Kt(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function Yt(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:16;return gt.gen(t)}},{key:"createTracer",value:function(){this.contextManager=new at,this.exporter=new mt(this.api,this.options),this.spanProcessor=new Dt(this.exporter,this.options.tracing),this.tracer=new Zt(this,this.spanProcessor)}},{key:"getTracer",value:function(){return this.tracer}},{key:"addSpanTransform",value:function(t){this.spanProcessor.addTransform(t)}},{key:"getSpan",value:function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.contextManager.active()).getValue(oe)}},{key:"setSpan",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.contextManager.active(),e=arguments.length>1?arguments[1]:void 0;return t.setValue(oe,e)}},{key:"startSpan",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.contextManager.active();return this.tracer.startSpan(t,e,r)}},{key:"with",value:function(t,e,r){for(var n,o=arguments.length,i=new Array(o>3?o-3:0),a=3;a=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function ue(t,e){if(t){if("string"==typeof t)return le(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?le(t,e):void 0}}function le(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r2*e?t.slice(0,e).concat(t.slice(r-e)):t}function pe(t,e,r){r=void 0===r?30:r;var n,o=t.data.body;if(o.trace_chain){var i,a=se(o.trace_chain);try{for(a.s();!(i=a.n()).done;){var s=i.value;n=fe(n=s.frames,r),s.frames=n}}catch(t){a.e(t)}finally{a.f()}}else o.trace&&(n=fe(n=o.trace.frames,r),o.trace.frames=n);return[t,b(t,e)]}function he(t,e){return e&&e.length>t?e.slice(0,t-3).concat("..."):e}function de(t,e,r){return e=C(e,function e(r,n,o){switch(s(n)){case"string":return he(t,n);case"object":case"array":return C(n,e,o);default:return n}}),[e,b(e,r)]}function ye(t){return t.exception&&(delete t.exception.description,t.exception.message=he(255,t.exception.message)),t.frames=fe(t.frames,1),t}function ve(t,e){var r=t.data.body;if(r.trace_chain){var n,o=r.trace_chain,i=se(o.entries());try{for(i.s();!(n=i.n()).done;){var a=ae(n.value,2),s=a[0],u=a[1];o[s]=ye(u)}}catch(t){i.e(t)}finally{i.f()}}else r.trace&&(r.trace=ye(r.trace));return[t,b(t,e)]}function me(t,e){return function(t){for(var e=0,r=t.length,n=0;ne}var be={truncate:function(t,e,r){r=void 0===r?524288:r;for(var n,o,i,a=[ce,pe,de.bind(null,1024),de.bind(null,512),de.bind(null,256),ve];n=a.shift();)if(t=(o=n(t,e))[0],(i=o[1]).error||!me(i.value,r))return i;return i},raw:ce,truncateFrames:pe,truncateStrings:de,maybeTruncateValue:he};function ge(t){if(!a(t.context,"string")){var e=b(t.context);e.error?t.context="Error: could not serialize 'context'":t.context=e.value||"",t.context.length>255&&(t.context=t.context.substr(0,255))}return{data:t}}function we(t,e,r){var n=e.hostname,o=e.protocol,i=e.port,a=e.path,s=e.search,u=t.timeout,l=function(t){var e="undefined"!=typeof window&&window||"undefined"!=typeof self&&self,r=t.defaultTransport||"xhr";void 0===e.fetch&&(r="xhr");void 0===e.XMLHttpRequest&&(r="fetch");return r}(t),c=t.proxy;if(t.endpoint){var f=r.parse(t.endpoint);n=f.hostname,o=f.protocol,i=f.port,a=f.pathname,s=f.search}return{timeout:u,hostname:n,protocol:o,port:i,path:a,search:s,proxy:c,transport:l}}function ke(t,e){var r=t.protocol||"https:",n=t.port||("http:"===r?80:"https:"===r?443:void 0),o=t.hostname,i=t.path,a=t.timeout,s=t.transport;return t.search&&(i+=t.search),t.proxy&&(i=r+"//"+o+i,o=t.proxy.host||t.proxy.hostname,n=t.proxy.port,r=t.proxy.protocol||r),{timeout:a,protocol:r,hostname:o,path:i,port:n,method:e,transport:s}}function Se(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function _e(t){for(var e=1;e3?(o=d===n)&&(u=i[(s=i[4])?5:(s=3,3)],i[4]=i[5]=t):i[0]<=h&&((o=r<2&&hn||n>d)&&(i[4]=r,i[5]=n,p.n=d,s=0))}if(o||r>1)return a;throw f=!0,n}return function(o,c,d){if(l>1)throw TypeError("Generator is already running");for(f&&1===c&&h(c,d),s=c,u=d;(e=s<2?t:u)||!f;){i||(s?s<3?(s>1&&(p.n=-1),h(s,u)):p.n=u:p.v=u);try{if(l=2,i){if(s||(o="next"),e=i[o]){if(!(e=e.call(i,u)))throw TypeError("iterator result is not an object");if(!e.done)return e;u=e.value,s<2&&(s=0)}else 1===s&&(e=i.return)&&e.call(i),s<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),s=1);i=t}else if((e=(f=p.n<0)?u:r.call(n,p))!==a)break}catch(e){i=t,s=1,u=e}finally{l=1}}return{value:e,done:f}}}(r,o,i),!0),l}var a={};function s(){}function u(){}function l(){}e=Object.getPrototypeOf;var c=[][n]?e(e([][n]())):(je(e={},n,function(){return this}),e),f=l.prototype=s.prototype=Object.create(c);function p(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,l):(t.__proto__=l,je(t,o,"GeneratorFunction")),t.prototype=Object.create(f),t}return u.prototype=l,je(f,"constructor",l),je(l,"constructor",u),u.displayName="GeneratorFunction",je(l,o,"GeneratorFunction"),je(f),je(f,o,"Generator"),je(f,n,function(){return this}),je(f,"toString",function(){return"[object Generator]"}),(Ee=function(){return{w:i,m:p}})()}function je(t,e,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}je=function(t,e,r,n){function i(e,r){je(t,e,function(t){return this._invoke(e,r,t)})}e?o?o(t,e,{value:r,enumerable:!n,configurable:!n,writable:!n}):t[e]=r:(i("next",0),i("throw",1),i("return",2))},je(t,e,r,n)}function Ie(t,e,r,n,o,i,a){try{var s=t[i](a),u=s.value}catch(t){return void r(t)}s.done?e(u):Promise.resolve(u).then(n,o)}function Te(t,e){for(var r=0;r1&&void 0!==o[1]?o[1]:{},n=ke(this.OTLPTransportOptions,"POST"),t.a(2,this._postPromise({accessToken:this.accessToken,options:n,payload:e,headers:r}))},t,this)}),o=function(){var t=this,e=arguments;return new Promise(function(r,o){var i=n.apply(t,e);function a(t){Ie(i,r,o,a,s,"next",t)}function s(t){Ie(i,r,o,a,s,"throw",t)}a(void 0)})},function(t){return o.apply(this,arguments)})},{key:"buildJsonPayload",value:function(t,e){var r,n=ge(t);return(r=this.truncation?this.truncation.truncate(n):b(n)).error?(e&&e(r.error),null):r.value}},{key:"postJsonPayload",value:function(t,e){var r=ke(this.transportOptions,"POST");this.transport.postJsonPayload(this.accessToken,r,t,e)}},{key:"configure",value:function(t){var e=this.options;return this.options=R(e,t),this.transportOptions=Le(this.options,this.url),this.OTLPTransportOptions=qe(this.options,this.url),void 0!==this.options.accessToken&&(this.accessToken=this.options.accessToken),this}}],e&&Te(t.prototype,e),r&&Te(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r,n,o}();function Le(t,e){return we(t,Ae,e)}function qe(t,e){var r;return we(t=_e(_e({},t),{},{endpoint:null===(r=t.tracing)||void 0===r?void 0:r.endpoint}),Re,e)}var Ne=Ce,De="3.0.0",Me="api.rollbar.com/api/1/item/",Ue="debug",He="debug",Fe="error",Je=/(^|@)\S+:\d+/,Ve=/^\s*at .*(\S+:\d+|\(native\))/m,Be=/^(eval@)?(\[native code\])?$/;function We(t,e){if(void 0!==t.stacktrace||void 0!==t["opera#sourceloc"])return function(t,e){return!t.stacktrace||t.message.includes("\n")&&t.message.split("\n").length>t.stacktrace.split("\n").length?function(t,e){for(var r=/Line (\d+).*script (?:in )?(\S+)/i,n=t.message.split("\n"),o=[],i=2,a=n.length;i/,"$2").replace(/\([^)]*\)/g,"")||void 0;return o.match(/\(([^)]*)\)/)&&(e=o.replace(/^[^(]+\(([^)]*)\)$/,"$1")),{function:i,args:void 0===e||"[arguments not available]"===e?void 0:e.split(","),file:n[0],line:n[1]?+n[1]:void 0,col:n[2]?+n[2]:void 0,raw:t}})}(t,e):function(t,e){for(var r=/Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i,n=t.stacktrace.split("\n"),o=[],i=0,a=n.length;i"].includes(n[0])?void 0:n[0],line:n[1]?+n[1]:void 0,col:n[2]?+n[2]:void 0,raw:t}})}function Xe(t,e){return Ge(t.split("\n").filter(function(t){return!t.match(Be)}),e).map(function(t){if(t.includes(" > eval")&&(t=t.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),t.includes("@")||t.includes(":")){var e=/(([^\n\r"\u2028\u2029]*".[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*(?:@[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*)*(?:[\n\r\u2028\u2029][^@]*)?)?[^@]*)@/,r=t.match(e),n=r&&r[1]?r[1]:void 0,o=$e(t.replace(e,""));return{function:n,file:o[0],line:o[1]?+o[1]:void 0,col:o[2]?+o[2]:void 0,raw:t}}return{function:t}})}function Ze(t){return t.map(function(t){return{functionName:t.function,args:t.args,fileName:t.file,lineNumber:t.line,columnNumber:t.col,source:t.raw}})}var Qe=new RegExp("^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): ");function Ke(){return null}function Ye(t){var e={};return e._stackFrame=t,e.url=t.fileName,e.line=t.lineNumber,e.func=t.functionName,e.column=t.columnNumber,e.args=t.args,e.context=null,e}function tr(t,e){return{stack:function(){var r,n=[];e=e||0;try{n=Ze(We(t,r))}catch(t){n=[]}for(var o=[],i=e;i=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function or(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);rthis.options.maxRetries&&(o=!1))}o?this._retryApiRequest(r,n):n(e)}},{key:"_retryApiRequest",value:function(t,e){var r=this;this.retryQueue.push({item:t,callback:e}),this.retryHandle||(this.retryHandle=setInterval(function(){for(;r.retryQueue.length;){var t=r.retryQueue.shift();r._makeApiRequest(t.item,t.callback)}},this.options.retryInterval))}},{key:"_dequeuePendingRequest",value:function(t){var e=this.pendingRequests.indexOf(t);-1!==e&&(this.pendingRequests.splice(e,1),this._maybeCallWait())}},{key:"_maybeLog",value:function(t,e){if(this.logger&&this.options.verbose){var r=e||I(t,"body.trace.exception.message")||I(t,"body.trace_chain.0.exception.message");if(r)return void this.logger.error(r);(r=I(t,"body.message.body"))&&this.logger.log(r)}}},{key:"_maybeCallWait",value:function(){return!(!u(this.waitCallback)||0!==this.pendingItems.length||0!==this.pendingRequests.length||(this.waitIntervalID&&(this.waitIntervalID=clearInterval(this.waitIntervalID)),this.waitCallback(),0))}}],r&&dr(e.prototype,r),n&&dr(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r,n}();vr=gr,br=["ECONNRESET","ENOTFOUND","ESOCKETTIMEDOUT","ETIMEDOUT","ECONNREFUSED","EHOSTUNREACH","EPIPE","EAI_AGAIN"],(mr=yr(mr="RETRIABLE_ERRORS"))in vr?Object.defineProperty(vr,mr,{value:br,enumerable:!0,configurable:!0,writable:!0}):vr[mr]=br;var wr=gr;function kr(t){return kr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},kr(t)}function Sr(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.startTime=Date.now(),this.counter=0,this.perMinCounter=0,this.platform=null,this.platformOptions={},this.configureGlobal(e)}return function(t,e,r){return e&&Sr(t.prototype,e),r&&Sr(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}(t,[{key:"configureGlobal",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.startTime,n=e.maxItems,o=e.itemsPerMinute;void 0!==r&&(t.globalSettings.startTime=r),void 0!==n&&(t.globalSettings.maxItems=n),void 0!==o&&(t.globalSettings.itemsPerMinute=o)}},{key:"shouldSend",value:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now(),n=r-this.startTime;(n<0||n>=6e4)&&(this.startTime=r,this.perMinCounter=0);var o=t.globalSettings.maxItems,i=t.globalSettings.itemsPerMinute;if(xr(e,o,this.counter))return Er(this.platform,this.platformOptions,"".concat(o," max items reached"),!1);if(xr(e,i,this.perMinCounter))return Er(this.platform,this.platformOptions,"".concat(i," items per minute reached"),!1);this.counter+=1,this.perMinCounter+=1;var a=!xr(e,o,this.counter),s=a,u=a&&!xr(e,i,this.perMinCounter);return Er(this.platform,this.platformOptions,null,u,o,i,s)}},{key:"setPlatformOptions",value:function(t,e){this.platform=t,this.platformOptions=e}}])}();function xr(t,e,r){return!t.ignoreRateLimit&&e>=1&&r>e}function Er(t,e,r,n,o,i,a){var s=null,u=r?new Error(r):null;return u||n||(s=function(t,e,r,n,o){var i=e.environment||e.payload&&e.payload.environment,a=o?"item per minute limit reached, ignoring errors until timeout":"maxItems has been hit, ignoring errors until reset.",s={body:{message:{body:a,extra:{maxItems:r,itemsPerMinute:n}}},language:"javascript",environment:i,notifier:{version:e.notifier&&e.notifier.version||e.version}};"browser"===t?(s.platform="browser",s.framework="browser-js",s.notifier.name="rollbar-browser-js"):"server"===t?(s.framework=e.framework||"node-js",s.notifier.name=e.notifier.name):"react-native"===t&&(s.framework=e.framework||"react-native",s.notifier.name=e.notifier.name);return s}(t,e,o,i,a)),{error:u,shouldSend:n,payload:s}}!function(t,e,r){(e=_r(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r}(Or,"globalSettings",{startTime:Date.now(),maxItems:void 0,itemsPerMinute:void 0});var jr=Or;function Ir(t,e,r,n,o,i,a){this.options=R(t),this.logger=r,Ir.rateLimiter.configureGlobal(this.options),Ir.rateLimiter.setPlatformOptions(a,this.options),this.api=e,this.queue=new wr(Ir.rateLimiter,e,r,this.options,i),this.tracing=o;var s=this.options.tracer||null;Pr(s)?(this.tracer=s,this.options.tracer="opentracing-tracer-enabled",this.options._configuredOptions.tracer="opentracing-tracer-enabled"):this.tracer=null,this.notifier=new pr(this.queue,this.options),this.telemeter=n,Tr(t),this.lastError=null,this.lastErrorHash="none"}function Tr(t){t.stackTraceLimit&&(Error.stackTraceLimit=t.stackTraceLimit)}function Pr(t){if(!t)return!1;if(!t.scope||"function"!=typeof t.scope)return!1;var e=t.scope();return!(!e||!e.active||"function"!=typeof e.active)}Ir.rateLimiter=new jr({maxItems:0,itemsPerMinute:60}),Ir.prototype.global=function(t){return Ir.rateLimiter.configureGlobal(t),this},Ir.prototype.configure=function(t,e){var r=this.options,n={};e&&(n={payload:e}),this.options=R(r,t,n);var o=this.options.tracer||null;return Pr(o)?(this.tracer=o,this.options.tracer="opentracing-tracer-enabled",this.options._configuredOptions.tracer="opentracing-tracer-enabled"):this.tracer=null,this.notifier&&this.notifier.configure(this.options),this.telemeter&&this.telemeter.configure(this.options),Tr(t),this.global(this.options),Pr(t.tracer)&&(this.tracer=t.tracer),this},Ir.prototype.log=function(t){var e=this._defaultLogLevel();return this._log(e,t)},Ir.prototype.debug=function(t){this._log("debug",t)},Ir.prototype.info=function(t){this._log("info",t)},Ir.prototype.warn=function(t){this._log("warning",t)},Ir.prototype.warning=function(t){this._log("warning",t)},Ir.prototype.error=function(t){this._log("error",t)},Ir.prototype.critical=function(t){this._log("critical",t)},Ir.prototype.wait=function(t){this.queue.wait(t)},Ir.prototype.captureEvent=function(t,e,r){return this.telemeter&&this.telemeter.captureEvent(t,e,r)},Ir.prototype.captureDomContentLoaded=function(t){return this.telemeter&&this.telemeter.captureDomContentLoaded(t)},Ir.prototype.captureLoad=function(t){return this.telemeter&&this.telemeter.captureLoad(t)},Ir.prototype.buildJsonPayload=function(t){return this.api.buildJsonPayload(t)},Ir.prototype.sendJsonPayload=function(t){this.api.postJsonPayload(t)},Ir.prototype._log=function(t,e){var r;if(e.callback&&(r=e.callback,delete e.callback),this.options.ignoreDuplicateErrors&&this._sameAsLastError(e)){if(r){var n=new Error("ignored identical item");n.item=e,r(n)}}else try{e.level=e.level||t,this._addItemAttributes(e),this._addTracingInfo(e);var o=this.telemeter;o&&(o._captureRollbarItem(e),e.telemetryEvents=o.copyEvents()||[]),this.notifier.log(e,r)}catch(t){r&&r(t),this.logger.error(t)}},Ir.prototype._addItemAttributes=function(t){var e,r,n=null===(e=this.tracing)||void 0===e?void 0:e.getSpan(),o=[{key:"session_id",value:null===(r=this.tracing)||void 0===r?void 0:r.sessionId},{key:"span_id",value:null==n?void 0:n.spanId},{key:"trace_id",value:null==n?void 0:n.traceId}];t._isUncaught&&o.push({key:"is_uncaught",value:"true"}),j(t.data,o),null==n||n.addEvent("rollbar.occurrence",[{key:"rollbar.occurrence.uuid",value:t.uuid}])},Ir.prototype._defaultLogLevel=function(){return this.options.logLevel||"debug"},Ir.prototype._sameAsLastError=function(t){if(!t._isUncaught)return!1;var e=function(t){var e=t.message||"",r=(t.err||{}).stack||String(t.err);return e+"::"+r}(t);return this.lastErrorHash===e||(this.lastError=t.err,this.lastErrorHash=e,!1)},Ir.prototype._addTracingInfo=function(t){if(this.tracer){var e=this.tracer.scope().active();if(function(t){if(!t||!t.context||"function"!=typeof t.context)return!1;var e=t.context();if(!e||!e.toSpanId||!e.toTraceId||"function"!=typeof e.toSpanId||"function"!=typeof e.toTraceId)return!1;return!0}(e)){e.setTag("rollbar.error_uuid",t.uuid),e.setTag("rollbar.has_error",!0),e.setTag("error",!0),e.setTag("rollbar.item_url","https://rollbar.com/item/uuid/?uuid=".concat(t.uuid)),e.setTag("rollbar.occurrence_url","https://rollbar.com/occurrence/uuid/?uuid=".concat(t.uuid));var r=e.context().toSpanId(),n=e.context().toTraceId();t.custom?(t.custom.opentracing_span_id=r,t.custom.opentracing_trace_id=n):t.custom={opentracing_span_id:r,opentracing_trace_id:n}}}};var Ar=Ir;function Rr(t,e,r){t._isUncaught&&(t.data._isUncaught=!0),t._originalArgs&&(t.data._originalArgs=t._originalArgs),r(null,t)}function Cr(t,e,r){var n=e.payload||{};n.body&&delete n.body,t.data=R(t.data,n),r(null,t)}function Lr(t,e,r){t.telemetryEvents&&T(t,"data.body.telemetry",t.telemetryEvents),r(null,t)}function qr(t,e,r){if(t.message){var n="data.body.trace_chain.0",o=I(t,n);if(o||(o=I(t,n="data.body.trace")),o){if(!o.exception||!o.exception.description)return T(t,n+".exception.description",t.message),void r(null,t);T(t,n+".extra",R(I(t,n+".extra")||{},{message:t.message}))}r(null,t)}else r(null,t)}function Nr(t){return function(e,r,n){var o,i=R(e),s=null;try{u(r.transform)&&(s=r.transform(i.data,e))}catch(o){return r.transform=null,t.error("Error while calling custom transform() function. Removing custom transform().",o),void n(null,e)}l(o=s)&&a(o.then,"function")?s.then(function(t){t&&(i.data=t),n(null,i)},function(t){n(t,e)}):n(null,i)}}function Dr(t,e,r){if(!e.sendConfig)return r(null,t);var n=I(t,"data.custom")||{};n._rollbarConfig=e,t.data.custom=n,r(null,t)}function Mr(t,e){u(t[e])&&(t[e]=t[e].toString())}function Ur(t,e,r){var n=e._configuredOptions;Mr(n,"transform"),Mr(n,"checkIgnore"),Mr(n,"onSendCallback"),delete n.accessToken,t.data.notifier.configured_options=n,r(null,t)}function Hr(t,e,r){var n=R(t.notifier.client.notifier.diagnostic,t.diagnostic);if(I(t,"err._isAnonymous")&&(n.is_anonymous=!0),t._isUncaught&&(n.is_uncaught=t._isUncaught),t.err)try{n.raw_error={message:t.err.message,name:t.err.name,constructor_name:t.err.constructor&&t.err.constructor.name,filename:t.err.fileName,line:t.err.lineNumber,column:t.err.columnNumber,stack:t.err.stack}}catch(t){n.raw_error={failed:String(t)}}t.data.notifier.diagnostic=R(t.data.notifier.diagnostic,n),r(null,t)}function Fr(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:null)||t.stackInfo).stack;return e&&0===e.length&&t._unhandledStackInfo&&t._unhandledStackInfo.stack&&(e=t._unhandledStackInfo.stack),e}function Kr(t,e,r){var n=t&&t.data.description,o=t&&t.custom,i=Qr(t,e),a=rr.guessErrorClass(e.message),s={exception:{class:Yr(e,a[0],r),message:a[1]}};if(n&&(s.exception.description=n),i){var u,l,c,f,p,h,d,v;for(0===i.length&&(s.exception.stack=e.rawStack,s.exception.raw=String(e.rawException)),s.frames=[],d=0;dt.length)&&(e=t.length);for(var r=0,n=Array(e);r=400&&t.status<600}(e)){if(403===e.status){var o=t.value&&t.value.message;At.error(o)}u(new Error(String(e.status)))}else{u(sn("XHR response had no status code (likely connection failure)"))}}}catch(t){var i;i=t&&t.stack?t:new Error(t),u(i)}};if(e.open(o,n,!0),e.setRequestHeader){e.setRequestHeader("Content-Type","application/json"),e.setRequestHeader("X-Rollbar-Access-Token",r);for(var h=0,d=Object.entries(null!=s?s:{});hs)?(a=e.path,e.path=a.substring(0,s)+i+"&"+a.substring(s+1)):-1!==u?(a=e.path,e.path=a.substring(0,u)+i+a.substring(u)):e.path=e.path+i}(t,e,r);var i=m(e);this._makeZoneRequest({accessToken:t,url:i,method:"GET",callback:n,requestFactory:o,timeout:e.timeout,transport:e.transport})},ln.prototype.post=function(t){var e,r=t.accessToken,n=t.options,o=t.payload,i=t.headers,a=t.callback,s=t.requestFactory;if(a&&u(a)||(a=function(){}),!o)return a(new Error("Cannot send empty request"));if((e=this.truncation&&o.body?this.truncation.truncate(o):b(o)).error)return a(e.error);var l=m(n);this._makeZoneRequest({accessToken:r,url:l,method:"POST",payload:e.value,headers:i,callback:a,requestFactory:s,timeout:n.timeout,transport:n.transport})},ln.prototype.postJsonPayload=function(t,e,r,n,o){n&&u(n)||(n=function(){});var i=m(e);this._makeZoneRequest({accessToken:t,url:i,method:"POST",payload:r,callback:n,requestFactory:o,timeout:e.timeout,transport:e.transport})},ln.prototype._makeZoneRequest=function(){var t=this,e="undefined"!=typeof window&&window||"undefined"!=typeof self&&self,r=e&&e.Zone&&e.Zone.root,n=Array.prototype.slice.call(arguments);r?r.run(function(){t._makeRequest.apply(void 0,n)}):this._makeRequest.apply(void 0,n)},ln.prototype._makeRequest=function(t){var e=t.payload,r=t.callback,n=t.transport;if("undefined"!=typeof RollbarProxy)return function(t,e){(new RollbarProxy).sendJsonPayload(t,function(t){},function(t){e(new Error(t))})}(e,r);"fetch"===n?nn(t):un(t)};var cn,fn=ln;function pn(t){var e,r,n={protocol:null,auth:null,host:null,path:null,hash:null,href:t,hostname:null,port:null,pathname:null,search:null,query:null};if(-1!==(e=t.indexOf("//"))?(n.protocol=t.substring(0,e),r=e+2):r=0,-1!==(e=t.indexOf("@",r))&&(n.auth=t.substring(r,e),r=e+1),-1===(e=t.indexOf("/",r))){if(-1===(e=t.indexOf("?",r)))return-1===(e=t.indexOf("#",r))?n.host=t.substring(r):(n.host=t.substring(r,e),n.hash=t.substring(e)),n.hostname=n.host.split(":")[0],n.port=n.host.split(":")[1],n.port&&(n.port=parseInt(n.port,10)),n;n.host=t.substring(r,e),n.hostname=n.host.split(":")[0],n.port=n.host.split(":")[1],n.port&&(n.port=parseInt(n.port,10)),r=e}else n.host=t.substring(r,e),n.hostname=n.host.split(":")[0],n.port=n.host.split(":")[1],n.port&&(n.port=parseInt(n.port,10)),r=e;if(-1===(e=t.indexOf("#",r))?n.path=t.substring(r):(n.path=t.substring(r,e),n.hash=t.substring(e)),n.path){var o=n.path.split("?");n.pathname=o[0],n.query=o[1],n.search=n.query?"?"+n.query:null}return n}function hn(t){return hn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},hn(t)}function dn(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function yn(t){for(var e=1;e0&&T(e,"data.request",o),n(null,e)}}(r)).addTransform(function(t){return function(e,r,n){if(!t)return n(null,e);var o=t.navigator||{},i=t.screen||{};T(e,"data.client",{runtime_ms:e.timestamp-t._rollbarStartTime,timestamp:Math.round(e.timestamp/1e3),javascript:{browser:o.userAgent,language:o.language,cookie_enabled:o.cookieEnabled,screen:{width:i.width,height:i.height}}}),n(null,e)}}(r)).addTransform(function(t){return function(e,r,n){if(!t||!t.navigator)return n(null,e);for(var o,i=[],a=t.navigator.plugins||[],s=0,u=a.length;s=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function Tn(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=0;i--){if(e=An(t[i]),r=o+3*n.length+e.length,i=83){n.unshift("...");break}n.unshift(e),o+=e.length}return n.join(" > ")}(function(t){for(var e,r=[],n=0;t&&n<5&&(e=Rn(t))&&"html"!==e.tagName;n++)r.unshift(e),t=t.parentNode;return r}(t))}function An(t){if(!t||!t.tagName)return"";var e=[t.tagName];t.id&&e.push("#"+t.id),t.classes&&e.push("."+t.classes.join("."));var r,n=In(t.attributes);try{for(n.s();!(r=n.n()).done;){var o=r.value;e.push("["+o.key+'="'+o.value+'"]')}}catch(t){n.e(t)}finally{n.f()}return e.join("")}function Rn(t){if(!t||!t.tagName)return null;var e,r={};r.tagName=t.tagName.toLowerCase(),t.id&&(r.id=t.id),(e=t.className)&&"string"==typeof e&&(r.classes=e.split(/\s+/));r.attributes=[];for(var n=0,o=["type","name","title","alt"];n=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function Mn(t,e){if(t){if("string"==typeof t)return Un(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Un(t,e):void 0}}function Un(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r3)){var e=P();o.__rollbar_xhr.end_time_ms=e;var r=null;if(o.__rollbar_xhr.response_content_type=o.getResponseHeader("Content-Type"),t.autoInstrument.networkResponseHeaders){var i=t.autoInstrument.networkResponseHeaders;r={};try{var a;if(!0===i){var s=o.getAllResponseHeaders();if(s){var u,l,c,f=Dn(s.trim().split(/[\r\n]+/));try{for(f.s();!(c=f.n()).done;){a=(u=c.value.split(": ")).shift(),l=u.join(": "),r[a]=l}}catch(t){f.e(t)}finally{f.f()}}}else{var p,h=Dn(i);try{for(h.s();!(p=h.n()).done;){var d=p.value;r[d]=o.getResponseHeader(d)}}catch(t){h.e(t)}finally{h.f()}}}catch(t){}}var y=null;if(t.autoInstrument.networkResponseBody)try{y=o.responseText}catch(t){}var v=null;(y||r)&&(v={},y&&(t.isJsonContentType(o.__rollbar_xhr.response_content_type)?v.body=t.scrubJson(y):v.body=y),r&&(v.headers=r)),v&&(o.__rollbar_xhr.response=v);try{var m=o.status;m=1223===m?204:m,o.__rollbar_xhr.status_code=m,t.addOtelNetworkResponse(o.__rollbar_event,e,m),o.__rollbar_event.level=t.telemeter.levelFromStatus(m),t.errorOnHttpStatus(o.__rollbar_xhr)}catch(t){}}}return e("onload",o),e("onerror",o),e("onprogress",o),"onreadystatechange"in o&&u(o.onreadystatechange)?jn(o,"onreadystatechange",function(e){return t.rollbar.wrap(e,void 0,i)}):o.onreadystatechange=i,o.__rollbar_xhr&&t.trackHttpErrors()&&(o.__rollbar_xhr.stack=(new Error).stack),r.apply(this,arguments)}},this.replacements,"network")}"fetch"in this._window&&jn(this._window,"fetch",function(e){return function(r,n){var o,i=Array.prototype.slice.call(arguments),s=i[0],u="GET",l=Bn(s);a(s,"string")||l?o=l?s.toString():s:s&&(o=s.url,s.method&&(u=s.method)),i[1]&&i[1].method&&(u=i[1].method);var c={method:u,url:o,status_code:null,start_time_ms:P(),end_time_ms:null};if(i[1]&&i[1].headers){var f=En(i[1].headers);c.request_content_type=f.get("Content-Type"),t.autoInstrument.networkRequestHeaders&&(c.request_headers=t.fetchHeaders(f,t.autoInstrument.networkRequestHeaders))}t.autoInstrument.networkRequestBody&&(i[1]&&i[1].body?c.request=i[1].body:i[0]&&!a(i[0],"string")&&i[0].body&&(c.request=i[0].body));var p=t.captureNetwork(c,"fetch",void 0);return t.trackHttpErrors()&&(c.stack=(new Error).stack),e.apply(this,i).then(function(e){var r=P();c.end_time_ms=r,c.status_code=e.status,t.addOtelNetworkResponse(p,r,e.status),c.response_content_type=e.headers.get("Content-Type");var n=null;t.autoInstrument.networkResponseHeaders&&(n=t.fetchHeaders(e.headers,t.autoInstrument.networkResponseHeaders));var o=null;return t.autoInstrument.networkResponseBody&&"function"==typeof e.text&&(o=e.clone().text()),(n||o)&&(c.response={},o&&("function"==typeof o.then?o.then(function(e){e&&t.isJsonContentType(c.response_content_type)?c.response.body=t.scrubJson(e):c.response.body=e}):c.response.body=o),n&&(c.response.headers=n)),t.errorOnHttpStatus(c),e})}},this.replacements,"network")}},{key:"captureNetwork",value:function(t,e,r){return t.request&&this.isJsonContentType(t.request_content_type)&&(t.request=this.scrubJson(t.request)),this.telemeter.captureNetwork(t,e,r)}},{key:"isJsonContentType",value:function(t){return!!(t&&a(t,"string")&&t.toLowerCase().includes("json"))}},{key:"addOtelNetworkResponse",value:function(t,e,r){t.otelAttributes&&(t.otelAttributes["response.timeUnixNano"]=(1e6*e).toString(),t.otelAttributes.statusCode=r)}},{key:"scrubJson",value:function(t){return JSON.stringify(U(JSON.parse(t),this.options.scrubFields))}},{key:"fetchHeaders",value:function(t,e){var r={};try{if(!0===e){if("function"==typeof t.entries)for(var n=t.entries(),o=n.next();!o.done;)r[o.value[0]]=o.value[1],o=n.next()}else{var i,a=Dn(e);try{for(a.s();!(i=a.n()).done;){var s=i.value;r[s]=t.get(s)}}catch(t){a.e(t)}finally{a.f()}}}catch(t){}return r}},{key:"trackHttpErrors",value:function(){return this.autoInstrument.networkErrorOnHttp5xx||this.autoInstrument.networkErrorOnHttp4xx||this.autoInstrument.networkErrorOnHttp0}},{key:"errorOnHttpStatus",value:function(t){var e=t.status_code;if(e>=500&&this.autoInstrument.networkErrorOnHttp5xx||e>=400&&this.autoInstrument.networkErrorOnHttp4xx||0===e&&this.autoInstrument.networkErrorOnHttp0){var r=new Error("HTTP request failed with Status "+e);r.stack=t.stack,this.rollbar.error(r,{skipFrames:1})}}},{key:"deinstrumentConsole",value:function(){for(var t;this.replacements.log.length;)t=this.replacements.log.shift(),this._window.console[t[0]]=t[1]}},{key:"instrumentConsole",value:function(){var t;if(null!==(t=this._window)&&void 0!==t&&null!==(t=t.console)&&void 0!==t&&t.log){var e=this,r=this._window.console;try{for(var n=0,o=["debug","info","warn","error","log"];n500&&(n=n.substr(0,497)+"...");break;case"null":n="null";break;case"undefined":n="undefined";break;case"symbol":n=n.toString()}o.push(n)}return o.join(" ")}(t);e.telemeter.captureLog(r,i,null,P()),n&&Function.prototype.apply.call(n,o,t)},e.replacements.log.push([t,n])}}},{key:"deinstrumentDom",value:function(){this.removeListeners("dom")}},{key:"instrumentDom",value:function(){var t=this;this.addListener("dom",this._window,["click","dblclick","contextmenu"],function(e){return t.handleEvent("click",e)}),this.addListener("dom",this._window,["dragstart","dragend","dragenter","dragleave","drop"],function(e){return t.handleEvent("dragdrop",e)}),this.addListener("dom",this._window,["blur","focus"],function(e){return t.handleEvent("focus",e)}),this.addListener("dom",this._window,["submit","invalid"],function(e){return t.handleEvent("form",e)}),this.addListener("dom",this._window,["input","change"],function(e){return t.handleEvent("input",e)}),this.addListener("dom",this._window,["resize"],function(e){return t.handleEvent("resize",e)}),this.addListener("dom",this._document,["DOMContentLoaded"],function(e){return t.handleEvent("contentLoaded",e)})}},{key:"handleEvent",value:function(t,e){try{return{click:this.handleClick,dragdrop:this.handleDrag,focus:this.handleFocus,form:this.handleForm,input:this.handleInput,resize:this.handleResize,contentLoaded:this.handleContentLoaded}[t].call(this,e)}catch(r){At.log("".concat(t," handler error"),e,r,r.stack)}}},{key:"handleContentLoaded",value:function(t){this.rollbar.triggerReplay({type:"navigation",path:new URL(this._location.href).pathname})}},{key:"handleClick",value:function(t){var e,r=null===(e=t.target)||void 0===e?void 0:e.tagName.toLowerCase();["input","select","textarea"].includes(r)||this.telemeter.captureClick({type:t.type,isSynthetic:!t.isTrusted,element:Pn(t.target),timestamp:P()})}},{key:"handleFocus",value:function(t){var e,r=t.type,n=null!==(e=t.target)&&void 0!==e&&e.window?"window":Pn(t.target);this.telemeter.captureFocus({type:r,isSynthetic:!t.isTrusted,element:n,timestamp:P()})}},{key:"handleForm",value:function(t){}},{key:"handleResize",value:function(t){var e=window.screen.width/window.innerWidth;this.telemeter.captureResize({type:t.type,isSynthetic:!t.isTrusted,width:window.innerWidth,height:window.innerHeight,textZoomRatio:e,timestamp:P()})}},{key:"handleDrag",value:function(t){var e,r,n,o,i,a,s=t.type;if("drop"===s){e=[],r=[];var u,l=Dn([].concat(Ln(t.dataTransfer.files),Ln(t.dataTransfer.items)));try{for(l.s();!(u=l.n()).done;){var c=u.value;c.kind&&c.type&&(e.push(c.kind),r.push(c.type))}}catch(t){l.e(t)}finally{l.f()}}["drop","dragstart"].includes(s)&&(n=null===(i=t.dataTransfer)||void 0===i?void 0:i.dropEffect,o=null===(a=t.dataTransfer)||void 0===a?void 0:a.effectAllowed);this.telemeter.captureDragDrop({type:s,isSynthetic:!t.isTrusted,element:Pn(t.target),dropEffect:n,effectAllowed:o,kinds:JSON.stringify(e),mediaTypes:JSON.stringify(r),timestamp:P()})}},{key:"scrubInputValue",value:function(t,e,r,n){var o="******";if("password"===n)return o;if(this.scrubTelemetryInputs)return o;var i=Rn(e);if(this.telemetryScrubber){if(this.telemetryScrubber(i))return o}else if(this.defaultValueScrubber(i))return o;return function(t,e,r){try{var n,o=In(e);try{for(o.s();!(n=o.n()).done;){var i=n.value;if("string"==typeof i){if(t.classList.contains(i))return!0}else{var a,s=In(t.classList);try{for(s.s();!(a=s.n()).done;){var u=a.value;if(i.test(u))return!0}}catch(t){s.e(t)}finally{s.f()}}}}catch(t){o.e(t)}finally{o.f()}var l,c=In(r);try{for(c.s();!(l=c.n()).done;){var f=l.value;if(t.matches(f))return!0}}catch(t){c.e(t)}finally{c.f()}}catch(t){}return!1}(e,this.scrubClasses,this.scrubSelectors)?o:this.maskInputOptions[r.toLowerCase()]||this.maskInputOptions[n]?this.maskInputFn?this.maskInputFn(t,e):o:t}},{key:"handleInput",value:function(t){var e,r,n,o,i=t.type,a=null===(e=t.target)||void 0===e?void 0:e.tagName.toLowerCase(),s=null===(r=t.target)||void 0===r?void 0:r.value,u=(null===(n=t.target)||void 0===n||null===(n=n.attributes)||void 0===n||null===(n=n.type)||void 0===n?void 0:n.value)||(null===(o=t.target)||void 0===o?void 0:o.type);switch(void 0!==s&&(s=this.scrubInputValue(s,t.target,a,u)),i){case"input":if(["radio","checkbox"].includes(u))return;["select","textarea"].includes(a)&&(u=a);break;case"change":if(!["radio","checkbox"].includes(u))return;var l;if("checkbox"===u)s=null===(l=t.target)||void 0===l?void 0:l.checked}this.telemeter.captureInput({type:u,isSynthetic:!t.isTrusted,element:Pn(t.target),value:s,timestamp:P()})}},{key:"deinstrumentNavigation",value:function(){var t=this._window.chrome;!(t&&t.app&&t.app.runtime)&&this._window.history&&this._window.history.pushState&&Fn(this.replacements,"navigation")}},{key:"instrumentNavigation",value:function(){var t=this._window.chrome;if(!(t&&t.app&&t.app.runtime)&&this._window.history&&this._window.history.pushState){var e=this;jn(this._window,"onpopstate",function(t){return function(){var r=e._location.href;e.handleUrlChange(e._lastHref,r),t&&t.apply(this,arguments)}},this.replacements,"navigation"),jn(this._window.history,"pushState",function(t){return function(){var r=arguments.length>2?arguments[2]:void 0;return r&&e.handleUrlChange(e._lastHref,String(r)),t.apply(this,arguments)}},this.replacements,"navigation")}}},{key:"handleUrlChange",value:function(t,e){var r=pn(this._location.href),n=pn(e),o=pn(t);this._lastHref=e,r.protocol===n.protocol&&r.host===n.host&&(e=n.path+(n.hash||"")),r.protocol===o.protocol&&r.host===o.host&&(t=o.path+(o.hash||"")),this.telemeter.captureNavigation(t,e,null,P()),this.rollbar.triggerReplay({type:"navigation",path:e})}},{key:"instrumentConnectivity",value:function(){var t=this;this.addListener("connectivity",this._window,["online","offline"],function(e){return t.handleConnectivity(e)})}},{key:"handleConnectivity",value:function(t){var e=t.type;this.telemeter.captureConnectivityChange({type:e,isSynthetic:!t.isTrusted,timestamp:P()})}},{key:"handleCspEvent",value:function(t){var e="Security Policy Violation: blockedURI: "+t.blockedURI+", violatedDirective: "+t.violatedDirective+", effectiveDirective: "+t.effectiveDirective+", ";t.sourceFile&&(e+="location: "+t.sourceFile+", line: "+t.lineNumber+", col: "+t.columnNumber+", "),e+="originalPolicy: "+t.originalPolicy,this.telemeter.captureLog(e,"error",null,P()),this.handleCspError(e)}},{key:"handleCspError",value:function(t){this.autoInstrument.errorOnContentSecurityPolicy&&this.rollbar.error(t)}},{key:"deinstrumentContentSecurityPolicy",value:function(){this.removeListeners("contentsecuritypolicy")}},{key:"instrumentContentSecurityPolicy",value:function(){if("addEventListener"in this._document){var t=this.handleCspEvent.bind(this);this.addListener("contentsecuritypolicy",this._document,["securitypolicyviolation"],t)}}},{key:"addListener",value:function(t,e,r,n){var o=this;if(e.addEventListener){var i,a=Dn(r);try{var s=function(){var r=i.value,a={capture:!0,passive:!0};e.addEventListener(r,n,a,!0),o.eventRemovers[t].push(function(){e.removeEventListener(r,n,a)})};for(a.s();!(i=a.n()).done;)s()}catch(t){a.e(t)}finally{a.f()}}}},{key:"removeListeners",value:function(t){for(;this.eventRemovers[t].length;)this.eventRemovers[t].shift()()}}])}();function Bn(t){return"undefined"!=typeof URL&&t instanceof URL}var Wn=Vn;function $n(t,e,r){if(c(e,"addEventListener")){for(var n=e.addEventListener;n._rollbarOldAdd&&n.belongsToShim;)n=n._rollbarOldAdd;var o=function(e,r,o){n.call(this,e,t.wrap(r),o)};o._rollbarOldAdd=n,o.belongsToShim=r,e.addEventListener=o;for(var i=e.removeEventListener;i._rollbarOldRemove&&i.belongsToShim;)i=i._rollbarOldRemove;var a=function(t,e,r){i.call(this,t,e&&e._rollbar_wrapped||e,r)};a._rollbarOldRemove=i,a.belongsToShim=r,e.removeEventListener=a}}var Gn=function(t,e,r){if(t){var n,o,i="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".split(",");for(n=0;n qs)) {\n p = options.path;\n options.path = p.substring(0, qs) + query + '&' + p.substring(qs + 1);\n } else {\n if (h !== -1) {\n p = options.path;\n options.path = p.substring(0, h) + query + p.substring(h);\n } else {\n options.path = options.path + query;\n }\n }\n}\n\nfunction formatUrl(u, protocol) {\n protocol = protocol || u.protocol;\n if (!protocol && u.port) {\n if (u.port === 80) {\n protocol = 'http:';\n } else if (u.port === 443) {\n protocol = 'https:';\n }\n }\n protocol = protocol || 'https:';\n\n if (!u.hostname) {\n return null;\n }\n var result = protocol + '//' + u.hostname;\n if (u.port) {\n result = result + ':' + u.port;\n }\n if (u.path) {\n result = result + u.path;\n }\n return result;\n}\n\nfunction stringify(obj, backup) {\n var value, error;\n try {\n value = JSON.stringify(obj);\n } catch (jsonError) {\n if (backup && isFunction(backup)) {\n try {\n value = backup(obj);\n } catch (backupError) {\n error = backupError;\n }\n } else {\n error = jsonError;\n }\n }\n return { error: error, value: value };\n}\n\nfunction maxByteSize(string) {\n // The transport will use utf-8, so assume utf-8 encoding.\n //\n // This minimal implementation will accurately count bytes for all UCS-2 and\n // single code point UTF-16. If presented with multi code point UTF-16,\n // which should be rare, it will safely overcount, not undercount.\n //\n // While robust utf-8 encoders exist, this is far smaller and far more performant.\n // For quickly counting payload size for truncation, smaller is better.\n\n var count = 0;\n var length = string.length;\n\n for (var i = 0; i < length; i++) {\n var code = string.charCodeAt(i);\n if (code < 128) {\n // up to 7 bits\n count = count + 1;\n } else if (code < 2048) {\n // up to 11 bits\n count = count + 2;\n } else if (code < 65536) {\n // up to 16 bits\n count = count + 3;\n }\n }\n\n return count;\n}\n\nfunction jsonParse(s) {\n var value, error;\n try {\n value = JSON.parse(s);\n } catch (e) {\n error = e;\n }\n return { error: error, value: value };\n}\n\nfunction makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n mode,\n backupMessage,\n errorParser,\n) {\n var location = {\n url: url || '',\n line: lineno,\n column: colno,\n };\n location.func = errorParser.guessFunctionName(location.url, location.line);\n location.context = errorParser.gatherContext(location.url, location.line);\n var href =\n typeof document !== 'undefined' &&\n document &&\n document.location &&\n document.location.href;\n var useragent =\n typeof window !== 'undefined' &&\n window &&\n window.navigator &&\n window.navigator.userAgent;\n return {\n mode: mode,\n message: error ? String(error) : message || backupMessage,\n url: href,\n stack: [location],\n useragent: useragent,\n };\n}\n\nfunction wrapCallback(logger, f) {\n return function (err, resp) {\n try {\n f(err, resp);\n } catch (e) {\n logger.error(e);\n }\n };\n}\n\nfunction nonCircularClone(obj) {\n var seen = [obj];\n\n function clone(obj, seen) {\n var value,\n name,\n newSeen,\n result = {};\n\n try {\n for (name in obj) {\n value = obj[name];\n\n if (value && (isType(value, 'object') || isType(value, 'array'))) {\n if (seen.includes(value)) {\n result[name] = 'Removed circular reference: ' + typeName(value);\n } else {\n newSeen = seen.slice();\n newSeen.push(value);\n result[name] = clone(value, newSeen);\n }\n continue;\n }\n\n result[name] = value;\n }\n } catch (e) {\n result = 'Failed cloning custom data: ' + e.message;\n }\n return result;\n }\n return clone(obj, seen);\n}\n\nfunction createItem(args, logger, notifier, requestKeys, lambdaContext) {\n var message, err, custom, callback, request;\n var arg;\n var extraArgs = [];\n var diagnostic = {};\n var argTypes = [];\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n argTypes.push(typ);\n switch (typ) {\n case 'undefined':\n break;\n case 'string':\n message ? extraArgs.push(arg) : (message = arg);\n break;\n case 'function':\n callback = wrapCallback(logger, arg);\n break;\n case 'date':\n extraArgs.push(arg);\n break;\n case 'error':\n case 'domexception':\n case 'exception': // Firefox Exception type\n err ? extraArgs.push(arg) : (err = arg);\n break;\n case 'object':\n case 'array':\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n err ? extraArgs.push(arg) : (err = arg);\n break;\n }\n if (requestKeys && typ === 'object' && !request) {\n for (var j = 0, len = requestKeys.length; j < len; ++j) {\n if (arg[requestKeys[j]] !== undefined) {\n request = arg;\n break;\n }\n }\n if (request) {\n break;\n }\n }\n custom ? extraArgs.push(arg) : (custom = arg);\n break;\n default:\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n err ? extraArgs.push(arg) : (err = arg);\n break;\n }\n extraArgs.push(arg);\n }\n }\n\n // if custom is an array this turns it into an object with integer keys\n if (custom) custom = nonCircularClone(custom);\n\n if (extraArgs.length > 0) {\n if (!custom) custom = nonCircularClone({});\n custom.extraArgs = nonCircularClone(extraArgs);\n }\n\n var item = {\n message: message,\n err: err,\n custom: custom,\n timestamp: now(),\n callback: callback,\n notifier: notifier,\n diagnostic: diagnostic,\n uuid: uuid4(),\n };\n\n item.data = item.data || {};\n\n setCustomItemKeys(item, custom);\n\n if (requestKeys && request) {\n item.request = request;\n }\n if (lambdaContext) {\n item.lambdaContext = lambdaContext;\n }\n item._originalArgs = args;\n item.diagnostic.original_arg_types = argTypes;\n return item;\n}\n\nfunction setCustomItemKeys(item, custom) {\n if (custom && custom.level !== undefined) {\n item.level = custom.level;\n delete custom.level;\n }\n if (custom && custom.skipFrames !== undefined) {\n item.skipFrames = custom.skipFrames;\n delete custom.skipFrames;\n }\n}\n\nfunction addErrorContext(item, errors) {\n var custom = item.data.custom || {};\n var contextAdded = false;\n\n try {\n for (var i = 0; i < errors.length; ++i) {\n if (errors[i].hasOwnProperty('rollbarContext')) {\n custom = merge(custom, nonCircularClone(errors[i].rollbarContext));\n contextAdded = true;\n }\n }\n\n // Avoid adding an empty object to the data.\n if (contextAdded) {\n item.data.custom = custom;\n }\n } catch (e) {\n item.diagnostic.error_context = 'Failed: ' + e.message;\n }\n}\n\nvar TELEMETRY_TYPES = [\n 'log',\n 'network',\n 'dom',\n 'navigation',\n 'error',\n 'manual',\n];\nvar TELEMETRY_LEVELS = ['critical', 'error', 'warning', 'info', 'debug'];\n\nfunction arrayIncludes(arr, val) {\n for (var k = 0; k < arr.length; ++k) {\n if (arr[k] === val) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction createTelemetryEvent(args) {\n var type, metadata, level;\n var arg;\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n switch (typ) {\n case 'string':\n if (!type && arrayIncludes(TELEMETRY_TYPES, arg)) {\n type = arg;\n } else if (!level && arrayIncludes(TELEMETRY_LEVELS, arg)) {\n level = arg;\n }\n break;\n case 'object':\n metadata = arg;\n break;\n default:\n break;\n }\n }\n var event = {\n type: type || 'manual',\n metadata: metadata || {},\n level: level,\n };\n\n return event;\n}\n\nfunction addItemAttributes(itemData, attributes) {\n itemData.attributes = itemData.attributes || [];\n for (const a of attributes) {\n if (a.value === undefined) {\n continue;\n }\n itemData.attributes.push(a);\n }\n}\n\n/*\n * get - given an obj/array and a keypath, return the value at that keypath or\n * undefined if not possible.\n *\n * @param obj - an object or array\n * @param path - a string of keys separated by '.' such as 'plugin.jquery.0.message'\n * which would correspond to 42 in `{plugin: {jquery: [{message: 42}]}}`\n */\nfunction get(obj, path) {\n if (!obj) {\n return undefined;\n }\n var keys = path.split('.');\n var result = obj;\n try {\n for (var i = 0, len = keys.length; i < len; ++i) {\n result = result[keys[i]];\n }\n } catch (e) {\n result = undefined;\n }\n return result;\n}\n\nfunction set(obj, path, value) {\n if (!obj) {\n return;\n }\n\n // Prevent prototype pollution by setting the prototype to null.\n Object.setPrototypeOf(obj, null);\n\n var keys = path.split('.');\n var len = keys.length;\n if (len < 1) {\n return;\n }\n if (len === 1) {\n obj[keys[0]] = value;\n return;\n }\n try {\n var temp = obj[keys[0]] || {};\n var replacement = temp;\n for (var i = 1; i < len - 1; ++i) {\n temp[keys[i]] = temp[keys[i]] || {};\n temp = temp[keys[i]];\n }\n temp[keys[len - 1]] = value;\n obj[keys[0]] = replacement;\n } catch (e) {\n return;\n }\n}\n\nfunction formatArgsAsString(args) {\n var i, len, arg;\n var result = [];\n for (i = 0, len = args.length; i < len; ++i) {\n arg = args[i];\n switch (typeName(arg)) {\n case 'object':\n arg = stringify(arg);\n arg = arg.error || arg.value;\n if (arg.length > 500) {\n arg = arg.substr(0, 497) + '...';\n }\n break;\n case 'null':\n arg = 'null';\n break;\n case 'undefined':\n arg = 'undefined';\n break;\n case 'symbol':\n arg = arg.toString();\n break;\n }\n result.push(arg);\n }\n return result.join(' ');\n}\n\nfunction now() {\n if (Date.now) {\n return +Date.now();\n }\n return +new Date();\n}\n\nfunction filterIp(requestData, captureIp) {\n if (!requestData || !requestData['user_ip'] || captureIp === true) {\n return;\n }\n var newIp = requestData['user_ip'];\n if (!captureIp) {\n newIp = null;\n } else {\n try {\n var parts;\n if (newIp.indexOf('.') !== -1) {\n parts = newIp.split('.');\n parts.pop();\n parts.push('0');\n newIp = parts.join('.');\n } else if (newIp.indexOf(':') !== -1) {\n parts = newIp.split(':');\n if (parts.length > 2) {\n var beginning = parts.slice(0, 3);\n var slashIdx = beginning[2].indexOf('/');\n if (slashIdx !== -1) {\n beginning[2] = beginning[2].substring(0, slashIdx);\n }\n var terminal = '0000:0000:0000:0000:0000';\n newIp = beginning.concat(terminal).join(':');\n }\n } else {\n newIp = null;\n }\n } catch (e) {\n newIp = null;\n }\n }\n requestData['user_ip'] = newIp;\n}\n\nfunction handleOptions(current, input, payload, logger) {\n var result = merge(current, input, payload);\n result = updateDeprecatedOptions(result, logger);\n if (!input || input.overwriteScrubFields) {\n return result;\n }\n if (input.scrubFields) {\n result.scrubFields = (current.scrubFields || []).concat(input.scrubFields);\n }\n return result;\n}\n\nfunction updateDeprecatedOptions(options, logger) {\n if (options.hostWhiteList && !options.hostSafeList) {\n options.hostSafeList = options.hostWhiteList;\n options.hostWhiteList = undefined;\n logger && logger.log('hostWhiteList is deprecated. Use hostSafeList.');\n }\n if (options.hostBlackList && !options.hostBlockList) {\n options.hostBlockList = options.hostBlackList;\n options.hostBlackList = undefined;\n logger && logger.log('hostBlackList is deprecated. Use hostBlockList.');\n }\n return options;\n}\n\nexport {\n addParamsAndAccessTokenToPath,\n createItem,\n addErrorContext,\n createTelemetryEvent,\n addItemAttributes,\n filterIp,\n formatArgsAsString,\n formatUrl,\n get,\n handleOptions,\n isError,\n isFiniteNumber,\n isFunction,\n isIterable,\n isNativeFunction,\n isObject,\n isString,\n isType,\n isPromise,\n isBrowser,\n jsonParse,\n LEVELS,\n makeUnhandledStackInfo,\n merge,\n now,\n redact,\n sanitizeHref,\n sanitizeUrl,\n set,\n stringify,\n maxByteSize,\n typeName,\n uuid4,\n};\n","import * as _ from './utility.js';\n\n/*\n * RateLimiter - an object that encapsulates the logic for counting items sent to Rollbar\n *\n * @param options - the same options that are accepted by configureGlobal offered as a convenience\n */\nfunction RateLimiter(options) {\n this.startTime = _.now();\n this.counter = 0;\n this.perMinCounter = 0;\n this.platform = null;\n this.platformOptions = {};\n this.configureGlobal(options);\n}\n\nRateLimiter.globalSettings = {\n startTime: _.now(),\n maxItems: undefined,\n itemsPerMinute: undefined,\n};\n\n/*\n * configureGlobal - set the global rate limiter options\n *\n * @param options - Only the following values are recognized:\n * startTime: a timestamp of the form returned by (new Date()).getTime()\n * maxItems: the maximum items\n * itemsPerMinute: the max number of items to send in a given minute\n */\nRateLimiter.prototype.configureGlobal = function (options) {\n if (options.startTime !== undefined) {\n RateLimiter.globalSettings.startTime = options.startTime;\n }\n if (options.maxItems !== undefined) {\n RateLimiter.globalSettings.maxItems = options.maxItems;\n }\n if (options.itemsPerMinute !== undefined) {\n RateLimiter.globalSettings.itemsPerMinute = options.itemsPerMinute;\n }\n};\n\n/*\n * shouldSend - determine if we should send a given item based on rate limit settings\n *\n * @param item - the item we are about to send\n * @returns An object with the following structure:\n * error: (Error|null)\n * shouldSend: bool\n * payload: (Object|null)\n * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and\n * exactly one of error or payload will be non-null. If error is non-null, the returned Error will\n * describe the situation, but it means that we were already over a rate limit (either globally or\n * per minute) when this item was checked. If error is null, and therefore payload is non-null, it\n * means this item put us over the global rate limit and the payload should be sent to Rollbar in\n * place of the passed in item.\n */\nRateLimiter.prototype.shouldSend = function (item, now) {\n now = now || _.now();\n var elapsedTime = now - this.startTime;\n if (elapsedTime < 0 || elapsedTime >= 60000) {\n this.startTime = now;\n this.perMinCounter = 0;\n }\n\n var globalRateLimit = RateLimiter.globalSettings.maxItems;\n var globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute;\n\n if (checkRate(item, globalRateLimit, this.counter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n globalRateLimit + ' max items reached',\n false,\n );\n } else if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n globalRateLimitPerMin + ' items per minute reached',\n false,\n );\n }\n this.counter++;\n this.perMinCounter++;\n\n var shouldSend = !checkRate(item, globalRateLimit, this.counter);\n var perMinute = shouldSend;\n shouldSend =\n shouldSend && !checkRate(item, globalRateLimitPerMin, this.perMinCounter);\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n null,\n shouldSend,\n globalRateLimit,\n globalRateLimitPerMin,\n perMinute,\n );\n};\n\nRateLimiter.prototype.setPlatformOptions = function (platform, options) {\n this.platform = platform;\n this.platformOptions = options;\n};\n\n/* Helpers */\n\nfunction checkRate(item, limit, counter) {\n return !item.ignoreRateLimit && limit >= 1 && counter > limit;\n}\n\nfunction shouldSendValue(\n platform,\n options,\n error,\n shouldSend,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n var payload = null;\n if (error) {\n error = new Error(error);\n }\n if (!error && !shouldSend) {\n payload = rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n );\n }\n return { error: error, shouldSend: shouldSend, payload: payload };\n}\n\nfunction rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n var environment =\n options.environment || (options.payload && options.payload.environment);\n var msg;\n if (perMinute) {\n msg = 'item per minute limit reached, ignoring errors until timeout';\n } else {\n msg = 'maxItems has been hit, ignoring errors until reset.';\n }\n var item = {\n body: {\n message: {\n body: msg,\n extra: {\n maxItems: globalRateLimit,\n itemsPerMinute: limitPerMin,\n },\n },\n },\n language: 'javascript',\n environment: environment,\n notifier: {\n version:\n (options.notifier && options.notifier.version) || options.version,\n },\n };\n if (platform === 'browser') {\n item.platform = 'browser';\n item.framework = 'browser-js';\n item.notifier.name = 'rollbar-browser-js';\n } else if (platform === 'server') {\n item.framework = options.framework || 'node-js';\n item.notifier.name = options.notifier.name;\n } else if (platform === 'react-native') {\n item.framework = options.framework || 'react-native';\n item.notifier.name = options.notifier.name;\n }\n return item;\n}\n\nexport default RateLimiter;\n","import * as _ from './utility.js';\n\n/**\n * Queue - an object which handles which handles a queue of items to be sent to Rollbar.\n * This object handles rate limiting via a passed in rate limiter, retries based on connection\n * errors, and filtering of items based on a set of configurable predicates. The communication to\n * the backend is performed via a given API object.\n */\nclass Queue {\n /**\n * @param rateLimiter - An object which conforms to the interface\n * `rateLimiter.shouldSend(item) -> bool`\n * @param api - An object which conforms to the interface\n * `api.postItem(payload, function(err, response))`\n * @param logger - An object used to log verbose messages if desired\n * @param options - see `Queue.prototype.configure`\n * @param replay - Optional `Replay` for coordinating session replay with error occurrences\n */\n constructor(rateLimiter, api, logger, options, replay) {\n this.rateLimiter = rateLimiter;\n this.api = api;\n this.logger = logger;\n this.options = options;\n this.replay = replay;\n this.predicates = [];\n this.pendingItems = [];\n this.pendingRequests = [];\n this.retryQueue = [];\n this.retryHandle = null;\n this.waitCallback = null;\n this.waitIntervalID = null;\n }\n\n /**\n * configure - updates the options this queue uses\n *\n * @param options\n */\n configure(options) {\n this.api?.configure(options);\n const oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n return this;\n }\n\n /**\n * addPredicate - adds a predicate to the end of the list of predicates for this queue\n *\n * @param predicate - function(item, options) -> (bool|{err: Error})\n * Returning true means that this predicate passes and the item is okay to go on the queue\n * Returning false means do not add the item to the queue, but it is not an error\n * Returning {err: Error} means do not add the item to the queue, and the given error explains why\n * Returning {err: undefined} is equivalent to returning true but don't do that\n */\n addPredicate(predicate) {\n if (_.isFunction(predicate)) {\n this.predicates.push(predicate);\n }\n return this;\n }\n\n addPendingItem(item) {\n this.pendingItems.push(item);\n }\n\n removePendingItem(item) {\n const idx = this.pendingItems.indexOf(item);\n if (idx !== -1) {\n this.pendingItems.splice(idx, 1);\n }\n }\n\n /**\n * addItem - Send an item to the Rollbar API if all of the predicates are satisfied\n *\n * @param item - Item instance with the payload to send to the backend\n * @param callback - function(error, repsonse) which will be called with the response from the API\n * in the case of a success, otherwise response will be null and error will have a value. If both\n * error and response are null then the item was stopped by a predicate which did not consider this\n * to be an error condition, but nonetheless did not send the item to the API.\n * @param originalError - The original error before any transformations that is to be logged if any\n * @param originalItem - The original item before transforms, used in pendingItems queue\n */\n addItem(item, callback, originalError, originalItem) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {\n return;\n };\n }\n const data = item.data;\n const predicateResult = this._applyPredicates(data);\n if (predicateResult.stop) {\n this.removePendingItem(originalItem);\n callback(predicateResult.err);\n return;\n }\n this._maybeLog(data, originalError);\n this.removePendingItem(originalItem);\n if (!this.options.transmit) {\n callback(new Error('Transmit disabled'));\n return;\n }\n\n if (this.replay && data.body) {\n item.replayId = this.replay.capture(null, data.uuid, {\n type: 'occurrence',\n level: item.level,\n });\n\n if (item.replayId) {\n _.addItemAttributes(item.data, [\n { key: 'replay_id', value: item.replayId },\n ]);\n }\n }\n\n this.pendingRequests.push(data);\n try {\n this._makeApiRequest(data, (err, resp, headers) => {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers);\n }\n\n callback(err, resp);\n });\n } catch (err) {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay?.discard(item.replayId);\n }\n\n callback(err);\n }\n }\n\n /**\n * wait - Stop any further errors from being added to the queue, and get called back when all items\n * currently processing have finished sending to the backend.\n *\n * @param callback - function() called when all pending items have been sent\n */\n wait(callback) {\n if (!_.isFunction(callback)) {\n return;\n }\n this.waitCallback = callback;\n if (this._maybeCallWait()) {\n return;\n }\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitIntervalID = setInterval(() => {\n this._maybeCallWait();\n }, 500);\n }\n\n /**\n * Sequentially applies the predicates that have been added to the queue to the\n * given item with the currently configured options.\n *\n * @param item - An item in the queue\n * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue,\n * the error value should be passed up to a callbak if we are stopping.\n */\n _applyPredicates(item) {\n let p = null;\n for (let i = 0, len = this.predicates.length; i < len; i++) {\n p = this.predicates[i](item, this.options);\n if (!p || p.err !== undefined) {\n return { stop: true, err: p.err };\n }\n }\n return { stop: false, err: null };\n }\n\n /**\n * Send an item to Rollbar, callback when done, if there is an error make an\n * effort to retry if we are configured to do so.\n *\n * @param item - an item ready to send to the backend\n * @param callback - function(err, response)\n */\n _makeApiRequest(item, callback) {\n const rateLimitResponse = this.rateLimiter.shouldSend(item);\n if (rateLimitResponse.shouldSend) {\n this.api.postItem(item, (err, resp, headers) => {\n if (err) {\n this._maybeRetry(err, item, callback);\n } else {\n callback(err, resp, headers);\n }\n });\n } else if (rateLimitResponse.error) {\n callback(rateLimitResponse.error);\n } else {\n this.api.postItem(rateLimitResponse.payload, callback);\n }\n }\n\n // These are errors basically mean there is no internet connection\n static RETRIABLE_ERRORS = [\n 'ECONNRESET',\n 'ENOTFOUND',\n 'ESOCKETTIMEDOUT',\n 'ETIMEDOUT',\n 'ECONNREFUSED',\n 'EHOSTUNREACH',\n 'EPIPE',\n 'EAI_AGAIN',\n ];\n\n /**\n * Given the error returned by the API, decide if we should retry or just callback\n * with the error.\n *\n * @param err - an error returned by the API transport\n * @param item - the item that was trying to be sent when this error occured\n * @param callback - function(err, response)\n */\n _maybeRetry(err, item, callback) {\n let shouldRetry = false;\n if (this.options.retryInterval) {\n for (let i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) {\n if (err.code === Queue.RETRIABLE_ERRORS[i]) {\n shouldRetry = true;\n break;\n }\n }\n if (shouldRetry && _.isFiniteNumber(this.options.maxRetries)) {\n item.retries = item.retries ? item.retries + 1 : 1;\n if (item.retries > this.options.maxRetries) {\n shouldRetry = false;\n }\n }\n }\n if (shouldRetry) {\n this._retryApiRequest(item, callback);\n } else {\n callback(err);\n }\n }\n\n /**\n * Add an item and a callback to a queue and possibly start a timer to process\n * that queue based on the retryInterval in the options for this queue.\n *\n * @param item - an item that failed to send due to an error we deem retriable\n * @param callback - function(err, response)\n */\n _retryApiRequest(item, callback) {\n this.retryQueue.push({ item, callback });\n\n if (!this.retryHandle) {\n this.retryHandle = setInterval(() => {\n while (this.retryQueue.length) {\n const retryObject = this.retryQueue.shift();\n this._makeApiRequest(retryObject.item, retryObject.callback);\n }\n }, this.options.retryInterval);\n }\n }\n\n /**\n * Removes the item from the pending request queue, this queue is used to\n * enable to functionality of providing a callback that clients can pass to `wait` to be notified\n * when the pending request queue has been emptied. This must be called when the API finishes\n * processing this item. If a `wait` callback is configured, it is called by this function.\n *\n * @param item - the item previously added to the pending request queue\n */\n _dequeuePendingRequest(item) {\n const idx = this.pendingRequests.indexOf(item);\n if (idx !== -1) {\n this.pendingRequests.splice(idx, 1);\n this._maybeCallWait();\n }\n }\n\n _maybeLog(data, originalError) {\n if (this.logger && this.options.verbose) {\n let message =\n originalError ||\n _.get(data, 'body.trace.exception.message') ||\n _.get(data, 'body.trace_chain.0.exception.message');\n if (message) {\n this.logger.error(message);\n return;\n }\n message = _.get(data, 'body.message.body');\n if (message) {\n this.logger.log(message);\n }\n }\n }\n\n _maybeCallWait() {\n if (\n _.isFunction(this.waitCallback) &&\n this.pendingItems.length === 0 &&\n this.pendingRequests.length === 0\n ) {\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitCallback();\n return true;\n }\n return false;\n }\n}\n\nexport default Queue;\n","import * as _ from './utility.js';\n\n/*\n * Notifier - the internal object responsible for delegating between the client exposed API, the\n * chain of transforms necessary to turn an item into something that can be sent to Rollbar, and the\n * queue which handles the communcation with the Rollbar API servers.\n *\n * @param queue - an object that conforms to the interface: addItem(item, callback)\n * @param options - an object representing the options to be set for this notifier, this should have\n * any defaults already set by the caller\n */\nfunction Notifier(queue, options) {\n this.queue = queue;\n this.options = options;\n this.transforms = [];\n this.diagnostic = {};\n}\n\n/*\n * configure - updates the options for this notifier with the passed in object\n *\n * @param options - an object which gets merged with the current options set on this notifier\n * @returns this\n */\nNotifier.prototype.configure = function (options) {\n this.queue && this.queue.configure(options);\n var oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n return this;\n};\n\n/*\n * addTransform - adds a transform onto the end of the queue of transforms for this notifier\n *\n * @param transform - a function which takes three arguments:\n * * item: An Object representing the data to eventually be sent to Rollbar\n * * options: The current value of the options for this notifier\n * * callback: function(err: (Null|Error), item: (Null|Object)) the transform must call this\n * callback with a null value for error if it wants the processing chain to continue, otherwise\n * with an error to terminate the processing. The item should be the updated item after this\n * transform is finished modifying it.\n */\nNotifier.prototype.addTransform = function (transform) {\n if (_.isFunction(transform)) {\n this.transforms.push(transform);\n }\n return this;\n};\n\n/*\n * log - the internal log function which applies the configured transforms and then pushes onto the\n * queue to be sent to the backend.\n *\n * @param item - An object with the following structure:\n * message [String] - An optional string to be sent to rollbar\n * error [Error] - An optional error\n *\n * @param callback - A function of type function(err, resp) which will be called with exactly one\n * null argument and one non-null argument. The callback will be called once, either during the\n * transform stage if an error occurs inside a transform, or in response to the communication with\n * the backend. The second argument will be the response from the backend in case of success.\n */\nNotifier.prototype.log = function (item, callback) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n\n if (!this.options.enabled) {\n return callback(new Error('Rollbar is not enabled'));\n }\n\n this.queue.addPendingItem(item);\n var originalError = item.err;\n this._applyTransforms(\n item,\n function (err, i) {\n if (err) {\n this.queue.removePendingItem(item);\n return callback(err, null);\n }\n this.queue.addItem(i, callback, originalError, item);\n }.bind(this),\n );\n};\n\n/* Internal */\n\n/*\n * _applyTransforms - Applies the transforms that have been added to this notifier sequentially. See\n * `addTransform` for more information.\n *\n * @param item - An item to be transformed\n * @param callback - A function of type function(err, item) which will be called with a non-null\n * error and a null item in the case of a transform failure, or a null error and non-null item after\n * all transforms have been applied.\n */\nNotifier.prototype._applyTransforms = function (item, callback) {\n var transformIndex = -1;\n var transformsLength = this.transforms.length;\n var transforms = this.transforms;\n var options = this.options;\n\n var cb = function (err, i) {\n if (err) {\n callback(err, null);\n return;\n }\n\n transformIndex++;\n\n if (transformIndex === transformsLength) {\n callback(null, i);\n return;\n }\n\n transforms[transformIndex](i, options, cb);\n };\n\n cb(null, item);\n};\n\nexport default Notifier;\n","import RateLimiter from './rateLimiter.js';\nimport Queue from './queue.js';\nimport Notifier from './notifier.js';\nimport * as _ from './utility.js';\n\n/*\n * Rollbar - the interface to Rollbar\n *\n * @param options\n * @param api\n * @param logger\n */\nfunction Rollbar(options, api, logger, telemeter, tracing, replay, platform) {\n this.options = _.merge(options);\n this.logger = logger;\n Rollbar.rateLimiter.configureGlobal(this.options);\n Rollbar.rateLimiter.setPlatformOptions(platform, this.options);\n this.api = api;\n this.queue = new Queue(\n Rollbar.rateLimiter,\n api,\n logger,\n this.options,\n replay,\n );\n\n this.tracing = tracing;\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is created\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier = new Notifier(this.queue, this.options);\n this.telemeter = telemeter;\n setStackTraceLimit(options);\n this.lastError = null;\n this.lastErrorHash = 'none';\n}\n\nvar defaultOptions = {\n maxItems: 0,\n itemsPerMinute: 60,\n};\n\nRollbar.rateLimiter = new RateLimiter(defaultOptions);\n\nRollbar.prototype.global = function (options) {\n Rollbar.rateLimiter.configureGlobal(options);\n return this;\n};\n\nRollbar.prototype.configure = function (options, payloadData) {\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.merge(oldOptions, options, payload);\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is configured\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier && this.notifier.configure(this.options);\n this.telemeter && this.telemeter.configure(this.options);\n setStackTraceLimit(options);\n this.global(this.options);\n\n if (validateTracer(options.tracer)) {\n this.tracer = options.tracer;\n }\n\n return this;\n};\n\nRollbar.prototype.log = function (item) {\n var level = this._defaultLogLevel();\n return this._log(level, item);\n};\n\nRollbar.prototype.debug = function (item) {\n this._log('debug', item);\n};\n\nRollbar.prototype.info = function (item) {\n this._log('info', item);\n};\n\nRollbar.prototype.warn = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.warning = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.error = function (item) {\n this._log('error', item);\n};\n\nRollbar.prototype.critical = function (item) {\n this._log('critical', item);\n};\n\nRollbar.prototype.wait = function (callback) {\n this.queue.wait(callback);\n};\n\nRollbar.prototype.captureEvent = function (type, metadata, level) {\n return this.telemeter && this.telemeter.captureEvent(type, metadata, level);\n};\n\nRollbar.prototype.captureDomContentLoaded = function (ts) {\n return this.telemeter && this.telemeter.captureDomContentLoaded(ts);\n};\n\nRollbar.prototype.captureLoad = function (ts) {\n return this.telemeter && this.telemeter.captureLoad(ts);\n};\n\nRollbar.prototype.buildJsonPayload = function (item) {\n return this.api.buildJsonPayload(item);\n};\n\nRollbar.prototype.sendJsonPayload = function (jsonPayload) {\n this.api.postJsonPayload(jsonPayload);\n};\n\n/* Internal */\n\nRollbar.prototype._log = function (defaultLevel, item) {\n var callback;\n if (item.callback) {\n callback = item.callback;\n delete item.callback;\n }\n if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) {\n if (callback) {\n var error = new Error('ignored identical item');\n error.item = item;\n callback(error);\n }\n return;\n }\n try {\n item.level = item.level || defaultLevel;\n\n this._addTracingAttributes(item);\n\n // Legacy OpenTracing support\n this._addTracingInfo(item);\n\n const telemeter = this.telemeter;\n if (telemeter) {\n telemeter._captureRollbarItem(item);\n item.telemetryEvents = telemeter.copyEvents() || [];\n }\n\n this.notifier.log(item, callback);\n } catch (e) {\n if (callback) {\n callback(e);\n }\n this.logger.error(e);\n }\n};\n\nRollbar.prototype._addTracingAttributes = function (item) {\n const span = this.tracing?.getSpan();\n\n const attributes = [\n { key: 'session_id', value: this.tracing?.sessionId },\n { key: 'span_id', value: span?.spanId },\n { key: 'trace_id', value: span?.traceId },\n ];\n _.addItemAttributes(item.data, attributes);\n\n span?.addEvent('rollbar.occurrence', [\n { key: 'rollbar.occurrence.uuid', value: item.uuid },\n ]);\n};\n\nRollbar.prototype._defaultLogLevel = function () {\n return this.options.logLevel || 'debug';\n};\n\nRollbar.prototype._sameAsLastError = function (item) {\n if (!item._isUncaught) {\n return false;\n }\n var itemHash = generateItemHash(item);\n if (this.lastErrorHash === itemHash) {\n return true;\n }\n this.lastError = item.err;\n this.lastErrorHash = itemHash;\n return false;\n};\n\nRollbar.prototype._addTracingInfo = function (item) {\n // Tracer validation occurs in the constructor\n // or in the Rollbar.prototype.configure methods\n if (this.tracer) {\n // add rollbar occurrence uuid to span\n var span = this.tracer.scope().active();\n\n if (validateSpan(span)) {\n span.setTag('rollbar.error_uuid', item.uuid);\n span.setTag('rollbar.has_error', true);\n span.setTag('error', true);\n span.setTag(\n 'rollbar.item_url',\n `https://rollbar.com/item/uuid/?uuid=${item.uuid}`,\n );\n span.setTag(\n 'rollbar.occurrence_url',\n `https://rollbar.com/occurrence/uuid/?uuid=${item.uuid}`,\n );\n\n // add span ID & trace ID to occurrence\n var opentracingSpanId = span.context().toSpanId();\n var opentracingTraceId = span.context().toTraceId();\n\n if (item.custom) {\n item.custom.opentracing_span_id = opentracingSpanId;\n item.custom.opentracing_trace_id = opentracingTraceId;\n } else {\n item.custom = {\n opentracing_span_id: opentracingSpanId,\n opentracing_trace_id: opentracingTraceId,\n };\n }\n }\n }\n};\n\nfunction generateItemHash(item) {\n var message = item.message || '';\n var stack = (item.err || {}).stack || String(item.err);\n return message + '::' + stack;\n}\n\n// Node.js, Chrome, Safari, and some other browsers support this property\n// which globally sets the number of stack frames returned in an Error object.\n// If a browser can't use it, no harm done.\nfunction setStackTraceLimit(options) {\n if (options.stackTraceLimit) {\n Error.stackTraceLimit = options.stackTraceLimit;\n }\n}\n\n/**\n * Validate the Tracer object provided to the Client\n * is valid for our Opentracing use case.\n * @param {opentracer.Tracer} tracer\n */\nfunction validateTracer(tracer) {\n if (!tracer) {\n return false;\n }\n\n if (!tracer.scope || typeof tracer.scope !== 'function') {\n return false;\n }\n\n var scope = tracer.scope();\n\n if (!scope || !scope.active || typeof scope.active !== 'function') {\n return false;\n }\n\n return true;\n}\n\n/**\n * Validate the Span object provided\n * @param {opentracer.Span} span\n */\nfunction validateSpan(span) {\n if (!span || !span.context || typeof span.context !== 'function') {\n return false;\n }\n\n var spanContext = span.context();\n\n if (\n !spanContext ||\n !spanContext.toSpanId ||\n !spanContext.toTraceId ||\n typeof spanContext.toSpanId !== 'function' ||\n typeof spanContext.toTraceId !== 'function'\n ) {\n return false;\n }\n\n return true;\n}\n\nexport default Rollbar;\n","import * as _ from './utility.js';\n\nfunction buildPayload(data) {\n if (!_.isType(data.context, 'string')) {\n var contextResult = _.stringify(data.context);\n if (contextResult.error) {\n data.context = \"Error: could not serialize 'context'\";\n } else {\n data.context = contextResult.value || '';\n }\n if (data.context.length > 255) {\n data.context = data.context.substr(0, 255);\n }\n }\n return {\n data: data,\n };\n}\n\nfunction getTransportFromOptions(options, defaults, url) {\n var hostname = defaults.hostname;\n var protocol = defaults.protocol;\n var port = defaults.port;\n var path = defaults.path;\n var search = defaults.search;\n var timeout = options.timeout;\n var transport = detectTransport(options);\n\n var proxy = options.proxy;\n if (options.endpoint) {\n var opts = url.parse(options.endpoint);\n hostname = opts.hostname;\n protocol = opts.protocol;\n port = opts.port;\n path = opts.pathname;\n search = opts.search;\n }\n return {\n timeout: timeout,\n hostname: hostname,\n protocol: protocol,\n port: port,\n path: path,\n search: search,\n proxy: proxy,\n transport: transport,\n };\n}\n\nfunction detectTransport(options) {\n var gWindow =\n (typeof window != 'undefined' && window) ||\n (typeof self != 'undefined' && self);\n var transport = options.defaultTransport || 'xhr';\n if (typeof gWindow.fetch === 'undefined') transport = 'xhr';\n if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch';\n return transport;\n}\n\nfunction transportOptions(transport, method) {\n var protocol = transport.protocol || 'https:';\n var port =\n transport.port ||\n (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined);\n var hostname = transport.hostname;\n var path = transport.path;\n var timeout = transport.timeout;\n var transportAPI = transport.transport;\n if (transport.search) {\n path = path + transport.search;\n }\n if (transport.proxy) {\n path = protocol + '//' + hostname + path;\n hostname = transport.proxy.host || transport.proxy.hostname;\n port = transport.proxy.port;\n protocol = transport.proxy.protocol || protocol;\n }\n return {\n timeout: timeout,\n protocol: protocol,\n hostname: hostname,\n path: path,\n port: port,\n method: method,\n transport: transportAPI,\n };\n}\n\nfunction appendPathToPath(base, path) {\n var baseTrailingSlash = /\\/$/.test(base);\n var pathBeginningSlash = /^\\//.test(path);\n\n if (baseTrailingSlash && pathBeginningSlash) {\n path = path.substring(1);\n } else if (!baseTrailingSlash && !pathBeginningSlash) {\n path = '/' + path;\n }\n\n return base + path;\n}\n\nexport {\n buildPayload,\n getTransportFromOptions,\n transportOptions,\n appendPathToPath,\n};\n","import * as _ from './utility.js';\nimport * as helpers from './apiUtility.js';\n\nvar defaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/item/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\nvar OTLPDefaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/session/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\n/**\n * Api is an object that encapsulates methods of communicating with\n * the Rollbar API. It is a standard interface with some parts implemented\n * differently for server or browser contexts. It is an object that should\n * be instantiated when used so it can contain non-global options that may\n * be different for another instance of RollbarApi.\n *\n * @param options {\n * accessToken: the accessToken to use for posting items to rollbar\n * endpoint: an alternative endpoint to send errors to\n * must be a valid, fully qualified URL.\n * The default is: https://api.rollbar.com/api/1/item\n * proxy: if you wish to proxy requests provide an object\n * with the following keys:\n * host or hostname (required): foo.example.com\n * port (optional): 123\n * protocol (optional): https\n * }\n */\nfunction Api(options, transport, urllib, truncation) {\n this.options = options;\n this.transport = transport;\n this.url = urllib;\n this.truncation = truncation;\n this.accessToken = options.accessToken;\n this.transportOptions = _getTransport(options, urllib);\n this.OTLPTransportOptions = _getOTLPTransport(options, urllib);\n}\n\n/**\n * Wraps transport.post in a Promise to support async/await\n *\n * @param {Object} options - Options for the API request\n * @param {string} options.accessToken - The access token for authentication\n * @param {Object} options.transportOptions - Options for the transport\n * @param {Object} options.payload - The data payload to send\n * @returns {Promise} A promise that resolves with the response or rejects with an error\n * @private\n */\nApi.prototype._postPromise = function ({\n accessToken,\n options,\n payload,\n headers,\n}) {\n const self = this;\n return new Promise((resolve, reject) => {\n self.transport.post({\n accessToken,\n options,\n payload,\n headers,\n callback: (err, resp) => (err ? reject(err) : resolve(resp)),\n });\n });\n};\n\n/**\n *\n * @param data\n * @param callback\n */\nApi.prototype.postItem = function (data, callback) {\n const options = helpers.transportOptions(this.transportOptions, 'POST');\n const payload = helpers.buildPayload(data);\n const self = this;\n\n // ensure the network request is scheduled after the current tick.\n setTimeout(function () {\n self.transport.post({\n accessToken: self.accessToken,\n options,\n payload,\n callback,\n });\n }, 0);\n};\n\n/**\n * Posts spans to the Rollbar API using the session endpoint\n *\n * @param {Array} payload - The spans to send\n * @returns {Promise} A promise that resolves with the API response\n */\nApi.prototype.postSpans = async function (payload, headers = {}) {\n const options = helpers.transportOptions(this.OTLPTransportOptions, 'POST');\n\n return await this._postPromise({\n accessToken: this.accessToken,\n options,\n payload,\n headers,\n });\n};\n\n/**\n *\n * @param data\n * @param callback\n */\nApi.prototype.buildJsonPayload = function (data, callback) {\n var payload = helpers.buildPayload(data);\n\n var stringifyResult;\n if (this.truncation) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = _.stringify(payload);\n }\n\n if (stringifyResult.error) {\n if (callback) {\n callback(stringifyResult.error);\n }\n return null;\n }\n\n return stringifyResult.value;\n};\n\n/**\n *\n * @param jsonPayload\n * @param callback\n */\nApi.prototype.postJsonPayload = function (jsonPayload, callback) {\n var transportOptions = helpers.transportOptions(\n this.transportOptions,\n 'POST',\n );\n this.transport.postJsonPayload(\n this.accessToken,\n transportOptions,\n jsonPayload,\n callback,\n );\n};\n\nApi.prototype.configure = function (options) {\n var oldOptions = this.oldOptions;\n this.options = _.merge(oldOptions, options);\n this.transportOptions = _getTransport(this.options, this.url);\n this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url);\n if (this.options.accessToken !== undefined) {\n this.accessToken = this.options.accessToken;\n }\n return this;\n};\n\nfunction _getTransport(options, url) {\n return helpers.getTransportFromOptions(options, defaultOptions, url);\n}\n\nfunction _getOTLPTransport(options, url) {\n options = { ...options, endpoint: options.tracing?.endpoint };\n return helpers.getTransportFromOptions(options, OTLPDefaultOptions, url);\n}\n\nexport default Api;\n","let log = () => {};\n\nconst levels = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n disable: 4,\n};\n\nconst logger = {\n error: (...args) => log('error', args),\n warn: (...args) => log('warn', args),\n info: (...args) => log('info', args),\n debug: (...args) => log('debug', args),\n log: (...args) => log('info', args),\n init: ({ logLevel }) => {\n log = function (level, args) {\n if (levels[level] < levels[logLevel]) return;\n\n args.unshift('Rollbar:');\n\n console[level].apply(console, args);\n };\n },\n};\n\nexport default logger;\n","import logger from '../../logger.js';\nimport * as _ from '../../utility.js';\n\nfunction makeFetchRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n timeout,\n}) {\n var controller;\n var timeoutId;\n\n if (_.isFiniteNumber(timeout)) {\n controller = new AbortController();\n timeoutId = setTimeout(function () {\n controller.abort();\n }, timeout);\n }\n\n headers = {\n 'Content-Type': 'application/json',\n 'X-Rollbar-Access-Token': accessToken,\n signal: controller && controller.signal,\n ...headers,\n };\n\n fetch(url, {\n method,\n headers,\n body: payload,\n })\n .then(function (response) {\n if (timeoutId) clearTimeout(timeoutId);\n const respHeaders = response.headers;\n\n const isItemRoute = url.endsWith('/api/1/item/');\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': respHeaders.get('Rollbar-Replay-Enabled'),\n 'Rollbar-Replay-RateLimit-Remaining': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n\n const json = response.json();\n callback(null, json, headers);\n })\n .catch(function (error) {\n logger.error(error.message);\n callback(error);\n });\n}\n\nexport default makeFetchRequest;\n","/*global XDomainRequest*/\n\nimport * as _ from '../../utility.js';\nimport logger from '../../logger.js';\n\nfunction makeXhrRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n requestFactory,\n timeout,\n}) {\n var request;\n if (requestFactory) {\n request = requestFactory();\n } else {\n request = _createXMLHTTPObject();\n }\n if (!request) {\n // Give up, no way to send requests\n return callback(new Error('No way to send a request'));\n }\n try {\n try {\n var onreadystatechange = function () {\n try {\n if (onreadystatechange && request.readyState === 4) {\n onreadystatechange = undefined;\n\n var parseResponse = _.jsonParse(request.responseText);\n if (_isSuccess(request)) {\n const isItemRoute = url.endsWith('/api/1/item/');\n\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': request.getResponseHeader(\n 'Rollbar-Replay-Enabled',\n ),\n 'Rollbar-Replay-RateLimit-Remaining':\n request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n callback(parseResponse.error, parseResponse.value, headers);\n return;\n } else if (_isNormalFailure(request)) {\n if (request.status === 403) {\n // likely caused by using a server access token\n var message =\n parseResponse.value && parseResponse.value.message;\n logger.error(message);\n }\n // return valid http status codes\n callback(new Error(String(request.status)));\n } else {\n // IE will return a status 12000+ on some sort of connection failure,\n // so we return a blank error\n // http://msdn.microsoft.com/en-us/library/aa383770%28VS.85%29.aspx\n var msg =\n 'XHR response had no status code (likely connection failure)';\n callback(_newRetriableError(msg));\n }\n }\n } catch (ex) {\n //jquery source mentions firefox may error out while accessing the\n //request members if there is a network error\n //https://github.com/jquery/jquery/blob/a938d7b1282fc0e5c52502c225ae8f0cef219f0a/src/ajax/xhr.js#L111\n var exc;\n if (ex && ex.stack) {\n exc = ex;\n } else {\n exc = new Error(ex);\n }\n callback(exc);\n }\n };\n\n request.open(method, url, true);\n if (request.setRequestHeader) {\n request.setRequestHeader('Content-Type', 'application/json');\n request.setRequestHeader('X-Rollbar-Access-Token', accessToken);\n for (const [h, v] of Object.entries(headers ?? {})) {\n request.setRequestHeader(h, v);\n }\n }\n\n if (_.isFiniteNumber(timeout)) {\n request.timeout = timeout;\n }\n\n request.onreadystatechange = onreadystatechange;\n request.send(payload);\n } catch (e1) {\n // Sending using the normal xmlhttprequest object didn't work, try XDomainRequest\n if (typeof XDomainRequest !== 'undefined') {\n // Assume we are in a really old browser which has a bunch of limitations:\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n\n // Extreme paranoia: if we have XDomainRequest then we have a window, but just in case\n if (!window || !window.location) {\n return callback(\n new Error(\n 'No window available during request, unknown environment',\n ),\n );\n }\n\n // If the current page is http, try and send over http\n if (\n window.location.href.substring(0, 5) === 'http:' &&\n url.substring(0, 5) === 'https'\n ) {\n url = 'http' + url.substring(5);\n }\n\n var xdomainrequest = new XDomainRequest();\n xdomainrequest.onprogress = function () {};\n xdomainrequest.ontimeout = function () {\n var msg = 'Request timed out';\n var code = 'ETIMEDOUT';\n callback(_newRetriableError(msg, code));\n };\n xdomainrequest.onerror = function () {\n callback(new Error('Error during request'));\n };\n xdomainrequest.onload = function () {\n var parseResponse = _.jsonParse(xdomainrequest.responseText);\n callback(parseResponse.error, parseResponse.value);\n };\n xdomainrequest.open(method, url, true);\n xdomainrequest.send(payload);\n } else {\n callback(new Error('Cannot find a method to transport a request'));\n }\n }\n } catch (e2) {\n callback(e2);\n }\n}\n\nfunction _createXMLHTTPObject() {\n /* global ActiveXObject:false */\n\n var factories = [\n function () {\n return new XMLHttpRequest();\n },\n function () {\n return new ActiveXObject('Msxml2.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Msxml3.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Microsoft.XMLHTTP');\n },\n ];\n var xmlhttp;\n var i;\n var numFactories = factories.length;\n for (i = 0; i < numFactories; i++) {\n try {\n xmlhttp = factories[i]();\n break;\n } catch (e) {\n // pass\n }\n }\n return xmlhttp;\n}\n\nfunction _isSuccess(r) {\n return r && r.status && r.status === 200;\n}\n\nfunction _isNormalFailure(r) {\n return r && _.isType(r.status, 'number') && r.status >= 400 && r.status < 600;\n}\n\nfunction _newRetriableError(message, code) {\n var err = new Error(message);\n err.code = code || 'ENOTFOUND';\n return err;\n}\n\nexport default makeXhrRequest;\n","import * as _ from '../utility.js';\nimport makeFetchRequest from './transport/fetch.js';\nimport makeXhrRequest from './transport/xhr.js';\n\n/*\n * accessToken may be embedded in payload but that should not\n * be assumed\n *\n * options: {\n * hostname\n * protocol\n * path\n * port\n * method\n * transport ('xhr' | 'fetch')\n * }\n *\n * params is an object containing key/value pairs. These\n * will be appended to the path as 'key=value&key=value'\n *\n * payload is an unserialized object\n */\nfunction Transport(truncation) {\n this.truncation = truncation;\n}\n\nTransport.prototype.get = function (\n accessToken,\n options,\n params,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n _.addParamsAndAccessTokenToPath(accessToken, options, params);\n\n var method = 'GET';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.post = function ({\n accessToken,\n options,\n payload,\n headers,\n callback,\n requestFactory,\n}) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n\n if (!payload) {\n return callback(new Error('Cannot send empty request'));\n }\n\n var stringifyResult;\n // Check payload.body to ensure only items are truncated.\n if (this.truncation && payload.body) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = _.stringify(payload);\n }\n if (stringifyResult.error) {\n return callback(stringifyResult.error);\n }\n\n var payload = stringifyResult.value;\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.postJsonPayload = function (\n accessToken,\n options,\n payload,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\n// Wraps `_makeRequest` if zone.js is being used, ensuring that Rollbar\n// API calls are not intercepted by any child forked zones.\n// This is equivalent to `NgZone.runOutsideAngular` in Angular.\nTransport.prototype._makeZoneRequest = function () {\n var gWindow =\n (typeof window != 'undefined' && window) ||\n (typeof self != 'undefined' && self);\n // Whenever zone.js is loaded and `Zone` is exposed globally, access\n // the root zone to ensure that requests are always made within it.\n // This approach is framework-agnostic, regardless of which\n // framework zone.js is used with.\n var rootZone = gWindow && gWindow.Zone && gWindow.Zone.root;\n var args = Array.prototype.slice.call(arguments);\n\n if (rootZone) {\n var self = this;\n rootZone.run(function () {\n self._makeRequest.apply(undefined, args);\n });\n } else {\n this._makeRequest.apply(undefined, args);\n }\n};\n\nTransport.prototype._makeRequest = function (params) {\n const { payload, callback, transport } = params;\n if (typeof RollbarProxy !== 'undefined') {\n return _proxyRequest(payload, callback);\n }\n\n if (transport === 'fetch') {\n makeFetchRequest(params);\n } else {\n makeXhrRequest(params);\n }\n};\n\n/* global RollbarProxy */\nfunction _proxyRequest(json, callback) {\n var rollbarProxy = new RollbarProxy();\n rollbarProxy.sendJsonPayload(\n json,\n function (_msg) {\n /* do nothing */\n },\n function (err) {\n callback(new Error(err));\n },\n );\n}\n\nexport default Transport;\n","// See https://nodejs.org/docs/latest/api/url.html\nfunction parse(url) {\n var result = {\n protocol: null,\n auth: null,\n host: null,\n path: null,\n hash: null,\n href: url,\n hostname: null,\n port: null,\n pathname: null,\n search: null,\n query: null,\n };\n\n var i, last;\n i = url.indexOf('//');\n if (i !== -1) {\n result.protocol = url.substring(0, i);\n last = i + 2;\n } else {\n last = 0;\n }\n\n i = url.indexOf('@', last);\n if (i !== -1) {\n result.auth = url.substring(last, i);\n last = i + 1;\n }\n\n i = url.indexOf('/', last);\n if (i === -1) {\n i = url.indexOf('?', last);\n if (i === -1) {\n i = url.indexOf('#', last);\n if (i === -1) {\n result.host = url.substring(last);\n } else {\n result.host = url.substring(last, i);\n result.hash = url.substring(i);\n }\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n return result;\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n\n i = url.indexOf('#', last);\n if (i === -1) {\n result.path = url.substring(last);\n } else {\n result.path = url.substring(last, i);\n result.hash = url.substring(i);\n }\n\n if (result.path) {\n var pathParts = result.path.split('?');\n result.pathname = pathParts[0];\n result.query = pathParts[1];\n result.search = result.query ? '?' + result.query : null;\n }\n return result;\n}\n\nexport { parse };\n","const FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\nfunction parse(error, options) {\n if (typeof error.stacktrace !== \"undefined\" || typeof error[\"opera#sourceloc\"] !== \"undefined\")\n return parseOpera(error, options);\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIE(error, options);\n else if (error.stack)\n return parseFFOrSafari(error, options);\n else if (options?.allowEmpty)\n return [];\n else\n throw new Error(\"Cannot parse given Error object\");\n}\nfunction parseStack(stackString, options) {\n if (stackString.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIeString(stackString, options);\n else\n return parseFFOrSafariString(stackString, options);\n}\nfunction extractLocation(urlLike) {\n if (!urlLike.includes(\":\"))\n return [urlLike, undefined, undefined];\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n const parts = regExp.exec(urlLike.replace(/[()]/g, \"\"));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n}\nfunction applySlice(lines, options) {\n if (options && options.slice != null) {\n if (Array.isArray(options.slice))\n return lines.slice(options.slice[0], options.slice[1]);\n return lines.slice(0, options.slice);\n }\n return lines;\n}\nfunction parseV8OrIE(error, options) {\n return parseV8OrIeString(error.stack, options);\n}\nfunction parseV8OrIeString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\"(eval \")) {\n line = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(,.*$)/g, \"\");\n }\n let sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\").replace(/^.*?\\s+/, \"\");\n const location = sanitizedLine.match(/ (\\(.+\\)$)/);\n sanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n const locationParts = extractLocation(location ? location[1] : sanitizedLine);\n const functionName = location && sanitizedLine || undefined;\n const fileName = [\"eval\", \"\"].includes(locationParts[0]) ? undefined : locationParts[0];\n return {\n function: functionName,\n file: fileName,\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\nfunction parseFFOrSafari(error, options) {\n return parseFFOrSafariString(error.stack, options);\n}\nfunction parseFFOrSafariString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\" > eval\"))\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, \":$1\");\n if (!line.includes(\"@\") && !line.includes(\":\")) {\n return {\n function: line\n };\n } else {\n const functionNameRegex = /(([^\\n\\r\"\\u2028\\u2029]*\".[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*(?:@[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*)*(?:[\\n\\r\\u2028\\u2029][^@]*)?)?[^@]*)@/;\n const matches = line.match(functionNameRegex);\n const functionName = matches && matches[1] ? matches[1] : undefined;\n const locationParts = extractLocation(line.replace(functionNameRegex, \"\"));\n return {\n function: functionName,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n }\n });\n}\nfunction parseOpera(e, options) {\n if (!e.stacktrace || e.message.includes(\"\\n\") && e.message.split(\"\\n\").length > e.stacktrace.split(\"\\n\").length)\n return parseOpera9(e);\n else if (!e.stack)\n return parseOpera10(e);\n else\n return parseOpera11(e, options);\n}\nfunction parseOpera9(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n const lines = e.message.split(\"\\n\");\n const result = [];\n for (let i = 2, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n file: match[2],\n line: +match[1],\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera10(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n const lines = e.stacktrace.split(\"\\n\");\n const result = [];\n for (let i = 0, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n function: match[3] || undefined,\n file: match[2],\n line: match[1] ? +match[1] : undefined,\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera11(error, options) {\n const filtered = applySlice(\n // @ts-expect-error missing stack property\n error.stack.split(\"\\n\").filter((line) => {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }),\n options\n );\n return filtered.map((line) => {\n const tokens = line.split(\"@\");\n const locationParts = extractLocation(tokens.pop());\n const functionCall = tokens.shift() || \"\";\n const functionName = functionCall.replace(//, \"$2\").replace(/\\([^)]*\\)/g, \"\") || undefined;\n let argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/))\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, \"$1\");\n const args = argsRaw === undefined || argsRaw === \"[arguments not available]\" ? undefined : argsRaw.split(\",\");\n return {\n function: functionName,\n args,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\n\nexport { extractLocation, parse, parseFFOrSafari, parseFFOrSafariString, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseStack, parseV8OrIE, parseV8OrIeString };\n","import { parse as parse$1, parseV8OrIE as parseV8OrIE$1, parseFFOrSafari as parseFFOrSafari$1, parseOpera as parseOpera$1, parseOpera9 as parseOpera9$1, parseOpera10 as parseOpera10$1, parseOpera11 as parseOpera11$1 } from './lite.mjs';\nexport { extractLocation } from './lite.mjs';\n\nfunction stackframesLiteToStackframes(liteStackframes) {\n return liteStackframes.map((liteStackframe) => {\n return {\n functionName: liteStackframe.function,\n args: liteStackframe.args,\n fileName: liteStackframe.file,\n lineNumber: liteStackframe.line,\n columnNumber: liteStackframe.col,\n source: liteStackframe.raw\n };\n });\n}\nfunction parse(error, options) {\n return stackframesLiteToStackframes(parse$1(error, options));\n}\nfunction parseV8OrIE(error) {\n return stackframesLiteToStackframes(parseV8OrIE$1(error));\n}\nfunction parseFFOrSafari(error) {\n return stackframesLiteToStackframes(parseFFOrSafari$1(error));\n}\nfunction parseOpera(e) {\n return stackframesLiteToStackframes(parseOpera$1(e));\n}\nfunction parseOpera9(e) {\n return stackframesLiteToStackframes(parseOpera9$1(e));\n}\nfunction parseOpera10(e) {\n return stackframesLiteToStackframes(parseOpera10$1(e));\n}\nfunction parseOpera11(error) {\n return stackframesLiteToStackframes(parseOpera11$1(error));\n}\n\nexport { parse, parseFFOrSafari, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseV8OrIE };\n","import { parse as parseErrorStack } from 'error-stack-parser-es';\n\nvar UNKNOWN_FUNCTION = '?';\nvar ERR_CLASS_REGEXP = new RegExp(\n '^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): ',\n);\n\nfunction guessFunctionName() {\n return UNKNOWN_FUNCTION;\n}\n\nfunction gatherContext() {\n return null;\n}\n\nfunction Frame(stackFrame) {\n var data = {};\n\n data._stackFrame = stackFrame;\n\n data.url = stackFrame.fileName;\n data.line = stackFrame.lineNumber;\n data.func = stackFrame.functionName;\n data.column = stackFrame.columnNumber;\n data.args = stackFrame.args;\n\n data.context = gatherContext();\n\n return data;\n}\n\nfunction Stack(exception, skip) {\n function getStack() {\n var parserStack = [];\n\n skip = skip || 0;\n\n try {\n parserStack = parseErrorStack(exception);\n } catch (e) {\n parserStack = [];\n }\n\n var stack = [];\n\n for (var i = skip; i < parserStack.length; i++) {\n stack.push(new Frame(parserStack[i]));\n }\n\n return stack;\n }\n\n return {\n stack: getStack(),\n message: exception.message,\n name: _mostSpecificErrorName(exception),\n rawStack: exception.stack,\n rawException: exception,\n };\n}\n\nfunction parse(e, skip) {\n var err = e;\n\n if (err.nested || err.cause) {\n var traceChain = [];\n while (err) {\n traceChain.push(new Stack(err, skip));\n err = err.nested || err.cause;\n\n skip = 0; // Only apply skip value to primary error\n }\n\n // Return primary error with full trace chain attached.\n traceChain[0].traceChain = traceChain;\n return traceChain[0];\n } else {\n return new Stack(err, skip);\n }\n}\n\nfunction guessErrorClass(errMsg) {\n if (!errMsg || !errMsg.match) {\n return ['Unknown error. There was no error message to display.', ''];\n }\n var errClassMatch = errMsg.match(ERR_CLASS_REGEXP);\n var errClass = '(unknown)';\n\n if (errClassMatch) {\n errClass = errClassMatch[errClassMatch.length - 1];\n errMsg = errMsg.replace(\n (errClassMatch[errClassMatch.length - 2] || '') + errClass + ':',\n '',\n );\n errMsg = errMsg.replace(/(^[\\s]+|[\\s]+$)/g, '');\n }\n return [errClass, errMsg];\n}\n\n// * Prefers any value over an empty string\n// * Prefers any value over 'Error' where possible\n// * Prefers name over constructor.name when both are more specific than 'Error'\nfunction _mostSpecificErrorName(error) {\n var name = error.name && error.name.length && error.name;\n var constructorName =\n error.constructor.name &&\n error.constructor.name.length &&\n error.constructor.name;\n\n if (!name || !constructorName) {\n return name || constructorName;\n }\n\n if (name === 'Error') {\n return constructorName;\n }\n return name;\n}\n\nexport default {\n guessFunctionName,\n guessErrorClass,\n gatherContext,\n parse,\n Stack,\n Frame,\n};\n","import * as _ from '../utility.js';\nimport errorParser from '../errorParser.js';\nimport logger from '../logger.js';\n\nfunction handleDomException(item, options, callback) {\n if (item.err && errorParser.Stack(item.err).name === 'DOMException') {\n var originalError = new Error();\n originalError.name = item.err.name;\n originalError.message = item.err.message;\n originalError.stack = item.err.stack;\n originalError.nested = item.err;\n item.err = originalError;\n }\n callback(null, item);\n}\n\nfunction handleItemWithError(item, options, callback) {\n item.data = item.data || {};\n if (item.err) {\n try {\n item.stackInfo =\n item.err._savedStackTrace ||\n errorParser.parse(item.err, item.skipFrames);\n\n if (options.addErrorContext) {\n addErrorContext(item);\n }\n } catch (e) {\n logger.error('Error while parsing the error object.', e);\n try {\n item.message =\n item.err.message ||\n item.err.description ||\n item.message ||\n String(item.err);\n } catch (e2) {\n item.message = String(item.err) || String(e2);\n }\n delete item.err;\n }\n }\n callback(null, item);\n}\n\nfunction addErrorContext(item) {\n var chain = [];\n var err = item.err;\n\n chain.push(err);\n\n while (err.nested || err.cause) {\n err = err.nested || err.cause;\n chain.push(err);\n }\n\n _.addErrorContext(item, chain);\n}\n\nfunction ensureItemHasSomethingToSay(item, options, callback) {\n if (!item.message && !item.stackInfo && !item.custom) {\n callback(new Error('No message, stack info, or custom data'), null);\n }\n callback(null, item);\n}\n\nfunction addBaseInfo(item, options, callback) {\n var environment =\n (options.payload && options.payload.environment) || options.environment;\n item.data = _.merge(item.data, {\n environment: environment,\n level: item.level,\n endpoint: options.endpoint,\n platform: 'browser',\n framework: 'browser-js',\n language: 'javascript',\n server: {},\n uuid: item.uuid,\n notifier: {\n name: 'rollbar-browser-js',\n version: options.version,\n },\n custom: item.custom,\n });\n callback(null, item);\n}\n\nfunction addRequestInfo(window) {\n return function (item, options, callback) {\n var requestInfo = {};\n\n if (window && window.location) {\n requestInfo.url = window.location.href;\n requestInfo.query_string = window.location.search;\n }\n\n var remoteString = '$remote_ip';\n if (!options.captureIp) {\n remoteString = null;\n } else if (options.captureIp !== true) {\n remoteString += '_anonymize';\n }\n if (remoteString) requestInfo.user_ip = remoteString;\n\n if (Object.keys(requestInfo).length > 0) {\n _.set(item, 'data.request', requestInfo);\n }\n\n callback(null, item);\n };\n}\n\nfunction addClientInfo(window) {\n return function (item, options, callback) {\n if (!window) {\n return callback(null, item);\n }\n var nav = window.navigator || {};\n var scr = window.screen || {};\n _.set(item, 'data.client', {\n runtime_ms: item.timestamp - window._rollbarStartTime,\n timestamp: Math.round(item.timestamp / 1000),\n javascript: {\n browser: nav.userAgent,\n language: nav.language,\n cookie_enabled: nav.cookieEnabled,\n screen: {\n width: scr.width,\n height: scr.height,\n },\n },\n });\n callback(null, item);\n };\n}\n\nfunction addPluginInfo(window) {\n return function (item, options, callback) {\n if (!window || !window.navigator) {\n return callback(null, item);\n }\n var plugins = [];\n var navPlugins = window.navigator.plugins || [];\n var cur;\n for (var i = 0, l = navPlugins.length; i < l; ++i) {\n cur = navPlugins[i];\n plugins.push({ name: cur.name, description: cur.description });\n }\n _.set(item, 'data.client.javascript.plugins', plugins);\n callback(null, item);\n };\n}\n\nfunction addBody(item, options, callback) {\n if (item.stackInfo) {\n if (item.stackInfo.traceChain) {\n addBodyTraceChain(item, options, callback);\n } else {\n addBodyTrace(item, options, callback);\n }\n } else {\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction addBodyMessage(item, options, callback) {\n var message = item.message;\n var custom = item.custom;\n\n if (!message) {\n message = 'Item sent with null or missing arguments.';\n }\n var result = {\n body: message,\n };\n\n if (custom) {\n result.extra = _.merge(custom);\n }\n\n _.set(item, 'data.body', { message: result });\n callback(null, item);\n}\n\nfunction stackFromItem(item) {\n // Transform a TraceKit stackInfo object into a Rollbar trace\n var stack = item.stackInfo.stack;\n if (\n stack &&\n stack.length === 0 &&\n item._unhandledStackInfo &&\n item._unhandledStackInfo.stack\n ) {\n stack = item._unhandledStackInfo.stack;\n }\n return stack;\n}\n\nfunction addBodyTraceChain(item, options, callback) {\n var traceChain = item.stackInfo.traceChain;\n var traces = [];\n\n var traceChainLength = traceChain.length;\n for (var i = 0; i < traceChainLength; i++) {\n var trace = buildTrace(item, traceChain[i], options);\n traces.push(trace);\n }\n\n _.set(item, 'data.body', { trace_chain: traces });\n callback(null, item);\n}\n\nfunction addBodyTrace(item, options, callback) {\n var stack = stackFromItem(item);\n\n if (stack) {\n var trace = buildTrace(item, item.stackInfo, options);\n _.set(item, 'data.body', { trace: trace });\n callback(null, item);\n } else {\n var stackInfo = item.stackInfo;\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n\n item.message = className + ': ' + message;\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction buildTrace(item, stackInfo, options) {\n var description = item && item.data.description;\n var custom = item && item.custom;\n var stack = stackFromItem(item);\n\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n var trace = {\n exception: {\n class: className,\n message: message,\n },\n };\n\n if (description) {\n trace.exception.description = description;\n }\n\n if (stack) {\n if (stack.length === 0) {\n trace.exception.stack = stackInfo.rawStack;\n trace.exception.raw = String(stackInfo.rawException);\n }\n var stackFrame;\n var frame;\n var code;\n var pre;\n var post;\n var contextLength;\n var i, mid;\n\n trace.frames = [];\n for (i = 0; i < stack.length; ++i) {\n stackFrame = stack[i];\n frame = {\n filename: stackFrame.url ? _.sanitizeUrl(stackFrame.url) : '(unknown)',\n lineno: stackFrame.line || null,\n method:\n !stackFrame.func || stackFrame.func === '?'\n ? '[anonymous]'\n : stackFrame.func,\n colno: stackFrame.column,\n };\n if (options.sendFrameUrl) {\n frame.url = stackFrame.url;\n }\n if (\n frame.method &&\n frame.method.endsWith &&\n frame.method.endsWith('_rollbar_wrapped')\n ) {\n continue;\n }\n\n code = pre = post = null;\n contextLength = stackFrame.context ? stackFrame.context.length : 0;\n if (contextLength) {\n mid = Math.floor(contextLength / 2);\n pre = stackFrame.context.slice(0, mid);\n code = stackFrame.context[mid];\n post = stackFrame.context.slice(mid);\n }\n\n if (code) {\n frame.code = code;\n }\n\n if (pre || post) {\n frame.context = {};\n if (pre && pre.length) {\n frame.context.pre = pre;\n }\n if (post && post.length) {\n frame.context.post = post;\n }\n }\n\n if (stackFrame.args) {\n frame.args = stackFrame.args;\n }\n\n trace.frames.push(frame);\n }\n\n // NOTE(cory): reverse the frames since rollbar.com expects the most recent call last\n trace.frames.reverse();\n\n if (custom) {\n trace.extra = _.merge(custom);\n }\n }\n\n return trace;\n}\n\nfunction errorClass(stackInfo, guess, options) {\n if (stackInfo.name) {\n return stackInfo.name;\n } else if (options.guessErrorClass) {\n return guess;\n } else {\n return '(unknown)';\n }\n}\n\nfunction addScrubber(scrubFn) {\n return function (item, options, callback) {\n if (scrubFn) {\n var scrubFields = options.scrubFields || [];\n var scrubPaths = options.scrubPaths || [];\n item.data = scrubFn(item.data, scrubFields, scrubPaths);\n }\n callback(null, item);\n };\n}\n\nexport {\n handleDomException,\n handleItemWithError,\n ensureItemHasSomethingToSay,\n addBaseInfo,\n addRequestInfo,\n addClientInfo,\n addPluginInfo,\n addBody,\n addScrubber,\n};\n","import * as _ from './utility.js';\n\nfunction itemToPayload(item, options, callback) {\n if (item._isUncaught) {\n item.data._isUncaught = true;\n }\n if (item._originalArgs) {\n item.data._originalArgs = item._originalArgs;\n }\n callback(null, item);\n}\n\nfunction addPayloadOptions(item, options, callback) {\n var payloadOptions = options.payload || {};\n if (payloadOptions.body) {\n delete payloadOptions.body;\n }\n\n item.data = _.merge(item.data, payloadOptions);\n callback(null, item);\n}\n\nfunction addTelemetryData(item, options, callback) {\n if (item.telemetryEvents) {\n _.set(item, 'data.body.telemetry', item.telemetryEvents);\n }\n callback(null, item);\n}\n\nfunction addMessageWithError(item, options, callback) {\n if (!item.message) {\n callback(null, item);\n return;\n }\n var tracePath = 'data.body.trace_chain.0';\n var trace = _.get(item, tracePath);\n if (!trace) {\n tracePath = 'data.body.trace';\n trace = _.get(item, tracePath);\n }\n if (trace) {\n if (!(trace.exception && trace.exception.description)) {\n _.set(item, tracePath + '.exception.description', item.message);\n callback(null, item);\n return;\n }\n var extra = _.get(item, tracePath + '.extra') || {};\n var newExtra = _.merge(extra, { message: item.message });\n _.set(item, tracePath + '.extra', newExtra);\n }\n callback(null, item);\n}\n\nfunction userTransform(logger) {\n return function (item, options, callback) {\n var newItem = _.merge(item);\n var response = null;\n try {\n if (_.isFunction(options.transform)) {\n response = options.transform(newItem.data, item);\n }\n } catch (e) {\n options.transform = null;\n logger.error(\n 'Error while calling custom transform() function. Removing custom transform().',\n e,\n );\n callback(null, item);\n return;\n }\n if (_.isPromise(response)) {\n response.then(\n function (promisedItem) {\n if (promisedItem) {\n newItem.data = promisedItem;\n }\n callback(null, newItem);\n },\n function (error) {\n callback(error, item);\n },\n );\n } else {\n callback(null, newItem);\n }\n };\n}\n\nfunction addConfigToPayload(item, options, callback) {\n if (!options.sendConfig) {\n return callback(null, item);\n }\n var configKey = '_rollbarConfig';\n var custom = _.get(item, 'data.custom') || {};\n custom[configKey] = options;\n item.data.custom = custom;\n callback(null, item);\n}\n\nfunction addFunctionOption(options, name) {\n if (_.isFunction(options[name])) {\n options[name] = options[name].toString();\n }\n}\n\nfunction addConfiguredOptions(item, options, callback) {\n var configuredOptions = options._configuredOptions;\n\n // These must be stringified or they'll get dropped during serialization.\n addFunctionOption(configuredOptions, 'transform');\n addFunctionOption(configuredOptions, 'checkIgnore');\n addFunctionOption(configuredOptions, 'onSendCallback');\n\n delete configuredOptions.accessToken;\n item.data.notifier.configured_options = configuredOptions;\n callback(null, item);\n}\n\nfunction addDiagnosticKeys(item, options, callback) {\n var diagnostic = _.merge(\n item.notifier.client.notifier.diagnostic,\n item.diagnostic,\n );\n\n if (_.get(item, 'err._isAnonymous')) {\n diagnostic.is_anonymous = true;\n }\n\n if (item._isUncaught) {\n diagnostic.is_uncaught = item._isUncaught;\n }\n\n if (item.err) {\n try {\n diagnostic.raw_error = {\n message: item.err.message,\n name: item.err.name,\n constructor_name: item.err.constructor && item.err.constructor.name,\n filename: item.err.fileName,\n line: item.err.lineNumber,\n column: item.err.columnNumber,\n stack: item.err.stack,\n };\n } catch (e) {\n diagnostic.raw_error = { failed: String(e) };\n }\n }\n\n item.data.notifier.diagnostic = _.merge(\n item.data.notifier.diagnostic,\n diagnostic,\n );\n callback(null, item);\n}\n\nexport {\n itemToPayload,\n addPayloadOptions,\n addTelemetryData,\n addMessageWithError,\n userTransform,\n addConfigToPayload,\n addConfiguredOptions,\n addDiagnosticKeys,\n};\n","import * as _ from '../utility.js';\n\nfunction checkIgnore(item, settings) {\n if (_.get(settings, 'plugins.jquery.ignoreAjaxErrors')) {\n return !_.get(item, 'body.message.extra.isAjax');\n }\n return true;\n}\n\nexport { checkIgnore };\n","import * as _ from './utility.js';\n\nfunction checkLevel(item, settings) {\n var level = item.level;\n var levelVal = _.LEVELS[level] || 0;\n var reportLevel = settings.reportLevel;\n var reportLevelVal = _.LEVELS[reportLevel] || 0;\n\n if (levelVal < reportLevelVal) {\n return false;\n }\n return true;\n}\n\nfunction userCheckIgnore(logger) {\n return function (item, settings) {\n var isUncaught = !!item._isUncaught;\n delete item._isUncaught;\n var args = item._originalArgs;\n delete item._originalArgs;\n try {\n if (_.isFunction(settings.onSendCallback)) {\n settings.onSendCallback(isUncaught, args, item);\n }\n } catch (e) {\n settings.onSendCallback = null;\n logger.error('Error while calling onSendCallback, removing', e);\n }\n try {\n if (\n _.isFunction(settings.checkIgnore) &&\n settings.checkIgnore(isUncaught, args, item)\n ) {\n return false;\n }\n } catch (e) {\n settings.checkIgnore = null;\n logger.error('Error while calling custom checkIgnore(), removing', e);\n }\n return true;\n };\n}\n\nfunction urlIsNotBlockListed(logger) {\n return function (item, settings) {\n return !urlIsOnAList(item, settings, 'blocklist', logger);\n };\n}\n\nfunction urlIsSafeListed(logger) {\n return function (item, settings) {\n return urlIsOnAList(item, settings, 'safelist', logger);\n };\n}\n\nfunction matchFrames(trace, list, block) {\n if (!trace) {\n return !block;\n }\n\n var frames = trace.frames;\n\n if (!frames || frames.length === 0) {\n return !block;\n }\n\n var frame, filename, url, urlRegex;\n var listLength = list.length;\n var frameLength = frames.length;\n for (var i = 0; i < frameLength; i++) {\n frame = frames[i];\n filename = frame.filename;\n\n if (!_.isType(filename, 'string')) {\n return !block;\n }\n\n for (var j = 0; j < listLength; j++) {\n url = list[j];\n urlRegex = new RegExp(url);\n\n if (urlRegex.test(filename)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction urlIsOnAList(item, settings, safeOrBlock, logger) {\n // safelist is the default\n var block = false;\n if (safeOrBlock === 'blocklist') {\n block = true;\n }\n\n var list, traces;\n try {\n list = block ? settings.hostBlockList : settings.hostSafeList;\n traces = _.get(item, 'body.trace_chain') || [_.get(item, 'body.trace')];\n\n // These two checks are important to come first as they are defaults\n // in case the list is missing or the trace is missing or not well-formed\n if (!list || list.length === 0) {\n return !block;\n }\n if (traces.length === 0 || !traces[0]) {\n return !block;\n }\n\n var tracesLength = traces.length;\n for (var i = 0; i < tracesLength; i++) {\n if (matchFrames(traces[i], list, block)) {\n return true;\n }\n }\n } catch (\n e\n /* istanbul ignore next */\n ) {\n if (block) {\n settings.hostBlockList = null;\n } else {\n settings.hostSafeList = null;\n }\n var listName = block ? 'hostBlockList' : 'hostSafeList';\n logger.error(\n \"Error while reading your configuration's \" +\n listName +\n ' option. Removing custom ' +\n listName +\n '.',\n e,\n );\n return !block;\n }\n return false;\n}\n\nfunction messageIsIgnored(logger) {\n return function (item, settings) {\n var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages;\n\n try {\n messageIsIgnored = false;\n ignoredMessages = settings.ignoredMessages;\n\n if (!ignoredMessages || ignoredMessages.length === 0) {\n return true;\n }\n\n messages = messagesFromItem(item);\n\n if (messages.length === 0) {\n return true;\n }\n\n len = ignoredMessages.length;\n for (i = 0; i < len; i++) {\n rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi');\n\n for (j = 0; j < messages.length; j++) {\n messageIsIgnored = rIgnoredMessage.test(messages[j]);\n\n if (messageIsIgnored) {\n return false;\n }\n }\n }\n } catch (\n e\n /* istanbul ignore next */\n ) {\n settings.ignoredMessages = null;\n logger.error(\n \"Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages.\",\n );\n }\n\n return true;\n };\n}\n\nfunction messagesFromItem(item) {\n var body = item.body;\n var messages = [];\n\n // The payload schema only allows one of trace_chain, message, or trace.\n // However, existing test cases are based on having both trace and message present.\n // So here we preserve the ability to collect strings from any combination of these keys.\n if (body.trace_chain) {\n var traceChain = body.trace_chain;\n for (var i = 0; i < traceChain.length; i++) {\n var trace = traceChain[i];\n messages.push(_.get(trace, 'exception.message'));\n }\n }\n if (body.trace) {\n messages.push(_.get(body, 'trace.exception.message'));\n }\n if (body.message) {\n messages.push(_.get(body, 'message.body'));\n }\n return messages;\n}\n\nexport {\n checkLevel,\n userCheckIgnore,\n urlIsNotBlockListed,\n urlIsSafeListed,\n messageIsIgnored,\n};\n","/**\n * Default session replay recording options\n * See https://github.com/rrweb-io/rrweb/blob/master/guide.md#options for details\n */\nexport default {\n enabled: false, // Whether recording is enabled\n autoStart: true, // Start recording automatically when Rollbar initializes\n\n // defaults used by triggers that don't specify them\n triggerDefaults: {\n samplingRatio: 1.0,\n preDuration: 300,\n postDuration: 5,\n },\n triggers: [\n {\n type: 'occurrence',\n level: ['error', 'critical'],\n },\n ],\n\n debug: {\n logErrors: true, // Whether to log errors emitted by rrweb.\n logEmits: false, // Whether to log emitted events\n },\n\n // Recording options\n inlineStylesheet: true, // Whether to inline stylesheets to improve replay accuracy\n inlineImages: false, // Whether to record the image content\n collectFonts: true, // Whether to collect fonts in the website\n\n // Privacy options\n // Fine-grained control over which input types to mask\n // By default only password inputs are masked if maskInputs is true\n maskInputOptions: {\n password: true,\n email: false,\n tel: false,\n text: false,\n color: false,\n date: false,\n 'datetime-local': false,\n month: false,\n number: false,\n range: false,\n search: false,\n time: false,\n url: false,\n week: false,\n },\n\n // Mask all input values\n maskAllInputs: false,\n\n // Class names to block, mask, or ignore the content of elements.\n blockClass: 'rb-block',\n maskTextClass: 'rb-mask',\n ignoreClass: 'rb-ignore',\n\n // Remove unnecessary parts of the DOM\n // By default all removable elements are removed\n slimDOMOptions: {\n script: true, // Remove script elements\n comment: true, // Remove comments\n headFavicon: true, // Remove favicons in the head\n headWhitespace: true, // Remove whitespace in head\n headMetaDescKeywords: true, // Remove meta description and keywords\n headMetaSocial: true, // Remove social media meta tags\n headMetaRobots: true, // Remove robots meta directives\n headMetaHttpEquiv: true, // Remove http-equiv meta directives\n headMetaAuthorship: true, // Remove authorship meta directives\n headMetaVerification: true, // Remove verification meta directives\n },\n\n // Custom callbacks for advanced use cases\n // These are undefined by default and can be set programmatically\n // maskInputFn: undefined, // Custom function to mask input values\n // maskTextFn: undefined, // Custom function to mask text content\n // errorHandler: undefined, // Custom error handler for recording errors\n\n // Plugin system\n // plugins: [] // List of plugins to use (must be set programmatically)\n};\n","/**\n * Default options shared across platforms\n */\nexport const version = '3.0.0-rc.1';\nexport const endpoint = 'api.rollbar.com/api/1/item/';\nexport const logLevel = 'debug';\nexport const reportLevel = 'debug';\nexport const uncaughtErrorLevel = 'error';\nexport const maxItems = 0;\nexport const itemsPerMin = 60;\n\nexport const commonScrubFields = [\n 'pw',\n 'pass',\n 'passwd',\n 'password',\n 'secret',\n 'confirm_password',\n 'confirmPassword',\n 'password_confirmation',\n 'passwordConfirmation',\n 'access_token',\n 'accessToken',\n 'X-Rollbar-Access-Token',\n 'secret_key',\n 'secretKey',\n 'secretToken',\n];\n\nexport const apiScrubFields = [\n 'api_key',\n 'authenticity_token',\n 'oauth_token',\n 'token',\n 'user_session_secret',\n];\n\nexport const requestScrubFields = [\n 'request.session.csrf',\n 'request.session._csrf',\n 'request.params._csrf',\n 'request.cookie',\n 'request.cookies',\n];\n\nexport const commonScrubHeaders = [\n 'authorization',\n 'www-authorization',\n 'http_authorization',\n 'omniauth.auth',\n 'cookie',\n 'oauth-access-token',\n 'x-access-token',\n 'x_csrf_token',\n 'http_x_csrf_token',\n 'x-csrf-token',\n];\n\n// For backward compatibility with default export\nexport default {\n version,\n endpoint,\n logLevel,\n reportLevel,\n uncaughtErrorLevel,\n maxItems,\n itemsPerMin,\n};\n","/**\n * Default browser options\n */\nimport { commonScrubFields } from '../defaults.js';\n\nexport const scrubFields = [\n ...commonScrubFields,\n 'cc-number',\n 'card number',\n 'cardnumber',\n 'cardnum',\n 'ccnum',\n 'ccnumber',\n 'cc num',\n 'creditcardnumber',\n 'credit card number',\n 'newcreditcardnumber',\n 'new credit card',\n 'creditcardno',\n 'credit card no',\n 'card#',\n 'card #',\n 'cc-csc',\n 'cvc',\n 'cvc2',\n 'cvv2',\n 'ccv2',\n 'security code',\n 'card verification',\n 'name on credit card',\n 'name on card',\n 'nameoncard',\n 'cardholder',\n 'card holder',\n 'name des karteninhabers',\n 'ccname',\n 'card type',\n 'cardtype',\n 'cc type',\n 'cctype',\n 'payment type',\n 'expiration date',\n 'expirationdate',\n 'expdate',\n 'cc-exp',\n 'ccmonth',\n 'ccyear',\n];\n\n// For compatibility with existing code that expects default export with scrubFields property\nexport default { scrubFields };\n","import Client from '../rollbar.js';\nimport * as _ from '../utility.js';\nimport API from '../api.js';\nimport logger from '../logger.js';\nimport * as globals from './globalSetup.js';\n\nimport Transport from './transport.js';\nimport * as urllib from './url.js';\n\nimport * as transforms from './transforms.js';\nimport * as sharedTransforms from '../transforms.js';\nimport * as predicates from './predicates.js';\nimport * as sharedPredicates from '../predicates.js';\nimport errorParser from '../errorParser.js';\nimport replayDefaults from './replay/defaults.js';\nimport tracingDefaults from '../tracing/defaults.js';\n\n// Used to support global `Rollbar` instance.\nlet _instance = null;\n\nclass Rollbar {\n constructor(options, client) {\n logger.init({ logLevel: options.logLevel || 'error' });\n this.options = _.handleOptions(defaultOptions, options, null, logger);\n this.options._configuredOptions = options;\n this.components = this.components || {};\n const Telemeter = this.components.telemeter;\n const Instrumenter = this.components.instrumenter;\n this.wrapGlobals = this.components.wrapGlobals;\n this.scrub = this.components.scrub;\n const truncation = this.components.truncation;\n const Tracing = this.components.tracing;\n const Replay = this.components.replay;\n\n const transport = new Transport(truncation);\n const api = new API(this.options, transport, urllib, truncation);\n if (Tracing) {\n this.tracing = new Tracing(_gWindow(), api, this.options);\n this.tracing.initSession();\n }\n if (Telemeter) {\n this.telemeter = new Telemeter(this.options, this.tracing);\n }\n\n if (Replay && _.isBrowser()) {\n const replayOptions = this.options.replay;\n this.replay = new Replay({\n tracing: this.tracing,\n telemeter: this.telemeter,\n options: replayOptions,\n });\n\n if (replayOptions.enabled && replayOptions.autoStart) {\n this.replay.recorder.start();\n }\n }\n\n this.client =\n client ||\n new Client(\n this.options,\n api,\n logger,\n this.telemeter,\n this.tracing,\n this.replay,\n 'browser',\n );\n var gWindow = _gWindow();\n var gDocument = typeof document != 'undefined' && document;\n this.isChrome = gWindow.chrome && gWindow.chrome.runtime; // check .runtime to avoid Edge browsers\n this.anonymousErrorsPending = 0;\n addTransformsToNotifier(this.client.notifier, this, gWindow);\n addPredicatesToQueue(this.client.queue);\n this.setupUnhandledCapture();\n if (Instrumenter) {\n this.instrumenter = new Instrumenter(\n this.options,\n this.client.telemeter,\n this,\n gWindow,\n gDocument,\n );\n this.instrumenter.instrument();\n }\n\n this.setSessionAttributesFromOptions(options);\n\n // Used with rollbar-react for rollbar-react-native compatibility.\n this.rollbar = this;\n }\n\n static init(options, client) {\n if (_instance) {\n return _instance.global(options).configure(options);\n }\n _instance = new Rollbar(options, client);\n return _instance;\n }\n\n static setComponents(components) {\n Rollbar.prototype.components = components;\n }\n\n global(options) {\n this.client.global(options);\n return this;\n }\n\n configure(options, payloadData) {\n if (options.logLevel) {\n logger.init({ logLevel: options.logLevel });\n }\n this.setSessionAttributesFromOptions(options);\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.handleOptions(oldOptions, options, payload, logger);\n this.options._configuredOptions = _.handleOptions(\n oldOptions._configuredOptions,\n options,\n payload,\n );\n\n this.tracing?.configure(this.options);\n this.replay?.configure(this.options.replay);\n this.client.configure(this.options, payloadData);\n this.instrumenter?.configure(this.options);\n this.setupUnhandledCapture();\n return this;\n }\n\n lastError() {\n return this.client.lastError;\n }\n\n log() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.log(item);\n return { uuid: uuid };\n }\n\n debug() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.debug(item);\n return { uuid: uuid };\n }\n\n info() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.info(item);\n return { uuid: uuid };\n }\n\n warn() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warn(item);\n return { uuid: uuid };\n }\n\n warning() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warning(item);\n return { uuid: uuid };\n }\n\n error() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.error(item);\n return { uuid: uuid };\n }\n\n critical() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.critical(item);\n return { uuid: uuid };\n }\n\n buildJsonPayload(item) {\n return this.client.buildJsonPayload(item);\n }\n\n sendJsonPayload(jsonPayload) {\n return this.client.sendJsonPayload(jsonPayload);\n }\n\n triggerDirectReplay(context) {\n return this.triggerReplay({ type: 'direct', ...context });\n }\n\n triggerReplay(context) {\n if (!this.replay) return null;\n\n return this.replay.triggerReplay(context);\n }\n\n setupUnhandledCapture() {\n var gWindow = _gWindow();\n\n if (!this.unhandledExceptionsInitialized) {\n if (\n this.options.captureUncaught ||\n this.options.handleUncaughtExceptions\n ) {\n globals.captureUncaughtExceptions(gWindow, this);\n if (this.wrapGlobals && this.options.wrapGlobalEventHandlers) {\n this.wrapGlobals(gWindow, this);\n }\n this.unhandledExceptionsInitialized = true;\n }\n }\n if (!this.unhandledRejectionsInitialized) {\n if (\n this.options.captureUnhandledRejections ||\n this.options.handleUnhandledRejections\n ) {\n globals.captureUnhandledRejections(gWindow, this);\n this.unhandledRejectionsInitialized = true;\n }\n }\n }\n\n handleUncaughtException(message, url, lineno, colno, error, context) {\n if (\n !this.options.captureUncaught &&\n !this.options.handleUncaughtExceptions\n ) {\n return;\n }\n\n // Chrome will always send 5+ arguments and error will be valid or null, not undefined.\n // If error is undefined, we have a different caller.\n // Chrome also sends errors from web workers with null error, but does not invoke\n // prepareStackTrace() for these. Test for empty url to skip them.\n if (\n this.options.inspectAnonymousErrors &&\n this.isChrome &&\n error === null &&\n url === ''\n ) {\n return 'anonymous';\n }\n\n var item;\n var stackInfo = _.makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n 'onerror',\n 'uncaught exception',\n errorParser,\n );\n if (_.isError(error)) {\n item = this._createItem([message, error, context]);\n item._unhandledStackInfo = stackInfo;\n } else if (_.isError(url)) {\n item = this._createItem([message, url, context]);\n item._unhandledStackInfo = stackInfo;\n } else {\n item = this._createItem([message, context]);\n item.stackInfo = stackInfo;\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n this.client.log(item);\n }\n\n /**\n * Chrome only. Other browsers will ignore.\n *\n * Use Error.prepareStackTrace to extract information about errors that\n * do not have a valid error object in onerror().\n *\n * In tested version of Chrome, onerror is called first but has no way\n * to communicate with prepareStackTrace. Use a counter to let this\n * handler know which errors to send to Rollbar.\n *\n * In config options, set inspectAnonymousErrors to enable.\n */\n handleAnonymousErrors() {\n if (!this.options.inspectAnonymousErrors || !this.isChrome) {\n return;\n }\n\n var r = this;\n function prepareStackTrace(error, _stack) {\n if (r.options.inspectAnonymousErrors) {\n if (r.anonymousErrorsPending) {\n // This is the only known way to detect that onerror saw an anonymous error.\n // It depends on onerror reliably being called before Error.prepareStackTrace,\n // which so far holds true on tested versions of Chrome. If versions of Chrome\n // are tested that behave differently, this logic will need to be updated\n // accordingly.\n r.anonymousErrorsPending -= 1;\n\n if (!error) {\n // Not likely to get here, but calling handleUncaughtException from here\n // without an error object would throw off the anonymousErrorsPending counter,\n // so return now.\n return;\n }\n\n // Allow this to be tracked later.\n error._isAnonymous = true;\n\n // url, lineno, colno shouldn't be needed for these errors.\n // If that changes, update this accordingly, using the unused\n // _stack param as needed (rather than parse error.toString()).\n r.handleUncaughtException(error.message, null, null, null, error);\n }\n }\n\n // Workaround to ensure stack is preserved for normal errors.\n return error.stack;\n }\n\n // https://v8.dev/docs/stack-trace-api\n try {\n Error.prepareStackTrace = prepareStackTrace;\n } catch (e) {\n this.options.inspectAnonymousErrors = false;\n this.error('anonymous error handler failed', e);\n }\n }\n\n handleUnhandledRejection(reason, promise) {\n if (\n !this.options.captureUnhandledRejections &&\n !this.options.handleUnhandledRejections\n ) {\n return;\n }\n\n var message = 'unhandled rejection was null or undefined!';\n if (reason) {\n if (reason.message) {\n message = reason.message;\n } else {\n var reasonResult = _.stringify(reason);\n if (reasonResult.value) {\n message = reasonResult.value;\n }\n }\n }\n var context =\n (reason && reason._rollbarContext) ||\n (promise && promise._rollbarContext);\n\n var item;\n if (_.isError(reason)) {\n item = this._createItem([message, reason, context]);\n } else {\n item = this._createItem([message, reason, context]);\n item.stackInfo = _.makeUnhandledStackInfo(\n message,\n '',\n 0,\n 0,\n null,\n 'unhandledrejection',\n '',\n errorParser,\n );\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n item._originalArgs = item._originalArgs || [];\n item._originalArgs.push(promise);\n this.client.log(item);\n }\n\n wrap(f, context, _before) {\n try {\n var ctxFn;\n if (_.isFunction(context)) {\n ctxFn = context;\n } else {\n ctxFn = function () {\n return context || {};\n };\n }\n\n if (!_.isFunction(f)) {\n return f;\n }\n\n if (f._isWrap) {\n return f;\n }\n\n if (!f._rollbar_wrapped) {\n f._rollbar_wrapped = function () {\n if (_before && _.isFunction(_before)) {\n _before.apply(this, arguments);\n }\n try {\n return f.apply(this, arguments);\n } catch (exc) {\n var e = exc;\n if (e && window._rollbarWrappedError !== e) {\n if (_.isType(e, 'string')) {\n e = new String(e);\n }\n e._rollbarContext = ctxFn() || {};\n e._rollbarContext._wrappedSource = f.toString();\n\n window._rollbarWrappedError = e;\n }\n throw e;\n }\n };\n\n f._rollbar_wrapped._isWrap = true;\n\n if (f.hasOwnProperty) {\n for (var prop in f) {\n if (f.hasOwnProperty(prop) && prop !== '_rollbar_wrapped') {\n f._rollbar_wrapped[prop] = f[prop];\n }\n }\n }\n }\n\n return f._rollbar_wrapped;\n } catch (e) {\n // Return the original function if the wrap fails.\n return f;\n }\n }\n\n captureEvent() {\n var event = _.createTelemetryEvent(arguments);\n return this.client.captureEvent(event.type, event.metadata, event.level);\n }\n\n setSessionUser(user) {\n if (!this.tracing?.session) return;\n\n this.tracing.session.setUser(user);\n }\n\n setSessionAttributes(attrs) {\n if (!this.tracing?.session) return;\n\n attrs = { ...attrs };\n\n this.tracing.session.setAttributes(attrs);\n }\n\n setSessionAttributesFromOptions(options) {\n const person = options.person || options.payload?.person;\n if (person) {\n this.setSessionUser(person);\n }\n const code_version =\n options.client?.javascript?.code_version ||\n options.codeVersion ||\n options.code_version ||\n options.payload?.client?.javascript?.code_version ||\n options.payload?.code_version ||\n options.payload?.codeVersion;\n this.setSessionAttributes({\n 'rollbar.codeVersion': code_version,\n 'rollbar.notifier.name': 'rollbar-browser-js',\n 'rollbar.notifier.version': options.version,\n });\n }\n\n // The following two methods are used internally and are not meant for public use\n captureDomContentLoaded(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureDomContentLoaded(ts);\n }\n\n captureLoad(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureLoad(ts);\n }\n\n loadFull() {\n logger.info(\n 'Unexpected Rollbar.loadFull() called on a Notifier instance. This can happen when Rollbar is loaded multiple times.',\n );\n }\n\n _createItem(args) {\n return _.createItem(args, logger, this);\n }\n\n // Static version of instance methods support the legacy pattern of a\n // global `Rollbar` instance, where after calling `Rollbar.init()`,\n // `Rollbar` can be used as if it were an instance.\n // If support for this pattern is dropped, these static methods can be removed.\n static callInstance(method, args) {\n if (!_instance) {\n const message = 'Rollbar is not initialized';\n logger.error(message);\n const maybeCallback = _getFirstFunction(args);\n if (maybeCallback) {\n maybeCallback(new Error(message));\n }\n return;\n }\n return _instance[method].apply(_instance, args);\n }\n\n static global = (...args) => Rollbar.callInstance('global', args);\n static configure = (...args) => Rollbar.callInstance('configure', args);\n static lastError = (...args) => Rollbar.callInstance('lastError', args);\n static log = (...args) => Rollbar.callInstance('log', args);\n static debug = (...args) => Rollbar.callInstance('debug', args);\n static info = (...args) => Rollbar.callInstance('info', args);\n static warn = (...args) => Rollbar.callInstance('warn', args);\n static warning = (...args) => Rollbar.callInstance('warning', args);\n static error = (...args) => Rollbar.callInstance('error', args);\n static critical = (...args) => Rollbar.callInstance('critical', args);\n static buildJsonPayload = (...args) =>\n Rollbar.callInstance('buildJsonPayload', args);\n static sendJsonPayload = (...args) =>\n Rollbar.callInstance('sendJsonPayload', args);\n static wrap = (...args) => Rollbar.callInstance('wrap', args);\n static captureEvent = (...args) => Rollbar.callInstance('captureEvent', args);\n}\n\n/* Internal */\n\nfunction addTransformsToNotifier(notifier, rollbar, gWindow) {\n notifier\n .addTransform(transforms.handleDomException)\n .addTransform(transforms.handleItemWithError)\n .addTransform(transforms.ensureItemHasSomethingToSay)\n .addTransform(transforms.addBaseInfo)\n .addTransform(transforms.addRequestInfo(gWindow))\n .addTransform(transforms.addClientInfo(gWindow))\n .addTransform(transforms.addPluginInfo(gWindow))\n .addTransform(transforms.addBody)\n .addTransform(sharedTransforms.addMessageWithError)\n .addTransform(sharedTransforms.addTelemetryData)\n .addTransform(sharedTransforms.addConfigToPayload)\n .addTransform(transforms.addScrubber(rollbar.scrub))\n .addTransform(sharedTransforms.addPayloadOptions)\n .addTransform(sharedTransforms.userTransform(logger))\n .addTransform(sharedTransforms.addConfiguredOptions)\n .addTransform(sharedTransforms.addDiagnosticKeys)\n .addTransform(sharedTransforms.itemToPayload);\n}\n\nfunction addPredicatesToQueue(queue) {\n queue\n .addPredicate(sharedPredicates.checkLevel)\n .addPredicate(predicates.checkIgnore)\n .addPredicate(sharedPredicates.userCheckIgnore(logger))\n .addPredicate(sharedPredicates.urlIsNotBlockListed(logger))\n .addPredicate(sharedPredicates.urlIsSafeListed(logger))\n .addPredicate(sharedPredicates.messageIsIgnored(logger));\n}\n\nfunction _getFirstFunction(args) {\n for (var i = 0, len = args.length; i < len; ++i) {\n if (_.isFunction(args[i])) {\n return args[i];\n }\n }\n return undefined;\n}\n\nfunction _gWindow() {\n return (\n (typeof window != 'undefined' && window) ||\n (typeof self != 'undefined' && self)\n );\n}\n\nimport {\n version,\n logLevel,\n reportLevel,\n uncaughtErrorLevel,\n endpoint,\n} from '../defaults.js';\nimport browserDefaults from './defaults.js';\n\nconst defaultOptions = {\n environment: 'unknown',\n version: version,\n scrubFields: browserDefaults.scrubFields,\n logLevel: logLevel,\n reportLevel: reportLevel,\n uncaughtErrorLevel: uncaughtErrorLevel,\n endpoint: endpoint,\n verbose: false,\n enabled: true,\n transmit: true,\n sendConfig: false,\n includeItemsInTelemetry: true,\n captureIp: true,\n inspectAnonymousErrors: true,\n ignoreDuplicateErrors: true,\n wrapGlobalEventHandlers: false,\n replay: replayDefaults,\n tracing: tracingDefaults,\n};\n\nexport default Rollbar;\n","function captureUncaughtExceptions(window, handler, shim) {\n if (!window) {\n return;\n }\n var oldOnError;\n\n if (typeof handler._rollbarOldOnError === 'function') {\n oldOnError = handler._rollbarOldOnError;\n } else if (window.onerror) {\n oldOnError = window.onerror;\n while (oldOnError._rollbarOldOnError) {\n oldOnError = oldOnError._rollbarOldOnError;\n }\n handler._rollbarOldOnError = oldOnError;\n }\n\n handler.handleAnonymousErrors();\n\n var fn = function () {\n var args = Array.prototype.slice.call(arguments, 0);\n _rollbarWindowOnError(window, handler, oldOnError, args);\n };\n if (shim) {\n fn._rollbarOldOnError = oldOnError;\n }\n window.onerror = fn;\n}\n\nfunction _rollbarWindowOnError(window, r, old, args) {\n if (window._rollbarWrappedError) {\n if (!args[4]) {\n args[4] = window._rollbarWrappedError;\n }\n if (!args[5]) {\n args[5] = window._rollbarWrappedError._rollbarContext;\n }\n window._rollbarWrappedError = null;\n }\n\n var ret = r.handleUncaughtException.apply(r, args);\n\n if (old) {\n old.apply(window, args);\n }\n\n // Let other chained onerror handlers above run before setting this.\n // If an error is thrown and caught within a chained onerror handler,\n // Error.prepareStackTrace() will see that one before the one we want.\n if (ret === 'anonymous') {\n r.anonymousErrorsPending += 1; // See Rollbar.prototype.handleAnonymousErrors()\n }\n}\n\nfunction captureUnhandledRejections(window, handler, shim) {\n if (!window) {\n return;\n }\n\n if (\n typeof window._rollbarURH === 'function' &&\n window._rollbarURH.belongsToShim\n ) {\n window.removeEventListener('unhandledrejection', window._rollbarURH);\n }\n\n var rejectionHandler = function (evt) {\n var reason, promise, detail;\n try {\n reason = evt.reason;\n } catch (e) {\n reason = undefined;\n }\n try {\n promise = evt.promise;\n } catch (e) {\n promise = '[unhandledrejection] error getting `promise` from event';\n }\n try {\n detail = evt.detail;\n if (!reason && detail) {\n reason = detail.reason;\n promise = detail.promise;\n }\n } catch (e) {\n // Ignore\n }\n if (!reason) {\n reason = '[unhandledrejection] error getting `reason` from event';\n }\n\n if (handler && handler.handleUnhandledRejection) {\n handler.handleUnhandledRejection(reason, promise);\n }\n };\n rejectionHandler.belongsToShim = shim;\n window._rollbarURH = rejectionHandler;\n window.addEventListener('unhandledrejection', rejectionHandler);\n}\n\nexport { captureUncaughtExceptions, captureUnhandledRejections };\n","/**\n * Default tracing options\n */\nexport default {\n enabled: false,\n endpoint: 'api.rollbar.com/api/1/session/',\n};\n","import * as _ from './utility.js';\n\nconst MAX_EVENTS = 100;\n\n// Temporary workaround while solving commonjs -> esm issues in Node 18 - 20.\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\nclass Telemeter {\n constructor(options, tracing) {\n this.queue = [];\n this.options = _.merge(options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n this.tracing = tracing;\n this.telemetrySpan = this.tracing?.startSpan('rollbar-telemetry', {});\n }\n\n configure(options) {\n var oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n var newMaxEvents = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n var deleteCount = 0;\n if (this.queue.length > newMaxEvents) {\n deleteCount = this.queue.length - newMaxEvents;\n }\n this.maxQueueSize = newMaxEvents;\n this.queue.splice(0, deleteCount);\n }\n\n copyEvents() {\n var events = Array.prototype.slice.call(this.queue, 0);\n if (_.isFunction(this.options.filterTelemetry)) {\n try {\n var i = events.length;\n while (i--) {\n if (this.options.filterTelemetry(events[i])) {\n events.splice(i, 1);\n }\n }\n } catch (e) {\n this.options.filterTelemetry = null;\n }\n }\n\n // Filter until supported in legacy telemetry\n events = events.filter((e) => e.type !== 'connectivity');\n\n // Remove internal keys from output\n events = events.map(({ otelAttributes, ...event }) => event);\n\n return events;\n }\n\n exportTelemetrySpan(attributes = {}) {\n if (this.telemetrySpan) {\n this.telemetrySpan.end(attributes);\n this.telemetrySpan = this.tracing.startSpan('rollbar-telemetry', {});\n }\n }\n\n capture(\n type,\n metadata,\n level,\n rollbarUUID,\n timestamp = null,\n otelAttributes = null,\n ) {\n var e = {\n level: getLevel(type, level),\n type: type,\n timestamp_ms: timestamp || _.now(),\n body: metadata,\n source: 'client',\n };\n if (rollbarUUID) {\n e.uuid = rollbarUUID;\n }\n if (otelAttributes) {\n e.otelAttributes = otelAttributes;\n }\n\n try {\n if (\n _.isFunction(this.options.filterTelemetry) &&\n this.options.filterTelemetry(e)\n ) {\n return false;\n }\n } catch (exc) {\n this.options.filterTelemetry = null;\n }\n\n this.push(e);\n return e;\n }\n\n captureEvent(type, metadata, level, rollbarUUID) {\n return this.capture(type, metadata, level, rollbarUUID);\n }\n\n captureError(err, level, rollbarUUID, timestamp) {\n const message = err.message || String(err);\n var metadata = { message };\n if (err.stack) {\n metadata.stack = err.stack;\n }\n const otelAttributes = {\n message,\n level,\n type: 'error',\n uuid: rollbarUUID,\n };\n\n this.telemetrySpan?.addEvent(\n 'rollbar-occurrence-event',\n otelAttributes,\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'error',\n metadata,\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureLog(message, level, rollbarUUID, timestamp) {\n let otelAttributes = null;\n\n // If the uuid is present, this is a message occurrence.\n if (rollbarUUID) {\n ((otelAttributes = {\n message,\n level,\n type: 'message',\n uuid: rollbarUUID,\n }),\n this.telemetrySpan?.addEvent(\n 'rollbar-occurrence-event',\n otelAttributes,\n fromMillis(timestamp),\n ));\n } else {\n otelAttributes = { message, level };\n this.telemetrySpan?.addEvent(\n 'rollbar-log-event',\n otelAttributes,\n fromMillis(timestamp),\n );\n }\n\n return this.capture(\n 'log',\n { message },\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNetwork(metadata, subtype, rollbarUUID, requestData) {\n subtype = subtype || 'xhr';\n metadata.subtype = metadata.subtype || subtype;\n if (requestData) {\n metadata.request = requestData;\n }\n const level = this.levelFromStatus(metadata.status_code);\n const endTimeNano = (metadata.end_time_ms || 0) * 1e6;\n const otelAttributes = {\n type: metadata.subtype,\n method: metadata.method,\n url: metadata.url,\n statusCode: metadata.status_code,\n 'request.headers': JSON.stringify(metadata.request_headers || {}),\n 'response.headers': JSON.stringify(metadata.response?.headers || {}),\n 'response.timeUnixNano': endTimeNano.toString(),\n };\n\n this.telemetrySpan?.addEvent(\n 'rollbar-network-event',\n otelAttributes,\n fromMillis(metadata.start_time_ms),\n );\n\n return this.capture(\n 'network',\n metadata,\n level,\n rollbarUUID,\n metadata.start_time_ms,\n otelAttributes,\n );\n }\n\n levelFromStatus(statusCode) {\n if (statusCode >= 200 && statusCode < 400) {\n return 'info';\n }\n if (statusCode === 0 || statusCode >= 400) {\n return 'error';\n }\n return 'info';\n }\n\n captureDom(subtype, element, value, checked, rollbarUUID) {\n var metadata = {\n subtype: subtype,\n element: element,\n };\n if (value !== undefined) {\n metadata.value = value;\n }\n if (checked !== undefined) {\n metadata.checked = checked;\n }\n return this.capture('dom', metadata, 'info', rollbarUUID);\n }\n\n captureInput({ type, isSynthetic, element, value, timestamp }) {\n const name = 'rollbar-input-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n value,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n value,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureClick({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-click-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n _getRepeatedEvent(name, attributes) {\n const lastEvent = this._lastEvent(this.queue);\n\n if (\n lastEvent &&\n lastEvent.body.type === name &&\n lastEvent.otelAttributes.target === attributes.target\n ) {\n return lastEvent;\n }\n }\n\n _updateRepeatedEvent(event, attributes, timestamp) {\n const duration = Math.max(timestamp - event.timestamp_ms, 1);\n event.body.value = attributes.value;\n event.otelAttributes.value = attributes.value;\n event.otelAttributes.height = attributes.height;\n event.otelAttributes.width = attributes.width;\n event.otelAttributes.textZoomRatio = attributes.textZoomRatio;\n event.otelAttributes['endTimeUnixNano'] = fromMillis(timestamp);\n event.otelAttributes['durationUnixNano'] = fromMillis(duration);\n event.otelAttributes.count = (event.otelAttributes.count || 1) + 1;\n event.otelAttributes.rate = event.otelAttributes.count / (duration / 1000);\n }\n\n _lastEvent(list) {\n return list.length > 0 ? list[list.length - 1] : null;\n }\n\n captureFocus({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-focus-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureResize({\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n timestamp,\n }) {\n const name = 'rollbar-resize-event';\n const metadata = {\n type: name,\n subtype: type,\n width,\n height,\n textZoomRatio,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n };\n\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureDragDrop({\n type,\n isSynthetic,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n timestamp,\n }) {\n const name = 'rollbar-dragdrop-event';\n let metadata = {\n type: name,\n subtype: type,\n isSynthetic,\n };\n\n let otelAttributes = {\n type,\n isSynthetic,\n };\n\n if (type === 'dragstart') {\n metadata = { ...metadata, element, dropEffect, effectAllowed };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n };\n }\n\n if (type === 'drop') {\n metadata = {\n ...metadata,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNavigation(from, to, rollbarUUID, timestamp) {\n this.telemetrySpan?.addEvent(\n 'rollbar-navigation-event',\n { 'previous.url.full': from, 'url.full': to },\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'navigation',\n { from, to },\n 'info',\n rollbarUUID,\n timestamp,\n );\n }\n\n captureDomContentLoaded(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'DOMContentLoaded' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'DOMContentLoaded'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureLoad(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'load' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'load'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureConnectivityChange({ type, isSynthetic, timestamp }) {\n const name = 'rollbar-connectivity-event';\n const metadata = {\n type: name,\n subtype: type,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'connectivity',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n // Only intended to be used internally by the notifier\n _captureRollbarItem(item) {\n if (!this.options.includeItemsInTelemetry) {\n return;\n }\n if (item.err) {\n return this.captureError(item.err, item.level, item.uuid, item.timestamp);\n }\n if (item.message) {\n return this.captureLog(\n item.message,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n if (item.custom) {\n return this.capture(\n 'log',\n item.custom,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n }\n\n push(e) {\n this.queue.push(e);\n if (this.queue.length > this.maxQueueSize) {\n this.queue.shift();\n }\n }\n}\n\nfunction getLevel(type, level) {\n if (level) {\n return level;\n }\n var defaultLevel = {\n error: 'error',\n manual: 'info',\n };\n return defaultLevel[type] || 'info';\n}\n\nexport default Telemeter;\n","/*\n * headers - Detect when fetch Headers are undefined and use a partial polyfill.\n *\n * A full polyfill is not used in order to keep package size as small as possible.\n * Since this is only used internally and is not added to the window object,\n * the full interface doesn't need to be supported.\n *\n * This implementation is modified from whatwg-fetch:\n * https://github.com/github/fetch\n */\nfunction headers(headers) {\n if (typeof Headers === 'undefined') {\n return new FetchHeaders(headers);\n }\n\n return new Headers(headers);\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n return name.toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value;\n}\n\nfunction iteratorFor(items) {\n var iterator = {\n next: function () {\n var value = items.shift();\n return { done: value === undefined, value: value };\n },\n };\n\n return iterator;\n}\n\nfunction FetchHeaders(headers) {\n this.map = {};\n\n if (headers instanceof FetchHeaders) {\n headers.forEach(function (value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function (header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function (name) {\n this.append(name, headers[name]);\n }, this);\n }\n}\n\nFetchHeaders.prototype.append = function (name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n};\n\nFetchHeaders.prototype.get = function (name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null;\n};\n\nFetchHeaders.prototype.has = function (name) {\n return this.map.hasOwnProperty(normalizeName(name));\n};\n\nFetchHeaders.prototype.forEach = function (callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n};\n\nFetchHeaders.prototype.entries = function () {\n var items = [];\n this.forEach(function (value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items);\n};\n\nexport default headers;\n","function replace(obj, name, replacement, replacements, type) {\n var orig = obj[name];\n obj[name] = replacement(orig);\n if (replacements) {\n replacements[type].push([obj, name, orig]);\n }\n}\n\nexport default replace;\n","import * as _ from '../utility.js';\n\nfunction traverse(obj, func, seen) {\n var k, v, i;\n var isObj = _.isType(obj, 'object');\n var isArray = _.isType(obj, 'array');\n var keys = [];\n var seenIndex;\n\n // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11.\n seen = seen || { obj: [], mapped: [] };\n\n if (isObj) {\n seenIndex = seen.obj.indexOf(obj);\n\n if (isObj && seenIndex !== -1) {\n // Prefer the mapped object if there is one.\n return seen.mapped[seenIndex] || seen.obj[seenIndex];\n }\n\n seen.obj.push(obj);\n seenIndex = seen.obj.length - 1;\n }\n\n if (isObj) {\n for (k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k)) {\n keys.push(k);\n }\n }\n } else if (isArray) {\n for (i = 0; i < obj.length; ++i) {\n keys.push(i);\n }\n }\n\n var result = isObj ? {} : [];\n var same = true;\n for (i = 0; i < keys.length; ++i) {\n k = keys[i];\n v = obj[k];\n result[k] = func(k, v, seen);\n same = same && result[k] === obj[k];\n }\n\n if (isObj && !same) {\n seen.mapped[seenIndex] = result;\n }\n\n return !same ? result : obj;\n}\n\nexport default traverse;\n","import * as _ from './utility.js';\nimport traverse from './utility/traverse.js';\n\nfunction scrub(data, scrubFields, scrubPaths) {\n scrubFields = scrubFields || [];\n\n if (scrubPaths) {\n for (var i = 0; i < scrubPaths.length; ++i) {\n scrubPath(data, scrubPaths[i]);\n }\n }\n\n var paramRes = _getScrubFieldRegexs(scrubFields);\n var queryRes = _getScrubQueryParamRegexs(scrubFields);\n\n function redactQueryParam(dummy0, paramPart) {\n return paramPart + _.redact();\n }\n\n function paramScrubber(v) {\n var i;\n if (_.isType(v, 'string')) {\n for (i = 0; i < queryRes.length; ++i) {\n v = v.replace(queryRes[i], redactQueryParam);\n }\n }\n return v;\n }\n\n function valScrubber(k, v) {\n var i;\n for (i = 0; i < paramRes.length; ++i) {\n if (paramRes[i].test(k)) {\n v = _.redact();\n break;\n }\n }\n return v;\n }\n\n function scrubber(k, v, seen) {\n var tmpV = valScrubber(k, v);\n if (tmpV === v) {\n if (_.isType(v, 'object') || _.isType(v, 'array')) {\n return traverse(v, scrubber, seen);\n }\n return paramScrubber(tmpV);\n } else {\n return tmpV;\n }\n }\n\n return traverse(data, scrubber);\n}\n\nfunction scrubPath(obj, path) {\n var keys = path.split('.');\n var last = keys.length - 1;\n try {\n for (var i = 0; i <= last; ++i) {\n if (i < last) {\n obj = obj[keys[i]];\n } else {\n obj[keys[i]] = _.redact();\n }\n }\n } catch (e) {\n // Missing key is OK;\n }\n}\n\nfunction _getScrubFieldRegexs(scrubFields) {\n var ret = [];\n var pat;\n for (var i = 0; i < scrubFields.length; ++i) {\n pat = '^\\\\[?(%5[bB])?' + scrubFields[i] + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?$';\n ret.push(new RegExp(pat, 'i'));\n }\n return ret;\n}\n\nfunction _getScrubQueryParamRegexs(scrubFields) {\n var ret = [];\n var pat;\n for (var i = 0; i < scrubFields.length; ++i) {\n pat = '\\\\[?(%5[bB])?' + scrubFields[i] + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?';\n ret.push(new RegExp('(' + pat + '=)([^&\\\\n]+)', 'igm'));\n }\n return ret;\n}\n\nexport default scrub;\n","function getElementType(e) {\n return (e.getAttribute('type') || '').toLowerCase();\n}\n\nfunction isDescribedElement(element, type, subtypes) {\n if (element.tagName.toLowerCase() !== type.toLowerCase()) {\n return false;\n }\n if (!subtypes) {\n return true;\n }\n element = getElementType(element);\n for (var i = 0; i < subtypes.length; i++) {\n if (subtypes[i] === element) {\n return true;\n }\n }\n return false;\n}\n\nfunction getElementFromEvent(evt, doc) {\n if (evt.target) {\n return evt.target;\n }\n if (doc && doc.elementFromPoint) {\n return doc.elementFromPoint(evt.clientX, evt.clientY);\n }\n return undefined;\n}\n\nfunction treeToArray(elem) {\n var MAX_HEIGHT = 5;\n var out = [];\n var nextDescription;\n for (var height = 0; elem && height < MAX_HEIGHT; height++) {\n nextDescription = describeElement(elem);\n if (nextDescription.tagName === 'html') {\n break;\n }\n out.unshift(nextDescription);\n elem = elem.parentNode;\n }\n return out;\n}\n\nfunction elementArrayToString(a) {\n var MAX_LENGTH = 80;\n var separator = ' > ',\n separatorLength = separator.length;\n var out = [],\n len = 0,\n nextStr,\n totalLength;\n\n for (var i = a.length - 1; i >= 0; i--) {\n nextStr = descriptionToString(a[i]);\n totalLength = len + out.length * separatorLength + nextStr.length;\n if (i < a.length - 1 && totalLength >= MAX_LENGTH + 3) {\n out.unshift('...');\n break;\n }\n out.unshift(nextStr);\n len += nextStr.length;\n }\n return out.join(separator);\n}\n\nfunction elementString(elem) {\n return elementArrayToString(treeToArray(elem));\n}\n\nfunction descriptionToString(desc) {\n if (!desc || !desc.tagName) {\n return '';\n }\n var out = [desc.tagName];\n if (desc.id) {\n out.push('#' + desc.id);\n }\n if (desc.classes) {\n out.push('.' + desc.classes.join('.'));\n }\n for (var i = 0; i < desc.attributes.length; i++) {\n out.push(\n '[' + desc.attributes[i].key + '=\"' + desc.attributes[i].value + '\"]',\n );\n }\n\n return out.join('');\n}\n\n/**\n * Input: a dom element\n * Output: null if tagName is falsey or input is falsey, else\n * {\n * tagName: String,\n * id: String | undefined,\n * classes: [String] | undefined,\n * attributes: [\n * {\n * key: OneOf(type, name, title, alt),\n * value: String\n * }\n * ]\n * }\n */\nfunction describeElement(elem) {\n if (!elem || !elem.tagName) {\n return null;\n }\n var out = {},\n className,\n key,\n attr,\n i;\n out.tagName = elem.tagName.toLowerCase();\n if (elem.id) {\n out.id = elem.id;\n }\n className = elem.className;\n if (className && typeof className === 'string') {\n out.classes = className.split(/\\s+/);\n }\n var attributes = ['type', 'name', 'title', 'alt'];\n out.attributes = [];\n for (i = 0; i < attributes.length; i++) {\n key = attributes[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.attributes.push({ key: key, value: attr });\n }\n }\n return out;\n}\n\n/*\n * Detects if the given element matches any of the given class names (string or regex),\n * or CSS selectors.\n * @param {HTMLElement} element - The DOM element to check.\n * @param {Array} classes - An array of class names (string or regex) to match against.\n * @param {Array} selectors - An array of CSS selectors to match against.\n * @return {boolean} - True if the element matches any of the classes or selectors, false otherwise.\n */\nfunction isMatchingElement(element, classes, selectors) {\n try {\n for (const cls of classes) {\n if (typeof cls === 'string') {\n if (element.classList.contains(cls)) {\n return true;\n }\n } else {\n for (const c of element.classList) {\n if (cls.test(c)) {\n return true;\n }\n }\n }\n }\n for (const sel of selectors) {\n if (element.matches(sel)) {\n return true;\n }\n }\n } catch (e) {\n // ignore errors from invalid arguments\n }\n return false;\n}\n\nexport {\n describeElement,\n descriptionToString,\n elementArrayToString,\n elementString,\n treeToArray,\n getElementFromEvent,\n isDescribedElement,\n getElementType,\n isMatchingElement,\n};\n","import * as _ from '../utility.js';\nimport headers from '../utility/headers.js';\nimport replace from '../utility/replace.js';\nimport scrub from '../scrub.js';\nimport * as urlparser from './url.js';\nimport * as domUtil from './domUtility.js';\n\nconst defaults = {\n network: true,\n networkResponseHeaders: false,\n networkResponseBody: false,\n networkRequestHeaders: false,\n networkRequestBody: false,\n networkErrorOnHttp5xx: false,\n networkErrorOnHttp4xx: false,\n networkErrorOnHttp0: false,\n log: true,\n dom: true,\n navigation: true,\n connectivity: true,\n contentSecurityPolicy: true,\n errorOnContentSecurityPolicy: false,\n};\n\nfunction restore(replacements, type) {\n let b;\n while (replacements[type].length) {\n b = replacements[type].shift();\n b[0][b[1]] = b[2];\n }\n}\n\nfunction nameFromDescription(description) {\n if (!description || !description.attributes) {\n return null;\n }\n const attrs = description.attributes;\n for (const a of attrs) {\n if (a.key === 'name') {\n return a.value;\n }\n }\n return null;\n}\n\nfunction defaultValueScrubber(scrubFields) {\n const patterns = [];\n for (const field of scrubFields) {\n patterns.push(new RegExp(field, 'i'));\n }\n return function (description) {\n const name = nameFromDescription(description);\n if (!name) {\n return false;\n }\n for (const p of patterns) {\n if (p.test(name)) {\n return true;\n }\n }\n return false;\n };\n}\n\nclass Instrumenter {\n constructor(options, telemeter, rollbar, _window, _document) {\n this.options = options;\n let autoInstrument = options.autoInstrument;\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.telemeter = telemeter;\n this.rollbar = rollbar;\n this.diagnostic = rollbar.client.notifier.diagnostic;\n this._window = _window || {};\n this._document = _document || {};\n this.replacements = {\n network: [],\n log: [],\n navigation: [],\n connectivity: [],\n };\n this.eventRemovers = {\n dom: [],\n connectivity: [],\n contentsecuritypolicy: [],\n };\n\n this._location = this._window.location;\n this._lastHref = this._location && this._location.href;\n }\n\n configureScrubbing() {\n const options = this.options;\n this.scrubTelemetryInputs = !!(\n options.scrubTelemetryInputs ?? options.replay?.maskAllInputs\n );\n this.telemetryScrubber = options.telemetryScrubber;\n this.defaultValueScrubber = defaultValueScrubber(options.scrubFields);\n this.maskInputFn = options.replay?.maskInputFn;\n this.maskInputOptions = options.replay?.maskInputOptions || {};\n this.scrubClasses = [\n options.replay?.blockClass,\n options.replay?.ignoreClass,\n options.replay?.maskTextClass,\n ].filter(Boolean);\n this.scrubSelectors = [\n options.replay?.blockSelector,\n options.replay?.ignoreSelector,\n options.replay?.maskTextSelector,\n ].filter(Boolean);\n }\n\n configure(options) {\n this.options = _.merge(this.options, options);\n let autoInstrument = options.autoInstrument;\n const oldSettings = _.merge(this.autoInstrument);\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.instrument(oldSettings);\n }\n\n // eslint-disable-next-line complexity\n instrument(oldSettings) {\n if (this.autoInstrument.network && !(oldSettings && oldSettings.network)) {\n this.instrumentNetwork();\n } else if (\n !this.autoInstrument.network &&\n oldSettings &&\n oldSettings.network\n ) {\n this.deinstrumentNetwork();\n }\n\n if (this.autoInstrument.log && !(oldSettings && oldSettings.log)) {\n this.instrumentConsole();\n } else if (!this.autoInstrument.log && oldSettings && oldSettings.log) {\n this.deinstrumentConsole();\n }\n\n if (this.autoInstrument.dom && !(oldSettings && oldSettings.dom)) {\n this.instrumentDom();\n } else if (!this.autoInstrument.dom && oldSettings && oldSettings.dom) {\n this.deinstrumentDom();\n }\n\n if (\n this.autoInstrument.navigation &&\n !(oldSettings && oldSettings.navigation)\n ) {\n this.instrumentNavigation();\n } else if (\n !this.autoInstrument.navigation &&\n oldSettings &&\n oldSettings.navigation\n ) {\n this.deinstrumentNavigation();\n }\n\n if (\n this.autoInstrument.connectivity &&\n !(oldSettings && oldSettings.connectivity)\n ) {\n this.instrumentConnectivity();\n } else if (\n !this.autoInstrument.connectivity &&\n oldSettings &&\n oldSettings.connectivity\n ) {\n this.deinstrumentConnectivity();\n }\n\n if (\n this.autoInstrument.contentSecurityPolicy &&\n !(oldSettings && oldSettings.contentSecurityPolicy)\n ) {\n this.instrumentContentSecurityPolicy();\n } else if (\n !this.autoInstrument.contentSecurityPolicy &&\n oldSettings &&\n oldSettings.contentSecurityPolicy\n ) {\n this.deinstrumentContentSecurityPolicy();\n }\n }\n\n deinstrumentNetwork() {\n restore(this.replacements, 'network');\n }\n\n instrumentNetwork() {\n const self = this;\n\n function wrapProp(prop, xhr) {\n if (prop in xhr && _.isFunction(xhr[prop])) {\n replace(xhr, prop, function (orig) {\n return self.rollbar.wrap(orig);\n });\n }\n }\n\n if ('XMLHttpRequest' in this._window) {\n const xhrp = this._window.XMLHttpRequest.prototype;\n replace(\n xhrp,\n 'open',\n function (orig) {\n return function (method, url) {\n const isUrlObject = _isUrlObject(url);\n if (_.isType(url, 'string') || isUrlObject) {\n url = isUrlObject ? url.toString() : url;\n if (this.__rollbar_xhr) {\n this.__rollbar_xhr.method = method;\n this.__rollbar_xhr.url = url;\n this.__rollbar_xhr.status_code = null;\n this.__rollbar_xhr.start_time_ms = _.now();\n this.__rollbar_xhr.end_time_ms = null;\n } else {\n this.__rollbar_xhr = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'setRequestHeader',\n function (orig) {\n return function (header, value) {\n // If xhr.open is async, __rollbar_xhr may not be initialized yet.\n if (!this.__rollbar_xhr) {\n this.__rollbar_xhr = {};\n }\n if (_.isType(header, 'string') && _.isType(value, 'string')) {\n if (self.autoInstrument.networkRequestHeaders) {\n if (!this.__rollbar_xhr.request_headers) {\n this.__rollbar_xhr.request_headers = {};\n }\n this.__rollbar_xhr.request_headers[header] = value;\n }\n // We want the content type even if request header telemetry is off.\n if (header.toLowerCase() === 'content-type') {\n this.__rollbar_xhr.request_content_type = value;\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'send',\n function (orig) {\n return function (data) {\n const xhr = this;\n\n function onreadystatechangeHandler() {\n if (xhr.__rollbar_xhr) {\n if (xhr.__rollbar_xhr.status_code === null) {\n xhr.__rollbar_xhr.status_code = 0;\n if (self.autoInstrument.networkRequestBody) {\n xhr.__rollbar_xhr.request = data;\n }\n xhr.__rollbar_event = self.captureNetwork(\n xhr.__rollbar_xhr,\n 'xhr',\n undefined,\n );\n }\n if (xhr.readyState < 2) {\n xhr.__rollbar_xhr.start_time_ms = _.now();\n }\n if (xhr.readyState > 3) {\n const end_time_ms = _.now();\n xhr.__rollbar_xhr.end_time_ms = end_time_ms;\n\n let headers = null;\n xhr.__rollbar_xhr.response_content_type =\n xhr.getResponseHeader('Content-Type');\n if (self.autoInstrument.networkResponseHeaders) {\n const headersConfig =\n self.autoInstrument.networkResponseHeaders;\n headers = {};\n try {\n let header;\n if (headersConfig === true) {\n const allHeaders = xhr.getAllResponseHeaders();\n if (allHeaders) {\n const arr = allHeaders.trim().split(/[\\r\\n]+/);\n let parts, value;\n for (const h of arr) {\n parts = h.split(': ');\n header = parts.shift();\n value = parts.join(': ');\n headers[header] = value;\n }\n }\n } else {\n for (const h of headersConfig) {\n headers[h] = xhr.getResponseHeader(h);\n }\n }\n } catch (e) {\n /* we ignore the errors here that could come from different\n * browser issues with the xhr methods */\n }\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n try {\n body = xhr.responseText;\n } catch (e) {\n /* ignore errors from reading responseText */\n }\n }\n let response = null;\n if (body || headers) {\n response = {};\n if (body) {\n if (\n self.isJsonContentType(\n xhr.__rollbar_xhr.response_content_type,\n )\n ) {\n response.body = self.scrubJson(body);\n } else {\n response.body = body;\n }\n }\n if (headers) {\n response.headers = headers;\n }\n }\n if (response) {\n xhr.__rollbar_xhr.response = response;\n }\n try {\n let code = xhr.status;\n code = code === 1223 ? 204 : code;\n xhr.__rollbar_xhr.status_code = code;\n self.addOtelNetworkResponse(\n xhr.__rollbar_event,\n end_time_ms,\n code,\n );\n xhr.__rollbar_event.level =\n self.telemeter.levelFromStatus(code);\n self.errorOnHttpStatus(xhr.__rollbar_xhr);\n } catch (e) {\n /* ignore possible exception from xhr.status */\n }\n }\n }\n }\n\n wrapProp('onload', xhr);\n wrapProp('onerror', xhr);\n wrapProp('onprogress', xhr);\n\n if (\n 'onreadystatechange' in xhr &&\n _.isFunction(xhr.onreadystatechange)\n ) {\n replace(xhr, 'onreadystatechange', function (orig) {\n return self.rollbar.wrap(\n orig,\n undefined,\n onreadystatechangeHandler,\n );\n });\n } else {\n xhr.onreadystatechange = onreadystatechangeHandler;\n }\n if (xhr.__rollbar_xhr && self.trackHttpErrors()) {\n xhr.__rollbar_xhr.stack = new Error().stack;\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n }\n\n if ('fetch' in this._window) {\n replace(\n this._window,\n 'fetch',\n function (orig) {\n return function (fn, t) {\n const args = [...arguments];\n const input = args[0];\n let method = 'GET';\n let url;\n const isUrlObject = _isUrlObject(input);\n if (_.isType(input, 'string') || isUrlObject) {\n url = isUrlObject ? input.toString() : input;\n } else if (input) {\n url = input.url;\n if (input.method) {\n method = input.method;\n }\n }\n if (args[1] && args[1].method) {\n method = args[1].method;\n }\n const metadata = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n if (args[1] && args[1].headers) {\n // Argument may be a Headers object, or plain object. Ensure here that\n // we are working with a Headers object with case-insensitive keys.\n const reqHeaders = headers(args[1].headers);\n\n metadata.request_content_type = reqHeaders.get('Content-Type');\n\n if (self.autoInstrument.networkRequestHeaders) {\n metadata.request_headers = self.fetchHeaders(\n reqHeaders,\n self.autoInstrument.networkRequestHeaders,\n );\n }\n }\n\n if (self.autoInstrument.networkRequestBody) {\n if (args[1] && args[1].body) {\n metadata.request = args[1].body;\n } else if (\n args[0] &&\n !_.isType(args[0], 'string') &&\n args[0].body\n ) {\n metadata.request = args[0].body;\n }\n }\n const telemetryEvent = self.captureNetwork(\n metadata,\n 'fetch',\n undefined,\n );\n if (self.trackHttpErrors()) {\n metadata.stack = new Error().stack;\n }\n\n // Start our handler before returning the promise. This allows resp.clone()\n // to execute before other handlers touch the response.\n return orig.apply(this, args).then(function (resp) {\n const end_time_ms = _.now();\n metadata.end_time_ms = end_time_ms;\n metadata.status_code = resp.status;\n self.addOtelNetworkResponse(\n telemetryEvent,\n end_time_ms,\n resp.status,\n );\n\n metadata.response_content_type = resp.headers.get('Content-Type');\n let headers = null;\n if (self.autoInstrument.networkResponseHeaders) {\n headers = self.fetchHeaders(\n resp.headers,\n self.autoInstrument.networkResponseHeaders,\n );\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n if (typeof resp.text === 'function') {\n // Response.text() is not implemented on some platforms\n // The response must be cloned to prevent reading (and locking) the original stream.\n // This must be done before other handlers touch the response.\n body = resp.clone().text(); //returns a Promise\n }\n }\n if (headers || body) {\n metadata.response = {};\n if (body) {\n // Test to ensure body is a Promise, which it should always be.\n if (typeof body.then === 'function') {\n body.then(function (text) {\n if (\n text &&\n self.isJsonContentType(metadata.response_content_type)\n ) {\n metadata.response.body = self.scrubJson(text);\n } else {\n metadata.response.body = text;\n }\n });\n } else {\n metadata.response.body = body;\n }\n }\n if (headers) {\n metadata.response.headers = headers;\n }\n }\n self.errorOnHttpStatus(metadata);\n return resp;\n });\n };\n },\n this.replacements,\n 'network',\n );\n }\n }\n\n captureNetwork(metadata, subtype, rollbarUUID) {\n if (\n metadata.request &&\n this.isJsonContentType(metadata.request_content_type)\n ) {\n metadata.request = this.scrubJson(metadata.request);\n }\n return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID);\n }\n\n isJsonContentType(contentType) {\n return contentType &&\n _.isType(contentType, 'string') &&\n contentType.toLowerCase().includes('json')\n ? true\n : false;\n }\n\n addOtelNetworkResponse(event, endTimeMs, statusCode) {\n if (event.otelAttributes) {\n event.otelAttributes['response.timeUnixNano'] = (\n endTimeMs * 1e6\n ).toString();\n event.otelAttributes.statusCode = statusCode;\n }\n }\n\n scrubJson(json) {\n return JSON.stringify(scrub(JSON.parse(json), this.options.scrubFields));\n }\n\n fetchHeaders(inHeaders, headersConfig) {\n const outHeaders = {};\n try {\n if (headersConfig === true) {\n if (typeof inHeaders.entries === 'function') {\n // Headers.entries() is not implemented in IE\n const allHeaders = inHeaders.entries();\n let currentHeader = allHeaders.next();\n while (!currentHeader.done) {\n outHeaders[currentHeader.value[0]] = currentHeader.value[1];\n currentHeader = allHeaders.next();\n }\n }\n } else {\n for (const h of headersConfig) {\n outHeaders[h] = inHeaders.get(h);\n }\n }\n } catch (e) {\n /* ignore probable IE errors */\n }\n return outHeaders;\n }\n\n trackHttpErrors() {\n return (\n this.autoInstrument.networkErrorOnHttp5xx ||\n this.autoInstrument.networkErrorOnHttp4xx ||\n this.autoInstrument.networkErrorOnHttp0\n );\n }\n\n errorOnHttpStatus(metadata) {\n const status = metadata.status_code;\n\n if (\n (status >= 500 && this.autoInstrument.networkErrorOnHttp5xx) ||\n (status >= 400 && this.autoInstrument.networkErrorOnHttp4xx) ||\n (status === 0 && this.autoInstrument.networkErrorOnHttp0)\n ) {\n const error = new Error('HTTP request failed with Status ' + status);\n error.stack = metadata.stack;\n this.rollbar.error(error, { skipFrames: 1 });\n }\n }\n\n deinstrumentConsole() {\n let b;\n while (this.replacements['log'].length) {\n b = this.replacements['log'].shift();\n this._window.console[b[0]] = b[1];\n }\n }\n\n instrumentConsole() {\n if (!this._window?.console?.log) {\n return;\n }\n\n const self = this;\n const c = this._window.console;\n\n function wrapConsole(method) {\n 'use strict'; // See https://github.com/rollbar/rollbar.js/pull/778\n\n const orig = c[method];\n const origConsole = c;\n const level = method === 'warn' ? 'warning' : method;\n c[method] = function () {\n const args = Array.prototype.slice.call(arguments);\n const message = _.formatArgsAsString(args);\n self.telemeter.captureLog(message, level, null, _.now());\n if (orig) {\n Function.prototype.apply.call(orig, origConsole, args);\n }\n };\n self.replacements['log'].push([method, orig]);\n }\n const methods = ['debug', 'info', 'warn', 'error', 'log'];\n try {\n for (const m of methods) {\n wrapConsole(m);\n }\n } catch (e) {\n this.diagnostic.instrumentConsole = { error: e.message };\n }\n }\n\n deinstrumentDom() {\n this.removeListeners('dom');\n }\n\n instrumentDom() {\n const self = this;\n this.addListener(\n 'dom',\n this._window,\n ['click', 'dblclick', 'contextmenu'],\n (e) => this.handleEvent('click', e),\n );\n this.addListener(\n 'dom',\n this._window,\n ['dragstart', 'dragend', 'dragenter', 'dragleave', 'drop'],\n (e) => this.handleEvent('dragdrop', e),\n );\n this.addListener('dom', this._window, ['blur', 'focus'], (e) =>\n this.handleEvent('focus', e),\n );\n this.addListener('dom', this._window, ['submit', 'invalid'], (e) =>\n this.handleEvent('form', e),\n );\n this.addListener('dom', this._window, ['input', 'change'], (e) =>\n this.handleEvent('input', e),\n );\n this.addListener('dom', this._window, ['resize'], (e) =>\n this.handleEvent('resize', e),\n );\n this.addListener('dom', this._document, ['DOMContentLoaded'], (e) =>\n this.handleEvent('contentLoaded', e),\n );\n }\n\n handleEvent(name, evt) {\n try {\n return {\n click: this.handleClick,\n dragdrop: this.handleDrag,\n focus: this.handleFocus,\n form: this.handleForm,\n input: this.handleInput,\n resize: this.handleResize,\n contentLoaded: this.handleContentLoaded,\n }[name].call(this, evt);\n } catch (exc) {\n console.log(`${name} handler error`, evt, exc, exc.stack);\n }\n }\n\n handleContentLoaded(evt) {\n const replayId = this.rollbar.triggerReplay({\n type: 'navigation',\n path: new URL(this._location.href).pathname,\n });\n }\n\n handleClick(evt) {\n const tagName = evt.target?.tagName.toLowerCase();\n if (['input', 'select', 'textarea'].includes(tagName)) return;\n\n this.telemeter.captureClick({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n timestamp: _.now(),\n });\n }\n\n handleFocus(evt) {\n const type = evt.type;\n const element = evt.target?.window\n ? 'window'\n : domUtil.elementString(evt.target);\n\n this.telemeter.captureFocus({\n type: type,\n isSynthetic: !evt.isTrusted,\n element,\n timestamp: _.now(),\n });\n }\n\n handleForm(evt) {\n // TODO: implement form event handling\n const type = evt.type;\n const elementString = evt.target?.window\n ? 'window'\n : domUtil.elementString(evt.target);\n }\n\n handleResize(evt) {\n const textZoomRatio = window.screen.width / window.innerWidth;\n\n this.telemeter.captureResize({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n width: window.innerWidth,\n height: window.innerHeight,\n textZoomRatio: textZoomRatio,\n timestamp: _.now(),\n });\n }\n\n handleDrag(evt) {\n const type = evt.type;\n let kinds, mediaTypes, dropEffect, effectAllowed;\n\n if (type === 'drop') {\n kinds = [];\n mediaTypes = [];\n const objs = [...evt.dataTransfer.files, ...evt.dataTransfer.items];\n for (const o of objs) {\n if (o.kind && o.type) {\n kinds.push(o.kind);\n mediaTypes.push(o.type);\n }\n }\n }\n if (['drop', 'dragstart'].includes(type)) {\n dropEffect = evt.dataTransfer?.dropEffect;\n effectAllowed = evt.dataTransfer?.effectAllowed;\n }\n\n this.telemeter.captureDragDrop({\n type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n dropEffect: dropEffect,\n effectAllowed: effectAllowed,\n kinds: JSON.stringify(kinds),\n mediaTypes: JSON.stringify(mediaTypes),\n timestamp: _.now(),\n });\n }\n\n /*\n * Applies Rollbar telemetry scrubbing options to the dom input value.\n * When replay options are present, applies those as well.\n */\n scrubInputValue(value, element, tagName, inputType) {\n const mask = '******';\n\n if (inputType === 'password') {\n return mask;\n }\n\n if (this.scrubTelemetryInputs) {\n return mask;\n } else {\n const description = domUtil.describeElement(element);\n if (this.telemetryScrubber) {\n if (this.telemetryScrubber(description)) {\n return mask;\n }\n } else if (this.defaultValueScrubber(description)) {\n return mask;\n }\n }\n\n // Apply replay options regardless of other scrubbing\n if (\n domUtil.isMatchingElement(element, this.scrubClasses, this.scrubSelectors)\n ) {\n return mask;\n }\n\n // This check is last since maskInputFn returns a modified value rather\n // than a boolean, which would cause an early return even if the value\n // was not scrubbed.\n if (\n this.maskInputOptions[tagName.toLowerCase()] ||\n this.maskInputOptions[inputType]\n ) {\n if (this.maskInputFn) {\n return this.maskInputFn(value, element);\n } else {\n return mask;\n }\n }\n\n return value;\n }\n\n /*\n * Uses the `input` event for everything except radio and checkbox inputs.\n * For those, it uses the `change` event.\n */\n handleInput(evt) {\n const type = evt.type;\n const tagName = evt.target?.tagName.toLowerCase();\n let value = evt.target?.value;\n let inputType = evt.target?.attributes?.type?.value || evt.target?.type;\n\n if (value !== undefined) {\n value = this.scrubInputValue(value, evt.target, tagName, inputType);\n }\n\n switch (type) {\n case 'input':\n if (['radio', 'checkbox'].includes(inputType)) return;\n if (['select', 'textarea'].includes(tagName)) {\n inputType = tagName;\n }\n break;\n\n case 'change':\n if (!['radio', 'checkbox'].includes(inputType)) return;\n if (inputType === 'checkbox') {\n value = evt.target?.checked;\n }\n break;\n }\n\n this.telemeter.captureInput({\n type: inputType,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n value,\n timestamp: _.now(),\n });\n }\n\n deinstrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n restore(this.replacements, 'navigation');\n }\n\n instrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n const self = this;\n replace(\n this._window,\n 'onpopstate',\n function (orig) {\n return function () {\n const current = self._location.href;\n self.handleUrlChange(self._lastHref, current);\n if (orig) {\n orig.apply(this, arguments);\n }\n };\n },\n this.replacements,\n 'navigation',\n );\n\n replace(\n this._window.history,\n 'pushState',\n function (orig) {\n return function () {\n const url = arguments.length > 2 ? arguments[2] : undefined;\n if (url) {\n self.handleUrlChange(self._lastHref, url + '');\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'navigation',\n );\n }\n\n handleUrlChange(from, to) {\n const parsedHref = urlparser.parse(this._location.href);\n const parsedTo = urlparser.parse(to);\n const parsedFrom = urlparser.parse(from);\n this._lastHref = to;\n if (\n parsedHref.protocol === parsedTo.protocol &&\n parsedHref.host === parsedTo.host\n ) {\n to = parsedTo.path + (parsedTo.hash || '');\n }\n if (\n parsedHref.protocol === parsedFrom.protocol &&\n parsedHref.host === parsedFrom.host\n ) {\n from = parsedFrom.path + (parsedFrom.hash || '');\n }\n this.telemeter.captureNavigation(from, to, null, _.now());\n const replayId = this.rollbar.triggerReplay({\n type: 'navigation',\n path: to,\n });\n }\n\n deinstrumentConnectivity = function () {\n this.removeListeners('connectivity');\n };\n\n instrumentConnectivity() {\n const self = this;\n this.addListener(\n 'connectivity',\n this._window,\n ['online', 'offline'],\n (evt) => self.handleConnectivity(evt),\n );\n }\n\n handleConnectivity(evt) {\n const type = evt.type;\n\n this.telemeter.captureConnectivityChange({\n type,\n isSynthetic: !evt.isTrusted,\n timestamp: _.now(),\n });\n }\n\n handleCspEvent(cspEvent) {\n let message =\n 'Security Policy Violation: ' +\n 'blockedURI: ' +\n cspEvent.blockedURI +\n ', ' +\n 'violatedDirective: ' +\n cspEvent.violatedDirective +\n ', ' +\n 'effectiveDirective: ' +\n cspEvent.effectiveDirective +\n ', ';\n\n if (cspEvent.sourceFile) {\n message +=\n 'location: ' +\n cspEvent.sourceFile +\n ', ' +\n 'line: ' +\n cspEvent.lineNumber +\n ', ' +\n 'col: ' +\n cspEvent.columnNumber +\n ', ';\n }\n\n message += 'originalPolicy: ' + cspEvent.originalPolicy;\n\n this.telemeter.captureLog(message, 'error', null, _.now());\n this.handleCspError(message);\n }\n\n handleCspError(message) {\n if (this.autoInstrument.errorOnContentSecurityPolicy) {\n this.rollbar.error(message);\n }\n }\n\n deinstrumentContentSecurityPolicy() {\n this.removeListeners('contentsecuritypolicy');\n }\n\n instrumentContentSecurityPolicy() {\n if (!('addEventListener' in this._document)) {\n return;\n }\n\n const cspHandler = this.handleCspEvent.bind(this);\n this.addListener(\n 'contentsecuritypolicy',\n this._document,\n ['securitypolicyviolation'],\n cspHandler,\n );\n }\n\n addListener(section, obj, types, handler) {\n if (obj.addEventListener) {\n for (const t of types) {\n const options = { capture: true, passive: true };\n obj.addEventListener(t, handler, options, true);\n this.eventRemovers[section].push(function () {\n obj.removeEventListener(t, handler, options);\n });\n }\n }\n }\n\n removeListeners(section) {\n let r;\n while (this.eventRemovers[section].length) {\n r = this.eventRemovers[section].shift();\n r();\n }\n }\n}\n\nfunction _isUrlObject(input) {\n return typeof URL !== 'undefined' && input instanceof URL;\n}\n\nexport default Instrumenter;\n","function wrapGlobals(window, handler, shim) {\n if (!window) {\n return;\n }\n // Adapted from https://github.com/bugsnag/bugsnag-js\n var globals =\n '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'.split(\n ',',\n );\n var i, global;\n for (i = 0; i < globals.length; ++i) {\n global = globals[i];\n\n if (window[global] && window[global].prototype) {\n _extendListenerPrototype(handler, window[global].prototype, shim);\n }\n }\n}\n\nfunction _extendListenerPrototype(handler, prototype, shim) {\n if (\n prototype.hasOwnProperty &&\n prototype.hasOwnProperty('addEventListener')\n ) {\n var oldAddEventListener = prototype.addEventListener;\n while (\n oldAddEventListener._rollbarOldAdd &&\n oldAddEventListener.belongsToShim\n ) {\n oldAddEventListener = oldAddEventListener._rollbarOldAdd;\n }\n var addFn = function (event, callback, bubble) {\n oldAddEventListener.call(this, event, handler.wrap(callback), bubble);\n };\n addFn._rollbarOldAdd = oldAddEventListener;\n addFn.belongsToShim = shim;\n prototype.addEventListener = addFn;\n\n var oldRemoveEventListener = prototype.removeEventListener;\n while (\n oldRemoveEventListener._rollbarOldRemove &&\n oldRemoveEventListener.belongsToShim\n ) {\n oldRemoveEventListener = oldRemoveEventListener._rollbarOldRemove;\n }\n var removeFn = function (event, callback, bubble) {\n oldRemoveEventListener.call(\n this,\n event,\n (callback && callback._rollbar_wrapped) || callback,\n bubble,\n );\n };\n removeFn._rollbarOldRemove = oldRemoveEventListener;\n removeFn.belongsToShim = shim;\n prototype.removeEventListener = removeFn;\n }\n}\n\nexport default wrapGlobals;\n","import * as _ from './utility.js';\nimport traverse from './utility/traverse.js';\n\nfunction raw(payload, jsonBackup) {\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction selectFrames(frames, range) {\n var len = frames.length;\n if (len > range * 2) {\n return frames.slice(0, range).concat(frames.slice(len - range));\n }\n return frames;\n}\n\nfunction truncateFrames(payload, jsonBackup, range) {\n range = typeof range === 'undefined' ? 30 : range;\n var body = payload.data.body;\n var frames;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (var i = 0; i < chain.length; i++) {\n frames = chain[i].frames;\n frames = selectFrames(frames, range);\n chain[i].frames = frames;\n }\n } else if (body.trace) {\n frames = body.trace.frames;\n frames = selectFrames(frames, range);\n body.trace.frames = frames;\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction maybeTruncateValue(len, val) {\n if (!val) {\n return val;\n }\n if (val.length > len) {\n return val.slice(0, len - 3).concat('...');\n }\n return val;\n}\n\nfunction truncateStrings(len, payload, jsonBackup) {\n function truncator(k, v, seen) {\n switch (_.typeName(v)) {\n case 'string':\n return maybeTruncateValue(len, v);\n case 'object':\n case 'array':\n return traverse(v, truncator, seen);\n default:\n return v;\n }\n }\n payload = traverse(payload, truncator);\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction truncateTraceData(traceData) {\n if (traceData.exception) {\n delete traceData.exception.description;\n traceData.exception.message = maybeTruncateValue(\n 255,\n traceData.exception.message,\n );\n }\n traceData.frames = selectFrames(traceData.frames, 1);\n return traceData;\n}\n\nfunction minBody(payload, jsonBackup) {\n var body = payload.data.body;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (var i = 0; i < chain.length; i++) {\n chain[i] = truncateTraceData(chain[i]);\n }\n } else if (body.trace) {\n body.trace = truncateTraceData(body.trace);\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction needsTruncation(payload, maxSize) {\n return _.maxByteSize(payload) > maxSize;\n}\n\nfunction truncate(payload, jsonBackup, maxSize) {\n maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize;\n var strategies = [\n raw,\n truncateFrames,\n truncateStrings.bind(null, 1024),\n truncateStrings.bind(null, 512),\n truncateStrings.bind(null, 256),\n minBody,\n ];\n var strategy, results, result;\n\n while ((strategy = strategies.shift())) {\n results = strategy(payload, jsonBackup);\n payload = results[0];\n result = results[1];\n if (result.error || !needsTruncation(result.value, maxSize)) {\n return result;\n }\n }\n return result;\n}\n\nexport default {\n truncate,\n\n /* for testing */\n raw,\n truncateFrames,\n truncateStrings,\n maybeTruncateValue,\n};\n","export class Context {\n constructor(parentContext) {\n this._currentContext = parentContext ? new Map(parentContext) : new Map();\n }\n\n getValue(key) {\n return this._currentContext.get(key);\n }\n\n setValue(key, value) {\n const context = new Context(this._currentContext);\n context._currentContext.set(key, value);\n return context;\n }\n\n deleteValue(key) {\n const context = new Context(self._currentContext);\n context._currentContext.delete(key);\n return context;\n }\n}\n\nexport const ROOT_CONTEXT = new Context();\n","import { ROOT_CONTEXT } from './context.js';\n\nexport class ContextManager {\n constructor() {\n this.currentContext = ROOT_CONTEXT;\n }\n\n active() {\n return this.currentContext;\n }\n\n enterContext(context) {\n const previousContext = this.currentContext;\n this.currentContext = context || ROOT_CONTEXT;\n return previousContext;\n }\n\n exitContext(context) {\n this.currentContext = context;\n return this.currentContext;\n }\n\n with(context, fn, thisArg, ...args) {\n const previousContext = this.enterContext(context);\n try {\n return fn.call(thisArg, ...args);\n } finally {\n this.exitContext(previousContext);\n }\n }\n}\n\nexport function createContextKey(key) {\n // Use Symbol for OpenTelemetry compatibility.\n return Symbol.for(key);\n}\n","/**\n * Generate a random hexadecimal ID of specified byte length\n *\n * @param {number} bytes - Number of bytes for the ID (default: 16)\n * @returns {string} - Hexadecimal string representation\n */\nfunction gen(bytes = 16) {\n let randomBytes = new Uint8Array(bytes);\n crypto.getRandomValues(randomBytes);\n let randHex = Array.from(randomBytes, (byte) =>\n byte.toString(16).padStart(2, '0'),\n ).join('');\n return randHex;\n}\n\n/**\n * Tracing id generation utils\n *\n * @example\n * import id from './id.js';\n *\n * const spanId = id.gen(8); // => \"a1b2c3d4e5f6...\"\n */\nexport default { gen };\n","import id from './id.js';\n\nconst SESSION_KEY = 'RollbarSession';\n\nexport class Session {\n _attributes;\n\n constructor(tracing, options) {\n this.options = options;\n this.tracing = tracing;\n this.window = tracing.window;\n this.session = null;\n this._attributes = {};\n }\n\n init(attrs = {}) {\n if (this.session) {\n return this;\n }\n this.getSession() || this.createSession();\n\n this.initSessionAttributes(attrs);\n\n return this;\n }\n\n getSession() {\n try {\n const serializedSession = this.window.sessionStorage.getItem(SESSION_KEY);\n\n if (!serializedSession) {\n return null;\n }\n\n this.session = JSON.parse(serializedSession);\n } catch {\n return null;\n }\n return this;\n }\n\n createSession() {\n this.session = {\n id: id.gen(),\n createdAt: Date.now(),\n };\n\n return this.setSession(this.session);\n }\n\n setSession(session) {\n const sessionString = JSON.stringify(session);\n\n try {\n this.window.sessionStorage.setItem(SESSION_KEY, sessionString);\n } catch {\n return null;\n }\n return this;\n }\n\n get attributes() {\n return this._attributes;\n }\n\n setAttributes(attributes) {\n this._attributes = { ...this._attributes, ...attributes };\n return this;\n }\n\n setUser(user) {\n this.setAttributes({\n 'user.id': user?.id,\n 'user.email': user?.email,\n 'user.name': user?.name || user?.username,\n });\n return this;\n }\n\n initSessionAttributes(attrs) {\n this.setAttributes({\n 'session.id': this.session.id,\n 'browser.brands': navigator.userAgentData?.brands,\n 'browser.language': navigator.language,\n 'browser.mobile': navigator.userAgentData?.mobile,\n 'browser.platform': navigator.userAgentData?.platform,\n 'client.address': '$remote_ip', // updated at the API\n 'rollbar.notifier.framework': 'browser-js',\n 'user_agent.original': navigator.userAgent,\n ...attrs,\n });\n return this;\n }\n}\n","/**\n * @module hrtime\n *\n * @description Methods for handling OpenTelemetry hrtime.\n */\n\n/**\n * Convert a duration in milliseconds to an OpenTelemetry hrtime tuple.\n *\n * @param {number} millis - The duration in milliseconds.\n * @returns {[number, number]} An array where the first element is seconds\n * and the second is nanoseconds.\n */\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in milliseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in milliseconds.\n */\nfunction toMillis(hrtime) {\n return hrtime[0] * 1e3 + Math.round(hrtime[1] / 1e6);\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in nanoseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in nanoseconds.\n */\nfunction toNanos(hrtime) {\n return hrtime[0] * 1e9 + hrtime[1];\n}\n\n/**\n * Adds two OpenTelemetry hrtime tuples.\n *\n * @param {[number, number]} a - The first hrtime tuple [s, ns].\n * @param {[number, number]} b - The second hrtime tuple [s, ns].\n * @returns {[number, number]} Summed hrtime tuple, normalized.\n *\n */\nfunction add(a, b) {\n return [a[0] + b[0] + Math.trunc((a[1] + b[1]) / 1e9), (a[1] + b[1]) % 1e9];\n}\n\n/**\n * Get the current high-resolution time as an OpenTelemetry hrtime tuple.\n *\n * @param {boolean} usePerformance=false - If true, uses the Performance API (timeOrigin + now()).\n *\n * @returns {[number, number]} The current hrtime tuple [s, ns].\n */\nfunction now(usePerformance = false) {\n if (usePerformance) {\n return add(\n fromMillis(performance.timeOrigin),\n fromMillis(performance.now()),\n );\n }\n return fromMillis(Date.now());\n}\n\n/**\n * Check if a value is a valid OpenTelemetry hrtime tuple.\n *\n * An hrtime tuple is an Array of exactly two numbers:\n * [seconds, nanoseconds]\n *\n * @param {*} value – anything to test\n * @returns {boolean} true if `value` is a [number, number] array of length 2\n *\n * @example\n * isHrTime([ 1, 500 ]); // true\n * isHrTime([ 0, 1e9 ]); // true\n * isHrTime([ '1', 500 ]); // false\n * isHrTime({ 0: 1, 1: 500 }); // false\n */\nfunction isHrTime(value) {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number'\n );\n}\n\n/**\n * Methods for handling hrtime. OpenTelemetry uses the [seconds, nanoseconds]\n * format for hrtime in the `ReadableSpan` interface.\n *\n * @example\n * import hrtime from '@tracing/hrtime.js';\n *\n * hrtime.fromMillis(1000);\n * hrtime.toMillis([0, 1000]);\n * hrtime.add([0, 0], [0, 1000]);\n * hrtime.now();\n * hrtime.isHrTime([0, 1000]);\n */\nexport default { fromMillis, toMillis, toNanos, add, now, isHrTime };\n","import hrtime from './hrtime.js';\n\n/**\n * SpanExporter is responsible for exporting ReadableSpan objects\n * and transforming them into the OTLP-compatible format.\n */\nexport class SpanExporter {\n constructor(api, options = {}) {\n this.api = api;\n this.options = options;\n }\n\n /**\n * Export spans to the span export queue\n *\n * @param {Array} spans - Array of ReadableSpan objects to export\n * @param {Function} _resultCallback - Optional callback (not used)\n */\n export(spans, _resultCallback) {\n spanExportQueue.push(...spans);\n }\n\n /**\n * Transforms an array of ReadableSpan objects into the OTLP format payload\n * compatible with the Rollbar API. This follows the OpenTelemetry protocol\n * specification for traces.\n *\n * @returns {Object} OTLP format payload for API transmission\n */\n toPayload() {\n const spans = spanExportQueue.slice();\n spanExportQueue.length = 0;\n\n if (!spans || !spans.length) {\n return { resourceSpans: [] };\n }\n\n const resource = (spans[0] && spans[0].resource) || {};\n\n const scopeMap = new Map();\n\n for (const span of spans) {\n const scopeKey = span.instrumentationScope\n ? `${span.instrumentationScope.name}:${span.instrumentationScope.version}`\n : 'default:1.0.0';\n\n if (!scopeMap.has(scopeKey)) {\n scopeMap.set(scopeKey, {\n scope: span.instrumentationScope || {\n name: 'default',\n version: '1.0.0',\n attributes: [],\n },\n spans: [],\n });\n }\n\n scopeMap.get(scopeKey).spans.push(this._transformSpan(span));\n }\n\n return {\n resourceSpans: [\n {\n resource: this._transformResource(resource),\n scopeSpans: Array.from(scopeMap.values()).map((scopeData) => ({\n scope: this._transformInstrumentationScope(scopeData.scope),\n spans: scopeData.spans,\n })),\n },\n ],\n };\n }\n\n /**\n * Sends the given payload to the Rollbar API.\n *\n * @param {String} payload - Serialized OTLP format payload\n * @param {Object} headers - Optional request headers\n * @returns {Promise} Promise that resolves when the request completes\n */\n post(payload, headers = {}) {\n return this.api.postSpans(payload, headers);\n }\n\n /**\n * Transforms a ReadableSpan into the OTLP Span format\n *\n * @private\n * @param {Object} span - ReadableSpan object to transform\n * @returns {Object} OTLP Span format\n */\n _transformSpan(span) {\n const transformAttributes = (attributes) => {\n return Object.entries(attributes || {}).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n };\n\n const transformEvents = (events) => {\n return (events || []).map((event) => ({\n timeUnixNano: hrtime.toNanos(event.time),\n name: event.name,\n attributes: transformAttributes(event.attributes),\n }));\n };\n\n return {\n traceId: span.spanContext.traceId,\n spanId: span.spanContext.spanId,\n parentSpanId: span.parentSpanId || '',\n name: span.name,\n kind: span.kind || 1, // INTERNAL by default\n startTimeUnixNano: hrtime.toNanos(span.startTime),\n endTimeUnixNano: hrtime.toNanos(span.endTime),\n attributes: transformAttributes(span.attributes),\n events: transformEvents(span.events),\n };\n }\n\n /**\n * Transforms a resource object into OTLP Resource format\n *\n * @private\n * @param {Object} resource - Resource information\n * @returns {Object} OTLP Resource format\n */\n _transformResource(resource) {\n const attributes = resource.attributes || {};\n const keyValues = Object.entries(attributes).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n\n return {\n attributes: keyValues,\n };\n }\n\n /**\n * Transforms an instrumentation scope into OTLP InstrumentationScope format\n *\n * @private\n * @param {Object} scope - Instrumentation scope information\n * @returns {Object} OTLP InstrumentationScope format\n */\n _transformInstrumentationScope(scope) {\n return {\n name: scope.name || '',\n version: scope.version || '',\n attributes: (scope.attributes || []).map((attr) => ({\n key: attr.key,\n value: this._transformAnyValue(attr.value),\n })),\n };\n }\n\n /**\n * Transforms a JavaScript value into an OTLP AnyValue\n *\n * @private\n * @param {any} value - Value to transform\n * @returns {Object} OTLP AnyValue format\n */\n _transformAnyValue(value) {\n if (value === null || value === undefined) {\n return { stringValue: '' };\n }\n\n const type = typeof value;\n\n if (type === 'string') {\n return { stringValue: value };\n } else if (type === 'number') {\n if (Number.isInteger(value)) {\n return { intValue: value.toString() };\n } else {\n return { doubleValue: value };\n }\n } else if (type === 'boolean') {\n return { boolValue: value };\n } else if (Array.isArray(value)) {\n return {\n arrayValue: {\n values: value.map((v) => this._transformAnyValue(v)),\n },\n };\n } else if (type === 'object') {\n return {\n kvlistValue: {\n values: Object.entries(value).map(([k, v]) => ({\n key: k,\n value: this._transformAnyValue(v),\n })),\n },\n };\n }\n\n return { stringValue: String(value) };\n }\n}\n\nexport const spanExportQueue = [];\n","import logger from '../logger.js';\n\nexport class SpanProcessor {\n constructor(exporter, options = {}) {\n this.exporter = exporter;\n this.options = options;\n this.pendingSpans = new Map();\n this.transforms = [this.userTransform.bind(this)];\n }\n\n addTransform(transformFn) {\n this.transforms.unshift(transformFn);\n }\n\n userTransform(span) {\n if (this.options.transformSpan) {\n this.options.transformSpan({ span: span });\n }\n }\n\n applyTransforms(span) {\n for (const transform of this.transforms) {\n try {\n transform(span);\n } catch (e) {\n logger.error('Error running span transform callback', e);\n }\n }\n }\n\n onStart(span, _parentContext) {\n this.pendingSpans.set(span.span.spanContext.spanId, span);\n }\n\n onEnd(span) {\n this.applyTransforms(span.span);\n this.exporter.export([span.export()]);\n this.pendingSpans.delete(span.span.spanContext.spanId);\n }\n}\n","import hrtime from './hrtime.js';\n\nexport class Span {\n constructor(options) {\n this.usePerformance = options.usePerformance;\n this.initReadableSpan(options);\n\n this.spanProcessor = options.spanProcessor;\n this.spanProcessor.onStart(this, options.context);\n\n if (options.attributes) {\n this.setAttributes(options.attributes);\n }\n return this;\n }\n\n initReadableSpan(options) {\n this.span = {\n name: options.name,\n kind: options.kind,\n spanContext: options.spanContext,\n parentSpanId: options.parentSpanId,\n startTime: options.startTime || hrtime.now(options.usePerformance),\n endTime: [0, 0],\n status: { code: 0, message: '' },\n attributes: { 'session.id': options.session?.id },\n links: [],\n events: [],\n duration: 0,\n ended: false,\n resource: options.resource,\n instrumentationScope: options.scope,\n droppedAttributesCount: 0,\n droppedEventsCount: 0,\n droppedLinksCount: 0,\n };\n }\n\n spanContext() {\n return this.span.spanContext;\n }\n\n get spanId() {\n return this.span.spanContext.spanId;\n }\n\n get traceId() {\n return this.span.spanContext.traceId;\n }\n\n setAttribute(key, value) {\n if (value == null || this.span.ended) return this;\n if (key.length === 0) return this;\n\n this.span.attributes[key] = value;\n return this;\n }\n\n setAttributes(attributes) {\n for (const [k, v] of Object.entries(attributes)) {\n this.setAttribute(k, v);\n }\n return this;\n }\n\n addEvent(name, attributes = {}, time) {\n if (this.span.ended) return this;\n\n this.span.events.push({\n name,\n attributes,\n time: time || hrtime.now(),\n droppedAttributesCount: 0,\n });\n\n return this;\n }\n\n isRecording() {\n return this.span.ended === false;\n }\n\n end(attributes, time) {\n if (attributes) this.setAttributes(attributes);\n this.span.endTime = time || hrtime.now(this.usePerformance);\n this.span.ended = true;\n this.spanProcessor.onEnd(this);\n }\n\n export() {\n return this.span;\n }\n}\n","import { Span } from './span.js';\nimport id from './id.js';\n\nexport class Tracer {\n constructor(tracing, spanProcessor) {\n this.spanProcessor = spanProcessor;\n this.tracing = tracing;\n }\n\n startSpan(\n name,\n options = {},\n context = this.tracing.contextManager.active(),\n ) {\n const parentSpan = this.tracing.getSpan(context);\n const parentSpanContext = parentSpan?.spanContext();\n const spanId = id.gen(8);\n let traceId;\n let traceFlags = 0;\n let traceState = null;\n let parentSpanId;\n if (parentSpanContext) {\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n parentSpanId = parentSpanContext.spanId;\n } else {\n traceId = id.gen(16);\n }\n\n const kind = 0;\n const spanContext = { traceId, spanId, traceFlags, traceState };\n const resource = {\n attributes: {\n ...(this.tracing.resource?.attributes || {}),\n ...(options.resource?.attributes || {}),\n },\n };\n\n const span = new Span({\n resource: resource,\n scope: this.tracing.scope,\n session: this.tracing.session?.session,\n context,\n spanContext,\n name,\n kind,\n parentSpanId,\n spanProcessor: this.spanProcessor,\n startTime: options.startTime,\n usePerformance: options.usePerformance,\n });\n return span;\n }\n}\n","import { ContextManager, createContextKey } from './contextManager.js';\nimport { Session } from './session.js';\nimport { SpanExporter } from './exporter.js';\nimport { SpanProcessor } from './spanProcessor.js';\nimport { Tracer } from './tracer.js';\nimport id from './id.js';\n\nconst SPAN_KEY = createContextKey('Rollbar Context Key SPAN');\n\nexport default class Tracing {\n constructor(gWindow, api, options) {\n this.api = api;\n this.options = options;\n this.window = gWindow;\n\n if (this.window.sessionStorage) {\n this.session = new Session(this, options);\n }\n this.createTracer();\n }\n\n configure(options) {\n // Options merge happens before configure is called, so we can just replace.\n this.options = options;\n }\n\n initSession() {\n if (this.session) {\n this.session.init();\n }\n }\n\n get sessionId() {\n if (this.session) {\n return this.session.session.id;\n }\n return null;\n }\n\n get resource() {\n return {\n attributes: {\n ...(this.options.resource || {}),\n 'rollbar.environment':\n this.options.payload?.environment ?? this.options.environment,\n },\n };\n }\n\n get scope() {\n return {\n name: 'rollbar-browser-js',\n version: this.options.version,\n };\n }\n\n idGen(bytes = 16) {\n return id.gen(bytes);\n }\n\n createTracer() {\n this.contextManager = new ContextManager();\n this.exporter = new SpanExporter(this.api, this.options);\n this.spanProcessor = new SpanProcessor(this.exporter, this.options.tracing);\n this.tracer = new Tracer(this, this.spanProcessor);\n }\n\n getTracer() {\n return this.tracer;\n }\n\n addSpanTransform(transformFn) {\n this.spanProcessor.addTransform(transformFn);\n }\n\n getSpan(context = this.contextManager.active()) {\n return context.getValue(SPAN_KEY);\n }\n\n setSpan(context = this.contextManager.active(), span) {\n return context.setValue(SPAN_KEY, span);\n }\n\n startSpan(name, options = {}, context = this.contextManager.active()) {\n return this.tracer.startSpan(name, options, context);\n }\n\n with(context, fn, thisArg, ...args) {\n return this.contextManager.with(context, fn, thisArg, ...args);\n }\n\n withSpan(name, options, fn, thisArg) {\n const span = this.startSpan(name, options);\n return this.with(\n this.setSpan(this.contextManager.active(), span),\n fn,\n thisArg,\n span,\n );\n }\n}\n","import Rollbar from './core.js';\nimport Telemeter from '../telemetry.js';\nimport Instrumenter from './telemetry.js';\nimport wrapGlobals from './wrapGlobals.js';\nimport scrub from '../scrub.js';\nimport truncation from '../truncation.js';\nimport Tracing from '../tracing/tracing.js';\n\nRollbar.setComponents({\n telemeter: Telemeter,\n instrumenter: Instrumenter,\n wrapGlobals: wrapGlobals,\n scrub: scrub,\n truncation: truncation,\n tracing: Tracing,\n});\n\nexport default Rollbar;\n","import rollbar from '../rollbar.js';\n\nif ((typeof window !== 'undefined') && !window._rollbarStartTime) {\n window._rollbarStartTime = (new Date()).getTime();\n}\n\nexport default rollbar;\n"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","hasOwn","toStr","toString","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","constructor","merge","i","src","copy","clone","name","result","create","current","length","arguments","isType","x","t","typeName","_typeof","Error","match","toLowerCase","isFunction","f","isObject","type","isFiniteNumber","n","Number","isFinite","isError","e","LEVELS","debug","info","warning","error","critical","sanitizeUrl","url","baseUrlParts","str","parseUriOptions","m","parser","strictMode","exec","uri","l","q","replace","$0","$1","$2","parseUri","anchor","source","query","strict","loose","formatUrl","u","protocol","port","hostname","path","stringify","backup","JSON","jsonError","backupError","jsonParse","s","parse","makeUnhandledStackInfo","message","lineno","colno","mode","backupMessage","errorParser","location","line","column","func","guessFunctionName","context","gatherContext","href","document","useragent","window","navigator","userAgent","String","stack","wrapCallback","logger","err","resp","nonCircularClone","seen","newSeen","includes","slice","push","createItem","args","notifier","requestKeys","lambdaContext","custom","callback","request","arg","extraArgs","argTypes","typ","DOMException","j","len","undefined","d","item","timestamp","now","diagnostic","uuid","c","r","Math","random","floor","data","level","skipFrames","setCustomItemKeys","_originalArgs","original_arg_types","TELEMETRY_TYPES","TELEMETRY_LEVELS","arrayIncludes","arr","val","k","addItemAttributes","itemData","attributes","_step","_iterator","_createForOfIteratorHelper","done","a","keys","split","set","setPrototypeOf","temp","replacement","Date","handleOptions","input","payload","options","hostWhiteList","hostSafeList","log","hostBlackList","hostBlockList","updateDeprecatedOptions","overwriteScrubFields","scrubFields","concat","RateLimiter","startTime","_","counter","perMinCounter","platform","platformOptions","configureGlobal","checkRate","limit","ignoreRateLimit","shouldSendValue","shouldSend","globalRateLimit","limitPerMin","perMinute","msg","environment","body","extra","maxItems","itemsPerMinute","language","version","framework","rateLimitPayload","globalSettings","elapsedTime","globalRateLimitPerMin","setPlatformOptions","Queue","rateLimiter","api","replay","_classCallCheck","predicates","pendingItems","pendingRequests","retryQueue","retryHandle","waitCallback","waitIntervalID","_this$api","configure","oldOptions","predicate","idx","indexOf","splice","originalError","originalItem","_this","predicateResult","_applyPredicates","stop","removePendingItem","_maybeLog","transmit","replayId","capture","_makeApiRequest","headers","_dequeuePendingRequest","sendOrDiscardReplay","_this$replay","discard","_this2","_maybeCallWait","clearInterval","setInterval","p","_this3","rateLimitResponse","postItem","_maybeRetry","shouldRetry","retryInterval","RETRIABLE_ERRORS","code","maxRetries","retries","_retryApiRequest","_this4","retryObject","shift","verbose","Notifier","queue","transforms","addTransform","transform","enabled","addPendingItem","_applyTransforms","addItem","bind","transformIndex","transformsLength","cb","Rollbar","telemeter","tracing","tracer","validateTracer","_configuredOptions","setStackTraceLimit","lastError","lastErrorHash","stackTraceLimit","scope","active","global","payloadData","_defaultLogLevel","_log","warn","wait","captureEvent","metadata","captureDomContentLoaded","ts","captureLoad","buildJsonPayload","sendJsonPayload","jsonPayload","postJsonPayload","defaultLevel","ignoreDuplicateErrors","_sameAsLastError","_addTracingAttributes","_addTracingInfo","_captureRollbarItem","telemetryEvents","copyEvents","_this$tracing","_this$tracing2","span","getSpan","sessionId","spanId","traceId","addEvent","logLevel","_isUncaught","itemHash","generateItemHash","spanContext","toSpanId","toTraceId","validateSpan","setTag","opentracingSpanId","opentracingTraceId","opentracing_span_id","opentracing_trace_id","buildPayload","contextResult","substr","getTransportFromOptions","defaults","search","timeout","transport","gWindow","self","defaultTransport","fetch","XMLHttpRequest","detectTransport","proxy","endpoint","opts","pathname","transportOptions","method","transportAPI","host","_regeneratorRuntime","iterator","asyncIterator","configurable","writable","wrap","Generator","Context","makeInvokeMethod","tryCatch","h","y","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","mark","__proto__","awrap","async","Promise","reverse","pop","prev","charAt","rval","handle","complete","finish","catch","delegateYield","asyncGeneratorStep","defaultOptions","OTLPDefaultOptions","Api","urllib","truncation","accessToken","_getTransport","OTLPTransportOptions","_getOTLPTransport","helpers","_options$tracing","_objectSpread","_postPromise","_ref","reject","post","setTimeout","postSpans","_ref2","_callee","_args","_context","apply","_next","_throw","_x","stringifyResult","truncate","levels","disable","_len","Array","_key","_len2","_key2","_len3","_key3","_len4","_key4","_len5","_key5","init","unshift","console","controller","timeoutId","AbortController","abort","signal","response","clearTimeout","respHeaders","endsWith","json","_newRetriableError","requestFactory","xmlhttp","factories","ActiveXObject","numFactories","_createXMLHTTPObject","onreadystatechange","readyState","parseResponse","responseText","status","_isSuccess","getResponseHeader","_isNormalFailure","ex","exc","open","setRequestHeader","_i","_Object$entries","entries","_Object$entries$_i","_slicedToArray","send","e1","XDomainRequest","substring","xdomainrequest","onprogress","ontimeout","onerror","onload","e2","Transport","params","access_token","paramsArray","join","sort","qs","_makeZoneRequest","rootZone","Zone","run","_makeRequest","RollbarProxy","_msg","_proxyRequest","makeFetchRequest","makeXhrRequest","last","auth","hash","parseInt","pathParts","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","stacktrace","lineRE","lines","file","raw","applySlice","parseOpera9","filtered","filter","map","argsRaw","tokens","locationParts","extractLocation","functionCall","functionName","function","col","parseOpera11","parseOpera10","parseOpera","parseV8OrIeString","parseV8OrIE","parseFFOrSafariString","parseFFOrSafari","allowEmpty","urlLike","parts","isArray","sanitizedLine","functionNameRegex","matches","stackframesLiteToStackframes","liteStackframes","liteStackframe","fileName","lineNumber","columnNumber","ERR_CLASS_REGEXP","RegExp","Frame","stackFrame","_stackFrame","Stack","exception","skip","parserStack","parse$1","getStack","_mostSpecificErrorName","rawStack","rawException","constructorName","guessErrorClass","errMsg","errClassMatch","errClass","nested","cause","traceChain","handleDomException","handleItemWithError","stackInfo","_savedStackTrace","addErrorContext","chain","errors","contextAdded","rollbarContext","error_context","description","ensureItemHasSomethingToSay","addBaseInfo","server","addBody","traces","traceChainLength","trace","buildTrace","trace_chain","addBodyTraceChain","stackFromItem","guess","className","errorClass","addBodyMessage","addBodyTrace","_unhandledStackInfo","class","frame","pre","contextLength","mid","frames","filename","sendFrameUrl","itemToPayload","addPayloadOptions","payloadOptions","addTelemetryData","addMessageWithError","tracePath","userTransform","newItem","promisedItem","addConfigToPayload","sendConfig","addFunctionOption","addConfiguredOptions","configuredOptions","configured_options","addDiagnosticKeys","client","is_anonymous","is_uncaught","raw_error","constructor_name","failed","checkIgnore","settings","checkLevel","levelVal","reportLevel","matchFrames","list","block","listLength","frameLength","test","urlIsOnAList","safeOrBlock","tracesLength","listName","messageIsIgnored","ignoredMessages","rIgnoredMessage","messages","messagesFromItem","uncaughtErrorLevel","_toConsumableArray","_instance","components","Telemeter","Instrumenter","instrumenter","wrapGlobals","scrub","Tracing","Replay","API","_gWindow","initSession","replayOptions","autoStart","recorder","start","Client","gDocument","isChrome","chrome","runtime","anonymousErrorsPending","rollbar","requestInfo","query_string","remoteString","captureIp","user_ip","nav","scr","screen","runtime_ms","_rollbarStartTime","round","javascript","browser","cookie_enabled","cookieEnabled","width","height","cur","plugins","navPlugins","sharedTransforms","scrubFn","scrubPaths","addTransformsToNotifier","addPredicate","sharedPredicates","isUncaught","onSendCallback","addPredicatesToQueue","setupUnhandledCapture","instrument","setSessionAttributesFromOptions","_createClass","_this$instrumenter","_createItem","triggerReplay","unhandledExceptionsInitialized","captureUncaught","handleUncaughtExceptions","handler","shim","oldOnError","_rollbarOldOnError","handleAnonymousErrors","fn","old","_rollbarWrappedError","_rollbarContext","ret","handleUncaughtException","_rollbarWindowOnError","globals","wrapGlobalEventHandlers","unhandledRejectionsInitialized","captureUnhandledRejections","handleUnhandledRejections","_rollbarURH","belongsToShim","removeEventListener","rejectionHandler","evt","reason","promise","detail","handleUnhandledRejection","addEventListener","inspectAnonymousErrors","prepareStackTrace","_stack","_isAnonymous","reasonResult","_before","ctxFn","_isWrap","_rollbar_wrapped","_wrappedSource","event","user","session","setUser","attrs","_this$tracing3","setAttributes","_options$payload","_options$client","_options$payload2","_options$payload3","_options$payload4","person","setSessionUser","code_version","codeVersion","setSessionAttributes","maybeCallback","_getFirstFunction","_Rollbar","_defineProperty","callInstance","_len6","_key6","_len7","_key7","_len8","_key8","_len9","_key9","_len10","_key10","_len11","_key11","_len12","_key12","_len13","_key13","_len14","_key14","browserDefaults","includeItemsInTelemetry","triggerDefaults","samplingRatio","preDuration","postDuration","triggers","logErrors","logEmits","inlineStylesheet","inlineImages","collectFonts","maskInputOptions","password","email","tel","text","color","date","month","number","range","time","week","maskAllInputs","blockClass","maskTextClass","ignoreClass","slimDOMOptions","script","comment","headFavicon","headWhitespace","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","MAX_EVENTS","fromMillis","millis","trunc","maxTelemetryEvents","maxQueueSize","max","min","telemetrySpan","startSpan","newMaxEvents","deleteCount","events","filterTelemetry","otelAttributes","_objectWithoutProperties","_excluded","end","rollbarUUID","getLevel","timestamp_ms","_this$telemetrySpan","_this$telemetrySpan2","_this$telemetrySpan3","subtype","requestData","_metadata$response","_this$telemetrySpan4","levelFromStatus","status_code","endTimeNano","end_time_ms","statusCode","request_headers","start_time_ms","element","checked","_this$telemetrySpan5","isSynthetic","endTimeUnixNano","_getRepeatedEvent","_updateRepeatedEvent","_ref3","_this$telemetrySpan6","lastEvent","_lastEvent","target","duration","textZoomRatio","count","rate","_ref4","_this$telemetrySpan7","_ref5","_this$telemetrySpan8","_ref6","_this$telemetrySpan9","dropEffect","effectAllowed","kinds","mediaTypes","from","to","_this$telemetrySpan10","getTime","_ref7","_this$telemetrySpan11","captureError","captureLog","manual","normalizeName","FetchHeaders","append","header","getOwnPropertyNames","normalizeValue","oldValue","has","thisArg","items","iteratorFor","Headers","replacements","orig","seenIndex","isObj","mapped","same","scrubPath","paramRes","pat","_getScrubFieldRegexs","queryRes","_getScrubQueryParamRegexs","redactQueryParam","dummy0","paramPart","traverse","scrubber","tmpV","valScrubber","paramScrubber","elementString","elem","nextStr","totalLength","out","descriptionToString","separator","MAX_LENGTH","elementArrayToString","nextDescription","describeElement","tagName","parentNode","treeToArray","desc","id","classes","attr","getAttribute","network","networkResponseHeaders","networkResponseBody","networkRequestHeaders","networkRequestBody","networkErrorOnHttp5xx","networkErrorOnHttp4xx","networkErrorOnHttp0","dom","navigation","connectivity","contentSecurityPolicy","errorOnContentSecurityPolicy","restore","b","defaultValueScrubber","_step2","patterns","_iterator2","field","nameFromDescription","_patterns","_window","_document","removeListeners","autoInstrument","configureScrubbing","eventRemovers","contentsecuritypolicy","_location","_lastHref","_options$scrubTelemet","_options$replay","_options$replay2","_options$replay3","_options$replay4","_options$replay5","_options$replay6","_options$replay7","_options$replay8","_options$replay9","scrubTelemetryInputs","telemetryScrubber","maskInputFn","scrubClasses","Boolean","scrubSelectors","blockSelector","ignoreSelector","maskTextSelector","oldSettings","deinstrumentNetwork","instrumentNetwork","deinstrumentConsole","instrumentConsole","deinstrumentDom","instrumentDom","deinstrumentNavigation","instrumentNavigation","deinstrumentConnectivity","instrumentConnectivity","deinstrumentContentSecurityPolicy","instrumentContentSecurityPolicy","wrapProp","xhr","xhrp","isUrlObject","_isUrlObject","__rollbar_xhr","request_content_type","onreadystatechangeHandler","__rollbar_event","captureNetwork","response_content_type","headersConfig","allHeaders","getAllResponseHeaders","_step3","_iterator3","trim","_step4","_iterator4","isJsonContentType","scrubJson","addOtelNetworkResponse","errorOnHttpStatus","trackHttpErrors","reqHeaders","fetchHeaders","telemetryEvent","contentType","endTimeMs","inHeaders","outHeaders","currentHeader","_step5","_iterator5","_this$_window","_i2","_methods","wrapConsole","origConsole","Function","addListener","handleEvent","click","handleClick","dragdrop","handleDrag","focus","handleFocus","form","handleForm","handleInput","resize","handleResize","contentLoaded","handleContentLoaded","URL","_evt$target","captureClick","isTrusted","domUtil","_evt$target2","captureFocus","_evt$target3","innerWidth","captureResize","innerHeight","_evt$dataTransfer","_evt$dataTransfer2","_step6","_iterator6","dataTransfer","files","kind","captureDragDrop","inputType","mask","selectors","cls","classList","contains","sel","_evt$target4","_evt$target5","_evt$target6","_evt$target7","scrubInputValue","_evt$target8","captureInput","app","history","pushState","handleUrlChange","parsedHref","urlparser","parsedTo","parsedFrom","captureNavigation","handleConnectivity","captureConnectivityChange","cspEvent","blockedURI","violatedDirective","effectiveDirective","sourceFile","originalPolicy","handleCspError","cspHandler","handleCspEvent","section","types","_step7","_iterator7","_loop","passive","_extendListenerPrototype","oldAddEventListener","_rollbarOldAdd","addFn","bubble","oldRemoveEventListener","_rollbarOldRemove","removeFn","jsonBackup","selectFrames","truncateFrames","maybeTruncateValue","truncateStrings","truncator","truncateTraceData","traceData","minBody","needsTruncation","maxSize","string","charCodeAt","strategy","results","strategies","parentContext","_currentContext","Map","delete","ROOT_CONTEXT","ContextManager","currentContext","previousContext","enterContext","exitContext","gen","randomBytes","Uint8Array","crypto","getRandomValues","byte","padStart","SESSION_KEY","Session","_attributes","getSession","createSession","initSessionAttributes","serializedSession","sessionStorage","getItem","_unused","createdAt","setSession","sessionString","setItem","_unused2","username","_navigator$userAgentD","_navigator$userAgentD2","_navigator$userAgentD3","userAgentData","brands","mobile","add","toMillis","hrtime","toNanos","performance","timeOrigin","isHrTime","SpanExporter","spans","_resultCallback","spanExportQueue","resourceSpans","resource","scopeMap","scopeKey","instrumentationScope","_transformSpan","_transformResource","scopeSpans","scopeData","_transformInstrumentationScope","transformAttributes","_transformAnyValue","parentSpanId","startTimeUnixNano","endTime","timeUnixNano","_this5","stringValue","isInteger","intValue","doubleValue","boolValue","arrayValue","kvlistValue","SpanProcessor","exporter","pendingSpans","transformFn","transformSpan","_parentContext","applyTransforms","export","Span","usePerformance","initReadableSpan","spanProcessor","onStart","_options$session","links","ended","droppedAttributesCount","droppedEventsCount","droppedLinksCount","setAttribute","onEnd","Tracer","_this$tracing$resourc","_options$resource","_this$tracing$session","contextManager","parentSpan","parentSpanContext","traceState","traceFlags","SPAN_KEY","for","createTracer","_this$options$payload","_this$options$payload2","bytes","getValue","setValue","_this$contextManager","with","setSpan","setComponents"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"rollbar.noconflict.umd.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAiB,QAAID,IAErBD,EAAc,QAAIC,GACnB,CATD,CASGK,KAAM,WACT,O,wBCTA,IAAIC,EAAsB,CCA1BA,EAAwB,SAASL,EAASM,GACzC,IAAI,IAAIC,KAAOD,EACXD,EAAoBG,EAAEF,EAAYC,KAASF,EAAoBG,EAAER,EAASO,IAC5EE,OAAOC,eAAeV,EAASO,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,IAG3E,ECPAF,EAAwB,SAASQ,EAAKC,GAAQ,OAAOL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,EAAO,ECCtGT,EAAwB,SAASL,GACX,oBAAXkB,QAA0BA,OAAOC,aAC1CV,OAAOC,eAAeV,EAASkB,OAAOC,YAAa,CAAEC,MAAO,WAE7DX,OAAOC,eAAeV,EAAS,aAAc,CAAEoB,OAAO,GACvD,G,gxCCYA,SAASC,EAAOC,EAAGC,GACjB,OAAOA,IAAMC,EAASF,EACxB,CAKA,SAASE,EAASF,GAChB,IAAIG,EAAIC,EAAUJ,GAClB,MAAa,WAATG,EACKA,EAEJH,EAGDA,aAAaK,MACR,QAEF,CAAC,EAAEC,SACPX,KAAKK,GACLO,MAAM,iBAAiB,GACvBC,cARM,MASX,CAOA,SAASC,EAAWC,GAClB,OAAOX,EAAOW,EAAG,WACnB,CAsBA,SAASC,EAASb,GAChB,OACW,MAATA,IAAkC,UAAhBM,EAAON,IAAqC,mBAATA,EAEzD,CAGA,SAASc,EAAOrB,EAAKC,GACnB,OAAW,MAAPD,IAGAJ,OAAOyB,OACFzB,OAAOyB,OAAOrB,EAAKC,GAErBL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,GACnD,CAiBA,SAASqB,EAAeC,GACtB,OAAOC,OAAOC,SAASF,EACzB,CAoBA,SAASG,EAAQC,GAEf,OAAOnB,EAAOmB,EAAG,UAAYnB,EAAOmB,EAAG,YACzC,CAoBA,SAASC,IACP,MAAO,UACT,C,4CAgBA,IAAIC,EAAS,CACXC,MAAO,EACPC,KAAM,EACNC,QAAS,EACTC,MAAO,EACPC,SAAU,GAkBZ,SAASC,EAAYC,GACnB,IAAIC,EA4CN,SAAkBC,GAChB,IAAK9B,EAAO8B,EAAK,UACf,OAOF,IAJA,IAAI3C,EAAI4C,EACJC,EAAI7C,EAAE8C,OAAO9C,EAAE+C,WAAa,SAAW,SAASC,KAAKL,GACrDM,EAAM,CAAC,EAEFC,EAAI,EAAGC,EAAInD,EAAED,IAAIqD,OAAQF,EAAIC,IAAKD,EACzCD,EAAIjD,EAAED,IAAImD,IAAML,EAAEK,IAAM,GAU1B,OAPAD,EAAIjD,EAAEqD,EAAEpC,MAAQ,CAAC,EACjBgC,EAAIjD,EAAED,IAAI,KAAKuD,QAAQtD,EAAEqD,EAAEP,OAAQ,SAAUS,EAAIC,EAAIC,GAC/CD,IACFP,EAAIjD,EAAEqD,EAAEpC,MAAMuC,GAAMC,EAExB,GAEOR,CACT,CAjEqBS,CAASjB,GAC5B,OAAKC,GAKuB,KAAxBA,EAAaiB,SACfjB,EAAakB,OAASlB,EAAakB,OAAON,QAAQ,IAAK,KAGzDb,EAAMC,EAAakB,OAAON,QAAQ,IAAMZ,EAAamB,MAAO,KARnD,WAUX,CAEA,IAAIjB,EAAkB,CACpBG,YAAY,EACZhD,IAAK,CACH,SACA,WACA,YACA,WACA,OACA,WACA,OACA,OACA,WACA,OACA,YACA,OACA,QACA,UAEFsD,EAAG,CACDpC,KAAM,WACN6B,OAAQ,6BAEVA,OAAQ,CACNgB,OACE,uIACFC,MACE,+LAyDN,SAASC,EAAUC,EAAGC,GAWpB,KAVAA,EAAWA,GAAYD,EAAEC,WACRD,EAAEE,OACF,KAAXF,EAAEE,KACJD,EAAW,QACS,MAAXD,EAAEE,OACXD,EAAW,WAGfA,EAAWA,GAAY,UAElBD,EAAEG,SACL,OAAO,KAET,IAAIC,EAASH,EAAW,KAAOD,EAAEG,SAOjC,OANIH,EAAEE,OACJE,EAASA,EAAS,IAAMJ,EAAEE,MAExBF,EAAEK,OACJD,GAAkBJ,EAAEK,MAEfD,CACT,CAEA,SAASE,EAAUlE,EAAKmE,GACtB,IAAI5D,EAAO0B,EACX,IACE1B,EAAQ6D,KAAKF,UAAUlE,EACzB,CAAE,MAAOqE,GACP,GAAIF,GAAUjD,EAAWiD,GACvB,IACE5D,EAAQ4D,EAAOnE,EACjB,CAAE,MAAOsE,GACPrC,EAAQqC,CACV,MAEArC,EAAQoC,CAEZ,CACA,MAAO,CAAEpC,MAAOA,EAAO1B,MAAOA,EAChC,CAgCA,SAASgE,EAAUC,GACjB,IAAIjE,EAAO0B,EACX,IACE1B,EAAQ6D,KAAKK,MAAMD,EACrB,CAAE,MAAO7C,GACPM,EAAQN,CACV,CACA,MAAO,CAAEM,MAAAA,EAAO1B,MAAAA,EAClB,CAEA,SAASmE,EACPC,EACAvC,EACAwC,EACAC,EACA5C,EACA6C,EACAC,EACAC,GAEA,IAAIC,EAAW,CACb7C,IAAKA,GAAO,GACZ8C,KAAMN,EACNO,OAAQN,GAEVI,EAASG,KAAOJ,EAAYK,kBAAkBJ,EAAS7C,IAAK6C,EAASC,MACrED,EAASK,QAAUN,EAAYO,cAAcN,EAAS7C,IAAK6C,EAASC,MACpE,IAAIM,EACkB,oBAAbC,UACPA,UACAA,SAASR,UACTQ,SAASR,SAASO,KAChBE,EACgB,oBAAXC,QACPA,QACAA,OAAOC,WACPD,OAAOC,UAAUC,UACnB,MAAO,CACLf,KAAMA,EACNH,QAAS1C,EAAQ6D,OAAO7D,GAAS0C,GAAWI,EAC5C3C,IAAKoD,EACLO,MAAO,CAACd,GACRS,UAAWA,EAEf,CAEA,SAASM,EAAaC,EAAQ9E,GAC5B,OAAO,SAAU+E,EAAKC,GACpB,IACEhF,EAAE+E,EAAKC,EACT,CAAE,MAAOxE,GACPsE,EAAOhE,MAAMN,EACf,CACF,CACF,CAEA,SAASyE,EAAiBpG,GA+BxB,OA5BA,SAASqG,EAAMrG,EAAKsG,GAClB,IAAI/F,EACFK,EACA2F,EACAvC,EAAS,CAAC,EAEZ,IACE,IAAKpD,KAAQZ,GACXO,EAAQP,EAAIY,MAEEJ,EAAOD,EAAO,WAAaC,EAAOD,EAAO,UACjD+F,EAAKE,SAASjG,GAChByD,EAAOpD,GAAQ,+BAAiCD,EAASJ,KAEzDgG,EAAUD,EAAKG,SACPC,KAAKnG,GACbyD,EAAOpD,GAAQyF,EAAM9F,EAAOgG,IAKhCvC,EAAOpD,GAAQL,CAEnB,CAAE,MAAOoB,GACPqC,EAAS,+BAAiCrC,EAAEgD,OAC9C,CACA,OAAOX,CACT,CACOqC,CAAMrG,EA9BF,CAACA,GA+Bd,CAEA,SAAS2G,EAAWC,EAAMX,EAAQY,EAAUC,EAAaC,GAOvD,IANA,IAAIpC,EAASuB,EAAKc,EAAQC,EAAUC,EAChCC,EACAC,EAAY,GAEZC,EAAW,GAENxE,EAAI,EAAGC,EAAI8D,EAAK7D,OAAQF,EAAIC,IAAKD,EAAG,CAG3C,IAAIyE,EAAM3G,EAFVwG,EAAMP,EAAK/D,IAIX,OADAwE,EAASX,KAAKY,GACNA,GACN,IAAK,YACH,MACF,IAAK,SACC3C,EACFyC,EAAUV,KAAKS,GAEfxC,EAAUwC,EAEZ,MACF,IAAK,WACHF,EAAWjB,EAAaC,EAAQkB,GAChC,MACF,IAAK,OACHC,EAAUV,KAAKS,GACf,MACF,IAAK,QACL,IAAK,eACL,IAAK,YACCjB,EACFkB,EAAUV,KAAKS,GAEfjB,EAAMiB,EAER,MACF,IAAK,SACL,IAAK,QACH,GACEA,aAAerG,OACU,oBAAjByG,cAAgCJ,aAAeI,aACvD,CACIrB,EACFkB,EAAUV,KAAKS,GAEfjB,EAAMiB,EAER,KACF,CACA,GAAIL,GAAuB,WAARQ,IAAqBJ,EAAS,CAC/C,IAAK,IAAIM,EAAI,EAAGC,EAAMX,EAAY/D,OAAQyE,EAAIC,IAAOD,EACnD,QAA4BE,IAAxBP,EAAIL,EAAYU,IAAmB,CACrCN,EAAUC,EACV,KACF,CAEF,GAAID,EACF,KAEJ,CACIF,EACFI,EAAUV,KAAKS,GAEfH,EAASG,EAEX,MACF,QACE,GACEA,aAAerG,OACU,oBAAjByG,cAAgCJ,aAAeI,aACvD,CACIrB,EACFkB,EAAUV,KAAKS,GAEfjB,EAAMiB,EAER,KACF,CACAC,EAAUV,KAAKS,GAErB,CAGIH,IAAQA,EAASZ,EAAiBY,IAElCI,EAAUrE,OAAS,IAChBiE,IAAQA,EAASZ,EAAiB,CAAC,IACxCY,EAAOI,UAAYhB,EAAiBgB,IAGtC,IAlYIO,EAkYAC,EAAO,CACTjD,QAASA,EACTuB,IAAKA,EACLc,OAAQA,EACRa,UAAWC,IACXb,SAAUA,EACVJ,SAAUA,EACVkB,WA9Fe,CAAC,EA+FhBC,MA1YEL,EAAIG,IACG,uCAAuC7E,QAChD,QACA,SAAUgF,GACR,IAAIC,GAAMP,EAAoB,GAAhBQ,KAAKC,UAAiB,GAAM,EAE1C,OADAT,EAAIQ,KAAKE,MAAMV,EAAI,KACL,MAANM,EAAYC,EAAS,EAAJA,EAAW,GAAKnH,SAAS,GACpD,KAkZF,OAZA6G,EAAKU,KAAOV,EAAKU,MAAQ,CAAC,EAe5B,SAA2BV,EAAMZ,GAC3BA,QAA2BU,IAAjBV,EAAOuB,QACnBX,EAAKW,MAAQvB,EAAOuB,aACbvB,EAAOuB,OAEZvB,QAAgCU,IAAtBV,EAAOwB,aACnBZ,EAAKY,WAAaxB,EAAOwB,kBAClBxB,EAAOwB,WAElB,CAtBEC,CAAkBb,EAAMZ,GAEpBF,GAAeI,IACjBU,EAAKV,QAAUA,GAEbH,IACFa,EAAKb,cAAgBA,GAEvBa,EAAKc,cAAgB9B,EACrBgB,EAAKG,WAAWY,mBAAqBtB,EAC9BO,CACT,CAkCA,IAAIgB,EAAkB,CACpB,MACA,UACA,MACA,aACA,QACA,UAEEC,EAAmB,CAAC,WAAY,QAAS,UAAW,OAAQ,SAEhE,SAASC,EAAcC,EAAKC,GAAK,IACRC,EADQC,EAAAC,EACXJ,GAAG,IAAvB,IAAAG,EAAA1E,MAAAyE,EAAAC,EAAA3H,KAAA6H,MAAyB,CACvB,GADcH,EAAA1I,QACAyI,EACZ,OAAO,CAEX,CAAC,OAAA9C,GAAAgD,EAAAvH,EAAAuE,EAAA,SAAAgD,EAAA/H,GAAA,CAED,OAAO,CACT,CAkCA,SAASkI,EAAkBC,EAAUC,GACnCD,EAASC,WAAaD,EAASC,YAAc,GAAG,IACtBC,EADsBC,EAAAN,EAChCI,GAAU,IAA1B,IAAAE,EAAAjF,MAAAgF,EAAAC,EAAAlI,KAAA6H,MAA4B,KAAjBM,EAACF,EAAAjJ,WACMmH,IAAZgC,EAAEnJ,OAGN+I,EAASC,WAAW7C,KAAKgD,EAC3B,CAAC,OAAAxD,GAAAuD,EAAA9H,EAAAuE,EAAA,SAAAuD,EAAAtI,GAAA,CACH,CAUA,SAASpB,EAAIC,EAAKiE,GAChB,GAAKjE,EAAL,CAGA,IAAI2J,EAAO1F,EAAK2F,MAAM,KAClB5F,EAAShE,EACb,IACE,IAAK,IAAI6C,EAAI,EAAG4E,EAAMkC,EAAK5G,OAAQF,EAAI4E,IAAO5E,EAC5CmB,EAASA,EAAO2F,EAAK9G,GAEzB,CAAE,MAAOgH,GACP7F,OAAS0D,CACX,CACA,OAAO1D,CAVP,CAWF,CAEA,SAAS8F,EAAI9J,EAAKiE,EAAM1D,GACtB,GAAKP,EAAL,CAKAJ,OAAOmK,eAAe/J,EAAK,MAE3B,IAAI2J,EAAO1F,EAAK2F,MAAM,KAClBnC,EAAMkC,EAAK5G,OACf,KAAI0E,EAAM,GAGV,GAAY,IAARA,EAIJ,IAGE,IAFA,IAAIuC,EAAOhK,EAAI2J,EAAK,KAAO,CAAC,EACxBM,EAAcD,EACTnH,EAAI,EAAGA,EAAI4E,EAAM,IAAK5E,EAC7BmH,EAAKL,EAAK9G,IAAMmH,EAAKL,EAAK9G,KAAO,CAAC,EAClCmH,EAAOA,EAAKL,EAAK9G,IAEnBmH,EAAKL,EAAKlC,EAAM,IAAMlH,EACtBP,EAAI2J,EAAK,IAAMM,CACjB,CAAE,MAAOJ,GACP,MACF,MAdE7J,EAAI2J,EAAK,IAAMpJ,CAXjB,CA0BF,CA8BA,SAASuH,IACP,OAAIoC,KAAKpC,IACAoC,KAAKpC,MAEPtG,OAAO,IAAI0I,KACpB,CAsCA,SAASC,EAAcC,EAASC,EAAOC,EAASrE,GAC9C,IAAIjC,EAASuG,EAAMH,EAASC,EAAOC,GAEnC,OADAtG,EAUF,SAAiCwG,EAASvE,GACpCuE,EAAQC,gBAAkBD,EAAQE,eACpCF,EAAQE,aAAeF,EAAQC,cAC/BD,EAAQC,mBAAgB/C,EACxBzB,GAAUA,EAAO0E,IAAI,mDAEnBH,EAAQI,gBAAkBJ,EAAQK,gBACpCL,EAAQK,cAAgBL,EAAQI,cAChCJ,EAAQI,mBAAgBlD,EACxBzB,GAAUA,EAAO0E,IAAI,oDAEvB,OAAOH,CACT,CAtBWM,CAAwB9G,EAAQiC,IACpCoE,GAASA,EAAMU,sBAGhBV,EAAMW,cACRhH,EAAOgH,aAAeZ,EAAQY,aAAe,IAAIC,OAAOZ,EAAMW,cAHvDhH,CAMX,CAgBA,SAASuG,IACP,SAASW,EAAclL,GACrB,IAAKA,GAA+C,oBAAxCJ,OAAOM,UAAUa,SAASX,KAAKJ,GACzC,OAAO,EAGT,IAYIN,EAZAyL,EAAoB9J,EAAOrB,EAAK,eAChCoL,EACFpL,EAAIqL,aACJrL,EAAIqL,YAAYnL,WAChBmB,EAAOrB,EAAIqL,YAAYnL,UAAW,iBAEpC,GAAIF,EAAIqL,cAAgBF,IAAsBC,EAC5C,OAAO,EAMT,IAAK1L,KAAOM,GAIZ,YAAsB,IAARN,GAAuB2B,EAAOrB,EAAKN,EACnD,CAEA,IAAImD,EACFyI,EACAC,EACAlF,EACAzF,EACAoD,EAASpE,OAAO4L,OAAO,MACvBpB,EAAU,KACVrH,EAAS0I,UAAU1I,OAErB,IAAKF,EAAI,EAAGA,EAAIE,EAAQF,IAEtB,GAAIuH,OADJA,EAAUqB,UAAU5I,IAKpB,IAAKjC,KAAQwJ,EACXkB,EAAMtH,EAAOpD,GAEToD,KADJuH,EAAOnB,EAAQxJ,MAET2K,GAAQL,EAAcK,IACxBlF,EAAQiF,GAAOJ,EAAcI,GAAOA,EAAM,CAAC,EAC3CtH,EAAOpD,GAAQ2J,EAAMlE,EAAOkF,SACH,IAATA,IAChBvH,EAAOpD,GAAQ2K,IAKvB,OAAOvH,CACT,CC/yBA,MAlDA,SAAkBhE,EAAKoF,EAAMkB,GAC3B,IAAIoF,EAAGC,EAAG9I,EAIN+I,EAHAC,EAAQC,EAAS9L,EAAK,UACtB+L,EAAUD,EAAS9L,EAAK,SACxB2J,EAAO,GAMX,GAFArD,EAAOA,GAAQ,CAAEtG,IAAK,GAAIgM,OAAQ,IAE9BH,EAAO,CAGT,GAFAD,EAAYtF,EAAKtG,IAAIiM,QAAQjM,GAEzB6L,IAAwB,IAAfD,EAEX,OAAOtF,EAAK0F,OAAOJ,IAActF,EAAKtG,IAAI4L,GAG5CtF,EAAKtG,IAAI0G,KAAK1G,GACd4L,EAAYtF,EAAKtG,IAAI+C,OAAS,CAChC,CAEA,GAAI8I,EACF,IAAKH,KAAK1L,EACJ8L,EAAS9L,EAAK0L,IAChB/B,EAAKjD,KAAKgF,QAGT,GAAIK,EACT,IAAKlJ,EAAI,EAAGA,EAAI7C,EAAI+C,SAAUF,EAC5B8G,EAAKjD,KAAK7D,GAId,IAAImB,EAAS6H,EAAQ,CAAC,EAAI,GACtBK,GAAO,EACX,IAAKrJ,EAAI,EAAGA,EAAI8G,EAAK5G,SAAUF,EAE7B8I,EAAI3L,EADJ0L,EAAI/B,EAAK9G,IAETmB,EAAO0H,GAAKtG,EAAKsG,EAAGC,EAAGrF,GACvB4F,EAAOA,GAAQlI,EAAO0H,KAAO1L,EAAI0L,GAOnC,OAJIG,IAAUK,IACZ5F,EAAK0F,OAAOJ,GAAa5H,GAGnBkI,EAAgBlM,EAATgE,CACjB,E,qoDCGA,SAASmI,EAAUnM,EAAKiE,GACtB,IAAI0F,EAAO1F,EAAK2F,MAAM,KAClBwC,EAAOzC,EAAK5G,OAAS,EACzB,IAAI,IACuCsJ,EADvCC,EAAAnD,EACyBQ,EAAK4C,WAAS,IAAzC,IAAAD,EAAA9H,MAAA6H,EAAAC,EAAA/K,KAAA6H,MAA2C,KAAAoD,EAAAC,EAAAJ,EAAA9L,MAAA,GAA/BmM,EAAKF,EAAA,GAAE9M,EAAG8M,EAAA,GAChBE,EAAQN,EACVpM,EAAMA,EAAIN,GAEVM,EAAIN,GAAOoM,GAEf,CAAC,OAAA5F,GAAAoG,EAAA3K,EAAAuE,EAAA,SAAAoG,EAAAnL,GAAA,CACH,CAAE,MAAO0I,GACP,CAEJ,CAoBA,MApFA,SAAevB,EAAM0C,EAAa2B,GAGhC,GAFA3B,EAAcA,GAAe,GAEzB2B,EAAY,KACeC,EADfC,EAAA1D,EACKwD,GAAU,IAA7B,IAAAE,EAAArI,MAAAoI,EAAAC,EAAAtL,KAAA6H,MAA+B,CAC7B+C,EAAU7D,EADGsE,EAAArM,MAEf,CAAC,OAAA2F,GAAA2G,EAAAlL,EAAAuE,EAAA,SAAA2G,EAAA1L,GAAA,CACH,CAEA,IAAI2L,EAyDN,SAA8B9B,GAC5B,IAC+B+B,EAD3BC,EAAM,GAAGC,EAAA9D,EACO6B,GAAW,IAA/B,IAAAiC,EAAAzI,MAAAuI,EAAAE,EAAA1L,KAAA6H,MAAiC,KAC3B8D,EAAM,iBADIH,EAAAxM,MACuB,8BACrCyM,EAAItG,KAAK,IAAIyG,OAAOD,EAAK,KAC3B,CAAC,OAAAhH,GAAA+G,EAAAtL,EAAAuE,EAAA,SAAA+G,EAAA9L,GAAA,CACD,OAAO6L,CACT,CAhEiBI,CAAqBpC,GAChCqC,EAiEN,SAAmCrC,GACjC,IAC+BsC,EAD3BN,EAAM,GAAGO,EAAApE,EACO6B,GAAW,IAA/B,IAAAuC,EAAA/I,MAAA8I,EAAAC,EAAAhM,KAAA6H,MAAiC,KAC3B8D,EAAM,gBADII,EAAA/M,MACsB,6BACpCyM,EAAItG,KAAK,IAAIyG,OAAO,IAAMD,EAAM,eAAgB,OAClD,CAAC,OAAAhH,GAAAqH,EAAA5L,EAAAuE,EAAA,SAAAqH,EAAApM,GAAA,CACD,OAAO6L,CACT,CAxEiBQ,CAA0BxC,GAEzC,SAASyC,EAAiBC,EAAQC,GAChC,OAAOA,EFqIF,UEpIP,CAiCA,OAAOC,EAAStF,EAZhB,SAASuF,EAASnC,EAAGC,EAAGrF,GACtB,IAAIwH,EAXN,SAAqBpC,EAAGC,GAAG,IACGnC,EADHC,EAAAN,EACL2D,GAAQ,IAA5B,IAAArD,EAAAjF,MAAAgF,EAAAC,EAAAlI,KAAA6H,MACE,GADcI,EAAAjJ,MACJwN,KAAKrC,GAAI,CACjBC,EAAIG,IACJ,KACF,CACD,OAAA5F,GAAAuD,EAAA9H,EAAAuE,EAAA,SAAAuD,EAAAtI,GAAA,CACD,OAAOwK,CACT,CAGaqC,CAAYtC,EAAGC,GAC1B,OAAImC,IAASnC,EACPG,EAASH,EAAG,WAAaG,EAASH,EAAG,SAChCiC,EAASjC,EAAGkC,EAAUvH,GAvBnC,SAAuBqF,GACrB,GAAIG,EAASH,EAAG,UAAW,KACG1C,EADHC,EAAAC,EACLkE,GAAQ,IAA5B,IAAAnE,EAAA1E,MAAAyE,EAAAC,EAAA3H,KAAA6H,MAA8B,KAAnB6E,EAAKhF,EAAA1I,MACdoL,EAAIA,EAAE1I,QAAQgL,EAAOR,EACvB,CAAC,OAAAvH,GAAAgD,EAAAvH,EAAAuE,EAAA,SAAAgD,EAAA/H,GAAA,CACH,CACA,OAAOwK,CACT,CAkBWuC,CAAcJ,GAEdA,CAEX,EAGF,E,i5CCjDA,IAAMK,EAAa,IAGnB,SAASC,EAAWC,GAClB,MAAO,CAAClG,KAAKmG,MAAMD,EAAS,KAAOlG,KAAKoG,MAAOF,EAAS,IAAQ,KAClE,CAAC,IAEKG,EAAS,WAQZ,O,EAPD,SAAAA,EAAYhE,EAASiE,GAAS,IAAAC,G,4FAAAC,CAAA,KAAAH,GAC5BjP,KAAKqP,MAAQ,GACbrP,KAAKiL,QAAUsB,EAAQtB,GACvB,IAAIqE,EAAqBtP,KAAKiL,QAAQqE,oBAAsBV,EAC5D5O,KAAKuP,aAAe3G,KAAK4G,IAAI,EAAG5G,KAAK6G,IAAIH,EAAoBV,IAC7D5O,KAAKkP,QAAUA,EACflP,KAAK0P,cAA4B,QAAfP,EAAGnP,KAAKkP,eAAO,IAAAC,OAAA,EAAZA,EAAcQ,UAAU,oBAAqB,CAAC,EACrE,E,EAAC,EAAAxP,IAAA,YAAAa,MAED,SAAUiK,GACR,IAAI2E,EAAa5P,KAAKiL,QACtBjL,KAAKiL,QAAUsB,EAAQqD,EAAY3E,GACnC,IAAIqE,EAAqBtP,KAAKiL,QAAQqE,oBAAsBV,EACxDiB,EAAejH,KAAK4G,IAAI,EAAG5G,KAAK6G,IAAIH,EAAoBV,IACxDkB,EAAc,EACd9P,KAAKqP,MAAM7L,OAASqM,IACtBC,EAAc9P,KAAKqP,MAAM7L,OAASqM,GAEpC7P,KAAKuP,aAAeM,EACpB7P,KAAKqP,MAAMU,OAAO,EAAGD,EACvB,GAAC,CAAA3P,IAAA,aAAAa,MAED,WACE,IAAIgP,EAASC,MAAMtP,UAAUuG,MAAMrG,KAAKb,KAAKqP,MAAO,GACpD,GAAI9C,EAAavM,KAAKiL,QAAQiF,iBAC5B,IAEE,IADA,IAAI5M,EAAI0M,EAAOxM,OACRF,KACDtD,KAAKiL,QAAQiF,gBAAgBF,EAAO1M,KACtC0M,EAAOD,OAAOzM,EAAG,EAGvB,CAAE,MAAOgH,GACPtK,KAAKiL,QAAQiF,gBAAkB,IACjC,CAWF,OAJAF,GAHAA,EAASA,EAAOG,OAAO,SAAC/N,GAAC,MAAgB,iBAAXA,EAAEgO,IAAuB,IAGvCC,IACd,SAAAC,GAAkCA,EAA/BC,eAAH,IAAuCC,E,6WAAKC,CAAAH,EAAAI,GAAA,OAAOF,CAAK,GAGnDR,CACT,GAAC,CAAA7P,IAAA,sBAAAa,MAED,WAAqC,IAAjBgJ,EAAUkC,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC5BlM,KAAK0P,gBACP1P,KAAK0P,cAAciB,IAAI3G,GACvBhK,KAAK0P,cAAgB1P,KAAKkP,QAAQS,UAAU,oBAAqB,CAAC,GAEtE,GAAC,CAAAxP,IAAA,UAAAa,MAED,SACEoP,EACAQ,EACA5H,EACA6H,GAGA,IAFAvI,EAAS4D,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,KACZqE,EAAcrE,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,KAEb9J,EAAI,CACN4G,MAAO8H,EAASV,EAAMpH,GACtBoH,KAAMA,EACNW,aAAczI,GAAaiE,IAC3ByE,KAAMJ,EACN5M,OAAQ,UAEN6M,IACFzO,EAAEqG,KAAOoI,GAEPN,IACFnO,EAAEmO,eAAiBA,GAGrB,IACE,GACEhE,EAAavM,KAAKiL,QAAQiF,kBAC1BlQ,KAAKiL,QAAQiF,gBAAgB9N,GAE7B,OAAO,CAEX,CAAE,MAAO6O,GACPjR,KAAKiL,QAAQiF,gBAAkB,IACjC,CAGA,OADAlQ,KAAKmH,KAAK/E,GACHA,CACT,GAAC,CAAAjC,IAAA,eAAAa,MAED,SAAaoP,EAAMQ,EAAU5H,EAAO6H,GAClC,OAAO7Q,KAAKkR,QAAQd,EAAMQ,EAAU5H,EAAO6H,EAC7C,GAAC,CAAA1Q,IAAA,eAAAa,MAED,SAAa2F,EAAKqC,EAAO6H,EAAavI,GAAW,IAAA6I,EACzC/L,EAAUuB,EAAIvB,SAAWmB,OAAOI,GAClCiK,EAAW,CAAExL,QAAAA,GACbuB,EAAIH,QACNoK,EAASpK,MAAQG,EAAIH,OAEvB,IAAM+J,EAAiB,CACrBnL,QAAAA,EACA4D,MAAAA,EACAoH,KAAM,QACN3H,KAAMoI,GASR,OANkB,QAAlBM,EAAAnR,KAAK0P,qBAAa,IAAAyB,GAAlBA,EAAoBC,SAClB,2BACAb,EACA1B,EAAWvG,IAGNtI,KAAKkR,QACV,QACAN,EACA5H,EACA6H,EACAvI,EACAiI,EAEJ,GAAC,CAAApQ,IAAA,aAAAa,MAED,SAAWoE,EAAS4D,EAAO6H,EAAavI,GAAW,IAAA+I,EAC3Cb,EAAQK,EACV,2BACA,oBACEN,EAAce,EAAA,CAClBlM,QAAAA,EACA4D,MAAAA,GACI6H,EAAc,CAAET,KAAM,UAAW3H,KAAMoI,GAAgB,CAAC,GAK9D,OAFkB,QAAlBQ,EAAArR,KAAK0P,qBAAa,IAAA2B,GAAlBA,EAAoBD,SAASZ,EAAOD,EAAgB1B,EAAWvG,IAExDtI,KAAKkR,QACV,MACA,CAAE9L,QAAAA,GACF4D,EACA6H,EACAvI,EACAiI,EAEJ,GAAC,CAAApQ,IAAA,iBAAAa,MAED,SAAe4P,EAAUW,EAASV,EAAaW,GAAa,IAAAC,EAAAC,EAAAC,EAC1DJ,EAAUA,GAAW,MACrBX,EAASW,QAAUX,EAASW,SAAWA,EACnCC,IACFZ,EAASjJ,QAAU6J,GAErB,IAAMxI,EAAQhJ,KAAK4R,gBAAgBhB,EAASiB,aACtCC,EAA4C,KAA7BlB,EAASmB,aAAe,GACvCxB,EAAiB,CACrBH,KAAMQ,EAASW,QACfS,OAAQpB,EAASoB,OACjBnP,IAAK+N,EAAS/N,IACdoP,WAAYrB,EAASiB,YACrB,kBAAmBhN,KAAKF,UAAUiM,EAASsB,iBAAmB,CAAC,GAC/D,mBAAoBrN,KAAKF,WAA2B,QAAjB8M,EAAAb,EAASuB,gBAAQ,IAAAV,OAAA,EAAjBA,EAAmBW,UAAW,CAAC,GAClE,wBAAyBN,EAAYtQ,YAEjC6Q,EAAczB,EAASjJ,QACvB2K,EAAgC,QAApBZ,EAAGd,EAASuB,gBAAQ,IAAAT,OAAA,EAAjBA,EAAmBV,KAcxC,OAbIqB,IACF9B,EAAe,gBAAkB1L,KAAKF,UAAU0N,IAE9CC,IACF/B,EAAe,iBAAmB1L,KAAKF,UAAU2N,IAGjC,QAAlBX,EAAA3R,KAAK0P,qBAAa,IAAAiC,GAAlBA,EAAoBP,SAClB,wBACAb,EACA1B,EAAW+B,EAAS2B,gBAGfvS,KAAKkR,QACV,UACAN,EACA5H,EACA6H,EACAD,EAAS2B,cACThC,EAEJ,GAAC,CAAApQ,IAAA,kBAAAa,MAED,SAAgBiR,GACd,OAAIA,GAAc,KAAOA,EAAa,IAC7B,OAEU,IAAfA,GAAoBA,GAAc,IAC7B,QAEF,MACT,GAAC,CAAA9R,IAAA,aAAAa,MAED,SAAWuQ,EAASiB,EAASxR,EAAOyR,EAAS5B,GAC3C,IAAID,EAAW,CACbW,QAASA,EACTiB,QAASA,GAQX,YANcrK,IAAVnH,IACF4P,EAAS5P,MAAQA,QAEHmH,IAAZsK,IACF7B,EAAS6B,QAAUA,GAEdzS,KAAKkR,QAAQ,MAAON,EAAU,OAAQC,EAC/C,GAAC,CAAA1Q,IAAA,eAAAa,MAED,SAAY0R,GAAmD,IAAAC,EAAhDvC,EAAIsC,EAAJtC,KAAMwC,EAAWF,EAAXE,YAAaJ,EAAOE,EAAPF,QAASxR,EAAK0R,EAAL1R,MAAOsH,EAASoK,EAATpK,UAC1CjH,EAAO,sBACPuP,EAAW,CACfR,KAAM/O,EACNkQ,QAASnB,EACToC,QAAAA,EACAxR,MAAAA,GAEIuP,EAAiB,CACrBH,KAAAA,EACAwC,YAAAA,EACAJ,QAAAA,EACAxR,MAAAA,EACA6R,gBAAiBhE,EAAWvG,IAExBkI,EAAQxQ,KAAK8S,kBAAkBzR,EAAMkP,GAC3C,OAAIC,EACKxQ,KAAK+S,qBAAqBvC,EAAOD,EAAgBjI,IAGxC,QAAlBqK,EAAA3S,KAAK0P,qBAAa,IAAAiD,GAAlBA,EAAoBvB,SAAS/P,EAAMkP,EAAgB1B,EAAWvG,IAEvDtI,KAAKkR,QACV,MACAN,EACA,OACA,KACAtI,EACAiI,GAEJ,GAAC,CAAApQ,IAAA,eAAAa,MAED,SAAYgS,GAA4C,IAAAC,EAAzC7C,EAAI4C,EAAJ5C,KAAMwC,EAAWI,EAAXJ,YAAaJ,EAAOQ,EAAPR,QAASlK,EAAS0K,EAAT1K,UACnCjH,EAAO,sBACPuP,EAAW,CACfR,KAAM/O,EACNkQ,QAASnB,EACToC,QAAAA,GAEIjC,EAAiB,CACrBH,KAAAA,EACAwC,YAAAA,EACAJ,QAAAA,EACAK,gBAAiBhE,EAAWvG,IAExBkI,EAAQxQ,KAAK8S,kBAAkBzR,EAAMkP,GAC3C,OAAIC,EACKxQ,KAAK+S,qBAAqBvC,EAAOD,EAAgBjI,IAGxC,QAAlB2K,EAAAjT,KAAK0P,qBAAa,IAAAuD,GAAlBA,EAAoB7B,SAAS/P,EAAMkP,EAAgB1B,EAAWvG,IAEvDtI,KAAKkR,QACV,MACAN,EACA,OACA,KACAtI,EACAiI,GAEJ,GAAC,CAAApQ,IAAA,oBAAAa,MAED,SAAkBK,EAAM2I,GACtB,IAAMkJ,EAAYlT,KAAKmT,WAAWnT,KAAKqP,OAEvC,GACE6D,GACAA,EAAUlC,KAAKZ,OAAS/O,GACxB6R,EAAU3C,eAAe6C,SAAWpJ,EAAWoJ,OAE/C,OAAOF,CAEX,GAAC,CAAA/S,IAAA,uBAAAa,MAED,SAAqBwP,EAAOxG,EAAY1B,GACtC,IAAM+K,EAAWzK,KAAK4G,IAAIlH,EAAYkI,EAAMO,aAAc,GAC1DP,EAAMQ,KAAKhQ,MAAQgJ,EAAWhJ,MAC9BwP,EAAMD,eAAevP,MAAQgJ,EAAWhJ,MACxCwP,EAAMD,eAAe+C,OAAStJ,EAAWsJ,OACzC9C,EAAMD,eAAegD,MAAQvJ,EAAWuJ,MACxC/C,EAAMD,eAAeiD,cAAgBxJ,EAAWwJ,cAChDhD,EAAMD,eAAgC,gBAAI1B,EAAWvG,GACrDkI,EAAMD,eAAiC,iBAAI1B,EAAWwE,GACtD7C,EAAMD,eAAekD,OAASjD,EAAMD,eAAekD,OAAS,GAAK,EACjEjD,EAAMD,eAAemD,KAAOlD,EAAMD,eAAekD,OAASJ,EAAW,IACvE,GAAC,CAAAlT,IAAA,aAAAa,MAED,SAAW2S,GACT,OAAOA,EAAKnQ,OAAS,EAAImQ,EAAKA,EAAKnQ,OAAS,GAAK,IACnD,GAAC,CAAArD,IAAA,eAAAa,MAED,SAAY4S,GAA4C,IAAAC,EAAzCzD,EAAIwD,EAAJxD,KAAMwC,EAAWgB,EAAXhB,YAAaJ,EAAOoB,EAAPpB,QAASlK,EAASsL,EAATtL,UACnCjH,EAAO,sBACPuP,EAAW,CACfR,KAAM/O,EACNkQ,QAASnB,EACToC,QAAAA,GAEIjC,EAAiB,CACrBH,KAAAA,EACAwC,YAAAA,EACAJ,QAAAA,GAKF,OAFkB,QAAlBqB,EAAA7T,KAAK0P,qBAAa,IAAAmE,GAAlBA,EAAoBzC,SAAS/P,EAAMkP,EAAgB1B,EAAWvG,IAEvDtI,KAAKkR,QACV,MACAN,EACA,OACA,KACAtI,EACAiI,EAEJ,GAAC,CAAApQ,IAAA,gBAAAa,MAED,SAAa8S,GAOV,IAAAC,EAND3D,EAAI0D,EAAJ1D,KACAwC,EAAWkB,EAAXlB,YACAW,EAAKO,EAALP,MACAD,EAAMQ,EAANR,OACAE,EAAaM,EAAbN,cACAlL,EAASwL,EAATxL,UAEMjH,EAAO,uBACPuP,EAAW,CACfR,KAAM/O,EACNkQ,QAASnB,EACTmD,MAAAA,EACAD,OAAAA,EACAE,cAAAA,GAEIjD,EAAiB,CACrBH,KAAAA,EACAwC,YAAAA,EACAW,MAAAA,EACAD,OAAAA,EACAE,cAAAA,GAGIhD,EAAQxQ,KAAK8S,kBAAkBzR,EAAMkP,GAC3C,OAAIC,EACKxQ,KAAK+S,qBAAqBvC,EAAOD,EAAgBjI,IAGxC,QAAlByL,EAAA/T,KAAK0P,qBAAa,IAAAqE,GAAlBA,EAAoB3C,SAAS/P,EAAMkP,EAAgB1B,EAAWvG,IAEvDtI,KAAKkR,QACV,MACAN,EACA,OACA,KACAtI,EACAiI,GAEJ,GAAC,CAAApQ,IAAA,kBAAAa,MAED,SAAegT,GASZ,IAAAC,EARD7D,EAAI4D,EAAJ5D,KACAwC,EAAWoB,EAAXpB,YACAJ,EAAOwB,EAAPxB,QACA0B,EAAUF,EAAVE,WACAC,EAAaH,EAAbG,cACAC,EAAKJ,EAALI,MACAC,EAAUL,EAAVK,WACA/L,EAAS0L,EAAT1L,UAEMjH,EAAO,yBACTuP,EAAW,CACbR,KAAM/O,EACNkQ,QAASnB,EACTwC,YAAAA,GAGErC,EAAiB,CACnBH,KAAAA,EACAwC,YAAAA,GAkCF,MA/Ba,cAATxC,IACFQ,EAAQU,EAAAA,EAAA,GAAQV,GAAQ,IAAE4B,QAAAA,EAAS0B,WAAAA,EAAYC,cAAAA,IAC/C5D,EAAce,EAAAA,EAAA,GACTf,GAAc,IACjBiC,QAAAA,EACA0B,WAAAA,EACAC,cAAAA,KAIS,SAAT/D,IACFQ,EAAQU,EAAAA,EAAA,GACHV,GAAQ,IACX4B,QAAAA,EACA0B,WAAAA,EACAC,cAAAA,EACAC,MAAAA,EACAC,WAAAA,IAEF9D,EAAce,EAAAA,EAAA,GACTf,GAAc,IACjBiC,QAAAA,EACA0B,WAAAA,EACAC,cAAAA,EACAC,MAAAA,EACAC,WAAAA,KAIc,QAAlBJ,EAAAjU,KAAK0P,qBAAa,IAAAuE,GAAlBA,EAAoB7C,SAAS/P,EAAMkP,EAAgB1B,EAAWvG,IAEvDtI,KAAKkR,QACV,MACAN,EACA,OACA,KACAtI,EACAiI,EAEJ,GAAC,CAAApQ,IAAA,oBAAAa,MAED,SAAkBsT,EAAMC,EAAI1D,EAAavI,GAAW,IAAAkM,EAOlD,OANkB,QAAlBA,EAAAxU,KAAK0P,qBAAa,IAAA8E,GAAlBA,EAAoBpD,SAClB,2BACA,CAAE,oBAAqBkD,EAAM,WAAYC,GACzC1F,EAAWvG,IAGNtI,KAAKkR,QACV,aACA,CAAEoD,KAAAA,EAAMC,GAAAA,GACR,OACA1D,EACAvI,EAEJ,GAAC,CAAAnI,IAAA,0BAAAa,MAED,SAAwByT,GACtB,OAAOzU,KAAKkR,QACV,aACA,CAAEK,QAAS,oBACX,YACApJ,EACAsM,GAAMA,EAAGC,UAMb,GAAC,CAAAvU,IAAA,cAAAa,MAED,SAAYyT,GACV,OAAOzU,KAAKkR,QACV,aACA,CAAEK,QAAS,QACX,YACApJ,EACAsM,GAAMA,EAAGC,UAMb,GAAC,CAAAvU,IAAA,4BAAAa,MAED,SAAyB2T,GAAmC,IAAAC,EAAhCxE,EAAIuE,EAAJvE,KAAMwC,EAAW+B,EAAX/B,YAAatK,EAASqM,EAATrM,UACvCjH,EAAO,6BACPuP,EAAW,CACfR,KAAM/O,EACNkQ,QAASnB,GAELG,EAAiB,CACrBH,KAAAA,EACAwC,YAAAA,GAKF,OAFkB,QAAlBgC,EAAA5U,KAAK0P,qBAAa,IAAAkF,GAAlBA,EAAoBxD,SAAS/P,EAAMkP,EAAgB1B,EAAWvG,IAEvDtI,KAAKkR,QACV,eACAN,EACA,OACA,KACAtI,EACAiI,EAEJ,GAEA,CAAApQ,IAAA,sBAAAa,MACA,SAAoBqH,GAClB,GAAKrI,KAAKiL,QAAQ4J,wBAGlB,OAAIxM,EAAK1B,IACA3G,KAAK8U,aAAazM,EAAK1B,IAAK0B,EAAKW,MAAOX,EAAKI,KAAMJ,EAAKC,WAE7DD,EAAKjD,QACApF,KAAK+U,WACV1M,EAAKjD,QACLiD,EAAKW,MACLX,EAAKI,KACLJ,EAAKC,WAGLD,EAAKZ,OACAzH,KAAKkR,QACV,MACA7I,EAAKZ,OACLY,EAAKW,MACLX,EAAKI,KACLJ,EAAKC,gBANT,CASF,GAAC,CAAAnI,IAAA,OAAAa,MAED,SAAKoB,GACHpC,KAAKqP,MAAMlI,KAAK/E,GACZpC,KAAKqP,MAAM7L,OAASxD,KAAKuP,cAC3BvP,KAAKqP,MAAM2F,OAEf,I,4FAAC,CArhBY,GAwhBf,SAASlE,EAASV,EAAMpH,GACtB,GAAIA,EACF,OAAOA,EAMT,MAJmB,CACjBtG,MAAO,QACPuS,OAAQ,QAEU7E,IAAS,MAC/B,CAEA,Q,wsBC5iBO,IAAM8E,GAAO,WAClB,SAAAA,EAAYC,I,4FAAe/F,CAAA,KAAA8F,GACzBlV,KAAKoV,gBAAkBD,EAAgB,IAAIE,IAAIF,GAAiB,IAAIE,GACtE,CAAC,O,EAAAH,G,EAAA,EAAA/U,IAAA,WAAAa,MAED,SAASb,GACP,OAAOH,KAAKoV,gBAAgB5U,IAAIL,EAClC,GAAC,CAAAA,IAAA,WAAAa,MAED,SAASb,EAAKa,GACZ,IAAM+E,EAAU,IAAImP,EAAQlV,KAAKoV,iBAEjC,OADArP,EAAQqP,gBAAgB7K,IAAIpK,EAAKa,GAC1B+E,CACT,GAAC,CAAA5F,IAAA,cAAAa,MAED,SAAYb,GACV,IAAM4F,EAAU,IAAImP,EAAQI,KAAKF,iBAEjC,OADArP,EAAQqP,gBAAgBG,OAAOpV,GACxB4F,CACT,M,yFAAC,CAnBiB,GAsBPyP,GAAe,IAAIN,G,+sBCpBzB,IAAMO,GAAc,WAGxB,O,EAFD,SAAAA,K,4FAAcrG,CAAA,KAAAqG,GACZzV,KAAK0V,eAAiBF,EACxB,E,EAAC,EAAArV,IAAA,SAAAa,MAED,WACE,OAAOhB,KAAK0V,cACd,GAAC,CAAAvV,IAAA,eAAAa,MAED,SAAa+E,GACX,IAAM4P,EAAkB3V,KAAK0V,eAE7B,OADA1V,KAAK0V,eAAiB3P,GAAWyP,GAC1BG,CACT,GAAC,CAAAxV,IAAA,cAAAa,MAED,SAAY+E,GAEV,OADA/F,KAAK0V,eAAiB3P,EACf/F,KAAK0V,cACd,GAAC,CAAAvV,IAAA,OAAAa,MAED,SAAK+E,EAAS6P,EAAIC,GAChB,IAAMF,EAAkB3V,KAAK8V,aAAa/P,GAC1C,IAAI,QAAAgQ,EAAA7J,UAAA1I,OAFwB6D,EAAI,IAAA4I,MAAA8F,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ3O,EAAI2O,EAAA,GAAA9J,UAAA8J,GAG9B,OAAOJ,EAAG/U,KAAIoV,MAAPL,EAAE,CAAMC,GAAOnK,OAAKrE,GAC7B,CAAE,QACArH,KAAKkW,YAAYP,EACnB,CACF,I,8FAAC,CA3BwB,GCW3B,SAAS9G,GAAWC,GAClB,MAAO,CAAClG,KAAKmG,MAAMD,EAAS,KAAOlG,KAAKoG,MAAOF,EAAS,IAAQ,KAClE,CA8BA,SAASqH,GAAIhM,EAAGiM,GACd,MAAO,CAACjM,EAAE,GAAKiM,EAAE,GAAKxN,KAAKmG,OAAO5E,EAAE,GAAKiM,EAAE,IAAM,MAAOjM,EAAE,GAAKiM,EAAE,IAAM,IACzE,CAwDA,QAAiBvH,WAAAA,GAAYwH,SAhF7B,SAAkBC,GAChB,OAAmB,IAAZA,EAAO,GAAW1N,KAAKoG,MAAMsH,EAAO,GAAK,IAClD,EA8EuCC,QAtEvC,SAAiBD,GACf,OAAmB,IAAZA,EAAO,GAAWA,EAAO,EAClC,EAoEgDH,IAAAA,GAAK5N,IA/CrD,WACE,OADyB2D,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,IAAAA,UAAA,GAEhBiK,GACLtH,GAAW2H,YAAYC,YACvB5H,GAAW2H,YAAYjO,QAGpBsG,GAAWlE,KAAKpC,MACzB,EAuC0DmO,SAtB1D,SAAkB1V,GAChB,OACEiP,MAAMzD,QAAQxL,IACG,IAAjBA,EAAMwC,QACc,iBAAbxC,EAAM,IACO,iBAAbA,EAAM,EAEjB,G,skEClFO,IAAM2V,GAAY,WAMvB,O,EALA,SAAAA,EAAYC,GAAmB,IAAd3L,EAAOiB,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,CAAC,G,4FAACkD,CAAA,KAAAuH,GAC3B3W,KAAK4W,IAAMA,EACX5W,KAAKiL,QAAUA,CACjB,E,EAEA,EAAA9K,IAAA,SAAAa,MAMA,SAAO6V,EAAOC,GACZC,GAAgB5P,KAAI8O,MAApBc,GAAeC,GAASH,GAC1B,GAEA,CAAA1W,IAAA,YAAAa,MAOA,WAAY,IAAAiW,EAAA,KACJJ,EAAQE,GAAgB7P,QAG9B,GAFA6P,GAAgBvT,OAAS,GAEpBqT,IAAUA,EAAMrT,OACnB,MAAO,CAAE0T,cAAe,IAG1B,IAIwB7J,EAJlB8J,EAAYN,EAAM,IAAMA,EAAM,GAAGM,UAAa,CAAC,EAE/CC,EAAW,IAAI/B,IAAM/H,E,ioBAAA1D,CAERiN,GAAK,IAAxB,IAAAvJ,EAAArI,MAAAoI,EAAAC,EAAAtL,KAAA6H,MAA0B,KAAfwN,EAAIhK,EAAArM,MACPsW,EAAWD,EAAKE,qBAAoB,GAAA7L,OACnC2L,EAAKE,qBAAqBlW,KAAI,KAAAqK,OAAI2L,EAAKE,qBAAqBC,SAC/D,gBAECJ,EAASK,IAAIH,IAChBF,EAAS7M,IAAI+M,EAAU,CACrBI,MAAOL,EAAKE,sBAAwB,CAClClW,KAAM,UACNmW,QAAS,QACTxN,WAAY,IAEd6M,MAAO,KAIXO,EAAS5W,IAAI8W,GAAUT,MAAM1P,KAAKnH,KAAK2X,eAAeN,GACxD,CAAC,OAAA1Q,GAAA2G,EAAAlL,EAAAuE,EAAA,SAAA2G,EAAA1L,GAAA,CAED,MAAO,CACLsV,cAAe,CACb,CACEC,SAAUnX,KAAK4X,mBAAmBT,GAClCU,WAAY5H,MAAMqE,KAAK8C,EAASU,UAAUzH,IAAI,SAAC0H,GAAS,MAAM,CAC5DL,MAAOT,EAAKe,+BAA+BD,EAAUL,OACrDb,MAAOkB,EAAUlB,MAClB,KAIT,GAEA,CAAA1W,IAAA,OAAAa,MAOA,SAAK+J,GAAuB,IAAdqH,EAAOlG,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,CAAC,EACvB,OAAOlM,KAAK4W,IAAIqB,UAAUlN,EAASqH,EACrC,GAEA,CAAAjS,IAAA,iBAAAa,MAOA,SAAeqW,GAAM,IAQMrH,EARNkI,EAAA,KACbC,EAAsB,SAACnO,GAC3B,OAAO3J,OAAO2M,QAAQhD,GAAc,CAAC,GAAGqG,IAAI,SAAAC,GAAA,IAAAoC,EAAAxF,GAAAoD,EAAA,GAAEnQ,EAAGuS,EAAA,GAAE1R,EAAK0R,EAAA,SAAO,CAC7DvS,IAAAA,EACAa,MAAOkX,EAAKE,mBAAmBpX,GAChC,EACH,EAUA,MAAO,CACLqX,QAAShB,EAAKiB,YAAYD,QAC1BE,OAAQlB,EAAKiB,YAAYC,OACzBC,aAAcnB,EAAKmB,cAAgB,GACnCnX,KAAMgW,EAAKhW,KACXoX,KAAMpB,EAAKoB,MAAQ,EACnBC,kBAAmBpC,GAAOC,QAAQc,EAAKsB,WACvC9F,gBAAiByD,GAAOC,QAAQc,EAAKuB,SACrC5O,WAAYmO,EAAoBd,EAAKrN,YACrCgG,QAjBuBA,EAiBCqH,EAAKrH,QAhBrBA,GAAU,IAAIK,IAAI,SAACG,GAAK,MAAM,CACpCqI,aAAcvC,GAAOC,QAAQ/F,EAAMsI,MACnCzX,KAAMmP,EAAMnP,KACZ2I,WAAYmO,EAAoB3H,EAAMxG,YACvC,IAcL,GAEA,CAAA7J,IAAA,qBAAAa,MAOA,SAAmBmW,GAAU,IAAA4B,EAAA,KACrB/O,EAAamN,EAASnN,YAAc,CAAC,EAM3C,MAAO,CACLA,WANgB3J,OAAO2M,QAAQhD,GAAYqG,IAAI,SAAA2C,GAAA,IAAAY,EAAA1G,GAAA8F,EAAA,GAAE7S,EAAGyT,EAAA,GAAE5S,EAAK4S,EAAA,SAAO,CAClEzT,IAAAA,EACAa,MAAO+X,EAAKX,mBAAmBpX,GAChC,GAKH,GAEA,CAAAb,IAAA,iCAAAa,MAOA,SAA+B0W,GAAO,IAAAsB,EAAA,KACpC,MAAO,CACL3X,KAAMqW,EAAMrW,MAAQ,GACpBmW,QAASE,EAAMF,SAAW,GAC1BxN,YAAa0N,EAAM1N,YAAc,IAAIqG,IAAI,SAAC4I,GAAI,MAAM,CAClD9Y,IAAK8Y,EAAK9Y,IACVa,MAAOgY,EAAKZ,mBAAmBa,EAAKjY,OACrC,GAEL,GAEA,CAAAb,IAAA,qBAAAa,MAOA,SAAmBA,GAAO,IAAAkY,EAAA,KACxB,GAAIlY,QACF,MAAO,CAAEmY,YAAa,IAGxB,IAAM/I,EAAI9O,GAAUN,GAEpB,MAAa,WAAToP,EACK,CAAE+I,YAAanY,GACJ,WAAToP,EACLnO,OAAOmX,UAAUpY,GACZ,CAAEqY,SAAUrY,EAAMQ,YAElB,CAAE8X,YAAatY,GAEN,YAAToP,EACF,CAAEmJ,UAAWvY,GACXiP,MAAMzD,QAAQxL,GAChB,CACLwY,WAAY,CACV1B,OAAQ9W,EAAMqP,IAAI,SAACjE,GAAC,OAAK8M,EAAKd,mBAAmBhM,EAAE,KAGrC,WAATgE,EACF,CACLqJ,YAAa,CACX3B,OAAQzX,OAAO2M,QAAQhM,GAAOqP,IAAI,SAAAyD,GAAA,IAAAE,EAAA9G,GAAA4G,EAAA,GAAE3H,EAAC6H,EAAA,GAAE5H,EAAC4H,EAAA,SAAO,CAC7C7T,IAAKgM,EACLnL,MAAOkY,EAAKd,mBAAmBhM,GAChC,KAKA,CAAE+M,YAAa5S,OAAOvF,GAC/B,I,8FAAC,CAjMsB,GAoMZ+V,GAAkB,GCnL/B,QAAiB2C,IAjBjB,WAAyB,IACnBC,EAAc,IAAIC,WADN1N,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,IAMnB,OAJA2N,OAAOC,gBAAgBH,GACT1J,MAAMqE,KAAKqF,EAAa,SAACI,GAAI,OACzCA,EAAKvY,SAAS,IAAIwY,SAAS,EAAG,IAAI,GAClCC,KAAK,GAET,G,44CCXA,IAAMC,GAAc,iBAEPC,GAAO,WASjB,O,EAND,SAAAA,EAAYjL,EAASjE,I,4FAASmE,CAAA,KAAA+K,GAAAC,GAAA,2BAC5Bpa,KAAKiL,QAAUA,EACfjL,KAAKkP,QAAUA,EACflP,KAAKoG,OAAS8I,EAAQ9I,OACtBpG,KAAKqa,QAAU,KACfra,KAAKsa,YAAc,CAAC,CACtB,E,EAAC,EAAAna,IAAA,OAAAa,MAED,WAAiB,IAAZuZ,EAAKrO,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,CAAC,EACZ,OAAIlM,KAAKqa,UAGTra,KAAKwa,cAAgBxa,KAAKya,gBAE1Bza,KAAK0a,sBAAsBH,IAJlBva,IAOX,GAAC,CAAAG,IAAA,aAAAa,MAED,WACE,IACE,IAAM2Z,EAAoB3a,KAAKoG,OAAOwU,eAAeC,QAAQX,IAE7D,IAAKS,EACH,OAAO,KAGT3a,KAAKqa,QAAUxV,KAAKK,MAAMyV,EAC5B,CAAE,MAAAG,GACA,OAAO,IACT,CACA,OAAO9a,IACT,GAAC,CAAAG,IAAA,gBAAAa,MAED,WAME,OALAhB,KAAKqa,QAAU,CACbU,GAAIA,GAAGrB,MACPsB,UAAWrQ,KAAKpC,OAGXvI,KAAKib,WAAWjb,KAAKqa,QAC9B,GAAC,CAAAla,IAAA,aAAAa,MAED,SAAWqZ,GACT,IAAMa,EAAgBrW,KAAKF,UAAU0V,GAErC,IACEra,KAAKoG,OAAOwU,eAAeO,QAAQjB,GAAagB,EAClD,CAAE,MAAAE,GACA,OAAO,IACT,CACA,OAAOpb,IACT,GAAC,CAAAG,IAAA,aAAAK,IAED,WACE,OAAOR,KAAKsa,WACd,GAAC,CAAAna,IAAA,gBAAAa,MAED,SAAcgJ,GAEZ,OADAhK,KAAKsa,YAAWhJ,GAAAA,GAAA,GAAQtR,KAAKsa,aAAgBtQ,GACtChK,IACT,GAAC,CAAAG,IAAA,UAAAa,MAED,SAAQqa,GAMN,OALArb,KAAKsb,cAAc,CACjB,UAAWD,aAAI,EAAJA,EAAMN,GACjB,aAAcM,aAAI,EAAJA,EAAME,MACpB,aAAaF,aAAI,EAAJA,EAAMha,QAAQga,aAAI,EAAJA,EAAMG,YAE5Bxb,IACT,GAAC,CAAAG,IAAA,wBAAAa,MAED,SAAsBuZ,GAAO,IAAAkB,EAAAC,EAAAC,EAY3B,OAXA3b,KAAKsb,cAAahK,GAAC,CACjB,aAActR,KAAKqa,QAAQU,GAC3B,iBAAyC,QAAzBU,EAAEpV,UAAUuV,qBAAa,IAAAH,OAAA,EAAvBA,EAAyBI,OAC3C,mBAAoBxV,UAAUyV,SAC9B,iBAAyC,QAAzBJ,EAAErV,UAAUuV,qBAAa,IAAAF,OAAA,EAAvBA,EAAyBK,OAC3C,mBAA2C,QAAzBJ,EAAEtV,UAAUuV,qBAAa,IAAAD,OAAA,EAAvBA,EAAyBK,SAC7C,iBAAkB,aAClB,6BAA8B,aAC9B,sBAAuB3V,UAAUC,WAC9BiU,IAEEva,IACT,I,8FAAC,CAxFiB,GCJhBoL,GAAM,WAAO,EAEX6Q,GAAS,CACb1Z,MAAO,EACPC,KAAM,EACN0Z,KAAM,EACNxZ,MAAO,EACPyZ,QAAS,GAGLzV,GAAS,CACbhE,MAAO,WAAF,QAAAqT,EAAA7J,UAAA1I,OAAM6D,EAAI,IAAA4I,MAAA8F,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ3O,EAAI2O,GAAA9J,UAAA8J,GAAA,OAAK5K,GAAI,QAAS/D,EAAK,EACtC6U,KAAM,WAAF,QAAAE,EAAAlQ,UAAA1I,OAAM6D,EAAI,IAAA4I,MAAAmM,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJhV,EAAIgV,GAAAnQ,UAAAmQ,GAAA,OAAKjR,GAAI,OAAQ/D,EAAK,EACpC7E,KAAM,WAAF,QAAA8Z,EAAApQ,UAAA1I,OAAM6D,EAAI,IAAA4I,MAAAqM,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJlV,EAAIkV,GAAArQ,UAAAqQ,GAAA,OAAKnR,GAAI,OAAQ/D,EAAK,EACpC9E,MAAO,WAAF,QAAAia,EAAAtQ,UAAA1I,OAAM6D,EAAI,IAAA4I,MAAAuM,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJpV,EAAIoV,GAAAvQ,UAAAuQ,GAAA,OAAKrR,GAAI,QAAS/D,EAAK,EACtC+D,IAAK,WAAF,QAAAsR,EAAAxQ,UAAA1I,OAAM6D,EAAI,IAAA4I,MAAAyM,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJtV,EAAIsV,GAAAzQ,UAAAyQ,GAAA,OAAKvR,GAAI,OAAQ/D,EAAK,EACnCuV,KAAM,SAAFtM,GAAoB,IAAfuM,EAAQvM,EAARuM,SACPzR,GAAM,SAAUpC,EAAO3B,GACjB4U,GAAOjT,GAASiT,GAAOY,KAE3BxV,EAAKyV,QAAQ,YAGbC,QAAQ/T,GAAOiN,MAAM8G,QAAS1V,GAChC,CACF,GAGF,M,wsDC1BO,IAAM2V,GAAa,WAMvB,O,EALD,SAAAA,EAAYC,GAAwB,IAAdhS,EAAOiB,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,CAAC,G,4FAACkD,CAAA,KAAA4N,GAChChd,KAAKid,SAAWA,EAChBjd,KAAKiL,QAAUA,EACfjL,KAAKkd,aAAe,IAAI7H,IACxBrV,KAAKmd,WAAa,CAACnd,KAAKod,cAAcC,KAAKrd,MAC7C,E,EAAC,EAAAG,IAAA,eAAAa,MAED,SAAasc,GACXtd,KAAKmd,WAAWL,QAAQQ,EAC1B,GAAC,CAAAnd,IAAA,gBAAAa,MAED,SAAcqW,GACRrX,KAAKiL,QAAQsS,eACfvd,KAAKiL,QAAQsS,cAAc,CAAElG,KAAMA,GAEvC,GAAC,CAAAlX,IAAA,kBAAAa,MAED,SAAgBqW,GAAM,IACmBhK,EADnBC,EAAA1D,GACI5J,KAAKmd,YAAU,IAAvC,IAAA7P,EAAArI,MAAAoI,EAAAC,EAAAtL,KAAA6H,MAAyC,KAA9B2T,EAASnQ,EAAArM,MAClB,IACEwc,EAAUnG,EACZ,CAAE,MAAOjV,GACPsE,GAAOhE,MAAM,wCAAyCN,EACxD,CACF,CAAC,OAAAuE,GAAA2G,EAAAlL,EAAAuE,EAAA,SAAA2G,EAAA1L,GAAA,CACH,GAAC,CAAAzB,IAAA,UAAAa,MAED,SAAQqW,EAAMoG,GACZzd,KAAKkd,aAAa3S,IAAI8M,EAAKA,KAAKiB,YAAYC,OAAQlB,EACtD,GAAC,CAAAlX,IAAA,QAAAa,MAED,SAAMqW,GACJrX,KAAK0d,gBAAgBrG,EAAKA,MAC1BrX,KAAKid,SAASU,OAAO,CAACtG,EAAKsG,WAC3B3d,KAAKkd,aAAa3H,OAAO8B,EAAKA,KAAKiB,YAAYC,OACjD,I,8FAAC,CApCuB,G,mtDCAnB,IAAMqF,GAAI,WAYd,O,EAXD,SAAAA,EAAY3S,GAUV,O,4FAVmBmE,CAAA,KAAAwO,GACnB5d,KAAK6d,eAAiB5S,EAAQ4S,eAC9B7d,KAAK8d,iBAAiB7S,GAEtBjL,KAAK+d,cAAgB9S,EAAQ8S,cAC7B/d,KAAK+d,cAAcC,QAAQhe,KAAMiL,EAAQlF,SAErCkF,EAAQjB,YACVhK,KAAKsb,cAAcrQ,EAAQjB,YAEtBhK,IACT,E,EAAC,EAAAG,IAAA,mBAAAa,MAED,SAAiBiK,GAAS,IAAAgT,EACxBje,KAAKqX,KAAO,CACVhW,KAAM4J,EAAQ5J,KACdoX,KAAMxN,EAAQwN,KACdH,YAAarN,EAAQqN,YACrBE,aAAcvN,EAAQuN,aACtBG,UAAW1N,EAAQ0N,WAAarC,GAAO/N,IAAI0C,EAAQ4S,gBACnDjF,QAAS,CAAC,EAAG,GACbsF,OAAQ,CAAEC,KAAM,EAAG/Y,QAAS,IAC5B4E,WAAY,CAAE,aAA6B,QAAjBiU,EAAEhT,EAAQoP,eAAO,IAAA4D,OAAA,EAAfA,EAAiBlD,IAC7CqD,MAAO,GACPpO,OAAQ,GACRqD,SAAU,EACVgL,OAAO,EACPlH,SAAUlM,EAAQkM,SAClBI,qBAAsBtM,EAAQyM,MAC9B4G,uBAAwB,EACxBC,mBAAoB,EACpBC,kBAAmB,EAEvB,GAAC,CAAAre,IAAA,cAAAa,MAED,WACE,OAAOhB,KAAKqX,KAAKiB,WACnB,GAAC,CAAAnY,IAAA,SAAAK,IAED,WACE,OAAOR,KAAKqX,KAAKiB,YAAYC,MAC/B,GAAC,CAAApY,IAAA,UAAAK,IAED,WACE,OAAOR,KAAKqX,KAAKiB,YAAYD,OAC/B,GAAC,CAAAlY,IAAA,eAAAa,MAED,SAAab,EAAKa,GAChB,OAAa,MAATA,GAAiBhB,KAAKqX,KAAKgH,OACZ,IAAfle,EAAIqD,SAERxD,KAAKqX,KAAKrN,WAAW7J,GAAOa,GAHiBhB,IAK/C,GAAC,CAAAG,IAAA,gBAAAa,MAED,SAAcgJ,GACZ,IAAK,IAALyU,EAAA,EAAAC,EAAqBre,OAAO2M,QAAQhD,GAAWyU,EAAAC,EAAAlb,OAAAib,IAAE,CAA5C,IAAAE,EAAAzR,GAAAwR,EAAAD,GAAA,GAAOtS,EAACwS,EAAA,GAAEvS,EAACuS,EAAA,GACd3e,KAAK4e,aAAazS,EAAGC,EACvB,CACA,OAAOpM,IACT,GAAC,CAAAG,IAAA,WAAAa,MAED,SAASK,GAA6B,IAAvB2I,EAAUkC,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAG4M,EAAI5M,UAAA1I,OAAA,EAAA0I,UAAA,QAAA/D,EAClC,OAAInI,KAAKqX,KAAKgH,OAEdre,KAAKqX,KAAKrH,OAAO7I,KAAK,CACpB9F,KAAAA,EACA2I,WAAAA,EACA8O,KAAMA,GAAQxC,GAAO/N,MACrB+V,uBAAwB,IANEte,IAU9B,GAAC,CAAAG,IAAA,cAAAa,MAED,WACE,OAA2B,IAApBhB,KAAKqX,KAAKgH,KACnB,GAAC,CAAAle,IAAA,MAAAa,MAED,SAAIgJ,EAAY8O,GACV9O,GAAYhK,KAAKsb,cAActR,GACnChK,KAAKqX,KAAKuB,QAAUE,GAAQxC,GAAO/N,IAAIvI,KAAK6d,gBAC5C7d,KAAKqX,KAAKgH,OAAQ,EAClBre,KAAK+d,cAAcc,MAAM7e,KAC3B,GAAC,CAAAG,IAAA,SAAAa,MAED,WACE,OAAOhB,KAAKqX,IACd,I,8FAAC,CAzFc,G,44CCCV,IAAMyH,GAAM,WAIhB,O,EAHD,SAAAA,EAAY5P,EAAS6O,I,4FAAe3O,CAAA,KAAA0P,GAClC9e,KAAK+d,cAAgBA,EACrB/d,KAAKkP,QAAUA,CACjB,E,EAAC,EAAA/O,IAAA,YAAAa,MAED,SACEK,GAGA,IAAA0d,EAAAC,EAAAC,EAII5G,EAGAG,EATJvN,EAAOiB,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,CAAC,EACXnG,EAAOmG,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAGlM,KAAKkP,QAAQgQ,eAAeC,SAEhCC,EAAapf,KAAKkP,QAAQmQ,QAAQtZ,GAClCuZ,EAAoBF,aAAU,EAAVA,EAAY9G,cAChCC,EAASwC,GAAGrB,IAAI,GAGlB6F,EAAa,KAEbD,GACFjH,EAAUiH,EAAkBjH,QAC5BkH,EAAaD,EAAkBC,WAC/B/G,EAAe8G,EAAkB/G,QAEjCF,EAAU0C,GAAGrB,IAAI,IAGnB,IACMpB,EAAc,CAAED,QAAAA,EAASE,OAAAA,EAAQiH,WAZtB,EAYkCD,WAAAA,GAC7CpI,EAAW,CACfnN,WAAUsH,GAAAA,GAAA,IACiB,QAArByN,EAAA/e,KAAKkP,QAAQiI,gBAAQ,IAAA4H,OAAA,EAArBA,EAAuB/U,aAAc,CAAC,IACtB,QAAhBgV,EAAA/T,EAAQkM,gBAAQ,IAAA6H,OAAA,EAAhBA,EAAkBhV,aAAc,CAAC,IAiBzC,OAba,IAAI4T,GAAK,CACpBzG,SAAUA,EACVO,MAAO1X,KAAKkP,QAAQwI,MACpB2C,QAA6B,QAAtB4E,EAAEjf,KAAKkP,QAAQmL,eAAO,IAAA4E,OAAA,EAApBA,EAAsB5E,QAC/BtU,QAAAA,EACAuS,YAAAA,EACAjX,KAAAA,EACAoX,KAhBW,EAiBXD,aAAAA,EACAuF,cAAe/d,KAAK+d,cACpBpF,UAAW1N,EAAQ0N,UACnBkF,eAAgB5S,EAAQ4S,gBAG5B,I,8FAAC,CAjDgB,G,44CCInB,ITyBiC1d,GSzB3Bsf,ITyB2Btf,GSzBC,2BT2BzBW,OAAO4e,IAAIvf,KSzBCwf,GAAO,WAUzB,O,EATD,SAAAA,EAAYC,EAAShJ,EAAK3L,I,4FAASmE,CAAA,KAAAuQ,GACjC3f,KAAK4W,IAAMA,EACX5W,KAAKiL,QAAUA,EACfjL,KAAKoG,OAASwZ,EAEV5f,KAAKoG,OAAOwU,iBACd5a,KAAKqa,QAAU,IAAIF,GAAQna,KAAMiL,IAEnCjL,KAAK6f,cACP,E,EAAC,EAAA1f,IAAA,YAAAa,MAED,SAAUiK,GAERjL,KAAKiL,QAAUA,CACjB,GAAC,CAAA9K,IAAA,cAAAa,MAED,WACMhB,KAAKqa,SACPra,KAAKqa,QAAQuC,MAEjB,GAAC,CAAAzc,IAAA,YAAAK,IAED,WACE,OAAIR,KAAKqa,QACAra,KAAKqa,QAAQA,QAAQU,GAEvB,IACT,GAAC,CAAA5a,IAAA,WAAAK,IAED,WAAe,IAAAsf,EAAAC,EACb,MAAO,CACL/V,WAAUsH,GAAAA,GAAA,GACJtR,KAAKiL,QAAQkM,UAAY,CAAC,GAAC,IAC/B,sBACmC,QADd2I,EACC,QADDC,EACnB/f,KAAKiL,QAAQF,eAAO,IAAAgV,OAAA,EAApBA,EAAsBC,mBAAW,IAAAF,EAAAA,EAAI9f,KAAKiL,QAAQ+U,cAG1D,GAAC,CAAA7f,IAAA,QAAAK,IAED,WACE,MAAO,CACLa,KAAM,qBACNmW,QAASxX,KAAKiL,QAAQuM,QAE1B,GAAC,CAAArX,IAAA,QAAAa,MAED,WAAkB,IAAZif,EAAK/T,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,GACZ,OAAO6O,GAAGrB,IAAIuG,EAChB,GAAC,CAAA9f,IAAA,eAAAa,MAED,WACEhB,KAAKkf,eAAiB,IAAIzJ,GAC1BzV,KAAKid,SAAW,IAAItG,GAAa3W,KAAK4W,IAAK5W,KAAKiL,SAChDjL,KAAK+d,cAAgB,IAAIf,GAAchd,KAAKid,SAAUjd,KAAKiL,QAAQiE,SACnElP,KAAKkgB,OAAS,IAAIpB,GAAO9e,KAAMA,KAAK+d,cACtC,GAAC,CAAA5d,IAAA,YAAAa,MAED,WACE,OAAOhB,KAAKkgB,MACd,GAAC,CAAA/f,IAAA,mBAAAa,MAED,SAAiBsc,GACftd,KAAK+d,cAAcoC,aAAa7C,EAClC,GAAC,CAAAnd,IAAA,UAAAa,MAED,WACE,OADakL,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAGlM,KAAKkf,eAAeC,UACrBiB,SAASX,GAC1B,GAAC,CAAAtf,IAAA,UAAAa,MAED,WAAsD,IAA9C+E,EAAOmG,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAGlM,KAAKkf,eAAeC,SAAU9H,EAAInL,UAAA1I,OAAA,EAAA0I,UAAA,QAAA/D,EAClD,OAAOpC,EAAQsa,SAASZ,GAAUpI,EACpC,GAAC,CAAAlX,IAAA,YAAAa,MAED,SAAUK,GAA4D,IAAtD4J,EAAOiB,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAGnG,EAAOmG,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAGlM,KAAKkf,eAAeC,SAC1D,OAAOnf,KAAKkgB,OAAOvQ,UAAUtO,EAAM4J,EAASlF,EAC9C,GAAC,CAAA5F,IAAA,OAAAa,MAED,SAAK+E,EAAS6P,EAAIC,GAAkB,QAAAyK,EAAAvK,EAAA7J,UAAA1I,OAAN6D,EAAI,IAAA4I,MAAA8F,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ3O,EAAI2O,EAAA,GAAA9J,UAAA8J,GAChC,OAAOsK,EAAAtgB,KAAKkf,gBAAeqB,KAAItK,MAAAqK,EAAA,CAACva,EAAS6P,EAAIC,GAAOnK,OAAKrE,GAC3D,GAAC,CAAAlH,IAAA,WAAAa,MAED,SAASK,EAAM4J,EAAS2K,EAAIC,GAC1B,IAAMwB,EAAOrX,KAAK2P,UAAUtO,EAAM4J,GAClC,OAAOjL,KAAKugB,KACVvgB,KAAKwgB,QAAQxgB,KAAKkf,eAAeC,SAAU9H,GAC3CzB,EACAC,EACAwB,EAEJ,I,8FAAC,CA1FyB,G,6oDCN5B,SAASoJ,GAAI1V,EAAS2V,GACpB,MAAO,CAAC3V,EAASwB,EAAYxB,EAAS2V,GACxC,CAEA,SAASC,GAAaC,EAAQC,GAC5B,IAAI3Y,EAAM0Y,EAAOpd,OACjB,OAAI0E,EAAc,EAAR2Y,EACDD,EAAO1Z,MAAM,EAAG2Z,GAAOnV,OAAOkV,EAAO1Z,MAAMgB,EAAM2Y,IAEnDD,CACT,CAEA,SAASE,GAAe/V,EAAS2V,EAAYG,GAC3CA,OAAyB,IAAVA,EAAwB,GAAKA,EAC5C,IACID,EADA5P,EAAOjG,EAAQhC,KAAKiI,KAExB,GAAIA,EAAK+P,YAAa,CACpB,IACyB1T,EADIC,EAAA1D,GAAjBoH,EAAK+P,aACQ,IAAzB,IAAAzT,EAAArI,MAAAoI,EAAAC,EAAAtL,KAAA6H,MAA2B,KAAhBmX,EAAK3T,EAAArM,MAEd4f,EAASD,GADTC,EAASI,EAAMJ,OACeC,GAC9BG,EAAMJ,OAASA,CACjB,CAAC,OAAAja,GAAA2G,EAAAlL,EAAAuE,EAAA,SAAA2G,EAAA1L,GAAA,CACH,MAAWoP,EAAKgQ,QAEdJ,EAASD,GADTC,EAAS5P,EAAKgQ,MAAMJ,OACUC,GAC9B7P,EAAKgQ,MAAMJ,OAASA,GAEtB,MAAO,CAAC7V,EAASwB,EAAYxB,EAAS2V,GACxC,CAEA,SAASO,GAAmB/Y,EAAKuB,GAC/B,OAAKA,GAGDA,EAAIjG,OAAS0E,EACRuB,EAAIvC,MAAM,EAAGgB,EAAM,GAAGwD,OAAO,OAH7BjC,CAMX,CAEA,SAASyX,GAAgBhZ,EAAK6C,EAAS2V,GAarC,OADA3V,EAAUsD,EAAStD,EAXnB,SAASoW,EAAUhV,EAAGC,EAAGrF,GACvB,OAAQwF,EAAWH,IACjB,IAAK,SACH,OAAO6U,GAAmB/Y,EAAKkE,GACjC,IAAK,SACL,IAAK,QACH,OAAOiC,EAASjC,EAAG+U,EAAWpa,GAChC,QACE,OAAOqF,EAEb,GAEO,CAACrB,EAASwB,EAAYxB,EAAS2V,GACxC,CAEA,SAASU,GAAkBC,GASzB,OARIA,EAAUC,mBACLD,EAAUC,UAAUC,YAC3BF,EAAUC,UAAUlc,QAAU6b,GAC5B,IACAI,EAAUC,UAAUlc,UAGxBic,EAAUT,OAASD,GAAaU,EAAUT,OAAQ,GAC3CS,CACT,CAEA,SAASG,GAAQzW,EAAS2V,GACxB,IAAI1P,EAAOjG,EAAQhC,KAAKiI,KACxB,GAAIA,EAAK+P,YAAa,CACpB,IAC4CrX,EADxC+X,EAAQzQ,EAAK+P,YAAYpX,EAAAC,GACA6X,EAAMzU,WAAS,IAA5C,IAAArD,EAAA1E,MAAAyE,EAAAC,EAAA3H,KAAA6H,MAA8C,KAAA6X,EAAAxU,GAAAxD,EAAA1I,MAAA,GAAlCmM,EAAKuU,EAAA,GAAEV,EAAKU,EAAA,GACtBD,EAAMtU,GAASiU,GAAkBJ,EACnC,CAAC,OAAAra,GAAAgD,EAAAvH,EAAAuE,EAAA,SAAAgD,EAAA/H,GAAA,CACH,MAAWoP,EAAKgQ,QACdhQ,EAAKgQ,MAAQI,GAAkBpQ,EAAKgQ,QAEtC,MAAO,CAACjW,EAASwB,EAAYxB,EAAS2V,GACxC,CAEA,SAASiB,GAAgB5W,EAAS6W,GAChC,OfmPF,SAAqBC,GAanB,IAHA,IAAIpO,EAAQ,EACRjQ,EAASqe,EAAOre,OAEXF,EAAI,EAAGA,EAAIE,EAAQF,IAAK,CAC/B,IAAI6a,EAAO0D,EAAOC,WAAWxe,GACzB6a,EAAO,IAET1K,GAAgB,EACP0K,EAAO,KAEhB1K,GAAgB,EACP0K,EAAO,QAEhB1K,GAAgB,EAEpB,CAEA,OAAOA,CACT,Ce/QSlH,CAAcxB,GAAW6W,CAClC,CAyBA,QACEG,SAxBF,SAAkBhX,EAAS2V,EAAYkB,GACrCA,OAA6B,IAAZA,EAA0B,OAAaA,EAWxD,IAVA,IAQII,EAAUC,EAASxd,EARnByd,EAAa,CACfzB,GACAK,GACAI,GAAgB7D,KAAK,KAAM,MAC3B6D,GAAgB7D,KAAK,KAAM,KAC3B6D,GAAgB7D,KAAK,KAAM,KAC3BmE,IAIMQ,EAAWE,EAAWlN,SAI5B,GAFAjK,GADAkX,EAAUD,EAASjX,EAAS2V,IACV,IAClBjc,EAASwd,EAAQ,IACNvf,QAAUif,GAAgBld,EAAOzD,MAAO4gB,GACjD,OAAOnd,EAGX,OAAOA,CACT,EAMEgc,IAAAA,GACAK,eAAAA,GACAI,gBAAAA,GACAD,mBAAAA,ICrHF,SAASkB,GAAapZ,GACpB,IAAKwD,EAASxD,EAAKhD,QAAS,UAAW,CACrC,IAAIqc,EAAgB7V,EAAYxD,EAAKhD,SACjCqc,EAAc1f,MAChBqG,EAAKhD,QAAU,uCAEfgD,EAAKhD,QAAUqc,EAAcphB,OAAS,GAEpC+H,EAAKhD,QAAQvC,OAAS,MACxBuF,EAAKhD,QAAUgD,EAAKhD,QAAQsc,OAAO,EAAG,KAE1C,CACA,MAAO,CACLtZ,KAAMA,EAEV,CAEA,SAASuZ,GAAwBrX,EAASsX,EAAU1f,GAClD,IAAI2B,EAAW+d,EAAS/d,SACpBF,EAAWie,EAASje,SACpBC,EAAOge,EAAShe,KAChBG,EAAO6d,EAAS7d,KAChB8d,EAASD,EAASC,OAClBC,EAAUxX,EAAQwX,QAClBC,EAuBN,SAAyBzX,GACvB,IAAI2U,EACiB,oBAAXxZ,QAA0BA,QACjB,oBAATkP,MAAwBA,KAC9BoN,EAAYzX,EAAQ0X,kBAAoB,WACf,IAAlB/C,EAAQgD,QAAuBF,EAAY,YAChB,IAA3B9C,EAAQiD,iBAAgCH,EAAY,SAC/D,OAAOA,CACT,CA/BkBI,CAAgB7X,GAE5B8X,EAAQ9X,EAAQ8X,MACpB,GAAI9X,EAAQ+X,SAAU,CACpB,IAAIC,EAAOpgB,EAAIqC,MAAM+F,EAAQ+X,UAC7Bxe,EAAWye,EAAKze,SAChBF,EAAW2e,EAAK3e,SAChBC,EAAO0e,EAAK1e,KACZG,EAAOue,EAAKC,SACZV,EAASS,EAAKT,MAChB,CACA,MAAO,CACLC,QAASA,EACTje,SAAUA,EACVF,SAAUA,EACVC,KAAMA,EACNG,KAAMA,EACN8d,OAAQA,EACRO,MAAOA,EACPL,UAAWA,EAEf,CAYA,SAASS,GAAiBT,EAAW1Q,GACnC,IAAI1N,EAAWoe,EAAUpe,UAAY,SACjCC,EACFme,EAAUne,OACI,UAAbD,EAAuB,GAAkB,WAAbA,EAAwB,SAAM6D,GACzD3D,EAAWke,EAAUle,SACrBE,EAAOge,EAAUhe,KACjB+d,EAAUC,EAAUD,QACpBW,EAAeV,EAAUA,UAU7B,OATIA,EAAUF,SACZ9d,GAAcge,EAAUF,QAEtBE,EAAUK,QACZre,EAAOJ,EAAW,KAAOE,EAAWE,EACpCF,EAAWke,EAAUK,MAAMM,MAAQX,EAAUK,MAAMve,SACnDD,EAAOme,EAAUK,MAAMxe,KACvBD,EAAWoe,EAAUK,MAAMze,UAAYA,GAElC,CACLme,QAASA,EACTne,SAAUA,EACVE,SAAUA,EACVE,KAAMA,EACNH,KAAMA,EACNyN,OAAQA,EACR0Q,UAAWU,EAEf,C,o7BCrFA,IAAAhhB,EAAAjB,EAAAwH,EAAA,mBAAA7H,OAAAA,OAAA,GAAAkB,EAAA2G,EAAA2a,UAAA,aAAAljB,EAAAuI,EAAA5H,aAAA,yBAAAuC,EAAAqF,EAAA3G,EAAA5B,EAAAkD,GAAA,IAAAoF,EAAA1G,GAAAA,EAAArB,qBAAA4iB,EAAAvhB,EAAAuhB,EAAAlf,EAAAhE,OAAA4L,OAAAvD,EAAA/H,WAAA,OAAA6iB,GAAAnf,EAAA,mBAAAsE,EAAA3G,EAAA5B,GAAA,IAAAkD,EAAAoF,EAAArE,EAAAzC,EAAA,EAAA6hB,EAAArjB,GAAA,GAAAsjB,GAAA,EAAAC,EAAA,CAAAF,EAAA,EAAAzhB,EAAA,EAAAoK,EAAAhK,EAAA+H,EAAA/B,EAAAxG,EAAAwG,EAAAiV,KAAAjb,EAAA,GAAAgG,EAAA,SAAAjH,EAAAwH,GAAA,OAAArF,EAAAnC,EAAAuH,EAAA,EAAArE,EAAAjC,EAAAuhB,EAAA3hB,EAAA2G,EAAAwB,CAAA,YAAA/B,EAAAO,EAAA3G,GAAA,IAAA0G,EAAAC,EAAAtE,EAAArC,EAAAb,EAAA,GAAAuiB,GAAA9hB,IAAAxB,GAAAe,EAAAsiB,EAAAjgB,OAAArC,IAAA,KAAAf,EAAAkD,EAAAmgB,EAAAtiB,GAAAiH,EAAAub,EAAAF,EAAAlgB,EAAAD,EAAA,GAAAqF,EAAA,GAAAvI,EAAAmD,IAAAvB,KAAAqC,EAAAf,GAAAoF,EAAApF,EAAA,OAAAoF,EAAA,MAAApF,EAAA,GAAAA,EAAA,GAAAlB,GAAAkB,EAAA,IAAA8E,KAAAhI,EAAAuI,EAAA,GAAAP,EAAA9E,EAAA,KAAAoF,EAAA,EAAAib,EAAAvX,EAAApK,EAAA2hB,EAAA3hB,EAAAsB,EAAA,IAAA8E,EAAA7E,IAAAnD,EAAAuI,EAAA,GAAArF,EAAA,GAAAtB,GAAAA,EAAAuB,KAAAD,EAAA,GAAAqF,EAAArF,EAAA,GAAAtB,EAAA2hB,EAAA3hB,EAAAuB,EAAAmF,EAAA,OAAAtI,GAAAuI,EAAA,SAAAwB,EAAA,MAAAuZ,GAAA,EAAA1hB,CAAA,iBAAA5B,EAAAqjB,EAAAlgB,GAAA,GAAA3B,EAAA,QAAAgiB,UAAA,oCAAAF,GAAA,IAAAD,GAAArb,EAAAqb,EAAAlgB,GAAAmF,EAAA+a,EAAApf,EAAAd,GAAApC,EAAAuH,EAAA,EAAAtG,EAAAiC,KAAAqf,GAAA,CAAApgB,IAAAoF,EAAAA,EAAA,GAAAA,EAAA,IAAAib,EAAA3hB,GAAA,GAAAoG,EAAAM,EAAArE,IAAAsf,EAAA3hB,EAAAqC,EAAAsf,EAAAvX,EAAA/H,GAAA,OAAAzC,EAAA,EAAA0B,EAAA,IAAAoF,IAAAtI,EAAA,QAAAe,EAAAmC,EAAAlD,GAAA,MAAAe,EAAAA,EAAAN,KAAAyC,EAAAe,IAAA,MAAAuf,UAAA,wCAAAziB,EAAA0I,KAAA,OAAA1I,EAAAkD,EAAAlD,EAAAH,MAAA0H,EAAA,IAAAA,EAAA,YAAAA,IAAAvH,EAAAmC,EAAAugB,SAAA1iB,EAAAN,KAAAyC,GAAAoF,EAAA,IAAArE,EAAAuf,UAAA,oCAAAxjB,EAAA,YAAAsI,EAAA,GAAApF,EAAAlB,CAAA,UAAAjB,GAAAuiB,EAAAC,EAAA3hB,EAAA,GAAAqC,EAAAsE,EAAA9H,KAAAmB,EAAA2hB,MAAAxZ,EAAA,YAAAhJ,GAAAmC,EAAAlB,EAAAsG,EAAA,EAAArE,EAAAlD,CAAA,SAAAS,EAAA,UAAAZ,MAAAG,EAAA0I,KAAA6Z,EAAA,GAAA/a,EAAAvI,EAAAkD,IAAA,GAAAe,CAAA,KAAA8F,EAAA,YAAAoZ,IAAA,UAAAO,IAAA,UAAAC,IAAA,CAAA5iB,EAAAd,OAAA2jB,eAAA,IAAAtb,EAAA,GAAA1G,GAAAb,EAAAA,EAAA,GAAAa,QAAAwhB,GAAAriB,EAAA,GAAAa,EAAA,yBAAAb,GAAAkD,EAAA0f,EAAApjB,UAAA4iB,EAAA5iB,UAAAN,OAAA4L,OAAAvD,GAAA,SAAA9G,EAAAQ,GAAA,OAAA/B,OAAAmK,eAAAnK,OAAAmK,eAAApI,EAAA2hB,IAAA3hB,EAAA6hB,UAAAF,EAAAP,GAAAphB,EAAAhC,EAAA,sBAAAgC,EAAAzB,UAAAN,OAAA4L,OAAA5H,GAAAjC,CAAA,QAAA0hB,EAAAnjB,UAAAojB,EAAAP,GAAAnf,EAAA,cAAA0f,GAAAP,GAAAO,EAAA,cAAAD,GAAAA,EAAAI,YAAA,oBAAAV,GAAAO,EAAA3jB,EAAA,qBAAAojB,GAAAnf,GAAAmf,GAAAnf,EAAAjE,EAAA,aAAAojB,GAAAnf,EAAArC,EAAA,yBAAAwhB,GAAAnf,EAAA,oDAAA8f,GAAA,kBAAAC,EAAA9gB,EAAAL,EAAArB,EAAA,cAAA4hB,GAAAphB,EAAAuG,EAAA3G,EAAAb,GAAA,IAAAmC,EAAAjD,OAAAC,eAAA,IAAAgD,EAAA,gBAAAlB,GAAAkB,EAAA,EAAAkgB,GAAA,SAAAphB,EAAAuG,EAAA3G,EAAAb,GAAA,SAAAf,EAAAuI,EAAA3G,GAAAwhB,GAAAphB,EAAAuG,EAAA,SAAAvG,GAAA,YAAAiiB,QAAA1b,EAAA3G,EAAAI,EAAA,GAAAuG,EAAArF,EAAAA,EAAAlB,EAAAuG,EAAA,CAAA3H,MAAAgB,EAAAzB,YAAAY,EAAAmjB,cAAAnjB,EAAAojB,UAAApjB,IAAAiB,EAAAuG,GAAA3G,GAAA5B,EAAA,UAAAA,EAAA,WAAAA,EAAA,cAAAojB,GAAAphB,EAAAuG,EAAA3G,EAAAb,EAAA,UAAAqjB,GAAAxiB,EAAAb,EAAAiB,EAAAuG,EAAAvI,EAAA+J,EAAAzB,GAAA,QAAApF,EAAAtB,EAAAmI,GAAAzB,GAAArE,EAAAf,EAAAtC,KAAA,OAAAgB,GAAA,YAAAI,EAAAJ,EAAA,CAAAsB,EAAAuG,KAAA1I,EAAAkD,GAAAogB,QAAAC,QAAArgB,GAAAsgB,KAAAhc,EAAAvI,EAAA,UAAAwkB,GAAAxiB,EAAAuG,GAAA,QAAAxH,EAAA,EAAAA,EAAAwH,EAAAnF,OAAArC,IAAA,KAAAf,EAAAuI,EAAAxH,GAAAf,EAAAG,WAAAH,EAAAG,aAAA,EAAAH,EAAAkkB,cAAA,YAAAlkB,IAAAA,EAAAmkB,UAAA,GAAAlkB,OAAAC,eAAA8B,EAAAyiB,GAAAzkB,EAAAD,KAAAC,EAAA,WAAAykB,GAAA1jB,GAAA,IAAAmC,EAAA,SAAAnC,EAAAwH,GAAA,aAAArH,GAAAH,KAAAA,EAAA,OAAAA,EAAA,IAAAiB,EAAAjB,EAAAL,OAAAgkB,aAAA,YAAA1iB,EAAA,KAAAkB,EAAAlB,EAAAvB,KAAAM,EAAAwH,GAAA,wBAAArH,GAAAgC,GAAA,OAAAA,EAAA,UAAAsgB,UAAA,kEAAAjb,EAAApC,OAAAtE,QAAAd,EAAA,CAAA4jB,CAAA5jB,EAAA,0BAAAG,GAAAgC,GAAAA,EAAAA,EAAA,GAEA,IAAM0hB,GAAiB,CACrBxgB,SAAU,kBACVE,KAAM,eACN8d,OAAQ,KACRhL,QAAS,IACTlT,SAAU,SACVC,KAAM,KAGF0gB,GAAqB,CACzBzgB,SAAU,kBACVE,KAAM,kBACN8d,OAAQ,KACRhL,QAAS,IACTlT,SAAU,SACVC,KAAM,KAUF2gB,GAAG,WAsBP,OAjDF9iB,EAuCE,SAAA8iB,EAAYja,EAASyX,EAAWyC,EAAQC,IAvC1C,SAAAjb,EAAAnI,GAAA,KAAAmI,aAAAnI,GAAA,UAAA4hB,UAAA,qCAuCsDxU,CAAA,KAAA8V,GAClDllB,KAAKiL,QAAUA,EACfjL,KAAK0iB,UAAYA,EACjB1iB,KAAK6C,IAAMsiB,EACXnlB,KAAKolB,WAAaA,EAClBplB,KAAKqlB,YAAcpa,EAAQoa,YAC3BrlB,KAAKmjB,iBAAmBmC,GAAcra,EAASka,GAC/CnlB,KAAKulB,qBAAuBC,GAAkBva,EAASka,EACzD,EA/CFxc,EAiDE,EAAAxI,IAAA,eAAAa,MAUA,SAAYsP,GAA6C,IAAA2G,EAAA,KAA1CoO,EAAW/U,EAAX+U,YAAapa,EAAOqF,EAAPrF,QAASF,EAAOuF,EAAPvF,QAASqH,EAAO9B,EAAP8B,QAC5C,OAAO,IAAIqS,QAAQ,SAACC,EAASe,GAC3BxO,EAAKyL,UAAUgD,KAAK,CAClBL,YAAAA,EACApa,QAAAA,EACAF,QAAAA,EACAqH,QAAAA,EACA1K,SAAU,SAACf,EAAKC,GAAI,OAAMD,EAAM8e,EAAO9e,GAAO+d,EAAQ9d,EAAK,GAE/D,EACF,GAEA,CAAAzG,IAAA,WAAAa,MAKA,SAAS+H,EAAMrB,GAAU,IAAAwQ,EAAA,KACjBjN,EAAU0a,GAAyB3lB,KAAKmjB,iBAAkB,QAC1DpY,EAAU4a,GAAqB5c,GAGrC6c,WAAW,WACT1N,EAAKwK,UAAUgD,KAAK,CAClBL,YAAanN,EAAKmN,YAClBpa,QAAAA,EACAF,QAAAA,EACArD,SAAAA,GAEJ,EAAG,EACL,GAEA,CAAAvH,IAAA,YAAAa,OA3FFgB,EA2FEmiB,KAAAlhB,EAMA,SAAA4iB,EAAgB9a,GAAO,IAAAqH,EAAAnH,EAAA6a,EAAA5Z,UAAA,OAAAiY,KAAAC,EAAA,SAAA2B,GAAA,cAAAA,EAAA/jB,EACsD,OADpDoQ,EAAO0T,EAAAtiB,OAAA,QAAA2E,IAAA2d,EAAA,GAAAA,EAAA,GAAG,CAAC,EAC5B7a,EAAU0a,GAAyB3lB,KAAKulB,qBAAsB,QAAOQ,EAAA5b,EAAA,EAEpEnK,KAAKgmB,aAAa,CACvBX,YAAarlB,KAAKqlB,YAClBpa,QAAAA,EACAF,QAAAA,EACAqH,QAAAA,IACA,EAAAyT,EAAA,QAdJI,EA3FF,eAAA9kB,EAAA,KAAAiB,EAAA8J,UAAA,WAAAuY,QAAA,SAAA9b,EAAAvI,GAAA,IAAA+J,EAAAnI,EAAAiU,MAAA9U,EAAAiB,GAAA,SAAA8jB,EAAAlkB,GAAAwiB,GAAAra,EAAAxB,EAAAvI,EAAA8lB,EAAAC,EAAA,OAAAnkB,EAAA,UAAAmkB,EAAAnkB,GAAAwiB,GAAAra,EAAAxB,EAAAvI,EAAA8lB,EAAAC,EAAA,QAAAnkB,EAAA,CAAAkkB,OAAA,MA0GG,SATcE,GAAA,OAAAH,EAAAhQ,MAAC,KAAD/J,UAAA,IAWf,CAAA/L,IAAA,mBAAAa,MAKA,SAAiB+H,EAAMrB,GACrB,IAEI2e,EAFEtb,EAAU4a,GAAqB5c,GASrC,OALEsd,EADErmB,KAAKolB,WACWplB,KAAKolB,WAAWrD,SAAShX,GAEzBpG,EAAUoG,IAGVrI,OACdgF,GACFA,EAAS2e,EAAgB3jB,OAEpB,MAGF2jB,EAAgBrlB,KACzB,GAEA,CAAAb,IAAA,kBAAAa,MAKA,SAAgBslB,EAAa5e,GAC3B,IAAMyb,EAAmBwC,GACvB3lB,KAAKmjB,iBACL,QAEFnjB,KAAK0iB,UAAU6D,gBACbvmB,KAAKqlB,YACLlC,EACAmD,EACA5e,EAEJ,GAAC,CAAAvH,IAAA,YAAAa,MAED,SAAUiK,GACR,IAAM2E,EAAa5P,KAAKiL,QAOxB,OANAjL,KAAKiL,QAAUD,EAAM4E,EAAY3E,GACjCjL,KAAKmjB,iBAAmBmC,GAActlB,KAAKiL,QAASjL,KAAK6C,KACzD7C,KAAKulB,qBAAuBC,GAAkBxlB,KAAKiL,QAASjL,KAAK6C,UAChCsF,IAA7BnI,KAAKiL,QAAQoa,cACfrlB,KAAKqlB,YAAcrlB,KAAKiL,QAAQoa,aAE3BrlB,IACT,IAhKF2I,GAAAic,GAAAxiB,EAAAzB,UAAAgI,GAAAxH,GAAAyjB,GAAAxiB,EAAAjB,GAAAd,OAAAC,eAAA8B,EAAA,aAAAmiB,UAAA,IAAAniB,EAAA,IAAAA,EAAAuG,EAAAxH,EAAAa,EA2FEikB,CAqEC,CArIM,GAwIT,SAASX,GAAcra,EAASpI,GAC9B,OAAO8iB,GAAgC1a,EAAS+Z,GAAgBniB,EAClE,CAEA,SAAS2iB,GAAkBva,EAASpI,GAAK,IAAA2jB,EAEvC,OAAOb,GADP1a,EAAOqG,GAAAA,GAAA,GAAQrG,GAAO,IAAE+X,SAAyB,QAAjBwD,EAAEvb,EAAQiE,eAAO,IAAAsX,OAAA,EAAfA,EAAiBxD,WACHiC,GAAoBpiB,EACtE,CAEA,UClHA,GAxDuB,QAwDvB,GAvDwB,8BAuDxB,GAtDwB,QAsDxB,GArD2B,QAqD3B,GApDkC,QCP5B4jB,GAA8B,eAC9BC,GAAyB,iCACzBC,GAA4B,+BAClC,SAASzhB,GAAMxC,EAAOuI,GACpB,QAAgC,IAArBvI,EAAMkkB,iBAAkE,IAA7BlkB,EAAM,mBAC1D,OA4FJ,SAAoBN,EAAG6I,GACrB,OAAK7I,EAAEwkB,YAAcxkB,EAAEgD,QAAQ6B,SAAS,OAAS7E,EAAEgD,QAAQiF,MAAM,MAAM7G,OAASpB,EAAEwkB,WAAWvc,MAAM,MAAM7G,OAO3G,SAAqBpB,EAAG6I,GAItB,IAHA,IAAM4b,EAAS,oCACTC,EAAQ1kB,EAAEgD,QAAQiF,MAAM,MACxB5F,EAAS,GACNnB,EAAI,EAAG4E,EAAM4e,EAAMtjB,OAAQF,EAAI4E,EAAK5E,GAAK,EAAG,CACnD,IAAM7B,EAAQolB,EAAOzjB,KAAK0jB,EAAMxjB,IAC5B7B,GACFgD,EAAO0C,KAAK,CACV4f,KAAMtlB,EAAM,GACZkE,MAAOlE,EAAM,GACbgf,IAAKqG,EAAMxjB,IAGjB,CACA,OAAO0jB,GAAWviB,EAAQwG,EAC5B,CArBWgc,CAAY7kB,GACXA,EAAEoE,MAsCd,SAAsB9D,EAAOuI,GAC3B,IAAMic,EAAWF,GAEftkB,EAAM8D,MAAM6D,MAAM,MAAM8F,OAAO,SAACxK,GAC9B,QAASA,EAAKlE,MAAMglB,MAAiC9gB,EAAKlE,MAAM,oBAClE,GACAwJ,GAEF,OAAOic,EAAS7W,IAAI,SAAC1K,GACnB,IAIIwhB,EAJEC,EAASzhB,EAAK0E,MAAM,KACpBgd,EAAgBC,GAAgBF,EAAOG,OACvCC,EAAeJ,EAAOpS,SAAW,GACjCyS,EAAeD,EAAa9jB,QAAQ,iCAAkC,MAAMA,QAAQ,aAAc,UAAOyE,EAK/G,OAHIqf,EAAa/lB,MAAM,iBACrB0lB,EAAUK,EAAa9jB,QAAQ,qBAAsB,OAEhD,CACLgkB,SAAUD,EACVpgB,UAHuBc,IAAZgf,GAAqC,8BAAZA,OAA0Chf,EAAYgf,EAAQ9c,MAAM,KAIxG0c,KAAMM,EAAc,GACpB1hB,KAAM0hB,EAAc,IAAMA,EAAc,QAAKlf,EAC7Cwf,IAAKN,EAAc,IAAMA,EAAc,QAAKlf,EAC5CsY,IAAK9a,EAET,EACF,CA7DWiiB,CAAaxlB,EAAG6I,GAkB3B,SAAsB7I,EAAG6I,GAIvB,IAHA,IAAM4b,EAAS,6DACTC,EAAQ1kB,EAAEwkB,WAAWvc,MAAM,MAC3B5F,EAAS,GACNnB,EAAI,EAAG4E,EAAM4e,EAAMtjB,OAAQF,EAAI4E,EAAK5E,GAAK,EAAG,CACnD,IAAM7B,EAAQolB,EAAOzjB,KAAK0jB,EAAMxjB,IAC5B7B,GACFgD,EAAO0C,KAAK,CACVugB,SAAUjmB,EAAM,SAAM0G,EACtB4e,KAAMtlB,EAAM,GACZkE,KAAMlE,EAAM,IAAMA,EAAM,QAAK0G,EAC7BsY,IAAKqG,EAAMxjB,IAGjB,CACA,OAAO0jB,GAAWviB,EAAQwG,EAC5B,CApCW4c,CAAazlB,EAGxB,CAnGW0lB,CAAWplB,EAAOuI,GACtB,GAAIvI,EAAM8D,OAAS9D,EAAM8D,MAAM/E,MAAMilB,IACxC,OA6BJ,SAAqBhkB,EAAOuI,GAC1B,OAAO8c,GAAkBrlB,EAAM8D,MAAOyE,EACxC,CA/BW+c,CAAYtlB,EAAOuI,GACvB,GAAIvI,EAAM8D,MACb,OAwDJ,SAAyB9D,EAAOuI,GAC9B,OAAOgd,GAAsBvlB,EAAM8D,MAAOyE,EAC5C,CA1DWid,CAAgBxlB,EAAOuI,GAC3B,GAAIA,SAAAA,EAASkd,WAChB,MAAO,GAEP,MAAM,IAAI5mB,MAAM,kCACpB,CAOA,SAAS+lB,GAAgBc,GACvB,IAAKA,EAAQnhB,SAAS,KACpB,MAAO,CAACmhB,OAASjgB,OAAWA,GAC9B,IACMkgB,EADS,+BACMjlB,KAAKglB,EAAQ1kB,QAAQ,QAAS,KACnD,MAAO,CAAC2kB,EAAM,GAAIA,EAAM,SAAMlgB,EAAWkgB,EAAM,SAAMlgB,EACvD,CACA,SAAS6e,GAAWF,EAAO7b,GACzB,OAAIA,GAA4B,MAAjBA,EAAQ/D,MACjB+I,MAAMzD,QAAQvB,EAAQ/D,OACjB4f,EAAM5f,MAAM+D,EAAQ/D,MAAM,GAAI+D,EAAQ/D,MAAM,IAC9C4f,EAAM5f,MAAM,EAAG+D,EAAQ/D,OAEzB4f,CACT,CAIA,SAASiB,GAAkBvhB,EAAOyE,GAOhC,OANiB+b,GACfxgB,EAAM6D,MAAM,MAAM8F,OAAO,SAACxK,GACxB,QAASA,EAAKlE,MAAMilB,GACtB,GACAzb,GAEcoF,IAAI,SAAC1K,GACfA,EAAKsB,SAAS,YAChBtB,EAAOA,EAAKjC,QAAQ,aAAc,QAAQA,QAAQ,6BAA8B,KAElF,IAAI4kB,EAAgB3iB,EAAKjC,QAAQ,OAAQ,IAAIA,QAAQ,eAAgB,KAAKA,QAAQ,UAAW,IACvFgC,EAAW4iB,EAAc7mB,MAAM,cACrC6mB,EAAgB5iB,EAAW4iB,EAAc5kB,QAAQgC,EAAS,GAAI,IAAM4iB,EACpE,IAAMjB,EAAgBC,GAAgB5hB,EAAWA,EAAS,GAAK4iB,GAG/D,MAAO,CACLZ,SAHmBhiB,GAAY4iB,QAAiBngB,EAIhD4e,KAHe,CAAC,OAAQ,eAAe9f,SAASogB,EAAc,SAAMlf,EAAYkf,EAAc,GAI9F1hB,KAAM0hB,EAAc,IAAMA,EAAc,QAAKlf,EAC7Cwf,IAAKN,EAAc,IAAMA,EAAc,QAAKlf,EAC5CsY,IAAK9a,EAET,EACF,CAIA,SAASsiB,GAAsBzhB,EAAOyE,GAOpC,OANiB+b,GACfxgB,EAAM6D,MAAM,MAAM8F,OAAO,SAACxK,GACxB,OAAQA,EAAKlE,MAAMklB,GACrB,GACA1b,GAEcoF,IAAI,SAAC1K,GAGnB,GAFIA,EAAKsB,SAAS,aAChBtB,EAAOA,EAAKjC,QAAQ,mDAAoD,QACrEiC,EAAKsB,SAAS,MAAStB,EAAKsB,SAAS,KAInC,CACL,IAAMshB,EAAoB,6JACpBC,EAAU7iB,EAAKlE,MAAM8mB,GACrBd,EAAee,GAAWA,EAAQ,GAAKA,EAAQ,QAAKrgB,EACpDkf,EAAgBC,GAAgB3hB,EAAKjC,QAAQ6kB,EAAmB,KACtE,MAAO,CACLb,SAAUD,EACVV,KAAMM,EAAc,GACpB1hB,KAAM0hB,EAAc,IAAMA,EAAc,QAAKlf,EAC7Cwf,IAAKN,EAAc,IAAMA,EAAc,QAAKlf,EAC5CsY,IAAK9a,EAET,CAfE,MAAO,CACL+hB,SAAU/hB,EAehB,EACF,CC7FA,SAAS8iB,GAA6BC,GACpC,OAAOA,EAAgBrY,IAAI,SAACsY,GAC1B,MAAO,CACLlB,aAAckB,EAAejB,SAC7BrgB,KAAMshB,EAAethB,KACrBuhB,SAAUD,EAAe5B,KACzB8B,WAAYF,EAAehjB,KAC3BmjB,aAAcH,EAAehB,IAC7B3jB,OAAQ2kB,EAAelI,IAE3B,EACF,CCZA,IACIsI,GAAmB,IAAInb,OACzB,6DAOF,SAAS5H,KACP,OAAO,IACT,CAEA,SAASgjB,GAAMC,GACb,IAAIlgB,EAAO,CAAC,EAYZ,OAVAA,EAAKmgB,YAAcD,EAEnBlgB,EAAKlG,IAAMomB,EAAWL,SACtB7f,EAAKpD,KAAOsjB,EAAWJ,WACvB9f,EAAKlD,KAAOojB,EAAWxB,aACvB1e,EAAKnD,OAASqjB,EAAWH,aACzB/f,EAAK1B,KAAO4hB,EAAW5hB,KAEvB0B,EAAKhD,QAdE,KAgBAgD,CACT,CAEA,SAASogB,GAAM7H,EAAW8H,GAqBxB,MAAO,CACL5iB,MArBF,WACE,IDlBkByE,ECkBdoe,EAAc,GAElBD,EAAOA,GAAQ,EAEf,IACEC,EDtBGZ,GAA6Ba,GCsBFhI,EDtBiBrW,GCuBjD,CAAE,MAAOX,GACP+e,EAAc,EAChB,CAIA,IAFA,IAAI7iB,EAAQ,GAEHlD,EAAI8lB,EAAM9lB,EAAI+lB,EAAY7lB,OAAQF,IACzCkD,EAAMW,KAAK,IAAI6hB,GAAMK,EAAY/lB,KAGnC,OAAOkD,CACT,CAGS+iB,GACPnkB,QAASkc,EAAUlc,QACnB/D,KAAMmoB,GAAuBlI,GAC7BmI,SAAUnI,EAAU9a,MACpBkjB,aAAcpI,EAElB,CA2CA,SAASkI,GAAuB9mB,GAC9B,IAAIrB,EAAOqB,EAAMrB,MAAQqB,EAAMrB,KAAKmC,QAAUd,EAAMrB,KAChDsoB,EACFjnB,EAAMoJ,YAAYzK,MAClBqB,EAAMoJ,YAAYzK,KAAKmC,QACvBd,EAAMoJ,YAAYzK,KAEpB,OAAKA,GAASsoB,EAID,UAATtoB,EACKsoB,EAEFtoB,EANEA,GAAQsoB,CAOnB,CAEA,QACE7jB,kBAjHF,WACE,MANqB,GAOvB,EAgHE8jB,gBAxCF,SAAyBC,GACvB,IAAKA,IAAWA,EAAOpoB,MACrB,MAAO,CAAC,wDAAyD,IAEnE,IAAIqoB,EAAgBD,EAAOpoB,MAAMsnB,IAC7BgB,EAAW,YAUf,OARID,IACFC,EAAWD,EAAcA,EAActmB,OAAS,GAKhDqmB,GAJAA,EAASA,EAAOnmB,SACbomB,EAAcA,EAActmB,OAAS,IAAM,IAAMumB,EAAW,IAC7D,KAEcrmB,QAAQ,mBAAoB,KAEvC,CAACqmB,EAAUF,EACpB,EAyBE7jB,cAAAA,GACAd,MA9DF,SAAe9C,EAAGgnB,GAChB,IAAIziB,EAAMvE,EAEV,GAAIuE,EAAIqjB,QAAUrjB,EAAIsjB,MAAO,CAE3B,IADA,IAAIC,EAAa,GACVvjB,GACLujB,EAAW/iB,KAAK,IAAIgiB,GAAMxiB,EAAKyiB,IAC/BziB,EAAMA,EAAIqjB,QAAUrjB,EAAIsjB,MAExBb,EAAO,EAKT,OADAc,EAAW,GAAGA,WAAaA,EACpBA,EAAW,EACpB,CACE,OAAO,IAAIf,GAAMxiB,EAAKyiB,EAE1B,EA6CED,MAAAA,GACAH,MAAAA,I,y/BC3HF,SAASmB,GAAW9hB,EAAM+hB,GACxB,IAAIphB,EAAQX,EAAKW,MACbqhB,EAAW9d,EAASvD,IAAU,EAC9BshB,EAAcF,EAASE,YAG3B,QAAID,GAFiB9d,EAAS+d,IAAgB,GAMhD,CA2CA,SAASC,GAAYvJ,EAAOrN,EAAM6W,GAChC,IAAKxJ,EACH,OAAQwJ,EAGV,IAMWC,EAAU5nB,EANjB+d,EAASI,EAAMJ,OAEnB,IAAKA,GAA4B,IAAlBA,EAAOpd,OACpB,OAAQgnB,EAMV,IAFA,IAAIE,EAAa/W,EAAKnQ,OAClBmnB,EAAc/J,EAAOpd,OAChBF,EAAI,EAAGA,EAAIqnB,EAAarnB,IAAK,CAIpC,IAAKiJ,EAFLke,EADQ7J,EAAOtd,GACEmnB,SAEO,UACtB,OAAQD,EAGV,IAAK,IAAIviB,EAAI,EAAGA,EAAIyiB,EAAYziB,IAI9B,GAHApF,EAAM8Q,EAAK1L,GACA,IAAI2F,OAAO/K,GAET2L,KAAKic,GAChB,OAAO,CAGb,CACA,OAAO,CACT,CAEA,SAASG,GAAaviB,EAAM+hB,EAAUS,EAAankB,GAEjD,IAKIiN,EAAMmX,EALNN,GAAQ,EACQ,cAAhBK,IACFL,GAAQ,GAIV,IAME,GALA7W,EAAO6W,EAAQJ,EAAS9e,cAAgB8e,EAASjf,aACjD2f,EAASve,EAAMlE,EAAM,qBAAuB,CAACkE,EAAMlE,EAAM,gBAIpDsL,GAAwB,IAAhBA,EAAKnQ,OAChB,OAAQgnB,EAEV,GAAsB,IAAlBM,EAAOtnB,SAAiBsnB,EAAO,GACjC,OAAQN,EAIV,IADA,IAAIO,EAAeD,EAAOtnB,OACjBF,EAAI,EAAGA,EAAIynB,EAAcznB,IAChC,GAAIinB,GAAYO,EAAOxnB,GAAIqQ,EAAM6W,GAC/B,OAAO,CAGb,CAAE,MACApoB,GAGIooB,EACFJ,EAAS9e,cAAgB,KAEzB8e,EAASjf,aAAe,KAE1B,IAAI6f,EAAWR,EAAQ,gBAAkB,eASzC,OARA9jB,EAAOhE,MACL,4CACEsoB,EACA,4BACAA,EACA,IACF5oB,IAEMooB,CACV,CACA,OAAO,CACT,CAEA,SAASS,GAAiBvkB,GACxB,OAAO,SAAU2B,EAAM+hB,GACrB,IAAI9mB,EAAG2E,EAAGijB,EAAiBhjB,EAAuBijB,EAAiBC,EAEnE,IAIE,KAFAF,EAAkBd,EAASc,kBAEwB,IAA3BA,EAAgB1nB,OACtC,OAAO,EAKT,GAFA4nB,EAgCN,SAA0B/iB,GACxB,IAAI2I,EAAO3I,EAAK2I,KACZoa,EAAW,GAKf,GAAIpa,EAAK+P,YAAa,CACpB,IAC8B1T,EADIC,EAAA1D,GAAjBoH,EAAK+P,aACQ,IAA9B,IAAAzT,EAAArI,MAAAoI,EAAAC,EAAAtL,KAAA6H,MAAgC,KAArBmX,EAAK3T,EAAArM,MACdoqB,EAASjkB,KAAKoF,EAAMyU,EAAO,qBAC7B,CAAC,OAAAra,GAAA2G,EAAAlL,EAAAuE,EAAA,SAAA2G,EAAA1L,GAAA,CACH,CACIoP,EAAKgQ,OACPoK,EAASjkB,KAAKoF,EAAMyE,EAAM,4BAExBA,EAAK5L,SACPgmB,EAASjkB,KAAKoF,EAAMyE,EAAM,iBAE5B,OAAOoa,CACT,CApDiBC,CAAiBhjB,GAEJ,IAApB+iB,EAAS5nB,OACX,OAAO,EAIT,IADA0E,EAAMgjB,EAAgB1nB,OACjBF,EAAI,EAAGA,EAAI4E,EAAK5E,IAGnB,IAFA6nB,EAAkB,IAAIvd,OAAOsd,EAAgB5nB,GAAI,MAE5C2E,EAAI,EAAGA,EAAImjB,EAAS5nB,OAAQyE,IAG/B,GAFmBkjB,EAAgB3c,KAAK4c,EAASnjB,IAG/C,OAAO,CAIf,CAAE,MACAqC,GAGA8f,EAASc,gBAAkB,KAC3BxkB,EAAOhE,MACL,oGAEJ,CAEA,OAAO,CACT,CACF,C,+sBCnLA,IAKqB4oB,GAAQ,WAe3B,O,EAPA,SAAAA,EAAYjc,EAAOpE,I,4FAASmE,CAAA,KAAAkc,GAC1BtrB,KAAKqP,MAAQA,EACbrP,KAAKiL,QAAUA,EACfjL,KAAKmd,WAAa,GAClBnd,KAAKwI,WAAa,CAAC,CACrB,G,EAEA,EAAArI,IAAA,YAAAa,MAOA,SAAUiK,GAAS,IAAAsgB,EACP,QAAVA,EAAAvrB,KAAKqP,aAAK,IAAAkc,GAAVA,EAAYC,UAAUvgB,GACtB,IAAM2E,EAAa5P,KAAKiL,QAExB,OADAjL,KAAKiL,QAAUD,EAAM4E,EAAY3E,GAC1BjL,IACT,GAEA,CAAAG,IAAA,eAAAa,MAYA,SAAawc,GAIX,OAHI7b,EAAW6b,IACbxd,KAAKmd,WAAWhW,KAAKqW,GAEhBxd,IACT,GAEA,CAAAG,IAAA,MAAAa,MAcA,SAAIqH,EAAMX,GAAU,IAAAuP,EAAA,KAGlB,GAFAvP,EAAW/F,EAAW+F,GAAYA,EAAW,WAAO,GAE/C1H,KAAKiL,QAAQwgB,QAChB,OAAO/jB,EAAS,IAAInG,MAAM,0BAA2B,MAGvDvB,KAAKqP,MAAMqc,eAAerjB,GAC1B,IAAMsjB,EAAgBtjB,EAAK1B,IAC3B3G,KAAK4rB,iBAAiBvjB,EAAM,SAAC1B,EAAKrD,GAChC,GAAIqD,EAEF,OADAsQ,EAAK5H,MAAMwc,kBAAkBxjB,GACtBX,EAASf,EAAK,MAEvBsQ,EAAK5H,MAAMyc,QAAQxoB,EAAGoE,EAAUikB,EAAetjB,EACjD,EACF,GAIA,CAAAlI,IAAA,mBAAAa,MAUA,SAAiBqH,EAAMX,GACrB,IAAIqkB,GAAkB,EAChBC,EAAmBhsB,KAAKmd,WAAW3Z,OACnC2Z,EAAand,KAAKmd,WAClBlS,EAAUjL,KAAKiL,QAEfghB,EAAO,SAACtlB,EAAKrD,GACbqD,EACFe,EAASf,EAAK,QAIhBolB,IAEuBC,EAKvB7O,EAAW4O,GAAgBzoB,EAAG2H,EAASghB,GAJrCvkB,EAAS,KAAMpE,EAKnB,EAEA2oB,EAAK,KAAM5jB,EACb,M,2FAAC,CAnH0B,G,+sBCL7B,I,SAMM6jB,GAAK,WAUT,SAAAA,EAAYC,EAAavV,EAAKlQ,EAAQuE,EAASmhB,I,4FAAQhd,CAAA,KAAA8c,GACrDlsB,KAAKmsB,YAAcA,EACnBnsB,KAAK4W,IAAMA,EACX5W,KAAK0G,OAASA,EACd1G,KAAKiL,QAAUA,EACfjL,KAAKosB,OAASA,EACdpsB,KAAKqsB,WAAa,GAClBrsB,KAAKssB,aAAe,GACpBtsB,KAAKusB,gBAAkB,GACvBvsB,KAAKwsB,WAAa,GAClBxsB,KAAKysB,YAAc,KACnBzsB,KAAK0sB,aAAe,KACpB1sB,KAAK2sB,eAAiB,IACxB,CAEA,O,EAAAT,E,EAAA,EAAA/rB,IAAA,YAAAa,MAKA,SAAUiK,GAAS,IAAA2hB,EACT,QAARA,EAAA5sB,KAAK4W,WAAG,IAAAgW,GAARA,EAAUpB,UAAUvgB,GACpB,IAAM2E,EAAa5P,KAAKiL,QAExB,OADAjL,KAAKiL,QAAUsB,EAAQqD,EAAY3E,GAC5BjL,IACT,GAEA,CAAAG,IAAA,eAAAa,MASA,SAAa6rB,GAIX,OAHItgB,EAAasgB,IACf7sB,KAAKqsB,WAAWllB,KAAK0lB,GAEhB7sB,IACT,GAAC,CAAAG,IAAA,iBAAAa,MAED,SAAeqH,GACbrI,KAAKssB,aAAanlB,KAAKkB,EACzB,GAAC,CAAAlI,IAAA,oBAAAa,MAED,SAAkBqH,GAChB,IAAMykB,EAAM9sB,KAAKssB,aAAa5f,QAAQrE,IACzB,IAATykB,GACF9sB,KAAKssB,aAAavc,OAAO+c,EAAK,EAElC,GAEA,CAAA3sB,IAAA,UAAAa,MAWA,SAAQqH,EAAMX,EAAUikB,EAAeoB,GAAc,IAAA9V,EAAA,KAC9CvP,GAAa6E,EAAa7E,KAC7BA,EAAW,WAEX,GAEF,IAAMqB,EAAOV,EAAKU,KACZikB,EAAkBhtB,KAAKitB,iBAAiBlkB,GAC9C,GAAIikB,EAAgBE,KAGlB,OAFAltB,KAAK6rB,kBAAkBkB,QACvBrlB,EAASslB,EAAgBrmB,KAK3B,GAFA3G,KAAKmtB,UAAUpkB,EAAM4iB,GACrB3rB,KAAK6rB,kBAAkBkB,GAClB/sB,KAAKiL,QAAQmiB,SAAlB,CAKIptB,KAAKosB,QAAUrjB,EAAKiI,OACtB3I,EAAKglB,SAAWrtB,KAAKosB,OAAOlb,QAAQ,KAAMnI,EAAKN,KAAM,CACnD2H,KAAM,aACNpH,MAAOX,EAAKW,QAGVX,EAAKglB,UACP9gB,EAAoBlE,EAAKU,KAAM,CAC7B,CAAE5I,IAAK,YAAaa,MAAOqH,EAAKglB,aAKtCrtB,KAAKusB,gBAAgBplB,KAAK4B,GAC1B,IACE/I,KAAKstB,gBAAgBvkB,EAAM,SAACpC,EAAKC,EAAMwL,GACrC6E,EAAKsW,uBAAuBxkB,GAExBV,EAAKglB,UACPpW,EAAKmV,OAAOoB,oBAAoBnlB,EAAKglB,SAAU1mB,EAAKC,EAAMwL,GAG5D1K,EAASf,EAAKC,EAChB,EACF,CAAE,MAAOD,GAGY,IAAA8mB,EAFnBztB,KAAKutB,uBAAuBxkB,GAExBV,EAAKglB,WACI,QAAXI,EAAAztB,KAAKosB,cAAM,IAAAqB,GAAXA,EAAaC,QAAQrlB,EAAKglB,WAG5B3lB,EAASf,EACX,CAlCA,MAFEe,EAAS,IAAInG,MAAM,qBAqCvB,GAEA,CAAApB,IAAA,OAAAa,MAMA,SAAK0G,GAAU,IAAAwQ,EAAA,KACR3L,EAAa7E,KAGlB1H,KAAK0sB,aAAehlB,EAChB1H,KAAK2tB,mBAGL3tB,KAAK2sB,iBACP3sB,KAAK2sB,eAAiBiB,cAAc5tB,KAAK2sB,iBAE3C3sB,KAAK2sB,eAAiBkB,YAAY,WAChC3V,EAAKyV,gBACP,EAAG,MACL,GAEA,CAAAxtB,IAAA,mBAAAa,MAQA,SAAiBqH,GAEf,IADA,IAAIob,EAAI,KACCngB,EAAI,EAAG4E,EAAMlI,KAAKqsB,WAAW7oB,OAAQF,EAAI4E,EAAK5E,IAErD,KADAmgB,EAAIzjB,KAAKqsB,WAAW/oB,GAAG+E,EAAMrI,KAAKiL,gBACd9C,IAAVsb,EAAE9c,IACV,MAAO,CAAEumB,MAAM,EAAMvmB,IAAK8c,EAAE9c,KAGhC,MAAO,CAAEumB,MAAM,EAAOvmB,IAAK,KAC7B,GAEA,CAAAxG,IAAA,kBAAAa,MAOA,SAAgBqH,EAAMX,GAAU,IAAAqR,EAAA,KACxB+U,EAAoB9tB,KAAKmsB,YAAY4B,WAAW1lB,GAClDylB,EAAkBC,WACpB/tB,KAAK4W,IAAIoX,SAAS3lB,EAAM,SAAC1B,EAAKC,EAAMwL,GAC9BzL,EACFoS,EAAKkV,YAAYtnB,EAAK0B,EAAMX,GAE5BA,EAASf,EAAKC,EAAMwL,EAExB,GACS0b,EAAkBprB,MAC3BgF,EAASomB,EAAkBprB,OAE3B1C,KAAK4W,IAAIoX,SAASF,EAAkB/iB,QAASrD,EAEjD,GAEA,CAAAvH,IAAA,cAAAa,MAoBA,SAAY2F,EAAK0B,EAAMX,GACrB,IAAIwmB,GAAc,EAClB,GAAIluB,KAAKiL,QAAQkjB,cAAe,CAC9B,IAAK,IAAI7qB,EAAI,EAAG4E,EAAMgkB,EAAMkC,iBAAiB5qB,OAAQF,EAAI4E,EAAK5E,IAC5D,GAAIqD,EAAIwX,OAAS+N,EAAMkC,iBAAiB9qB,GAAI,CAC1C4qB,GAAc,EACd,KACF,CAEEA,GAAe3hB,EAAiBvM,KAAKiL,QAAQojB,cAC/ChmB,EAAKimB,QAAUjmB,EAAKimB,QAAUjmB,EAAKimB,QAAU,EAAI,EAC7CjmB,EAAKimB,QAAUtuB,KAAKiL,QAAQojB,aAC9BH,GAAc,GAGpB,CACIA,EACFluB,KAAKuuB,iBAAiBlmB,EAAMX,GAE5BA,EAASf,EAEb,GAEA,CAAAxG,IAAA,mBAAAa,MAOA,SAAiBqH,EAAMX,GAAU,IAAAsR,EAAA,KAC/BhZ,KAAKwsB,WAAWrlB,KAAK,CAAEkB,KAAAA,EAAMX,SAAAA,IAExB1H,KAAKysB,cACRzsB,KAAKysB,YAAcoB,YAAY,WAC7B,KAAO7U,EAAKwT,WAAWhpB,QAAQ,CAC7B,IAAMgrB,EAAcxV,EAAKwT,WAAWxX,QACpCgE,EAAKsU,gBAAgBkB,EAAYnmB,KAAMmmB,EAAY9mB,SACrD,CACF,EAAG1H,KAAKiL,QAAQkjB,eAEpB,GAEA,CAAAhuB,IAAA,yBAAAa,MAQA,SAAuBqH,GACrB,IAAMykB,EAAM9sB,KAAKusB,gBAAgB7f,QAAQrE,IAC5B,IAATykB,IACF9sB,KAAKusB,gBAAgBxc,OAAO+c,EAAK,GACjC9sB,KAAK2tB,iBAET,GAAC,CAAAxtB,IAAA,YAAAa,MAED,SAAU+H,EAAM4iB,GACd,GAAI3rB,KAAK0G,QAAU1G,KAAKiL,QAAQwjB,QAAS,CACvC,IAAIrpB,EACFumB,GACApf,EAAMxD,EAAM,iCACZwD,EAAMxD,EAAM,wCACd,GAAI3D,EAEF,YADApF,KAAK0G,OAAOhE,MAAM0C,IAGpBA,EAAUmH,EAAMxD,EAAM,uBAEpB/I,KAAK0G,OAAO0E,IAAIhG,EAEpB,CACF,GAAC,CAAAjF,IAAA,iBAAAa,MAED,WACE,SACEuL,EAAavM,KAAK0sB,eACW,IAA7B1sB,KAAKssB,aAAa9oB,QACc,IAAhCxD,KAAKusB,gBAAgB/oB,SAEjBxD,KAAK2sB,iBACP3sB,KAAK2sB,eAAiBiB,cAAc5tB,KAAK2sB,iBAE3C3sB,KAAK0sB,eACE,GAGX,I,8FAAC,CAhTQ,G,GAALR,G,GAoMsB,CACxB,aACA,YACA,kBACA,YACA,eACA,eACA,QACA,c,SA5MO,uB,+FAmTX,U,+sBC3TA,IAKMwC,GAAW,WAOf,SAAAA,IAA0B,IAAdzjB,EAAOiB,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,CAAC,G,4FAACkD,CAAA,KAAAsf,GACtB1uB,KAAK2Y,UAAYhO,KAAKpC,MACtBvI,KAAK2uB,QAAU,EACf3uB,KAAK4uB,cAAgB,EACrB5uB,KAAKgc,SAAW,KAChBhc,KAAK6uB,gBAAkB,CAAC,EACxB7uB,KAAK8uB,gBAAgB7jB,EACvB,CAEA,O,4GAAA8jB,CAAAL,EAAA,EAAAvuB,IAAA,kBAAAa,MAQA,WAA8B,IAAdiK,EAAOiB,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,CAAC,EACjByM,EAAwC1N,EAAxC0N,UAAWqW,EAA6B/jB,EAA7B+jB,SAAUC,EAAmBhkB,EAAnBgkB,oBAEX9mB,IAAdwQ,IACF+V,EAAYQ,eAAevW,UAAYA,QAExBxQ,IAAb6mB,IACFN,EAAYQ,eAAeF,SAAWA,QAEjB7mB,IAAnB8mB,IACFP,EAAYQ,eAAeD,eAAiBA,EAEhD,GAEA,CAAA9uB,IAAA,aAAAa,MAeA,SAAWqH,GAAwB,IAAlBE,EAAG2D,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAGvB,KAAKpC,MACpB4mB,EAAc5mB,EAAMvI,KAAK2Y,WAC3BwW,EAAc,GAAKA,GAAe,OACpCnvB,KAAK2Y,UAAYpQ,EACjBvI,KAAK4uB,cAAgB,GAGvB,IAAMQ,EAAkBV,EAAYQ,eAAeF,SAC7CK,EAAwBX,EAAYQ,eAAeD,eAEzD,GAAIK,GAAUjnB,EAAM+mB,EAAiBpvB,KAAK2uB,SACxC,OAAOY,GACLvvB,KAAKgc,SACLhc,KAAK6uB,gBAAe,GAAAnjB,OACjB0jB,EAAe,uBAClB,GAIJ,GAAIE,GAAUjnB,EAAMgnB,EAAuBrvB,KAAK4uB,eAC9C,OAAOW,GACLvvB,KAAKgc,SACLhc,KAAK6uB,gBAAe,GAAAnjB,OACjB2jB,EAAqB,8BACxB,GAIJrvB,KAAK2uB,SAAW,EAChB3uB,KAAK4uB,eAAiB,EAEtB,IAAMY,GAAoBF,GAAUjnB,EAAM+mB,EAAiBpvB,KAAK2uB,SAC1Dc,EAAYD,EACZzB,EACJyB,IACCF,GAAUjnB,EAAMgnB,EAAuBrvB,KAAK4uB,eAE/C,OAAOW,GACLvvB,KAAKgc,SACLhc,KAAK6uB,gBACL,KACAd,EACAqB,EACAC,EACAI,EAEJ,GAAC,CAAAtvB,IAAA,qBAAAa,MAED,SAAmBgb,EAAU/Q,GAC3BjL,KAAKgc,SAAWA,EAChBhc,KAAK6uB,gBAAkB5jB,CACzB,IAAC,CAxGc,GA6GjB,SAASqkB,GAAUjnB,EAAMqnB,EAAOf,GAC9B,OAAQtmB,EAAKsnB,iBAAmBD,GAAS,GAAKf,EAAUe,CAC1D,CAEA,SAASH,GACPvT,EACA/Q,EACAvI,EACAqrB,EACAqB,EACAQ,EACAH,GAEA,IAAI1kB,EAAU,KACR8kB,EAAcntB,EAAQ,IAAInB,MAAMmB,GAAS,KAY/C,OAVKmtB,GAAgB9B,IACnBhjB,EAYJ,SACEiR,EACA/Q,EACAmkB,EACAQ,EACAH,GAEA,IAAMzP,EACJ/U,EAAQ+U,aAAgB/U,EAAQF,SAAWE,EAAQF,QAAQiV,YACvD8P,EAAML,EACR,+DACA,sDACEpnB,EAAO,CACX2I,KAAM,CACJ5L,QAAS,CACP4L,KAAM8e,EACNC,MAAO,CACLf,SAAUI,EACVH,eAAgBW,KAItB9T,SAAU,aACVkE,YAAaA,EACb1Y,SAAU,CACRkQ,QACGvM,EAAQ3D,UAAY2D,EAAQ3D,SAASkQ,SAAYvM,EAAQuM,UAG/C,YAAbwE,GACF3T,EAAK2T,SAAW,UAChB3T,EAAK2nB,UAAY,aACjB3nB,EAAKf,SAASjG,KAAO,sBACC,WAAb2a,GACT3T,EAAK2nB,UAAY/kB,EAAQ+kB,WAAa,UACtC3nB,EAAKf,SAASjG,KAAO4J,EAAQ3D,SAASjG,MAChB,iBAAb2a,IACT3T,EAAK2nB,UAAY/kB,EAAQ+kB,WAAa,eACtC3nB,EAAKf,SAASjG,KAAO4J,EAAQ3D,SAASjG,MAExC,OAAOgH,CACT,CArDc4nB,CACRjU,EACA/Q,EACAmkB,EACAQ,EACAH,IAIG,CAAE/sB,MAAOmtB,EAAa9B,WAAAA,EAAYhjB,QAAAA,EAC3C,E,oHA7BAqP,CA3GMsU,GAAW,iBACS,CACtB/V,UAAWhO,KAAKpC,MAChBymB,cAAU7mB,EACV8mB,oBAAgB9mB,IAiLpB,UC9KA,SAAS+nB,GAAQjlB,EAAS2L,EAAKlQ,EAAQypB,EAAWjhB,EAASkd,EAAQpQ,GACjEhc,KAAKiL,QAAUsB,EAAQtB,GACvBjL,KAAK0G,OAASA,EACdwpB,GAAQ/D,YAAY2C,gBAAgB9uB,KAAKiL,SACzCilB,GAAQ/D,YAAYiE,mBAAmBpU,EAAUhc,KAAKiL,SACtDjL,KAAK4W,IAAMA,EACX5W,KAAKqP,MAAQ,IAAI6c,GACfgE,GAAQ/D,YACRvV,EACAlQ,EACA1G,KAAKiL,QACLmhB,GAGFpsB,KAAKkP,QAAUA,EAIf,IAAIgR,EAASlgB,KAAKiL,QAAQiV,QAAU,KAChCmQ,GAAenQ,IACjBlgB,KAAKkgB,OAASA,EAEdlgB,KAAKiL,QAAQiV,OAAS,6BACtBlgB,KAAKiL,QAAQqlB,mBAAmBpQ,OAAS,8BAEzClgB,KAAKkgB,OAAS,KAGhBlgB,KAAKsH,SAAW,IAAIgkB,GAAStrB,KAAKqP,MAAOrP,KAAKiL,SAC9CjL,KAAKmwB,UAAYA,EACjBI,GAAmBtlB,GACnBjL,KAAKwwB,UAAY,KACjBxwB,KAAKywB,cAAgB,MACvB,CA4NA,SAASF,GAAmBtlB,GACtBA,EAAQylB,kBACVnvB,MAAMmvB,gBAAkBzlB,EAAQylB,gBAEpC,CAOA,SAASL,GAAenQ,GACtB,IAAKA,EACH,OAAO,EAGT,IAAKA,EAAOxI,OAAiC,mBAAjBwI,EAAOxI,MACjC,OAAO,EAGT,IAAIA,EAAQwI,EAAOxI,QAEnB,SAAKA,IAAUA,EAAMyH,QAAkC,mBAAjBzH,EAAMyH,OAK9C,CAhPA+Q,GAAQ/D,YAAc,IAAIuC,GALL,CACnBM,SAAU,EACVC,eAAgB,KAKlBiB,GAAQvvB,UAAUgwB,OAAS,SAAU1lB,GAEnC,OADAilB,GAAQ/D,YAAY2C,gBAAgB7jB,GAC7BjL,IACT,EAEAkwB,GAAQvvB,UAAU6qB,UAAY,SAAUvgB,EAAS2lB,GAC/C,IAAIhhB,EAAa5P,KAAKiL,QAClBF,EAAU,CAAC,EACX6lB,IACF7lB,EAAU,CAAEA,QAAS6lB,IAGvB5wB,KAAKiL,QAAUsB,EAAQqD,EAAY3E,EAASF,GAI5C,IAAImV,EAASlgB,KAAKiL,QAAQiV,QAAU,KAmBpC,OAlBImQ,GAAenQ,IACjBlgB,KAAKkgB,OAASA,EAEdlgB,KAAKiL,QAAQiV,OAAS,6BACtBlgB,KAAKiL,QAAQqlB,mBAAmBpQ,OAAS,8BAEzClgB,KAAKkgB,OAAS,KAGhBlgB,KAAKsH,UAAYtH,KAAKsH,SAASkkB,UAAUxrB,KAAKiL,SAC9CjL,KAAKmwB,WAAanwB,KAAKmwB,UAAU3E,UAAUxrB,KAAKiL,SAChDslB,GAAmBtlB,GACnBjL,KAAK2wB,OAAO3wB,KAAKiL,SAEbolB,GAAeplB,EAAQiV,UACzBlgB,KAAKkgB,OAASjV,EAAQiV,QAGjBlgB,IACT,EAEAkwB,GAAQvvB,UAAUyK,IAAM,SAAU/C,GAChC,IAAIW,EAAQhJ,KAAK6wB,mBACjB,OAAO7wB,KAAK8wB,KAAK9nB,EAAOX,EAC1B,EAEA6nB,GAAQvvB,UAAU4B,MAAQ,SAAU8F,GAClCrI,KAAK8wB,KAAK,QAASzoB,EACrB,EAEA6nB,GAAQvvB,UAAU6B,KAAO,SAAU6F,GACjCrI,KAAK8wB,KAAK,OAAQzoB,EACpB,EAEA6nB,GAAQvvB,UAAUub,KAAO,SAAU7T,GACjCrI,KAAK8wB,KAAK,UAAWzoB,EACvB,EAEA6nB,GAAQvvB,UAAU8B,QAAU,SAAU4F,GACpCrI,KAAK8wB,KAAK,UAAWzoB,EACvB,EAEA6nB,GAAQvvB,UAAU+B,MAAQ,SAAU2F,GAClCrI,KAAK8wB,KAAK,QAASzoB,EACrB,EAEA6nB,GAAQvvB,UAAUgC,SAAW,SAAU0F,GACrCrI,KAAK8wB,KAAK,WAAYzoB,EACxB,EAEA6nB,GAAQvvB,UAAUowB,KAAO,SAAUrpB,GACjC1H,KAAKqP,MAAM0hB,KAAKrpB,EAClB,EAEAwoB,GAAQvvB,UAAUqwB,aAAe,SAAU5gB,EAAMQ,EAAU5H,GACzD,OAAOhJ,KAAKmwB,WAAanwB,KAAKmwB,UAAUa,aAAa5gB,EAAMQ,EAAU5H,EACvE,EAEAknB,GAAQvvB,UAAUswB,wBAA0B,SAAUxc,GACpD,OAAOzU,KAAKmwB,WAAanwB,KAAKmwB,UAAUc,wBAAwBxc,EAClE,EAEAyb,GAAQvvB,UAAUuwB,YAAc,SAAUzc,GACxC,OAAOzU,KAAKmwB,WAAanwB,KAAKmwB,UAAUe,YAAYzc,EACtD,EAEAyb,GAAQvvB,UAAUwwB,iBAAmB,SAAU9oB,GAC7C,OAAOrI,KAAK4W,IAAIua,iBAAiB9oB,EACnC,EAEA6nB,GAAQvvB,UAAUywB,gBAAkB,SAAU9K,GAC5CtmB,KAAK4W,IAAI2P,gBAAgBD,EAC3B,EAIA4J,GAAQvvB,UAAUmwB,KAAO,SAAUO,EAAchpB,GAC/C,IAAIX,EAKJ,GAJIW,EAAKX,WACPA,EAAWW,EAAKX,gBACTW,EAAKX,UAEV1H,KAAKiL,QAAQqmB,uBAAyBtxB,KAAKuxB,iBAAiBlpB,IAC9D,GAAIX,EAAU,CACZ,IAAIhF,EAAQ,IAAInB,MAAM,0BACtBmB,EAAM2F,KAAOA,EACbX,EAAShF,EACX,OAGF,IACE2F,EAAKW,MAAQX,EAAKW,OAASqoB,EAE3BrxB,KAAKwxB,mBAAmBnpB,GAGxBrI,KAAKyxB,gBAAgBppB,GAErB,IAAM8nB,EAAYnwB,KAAKmwB,UACnBA,IACFA,EAAUuB,oBAAoBrpB,GAC9BA,EAAKspB,gBAAkBxB,EAAUyB,cAAgB,IAGnD5xB,KAAKsH,SAAS8D,IAAI/C,EAAMX,EAC1B,CAAE,MAAOtF,GACHsF,GACFA,EAAStF,GAEXpC,KAAK0G,OAAOhE,MAAMN,EACpB,CACF,EAEA8tB,GAAQvvB,UAAU6wB,mBAAqB,SAAUnpB,GAAM,IAAA8G,EAAA0iB,EAC/Cxa,EAAmB,QAAflI,EAAGnP,KAAKkP,eAAO,IAAAC,OAAA,EAAZA,EAAckQ,UAErBrV,EAAa,CACjB,CAAE7J,IAAK,aAAca,MAAmB,QAAd6wB,EAAE7xB,KAAKkP,eAAO,IAAA2iB,OAAA,EAAZA,EAAcC,WAC1C,CAAE3xB,IAAK,UAAWa,MAAOqW,aAAI,EAAJA,EAAMkB,QAC/B,CAAEpY,IAAK,WAAYa,MAAOqW,aAAI,EAAJA,EAAMgB,UAE9BhQ,EAAK0pB,aACP/nB,EAAW7C,KAAK,CAAEhH,IAAK,cAAea,MAAO,SAE/CuL,EAAoBlE,EAAKU,KAAMiB,GAE/BqN,SAAAA,EAAMjG,SAAS,qBAAsB,CACnC,CAAEjR,IAAK,0BAA2Ba,MAAOqH,EAAKI,OAElD,EAEAynB,GAAQvvB,UAAUkwB,iBAAmB,WACnC,OAAO7wB,KAAKiL,QAAQ4R,UAAY,OAClC,EAEAqT,GAAQvvB,UAAU4wB,iBAAmB,SAAUlpB,GAC7C,IAAKA,EAAK0pB,YACR,OAAO,EAET,IAAIC,EA8CN,SAA0B3pB,GACxB,IAAIjD,EAAUiD,EAAKjD,SAAW,GAC1BoB,GAAS6B,EAAK1B,KAAO,CAAC,GAAGH,OAASD,OAAO8B,EAAK1B,KAClD,OAAOvB,EAAU,KAAOoB,CAC1B,CAlDiByrB,CAAiB5pB,GAChC,OAAIrI,KAAKywB,gBAAkBuB,IAG3BhyB,KAAKwwB,UAAYnoB,EAAK1B,IACtB3G,KAAKywB,cAAgBuB,GACd,EACT,EAEA9B,GAAQvvB,UAAU8wB,gBAAkB,SAAUppB,GAG5C,GAAIrI,KAAKkgB,OAAQ,CAEf,IAAI7I,EAAOrX,KAAKkgB,OAAOxI,QAAQyH,SAE/B,GAwEJ,SAAsB9H,GACpB,IAAKA,IAASA,EAAKtR,SAAmC,mBAAjBsR,EAAKtR,QACxC,OAAO,EAGT,IAAIuS,EAAcjB,EAAKtR,UAEvB,IACGuS,IACAA,EAAY4Z,WACZ5Z,EAAY6Z,WACmB,mBAAzB7Z,EAAY4Z,UACc,mBAA1B5Z,EAAY6Z,UAEnB,OAAO,EAGT,OAAO,CACT,CA1FQC,CAAa/a,GAAO,CACtBA,EAAKgb,OAAO,qBAAsBhqB,EAAKI,MACvC4O,EAAKgb,OAAO,qBAAqB,GACjChb,EAAKgb,OAAO,SAAS,GACrBhb,EAAKgb,OACH,mBAAkB,uCAAA3mB,OACqBrD,EAAKI,OAE9C4O,EAAKgb,OACH,yBAAwB,6CAAA3mB,OACqBrD,EAAKI,OAIpD,IAAI6pB,EAAoBjb,EAAKtR,UAAUmsB,WACnCK,EAAqBlb,EAAKtR,UAAUosB,YAEpC9pB,EAAKZ,QACPY,EAAKZ,OAAO+qB,oBAAsBF,EAClCjqB,EAAKZ,OAAOgrB,qBAAuBF,GAEnClqB,EAAKZ,OAAS,CACZ+qB,oBAAqBF,EACrBG,qBAAsBF,EAG5B,CACF,CACF,EAgEA,UC5TA,SAASG,GAAcrqB,EAAM4C,EAASvD,GAChCW,EAAK0pB,cACP1pB,EAAKU,KAAKgpB,aAAc,GAEtB1pB,EAAKc,gBACPd,EAAKU,KAAKI,cAAgBd,EAAKc,eAEjCzB,EAAS,KAAMW,EACjB,CAEA,SAASsqB,GAAkBtqB,EAAM4C,EAASvD,GACxC,IAAIkrB,EAAiB3nB,EAAQF,SAAW,CAAC,EACrC6nB,EAAe5hB,aACV4hB,EAAe5hB,KAGxB3I,EAAKU,KAAOwD,EAAQlE,EAAKU,KAAM6pB,GAC/BlrB,EAAS,KAAMW,EACjB,CAEA,SAASwqB,GAAiBxqB,EAAM4C,EAASvD,GACnCW,EAAKspB,iBACPplB,EAAMlE,EAAM,sBAAuBA,EAAKspB,iBAE1CjqB,EAAS,KAAMW,EACjB,CAEA,SAASyqB,GAAoBzqB,EAAM4C,EAASvD,GAC1C,GAAKW,EAAKjD,QAAV,CAIA,IAAI2tB,EAAY,0BACZ/R,EAAQzU,EAAMlE,EAAM0qB,GAKxB,GAJK/R,IAEHA,EAAQzU,EAAMlE,EADd0qB,EAAY,oBAGV/R,EAAO,CACT,IAAMA,EAAMM,YAAaN,EAAMM,UAAUC,YAGvC,OAFAhV,EAAMlE,EAAM0qB,EAAY,yBAA0B1qB,EAAKjD,cACvDsC,EAAS,KAAMW,GAKjBkE,EAAMlE,EAAM0qB,EAAY,SADTxmB,EADHA,EAAMlE,EAAM0qB,EAAY,WAAa,CAAC,EACpB,CAAE3tB,QAASiD,EAAKjD,UAEhD,CACAsC,EAAS,KAAMW,EAjBf,MAFEX,EAAS,KAAMW,EAoBnB,CAEA,SAAS+U,GAAc1W,GACrB,OAAO,SAAU2B,EAAM4C,EAASvD,GAC9B,I3BgFe+b,E2BhFXuP,EAAUzmB,EAAQlE,GAClB8J,EAAW,KACf,IACM5F,EAAatB,EAAQuS,aACvBrL,EAAWlH,EAAQuS,UAAUwV,EAAQjqB,KAAMV,GAE/C,CAAE,MAAOjG,GAOP,OANA6I,EAAQuS,UAAY,KACpB9W,EAAOhE,MACL,gFACAN,QAEFsF,EAAS,KAAMW,EAEjB,C3BmEKxG,EADU4hB,E2BjECtR,I3BkEIlR,EAAOwiB,EAAEkB,KAAM,Y2BjEjCxS,EAASwS,KACP,SAAUsO,GACJA,IACFD,EAAQjqB,KAAOkqB,GAEjBvrB,EAAS,KAAMsrB,EACjB,EACA,SAAUtwB,GACRgF,EAAShF,EAAO2F,EAClB,GAGFX,EAAS,KAAMsrB,EAEnB,CACF,CAEA,SAASE,GAAmB7qB,EAAM4C,EAASvD,GACzC,IAAKuD,EAAQkoB,WACX,OAAOzrB,EAAS,KAAMW,GAExB,IACIZ,EAAS8E,EAAMlE,EAAM,gBAAkB,CAAC,EAC5CZ,EAAgB,eAAIwD,EACpB5C,EAAKU,KAAKtB,OAASA,EACnBC,EAAS,KAAMW,EACjB,CAEA,SAAS+qB,GAAkBnoB,EAAS5J,GAC9BkL,EAAatB,EAAQ5J,MACvB4J,EAAQ5J,GAAQ4J,EAAQ5J,GAAMG,WAElC,CAEA,SAAS6xB,GAAqBhrB,EAAM4C,EAASvD,GAC3C,IAAI4rB,EAAoBroB,EAAQqlB,mBAGhC8C,GAAkBE,EAAmB,aACrCF,GAAkBE,EAAmB,eACrCF,GAAkBE,EAAmB,yBAE9BA,EAAkBjO,YACzBhd,EAAKU,KAAKzB,SAASisB,mBAAqBD,EACxC5rB,EAAS,KAAMW,EACjB,CAEA,SAASmrB,GAAkBnrB,EAAM4C,EAASvD,GACxC,IAAIc,EAAa+D,EACflE,EAAKf,SAASmsB,OAAOnsB,SAASkB,WAC9BH,EAAKG,YAWP,GARI+D,EAAMlE,EAAM,sBACdG,EAAWkrB,cAAe,GAGxBrrB,EAAK0pB,cACPvpB,EAAWmrB,YAActrB,EAAK0pB,aAG5B1pB,EAAK1B,IACP,IACE6B,EAAWorB,UAAY,CACrBxuB,QAASiD,EAAK1B,IAAIvB,QAClB/D,KAAMgH,EAAK1B,IAAItF,KACfwyB,iBAAkBxrB,EAAK1B,IAAImF,aAAezD,EAAK1B,IAAImF,YAAYzK,KAC/DopB,SAAUpiB,EAAK1B,IAAIiiB,SACnBjjB,KAAM0C,EAAK1B,IAAIkiB,WACfjjB,OAAQyC,EAAK1B,IAAImiB,aACjBtiB,MAAO6B,EAAK1B,IAAIH,MAEpB,CAAE,MAAOpE,GACPoG,EAAWorB,UAAY,CAAEE,OAAQvtB,OAAOnE,GAC1C,CAGFiG,EAAKU,KAAKzB,SAASkB,WAAa+D,EAC9BlE,EAAKU,KAAKzB,SAASkB,WACnBA,GAEFd,EAAS,KAAMW,EACjB,C,uGCpJO,IAAMoD,GAAc,GAAHC,O,ynBAAAsL,CVMS,CAC/B,KACA,OACA,SACA,WACA,SACA,mBACA,kBACA,wBACA,uBACA,eACA,cACA,yBACA,aACA,YACA,gBUpBoB,CACpB,YACA,cACA,aACA,UACA,QACA,WACA,SACA,mBACA,qBACA,sBACA,kBACA,eACA,iBACA,QACA,SACA,SACA,MACA,OACA,OACA,OACA,gBACA,oBACA,sBACA,eACA,aACA,aACA,cACA,0BACA,SACA,YACA,WACA,UACA,SACA,eACA,kBACA,iBACA,UACA,SACA,UACA,WAIF,IAAiBvL,YAAAA,IChDjB,SAASsoB,GAAY1rB,EAAM+hB,GACzB,OAAI7d,EAAM6d,EAAU,qCACV7d,EAAMlE,EAAM,4BAGxB,CCHA,SAAS2rB,GAAmB3rB,EAAM4C,EAASvD,GACzC,GAAIW,EAAK1B,KAA4C,iBAArClB,GAAY0jB,MAAM9gB,EAAK1B,KAAKtF,KAAyB,CACnE,IAAIsqB,EAAgB,IAAIpqB,MACxBoqB,EAActqB,KAAOgH,EAAK1B,IAAItF,KAC9BsqB,EAAcvmB,QAAUiD,EAAK1B,IAAIvB,QACjCumB,EAAcnlB,MAAQ6B,EAAK1B,IAAIH,MAC/BmlB,EAAc3B,OAAS3hB,EAAK1B,IAC5B0B,EAAK1B,IAAMglB,CACb,CACAjkB,EAAS,KAAMW,EACjB,CAEA,SAAS4rB,GAAoB5rB,EAAM4C,EAASvD,GAE1C,GADAW,EAAKU,KAAOV,EAAKU,MAAQ,CAAC,EACtBV,EAAK1B,IACP,IACE0B,EAAK6rB,UACH7rB,EAAK1B,IAAIwtB,kBACT1uB,GAAYP,MAAMmD,EAAK1B,IAAK0B,EAAKY,YAE/BgC,EAAQmpB,iBAoBlB,SAAyB/rB,GACvB,IAAIoZ,EAAQ,GACR9a,EAAM0B,EAAK1B,IAEf8a,EAAMta,KAAKR,GAEX,KAAOA,EAAIqjB,QAAUrjB,EAAIsjB,OACvBtjB,EAAMA,EAAIqjB,QAAUrjB,EAAIsjB,MACxBxI,EAAMta,KAAKR,I9B6gBf,SAAyB0B,EAAMgsB,GAC7B,IAAI5sB,EAASY,EAAKU,KAAKtB,QAAU,CAAC,EAC9B6sB,GAAe,EAEnB,IAAI,IACwBjnB,EADxBC,EAAA1D,EACkByqB,GAAM,IAA1B,IAAA/mB,EAAArI,MAAAoI,EAAAC,EAAAtL,KAAA6H,MAA4B,KAAjBnH,EAAK2K,EAAArM,MACVc,EAAOY,EAAO,oBAChB+E,EAASuD,EAAMvD,EAAQZ,EAAiBnE,EAAM6xB,iBAC9CD,GAAe,EAEnB,CAEA,OAAA3tB,GAAA2G,EAAAlL,EAAAuE,EAAA,SAAA2G,EAAA1L,GAAA,CACI0yB,IACFjsB,EAAKU,KAAKtB,OAASA,EAEvB,CAAE,MAAOrF,GACPiG,EAAKG,WAAWgsB,cAAgB,WAAapyB,EAAEgD,OACjD,CACF,C8B7hBEmH,CAAkBlE,EAAMoZ,EAC1B,CA/BQ2S,CAAgB/rB,EAEpB,CAAE,MAAOjG,GACPsE,GAAOhE,MAAM,wCAAyCN,GACtD,IACEiG,EAAKjD,QACHiD,EAAK1B,IAAIvB,SACTiD,EAAK1B,IAAI4a,aACTlZ,EAAKjD,SACLmB,OAAO8B,EAAK1B,IAChB,CAAE,MAAO8tB,GACPpsB,EAAKjD,QAAUmB,OAAO8B,EAAK1B,MAAQJ,OAAOkuB,EAC5C,QACOpsB,EAAK1B,GACd,CAEFe,EAAS,KAAMW,EACjB,CAgBA,SAASqsB,GAA4BrsB,EAAM4C,EAASvD,GAC7CW,EAAKjD,SAAYiD,EAAK6rB,WAAc7rB,EAAKZ,QAC5CC,EAAS,IAAInG,MAAM,0CAA2C,MAEhEmG,EAAS,KAAMW,EACjB,CAEA,SAASssB,GAAYtsB,EAAM4C,EAASvD,GAClC,IAAIsY,EACD/U,EAAQF,SAAWE,EAAQF,QAAQiV,aAAgB/U,EAAQ+U,YAC9D3X,EAAKU,KAAOwD,EAAQlE,EAAKU,KAAM,CAC7BiX,YAAaA,EACbhX,MAAOX,EAAKW,MACZga,SAAU/X,EAAQ+X,SAClBhH,SAAU,UACVgU,UAAW,aACXlU,SAAU,aACV8Y,OAAQ,CAAC,EACTnsB,KAAMJ,EAAKI,KACXnB,SAAU,CACRjG,KAAM,qBACNmW,QAASvM,EAAQuM,SAEnB/P,OAAQY,EAAKZ,SAEfC,EAAS,KAAMW,EACjB,CAoEA,SAASwsB,GAAQxsB,EAAM4C,EAASvD,GAC1BW,EAAK6rB,UACH7rB,EAAK6rB,UAAUhK,WA2CvB,SAA2B7hB,EAAM4C,EAASvD,GAKxC,IAJA,IAAIwiB,EAAa7hB,EAAK6rB,UAAUhK,WAC5BY,EAAS,GAETgK,EAAmB5K,EAAW1mB,OACzBF,EAAI,EAAGA,EAAIwxB,EAAkBxxB,IAAK,CACzC,IAAI0d,EAAQ+T,GAAW1sB,EAAM6hB,EAAW5mB,GAAI2H,GAC5C6f,EAAO3jB,KAAK6Z,EACd,CAEAzU,EAAMlE,EAAM,YAAa,CAAE0Y,YAAa+J,IACxCpjB,EAAS,KAAMW,EACjB,CAtDM2sB,CAAkB3sB,EAAM4C,EAASvD,GAwDvC,SAAsBW,EAAM4C,EAASvD,GACnC,IAAIlB,EAAQyuB,GAAc5sB,GAE1B,GAAI7B,EAAO,CAET+F,EAAMlE,EAAM,YAAa,CAAE2Y,MADf+T,GAAW1sB,EAAMA,EAAK6rB,UAAWjpB,KAE7CvD,EAAS,KAAMW,EACjB,KAAO,CACL,IAAI6rB,EAAY7rB,EAAK6rB,UACjBgB,EAAQzvB,GAAYmkB,gBAAgBsK,EAAU9uB,SAC9C+vB,EAAYC,GAAWlB,EAAWgB,EAAM,GAAIjqB,GAC5C7F,EAAU8vB,EAAM,GAEpB7sB,EAAKjD,QAAU+vB,EAAY,KAAO/vB,EAClCiwB,GAAehtB,EAAM4C,EAASvD,EAChC,CACF,CAtEM4tB,CAAajtB,EAAM4C,EAASvD,GAG9B2tB,GAAehtB,EAAM4C,EAASvD,EAElC,CAEA,SAAS2tB,GAAehtB,EAAM4C,EAASvD,GACrC,IAAItC,EAAUiD,EAAKjD,QACfqC,EAASY,EAAKZ,OAEbrC,IACHA,EAAU,6CAEZ,IAAIX,EAAS,CACXuM,KAAM5L,GAGJqC,IACFhD,EAAOsrB,MAAQxjB,EAAQ9E,IAGzB8E,EAAMlE,EAAM,YAAa,CAAEjD,QAASX,IACpCiD,EAAS,KAAMW,EACjB,CAEA,SAAS4sB,GAAc5sB,GAAwB,IAEzC7B,IAFgC0F,UAAA1I,OAAA,QAAA2E,IAAA+D,UAAA,GAAAA,UAAA,GAAG,OAEb7D,EAAK6rB,WAAW1tB,MAS1C,OAPEA,GACiB,IAAjBA,EAAMhD,QACN6E,EAAKktB,qBACLltB,EAAKktB,oBAAoB/uB,QAEzBA,EAAQ6B,EAAKktB,oBAAoB/uB,OAE5BA,CACT,CAkCA,SAASuuB,GAAW1sB,EAAM6rB,EAAWjpB,GACnC,IAAIsW,EAAclZ,GAAQA,EAAKU,KAAKwY,YAChC9Z,EAASY,GAAQA,EAAKZ,OACtBjB,EAAQyuB,GAAc5sB,EAAM6rB,GAE5BgB,EAAQzvB,GAAYmkB,gBAAgBsK,EAAU9uB,SAG9C4b,EAAQ,CACVM,UAAW,CACTkU,MAJYJ,GAAWlB,EAAWgB,EAAM,GAAIjqB,GAK5C7F,QAJU8vB,EAAM,KAYpB,GAJI3T,IACFP,EAAMM,UAAUC,YAAcA,GAG5B/a,EAAO,CAKT,IAAIyiB,EACAwM,EACAtX,EACAuX,EACAhQ,EACAiQ,EACAryB,EAAGsyB,EAGP,IAbqB,IAAjBpvB,EAAMhD,SACRwd,EAAMM,UAAU9a,MAAQ0tB,EAAUzK,SAClCzI,EAAMM,UAAUb,IAAMla,OAAO2tB,EAAUxK,eAUzC1I,EAAMJ,OAAS,GACVtd,EAAI,EAAGA,EAAIkD,EAAMhD,SAAUF,EAE9BmyB,EAAQ,CACNhL,UAFFxB,EAAaziB,EAAMlD,IAEIT,IAAM0J,EAAc0c,EAAWpmB,KAAO,YAC3DwC,OAAQ4jB,EAAWtjB,MAAQ,KAC3BqM,OACGiX,EAAWpjB,MAA4B,MAApBojB,EAAWpjB,KAE3BojB,EAAWpjB,KADX,cAENP,MAAO2jB,EAAWrjB,QAEhBqF,EAAQ4qB,eACVJ,EAAM5yB,IAAMomB,EAAWpmB,KAGvB4yB,EAAMzjB,QACNyjB,EAAMzjB,OAAO8jB,UACbL,EAAMzjB,OAAO8jB,SAAS,sBAKxB3X,EAAOuX,EAAMhQ,EAAO,MACpBiQ,EAAgB1M,EAAWljB,QAAUkjB,EAAWljB,QAAQvC,OAAS,KAE/DoyB,EAAMhtB,KAAKE,MAAM6sB,EAAgB,GACjCD,EAAMzM,EAAWljB,QAAQmB,MAAM,EAAG0uB,GAClCzX,EAAO8K,EAAWljB,QAAQ6vB,GAC1BlQ,EAAOuD,EAAWljB,QAAQmB,MAAM0uB,IAG9BzX,IACFsX,EAAMtX,KAAOA,IAGXuX,GAAOhQ,KACT+P,EAAM1vB,QAAU,CAAC,EACb2vB,GAAOA,EAAIlyB,SACbiyB,EAAM1vB,QAAQ2vB,IAAMA,GAElBhQ,GAAQA,EAAKliB,SACfiyB,EAAM1vB,QAAQ2f,KAAOA,IAIrBuD,EAAW5hB,OACbouB,EAAMpuB,KAAO4hB,EAAW5hB,MAG1B2Z,EAAMJ,OAAOzZ,KAAKsuB,IAIpBzU,EAAMJ,OAAOmV,UAETtuB,IACFuZ,EAAM+O,MAAQxjB,EAAQ9E,GAE1B,CAEA,OAAOuZ,CACT,CAEA,SAASoU,GAAWlB,EAAWgB,EAAOjqB,GACpC,OAAIipB,EAAU7yB,KACL6yB,EAAU7yB,KACR4J,EAAQ2e,gBACVsL,EAEA,WAEX,C,23BCjRA,OAzDA,SAAyB5kB,GAQtB,IACG0lB,EACAC,EATJ5Q,EAAW/U,EAAX+U,YACAxiB,EAAGyN,EAAHzN,IACAmP,EAAM1B,EAAN0B,OACAjH,EAAOuF,EAAPvF,QACAqH,EAAO9B,EAAP8B,QACA1K,EAAQ4I,EAAR5I,SACA+a,EAAOnS,EAAPmS,QAKIlW,EAAiBkW,KACnBuT,EAAa,IAAIE,gBACjBD,EAAYrQ,WAAW,WACrBoQ,EAAWG,OACb,EAAG1T,IAGLrQ,E,8VAAOd,CAAA,CACL,eAAgB,mBAChB,yBAA0B+T,EAC1B+Q,OAAQJ,GAAcA,EAAWI,QAC9BhkB,GAGLwQ,MAAM/f,EAAK,CACTmP,OAAAA,EACAI,QAAAA,EACApB,KAAMjG,IAEL4Z,KAAK,SAAUxS,GACV8jB,GAAWI,aAAaJ,GAC5B,IAAMK,EAAcnkB,EAASC,QAGvBA,EADcvP,EAAIizB,SAAS,gBAE7B,CACE,yBAA0BQ,EAAY91B,IAAI,0BAC1C,qCAAsC81B,EAAY91B,IAChD,sCAEF,iCAAkC81B,EAAY91B,IAC5C,mCAGJ,CAAC,EAEC+1B,EAAOpkB,EAASokB,OACtB7uB,EAAS,KAAM6uB,EAAMnkB,EACvB,GACCokB,MAAM,SAAU9zB,GACfgE,GAAOhE,MAAMA,EAAM0C,SACnBsC,EAAShF,EACX,EACJ,E,ogCCgIA,SAAS+zB,GAAmBrxB,EAAS+Y,GACnC,IAAIxX,EAAM,IAAIpF,MAAM6D,GAEpB,OADAuB,EAAIwX,KAAOA,GAAQ,YACZxX,CACT,CAEA,OA3LA,SAAuB2J,GASpB,IACG3I,EATJ0d,EAAW/U,EAAX+U,YACAxiB,EAAGyN,EAAHzN,IACAmP,EAAM1B,EAAN0B,OACAjH,EAAOuF,EAAPvF,QACAqH,EAAO9B,EAAP8B,QACA1K,EAAQ4I,EAAR5I,SACAgvB,EAAcpmB,EAAdomB,eACAjU,EAAOnS,EAAPmS,QAQA,KAJE9a,EADE+uB,EACQA,IAkId,WAGE,IAcIC,EACArzB,EAfAszB,EAAY,CACd,WACE,OAAO,IAAI/T,cACb,EACA,WACE,OAAO,IAAIgU,cAAc,iBAC3B,EACA,WACE,OAAO,IAAIA,cAAc,iBAC3B,EACA,WACE,OAAO,IAAIA,cAAc,oBAC3B,GAIEC,EAAeF,EAAUpzB,OAC7B,IAAKF,EAAI,EAAGA,EAAIwzB,EAAcxzB,IAC5B,IACEqzB,EAAUC,EAAUtzB,KACpB,KACF,CAAE,MAAOgH,GACP,CAGJ,OAAOqsB,CACT,CA7JcI,IAIV,OAAOrvB,EAAS,IAAInG,MAAM,6BAE5B,IACE,IACE,IAAIy1B,EAAqB,WACvB,IACE,GAAIA,GAA6C,IAAvBrvB,EAAQsvB,WAAkB,CAClDD,OAAqB7uB,EAErB,IAAI+uB,EAAgB3qB,EAAY5E,EAAQwvB,cACxC,GAiJZ,SAAoBxuB,GAClB,OAAOA,GAAKA,EAAEuV,QAAuB,MAAbvV,EAAEuV,MAC5B,CAnJgBkZ,CAAWzvB,GAAU,CACvB,IAEMyK,EAFcvP,EAAIizB,SAAS,gBAG7B,CACE,yBAA0BnuB,EAAQ0vB,kBAChC,0BAEF,qCACE1vB,EAAQ0vB,kBACN,sCAEJ,iCAAkC1vB,EAAQ0vB,kBACxC,mCAGJ,CAAC,EAEL,YADA3vB,EAASwvB,EAAcx0B,MAAOw0B,EAAcl2B,MAAOoR,EAErD,CAAO,GAkInB,SAA0BzJ,GACxB,OAAOA,GAAK4D,EAAS5D,EAAEuV,OAAQ,WAAavV,EAAEuV,QAAU,KAAOvV,EAAEuV,OAAS,GAC5E,CApIuBoZ,CAAiB3vB,GAAU,CACpC,GAAuB,MAAnBA,EAAQuW,OAAgB,CAE1B,IAAI9Y,EACF8xB,EAAcl2B,OAASk2B,EAAcl2B,MAAMoE,QAC7CsB,GAAOhE,MAAM0C,EACf,CAEAsC,EAAS,IAAInG,MAAMgF,OAAOoB,EAAQuW,SACpC,KAAO,CAMLxW,EAAS+uB,GADP,+DAEJ,CACF,CACF,CAAE,MAAOc,GAIP,IAAIC,EAEFA,EADED,GAAMA,EAAG/wB,MACL+wB,EAEA,IAAIh2B,MAAMg2B,GAElB7vB,EAAS8vB,EACX,CACF,EAGA,GADA7vB,EAAQ8vB,KAAKzlB,EAAQnP,GAAK,GACtB8E,EAAQ+vB,iBAAkB,CAC5B/vB,EAAQ+vB,iBAAiB,eAAgB,oBACzC/vB,EAAQ+vB,iBAAiB,yBAA0BrS,GACnD,IAAK,IAAL5G,EAAA,EAAAC,EAAqBre,OAAO2M,QAAQoF,QAAAA,EAAW,CAAC,GAAEqM,EAAAC,EAAAlb,OAAAib,IAAE,CAA/C,IAAAE,EAAAzR,GAAAwR,EAAAD,GAAA,GAAOkZ,EAAChZ,EAAA,GAAEvS,EAACuS,EAAA,GACdhX,EAAQ+vB,iBAAiBC,EAAGvrB,EAC9B,CACF,CAEIG,EAAiBkW,KACnB9a,EAAQ8a,QAAUA,GAGpB9a,EAAQqvB,mBAAqBA,EAC7BrvB,EAAQiwB,KAAK7sB,EACf,CAAE,MAAO8sB,GAEP,GAA8B,oBAAnBC,eAAgC,CAKzC,IAAK1xB,SAAWA,OAAOV,SACrB,OAAOgC,EACL,IAAInG,MACF,4DAOqC,UAAzC6E,OAAOV,SAASO,KAAK8xB,UAAU,EAAG,IACV,UAAxBl1B,EAAIk1B,UAAU,EAAG,KAEjBl1B,EAAM,OAASA,EAAIk1B,UAAU,IAG/B,IAAIC,EAAiB,IAAIF,eACzBE,EAAeC,WAAa,WAAO,EACnCD,EAAeE,UAAY,WAGzBxwB,EAAS+uB,GAFC,oBACC,aAEb,EACAuB,EAAeG,QAAU,WACvBzwB,EAAS,IAAInG,MAAM,wBACrB,EACAy2B,EAAeI,OAAS,WACtB,IAAIlB,EAAgB3qB,EAAYyrB,EAAeb,cAC/CzvB,EAASwvB,EAAcx0B,MAAOw0B,EAAcl2B,MAC9C,EACAg3B,EAAeP,KAAKzlB,EAAQnP,GAAK,GACjCm1B,EAAeJ,KAAK7sB,EACtB,MACErD,EAAS,IAAInG,MAAM,+CAEvB,CACF,CAAE,MAAOkzB,GACP/sB,EAAS+sB,EACX,CACF,EC1HA,SAAS4D,GAAUjT,GACjBplB,KAAKolB,WAAaA,CACpB,CAEAiT,GAAU13B,UAAUH,IAAM,SACxB6kB,EACApa,EACAqtB,EACA5wB,EACAgvB,GAEKhvB,GAAa6E,EAAa7E,KAC7BA,EAAW,WAAO,GjC8NtB,SAAuC2d,EAAapa,EAASqtB,IAC3DA,EAASA,GAAU,CAAC,GACbC,aAAelT,EACtB,IACIlZ,EADAqsB,EAAc,GAElB,IAAKrsB,KAAKmsB,EACJj4B,OAAOM,UAAUC,eAAeC,KAAKy3B,EAAQnsB,IAC/CqsB,EAAYrxB,KAAK,CAACgF,EAAGmsB,EAAOnsB,IAAI8N,KAAK,MAGzC,IAAIhW,EAAQ,IAAMu0B,EAAYC,OAAOxe,KAAK,MAE1ChP,EAAUA,GAAW,CAAC,GACdvG,KAAOuG,EAAQvG,MAAQ,GAC/B,IAEI+e,EAFAiV,EAAKztB,EAAQvG,KAAKgI,QAAQ,KAC1BirB,EAAI1sB,EAAQvG,KAAKgI,QAAQ,MAEjB,IAARgsB,KAAqB,IAAPf,GAAYA,EAAIe,IAChCjV,EAAIxY,EAAQvG,KACZuG,EAAQvG,KAAO+e,EAAEsU,UAAU,EAAGW,GAAMz0B,EAAQ,IAAMwf,EAAEsU,UAAUW,EAAK,KAExD,IAAPf,GACFlU,EAAIxY,EAAQvG,KACZuG,EAAQvG,KAAO+e,EAAEsU,UAAU,EAAGJ,GAAK1zB,EAAQwf,EAAEsU,UAAUJ,IAEvD1sB,EAAQvG,KAAOuG,EAAQvG,KAAOT,CAGpC,CiCxPEsI,CAAgC8Y,EAAapa,EAASqtB,GAEtD,IACIz1B,EAAM0J,EAAYtB,GACtBjL,KAAK24B,iBAAiB,CACpBtT,YAAAA,EACAxiB,IAAAA,EACAmP,OALW,MAMXtK,SAAAA,EACAgvB,eAAAA,EACAjU,QAASxX,EAAQwX,QACjBC,UAAWzX,EAAQyX,WAEvB,EAEA2V,GAAU13B,UAAU+kB,KAAO,SAAApV,GAOxB,IASG+V,EAfJhB,EAAW/U,EAAX+U,YACApa,EAAOqF,EAAPrF,QACAF,EAAOuF,EAAPvF,QACAqH,EAAO9B,EAAP8B,QACA1K,EAAQ4I,EAAR5I,SACAgvB,EAAcpmB,EAAdomB,eAMA,GAJKhvB,GAAa6E,EAAa7E,KAC7BA,EAAW,WAAO,IAGfqD,EACH,OAAOrD,EAAS,IAAInG,MAAM,8BAU5B,IAJE8kB,EADErmB,KAAKolB,YAAcra,EAAQiG,KACXhR,KAAKolB,WAAWrD,SAAShX,GAEzBwB,EAAYxB,IAEZrI,MAClB,OAAOgF,EAAS2e,EAAgB3jB,OAGlC,IACIG,EAAM0J,EAAYtB,GACtBjL,KAAK24B,iBAAiB,CACpBtT,YAAAA,EACAxiB,IAAAA,EACAmP,OALW,OAMXjH,QAASsb,EAAgBrlB,MACzBoR,QAAAA,EACA1K,SAAAA,EACAgvB,eAAAA,EACAjU,QAASxX,EAAQwX,QACjBC,UAAWzX,EAAQyX,WAEvB,EAEA2V,GAAU13B,UAAU4lB,gBAAkB,SACpClB,EACApa,EACAF,EACArD,EACAgvB,GAEKhvB,GAAa6E,EAAa7E,KAC7BA,EAAW,WAAO,GAGpB,IACI7E,EAAM0J,EAAYtB,GACtBjL,KAAK24B,iBAAiB,CACpBtT,YAAAA,EACAxiB,IAAAA,EACAmP,OALW,OAMXjH,QAAAA,EACArD,SAAAA,EACAgvB,eAAAA,EACAjU,QAASxX,EAAQwX,QACjBC,UAAWzX,EAAQyX,WAEvB,EAKA2V,GAAU13B,UAAUg4B,iBAAmB,WAAY,IAAA1hB,EAAA,KAC7C2I,EACiB,oBAAXxZ,QAA0BA,QACjB,oBAATkP,MAAwBA,KAK9BsjB,EAAWhZ,GAAWA,EAAQiZ,MAAQjZ,EAAQiZ,KAAKn5B,KACnD2H,EAAO4I,MAAMtP,UAAUuG,MAAMrG,KAAKqL,WAElC0sB,EACFA,EAASE,IAAI,WACX7hB,EAAK8hB,aAAa9iB,WAAM9N,EAAWd,EACrC,GAEArH,KAAK+4B,aAAa9iB,WAAM9N,EAAWd,EAEvC,EAEAgxB,GAAU13B,UAAUo4B,aAAe,SAAUT,GAC3C,IAAQvtB,EAAiCutB,EAAjCvtB,QAASrD,EAAwB4wB,EAAxB5wB,SAAUgb,EAAc4V,EAAd5V,UAC3B,GAA4B,oBAAjBsW,aACT,OAWJ,SAAuBzC,EAAM7uB,IACR,IAAIsxB,cACV5H,gBACXmF,EACA,SAAU0C,GACR,EAEF,SAAUtyB,GACRe,EAAS,IAAInG,MAAMoF,GACrB,EAEJ,CAtBWuyB,CAAcnuB,EAASrD,GAGd,UAAdgb,EACFyW,GAAiBb,GAEjBc,GAAed,EAEnB,EAgBA,I,GAAA,MCxKA,SAASpzB,GAAMrC,GACb,IAcIS,EAAGuJ,EAdHpI,EAAS,CACXH,SAAU,KACV+0B,KAAM,KACNhW,KAAM,KACN3e,KAAM,KACN40B,KAAM,KACNrzB,KAAMpD,EACN2B,SAAU,KACVD,KAAM,KACN2e,SAAU,KACVV,OAAQ,KACRve,MAAO,MAmBT,IAdW,KADXX,EAAIT,EAAI6J,QAAQ,QAEdjI,EAAOH,SAAWzB,EAAIk1B,UAAU,EAAGz0B,GACnCuJ,EAAOvJ,EAAI,GAEXuJ,EAAO,GAIE,KADXvJ,EAAIT,EAAI6J,QAAQ,IAAKG,MAEnBpI,EAAO40B,KAAOx2B,EAAIk1B,UAAUlrB,EAAMvJ,GAClCuJ,EAAOvJ,EAAI,IAIF,KADXA,EAAIT,EAAI6J,QAAQ,IAAKG,IACP,CAEZ,IAAW,KADXvJ,EAAIT,EAAI6J,QAAQ,IAAKG,IAcnB,OAXW,KADXvJ,EAAIT,EAAI6J,QAAQ,IAAKG,IAEnBpI,EAAO4e,KAAOxgB,EAAIk1B,UAAUlrB,IAE5BpI,EAAO4e,KAAOxgB,EAAIk1B,UAAUlrB,EAAMvJ,GAClCmB,EAAO60B,KAAOz2B,EAAIk1B,UAAUz0B,IAE9BmB,EAAOD,SAAWC,EAAO4e,KAAKhZ,MAAM,KAAK,GACzC5F,EAAOF,KAAOE,EAAO4e,KAAKhZ,MAAM,KAAK,GACjC5F,EAAOF,OACTE,EAAOF,KAAOg1B,SAAS90B,EAAOF,KAAM,KAE/BE,EAEPA,EAAO4e,KAAOxgB,EAAIk1B,UAAUlrB,EAAMvJ,GAClCmB,EAAOD,SAAWC,EAAO4e,KAAKhZ,MAAM,KAAK,GACzC5F,EAAOF,KAAOE,EAAO4e,KAAKhZ,MAAM,KAAK,GACjC5F,EAAOF,OACTE,EAAOF,KAAOg1B,SAAS90B,EAAOF,KAAM,KAEtCsI,EAAOvJ,CAEX,MACEmB,EAAO4e,KAAOxgB,EAAIk1B,UAAUlrB,EAAMvJ,GAClCmB,EAAOD,SAAWC,EAAO4e,KAAKhZ,MAAM,KAAK,GACzC5F,EAAOF,KAAOE,EAAO4e,KAAKhZ,MAAM,KAAK,GACjC5F,EAAOF,OACTE,EAAOF,KAAOg1B,SAAS90B,EAAOF,KAAM,KAEtCsI,EAAOvJ,EAWT,IAPW,KADXA,EAAIT,EAAI6J,QAAQ,IAAKG,IAEnBpI,EAAOC,KAAO7B,EAAIk1B,UAAUlrB,IAE5BpI,EAAOC,KAAO7B,EAAIk1B,UAAUlrB,EAAMvJ,GAClCmB,EAAO60B,KAAOz2B,EAAIk1B,UAAUz0B,IAG1BmB,EAAOC,KAAM,CACf,IAAI80B,EAAY/0B,EAAOC,KAAK2F,MAAM,KAClC5F,EAAOye,SAAWsW,EAAU,GAC5B/0B,EAAOR,MAAQu1B,EAAU,GACzB/0B,EAAO+d,OAAS/d,EAAOR,MAAQ,IAAMQ,EAAOR,MAAQ,IACtD,CACA,OAAOQ,CACT,C,44CC/DA,IAAIg1B,GAAY,KAEVvJ,GAAO,WACX,SAAAA,EAAYjlB,EAASwoB,I,4FAAQrkB,CAAA,KAAA8gB,GAC3BxpB,GAAOkW,KAAK,CAAEC,SAAU5R,EAAQ4R,UAAY,UAC5C7c,KAAKiL,QAAUsB,EAAgByY,GAAgB/Z,EAAS,KAAMvE,IAC9D1G,KAAKiL,QAAQqlB,mBAAqBrlB,EAClCjL,KAAK05B,WAAa15B,KAAK05B,YAAc,CAAC,EACtC,IAAMzqB,EAAYjP,KAAK05B,WAAWvJ,UAC5BwJ,EAAe35B,KAAK05B,WAAWE,aACrC55B,KAAK65B,YAAc75B,KAAK05B,WAAWG,YACnC75B,KAAK85B,MAAQ95B,KAAK05B,WAAWI,MAC7B,IAAM1U,EAAaplB,KAAK05B,WAAWtU,WAC7BzF,EAAU3f,KAAK05B,WAAWxqB,QAC1B6qB,EAAS/5B,KAAK05B,WAAWtN,OAEzB1J,EAAY,IAAI2V,GAAUjT,GAC1BxO,EAAM,IAAIojB,GAAIh6B,KAAKiL,QAASyX,EAAWyC,EAAQC,GASrD,GARIzF,IACF3f,KAAKkP,QAAU,IAAIyQ,EAAQsa,KAAYrjB,EAAK5W,KAAKiL,SACjDjL,KAAKkP,QAAQgrB,eAEXjrB,IACFjP,KAAKmwB,UAAY,IAAIlhB,EAAUjP,KAAKiL,QAASjL,KAAKkP,UAGhD6qB,GnCoGmB,oBAAX3zB,OmCpGiB,CAC3B,IAAM+zB,EAAgBn6B,KAAKiL,QAAQmhB,OACnCpsB,KAAKosB,OAAS,IAAI2N,EAAO,CACvB7qB,QAASlP,KAAKkP,QACdihB,UAAWnwB,KAAKmwB,UAChBllB,QAASkvB,IAGPA,EAAc1O,SAAW0O,EAAcC,WACzCp6B,KAAKosB,OAAOiO,SAASC,OAEzB,CAEAt6B,KAAKyzB,OACHA,GACA,IAAI8G,GACFv6B,KAAKiL,QACL2L,EACAlQ,GACA1G,KAAKmwB,UACLnwB,KAAKkP,QACLlP,KAAKosB,OACL,WAEJ,IAAIxM,EAAUqa,KACVO,EAAgC,oBAAbt0B,UAA4BA,SACnDlG,KAAKy6B,SAAW7a,EAAQ8a,QAAU9a,EAAQ8a,OAAOC,QACjD36B,KAAK46B,uBAAyB,EAodlC,SAAiCtzB,EAAUuzB,EAASjb,GAClDtY,EACG6Y,aAAahD,IACbgD,aAAahD,IACbgD,aAAahD,IACbgD,aAAahD,IACbgD,aL5cL,SAAwB/Z,GACtB,OAAO,SAAUiC,EAAM4C,EAASvD,GAC9B,IAAIozB,EAAc,CAAC,EAEf10B,GAAUA,EAAOV,WACnBo1B,EAAYj4B,IAAMuD,EAAOV,SAASO,KAClC60B,EAAYC,aAAe30B,EAAOV,SAAS8c,QAG7C,IAAIwY,EAAe,aACd/vB,EAAQgwB,WAEoB,IAAtBhwB,EAAQgwB,YACjBD,GAAgB,cAFhBA,EAAe,KAIbA,IAAcF,EAAYI,QAAUF,GAEpC36B,OAAO+J,KAAK0wB,GAAat3B,OAAS,GACpC+I,EAAMlE,EAAM,eAAgByyB,GAG9BpzB,EAAS,KAAMW,EACjB,CACF,CKqbkB8U,CAA0ByC,IACvCO,aLpbL,SAAuB/Z,GACrB,OAAO,SAAUiC,EAAM4C,EAASvD,GAC9B,IAAKtB,EACH,OAAOsB,EAAS,KAAMW,GAExB,IAAI8yB,EAAM/0B,EAAOC,WAAa,CAAC,EAC3B+0B,EAAMh1B,EAAOi1B,QAAU,CAAC,EAC5B9uB,EAAMlE,EAAM,cAAe,CACzBizB,WAAYjzB,EAAKC,UAAYlC,EAAOm1B,kBACpCjzB,UAAWM,KAAKoG,MAAM3G,EAAKC,UAAY,KACvCkzB,WAAY,CACVC,QAASN,EAAI70B,UACbwV,SAAUqf,EAAIrf,SACd4f,eAAgBP,EAAIQ,cACpBN,OAAQ,CACN9nB,MAAO6nB,EAAI7nB,MACXD,OAAQ8nB,EAAI9nB,WAIlB5L,EAAS,KAAMW,EACjB,CACF,CK8ZkB8U,CAAyByC,IACtCO,aL7ZL,SAAuB/Z,GACrB,OAAO,SAAUiC,EAAM4C,EAASvD,GAC9B,IAAKtB,IAAWA,EAAOC,UACrB,OAAOqB,EAAS,KAAMW,GAKxB,IAHA,IAEIuzB,EAFAC,EAAU,GACVC,EAAa11B,EAAOC,UAAUw1B,SAAW,GAEpCv4B,EAAI,EAAGC,EAAIu4B,EAAWt4B,OAAQF,EAAIC,IAAKD,EAC9Cs4B,EAAME,EAAWx4B,GACjBu4B,EAAQ10B,KAAK,CAAE9F,KAAMu6B,EAAIv6B,KAAMkgB,YAAaqa,EAAIra,cAElDhV,EAAMlE,EAAM,iCAAkCwzB,GAC9Cn0B,EAAS,KAAMW,EACjB,CACF,CK8YkB8U,CAAyByC,IACtCO,aAAahD,IACbgD,aAAa4b,IACb5b,aAAa4b,IACb5b,aAAa4b,IACb5b,cL1NgB6b,EK0NoBnB,EAAQf,MLzNxC,SAAUzxB,EAAM4C,EAASvD,GAC9B,GAAIs0B,EAAS,CACX,IAAIvwB,EAAcR,EAAQQ,aAAe,GACrC2B,EAAanC,EAAQmC,YAAc,GACvC/E,EAAKU,KAAOizB,EAAQ3zB,EAAKU,KAAM0C,EAAa2B,EAC9C,CACA1F,EAAS,KAAMW,EACjB,IKmNG8X,aAAa4b,IACb5b,aAAa4b,GAA+Br1B,KAC5CyZ,aAAa4b,IACb5b,aAAa4b,IACb5b,aAAa4b,IL/NlB,IAAqBC,CKgOrB,CAteIC,CAAwBj8B,KAAKyzB,OAAOnsB,SAAUtH,KAAM4f,GAwexD,SAA8BvQ,GAC5BA,EACG6sB,aAAaC,IACbD,aAAa7P,IACb6P,abviBL,SAAyBx1B,GACvB,OAAO,SAAU2B,EAAM+hB,GACrB,IAAIgS,EAAaC,QAAQh0B,EAAK0pB,oBACvB1pB,EAAK0pB,YACZ,IAAI1qB,EAAOgB,EAAKc,qBACTd,EAAKc,cACZ,IACMoD,EAAa6d,EAASkS,iBACxBlS,EAASkS,eAAeF,EAAY/0B,EAAMgB,EAE9C,CAAE,MAAOjG,GACPgoB,EAASkS,eAAiB,KAC1B51B,EAAOhE,MAAM,+CAAgDN,EAC/D,CACA,IACE,GACEmK,EAAa6d,EAAS2J,cACtB3J,EAAS2J,YAAYqI,EAAY/0B,EAAMgB,GAEvC,OAAO,CAEX,CAAE,MAAOjG,GACPgoB,EAAS2J,YAAc,KACvBrtB,EAAOhE,MAAM,qDAAsDN,EACrE,CACA,OAAO,CACT,CACF,Ca4gBkB+5B,CAAiCz1B,KAC9Cw1B,ab3gBL,SAA6Bx1B,GAC3B,OAAO,SAAU2B,EAAM+hB,GACrB,OAAQQ,GAAaviB,EAAM+hB,EAAU,YAAa1jB,EACpD,CACF,CaugBkBy1B,CAAqCz1B,KAClDw1B,abtgBL,SAAyBx1B,GACvB,OAAO,SAAU2B,EAAM+hB,GACrB,OAAOQ,GAAaviB,EAAM+hB,EAAU,WAAY1jB,EAClD,CACF,CakgBkBy1B,CAAiCz1B,KAC9Cw1B,aAAaC,GAAkCz1B,IACpD,CA/eI61B,CAAqBv8B,KAAKyzB,OAAOpkB,OACjCrP,KAAKw8B,wBACD7C,IACF35B,KAAK45B,aAAe,IAAID,EACtB35B,KAAKiL,QACLjL,KAAKyzB,OAAOtD,UACZnwB,KACA4f,EACA4a,GAEFx6B,KAAK45B,aAAa6C,cAGpBz8B,KAAK08B,gCAAgCzxB,GAGrCjL,KAAK66B,QAAU76B,IACjB,CAAC,O,4GAAA+uB,CAAAmB,EAAA,EAAA/vB,IAAA,SAAAa,MAcD,SAAOiK,GAEL,OADAjL,KAAKyzB,OAAO9C,OAAO1lB,GACZjL,IACT,GAAC,CAAAG,IAAA,YAAAa,MAED,SAAUiK,EAAS2lB,GAAa,IAAAzhB,EAAAse,EAAAkP,EAC1B1xB,EAAQ4R,UACVnW,GAAOkW,KAAK,CAAEC,SAAU5R,EAAQ4R,WAElC7c,KAAK08B,gCAAgCzxB,GACrC,IAAI2E,EAAa5P,KAAKiL,QAClBF,EAAU,CAAC,EAiBf,OAhBI6lB,IACF7lB,EAAU,CAAEA,QAAS6lB,IAGvB5wB,KAAKiL,QAAUsB,EAAgBqD,EAAY3E,EAASF,EAASrE,IAC7D1G,KAAKiL,QAAQqlB,mBAAqB/jB,EAChCqD,EAAW0gB,mBACXrlB,EACAF,GAGU,QAAZoE,EAAAnP,KAAKkP,eAAO,IAAAC,GAAZA,EAAcqc,UAAUxrB,KAAKiL,SAClB,QAAXwiB,EAAAztB,KAAKosB,cAAM,IAAAqB,GAAXA,EAAajC,UAAUxrB,KAAKiL,QAAQmhB,QACpCpsB,KAAKyzB,OAAOjI,UAAUxrB,KAAKiL,QAAS2lB,GACnB,QAAjB+L,EAAA38B,KAAK45B,oBAAY,IAAA+C,GAAjBA,EAAmBnR,UAAUxrB,KAAKiL,SAClCjL,KAAKw8B,wBACEx8B,IACT,GAAC,CAAAG,IAAA,YAAAa,MAED,WACE,OAAOhB,KAAKyzB,OAAOjD,SACrB,GAAC,CAAArwB,IAAA,MAAAa,MAED,WACE,IAAIqH,EAAOrI,KAAK48B,YAAY1wB,WACxBzD,EAAOJ,EAAKI,KAEhB,OADAzI,KAAKyzB,OAAOroB,IAAI/C,GACT,CAAEI,KAAMA,EACjB,GAAC,CAAAtI,IAAA,QAAAa,MAED,WACE,IAAIqH,EAAOrI,KAAK48B,YAAY1wB,WACxBzD,EAAOJ,EAAKI,KAEhB,OADAzI,KAAKyzB,OAAOlxB,MAAM8F,GACX,CAAEI,KAAMA,EACjB,GAAC,CAAAtI,IAAA,OAAAa,MAED,WACE,IAAIqH,EAAOrI,KAAK48B,YAAY1wB,WACxBzD,EAAOJ,EAAKI,KAEhB,OADAzI,KAAKyzB,OAAOjxB,KAAK6F,GACV,CAAEI,KAAMA,EACjB,GAAC,CAAAtI,IAAA,OAAAa,MAED,WACE,IAAIqH,EAAOrI,KAAK48B,YAAY1wB,WACxBzD,EAAOJ,EAAKI,KAEhB,OADAzI,KAAKyzB,OAAOvX,KAAK7T,GACV,CAAEI,KAAMA,EACjB,GAAC,CAAAtI,IAAA,UAAAa,MAED,WACE,IAAIqH,EAAOrI,KAAK48B,YAAY1wB,WACxBzD,EAAOJ,EAAKI,KAEhB,OADAzI,KAAKyzB,OAAOhxB,QAAQ4F,GACb,CAAEI,KAAMA,EACjB,GAAC,CAAAtI,IAAA,QAAAa,MAED,WACE,IAAIqH,EAAOrI,KAAK48B,YAAY1wB,WACxBzD,EAAOJ,EAAKI,KAEhB,OADAzI,KAAKyzB,OAAO/wB,MAAM2F,GACX,CAAEI,KAAMA,EACjB,GAAC,CAAAtI,IAAA,WAAAa,MAED,WACE,IAAIqH,EAAOrI,KAAK48B,YAAY1wB,WACxBzD,EAAOJ,EAAKI,KAEhB,OADAzI,KAAKyzB,OAAO9wB,SAAS0F,GACd,CAAEI,KAAMA,EACjB,GAAC,CAAAtI,IAAA,mBAAAa,MAED,SAAiBqH,GACf,OAAOrI,KAAKyzB,OAAOtC,iBAAiB9oB,EACtC,GAAC,CAAAlI,IAAA,kBAAAa,MAED,SAAgBslB,GACd,OAAOtmB,KAAKyzB,OAAOrC,gBAAgB9K,EACrC,GAAC,CAAAnmB,IAAA,sBAAAa,MAED,SAAoB+E,GAClB,OAAO/F,KAAK68B,cAAavrB,GAAC,CAAElB,KAAM,UAAarK,GACjD,GAAC,CAAA5F,IAAA,gBAAAa,MAED,SAAc+E,GACZ,OAAK/F,KAAKosB,OAEHpsB,KAAKosB,OAAOyQ,cAAc92B,GAFR,IAG3B,GAAC,CAAA5F,IAAA,wBAAAa,MAED,WACE,IAAI4e,EAAUqa,KAETj6B,KAAK88B,iCAEN98B,KAAKiL,QAAQ8xB,iBACb/8B,KAAKiL,QAAQ+xB,6BCrNrB,SAAmC52B,EAAQ62B,EAASC,GAClD,GAAK92B,EAAL,CAGA,IAAI+2B,EAEJ,GAA0C,mBAA/BF,EAAQG,mBACjBD,EAAaF,EAAQG,wBAChB,GAAIh3B,EAAO+xB,QAAS,CAEzB,IADAgF,EAAa/2B,EAAO+xB,QACbgF,EAAWC,oBAChBD,EAAaA,EAAWC,mBAE1BH,EAAQG,mBAAqBD,CAC/B,CAEAF,EAAQI,wBAER,IAAIznB,EAAK,WACP,IAAIvO,EAAO4I,MAAMtP,UAAUuG,MAAMrG,KAAKqL,UAAW,IASrD,SAA+B9F,EAAQuC,EAAG20B,EAAKj2B,GACzCjB,EAAOm3B,uBACJl2B,EAAK,KACRA,EAAK,GAAKjB,EAAOm3B,sBAEdl2B,EAAK,KACRA,EAAK,GAAKjB,EAAOm3B,qBAAqBC,iBAExCp3B,EAAOm3B,qBAAuB,MAGhC,IAAI9vB,EAAM9E,EAAE80B,wBAAwBxnB,MAAMtN,EAAGtB,GAEzCi2B,GACFA,EAAIrnB,MAAM7P,EAAQiB,GAMR,cAARoG,IACF9E,EAAEiyB,wBAA0B,EAEhC,CA/BI8C,CAAsBt3B,EAAQ62B,EAASE,EAAY91B,EACrD,EACI61B,IACFtnB,EAAGwnB,mBAAqBD,GAE1B/2B,EAAO+xB,QAAUviB,CAtBjB,CAuBF,CD6LQ+nB,CAAkC/d,EAAS5f,MACvCA,KAAK65B,aAAe75B,KAAKiL,QAAQ2yB,yBACnC59B,KAAK65B,YAAYja,EAAS5f,MAE5BA,KAAK88B,gCAAiC,GAGrC98B,KAAK69B,iCAEN79B,KAAKiL,QAAQ6yB,4BACb99B,KAAKiL,QAAQ8yB,8BC5KrB,SAAoC33B,EAAQ62B,EAASC,GACnD,GAAK92B,EAAL,CAKgC,mBAAvBA,EAAO43B,aACd53B,EAAO43B,YAAYC,eAEnB73B,EAAO83B,oBAAoB,qBAAsB93B,EAAO43B,aAG1D,IAAIG,EAAmB,SAAUC,GAC/B,IAAIC,EAAQC,EAASC,EACrB,IACEF,EAASD,EAAIC,MACf,CAAE,MAAO/zB,GACP+zB,OAASl2B,CACX,CACA,IACEm2B,EAAUF,EAAIE,OAChB,CAAE,MAAOh0B,GACPg0B,EAAU,yDACZ,CACA,IACEC,EAASH,EAAIG,QACRF,GAAUE,IACbF,EAASE,EAAOF,OAChBC,EAAUC,EAAOD,QAErB,CAAE,MAAOh0B,GACP,CAEG+zB,IACHA,EAAS,0DAGPpB,GAAWA,EAAQuB,0BACrBvB,EAAQuB,yBAAyBH,EAAQC,EAE7C,EACAH,EAAiBF,cAAgBf,EACjC92B,EAAO43B,YAAcG,EACrB/3B,EAAOq4B,iBAAiB,qBAAsBN,EAxC9C,CAyCF,CDkIQR,CAAmC/d,EAAS5f,MAC5CA,KAAK69B,gCAAiC,EAG5C,GAAC,CAAA19B,IAAA,0BAAAa,MAED,SAAwBoE,EAASvC,EAAKwC,EAAQC,EAAO5C,EAAOqD,GAC1D,GACG/F,KAAKiL,QAAQ8xB,iBACb/8B,KAAKiL,QAAQ+xB,yBAFhB,CAWA,GACEh9B,KAAKiL,QAAQyzB,wBACb1+B,KAAKy6B,UACK,OAAV/3B,GACQ,KAARG,EAEA,MAAO,YAGT,IAAIwF,EACA6rB,EAAY3nB,EACdnH,EACAvC,EACAwC,EACAC,EACA5C,EACA,UACA,qBACA+C,IAEE8G,EAAU7J,IACZ2F,EAAOrI,KAAK48B,YAAY,CAACx3B,EAAS1C,EAAOqD,KACpCwvB,oBAAsBrB,EAClB3nB,EAAU1J,IACnBwF,EAAOrI,KAAK48B,YAAY,CAACx3B,EAASvC,EAAKkD,KAClCwvB,oBAAsBrB,GAE3B7rB,EAAOrI,KAAK48B,YAAY,CAACx3B,EAASW,KAC7BmuB,UAAYA,EAEnB7rB,EAAKW,MAAQhJ,KAAKiL,QAAQ0zB,mBAC1Bt2B,EAAK0pB,aAAc,EACnB/xB,KAAKyzB,OAAOroB,IAAI/C,EAtChB,CAuCF,GAEA,CAAAlI,IAAA,wBAAAa,MAYA,WAAwB,IAAAiW,EAAA,KACtB,GAAKjX,KAAKiL,QAAQyzB,wBAA2B1+B,KAAKy6B,SAAlD,CAoCA,IACEl5B,MAAMq9B,kBAjCkB,SAACl8B,EAAOm8B,GAChC,GAAI5nB,EAAKhM,QAAQyzB,wBACXznB,EAAK2jB,uBAAwB,CAQ/B,GAFA3jB,EAAK2jB,wBAA0B,GAE1Bl4B,EAIH,OAIFA,EAAMo8B,cAAe,EAKrB7nB,EAAKwmB,wBAAwB/6B,EAAM0C,QAAS,KAAM,KAAM,KAAM1C,EAChE,CAIF,OAAOA,EAAM8D,KACf,CAKA,CAAE,MAAOpE,GACPpC,KAAKiL,QAAQyzB,wBAAyB,EACtC1+B,KAAK0C,MAAM,iCAAkCN,EAC/C,CAvCA,CAwCF,GAAC,CAAAjC,IAAA,2BAAAa,MAED,SAAyBq9B,EAAQC,GAC/B,GACGt+B,KAAKiL,QAAQ6yB,4BACb99B,KAAKiL,QAAQ8yB,0BAFhB,CAOA,IAAI34B,EAAU,6CACd,GAAIi5B,EACF,GAAIA,EAAOj5B,QACTA,EAAUi5B,EAAOj5B,YACZ,CACL,IAAI25B,EAAexyB,EAAY8xB,GAC3BU,EAAa/9B,QACfoE,EAAU25B,EAAa/9B,MAE3B,CAEF,IAIIqH,EAJAtC,EACDs4B,GAAUA,EAAOb,iBACjBc,GAAWA,EAAQd,gBAGlBjxB,EAAU8xB,GACZh2B,EAAOrI,KAAK48B,YAAY,CAACx3B,EAASi5B,EAAQt4B,KAE1CsC,EAAOrI,KAAK48B,YAAY,CAACx3B,EAASi5B,EAAQt4B,KACrCmuB,UAAY3nB,EACfnH,EACA,GACA,EACA,EACA,KACA,qBACA,GACAK,IAGJ4C,EAAKW,MAAQhJ,KAAKiL,QAAQ0zB,mBAC1Bt2B,EAAK0pB,aAAc,EACnB1pB,EAAKc,cAAgBd,EAAKc,eAAiB,GAC3Cd,EAAKc,cAAchC,KAAKm3B,GACxBt+B,KAAKyzB,OAAOroB,IAAI/C,EArChB,CAsCF,GAAC,CAAAlI,IAAA,OAAAa,MAED,SAAKY,EAAGmE,EAASi5B,GACf,IACE,IAAIC,EASJ,GAPEA,EADE1yB,EAAaxG,GACPA,EAEA,WACN,OAAOA,GAAW,CAAC,CACrB,GAGGwG,EAAa3K,GAChB,OAAOA,EAGT,GAAIA,EAAEs9B,QACJ,OAAOt9B,EAGT,IAAKA,EAAEu9B,iBAwBL,IAAK,IAAIz+B,KAvBTkB,EAAEu9B,iBAAmB,WACfH,GAAWzyB,EAAayyB,IAC1BA,EAAQ/oB,MAAMjW,KAAMkM,WAEtB,IACE,OAAOtK,EAAEqU,MAAMjW,KAAMkM,UACvB,CAAE,MAAOsrB,GACP,IAAIp1B,EAAIo1B,EAUR,MATIp1B,GAAKgE,OAAOm3B,uBAAyBn7B,IACnCmK,EAASnK,EAAG,YACdA,EAAI,IAAImE,OAAOnE,IAEjBA,EAAEo7B,gBAAkByB,KAAW,CAAC,EAChC78B,EAAEo7B,gBAAgB4B,eAAiBx9B,EAAEJ,WAErC4E,OAAOm3B,qBAAuBn7B,GAE1BA,CACR,CACF,EAEAR,EAAEu9B,iBAAiBD,SAAU,EAEZt9B,EACX2K,EAAS3K,EAAGlB,IAAkB,qBAATA,IACvBkB,EAAEu9B,iBAAiBz+B,GAAQkB,EAAElB,IAKnC,OAAOkB,EAAEu9B,gBACX,CAAE,MAAO70B,GAEP,OAAO1I,CACT,CACF,GAAC,CAAAzB,IAAA,eAAAa,MAED,WACE,IAAIwP,EnCiLR,SAA8BnJ,GAI5B,IAHA,IAAI+I,EAAMQ,EAAU5H,EAChBpB,EAEKtE,EAAI,EAAGC,EAAI8D,EAAK7D,OAAQF,EAAIC,IAAKD,EAIxC,OADUlC,EAFVwG,EAAMP,EAAK/D,KAIT,IAAK,UACE8M,GAAQ7G,EAAcF,EAAiBzB,GAC1CwI,EAAOxI,GACGoB,GAASO,EAAcD,EAAkB1B,KACnDoB,EAAQpB,GAEV,MACF,IAAK,SACHgJ,EAAWhJ,EAYjB,MANY,CACVwI,KAAMA,GAAQ,SACdQ,SAAUA,GAAY,CAAC,EACvB5H,MAAOA,EAIX,CmC/MgBuD,CAAuBL,WACnC,OAAOlM,KAAKyzB,OAAOzC,aAAaxgB,EAAMJ,KAAMI,EAAMI,SAAUJ,EAAMxH,MACpE,GAAC,CAAA7I,IAAA,iBAAAa,MAED,SAAeqa,GAAM,IAAAwW,EACF,QAAbA,EAAC7xB,KAAKkP,eAAO,IAAA2iB,GAAZA,EAAcxX,SAEnBra,KAAKkP,QAAQmL,QAAQglB,QAAQhkB,EAC/B,GAAC,CAAAlb,IAAA,uBAAAa,MAED,SAAqBuZ,GAAO,IAAA+kB,EACT,QAAbA,EAACt/B,KAAKkP,eAAO,IAAAowB,GAAZA,EAAcjlB,UAEnBE,EAAKjJ,GAAA,GAAQiJ,GAEbva,KAAKkP,QAAQmL,QAAQiB,cAAcf,GACrC,GAAC,CAAApa,IAAA,kCAAAa,MAED,SAAgCiK,GAAS,IAAAs0B,EAAAC,EAAAC,EAAAC,EAAAC,EACjCC,EAAS30B,EAAQ20B,SAAyB,QAAnBL,EAAIt0B,EAAQF,eAAO,IAAAw0B,OAAA,EAAfA,EAAiBK,QAC9CA,GACF5/B,KAAK6/B,eAAeD,GAEtB,IAAME,GACU,QAAdN,EAAAv0B,EAAQwoB,cAAM,IAAA+L,GAAY,QAAZA,EAAdA,EAAgBhE,kBAAU,IAAAgE,OAAA,EAA1BA,EAA4BM,eAC5B70B,EAAQ80B,aACR90B,EAAQ60B,eACO,QADKL,EACpBx0B,EAAQF,eAAO,IAAA00B,GAAQ,QAARA,EAAfA,EAAiBhM,cAAM,IAAAgM,GAAY,QAAZA,EAAvBA,EAAyBjE,kBAAU,IAAAiE,OAAA,EAAnCA,EAAqCK,gBACtB,QADkCJ,EACjDz0B,EAAQF,eAAO,IAAA20B,OAAA,EAAfA,EAAiBI,gBACF,QADcH,EAC7B10B,EAAQF,eAAO,IAAA40B,OAAA,EAAfA,EAAiBI,aACnB//B,KAAKggC,qBAAqB,CACxB,sBAAuBF,EACvB,wBAAyB,qBACzB,2BAA4B70B,EAAQuM,SAExC,GAEA,CAAArX,IAAA,0BAAAa,MACA,SAAwBoB,EAAGqS,GAIzB,OAHKA,IACHA,EAAK,IAAI9J,MAEJ3K,KAAKyzB,OAAOxC,wBAAwBxc,EAC7C,GAAC,CAAAtU,IAAA,cAAAa,MAED,SAAYoB,EAAGqS,GAIb,OAHKA,IACHA,EAAK,IAAI9J,MAEJ3K,KAAKyzB,OAAOvC,YAAYzc,EACjC,GAAC,CAAAtU,IAAA,WAAAa,MAED,WACE0F,GAAOlE,KACL,sHAEJ,GAAC,CAAArC,IAAA,cAAAa,MAED,SAAYqG,GACV,OAAOkF,EAAalF,EAAMX,GAAQ1G,KACpC,IAKA,EAAAG,IAAA,OAAAa,MA7ZA,SAAYiK,EAASwoB,GACnB,OAAIgG,GACKA,GAAU9I,OAAO1lB,GAASugB,UAAUvgB,GAE7CwuB,GAAY,IAAIvJ,EAAQjlB,EAASwoB,EAEnC,GAAC,CAAAtzB,IAAA,gBAAAa,MAED,SAAqB04B,GACnBxJ,EAAQvvB,UAAU+4B,WAAaA,CACjC,GAAC,CAAAv5B,IAAA,eAAAa,MAoZD,SAAoBgR,EAAQ3K,GAC1B,GAAKoyB,GASL,OAAOA,GAAUznB,GAAQiE,MAAMwjB,GAAWpyB,GARxC,IAAMjC,EAAU,6BAChBsB,GAAOhE,MAAM0C,GACb,IAAM66B,EA4DZ,SAA2B54B,GACzB,IAAK,IAAI/D,EAAI,EAAG4E,EAAMb,EAAK7D,OAAQF,EAAI4E,IAAO5E,EAC5C,GAAIiJ,EAAalF,EAAK/D,IACpB,OAAO+D,EAAK/D,GAGhB,MACF,CAnE4B48B,CAAkB74B,GACpC44B,GACFA,EAAc,IAAI1+B,MAAM6D,GAK9B,IAAC,CAjfU,GA+iBb,SAAS60B,KACP,MACqB,oBAAX7zB,QAA0BA,QACjB,oBAATkP,MAAwBA,IAEpC,CA/CA6qB,GArgBMjQ,GAAO9V,GAAP8V,GAAO,SAmfK,mBAAAna,EAAA7J,UAAA1I,OAAI6D,EAAI,IAAA4I,MAAA8F,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ3O,EAAI2O,GAAA9J,UAAA8J,GAAA,OAAKka,GAAQkQ,aAAa,SAAU/4B,EAAK,GAAA+S,GAnf7D8V,GAAO,YAofQ,mBAAA9T,EAAAlQ,UAAA1I,OAAI6D,EAAI,IAAA4I,MAAAmM,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJhV,EAAIgV,GAAAnQ,UAAAmQ,GAAA,OAAK6T,GAAQkQ,aAAa,YAAa/4B,EAAK,GAAA+S,GApfnE8V,GAAO,YAqfQ,mBAAA5T,EAAApQ,UAAA1I,OAAI6D,EAAI,IAAA4I,MAAAqM,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJlV,EAAIkV,GAAArQ,UAAAqQ,GAAA,OAAK2T,GAAQkQ,aAAa,YAAa/4B,EAAK,GAAA+S,GArfnE8V,GAAO,MAsfE,mBAAA1T,EAAAtQ,UAAA1I,OAAI6D,EAAI,IAAA4I,MAAAuM,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJpV,EAAIoV,GAAAvQ,UAAAuQ,GAAA,OAAKyT,GAAQkQ,aAAa,MAAO/4B,EAAK,GAAA+S,GAtfvD8V,GAAO,QAufI,mBAAAxT,EAAAxQ,UAAA1I,OAAI6D,EAAI,IAAA4I,MAAAyM,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJtV,EAAIsV,GAAAzQ,UAAAyQ,GAAA,OAAKuT,GAAQkQ,aAAa,QAAS/4B,EAAK,GAAA+S,GAvf3D8V,GAAO,OAwfG,mBAAAmQ,EAAAn0B,UAAA1I,OAAI6D,EAAI,IAAA4I,MAAAowB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJj5B,EAAIi5B,GAAAp0B,UAAAo0B,GAAA,OAAKpQ,GAAQkQ,aAAa,OAAQ/4B,EAAK,GAAA+S,GAxfzD8V,GAAO,OAyfG,mBAAAqQ,EAAAr0B,UAAA1I,OAAI6D,EAAI,IAAA4I,MAAAswB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJn5B,EAAIm5B,GAAAt0B,UAAAs0B,GAAA,OAAKtQ,GAAQkQ,aAAa,OAAQ/4B,EAAK,GAAA+S,GAzfzD8V,GAAO,UA0fM,mBAAAuQ,EAAAv0B,UAAA1I,OAAI6D,EAAI,IAAA4I,MAAAwwB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJr5B,EAAIq5B,GAAAx0B,UAAAw0B,GAAA,OAAKxQ,GAAQkQ,aAAa,UAAW/4B,EAAK,GAAA+S,GA1f/D8V,GAAO,QA2fI,mBAAAyQ,EAAAz0B,UAAA1I,OAAI6D,EAAI,IAAA4I,MAAA0wB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJv5B,EAAIu5B,GAAA10B,UAAA00B,GAAA,OAAK1Q,GAAQkQ,aAAa,QAAS/4B,EAAK,GAAA+S,GA3f3D8V,GAAO,WA4fO,mBAAA2Q,EAAA30B,UAAA1I,OAAI6D,EAAI,IAAA4I,MAAA4wB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJz5B,EAAIy5B,GAAA50B,UAAA40B,GAAA,OAAK5Q,GAAQkQ,aAAa,WAAY/4B,EAAK,GAAA+S,GA5fjE8V,GAAO,mBA6fe,mBAAA6Q,EAAA70B,UAAA1I,OAAI6D,EAAI,IAAA4I,MAAA8wB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ35B,EAAI25B,GAAA90B,UAAA80B,GAAA,OAChC9Q,GAAQkQ,aAAa,mBAAoB/4B,EAAK,GAAA+S,GA9f5C8V,GAAO,kBA+fc,mBAAA+Q,EAAA/0B,UAAA1I,OAAI6D,EAAI,IAAA4I,MAAAgxB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ75B,EAAI65B,GAAAh1B,UAAAg1B,GAAA,OAC/BhR,GAAQkQ,aAAa,kBAAmB/4B,EAAK,GAAA+S,GAhgB3C8V,GAAO,OAigBG,mBAAAiR,EAAAj1B,UAAA1I,OAAI6D,EAAI,IAAA4I,MAAAkxB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ/5B,EAAI+5B,GAAAl1B,UAAAk1B,GAAA,OAAKlR,GAAQkQ,aAAa,OAAQ/4B,EAAK,GAAA+S,GAjgBzD8V,GAAO,eAkgBW,mBAAAmR,EAAAn1B,UAAA1I,OAAI6D,EAAI,IAAA4I,MAAAoxB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJj6B,EAAIi6B,GAAAp1B,UAAAo1B,GAAA,OAAKpR,GAAQkQ,aAAa,eAAgB/4B,EAAK,GAoD/E,IAAM2d,GAAiB,CACrBhF,YAAa,UACbxI,QAAS+K,GACT9W,YAAa81B,GAAAA,YACb1kB,SAAU0F,GACV+H,YAAa/H,GACboc,mBAAoBpc,GACpBS,SAAUT,GACVkM,SAAS,EACThD,SAAS,EACT2B,UAAU,EACV+F,YAAY,EACZte,yBAAyB,EACzBomB,WAAW,EACXyD,wBAAwB,EACxBpN,uBAAuB,EACvBsM,yBAAyB,EACzBxR,OExlBF,CACEX,SAAS,EACT2O,WAAW,EAGXoH,gBAAiB,CACfC,cAAe,EACfC,YAAa,IACbC,aAAc,GAEhBC,SAAU,CACR,CACExxB,KAAM,aACNpH,MAAO,CAAC,QAAS,cAIrBzG,MAAO,CACLs/B,WAAW,EACXC,UAAU,GAIZC,kBAAkB,EAClBC,cAAc,EACdC,cAAc,EAKdC,iBAAkB,CAChBC,UAAU,EACV5mB,OAAO,EACP6mB,KAAK,EACLC,MAAM,EACNC,OAAO,EACPC,MAAM,EACN,kBAAkB,EAClBC,OAAO,EACPC,QAAQ,EACR5hB,OAAO,EACP2B,QAAQ,EACR1J,MAAM,EACNjW,KAAK,EACL6/B,MAAM,GAIRC,eAAe,EAGfC,WAAY,WACZC,cAAe,UACfC,YAAa,YAIbC,eAAgB,CACdC,QAAQ,EACRC,SAAS,EACTC,aAAa,EACbC,gBAAgB,EAChBC,sBAAsB,EACtBC,gBAAgB,EAChBC,gBAAgB,EAChBC,mBAAmB,EACnBC,oBAAoB,EACpBC,sBAAsB,IFshBxBv0B,QG1lBF,CACEuc,SAAS,EACTzI,SAAU,mCH2lBZ,MI5kBA,SAAS0gB,GAAcriC,GAIrB,MAHoB,iBAATA,IACTA,EAAOkF,OAAOlF,IAETA,EAAKK,aACd,CAoBA,SAASiiC,GAAavxB,GACpBpS,KAAKqQ,IAAM,CAAC,EAER+B,aAAmBuxB,GACrBvxB,EAAQwxB,QAAQ,SAAU5iC,EAAOK,GAC/BrB,KAAK6jC,OAAOxiC,EAAML,EACpB,EAAGhB,MACMiQ,MAAMzD,QAAQ4F,GACvBA,EAAQwxB,QAAQ,SAAUE,GACxB9jC,KAAK6jC,OAAOC,EAAO,GAAIA,EAAO,GAChC,EAAG9jC,MACMoS,GACT/R,OAAO0jC,oBAAoB3xB,GAASwxB,QAAQ,SAAUviC,GACpDrB,KAAK6jC,OAAOxiC,EAAM+Q,EAAQ/Q,GAC5B,EAAGrB,KAEP,CAEA2jC,GAAahjC,UAAUkjC,OAAS,SAAUxiC,EAAML,GAC9CK,EAAOqiC,GAAcriC,GACrBL,EAtCF,SAAwBA,GAItB,MAHqB,iBAAVA,IACTA,EAAQuF,OAAOvF,IAEVA,CACT,CAiCUgjC,CAAehjC,GACvB,IAAIijC,EAAWjkC,KAAKqQ,IAAIhP,GACxBrB,KAAKqQ,IAAIhP,GAAQ4iC,EAAWA,EAAW,KAAOjjC,EAAQA,CACxD,EAEA2iC,GAAahjC,UAAUH,IAAM,SAAUa,GAErC,OADAA,EAAOqiC,GAAcriC,GACdrB,KAAKyX,IAAIpW,GAAQrB,KAAKqQ,IAAIhP,GAAQ,IAC3C,EAEAsiC,GAAahjC,UAAU8W,IAAM,SAAUpW,GACrC,OAAOS,EAAO9B,KAAKqQ,IAAKqzB,GAAcriC,GACxC,EAEAsiC,GAAahjC,UAAUijC,QAAU,SAAUl8B,EAAUmO,GACnD,IAAK,IAAIxU,KAAQrB,KAAKqQ,IAChBvO,EAAO9B,KAAKqQ,IAAKhP,IACnBqG,EAAS7G,KAAKgV,EAAS7V,KAAKqQ,IAAIhP,GAAOA,EAAMrB,KAGnD,EAEA2jC,GAAahjC,UAAUqM,QAAU,WAC/B,IAAIk3B,EAAQ,GAIZ,OAHAlkC,KAAK4jC,QAAQ,SAAU5iC,EAAOK,GAC5B6iC,EAAM/8B,KAAK,CAAC9F,EAAML,GACpB,GAzDF,SAAqBkjC,GAQnB,MAPe,CACbjY,KAAM,WACJ,IAAIjrB,EAAQkjC,EAAMlvB,QAClB,MAAO,CAAEnL,UAAgB1B,IAAVnH,EAAqBA,MAAOA,EAC7C,EAIJ,CAiDSmjC,CAAYD,EACrB,EAEA,OAnFA,SAAiB9xB,GACf,MAAuB,oBAAZgyB,QACF,IAAIT,GAAavxB,GAGnB,IAAIgyB,QAAQhyB,EACrB,ECVA,OARA,SAAiB3R,EAAKY,EAAMqJ,EAAa25B,EAAcj0B,GACrD,IAAIk0B,EAAO7jC,EAAIY,GACfZ,EAAIY,GAAQqJ,EAAY45B,GACpBD,GACFA,EAAaj0B,GAAMjJ,KAAK,CAAC1G,EAAKY,EAAMijC,GAExC,E,y/BC6DA,SAASC,GAAcC,GACrB,OAvBF,SAA8Br6B,GAS5B,IARA,IAKEs6B,EACAC,EAHEC,EAAM,GACRz8B,EAAM,EAIC5E,EAAI6G,EAAE3G,OAAS,EAAGF,GAAK,EAAGA,IAAK,CAGtC,GAFAmhC,EAAUG,GAAoBz6B,EAAE7G,IAChCohC,EAAcx8B,EARI28B,EAQEF,EAAInhC,OAA2BihC,EAAQjhC,OACvDF,EAAI6G,EAAE3G,OAAS,GAAKkhC,GAAeI,GAAgB,CACrDH,EAAI7nB,QAAQ,OACZ,KACF,CACA6nB,EAAI7nB,QAAQ2nB,GACZv8B,GAAOu8B,EAAQjhC,MACjB,CACA,OAAOmhC,EAAI1qB,KAjBK,MAkBlB,CAGS8qB,CAtCT,SAAqBP,GAInB,IAHA,IAEIQ,EADAL,EAAM,GAEDrxB,EAAS,EAAGkxB,GAAQlxB,EAHZ,IAIf0xB,EAAkBC,GAAgBT,KACkB,SAA5BQ,EAAgBE,QAFQ5xB,IAKhDqxB,EAAI7nB,QAAQkoB,GACZR,EAAOA,EAAKW,WAEd,OAAOR,CACT,CAyB8BS,CAAYZ,GAC1C,CAEA,SAASI,GAAoBS,GAC3B,IAAKA,IAASA,EAAKH,QACjB,MAAO,GAET,IAAIP,EAAM,CAACU,EAAKH,SACZG,EAAKtqB,IACP4pB,EAAIx9B,KAAK,IAAMk+B,EAAKtqB,IAElBsqB,EAAKC,SACPX,EAAIx9B,KAAK,IAAMk+B,EAAKC,QAAQrrB,KAAK,MAClC,IACsCvQ,EADtCC,EAAAC,GACuBy7B,EAAKr7B,YAAU,IAAvC,IAAAL,EAAA1E,MAAAyE,EAAAC,EAAA3H,KAAA6H,MAAyC,KAA9B07B,EAAS77B,EAAA1I,MAClB2jC,EAAIx9B,KAAK,IAAMo+B,EAAUplC,IAAM,KAAOolC,EAAUvkC,MAAQ,KAC1D,CAAC,OAAA2F,GAAAgD,EAAAvH,EAAAuE,EAAA,SAAAgD,EAAA/H,GAAA,CAED,OAAO+iC,EAAI1qB,KAAK,GAClB,CAiBA,SAASgrB,GAAgBT,GACvB,IAAKA,IAASA,EAAKU,QACjB,OAAO,KAET,IACE/P,EADEwP,EAAM,CAAC,EAEXA,EAAIO,QAAUV,EAAKU,QAAQxjC,cACvB8iC,EAAKzpB,KACP4pB,EAAI5pB,GAAKypB,EAAKzpB,KAEhBoa,EAAYqP,EAAKrP,YACqB,iBAAdA,IACtBwP,EAAIW,QAAUnQ,EAAU9qB,MAAM,QAGhCs6B,EAAI36B,WAAa,GACjB,IAAK,IAALyU,EAAA,EAAAnE,EAFiB,CAAC,OAAQ,OAAQ,QAAS,OAETmE,EAAAnE,EAAA9W,OAAAib,IAAE,CAA/B,IAAM8mB,EAASjrB,EAAAmE,GACZxF,EAAOurB,EAAKgB,aAAaD,GAC3BtsB,GACF0rB,EAAI36B,WAAW7C,KAAK,CAAEhH,IAAKolC,EAAWvkC,MAAOiY,GAEjD,CACA,OAAO0rB,CACT,C,2jECnHA,IAAMpiB,GAAW,CACfkjB,SAAS,EACTC,wBAAwB,EACxBC,qBAAqB,EACrBC,uBAAuB,EACvBC,oBAAoB,EACpBC,uBAAuB,EACvBC,uBAAuB,EACvBC,qBAAqB,EACrB56B,KAAK,EACL66B,KAAK,EACLC,YAAY,EACZC,cAAc,EACdC,uBAAuB,EACvBC,8BAA8B,GAGhC,SAASC,GAAQjC,EAAcj0B,GAE7B,IADA,IAAIgG,EACGiuB,EAAaj0B,GAAM5M,SACxB4S,EAAIiuB,EAAaj0B,GAAM4E,SACrB,GAAGoB,EAAE,IAAMA,EAAE,EAEnB,CAeA,SAASmwB,GAAqB96B,GAC5B,IAC+B/B,EADzB88B,EAAW,GAAG78B,EAAAC,GACA6B,GAAW,IAA/B,IAAA9B,EAAA1E,MAAAyE,EAAAC,EAAA3H,KAAA6H,MAAiC,KAAtB48B,EAAK/8B,EAAA1I,MACdwlC,EAASr/B,KAAK,IAAIyG,OAAO64B,EAAO,KAClC,CAAC,OAAA9/B,GAAAgD,EAAAvH,EAAAuE,EAAA,SAAAgD,EAAA/H,GAAA,CACD,OAAO,SAAU2f,GACf,IAAMlgB,EAnBV,SAA6BkgB,GAC3B,IAAKA,IAAgBA,EAAYvX,WAC/B,OAAO,KAET,IACqBqD,EADgBC,EAAA1D,GAAvB2X,EAAYvX,YACL,IAArB,IAAAsD,EAAArI,MAAAoI,EAAAC,EAAAtL,KAAA6H,MAAuB,KAAZM,EAACkD,EAAArM,MACV,GAAc,SAAVmJ,EAAEhK,IACJ,OAAOgK,EAAEnJ,KAEb,CAAC,OAAA2F,GAAA2G,EAAAlL,EAAAuE,EAAA,SAAA2G,EAAA1L,GAAA,CACD,OAAO,IACT,CAQiB8kC,CAAoBnlB,GACjC,IAAKlgB,EACH,OAAO,EAET,IAAK,IAALod,EAAA,EAAAkoB,EAAgBH,EAAQ/nB,EAAAkoB,EAAAnjC,OAAAib,IAAE,CACxB,GADUkoB,EAAAloB,GACJjQ,KAAKnN,GACT,OAAO,CAEX,CACA,OAAO,CACT,CACF,CAAC,IAEKs4B,GAAY,WAgCf,O,4GAAA5K,CA/BD,SAAA4K,EAAY1uB,EAASklB,EAAW0K,EAAS+L,EAASC,I,4FAAWz3B,CAAA,KAAAuqB,G,oHAAAvf,CAAA,gCAk4BlC,WACzBpa,KAAK8mC,gBAAgB,eACvB,GAn4BE9mC,KAAKiL,QAAUA,EACf,IAAI87B,EAAiB97B,EAAQ87B,gBACL,IAApB97B,EAAQwgB,UAAwC,IAAnBsb,EAC/B/mC,KAAK+mC,eAAiB,CAAC,GAElBx6B,EAASw6B,EAAgB,YAC5BA,EAAiBxkB,IAEnBviB,KAAK+mC,eAAiBx6B,EAAQgW,GAAUwkB,IAE1C/mC,KAAKgnC,qBACLhnC,KAAKmwB,UAAYA,EACjBnwB,KAAK66B,QAAUA,EACf76B,KAAKwI,WAAaqyB,EAAQpH,OAAOnsB,SAASkB,WAC1CxI,KAAK4mC,QAAUA,GAAW,CAAC,EAC3B5mC,KAAK6mC,UAAYA,GAAa,CAAC,EAC/B7mC,KAAKqkC,aAAe,CAClBoB,QAAS,GACTr6B,IAAK,GACL86B,WAAY,GACZC,aAAc,IAEhBnmC,KAAKinC,cAAgB,CACnBhB,IAAK,GACLE,aAAc,GACde,sBAAuB,IAGzBlnC,KAAKmnC,UAAYnnC,KAAK4mC,QAAQlhC,SAC9B1F,KAAKonC,UAAYpnC,KAAKmnC,WAAannC,KAAKmnC,UAAUlhC,IACpD,EAAC,EAAA9F,IAAA,qBAAAa,MAED,WAAqB,IAAAqmC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACb78B,EAAUjL,KAAKiL,QACrBjL,KAAK+nC,qBAAuB1L,QACE,QADKgL,EACjCp8B,EAAQ88B,4BAAoB,IAAAV,EAAAA,EAAkB,QAAlBC,EAAIr8B,EAAQmhB,cAAM,IAAAkb,OAAA,EAAdA,EAAgB3E,eAElD3iC,KAAKgoC,kBAAoB/8B,EAAQ+8B,kBACjChoC,KAAKumC,qBAAuBA,GAAqBt7B,EAAQQ,aACzDzL,KAAKioC,YAA4B,QAAjBV,EAAGt8B,EAAQmhB,cAAM,IAAAmb,OAAA,EAAdA,EAAgBU,YACnCjoC,KAAKkiC,kBAAiC,QAAdsF,EAAAv8B,EAAQmhB,cAAM,IAAAob,OAAA,EAAdA,EAAgBtF,mBAAoB,CAAC,EAC7DliC,KAAKkoC,aAAe,CACJ,QADIT,EAClBx8B,EAAQmhB,cAAM,IAAAqb,OAAA,EAAdA,EAAgB7E,WACF,QADY8E,EAC1Bz8B,EAAQmhB,cAAM,IAAAsb,OAAA,EAAdA,EAAgB5E,YACF,QADa6E,EAC3B18B,EAAQmhB,cAAM,IAAAub,OAAA,EAAdA,EAAgB9E,eAChB1yB,OAAOksB,SACTr8B,KAAKmoC,eAAiB,CACN,QADMP,EACpB38B,EAAQmhB,cAAM,IAAAwb,OAAA,EAAdA,EAAgBQ,cACF,QADeP,EAC7B58B,EAAQmhB,cAAM,IAAAyb,OAAA,EAAdA,EAAgBQ,eACF,QADgBP,EAC9B78B,EAAQmhB,cAAM,IAAA0b,OAAA,EAAdA,EAAgBQ,kBAChBn4B,OAAOksB,QACX,GAAC,CAAAl8B,IAAA,YAAAa,MAED,SAAUiK,GACRjL,KAAKiL,QAAUsB,EAAQvM,KAAKiL,QAASA,GACrC,IAAI87B,EAAiB97B,EAAQ87B,eACvBwB,EAAch8B,EAAQvM,KAAK+mC,iBACT,IAApB97B,EAAQwgB,UAAwC,IAAnBsb,EAC/B/mC,KAAK+mC,eAAiB,CAAC,GAElBx6B,EAASw6B,EAAgB,YAC5BA,EAAiBxkB,IAEnBviB,KAAK+mC,eAAiBx6B,EAAQgW,GAAUwkB,IAE1C/mC,KAAKgnC,qBACLhnC,KAAKy8B,WAAW8L,EAClB,GAEA,CAAApoC,IAAA,aAAAa,MACA,SAAWunC,IACLvoC,KAAK+mC,eAAetB,SAAa8C,GAAeA,EAAY9C,SAG7DzlC,KAAK+mC,eAAetB,SACrB8C,GACAA,EAAY9C,SAEZzlC,KAAKwoC,sBANLxoC,KAAKyoC,qBASHzoC,KAAK+mC,eAAe37B,KAASm9B,GAAeA,EAAYn9B,KAEhDpL,KAAK+mC,eAAe37B,KAAOm9B,GAAeA,EAAYn9B,KAChEpL,KAAK0oC,sBAFL1oC,KAAK2oC,qBAKH3oC,KAAK+mC,eAAed,KAASsC,GAAeA,EAAYtC,KAEhDjmC,KAAK+mC,eAAed,KAAOsC,GAAeA,EAAYtC,KAChEjmC,KAAK4oC,kBAFL5oC,KAAK6oC,iBAML7oC,KAAK+mC,eAAeb,YAClBqC,GAAeA,EAAYrC,YAI5BlmC,KAAK+mC,eAAeb,YACrBqC,GACAA,EAAYrC,YAEZlmC,KAAK8oC,yBANL9oC,KAAK+oC,wBAUL/oC,KAAK+mC,eAAeZ,cAClBoC,GAAeA,EAAYpC,cAI5BnmC,KAAK+mC,eAAeZ,cACrBoC,GACAA,EAAYpC,cAEZnmC,KAAKgpC,2BANLhpC,KAAKipC,0BAULjpC,KAAK+mC,eAAeX,uBAClBmC,GAAeA,EAAYnC,uBAI5BpmC,KAAK+mC,eAAeX,uBACrBmC,GACAA,EAAYnC,uBAEZpmC,KAAKkpC,oCANLlpC,KAAKmpC,iCAQT,GAAC,CAAAhpC,IAAA,sBAAAa,MAED,WACEslC,GAAQtmC,KAAKqkC,aAAc,UAC7B,GAAC,CAAAlkC,IAAA,oBAAAa,MAED,WACE,IAAMsU,EAAOtV,KAEb,SAASopC,EAAS1oC,EAAM2oC,GAClB3oC,KAAQ2oC,GAAO98B,EAAa88B,EAAI3oC,KAClCgD,GAAQ2lC,EAAK3oC,EAAM,SAAU4jC,GAC3B,OAAOhvB,EAAKulB,QAAQyO,KAAKhF,EAC3B,EAEJ,CAEA,GAAI,mBAAoBtkC,KAAK4mC,QAAS,CACpC,IAAM2C,EAAOvpC,KAAK4mC,QAAQ/jB,eAAeliB,UACzC+C,GACE6lC,EACA,OACA,SAAUjF,GACR,OAAO,SAAUtyB,EAAQnP,GACvB,IAAM2mC,EAAcC,GAAa5mC,GAmBjC,OAlBI0J,EAAS1J,EAAK,WAAa2mC,KAC7B3mC,EAAM2mC,EAAc3mC,EAAIrB,WAAaqB,EACjC7C,KAAK0pC,eACP1pC,KAAK0pC,cAAc13B,OAASA,EAC5BhS,KAAK0pC,cAAc7mC,IAAMA,EACzB7C,KAAK0pC,cAAc73B,YAAc,KACjC7R,KAAK0pC,cAAcn3B,cAAgBhG,IACnCvM,KAAK0pC,cAAc33B,YAAc,MAEjC/R,KAAK0pC,cAAgB,CACnB13B,OAAQA,EACRnP,IAAKA,EACLgP,YAAa,KACbU,cAAehG,IACfwF,YAAa,OAIZuyB,EAAKruB,MAAMjW,KAAMkM,UAC1B,CACF,EACAlM,KAAKqkC,aACL,WAGF3gC,GACE6lC,EACA,mBACA,SAAUjF,GACR,OAAO,SAAUR,EAAQ9iC,GAiBvB,OAfKhB,KAAK0pC,gBACR1pC,KAAK0pC,cAAgB,CAAC,GAEpBn9B,EAASu3B,EAAQ,WAAav3B,EAASvL,EAAO,YAC5CsU,EAAKyxB,eAAenB,wBACjB5lC,KAAK0pC,cAAcx3B,kBACtBlS,KAAK0pC,cAAcx3B,gBAAkB,CAAC,GAExClS,KAAK0pC,cAAcx3B,gBAAgB4xB,GAAU9iC,GAGlB,iBAAzB8iC,EAAOpiC,gBACT1B,KAAK0pC,cAAcC,qBAAuB3oC,IAGvCsjC,EAAKruB,MAAMjW,KAAMkM,UAC1B,CACF,EACAlM,KAAKqkC,aACL,WAGF3gC,GACE6lC,EACA,OACA,SAAUjF,GACR,OAAO,SAAUv7B,GACf,IAAMsgC,EAAMrpC,KAEZ,SAAS4pC,IACP,GAAIP,EAAIK,gBACgC,OAAlCL,EAAIK,cAAc73B,cACpBw3B,EAAIK,cAAc73B,YAAc,EAC5ByD,EAAKyxB,eAAelB,qBACtBwD,EAAIK,cAAc/hC,QAAUoB,GAE9BsgC,EAAIQ,gBAAkBv0B,EAAKw0B,eACzBT,EAAIK,cACJ,WACAvhC,IAGAkhC,EAAIpS,WAAa,IACnBoS,EAAIK,cAAcn3B,cAAgBhG,KAEhC88B,EAAIpS,WAAa,GAAG,CACtB,IAAMllB,EAAcxF,IACpB88B,EAAIK,cAAc33B,YAAcA,EAEhC,IAAIK,EAAU,KAGd,GAFAi3B,EAAIK,cAAcK,sBAChBV,EAAIhS,kBAAkB,gBACpB/hB,EAAKyxB,eAAerB,uBAAwB,CAC9C,IAAMsE,EACJ10B,EAAKyxB,eAAerB,uBACtBtzB,EAAU,CAAC,EACX,IACE,IAAI0xB,EACJ,IAAsB,IAAlBkG,EAAwB,CAC1B,IAAMC,EAAaZ,EAAIa,wBACvB,GAAID,EAAY,CACd,IACI5hB,EAAOrnB,EACQiJ,EADFC,EAAAN,GADLqgC,EAAWE,OAAO9/B,MAAM,YAEjB,IAAnB,IAAAH,EAAAjF,MAAAgF,EAAAC,EAAAlI,KAAA6H,MAAqB,CAEnBi6B,GADAzb,EADUpe,EAAAjJ,MACAqJ,MAAM,OACD2K,QACfhU,EAAQqnB,EAAMpO,KAAK,MACnB7H,EAAQ0xB,GAAU9iC,CACpB,CAAC,OAAA2F,GAAAuD,EAAA9H,EAAAuE,EAAA,SAAAuD,EAAAtI,GAAA,CACH,CACF,KAAO,KACwBkL,EADxBC,EAAAnD,GACWogC,GAAa,IAA7B,IAAAj9B,EAAA9H,MAAA6H,EAAAC,EAAA/K,KAAA6H,MAA+B,KAApB8tB,EAAC7qB,EAAA9L,MACVoR,EAAQulB,GAAK0R,EAAIhS,kBAAkBM,EACrC,CAAC,OAAAhxB,GAAAoG,EAAA3K,EAAAuE,EAAA,SAAAoG,EAAAnL,GAAA,CACH,CACF,CAAE,MAAO0I,GACP,CAGJ,CACA,IAAI0G,EAAO,KACX,GAAIsE,EAAKyxB,eAAepB,oBACtB,IACE30B,EAAOq4B,EAAIlS,YACb,CAAE,MAAO7sB,GACP,CAGJ,IAAI6H,EAAW,MACXnB,GAAQoB,KACVD,EAAW,CAAC,EACRnB,IAEAsE,EAAK80B,kBACHf,EAAIK,cAAcK,uBAGpB53B,EAASnB,KAAOsE,EAAK+0B,UAAUr5B,GAE/BmB,EAASnB,KAAOA,GAGhBoB,IACFD,EAASC,QAAUA,IAGnBD,IACFk3B,EAAIK,cAAcv3B,SAAWA,GAE/B,IACE,IAAIgM,EAAOkrB,EAAInrB,OACfC,EAAgB,OAATA,EAAgB,IAAMA,EAC7BkrB,EAAIK,cAAc73B,YAAcsM,EAChC7I,EAAKg1B,uBACHjB,EAAIQ,gBACJ93B,EACAoM,GAEFkrB,EAAIQ,gBAAgB7gC,MAClBsM,EAAK6a,UAAUve,gBAAgBuM,GACjC7I,EAAKi1B,kBAAkBlB,EAAIK,cAC7B,CAAE,MAAOp/B,GACP,CAEJ,CAEJ,CAuBA,OArBA8+B,EAAS,SAAUC,GACnBD,EAAS,UAAWC,GACpBD,EAAS,aAAcC,GAGrB,uBAAwBA,GACxB98B,EAAa88B,EAAIrS,oBAEjBtzB,GAAQ2lC,EAAK,qBAAsB,SAAU/E,GAC3C,OAAOhvB,EAAKulB,QAAQyO,KAClBhF,OACAn8B,EACAyhC,EAEJ,GAEAP,EAAIrS,mBAAqB4S,EAEvBP,EAAIK,eAAiBp0B,EAAKk1B,oBAC5BnB,EAAIK,cAAcljC,OAAQ,IAAIjF,OAAQiF,OAEjC89B,EAAKruB,MAAMjW,KAAMkM,UAC1B,CACF,EACAlM,KAAKqkC,aACL,UAEJ,CAEI,UAAWrkC,KAAK4mC,SAClBljC,GACE1D,KAAK4mC,QACL,QACA,SAAUtC,GACR,OAAO,SAAUmG,EAAKC,GACpB,IAGI7nC,EAHEwE,EAAI4I,MAAAtP,UAAAuG,MAAArG,KAAOqL,WACXpB,EAAQzD,EAAK,GACf2K,EAAS,MAEPw3B,EAAcC,GAAa3+B,GAC7ByB,EAASzB,EAAO,WAAa0+B,EAC/B3mC,EAAM2mC,EAAc1+B,EAAMtJ,WAAasJ,EAC9BA,IACTjI,EAAMiI,EAAMjI,IACRiI,EAAMkH,SACRA,EAASlH,EAAMkH,SAGf3K,EAAK,IAAMA,EAAK,GAAG2K,SACrBA,EAAS3K,EAAK,GAAG2K,QAEnB,IAAMpB,EAAW,CACfoB,OAAQA,EACRnP,IAAKA,EACLgP,YAAa,KACbU,cAAehG,IACfwF,YAAa,MAEf,GAAI1K,EAAK,IAAMA,EAAK,GAAG+K,QAAS,CAG9B,IAAMu4B,EAAav4B,GAAQ/K,EAAK,GAAG+K,SAEnCxB,EAAS+4B,qBAAuBgB,EAAWnqC,IAAI,gBAE3C8U,EAAKyxB,eAAenB,wBACtBh1B,EAASsB,gBAAkBoD,EAAKs1B,aAC9BD,EACAr1B,EAAKyxB,eAAenB,uBAG1B,CAEItwB,EAAKyxB,eAAelB,qBAClBx+B,EAAK,IAAMA,EAAK,GAAG2J,KACrBJ,EAASjJ,QAAUN,EAAK,GAAG2J,KAE3B3J,EAAK,KACJkF,EAASlF,EAAK,GAAI,WACnBA,EAAK,GAAG2J,OAERJ,EAASjJ,QAAUN,EAAK,GAAG2J,OAG/B,IAAM65B,EAAiBv1B,EAAKw0B,eAC1Bl5B,EACA,aACAzI,GAQF,OANImN,EAAKk1B,oBACP55B,EAASpK,OAAQ,IAAIjF,OAAQiF,OAKxB89B,EAAKruB,MAAMjW,KAAMqH,GAAMsd,KAAK,SAAU/d,GAC3C,IAAMmL,EAAcxF,IACpBqE,EAASmB,YAAcA,EACvBnB,EAASiB,YAAcjL,EAAKsX,OAC5B5I,EAAKg1B,uBACHO,EACA94B,EACAnL,EAAKsX,QAGPtN,EAASm5B,sBAAwBnjC,EAAKwL,QAAQ5R,IAAI,gBAClD,IAAI4R,EAAU,KACVkD,EAAKyxB,eAAerB,yBACtBtzB,EAAUkD,EAAKs1B,aACbhkC,EAAKwL,QACLkD,EAAKyxB,eAAerB,yBAGxB,IAAI10B,EAAO,KAiCX,OAhCIsE,EAAKyxB,eAAepB,qBACG,mBAAd/+B,EAAKy7B,OAIdrxB,EAAOpK,EAAKE,QAAQu7B,SAGpBjwB,GAAWpB,KACbJ,EAASuB,SAAW,CAAC,EACjBnB,IAEuB,mBAAdA,EAAK2T,KACd3T,EAAK2T,KAAK,SAAU0d,GAEhBA,GACA/sB,EAAK80B,kBAAkBx5B,EAASm5B,uBAEhCn5B,EAASuB,SAASnB,KAAOsE,EAAK+0B,UAAUhI,GAExCzxB,EAASuB,SAASnB,KAAOqxB,CAE7B,GAEAzxB,EAASuB,SAASnB,KAAOA,GAGzBoB,IACFxB,EAASuB,SAASC,QAAUA,IAGhCkD,EAAKi1B,kBAAkB35B,GAChBhK,CACT,EACF,CACF,EACA5G,KAAKqkC,aACL,UAGN,GAAC,CAAAlkC,IAAA,iBAAAa,MAED,SAAe4P,EAAUW,EAASV,GAOhC,OALED,EAASjJ,SACT3H,KAAKoqC,kBAAkBx5B,EAAS+4B,wBAEhC/4B,EAASjJ,QAAU3H,KAAKqqC,UAAUz5B,EAASjJ,UAEtC3H,KAAKmwB,UAAU2Z,eAAel5B,EAAUW,EAASV,EAC1D,GAAC,CAAA1Q,IAAA,oBAAAa,MAED,SAAkB8pC,GAChB,SAAOA,GACLv+B,EAASu+B,EAAa,WACtBA,EAAYppC,cAAcuF,SAAS,QAGvC,GAAC,CAAA9G,IAAA,yBAAAa,MAED,SAAuBwP,EAAOu6B,EAAW94B,GACnCzB,EAAMD,iBACRC,EAAMD,eAAe,0BACP,IAAZw6B,GACAvpC,WACFgP,EAAMD,eAAe0B,WAAaA,EAEtC,GAAC,CAAA9R,IAAA,YAAAa,MAED,SAAUu1B,GACR,OAAO1xB,KAAKF,UAAUm1B,EAAMj1B,KAAKK,MAAMqxB,GAAOv2B,KAAKiL,QAAQQ,aAC7D,GAAC,CAAAtL,IAAA,eAAAa,MAED,SAAagqC,EAAWhB,GACtB,IAAMiB,EAAa,CAAC,EACpB,IACE,IAAsB,IAAlBjB,GACF,GAAiC,mBAAtBgB,EAAUh+B,QAInB,IAFA,IAAMi9B,EAAae,EAAUh+B,UACzBk+B,EAAgBjB,EAAWhe,QACvBif,EAAcrhC,MACpBohC,EAAWC,EAAclqC,MAAM,IAAMkqC,EAAclqC,MAAM,GACzDkqC,EAAgBjB,EAAWhe,WAG1B,KACwBze,EADxBE,EAAA9D,GACWogC,GAAa,IAA7B,IAAAt8B,EAAAzI,MAAAuI,EAAAE,EAAA1L,KAAA6H,MAA+B,KAApB8tB,EAACnqB,EAAAxM,MACViqC,EAAWtT,GAAKqT,EAAUxqC,IAAIm3B,EAChC,CAAC,OAAAhxB,GAAA+G,EAAAtL,EAAAuE,EAAA,SAAA+G,EAAA9L,GAAA,CACH,CACF,CAAE,MAAO0I,GACP,CAEF,OAAO2gC,CACT,GAAC,CAAA9qC,IAAA,kBAAAa,MAED,WACE,OACEhB,KAAK+mC,eAAejB,uBACpB9lC,KAAK+mC,eAAehB,uBACpB/lC,KAAK+mC,eAAef,mBAExB,GAAC,CAAA7lC,IAAA,oBAAAa,MAED,SAAkB4P,GAChB,IAAMsN,EAAStN,EAASiB,YAExB,GACGqM,GAAU,KAAOle,KAAK+mC,eAAejB,uBACrC5nB,GAAU,KAAOle,KAAK+mC,eAAehB,uBAC1B,IAAX7nB,GAAgBle,KAAK+mC,eAAef,oBACrC,CACA,IAAMtjC,EAAQ,IAAInB,MAAM,mCAAqC2c,GAC7Dxb,EAAM8D,MAAQoK,EAASpK,MACvBxG,KAAK66B,QAAQn4B,MAAMA,EAAO,CAAEuG,WAAY,GAC1C,CACF,GAAC,CAAA9I,IAAA,sBAAAa,MAED,WAEE,IADA,IAAIoV,EACGpW,KAAKqkC,aAAkB,IAAE7gC,QAC9B4S,EAAIpW,KAAKqkC,aAAkB,IAAErvB,QAC7BhV,KAAK4mC,QAAQ7pB,QAAQ3G,EAAE,IAAMA,EAAE,EAEnC,GAAC,CAAAjW,IAAA,oBAAAa,MAED,WAAoB,IAAAmqC,EAClB,GAAiB,QAAbA,EAACnrC,KAAK4mC,eAAO,IAAAuE,GAAS,QAATA,EAAZA,EAAcpuB,eAAO,IAAAouB,GAArBA,EAAuB//B,IAA5B,CAIA,IAAMkK,EAAOtV,KACP0I,EAAI1I,KAAK4mC,QAAQ7pB,QAoBvB,IACE,IAAK,IAALquB,EAAA,EAAAC,EAFc,CAAC,QAAS,OAAQ,OAAQ,QAAS,OAE1BD,EAAAC,EAAA7nC,OAAA4nC,IAAE,CACvBE,EADUD,EAAAD,GAEZ,CACF,CAAE,MAAOhpC,GACPpC,KAAKwI,WAAWmgC,kBAAoB,CAAEjmC,MAAON,EAAEgD,QACjD,CA7BA,CAKA,SAASkmC,EAAYt5B,GAInB,IAAMsyB,EAAO57B,EAAEsJ,GACTu5B,EAAc7iC,EACdM,EAAmB,SAAXgJ,EAAoB,UAAYA,EAC9CtJ,EAAEsJ,GAAU,WACV,IAAM3K,EAAO4I,MAAMtP,UAAUuG,MAAMrG,KAAKqL,WAClC9G,E1CuEd,SAA4BiC,GAC1B,IAAI/D,EAAG4E,EAAKN,EACRnD,EAAS,GACb,IAAKnB,EAAI,EAAG4E,EAAMb,EAAK7D,OAAQF,EAAI4E,IAAO5E,EAAG,CAE3C,OAAQlC,EADRwG,EAAMP,EAAK/D,KAET,IAAK,UAEHsE,GADAA,EAAMjD,EAAUiD,IACNlF,OAASkF,EAAI5G,OACfwC,OAAS,MACfoE,EAAMA,EAAIya,OAAO,EAAG,KAAO,OAE7B,MACF,IAAK,OACHza,EAAM,OACN,MACF,IAAK,YACHA,EAAM,YACN,MACF,IAAK,SACHA,EAAMA,EAAIpG,WAGdiD,EAAO0C,KAAKS,EACd,CACA,OAAOnD,EAAOwV,KAAK,IACrB,C0CjGwB1N,CAAqBlF,GACrCiO,EAAK6a,UAAUpb,WAAW3P,EAAS4D,EAAO,KAAMuD,KAC5C+3B,GACFkH,SAAS7qC,UAAUsV,MAAMpV,KAAKyjC,EAAMiH,EAAalkC,EAErD,EACAiO,EAAK+uB,aAAkB,IAAEl9B,KAAK,CAAC6K,EAAQsyB,GACzC,CASF,GAAC,CAAAnkC,IAAA,kBAAAa,MAED,WACEhB,KAAK8mC,gBAAgB,MACvB,GAAC,CAAA3mC,IAAA,gBAAAa,MAED,WAAgB,IAAAiW,EAAA,KACdjX,KAAKyrC,YACH,MACAzrC,KAAK4mC,QACL,CAAC,QAAS,WAAY,eACtB,SAACxkC,GAAC,OAAK6U,EAAKy0B,YAAY,QAAStpC,EAAE,GAErCpC,KAAKyrC,YACH,MACAzrC,KAAK4mC,QACL,CAAC,YAAa,UAAW,YAAa,YAAa,QACnD,SAACxkC,GAAC,OAAK6U,EAAKy0B,YAAY,WAAYtpC,EAAE,GAExCpC,KAAKyrC,YAAY,MAAOzrC,KAAK4mC,QAAS,CAAC,OAAQ,SAAU,SAACxkC,GAAC,OACzD6U,EAAKy0B,YAAY,QAAStpC,EAAE,GAE9BpC,KAAKyrC,YAAY,MAAOzrC,KAAK4mC,QAAS,CAAC,SAAU,WAAY,SAACxkC,GAAC,OAC7D6U,EAAKy0B,YAAY,OAAQtpC,EAAE,GAE7BpC,KAAKyrC,YAAY,MAAOzrC,KAAK4mC,QAAS,CAAC,QAAS,UAAW,SAACxkC,GAAC,OAC3D6U,EAAKy0B,YAAY,QAAStpC,EAAE,GAE9BpC,KAAKyrC,YAAY,MAAOzrC,KAAK4mC,QAAS,CAAC,UAAW,SAACxkC,GAAC,OAClD6U,EAAKy0B,YAAY,SAAUtpC,EAAE,GAE/BpC,KAAKyrC,YAAY,MAAOzrC,KAAK6mC,UAAW,CAAC,oBAAqB,SAACzkC,GAAC,OAC9D6U,EAAKy0B,YAAY,gBAAiBtpC,EAAE,EAExC,GAAC,CAAAjC,IAAA,cAAAa,MAED,SAAYK,EAAM+8B,GAChB,IACE,MAAO,CACLuN,MAAO3rC,KAAK4rC,YACZC,SAAU7rC,KAAK8rC,WACfC,MAAO/rC,KAAKgsC,YACZC,KAAMjsC,KAAKksC,WACXphC,MAAO9K,KAAKmsC,YACZC,OAAQpsC,KAAKqsC,aACbC,cAAetsC,KAAKusC,qBACpBlrC,GAAMR,KAAKb,KAAMo+B,EACrB,CAAE,MAAO5G,GACP9wB,GAAO0E,IAAI,GAADM,OAAIrK,EAAI,kBAAkB+8B,EAAK5G,EAAKA,EAAIhxB,MACpD,CACF,GAAC,CAAArG,IAAA,sBAAAa,MAED,SAAoBwrC,GAClBxsC,KAAK66B,QAAQgC,cAAc,CACzBzsB,KAAM,aACN1L,KAAM,IAAI+nC,IAAIzsC,KAAKmnC,UAAUlhC,MAAMid,UAEvC,GAAC,CAAA/iB,IAAA,cAAAa,MAED,SAAYo9B,GAAK,IAAAsO,EACTxH,EAAoB,QAAbwH,EAAGtO,EAAIhrB,cAAM,IAAAs5B,OAAA,EAAVA,EAAYxH,QAAQxjC,cAChC,CAAC,QAAS,SAAU,YAAYuF,SAASi+B,IAE7CllC,KAAKmwB,UAAUwc,aAAa,CAC1Bv8B,KAAMguB,EAAIhuB,KACVwC,aAAcwrB,EAAIwO,UAClBp6B,QAASq6B,GAAsBzO,EAAIhrB,QACnC9K,UAAWiE,KAEf,GAAC,CAAApM,IAAA,cAAAa,MAED,SAAYo9B,GAAK,IAAA0O,EACT18B,EAAOguB,EAAIhuB,KACXoC,EAAoB,QAAVs6B,EAAA1O,EAAIhrB,cAAM,IAAA05B,GAAVA,EAAY1mC,OACxB,SACAymC,GAAsBzO,EAAIhrB,QAE9BpT,KAAKmwB,UAAU4c,aAAa,CAC1B38B,KAAMA,EACNwC,aAAcwrB,EAAIwO,UAClBp6B,QAAAA,EACAlK,UAAWiE,KAEf,GAAC,CAAApM,IAAA,aAAAa,MAED,SAAWwrC,GAKT,GACD,CAAArsC,IAAA,eAAAa,MAED,SAAao9B,GACX,IAAM5qB,EAAgBpN,OAAOi1B,OAAO9nB,MAAQnN,OAAO4mC,WAEnDhtC,KAAKmwB,UAAU8c,cAAc,CAC3B78B,KAAMguB,EAAIhuB,KACVwC,aAAcwrB,EAAIwO,UAClBr5B,MAAOnN,OAAO4mC,WACd15B,OAAQlN,OAAO8mC,YACf15B,cAAeA,EACflL,UAAWiE,KAEf,GAAC,CAAApM,IAAA,aAAAa,MAED,SAAWo9B,GACT,IACIhqB,EAAOC,EAAYH,EAAYC,EAaOg5B,EAAAC,EAdpCh9B,EAAOguB,EAAIhuB,KAGjB,GAAa,SAATA,EAAiB,CACnBgE,EAAQ,GACRC,EAAa,GACb,IACoBtG,EADgDC,EAAApE,GAAvD,GAAH8B,OAAAsL,GAAOonB,EAAIiP,aAAaC,OAAKt2B,GAAKonB,EAAIiP,aAAanJ,SACzC,IAApB,IAAAl2B,EAAA/I,MAAA8I,EAAAC,EAAAhM,KAAA6H,MAAsB,KAAXzJ,EAAC2N,EAAA/M,MACNZ,EAAEqY,MAAQrY,EAAEgQ,OACdgE,EAAMjN,KAAK/G,EAAEqY,MACbpE,EAAWlN,KAAK/G,EAAEgQ,MAEtB,CAAC,OAAAzJ,GAAAqH,EAAA5L,EAAAuE,EAAA,SAAAqH,EAAApM,GAAA,CACH,CACI,CAAC,OAAQ,aAAaqF,SAASmJ,KACjC8D,EAA6B,QAAnBi5B,EAAG/O,EAAIiP,oBAAY,IAAAF,OAAA,EAAhBA,EAAkBj5B,WAC/BC,EAAgC,QAAnBi5B,EAAGhP,EAAIiP,oBAAY,IAAAD,OAAA,EAAhBA,EAAkBj5B,eAGpCnU,KAAKmwB,UAAUod,gBAAgB,CAC7Bn9B,KAAAA,EACAwC,aAAcwrB,EAAIwO,UAClBp6B,QAASq6B,GAAsBzO,EAAIhrB,QACnCc,WAAYA,EACZC,cAAeA,EACfC,MAAOvP,KAAKF,UAAUyP,GACtBC,WAAYxP,KAAKF,UAAU0P,GAC3B/L,UAAWiE,KAEf,GAEA,CAAApM,IAAA,kBAAAa,MAIA,SAAgBA,EAAOwR,EAAS0yB,EAASsI,GACvC,IAAMC,EAAO,SAEb,GAAkB,aAAdD,EACF,OAAOC,EAGT,GAAIztC,KAAK+nC,qBACP,OAAO0F,EAEP,IAAMlsB,EAAcsrB,GAAwBr6B,GAC5C,GAAIxS,KAAKgoC,mBACP,GAAIhoC,KAAKgoC,kBAAkBzmB,GACzB,OAAOksB,OAEJ,GAAIztC,KAAKumC,qBAAqBhlB,GACnC,OAAOksB,EAKX,OD9qBJ,SAA2Bj7B,EAAS8yB,EAASoI,GAC3C,IAAI,IACuBzjC,EADvBC,EAAAN,GACgB07B,GAAO,IAAzB,IAAAp7B,EAAAjF,MAAAgF,EAAAC,EAAAlI,KAAA6H,MAA2B,KAAhB8jC,EAAG1jC,EAAAjJ,MACZ,GAAmB,iBAAR2sC,GACT,GAAIn7B,EAAQo7B,UAAUC,SAASF,GAC7B,OAAO,MAEJ,KAC4BngC,EAD5BE,EAAA9D,GACW4I,EAAQo7B,WAAS,IAAjC,IAAAlgC,EAAAzI,MAAAuI,EAAAE,EAAA1L,KAAA6H,MAAmC,KAAxBnB,EAAC8E,EAAAxM,MACV,GAAI2sC,EAAIn/B,KAAK9F,GACX,OAAO,CAEX,CAAC,OAAA/B,GAAA+G,EAAAtL,EAAAuE,EAAA,SAAA+G,EAAA9L,GAAA,CACH,CACF,CAAC,OAAA+E,GAAAuD,EAAA9H,EAAAuE,EAAA,SAAAuD,EAAAtI,GAAA,KAC0BkL,EAD1BC,EAAAnD,GACiB8jC,GAAS,IAA3B,IAAA3gC,EAAA9H,MAAA6H,EAAAC,EAAA/K,KAAA6H,MAA6B,KAAlBikC,EAAGhhC,EAAA9L,MACZ,GAAIwR,EAAQgW,QAAQslB,GAClB,OAAO,CAEX,CAAC,OAAAnnC,GAAAoG,EAAA3K,EAAAuE,EAAA,SAAAoG,EAAAnL,GAAA,CACH,CAAE,MAAO0I,GACP,CAEF,OAAO,CACT,CCupBMuiC,CAA0Br6B,EAASxS,KAAKkoC,aAAcloC,KAAKmoC,gBAEpDsF,EAOPztC,KAAKkiC,iBAAiBgD,EAAQxjC,gBAC9B1B,KAAKkiC,iBAAiBsL,GAElBxtC,KAAKioC,YACAjoC,KAAKioC,YAAYjnC,EAAOwR,GAExBi7B,EAIJzsC,CACT,GAEA,CAAAb,IAAA,cAAAa,MAIA,SAAYo9B,GAAK,IAAA2P,EAAAC,EAAAC,EAAAC,EACT99B,EAAOguB,EAAIhuB,KACX80B,EAAoB,QAAb6I,EAAG3P,EAAIhrB,cAAM,IAAA26B,OAAA,EAAVA,EAAY7I,QAAQxjC,cAChCV,EAAkB,QAAbgtC,EAAG5P,EAAIhrB,cAAM,IAAA46B,OAAA,EAAVA,EAAYhtC,MACpBwsC,GAAsB,QAAVS,EAAA7P,EAAIhrB,cAAM,IAAA66B,GAAY,QAAZA,EAAVA,EAAYjkC,kBAAU,IAAAikC,GAAM,QAANA,EAAtBA,EAAwB79B,YAAI,IAAA69B,OAAA,EAA5BA,EAA8BjtC,SAAmB,QAAdktC,EAAI9P,EAAIhrB,cAAM,IAAA86B,OAAA,EAAVA,EAAY99B,MAMnE,YAJcjI,IAAVnH,IACFA,EAAQhB,KAAKmuC,gBAAgBntC,EAAOo9B,EAAIhrB,OAAQ8xB,EAASsI,IAGnDp9B,GACN,IAAK,QACH,GAAI,CAAC,QAAS,YAAYnJ,SAASumC,GAAY,OAC3C,CAAC,SAAU,YAAYvmC,SAASi+B,KAClCsI,EAAYtI,GAEd,MAEF,IAAK,SACH,IAAK,CAAC,QAAS,YAAYj+B,SAASumC,GAAY,OAClB,IAAAY,EAA9B,GAAkB,aAAdZ,EACFxsC,EAAkB,QAAbotC,EAAGhQ,EAAIhrB,cAAM,IAAAg7B,OAAA,EAAVA,EAAY37B,QAK1BzS,KAAKmwB,UAAUke,aAAa,CAC1Bj+B,KAAMo9B,EACN56B,aAAcwrB,EAAIwO,UAClBp6B,QAASq6B,GAAsBzO,EAAIhrB,QACnCpS,MAAAA,EACAsH,UAAWiE,KAEf,GAAC,CAAApM,IAAA,yBAAAa,MAED,WACE,IAAM05B,EAAS16B,KAAK4mC,QAAQlM,SACFA,GAAUA,EAAO4T,KAAO5T,EAAO4T,IAAI3T,UAI3D36B,KAAK4mC,QAAQ2H,SACbvuC,KAAK4mC,QAAQ2H,QAAQC,WAIvBlI,GAAQtmC,KAAKqkC,aAAc,aAC7B,GAAC,CAAAlkC,IAAA,uBAAAa,MAED,WACE,IAAM05B,EAAS16B,KAAK4mC,QAAQlM,OAO5B,KAN0BA,GAAUA,EAAO4T,KAAO5T,EAAO4T,IAAI3T,UAI3D36B,KAAK4mC,QAAQ2H,SACbvuC,KAAK4mC,QAAQ2H,QAAQC,UACvB,CAGA,IAAMl5B,EAAOtV,KACb0D,GACE1D,KAAK4mC,QACL,aACA,SAAUtC,GACR,OAAO,WACL,IAAMz5B,EAAUyK,EAAK6xB,UAAUlhC,KAC/BqP,EAAKm5B,gBAAgBn5B,EAAK8xB,UAAWv8B,GACjCy5B,GACFA,EAAKruB,MAAMjW,KAAMkM,UAErB,CACF,EACAlM,KAAKqkC,aACL,cAGF3gC,GACE1D,KAAK4mC,QAAQ2H,QACb,YACA,SAAUjK,GACR,OAAO,WACL,IAAMzhC,EAAMqJ,UAAU1I,OAAS,EAAI0I,UAAU,QAAK/D,EAIlD,OAHItF,GACFyS,EAAKm5B,gBAAgBn5B,EAAK8xB,UAAW7gC,OAAO1D,IAEvCyhC,EAAKruB,MAAMjW,KAAMkM,UAC1B,CACF,EACAlM,KAAKqkC,aACL,aA/BF,CAiCF,GAAC,CAAAlkC,IAAA,kBAAAa,MAED,SAAgBsT,EAAMC,GACpB,IAAMm6B,EAAaC,GAAgB3uC,KAAKmnC,UAAUlhC,MAC5C2oC,EAAWD,GAAgBp6B,GAC3Bs6B,EAAaF,GAAgBr6B,GACnCtU,KAAKonC,UAAY7yB,EAEfm6B,EAAWpqC,WAAasqC,EAAStqC,UACjCoqC,EAAWrrB,OAASurB,EAASvrB,OAE7B9O,EAAKq6B,EAASlqC,MAAQkqC,EAAStV,MAAQ,KAGvCoV,EAAWpqC,WAAauqC,EAAWvqC,UACnCoqC,EAAWrrB,OAASwrB,EAAWxrB,OAE/B/O,EAAOu6B,EAAWnqC,MAAQmqC,EAAWvV,MAAQ,KAE/Ct5B,KAAKmwB,UAAU2e,kBAAkBx6B,EAAMC,EAAI,KAAMhI,KACjDvM,KAAK66B,QAAQgC,cAAc,CACzBzsB,KAAM,aACN1L,KAAM6P,GAEV,GAAC,CAAApU,IAAA,yBAAAa,MAMD,WACE,IAAMsU,EAAOtV,KACbA,KAAKyrC,YACH,eACAzrC,KAAK4mC,QACL,CAAC,SAAU,WACX,SAACxI,GAAG,OAAK9oB,EAAKy5B,mBAAmB3Q,EAAI,EAEzC,GAAC,CAAAj+B,IAAA,qBAAAa,MAED,SAAmBo9B,GACjB,IAAMhuB,EAAOguB,EAAIhuB,KAEjBpQ,KAAKmwB,UAAU6e,0BAA0B,CACvC5+B,KAAAA,EACAwC,aAAcwrB,EAAIwO,UAClBtkC,UAAWiE,KAEf,GAAC,CAAApM,IAAA,iBAAAa,MAED,SAAeiuC,GACb,IAAI7pC,EACF,0CAEA6pC,EAASC,WAFT,wBAKAD,EAASE,kBALT,yBAQAF,EAASG,mBACT,KAEEH,EAASI,aACXjqC,GACE,aACA6pC,EAASI,WADT,WAIAJ,EAASpmB,WAJT,UAOAomB,EAASnmB,aACT,MAGJ1jB,GAAW,mBAAqB6pC,EAASK,eAEzCtvC,KAAKmwB,UAAUpb,WAAW3P,EAAS,QAAS,KAAMmH,KAClDvM,KAAKuvC,eAAenqC,EACtB,GAAC,CAAAjF,IAAA,iBAAAa,MAED,SAAeoE,GACTpF,KAAK+mC,eAAeV,8BACtBrmC,KAAK66B,QAAQn4B,MAAM0C,EAEvB,GAAC,CAAAjF,IAAA,oCAAAa,MAED,WACEhB,KAAK8mC,gBAAgB,wBACvB,GAAC,CAAA3mC,IAAA,kCAAAa,MAED,WACE,GAAM,qBAAsBhB,KAAK6mC,UAAjC,CAIA,IAAM2I,EAAaxvC,KAAKyvC,eAAepyB,KAAKrd,MAC5CA,KAAKyrC,YACH,wBACAzrC,KAAK6mC,UACL,CAAC,2BACD2I,EAPF,CASF,GAAC,CAAArvC,IAAA,cAAAa,MAED,SAAY0uC,EAASjvC,EAAKkvC,EAAO1S,GAAS,IAAA/kB,EAAA,KACxC,GAAIzX,EAAIg+B,iBAAkB,KACHmR,EADGC,EAAAjmC,GACR+lC,GAAK,QAAAG,EAAA,WAAE,IAAZ3uC,EAACyuC,EAAA5uC,MACJiK,EAAU,CAAEiG,SAAS,EAAM6+B,SAAS,GAC1CtvC,EAAIg+B,iBAAiBt9B,EAAG87B,EAAShyB,GAAS,GAC1CiN,EAAK+uB,cAAcyI,GAASvoC,KAAK,WAC/B1G,EAAIy9B,oBAAoB/8B,EAAG87B,EAAShyB,EACtC,EACF,EANA,IAAA4kC,EAAA5qC,MAAA2qC,EAAAC,EAAA7tC,KAAA6H,MAAAimC,GAMC,OAAAnpC,GAAAkpC,EAAAztC,EAAAuE,EAAA,SAAAkpC,EAAAjuC,GAAA,CACH,CACF,GAAC,CAAAzB,IAAA,kBAAAa,MAED,SAAgB0uC,GAEd,KAAO1vC,KAAKinC,cAAcyI,GAASlsC,QAC7BxD,KAAKinC,cAAcyI,GAAS16B,OAChCrM,EAEJ,IAAC,CAr+Be,GAw+BlB,SAAS8gC,GAAa3+B,GACpB,MAAsB,oBAAR2hC,KAAuB3hC,aAAiB2hC,GACxD,CAEA,UC5hCA,SAASuD,GAAyB/S,EAASt8B,EAAWu8B,GACpD,GAAIp7B,EAAOnB,EAAW,oBAAqB,CAEzC,IADA,IAAIsvC,EAAsBtvC,EAAU89B,iBAElCwR,EAAoBC,gBACpBD,EAAoBhS,eAEpBgS,EAAsBA,EAAoBC,eAE5C,IAAIC,EAAQ,SAAU3/B,EAAO9I,EAAU0oC,GACrCH,EAAoBpvC,KAAKb,KAAMwQ,EAAOysB,EAAQqM,KAAK5hC,GAAW0oC,EAChE,EACAD,EAAMD,eAAiBD,EACvBE,EAAMlS,cAAgBf,EACtBv8B,EAAU89B,iBAAmB0R,EAG7B,IADA,IAAIE,EAAyB1vC,EAAUu9B,oBAErCmS,EAAuBC,mBACvBD,EAAuBpS,eAEvBoS,EAAyBA,EAAuBC,kBAElD,IAAIC,EAAW,SAAU//B,EAAO9I,EAAU0oC,GACxCC,EAAuBxvC,KACrBb,KACAwQ,EACC9I,GAAYA,EAASy3B,kBAAqBz3B,EAC3C0oC,EAEJ,EACAG,EAASD,kBAAoBD,EAC7BE,EAAStS,cAAgBf,EACzBv8B,EAAUu9B,oBAAsBqS,CAClC,CACF,CAEA,OAxDA,SAAqBnqC,EAAQ62B,EAASC,GACpC,GAAK92B,EAAL,CAIA,IAII9C,EAAGqtB,EAJHgN,EACF,4YAA4YtzB,MAC1Y,KAGJ,IAAK/G,EAAI,EAAGA,EAAIq6B,EAAQn6B,SAAUF,EAG5B8C,EAFJuqB,EAASgN,EAAQr6B,KAEK8C,EAAOuqB,GAAQhwB,WACnCqvC,GAAyB/S,EAAS72B,EAAOuqB,GAAQhwB,UAAWu8B,EAXhE,CAcF,ECVAhN,GAAQsgB,cAAc,CACpBrgB,UAAWlhB,EACX2qB,aAAcD,GACdE,YAAaA,GACbC,MAAOA,EACP1U,WAAYA,GACZlW,QAASyQ,KAGX,UChBuB,oBAAXvZ,QAA4BA,OAAOm1B,oBAC7Cn1B,OAAOm1B,mBAAqB,IAAI5wB,MAAQ+J,WAG1C,U","sources":["webpack://rollbar/webpack/universalModuleDefinition","webpack://rollbar/webpack/bootstrap","webpack://rollbar/webpack/runtime/define property getters","webpack://rollbar/webpack/runtime/hasOwnProperty shorthand","webpack://rollbar/webpack/runtime/make namespace object","webpack://rollbar/./src/utility.js","webpack://rollbar/./src/utility/traverse.js","webpack://rollbar/./src/scrub.js","webpack://rollbar/./src/telemetry.js","webpack://rollbar/./src/tracing/context.js","webpack://rollbar/./src/tracing/contextManager.js","webpack://rollbar/./src/tracing/hrtime.js","webpack://rollbar/./src/tracing/exporter.js","webpack://rollbar/./src/tracing/id.js","webpack://rollbar/./src/tracing/session.js","webpack://rollbar/./src/logger.js","webpack://rollbar/./src/tracing/spanProcessor.js","webpack://rollbar/./src/tracing/span.js","webpack://rollbar/./src/tracing/tracer.js","webpack://rollbar/./src/tracing/tracing.js","webpack://rollbar/./src/truncation.js","webpack://rollbar/./src/apiUtility.js","webpack://rollbar/./src/api.js","webpack://rollbar/./src/defaults.js","webpack://rollbar/./node_modules/error-stack-parser-es/dist/lite.mjs","webpack://rollbar/./node_modules/error-stack-parser-es/dist/index.mjs","webpack://rollbar/./src/errorParser.js","webpack://rollbar/./src/predicates.js","webpack://rollbar/./src/notifier.js","webpack://rollbar/./src/queue.js","webpack://rollbar/./src/rateLimiter.js","webpack://rollbar/./src/rollbar.js","webpack://rollbar/./src/transforms.js","webpack://rollbar/./src/browser/defaults.js","webpack://rollbar/./src/browser/predicates.js","webpack://rollbar/./src/browser/transforms.js","webpack://rollbar/./src/browser/transport/fetch.js","webpack://rollbar/./src/browser/transport/xhr.js","webpack://rollbar/./src/browser/transport.js","webpack://rollbar/./src/browser/url.js","webpack://rollbar/./src/browser/core.js","webpack://rollbar/./src/browser/globalSetup.js","webpack://rollbar/./src/browser/replay/defaults.js","webpack://rollbar/./src/tracing/defaults.js","webpack://rollbar/./src/utility/headers.js","webpack://rollbar/./src/utility/replace.js","webpack://rollbar/./src/browser/domUtility.js","webpack://rollbar/./src/browser/telemetry.js","webpack://rollbar/./src/browser/wrapGlobals.js","webpack://rollbar/./src/browser/rollbar.js","webpack://rollbar/./src/browser/bundles/rollbar.noconflict.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"rollbar\"] = factory();\n\telse\n\t\troot[\"rollbar\"] = factory();\n})(this, function() {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(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__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*\n * isType - Given a Javascript value and a string, returns true if the type of the value matches the\n * given string.\n *\n * @param x - any value\n * @param t - a lowercase string containing one of the following type names:\n * - undefined\n * - null\n * - error\n * - number\n * - boolean\n * - string\n * - symbol\n * - function\n * - object\n * - array\n * @returns true if x is of type t, otherwise false\n */\nfunction isType(x, t) {\n return t === typeName(x);\n}\n\n/*\n * typeName - Given a Javascript value, returns the type of the object as a string\n */\nfunction typeName(x) {\n var name = typeof x;\n if (name !== 'object') {\n return name;\n }\n if (!x) {\n return 'null';\n }\n if (x instanceof Error) {\n return 'error';\n }\n return {}.toString\n .call(x)\n .match(/\\s([a-zA-Z]+)/)[1]\n .toLowerCase();\n}\n\n/* isFunction - a convenience function for checking if a value is a function\n *\n * @param f - any value\n * @returns true if f is a function, otherwise false\n */\nfunction isFunction(f) {\n return isType(f, 'function');\n}\n\n/* isNativeFunction - a convenience function for checking if a value is a native JS function\n *\n * @param f - any value\n * @returns true if f is a native JS function, otherwise false\n */\nfunction isNativeFunction(f) {\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n var funcMatchString = Function.prototype.toString\n .call(Object.prototype.hasOwnProperty)\n .replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?');\n var reIsNative = RegExp('^' + funcMatchString + '$');\n return isObject(f) && reIsNative.test(f);\n}\n\n/* isObject - Checks if the argument is an object\n *\n * @param value - any value\n * @returns true is value is an object function is an object)\n */\nfunction isObject(value) {\n return (\n value != null && (typeof value == 'object' || typeof value == 'function')\n );\n}\n\n/* hasOwn - safe helper around Object.hasOwnProperty */\nfunction hasOwn(obj, prop) {\n if (obj == null) {\n return false;\n }\n if (Object.hasOwn) {\n return Object.hasOwn(obj, prop);\n }\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n/* isString - Checks if the argument is a string\n *\n * @param value - any value\n * @returns true if value is a string\n */\nfunction isString(value) {\n return typeof value === 'string' || value instanceof String;\n}\n\n/**\n * isFiniteNumber - determines whether the passed value is a finite number\n *\n * @param {*} n - any value\n * @returns true if value is a finite number\n */\nfunction isFiniteNumber(n) {\n return Number.isFinite(n);\n}\n\n/*\n * isIterable - convenience function for checking if a value can be iterated, essentially\n * whether it is an object or an array.\n *\n * @param i - any value\n * @returns true if i is an object or an array as determined by `typeName`\n */\nfunction isIterable(i) {\n var type = typeName(i);\n return type === 'object' || type === 'array';\n}\n\n/*\n * isError - convenience function for checking if a value is of an error type\n *\n * @param e - any value\n * @returns true if e is an error\n */\nfunction isError(e) {\n // Detect both Error and Firefox Exception type\n return isType(e, 'error') || isType(e, 'exception');\n}\n\n/* isPromise - a convenience function for checking if a value is a promise\n *\n * @param p - any value\n * @returns true if f is a function, otherwise false\n */\nfunction isPromise(p) {\n return isObject(p) && isType(p.then, 'function');\n}\n\n/**\n * isBrowser - a convenience function for checking if the code is running in a browser\n *\n * @returns true if the code is running in a browser environment\n */\nfunction isBrowser() {\n return typeof window !== 'undefined';\n}\n\nfunction redact() {\n return '********';\n}\n\n// from http://stackoverflow.com/a/8809472/1138191\nfunction uuid4() {\n var d = now();\n var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(\n /[xy]/g,\n function (c) {\n var r = ((d + Math.random() * 16) % 16) | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : (r & 0x7) | 0x8).toString(16);\n },\n );\n return uuid;\n}\n\nvar LEVELS = {\n debug: 0,\n info: 1,\n warning: 2,\n error: 3,\n critical: 4,\n};\n\nfunction sanitizeHref(url) {\n try {\n const urlObject = new URL(url);\n if (urlObject.password) {\n urlObject.password = redact();\n }\n if (urlObject.search) {\n urlObject.search = redact();\n }\n return urlObject.toString();\n } catch (_) {\n return url; // Return original URL if parsing fails\n }\n}\n\nfunction sanitizeUrl(url) {\n var baseUrlParts = parseUri(url);\n if (!baseUrlParts) {\n return '(unknown)';\n }\n\n // remove a trailing # if there is no anchor\n if (baseUrlParts.anchor === '') {\n baseUrlParts.source = baseUrlParts.source.replace('#', '');\n }\n\n url = baseUrlParts.source.replace('?' + baseUrlParts.query, '');\n return url;\n}\n\nvar parseUriOptions = {\n strictMode: false,\n key: [\n 'source',\n 'protocol',\n 'authority',\n 'userInfo',\n 'user',\n 'password',\n 'host',\n 'port',\n 'relative',\n 'path',\n 'directory',\n 'file',\n 'query',\n 'anchor',\n ],\n q: {\n name: 'queryKey',\n parser: /(?:^|&)([^&=]*)=?([^&]*)/g,\n },\n parser: {\n strict:\n /^(?:([^:/?#]+):)?(?:\\/\\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\\d*))?))?((((?:[^?#/]*\\/)*)([^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n loose:\n /^(?:(?![^:@]+:[^:@/]*@)([^:/?#.]+):)?(?:\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[?#]|$)))*\\/?)?([^?#/]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n },\n};\n\nfunction parseUri(str) {\n if (!isType(str, 'string')) {\n return undefined;\n }\n\n var o = parseUriOptions;\n var m = o.parser[o.strictMode ? 'strict' : 'loose'].exec(str);\n var uri = {};\n\n for (var i = 0, l = o.key.length; i < l; ++i) {\n uri[o.key[i]] = m[i] || '';\n }\n\n uri[o.q.name] = {};\n uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {\n if ($1) {\n uri[o.q.name][$1] = $2;\n }\n });\n\n return uri;\n}\n\nfunction addParamsAndAccessTokenToPath(accessToken, options, params) {\n params = params || {};\n params.access_token = accessToken;\n var paramsArray = [];\n var k;\n for (k in params) {\n if (Object.prototype.hasOwnProperty.call(params, k)) {\n paramsArray.push([k, params[k]].join('='));\n }\n }\n var query = '?' + paramsArray.sort().join('&');\n\n options = options || {};\n options.path = options.path || '';\n var qs = options.path.indexOf('?');\n var h = options.path.indexOf('#');\n var p;\n if (qs !== -1 && (h === -1 || h > qs)) {\n p = options.path;\n options.path = p.substring(0, qs) + query + '&' + p.substring(qs + 1);\n } else {\n if (h !== -1) {\n p = options.path;\n options.path = p.substring(0, h) + query + p.substring(h);\n } else {\n options.path = options.path + query;\n }\n }\n}\n\nfunction formatUrl(u, protocol) {\n protocol = protocol || u.protocol;\n if (!protocol && u.port) {\n if (u.port === 80) {\n protocol = 'http:';\n } else if (u.port === 443) {\n protocol = 'https:';\n }\n }\n protocol = protocol || 'https:';\n\n if (!u.hostname) {\n return null;\n }\n var result = protocol + '//' + u.hostname;\n if (u.port) {\n result = result + ':' + u.port;\n }\n if (u.path) {\n result = result + u.path;\n }\n return result;\n}\n\nfunction stringify(obj, backup) {\n var value, error;\n try {\n value = JSON.stringify(obj);\n } catch (jsonError) {\n if (backup && isFunction(backup)) {\n try {\n value = backup(obj);\n } catch (backupError) {\n error = backupError;\n }\n } else {\n error = jsonError;\n }\n }\n return { error: error, value: value };\n}\n\nfunction maxByteSize(string) {\n // The transport will use utf-8, so assume utf-8 encoding.\n //\n // This minimal implementation will accurately count bytes for all UCS-2 and\n // single code point UTF-16. If presented with multi code point UTF-16,\n // which should be rare, it will safely overcount, not undercount.\n //\n // While robust utf-8 encoders exist, this is far smaller and far more performant.\n // For quickly counting payload size for truncation, smaller is better.\n\n var count = 0;\n var length = string.length;\n\n for (var i = 0; i < length; i++) {\n var code = string.charCodeAt(i);\n if (code < 128) {\n // up to 7 bits\n count = count + 1;\n } else if (code < 2048) {\n // up to 11 bits\n count = count + 2;\n } else if (code < 65536) {\n // up to 16 bits\n count = count + 3;\n }\n }\n\n return count;\n}\n\nfunction jsonParse(s) {\n var value, error;\n try {\n value = JSON.parse(s);\n } catch (e) {\n error = e;\n }\n return { error, value };\n}\n\nfunction makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n mode,\n backupMessage,\n errorParser,\n) {\n var location = {\n url: url || '',\n line: lineno,\n column: colno,\n };\n location.func = errorParser.guessFunctionName(location.url, location.line);\n location.context = errorParser.gatherContext(location.url, location.line);\n var href =\n typeof document !== 'undefined' &&\n document &&\n document.location &&\n document.location.href;\n var useragent =\n typeof window !== 'undefined' &&\n window &&\n window.navigator &&\n window.navigator.userAgent;\n return {\n mode: mode,\n message: error ? String(error) : message || backupMessage,\n url: href,\n stack: [location],\n useragent: useragent,\n };\n}\n\nfunction wrapCallback(logger, f) {\n return function (err, resp) {\n try {\n f(err, resp);\n } catch (e) {\n logger.error(e);\n }\n };\n}\n\nfunction nonCircularClone(obj) {\n var seen = [obj];\n\n function clone(obj, seen) {\n var value,\n name,\n newSeen,\n result = {};\n\n try {\n for (name in obj) {\n value = obj[name];\n\n if (value && (isType(value, 'object') || isType(value, 'array'))) {\n if (seen.includes(value)) {\n result[name] = 'Removed circular reference: ' + typeName(value);\n } else {\n newSeen = seen.slice();\n newSeen.push(value);\n result[name] = clone(value, newSeen);\n }\n continue;\n }\n\n result[name] = value;\n }\n } catch (e) {\n result = 'Failed cloning custom data: ' + e.message;\n }\n return result;\n }\n return clone(obj, seen);\n}\n\nfunction createItem(args, logger, notifier, requestKeys, lambdaContext) {\n var message, err, custom, callback, request;\n var arg;\n var extraArgs = [];\n var diagnostic = {};\n var argTypes = [];\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n argTypes.push(typ);\n switch (typ) {\n case 'undefined':\n break;\n case 'string':\n if (message) {\n extraArgs.push(arg);\n } else {\n message = arg;\n }\n break;\n case 'function':\n callback = wrapCallback(logger, arg);\n break;\n case 'date':\n extraArgs.push(arg);\n break;\n case 'error':\n case 'domexception':\n case 'exception': // Firefox Exception type\n if (err) {\n extraArgs.push(arg);\n } else {\n err = arg;\n }\n break;\n case 'object':\n case 'array':\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n if (err) {\n extraArgs.push(arg);\n } else {\n err = arg;\n }\n break;\n }\n if (requestKeys && typ === 'object' && !request) {\n for (var j = 0, len = requestKeys.length; j < len; ++j) {\n if (arg[requestKeys[j]] !== undefined) {\n request = arg;\n break;\n }\n }\n if (request) {\n break;\n }\n }\n if (custom) {\n extraArgs.push(arg);\n } else {\n custom = arg;\n }\n break;\n default:\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n if (err) {\n extraArgs.push(arg);\n } else {\n err = arg;\n }\n break;\n }\n extraArgs.push(arg);\n }\n }\n\n // if custom is an array this turns it into an object with integer keys\n if (custom) custom = nonCircularClone(custom);\n\n if (extraArgs.length > 0) {\n if (!custom) custom = nonCircularClone({});\n custom.extraArgs = nonCircularClone(extraArgs);\n }\n\n var item = {\n message: message,\n err: err,\n custom: custom,\n timestamp: now(),\n callback: callback,\n notifier: notifier,\n diagnostic: diagnostic,\n uuid: uuid4(),\n };\n\n item.data = item.data || {};\n\n setCustomItemKeys(item, custom);\n\n if (requestKeys && request) {\n item.request = request;\n }\n if (lambdaContext) {\n item.lambdaContext = lambdaContext;\n }\n item._originalArgs = args;\n item.diagnostic.original_arg_types = argTypes;\n return item;\n}\n\nfunction setCustomItemKeys(item, custom) {\n if (custom && custom.level !== undefined) {\n item.level = custom.level;\n delete custom.level;\n }\n if (custom && custom.skipFrames !== undefined) {\n item.skipFrames = custom.skipFrames;\n delete custom.skipFrames;\n }\n}\n\nfunction addErrorContext(item, errors) {\n var custom = item.data.custom || {};\n var contextAdded = false;\n\n try {\n for (const error of errors) {\n if (hasOwn(error, 'rollbarContext')) {\n custom = merge(custom, nonCircularClone(error.rollbarContext));\n contextAdded = true;\n }\n }\n\n // Avoid adding an empty object to the data.\n if (contextAdded) {\n item.data.custom = custom;\n }\n } catch (e) {\n item.diagnostic.error_context = 'Failed: ' + e.message;\n }\n}\n\nvar TELEMETRY_TYPES = [\n 'log',\n 'network',\n 'dom',\n 'navigation',\n 'error',\n 'manual',\n];\nvar TELEMETRY_LEVELS = ['critical', 'error', 'warning', 'info', 'debug'];\n\nfunction arrayIncludes(arr, val) {\n for (const entry of arr) {\n if (entry === val) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction createTelemetryEvent(args) {\n var type, metadata, level;\n var arg;\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n switch (typ) {\n case 'string':\n if (!type && arrayIncludes(TELEMETRY_TYPES, arg)) {\n type = arg;\n } else if (!level && arrayIncludes(TELEMETRY_LEVELS, arg)) {\n level = arg;\n }\n break;\n case 'object':\n metadata = arg;\n break;\n default:\n break;\n }\n }\n var event = {\n type: type || 'manual',\n metadata: metadata || {},\n level: level,\n };\n\n return event;\n}\n\nfunction addItemAttributes(itemData, attributes) {\n itemData.attributes = itemData.attributes || [];\n for (const a of attributes) {\n if (a.value === undefined) {\n continue;\n }\n itemData.attributes.push(a);\n }\n}\n\n/*\n * get - given an obj/array and a keypath, return the value at that keypath or\n * undefined if not possible.\n *\n * @param obj - an object or array\n * @param path - a string of keys separated by '.' such as 'plugin.jquery.0.message'\n * which would correspond to 42 in `{plugin: {jquery: [{message: 42}]}}`\n */\nfunction get(obj, path) {\n if (!obj) {\n return undefined;\n }\n var keys = path.split('.');\n var result = obj;\n try {\n for (var i = 0, len = keys.length; i < len; ++i) {\n result = result[keys[i]];\n }\n } catch (_e) {\n result = undefined;\n }\n return result;\n}\n\nfunction set(obj, path, value) {\n if (!obj) {\n return;\n }\n\n // Prevent prototype pollution by setting the prototype to null.\n Object.setPrototypeOf(obj, null);\n\n var keys = path.split('.');\n var len = keys.length;\n if (len < 1) {\n return;\n }\n if (len === 1) {\n obj[keys[0]] = value;\n return;\n }\n try {\n var temp = obj[keys[0]] || {};\n var replacement = temp;\n for (var i = 1; i < len - 1; ++i) {\n temp[keys[i]] = temp[keys[i]] || {};\n temp = temp[keys[i]];\n }\n temp[keys[len - 1]] = value;\n obj[keys[0]] = replacement;\n } catch (_e) {\n return;\n }\n}\n\nfunction formatArgsAsString(args) {\n var i, len, arg;\n var result = [];\n for (i = 0, len = args.length; i < len; ++i) {\n arg = args[i];\n switch (typeName(arg)) {\n case 'object':\n arg = stringify(arg);\n arg = arg.error || arg.value;\n if (arg.length > 500) {\n arg = arg.substr(0, 497) + '...';\n }\n break;\n case 'null':\n arg = 'null';\n break;\n case 'undefined':\n arg = 'undefined';\n break;\n case 'symbol':\n arg = arg.toString();\n break;\n }\n result.push(arg);\n }\n return result.join(' ');\n}\n\nfunction now() {\n if (Date.now) {\n return Date.now();\n }\n return Number(new Date());\n}\n\nfunction filterIp(requestData, captureIp) {\n if (!requestData || !requestData['user_ip'] || captureIp === true) {\n return;\n }\n var newIp = requestData['user_ip'];\n if (!captureIp) {\n newIp = null;\n } else {\n try {\n var parts;\n if (newIp.indexOf('.') !== -1) {\n parts = newIp.split('.');\n parts.pop();\n parts.push('0');\n newIp = parts.join('.');\n } else if (newIp.indexOf(':') !== -1) {\n parts = newIp.split(':');\n if (parts.length > 2) {\n var beginning = parts.slice(0, 3);\n var slashIdx = beginning[2].indexOf('/');\n if (slashIdx !== -1) {\n beginning[2] = beginning[2].substring(0, slashIdx);\n }\n var terminal = '0000:0000:0000:0000:0000';\n newIp = beginning.concat(terminal).join(':');\n }\n } else {\n newIp = null;\n }\n } catch (_e) {\n newIp = null;\n }\n }\n requestData['user_ip'] = newIp;\n}\n\nfunction handleOptions(current, input, payload, logger) {\n var result = merge(current, input, payload);\n result = updateDeprecatedOptions(result, logger);\n if (!input || input.overwriteScrubFields) {\n return result;\n }\n if (input.scrubFields) {\n result.scrubFields = (current.scrubFields || []).concat(input.scrubFields);\n }\n return result;\n}\n\nfunction updateDeprecatedOptions(options, logger) {\n if (options.hostWhiteList && !options.hostSafeList) {\n options.hostSafeList = options.hostWhiteList;\n options.hostWhiteList = undefined;\n logger && logger.log('hostWhiteList is deprecated. Use hostSafeList.');\n }\n if (options.hostBlackList && !options.hostBlockList) {\n options.hostBlockList = options.hostBlackList;\n options.hostBlackList = undefined;\n logger && logger.log('hostBlackList is deprecated. Use hostBlockList.');\n }\n return options;\n}\n\nfunction merge() {\n function isPlainObject(obj) {\n if (!obj || Object.prototype.toString.call(obj) !== '[object Object]') {\n return false;\n }\n\n var hasOwnConstructor = hasOwn(obj, 'constructor');\n var hasIsPrototypeOf =\n obj.constructor &&\n obj.constructor.prototype &&\n hasOwn(obj.constructor.prototype, 'isPrototypeOf');\n // Not own constructor property must be Object\n if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n return false;\n }\n\n // Own properties are enumerated firstly, so to speed up,\n // if last one is own, then all properties are own.\n var key;\n for (key in obj) {\n /**/\n }\n\n return typeof key === 'undefined' || hasOwn(obj, key);\n }\n\n var i,\n src,\n copy,\n clone,\n name,\n result = Object.create(null), // no prototype pollution on Object\n current = null,\n length = arguments.length;\n\n for (i = 0; i < length; i++) {\n current = arguments[i];\n if (current === null || current === undefined) {\n continue;\n }\n\n for (name in current) {\n src = result[name];\n copy = current[name];\n if (result !== copy) {\n if (copy && isPlainObject(copy)) {\n clone = src && isPlainObject(src) ? src : {};\n result[name] = merge(clone, copy);\n } else if (typeof copy !== 'undefined') {\n result[name] = copy;\n }\n }\n }\n }\n return result;\n}\n\nexport {\n addParamsAndAccessTokenToPath,\n createItem,\n addErrorContext,\n createTelemetryEvent,\n addItemAttributes,\n filterIp,\n formatArgsAsString,\n formatUrl,\n get,\n handleOptions,\n isError,\n isFiniteNumber,\n isFunction,\n hasOwn,\n isIterable,\n isNativeFunction,\n isObject,\n isString,\n isType,\n isPromise,\n isBrowser,\n jsonParse,\n LEVELS,\n makeUnhandledStackInfo,\n merge,\n now,\n redact,\n sanitizeHref,\n sanitizeUrl,\n set,\n stringify,\n maxByteSize,\n typeName,\n uuid4,\n};\n","import * as _ from '../utility.js';\n\nfunction traverse(obj, func, seen) {\n var k, v, i;\n var isObj = _.isType(obj, 'object');\n var isArray = _.isType(obj, 'array');\n var keys = [];\n var seenIndex;\n\n // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11.\n seen = seen || { obj: [], mapped: [] };\n\n if (isObj) {\n seenIndex = seen.obj.indexOf(obj);\n\n if (isObj && seenIndex !== -1) {\n // Prefer the mapped object if there is one.\n return seen.mapped[seenIndex] || seen.obj[seenIndex];\n }\n\n seen.obj.push(obj);\n seenIndex = seen.obj.length - 1;\n }\n\n if (isObj) {\n for (k in obj) {\n if (_.hasOwn(obj, k)) {\n keys.push(k);\n }\n }\n } else if (isArray) {\n for (i = 0; i < obj.length; ++i) {\n keys.push(i);\n }\n }\n\n var result = isObj ? {} : [];\n var same = true;\n for (i = 0; i < keys.length; ++i) {\n k = keys[i];\n v = obj[k];\n result[k] = func(k, v, seen);\n same = same && result[k] === obj[k];\n }\n\n if (isObj && !same) {\n seen.mapped[seenIndex] = result;\n }\n\n return !same ? result : obj;\n}\n\nexport default traverse;\n","import traverse from './utility/traverse.js';\nimport * as _ from './utility.js';\n\nfunction scrub(data, scrubFields, scrubPaths) {\n scrubFields = scrubFields || [];\n\n if (scrubPaths) {\n for (const path of scrubPaths) {\n scrubPath(data, path);\n }\n }\n\n var paramRes = _getScrubFieldRegexs(scrubFields);\n var queryRes = _getScrubQueryParamRegexs(scrubFields);\n\n function redactQueryParam(dummy0, paramPart) {\n return paramPart + _.redact();\n }\n\n function paramScrubber(v) {\n if (_.isType(v, 'string')) {\n for (const regex of queryRes) {\n v = v.replace(regex, redactQueryParam);\n }\n }\n return v;\n }\n\n function valScrubber(k, v) {\n for (const regex of paramRes) {\n if (regex.test(k)) {\n v = _.redact();\n break;\n }\n }\n return v;\n }\n\n function scrubber(k, v, seen) {\n var tmpV = valScrubber(k, v);\n if (tmpV === v) {\n if (_.isType(v, 'object') || _.isType(v, 'array')) {\n return traverse(v, scrubber, seen);\n }\n return paramScrubber(tmpV);\n } else {\n return tmpV;\n }\n }\n\n return traverse(data, scrubber);\n}\n\nfunction scrubPath(obj, path) {\n var keys = path.split('.');\n var last = keys.length - 1;\n try {\n for (const [index, key] of keys.entries()) {\n if (index < last) {\n obj = obj[key];\n } else {\n obj[key] = _.redact();\n }\n }\n } catch (_e) {\n // Missing key is OK;\n }\n}\n\nfunction _getScrubFieldRegexs(scrubFields) {\n var ret = [];\n for (const field of scrubFields) {\n var pat = '^\\\\[?(%5[bB])?' + field + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?$';\n ret.push(new RegExp(pat, 'i'));\n }\n return ret;\n}\n\nfunction _getScrubQueryParamRegexs(scrubFields) {\n var ret = [];\n for (const field of scrubFields) {\n var pat = '\\\\[?(%5[bB])?' + field + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?';\n ret.push(new RegExp('(' + pat + '=)([^&\\\\n]+)', 'igm'));\n }\n return ret;\n}\n\nexport default scrub;\n","import * as _ from './utility.js';\n\nconst MAX_EVENTS = 100;\n\n// Temporary workaround while solving commonjs -> esm issues in Node 18 - 20.\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\nclass Telemeter {\n constructor(options, tracing) {\n this.queue = [];\n this.options = _.merge(options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n this.tracing = tracing;\n this.telemetrySpan = this.tracing?.startSpan('rollbar-telemetry', {});\n }\n\n configure(options) {\n var oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n var newMaxEvents = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n var deleteCount = 0;\n if (this.queue.length > newMaxEvents) {\n deleteCount = this.queue.length - newMaxEvents;\n }\n this.maxQueueSize = newMaxEvents;\n this.queue.splice(0, deleteCount);\n }\n\n copyEvents() {\n var events = Array.prototype.slice.call(this.queue, 0);\n if (_.isFunction(this.options.filterTelemetry)) {\n try {\n var i = events.length;\n while (i--) {\n if (this.options.filterTelemetry(events[i])) {\n events.splice(i, 1);\n }\n }\n } catch (_e) {\n this.options.filterTelemetry = null;\n }\n }\n\n // Filter until supported in legacy telemetry\n events = events.filter((e) => e.type !== 'connectivity');\n\n // Remove internal keys from output\n events = events.map(\n ({ otelAttributes: _otelAttributes, ...event }) => event,\n );\n\n return events;\n }\n\n exportTelemetrySpan(attributes = {}) {\n if (this.telemetrySpan) {\n this.telemetrySpan.end(attributes);\n this.telemetrySpan = this.tracing.startSpan('rollbar-telemetry', {});\n }\n }\n\n capture(\n type,\n metadata,\n level,\n rollbarUUID,\n timestamp = null,\n otelAttributes = null,\n ) {\n var e = {\n level: getLevel(type, level),\n type: type,\n timestamp_ms: timestamp || _.now(),\n body: metadata,\n source: 'client',\n };\n if (rollbarUUID) {\n e.uuid = rollbarUUID;\n }\n if (otelAttributes) {\n e.otelAttributes = otelAttributes;\n }\n\n try {\n if (\n _.isFunction(this.options.filterTelemetry) &&\n this.options.filterTelemetry(e)\n ) {\n return false;\n }\n } catch (_exc) {\n this.options.filterTelemetry = null;\n }\n\n this.push(e);\n return e;\n }\n\n captureEvent(type, metadata, level, rollbarUUID) {\n return this.capture(type, metadata, level, rollbarUUID);\n }\n\n captureError(err, level, rollbarUUID, timestamp) {\n const message = err.message || String(err);\n var metadata = { message };\n if (err.stack) {\n metadata.stack = err.stack;\n }\n const otelAttributes = {\n message,\n level,\n type: 'error',\n uuid: rollbarUUID,\n };\n\n this.telemetrySpan?.addEvent(\n 'rollbar-occurrence-event',\n otelAttributes,\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'error',\n metadata,\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureLog(message, level, rollbarUUID, timestamp) {\n const event = rollbarUUID\n ? 'rollbar-occurrence-event'\n : 'rollbar-log-event';\n const otelAttributes = {\n message,\n level,\n ...(rollbarUUID ? { type: 'message', uuid: rollbarUUID } : {}),\n };\n\n this.telemetrySpan?.addEvent(event, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'log',\n { message },\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNetwork(metadata, subtype, rollbarUUID, requestData) {\n subtype = subtype || 'xhr';\n metadata.subtype = metadata.subtype || subtype;\n if (requestData) {\n metadata.request = requestData;\n }\n const level = this.levelFromStatus(metadata.status_code);\n const endTimeNano = (metadata.end_time_ms || 0) * 1e6;\n const otelAttributes = {\n type: metadata.subtype,\n method: metadata.method,\n url: metadata.url,\n statusCode: metadata.status_code,\n 'request.headers': JSON.stringify(metadata.request_headers || {}),\n 'response.headers': JSON.stringify(metadata.response?.headers || {}),\n 'response.timeUnixNano': endTimeNano.toString(),\n };\n const requestBody = metadata.request;\n const responseBody = metadata.response?.body;\n if (requestBody) {\n otelAttributes['request.body'] = JSON.stringify(requestBody);\n }\n if (responseBody) {\n otelAttributes['response.body'] = JSON.stringify(responseBody);\n }\n\n this.telemetrySpan?.addEvent(\n 'rollbar-network-event',\n otelAttributes,\n fromMillis(metadata.start_time_ms),\n );\n\n return this.capture(\n 'network',\n metadata,\n level,\n rollbarUUID,\n metadata.start_time_ms,\n otelAttributes,\n );\n }\n\n levelFromStatus(statusCode) {\n if (statusCode >= 200 && statusCode < 400) {\n return 'info';\n }\n if (statusCode === 0 || statusCode >= 400) {\n return 'error';\n }\n return 'info';\n }\n\n captureDom(subtype, element, value, checked, rollbarUUID) {\n var metadata = {\n subtype: subtype,\n element: element,\n };\n if (value !== undefined) {\n metadata.value = value;\n }\n if (checked !== undefined) {\n metadata.checked = checked;\n }\n return this.capture('dom', metadata, 'info', rollbarUUID);\n }\n\n captureInput({ type, isSynthetic, element, value, timestamp }) {\n const name = 'rollbar-input-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n value,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n value,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureClick({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-click-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n _getRepeatedEvent(name, attributes) {\n const lastEvent = this._lastEvent(this.queue);\n\n if (\n lastEvent &&\n lastEvent.body.type === name &&\n lastEvent.otelAttributes.target === attributes.target\n ) {\n return lastEvent;\n }\n }\n\n _updateRepeatedEvent(event, attributes, timestamp) {\n const duration = Math.max(timestamp - event.timestamp_ms, 1);\n event.body.value = attributes.value;\n event.otelAttributes.value = attributes.value;\n event.otelAttributes.height = attributes.height;\n event.otelAttributes.width = attributes.width;\n event.otelAttributes.textZoomRatio = attributes.textZoomRatio;\n event.otelAttributes['endTimeUnixNano'] = fromMillis(timestamp);\n event.otelAttributes['durationUnixNano'] = fromMillis(duration);\n event.otelAttributes.count = (event.otelAttributes.count || 1) + 1;\n event.otelAttributes.rate = event.otelAttributes.count / (duration / 1000);\n }\n\n _lastEvent(list) {\n return list.length > 0 ? list[list.length - 1] : null;\n }\n\n captureFocus({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-focus-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureResize({\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n timestamp,\n }) {\n const name = 'rollbar-resize-event';\n const metadata = {\n type: name,\n subtype: type,\n width,\n height,\n textZoomRatio,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n };\n\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureDragDrop({\n type,\n isSynthetic,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n timestamp,\n }) {\n const name = 'rollbar-dragdrop-event';\n let metadata = {\n type: name,\n subtype: type,\n isSynthetic,\n };\n\n let otelAttributes = {\n type,\n isSynthetic,\n };\n\n if (type === 'dragstart') {\n metadata = { ...metadata, element, dropEffect, effectAllowed };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n };\n }\n\n if (type === 'drop') {\n metadata = {\n ...metadata,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNavigation(from, to, rollbarUUID, timestamp) {\n this.telemetrySpan?.addEvent(\n 'rollbar-navigation-event',\n { 'previous.url.full': from, 'url.full': to },\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'navigation',\n { from, to },\n 'info',\n rollbarUUID,\n timestamp,\n );\n }\n\n captureDomContentLoaded(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'DOMContentLoaded' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'DOMContentLoaded'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureLoad(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'load' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'load'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureConnectivityChange({ type, isSynthetic, timestamp }) {\n const name = 'rollbar-connectivity-event';\n const metadata = {\n type: name,\n subtype: type,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'connectivity',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n // Only intended to be used internally by the notifier\n _captureRollbarItem(item) {\n if (!this.options.includeItemsInTelemetry) {\n return;\n }\n if (item.err) {\n return this.captureError(item.err, item.level, item.uuid, item.timestamp);\n }\n if (item.message) {\n return this.captureLog(\n item.message,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n if (item.custom) {\n return this.capture(\n 'log',\n item.custom,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n }\n\n push(e) {\n this.queue.push(e);\n if (this.queue.length > this.maxQueueSize) {\n this.queue.shift();\n }\n }\n}\n\nfunction getLevel(type, level) {\n if (level) {\n return level;\n }\n var defaultLevel = {\n error: 'error',\n manual: 'info',\n };\n return defaultLevel[type] || 'info';\n}\n\nexport default Telemeter;\n","export class Context {\n constructor(parentContext) {\n this._currentContext = parentContext ? new Map(parentContext) : new Map();\n }\n\n getValue(key) {\n return this._currentContext.get(key);\n }\n\n setValue(key, value) {\n const context = new Context(this._currentContext);\n context._currentContext.set(key, value);\n return context;\n }\n\n deleteValue(key) {\n const context = new Context(self._currentContext);\n context._currentContext.delete(key);\n return context;\n }\n}\n\nexport const ROOT_CONTEXT = new Context();\n","import { ROOT_CONTEXT } from './context.js';\n\nexport class ContextManager {\n constructor() {\n this.currentContext = ROOT_CONTEXT;\n }\n\n active() {\n return this.currentContext;\n }\n\n enterContext(context) {\n const previousContext = this.currentContext;\n this.currentContext = context || ROOT_CONTEXT;\n return previousContext;\n }\n\n exitContext(context) {\n this.currentContext = context;\n return this.currentContext;\n }\n\n with(context, fn, thisArg, ...args) {\n const previousContext = this.enterContext(context);\n try {\n return fn.call(thisArg, ...args);\n } finally {\n this.exitContext(previousContext);\n }\n }\n}\n\nexport function createContextKey(key) {\n // Use Symbol for OpenTelemetry compatibility.\n return Symbol.for(key);\n}\n","/**\n * @module hrtime\n *\n * @description Methods for handling OpenTelemetry hrtime.\n */\n\n/**\n * Convert a duration in milliseconds to an OpenTelemetry hrtime tuple.\n *\n * @param {number} millis - The duration in milliseconds.\n * @returns {[number, number]} An array where the first element is seconds\n * and the second is nanoseconds.\n */\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in milliseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in milliseconds.\n */\nfunction toMillis(hrtime) {\n return hrtime[0] * 1e3 + Math.round(hrtime[1] / 1e6);\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in nanoseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in nanoseconds.\n */\nfunction toNanos(hrtime) {\n return hrtime[0] * 1e9 + hrtime[1];\n}\n\n/**\n * Adds two OpenTelemetry hrtime tuples.\n *\n * @param {[number, number]} a - The first hrtime tuple [s, ns].\n * @param {[number, number]} b - The second hrtime tuple [s, ns].\n * @returns {[number, number]} Summed hrtime tuple, normalized.\n *\n */\nfunction add(a, b) {\n return [a[0] + b[0] + Math.trunc((a[1] + b[1]) / 1e9), (a[1] + b[1]) % 1e9];\n}\n\n/**\n * Get the current high-resolution time as an OpenTelemetry hrtime tuple.\n *\n * @param {boolean} usePerformance=false - If true, uses the Performance API (timeOrigin + now()).\n *\n * @returns {[number, number]} The current hrtime tuple [s, ns].\n */\nfunction now(usePerformance = false) {\n if (usePerformance) {\n return add(\n fromMillis(performance.timeOrigin),\n fromMillis(performance.now()),\n );\n }\n return fromMillis(Date.now());\n}\n\n/**\n * Check if a value is a valid OpenTelemetry hrtime tuple.\n *\n * An hrtime tuple is an Array of exactly two numbers:\n * [seconds, nanoseconds]\n *\n * @param {*} value – anything to test\n * @returns {boolean} true if `value` is a [number, number] array of length 2\n *\n * @example\n * isHrTime([ 1, 500 ]); // true\n * isHrTime([ 0, 1e9 ]); // true\n * isHrTime([ '1', 500 ]); // false\n * isHrTime({ 0: 1, 1: 500 }); // false\n */\nfunction isHrTime(value) {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number'\n );\n}\n\n/**\n * Methods for handling hrtime. OpenTelemetry uses the [seconds, nanoseconds]\n * format for hrtime in the `ReadableSpan` interface.\n *\n * @example\n * import hrtime from '@tracing/hrtime.js';\n *\n * hrtime.fromMillis(1000);\n * hrtime.toMillis([0, 1000]);\n * hrtime.add([0, 0], [0, 1000]);\n * hrtime.now();\n * hrtime.isHrTime([0, 1000]);\n */\nexport default { fromMillis, toMillis, toNanos, add, now, isHrTime };\n","import hrtime from './hrtime.js';\n\n/**\n * SpanExporter is responsible for exporting ReadableSpan objects\n * and transforming them into the OTLP-compatible format.\n */\nexport class SpanExporter {\n constructor(api, options = {}) {\n this.api = api;\n this.options = options;\n }\n\n /**\n * Export spans to the span export queue\n *\n * @param {Array} spans - Array of ReadableSpan objects to export\n * @param {Function} _resultCallback - Optional callback (not used)\n */\n export(spans, _resultCallback) {\n spanExportQueue.push(...spans);\n }\n\n /**\n * Transforms an array of ReadableSpan objects into the OTLP format payload\n * compatible with the Rollbar API. This follows the OpenTelemetry protocol\n * specification for traces.\n *\n * @returns {Object} OTLP format payload for API transmission\n */\n toPayload() {\n const spans = spanExportQueue.slice();\n spanExportQueue.length = 0;\n\n if (!spans || !spans.length) {\n return { resourceSpans: [] };\n }\n\n const resource = (spans[0] && spans[0].resource) || {};\n\n const scopeMap = new Map();\n\n for (const span of spans) {\n const scopeKey = span.instrumentationScope\n ? `${span.instrumentationScope.name}:${span.instrumentationScope.version}`\n : 'default:1.0.0';\n\n if (!scopeMap.has(scopeKey)) {\n scopeMap.set(scopeKey, {\n scope: span.instrumentationScope || {\n name: 'default',\n version: '1.0.0',\n attributes: [],\n },\n spans: [],\n });\n }\n\n scopeMap.get(scopeKey).spans.push(this._transformSpan(span));\n }\n\n return {\n resourceSpans: [\n {\n resource: this._transformResource(resource),\n scopeSpans: Array.from(scopeMap.values()).map((scopeData) => ({\n scope: this._transformInstrumentationScope(scopeData.scope),\n spans: scopeData.spans,\n })),\n },\n ],\n };\n }\n\n /**\n * Sends the given payload to the Rollbar API.\n *\n * @param {String} payload - Serialized OTLP format payload\n * @param {Object} headers - Optional request headers\n * @returns {Promise} Promise that resolves when the request completes\n */\n post(payload, headers = {}) {\n return this.api.postSpans(payload, headers);\n }\n\n /**\n * Transforms a ReadableSpan into the OTLP Span format\n *\n * @private\n * @param {Object} span - ReadableSpan object to transform\n * @returns {Object} OTLP Span format\n */\n _transformSpan(span) {\n const transformAttributes = (attributes) => {\n return Object.entries(attributes || {}).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n };\n\n const transformEvents = (events) => {\n return (events || []).map((event) => ({\n timeUnixNano: hrtime.toNanos(event.time),\n name: event.name,\n attributes: transformAttributes(event.attributes),\n }));\n };\n\n return {\n traceId: span.spanContext.traceId,\n spanId: span.spanContext.spanId,\n parentSpanId: span.parentSpanId || '',\n name: span.name,\n kind: span.kind || 1, // INTERNAL by default\n startTimeUnixNano: hrtime.toNanos(span.startTime),\n endTimeUnixNano: hrtime.toNanos(span.endTime),\n attributes: transformAttributes(span.attributes),\n events: transformEvents(span.events),\n };\n }\n\n /**\n * Transforms a resource object into OTLP Resource format\n *\n * @private\n * @param {Object} resource - Resource information\n * @returns {Object} OTLP Resource format\n */\n _transformResource(resource) {\n const attributes = resource.attributes || {};\n const keyValues = Object.entries(attributes).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n\n return {\n attributes: keyValues,\n };\n }\n\n /**\n * Transforms an instrumentation scope into OTLP InstrumentationScope format\n *\n * @private\n * @param {Object} scope - Instrumentation scope information\n * @returns {Object} OTLP InstrumentationScope format\n */\n _transformInstrumentationScope(scope) {\n return {\n name: scope.name || '',\n version: scope.version || '',\n attributes: (scope.attributes || []).map((attr) => ({\n key: attr.key,\n value: this._transformAnyValue(attr.value),\n })),\n };\n }\n\n /**\n * Transforms a JavaScript value into an OTLP AnyValue\n *\n * @private\n * @param {any} value - Value to transform\n * @returns {Object} OTLP AnyValue format\n */\n _transformAnyValue(value) {\n if (value === null || value === undefined) {\n return { stringValue: '' };\n }\n\n const type = typeof value;\n\n if (type === 'string') {\n return { stringValue: value };\n } else if (type === 'number') {\n if (Number.isInteger(value)) {\n return { intValue: value.toString() };\n } else {\n return { doubleValue: value };\n }\n } else if (type === 'boolean') {\n return { boolValue: value };\n } else if (Array.isArray(value)) {\n return {\n arrayValue: {\n values: value.map((v) => this._transformAnyValue(v)),\n },\n };\n } else if (type === 'object') {\n return {\n kvlistValue: {\n values: Object.entries(value).map(([k, v]) => ({\n key: k,\n value: this._transformAnyValue(v),\n })),\n },\n };\n }\n\n return { stringValue: String(value) };\n }\n}\n\nexport const spanExportQueue = [];\n","/**\n * Generate a random hexadecimal ID of specified byte length\n *\n * @param {number} bytes - Number of bytes for the ID (default: 16)\n * @returns {string} - Hexadecimal string representation\n */\nfunction gen(bytes = 16) {\n let randomBytes = new Uint8Array(bytes);\n crypto.getRandomValues(randomBytes);\n let randHex = Array.from(randomBytes, (byte) =>\n byte.toString(16).padStart(2, '0'),\n ).join('');\n return randHex;\n}\n\n/**\n * Tracing id generation utils\n *\n * @example\n * import id from './id.js';\n *\n * const spanId = id.gen(8); // => \"a1b2c3d4e5f6...\"\n */\nexport default { gen };\n","import id from './id.js';\n\nconst SESSION_KEY = 'RollbarSession';\n\nexport class Session {\n _attributes;\n\n constructor(tracing, options) {\n this.options = options;\n this.tracing = tracing;\n this.window = tracing.window;\n this.session = null;\n this._attributes = {};\n }\n\n init(attrs = {}) {\n if (this.session) {\n return this;\n }\n this.getSession() || this.createSession();\n\n this.initSessionAttributes(attrs);\n\n return this;\n }\n\n getSession() {\n try {\n const serializedSession = this.window.sessionStorage.getItem(SESSION_KEY);\n\n if (!serializedSession) {\n return null;\n }\n\n this.session = JSON.parse(serializedSession);\n } catch {\n return null;\n }\n return this;\n }\n\n createSession() {\n this.session = {\n id: id.gen(),\n createdAt: Date.now(),\n };\n\n return this.setSession(this.session);\n }\n\n setSession(session) {\n const sessionString = JSON.stringify(session);\n\n try {\n this.window.sessionStorage.setItem(SESSION_KEY, sessionString);\n } catch {\n return null;\n }\n return this;\n }\n\n get attributes() {\n return this._attributes;\n }\n\n setAttributes(attributes) {\n this._attributes = { ...this._attributes, ...attributes };\n return this;\n }\n\n setUser(user) {\n this.setAttributes({\n 'user.id': user?.id,\n 'user.email': user?.email,\n 'user.name': user?.name || user?.username,\n });\n return this;\n }\n\n initSessionAttributes(attrs) {\n this.setAttributes({\n 'session.id': this.session.id,\n 'browser.brands': navigator.userAgentData?.brands,\n 'browser.language': navigator.language,\n 'browser.mobile': navigator.userAgentData?.mobile,\n 'browser.platform': navigator.userAgentData?.platform,\n 'client.address': '$remote_ip', // updated at the API\n 'rollbar.notifier.framework': 'browser-js',\n 'user_agent.original': navigator.userAgent,\n ...attrs,\n });\n return this;\n }\n}\n","let log = () => {};\n\nconst levels = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n disable: 4,\n};\n\nconst logger = {\n error: (...args) => log('error', args),\n warn: (...args) => log('warn', args),\n info: (...args) => log('info', args),\n debug: (...args) => log('debug', args),\n log: (...args) => log('info', args),\n init: ({ logLevel }) => {\n log = function (level, args) {\n if (levels[level] < levels[logLevel]) return;\n\n args.unshift('Rollbar:');\n\n // eslint-disable-next-line no-console\n console[level].apply(console, args);\n };\n },\n};\n\nexport default logger;\n","import logger from '../logger.js';\n\nexport class SpanProcessor {\n constructor(exporter, options = {}) {\n this.exporter = exporter;\n this.options = options;\n this.pendingSpans = new Map();\n this.transforms = [this.userTransform.bind(this)];\n }\n\n addTransform(transformFn) {\n this.transforms.unshift(transformFn);\n }\n\n userTransform(span) {\n if (this.options.transformSpan) {\n this.options.transformSpan({ span: span });\n }\n }\n\n applyTransforms(span) {\n for (const transform of this.transforms) {\n try {\n transform(span);\n } catch (e) {\n logger.error('Error running span transform callback', e);\n }\n }\n }\n\n onStart(span, _parentContext) {\n this.pendingSpans.set(span.span.spanContext.spanId, span);\n }\n\n onEnd(span) {\n this.applyTransforms(span.span);\n this.exporter.export([span.export()]);\n this.pendingSpans.delete(span.span.spanContext.spanId);\n }\n}\n","import hrtime from './hrtime.js';\n\nexport class Span {\n constructor(options) {\n this.usePerformance = options.usePerformance;\n this.initReadableSpan(options);\n\n this.spanProcessor = options.spanProcessor;\n this.spanProcessor.onStart(this, options.context);\n\n if (options.attributes) {\n this.setAttributes(options.attributes);\n }\n return this;\n }\n\n initReadableSpan(options) {\n this.span = {\n name: options.name,\n kind: options.kind,\n spanContext: options.spanContext,\n parentSpanId: options.parentSpanId,\n startTime: options.startTime || hrtime.now(options.usePerformance),\n endTime: [0, 0],\n status: { code: 0, message: '' },\n attributes: { 'session.id': options.session?.id },\n links: [],\n events: [],\n duration: 0,\n ended: false,\n resource: options.resource,\n instrumentationScope: options.scope,\n droppedAttributesCount: 0,\n droppedEventsCount: 0,\n droppedLinksCount: 0,\n };\n }\n\n spanContext() {\n return this.span.spanContext;\n }\n\n get spanId() {\n return this.span.spanContext.spanId;\n }\n\n get traceId() {\n return this.span.spanContext.traceId;\n }\n\n setAttribute(key, value) {\n if (value == null || this.span.ended) return this;\n if (key.length === 0) return this;\n\n this.span.attributes[key] = value;\n return this;\n }\n\n setAttributes(attributes) {\n for (const [k, v] of Object.entries(attributes)) {\n this.setAttribute(k, v);\n }\n return this;\n }\n\n addEvent(name, attributes = {}, time) {\n if (this.span.ended) return this;\n\n this.span.events.push({\n name,\n attributes,\n time: time || hrtime.now(),\n droppedAttributesCount: 0,\n });\n\n return this;\n }\n\n isRecording() {\n return this.span.ended === false;\n }\n\n end(attributes, time) {\n if (attributes) this.setAttributes(attributes);\n this.span.endTime = time || hrtime.now(this.usePerformance);\n this.span.ended = true;\n this.spanProcessor.onEnd(this);\n }\n\n export() {\n return this.span;\n }\n}\n","import id from './id.js';\nimport { Span } from './span.js';\n\nexport class Tracer {\n constructor(tracing, spanProcessor) {\n this.spanProcessor = spanProcessor;\n this.tracing = tracing;\n }\n\n startSpan(\n name,\n options = {},\n context = this.tracing.contextManager.active(),\n ) {\n const parentSpan = this.tracing.getSpan(context);\n const parentSpanContext = parentSpan?.spanContext();\n const spanId = id.gen(8);\n let traceId;\n let traceFlags = 0;\n let traceState = null;\n let parentSpanId;\n if (parentSpanContext) {\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n parentSpanId = parentSpanContext.spanId;\n } else {\n traceId = id.gen(16);\n }\n\n const kind = 0;\n const spanContext = { traceId, spanId, traceFlags, traceState };\n const resource = {\n attributes: {\n ...(this.tracing.resource?.attributes || {}),\n ...(options.resource?.attributes || {}),\n },\n };\n\n const span = new Span({\n resource: resource,\n scope: this.tracing.scope,\n session: this.tracing.session?.session,\n context,\n spanContext,\n name,\n kind,\n parentSpanId,\n spanProcessor: this.spanProcessor,\n startTime: options.startTime,\n usePerformance: options.usePerformance,\n });\n return span;\n }\n}\n","import { ContextManager, createContextKey } from './contextManager.js';\nimport { SpanExporter } from './exporter.js';\nimport id from './id.js';\nimport { Session } from './session.js';\nimport { SpanProcessor } from './spanProcessor.js';\nimport { Tracer } from './tracer.js';\n\nconst SPAN_KEY = createContextKey('Rollbar Context Key SPAN');\n\nexport default class Tracing {\n constructor(gWindow, api, options) {\n this.api = api;\n this.options = options;\n this.window = gWindow;\n\n if (this.window.sessionStorage) {\n this.session = new Session(this, options);\n }\n this.createTracer();\n }\n\n configure(options) {\n // Options merge happens before configure is called, so we can just replace.\n this.options = options;\n }\n\n initSession() {\n if (this.session) {\n this.session.init();\n }\n }\n\n get sessionId() {\n if (this.session) {\n return this.session.session.id;\n }\n return null;\n }\n\n get resource() {\n return {\n attributes: {\n ...(this.options.resource || {}),\n 'rollbar.environment':\n this.options.payload?.environment ?? this.options.environment,\n },\n };\n }\n\n get scope() {\n return {\n name: 'rollbar-browser-js',\n version: this.options.version,\n };\n }\n\n idGen(bytes = 16) {\n return id.gen(bytes);\n }\n\n createTracer() {\n this.contextManager = new ContextManager();\n this.exporter = new SpanExporter(this.api, this.options);\n this.spanProcessor = new SpanProcessor(this.exporter, this.options.tracing);\n this.tracer = new Tracer(this, this.spanProcessor);\n }\n\n getTracer() {\n return this.tracer;\n }\n\n addSpanTransform(transformFn) {\n this.spanProcessor.addTransform(transformFn);\n }\n\n getSpan(context = this.contextManager.active()) {\n return context.getValue(SPAN_KEY);\n }\n\n setSpan(context = this.contextManager.active(), span) {\n return context.setValue(SPAN_KEY, span);\n }\n\n startSpan(name, options = {}, context = this.contextManager.active()) {\n return this.tracer.startSpan(name, options, context);\n }\n\n with(context, fn, thisArg, ...args) {\n return this.contextManager.with(context, fn, thisArg, ...args);\n }\n\n withSpan(name, options, fn, thisArg) {\n const span = this.startSpan(name, options);\n return this.with(\n this.setSpan(this.contextManager.active(), span),\n fn,\n thisArg,\n span,\n );\n }\n}\n","import traverse from './utility/traverse.js';\nimport * as _ from './utility.js';\n\nfunction raw(payload, jsonBackup) {\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction selectFrames(frames, range) {\n var len = frames.length;\n if (len > range * 2) {\n return frames.slice(0, range).concat(frames.slice(len - range));\n }\n return frames;\n}\n\nfunction truncateFrames(payload, jsonBackup, range) {\n range = typeof range === 'undefined' ? 30 : range;\n var body = payload.data.body;\n var frames;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (const trace of chain) {\n frames = trace.frames;\n frames = selectFrames(frames, range);\n trace.frames = frames;\n }\n } else if (body.trace) {\n frames = body.trace.frames;\n frames = selectFrames(frames, range);\n body.trace.frames = frames;\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction maybeTruncateValue(len, val) {\n if (!val) {\n return val;\n }\n if (val.length > len) {\n return val.slice(0, len - 3).concat('...');\n }\n return val;\n}\n\nfunction truncateStrings(len, payload, jsonBackup) {\n function truncator(k, v, seen) {\n switch (_.typeName(v)) {\n case 'string':\n return maybeTruncateValue(len, v);\n case 'object':\n case 'array':\n return traverse(v, truncator, seen);\n default:\n return v;\n }\n }\n payload = traverse(payload, truncator);\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction truncateTraceData(traceData) {\n if (traceData.exception) {\n delete traceData.exception.description;\n traceData.exception.message = maybeTruncateValue(\n 255,\n traceData.exception.message,\n );\n }\n traceData.frames = selectFrames(traceData.frames, 1);\n return traceData;\n}\n\nfunction minBody(payload, jsonBackup) {\n var body = payload.data.body;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (const [index, trace] of chain.entries()) {\n chain[index] = truncateTraceData(trace);\n }\n } else if (body.trace) {\n body.trace = truncateTraceData(body.trace);\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction needsTruncation(payload, maxSize) {\n return _.maxByteSize(payload) > maxSize;\n}\n\nfunction truncate(payload, jsonBackup, maxSize) {\n maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize;\n var strategies = [\n raw,\n truncateFrames,\n truncateStrings.bind(null, 1024),\n truncateStrings.bind(null, 512),\n truncateStrings.bind(null, 256),\n minBody,\n ];\n var strategy, results, result;\n\n while ((strategy = strategies.shift())) {\n results = strategy(payload, jsonBackup);\n payload = results[0];\n result = results[1];\n if (result.error || !needsTruncation(result.value, maxSize)) {\n return result;\n }\n }\n return result;\n}\n\nexport default {\n truncate,\n\n /* for testing */\n raw,\n truncateFrames,\n truncateStrings,\n maybeTruncateValue,\n};\n","import * as _ from './utility.js';\n\nfunction buildPayload(data) {\n if (!_.isType(data.context, 'string')) {\n var contextResult = _.stringify(data.context);\n if (contextResult.error) {\n data.context = \"Error: could not serialize 'context'\";\n } else {\n data.context = contextResult.value || '';\n }\n if (data.context.length > 255) {\n data.context = data.context.substr(0, 255);\n }\n }\n return {\n data: data,\n };\n}\n\nfunction getTransportFromOptions(options, defaults, url) {\n var hostname = defaults.hostname;\n var protocol = defaults.protocol;\n var port = defaults.port;\n var path = defaults.path;\n var search = defaults.search;\n var timeout = options.timeout;\n var transport = detectTransport(options);\n\n var proxy = options.proxy;\n if (options.endpoint) {\n var opts = url.parse(options.endpoint);\n hostname = opts.hostname;\n protocol = opts.protocol;\n port = opts.port;\n path = opts.pathname;\n search = opts.search;\n }\n return {\n timeout: timeout,\n hostname: hostname,\n protocol: protocol,\n port: port,\n path: path,\n search: search,\n proxy: proxy,\n transport: transport,\n };\n}\n\nfunction detectTransport(options) {\n var gWindow =\n (typeof window !== 'undefined' && window) ||\n (typeof self !== 'undefined' && self);\n var transport = options.defaultTransport || 'xhr';\n if (typeof gWindow.fetch === 'undefined') transport = 'xhr';\n if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch';\n return transport;\n}\n\nfunction transportOptions(transport, method) {\n var protocol = transport.protocol || 'https:';\n var port =\n transport.port ||\n (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined);\n var hostname = transport.hostname;\n var path = transport.path;\n var timeout = transport.timeout;\n var transportAPI = transport.transport;\n if (transport.search) {\n path = path + transport.search;\n }\n if (transport.proxy) {\n path = protocol + '//' + hostname + path;\n hostname = transport.proxy.host || transport.proxy.hostname;\n port = transport.proxy.port;\n protocol = transport.proxy.protocol || protocol;\n }\n return {\n timeout: timeout,\n protocol: protocol,\n hostname: hostname,\n path: path,\n port: port,\n method: method,\n transport: transportAPI,\n };\n}\n\nfunction appendPathToPath(base, path) {\n var baseTrailingSlash = /\\/$/.test(base);\n var pathBeginningSlash = /^\\//.test(path);\n\n if (baseTrailingSlash && pathBeginningSlash) {\n path = path.substring(1);\n } else if (!baseTrailingSlash && !pathBeginningSlash) {\n path = '/' + path;\n }\n\n return base + path;\n}\n\nexport {\n buildPayload,\n getTransportFromOptions,\n transportOptions,\n appendPathToPath,\n};\n","import * as helpers from './apiUtility.js';\nimport { stringify, merge } from './utility.js';\n\nconst defaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/item/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\nconst OTLPDefaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/session/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\n/**\n * Api encapsulates methods of communicating with the Rollbar API. It is a\n * standard interface with some parts implemented differently for server or\n * browser contexts. It is an object that should be instantiated when used so\n * it can contain non-global options that may be different for another instance\n * of RollbarApi.\n */\nclass Api {\n /**\n * @param {Object} options - Configuration supplied from the parent Rollbar instance.\n * @param {string} options.accessToken - Token used to authenticate API calls.\n * @param {string} [options.endpoint] - Optional fully qualified URL overriding\n * the default `https://api.rollbar.com/api/1/item`.\n * @param {Object} [options.proxy] - Optional proxy descriptor containing:\n * `host`/`hostname` (required), `port`, and `protocol`.\n * @param {Object} transport - Adapter implementing `post` and `postJsonPayload`.\n * @param {Object} urllib - Minimal URL helper used for option normalization.\n * @param {Object} truncation - Optional truncation helper for payload size enforcement.\n */\n constructor(options, transport, urllib, truncation) {\n this.options = options;\n this.transport = transport;\n this.url = urllib;\n this.truncation = truncation;\n this.accessToken = options.accessToken;\n this.transportOptions = _getTransport(options, urllib);\n this.OTLPTransportOptions = _getOTLPTransport(options, urllib);\n }\n\n /**\n * Wraps transport.post in a Promise to support async/await\n *\n * @param {Object} options - Options for the API request\n * @param {string} options.accessToken - The access token for authentication\n * @param {Object} options.transportOptions - Options for the transport\n * @param {Object} options.payload - The data payload to send\n * @returns {Promise} A promise that resolves with the response or rejects with an error\n * @private\n */\n _postPromise({ accessToken, options, payload, headers }) {\n return new Promise((resolve, reject) => {\n this.transport.post({\n accessToken,\n options,\n payload,\n headers,\n callback: (err, resp) => (err ? reject(err) : resolve(resp)),\n });\n });\n }\n\n /**\n *\n * @param data\n * @param callback\n */\n postItem(data, callback) {\n const options = helpers.transportOptions(this.transportOptions, 'POST');\n const payload = helpers.buildPayload(data);\n\n // ensure the network request is scheduled after the current tick.\n setTimeout(() => {\n this.transport.post({\n accessToken: this.accessToken,\n options,\n payload,\n callback,\n });\n }, 0);\n }\n\n /**\n * Posts spans to the Rollbar API using the session endpoint\n *\n * @param {Array} payload - The spans to send\n * @returns {Promise} A promise that resolves with the API response\n */\n async postSpans(payload, headers = {}) {\n const options = helpers.transportOptions(this.OTLPTransportOptions, 'POST');\n\n return this._postPromise({\n accessToken: this.accessToken,\n options,\n payload,\n headers,\n });\n }\n\n /**\n *\n * @param data\n * @param callback\n */\n buildJsonPayload(data, callback) {\n const payload = helpers.buildPayload(data);\n\n let stringifyResult;\n if (this.truncation) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = stringify(payload);\n }\n\n if (stringifyResult.error) {\n if (callback) {\n callback(stringifyResult.error);\n }\n return null;\n }\n\n return stringifyResult.value;\n }\n\n /**\n *\n * @param jsonPayload\n * @param callback\n */\n postJsonPayload(jsonPayload, callback) {\n const transportOptions = helpers.transportOptions(\n this.transportOptions,\n 'POST',\n );\n this.transport.postJsonPayload(\n this.accessToken,\n transportOptions,\n jsonPayload,\n callback,\n );\n }\n\n configure(options) {\n const oldOptions = this.options;\n this.options = merge(oldOptions, options);\n this.transportOptions = _getTransport(this.options, this.url);\n this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url);\n if (this.options.accessToken !== undefined) {\n this.accessToken = this.options.accessToken;\n }\n return this;\n }\n}\n\nfunction _getTransport(options, url) {\n return helpers.getTransportFromOptions(options, defaultOptions, url);\n}\n\nfunction _getOTLPTransport(options, url) {\n options = { ...options, endpoint: options.tracing?.endpoint };\n return helpers.getTransportFromOptions(options, OTLPDefaultOptions, url);\n}\n\nexport default Api;\n","/**\n * Default options shared across platforms\n */\nexport const version = '3.0.0';\nexport const endpoint = 'api.rollbar.com/api/1/item/';\nexport const logLevel = 'debug';\nexport const reportLevel = 'debug';\nexport const uncaughtErrorLevel = 'error';\nexport const maxItems = 0;\nexport const itemsPerMin = 60;\n\nexport const commonScrubFields = [\n 'pw',\n 'pass',\n 'passwd',\n 'password',\n 'secret',\n 'confirm_password',\n 'confirmPassword',\n 'password_confirmation',\n 'passwordConfirmation',\n 'access_token',\n 'accessToken',\n 'X-Rollbar-Access-Token',\n 'secret_key',\n 'secretKey',\n 'secretToken',\n];\n\nexport const apiScrubFields = [\n 'api_key',\n 'authenticity_token',\n 'oauth_token',\n 'token',\n 'user_session_secret',\n];\n\nexport const requestScrubFields = [\n 'request.session.csrf',\n 'request.session._csrf',\n 'request.params._csrf',\n 'request.cookie',\n 'request.cookies',\n];\n\nexport const commonScrubHeaders = [\n 'authorization',\n 'www-authorization',\n 'http_authorization',\n 'omniauth.auth',\n 'cookie',\n 'oauth-access-token',\n 'x-access-token',\n 'x_csrf_token',\n 'http_x_csrf_token',\n 'x-csrf-token',\n];\n\n// For backward compatibility with default export\nexport default {\n version,\n endpoint,\n logLevel,\n reportLevel,\n uncaughtErrorLevel,\n maxItems,\n itemsPerMin,\n};\n","const FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\nfunction parse(error, options) {\n if (typeof error.stacktrace !== \"undefined\" || typeof error[\"opera#sourceloc\"] !== \"undefined\")\n return parseOpera(error, options);\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIE(error, options);\n else if (error.stack)\n return parseFFOrSafari(error, options);\n else if (options?.allowEmpty)\n return [];\n else\n throw new Error(\"Cannot parse given Error object\");\n}\nfunction parseStack(stackString, options) {\n if (stackString.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIeString(stackString, options);\n else\n return parseFFOrSafariString(stackString, options);\n}\nfunction extractLocation(urlLike) {\n if (!urlLike.includes(\":\"))\n return [urlLike, undefined, undefined];\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n const parts = regExp.exec(urlLike.replace(/[()]/g, \"\"));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n}\nfunction applySlice(lines, options) {\n if (options && options.slice != null) {\n if (Array.isArray(options.slice))\n return lines.slice(options.slice[0], options.slice[1]);\n return lines.slice(0, options.slice);\n }\n return lines;\n}\nfunction parseV8OrIE(error, options) {\n return parseV8OrIeString(error.stack, options);\n}\nfunction parseV8OrIeString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\"(eval \")) {\n line = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(,.*$)/g, \"\");\n }\n let sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\").replace(/^.*?\\s+/, \"\");\n const location = sanitizedLine.match(/ (\\(.+\\)$)/);\n sanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n const locationParts = extractLocation(location ? location[1] : sanitizedLine);\n const functionName = location && sanitizedLine || undefined;\n const fileName = [\"eval\", \"\"].includes(locationParts[0]) ? undefined : locationParts[0];\n return {\n function: functionName,\n file: fileName,\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\nfunction parseFFOrSafari(error, options) {\n return parseFFOrSafariString(error.stack, options);\n}\nfunction parseFFOrSafariString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\" > eval\"))\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, \":$1\");\n if (!line.includes(\"@\") && !line.includes(\":\")) {\n return {\n function: line\n };\n } else {\n const functionNameRegex = /(([^\\n\\r\"\\u2028\\u2029]*\".[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*(?:@[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*)*(?:[\\n\\r\\u2028\\u2029][^@]*)?)?[^@]*)@/;\n const matches = line.match(functionNameRegex);\n const functionName = matches && matches[1] ? matches[1] : undefined;\n const locationParts = extractLocation(line.replace(functionNameRegex, \"\"));\n return {\n function: functionName,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n }\n });\n}\nfunction parseOpera(e, options) {\n if (!e.stacktrace || e.message.includes(\"\\n\") && e.message.split(\"\\n\").length > e.stacktrace.split(\"\\n\").length)\n return parseOpera9(e);\n else if (!e.stack)\n return parseOpera10(e);\n else\n return parseOpera11(e, options);\n}\nfunction parseOpera9(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n const lines = e.message.split(\"\\n\");\n const result = [];\n for (let i = 2, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n file: match[2],\n line: +match[1],\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera10(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n const lines = e.stacktrace.split(\"\\n\");\n const result = [];\n for (let i = 0, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n function: match[3] || undefined,\n file: match[2],\n line: match[1] ? +match[1] : undefined,\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera11(error, options) {\n const filtered = applySlice(\n // @ts-expect-error missing stack property\n error.stack.split(\"\\n\").filter((line) => {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }),\n options\n );\n return filtered.map((line) => {\n const tokens = line.split(\"@\");\n const locationParts = extractLocation(tokens.pop());\n const functionCall = tokens.shift() || \"\";\n const functionName = functionCall.replace(//, \"$2\").replace(/\\([^)]*\\)/g, \"\") || undefined;\n let argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/))\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, \"$1\");\n const args = argsRaw === undefined || argsRaw === \"[arguments not available]\" ? undefined : argsRaw.split(\",\");\n return {\n function: functionName,\n args,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\n\nexport { extractLocation, parse, parseFFOrSafari, parseFFOrSafariString, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseStack, parseV8OrIE, parseV8OrIeString };\n","import { parse as parse$1, parseV8OrIE as parseV8OrIE$1, parseFFOrSafari as parseFFOrSafari$1, parseOpera as parseOpera$1, parseOpera9 as parseOpera9$1, parseOpera10 as parseOpera10$1, parseOpera11 as parseOpera11$1 } from './lite.mjs';\nexport { extractLocation } from './lite.mjs';\n\nfunction stackframesLiteToStackframes(liteStackframes) {\n return liteStackframes.map((liteStackframe) => {\n return {\n functionName: liteStackframe.function,\n args: liteStackframe.args,\n fileName: liteStackframe.file,\n lineNumber: liteStackframe.line,\n columnNumber: liteStackframe.col,\n source: liteStackframe.raw\n };\n });\n}\nfunction parse(error, options) {\n return stackframesLiteToStackframes(parse$1(error, options));\n}\nfunction parseV8OrIE(error) {\n return stackframesLiteToStackframes(parseV8OrIE$1(error));\n}\nfunction parseFFOrSafari(error) {\n return stackframesLiteToStackframes(parseFFOrSafari$1(error));\n}\nfunction parseOpera(e) {\n return stackframesLiteToStackframes(parseOpera$1(e));\n}\nfunction parseOpera9(e) {\n return stackframesLiteToStackframes(parseOpera9$1(e));\n}\nfunction parseOpera10(e) {\n return stackframesLiteToStackframes(parseOpera10$1(e));\n}\nfunction parseOpera11(error) {\n return stackframesLiteToStackframes(parseOpera11$1(error));\n}\n\nexport { parse, parseFFOrSafari, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseV8OrIE };\n","import { parse as parseErrorStack } from 'error-stack-parser-es';\n\nvar UNKNOWN_FUNCTION = '?';\nvar ERR_CLASS_REGEXP = new RegExp(\n '^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): ',\n);\n\nfunction guessFunctionName() {\n return UNKNOWN_FUNCTION;\n}\n\nfunction gatherContext() {\n return null;\n}\n\nfunction Frame(stackFrame) {\n var data = {};\n\n data._stackFrame = stackFrame;\n\n data.url = stackFrame.fileName;\n data.line = stackFrame.lineNumber;\n data.func = stackFrame.functionName;\n data.column = stackFrame.columnNumber;\n data.args = stackFrame.args;\n\n data.context = gatherContext();\n\n return data;\n}\n\nfunction Stack(exception, skip) {\n function getStack() {\n var parserStack = [];\n\n skip = skip || 0;\n\n try {\n parserStack = parseErrorStack(exception);\n } catch (_e) {\n parserStack = [];\n }\n\n var stack = [];\n\n for (var i = skip; i < parserStack.length; i++) {\n stack.push(new Frame(parserStack[i]));\n }\n\n return stack;\n }\n\n return {\n stack: getStack(),\n message: exception.message,\n name: _mostSpecificErrorName(exception),\n rawStack: exception.stack,\n rawException: exception,\n };\n}\n\nfunction parse(e, skip) {\n var err = e;\n\n if (err.nested || err.cause) {\n var traceChain = [];\n while (err) {\n traceChain.push(new Stack(err, skip));\n err = err.nested || err.cause;\n\n skip = 0; // Only apply skip value to primary error\n }\n\n // Return primary error with full trace chain attached.\n traceChain[0].traceChain = traceChain;\n return traceChain[0];\n } else {\n return new Stack(err, skip);\n }\n}\n\nfunction guessErrorClass(errMsg) {\n if (!errMsg || !errMsg.match) {\n return ['Unknown error. There was no error message to display.', ''];\n }\n var errClassMatch = errMsg.match(ERR_CLASS_REGEXP);\n var errClass = '(unknown)';\n\n if (errClassMatch) {\n errClass = errClassMatch[errClassMatch.length - 1];\n errMsg = errMsg.replace(\n (errClassMatch[errClassMatch.length - 2] || '') + errClass + ':',\n '',\n );\n errMsg = errMsg.replace(/(^[\\s]+|[\\s]+$)/g, '');\n }\n return [errClass, errMsg];\n}\n\n// * Prefers any value over an empty string\n// * Prefers any value over 'Error' where possible\n// * Prefers name over constructor.name when both are more specific than 'Error'\nfunction _mostSpecificErrorName(error) {\n var name = error.name && error.name.length && error.name;\n var constructorName =\n error.constructor.name &&\n error.constructor.name.length &&\n error.constructor.name;\n\n if (!name || !constructorName) {\n return name || constructorName;\n }\n\n if (name === 'Error') {\n return constructorName;\n }\n return name;\n}\n\nexport default {\n guessFunctionName,\n guessErrorClass,\n gatherContext,\n parse,\n Stack,\n Frame,\n};\n","import * as _ from './utility.js';\n\nfunction checkLevel(item, settings) {\n var level = item.level;\n var levelVal = _.LEVELS[level] || 0;\n var reportLevel = settings.reportLevel;\n var reportLevelVal = _.LEVELS[reportLevel] || 0;\n\n if (levelVal < reportLevelVal) {\n return false;\n }\n return true;\n}\n\nfunction userCheckIgnore(logger) {\n return function (item, settings) {\n var isUncaught = Boolean(item._isUncaught);\n delete item._isUncaught;\n var args = item._originalArgs;\n delete item._originalArgs;\n try {\n if (_.isFunction(settings.onSendCallback)) {\n settings.onSendCallback(isUncaught, args, item);\n }\n } catch (e) {\n settings.onSendCallback = null;\n logger.error('Error while calling onSendCallback, removing', e);\n }\n try {\n if (\n _.isFunction(settings.checkIgnore) &&\n settings.checkIgnore(isUncaught, args, item)\n ) {\n return false;\n }\n } catch (e) {\n settings.checkIgnore = null;\n logger.error('Error while calling custom checkIgnore(), removing', e);\n }\n return true;\n };\n}\n\nfunction urlIsNotBlockListed(logger) {\n return function (item, settings) {\n return !urlIsOnAList(item, settings, 'blocklist', logger);\n };\n}\n\nfunction urlIsSafeListed(logger) {\n return function (item, settings) {\n return urlIsOnAList(item, settings, 'safelist', logger);\n };\n}\n\nfunction matchFrames(trace, list, block) {\n if (!trace) {\n return !block;\n }\n\n var frames = trace.frames;\n\n if (!frames || frames.length === 0) {\n return !block;\n }\n\n var frame, filename, url, urlRegex;\n var listLength = list.length;\n var frameLength = frames.length;\n for (var i = 0; i < frameLength; i++) {\n frame = frames[i];\n filename = frame.filename;\n\n if (!_.isType(filename, 'string')) {\n return !block;\n }\n\n for (var j = 0; j < listLength; j++) {\n url = list[j];\n urlRegex = new RegExp(url);\n\n if (urlRegex.test(filename)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction urlIsOnAList(item, settings, safeOrBlock, logger) {\n // safelist is the default\n var block = false;\n if (safeOrBlock === 'blocklist') {\n block = true;\n }\n\n var list, traces;\n try {\n list = block ? settings.hostBlockList : settings.hostSafeList;\n traces = _.get(item, 'body.trace_chain') || [_.get(item, 'body.trace')];\n\n // These two checks are important to come first as they are defaults\n // in case the list is missing or the trace is missing or not well-formed\n if (!list || list.length === 0) {\n return !block;\n }\n if (traces.length === 0 || !traces[0]) {\n return !block;\n }\n\n var tracesLength = traces.length;\n for (var i = 0; i < tracesLength; i++) {\n if (matchFrames(traces[i], list, block)) {\n return true;\n }\n }\n } catch (\n e\n /* istanbul ignore next */\n ) {\n if (block) {\n settings.hostBlockList = null;\n } else {\n settings.hostSafeList = null;\n }\n var listName = block ? 'hostBlockList' : 'hostSafeList';\n logger.error(\n \"Error while reading your configuration's \" +\n listName +\n ' option. Removing custom ' +\n listName +\n '.',\n e,\n );\n return !block;\n }\n return false;\n}\n\nfunction messageIsIgnored(logger) {\n return function (item, settings) {\n var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages;\n\n try {\n messageIsIgnored = false;\n ignoredMessages = settings.ignoredMessages;\n\n if (!ignoredMessages || ignoredMessages.length === 0) {\n return true;\n }\n\n messages = messagesFromItem(item);\n\n if (messages.length === 0) {\n return true;\n }\n\n len = ignoredMessages.length;\n for (i = 0; i < len; i++) {\n rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi');\n\n for (j = 0; j < messages.length; j++) {\n messageIsIgnored = rIgnoredMessage.test(messages[j]);\n\n if (messageIsIgnored) {\n return false;\n }\n }\n }\n } catch (\n _e\n /* istanbul ignore next */\n ) {\n settings.ignoredMessages = null;\n logger.error(\n \"Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages.\",\n );\n }\n\n return true;\n };\n}\n\nfunction messagesFromItem(item) {\n var body = item.body;\n var messages = [];\n\n // The payload schema only allows one of trace_chain, message, or trace.\n // However, existing test cases are based on having both trace and message present.\n // So here we preserve the ability to collect strings from any combination of these keys.\n if (body.trace_chain) {\n var traceChain = body.trace_chain;\n for (const trace of traceChain) {\n messages.push(_.get(trace, 'exception.message'));\n }\n }\n if (body.trace) {\n messages.push(_.get(body, 'trace.exception.message'));\n }\n if (body.message) {\n messages.push(_.get(body, 'message.body'));\n }\n return messages;\n}\n\nexport {\n checkLevel,\n userCheckIgnore,\n urlIsNotBlockListed,\n urlIsSafeListed,\n messageIsIgnored,\n};\n","import { merge, isFunction } from './utility.js';\n\n/*\n * Notifier - delegates between the client exposed API, the chain of transforms\n * necessary to turn an item into something that can be sent to Rollbar, and the\n * queue which handles the communcation with the Rollbar API servers.\n */\nexport default class Notifier {\n /**\n *\n * @param {Object} queue - an object that conforms to the interface:\n * `addItem(item, callback)`\n * @param {Object} options - an object representing the options to be set for\n * this notifier, this should have any defaults already set by the caller\n */\n constructor(queue, options) {\n this.queue = queue;\n this.options = options;\n this.transforms = [];\n this.diagnostic = {};\n }\n\n /**\n * configure - updates the options for this notifier with the passed in object\n *\n * @param {Object} options - an object which gets merged with the current\n * options set on this notifier\n * @returns this\n */\n configure(options) {\n this.queue?.configure(options);\n const oldOptions = this.options;\n this.options = merge(oldOptions, options);\n return this;\n }\n\n /**\n * Adds a transform onto the end of the queue of transforms for this notifier\n *\n * @param {Function} transform - a function which takes three arguments:\n * - item: An Object representing the data to eventually be sent to Rollbar\n * - options: The current value of the options for this notifier\n * - callback: `function(err: (Null|Error), item: (Null|Object))` the\n * transform must call this callback with a null value for error if it\n * wants the processing chain to continue, otherwise with an error to\n * terminate the processing. The item should be the updated item after\n * this transform is finished modifying it.\n */\n addTransform(transform) {\n if (isFunction(transform)) {\n this.transforms.push(transform);\n }\n return this;\n }\n\n /**\n * The internal log function which applies the configured transforms and then\n * pushes onto the queue to be sent to the backend.\n *\n * @param {Object} item - An object with the following structure:\n * - message [String] - An optional string to be sent to rollbar\n * - error [Error] - An optional error\n * @param {Function} callback - A function of type `function(err, resp)` which\n * will be called with exactly one null argument and one non-null argument.\n * The callback will be called once, either during the transform stage if\n * an error occurs inside a transform, or in response to the communication\n * with the backend. The second argument will be the response from the\n * backend in case of success.\n */\n log(item, callback) {\n callback = isFunction(callback) ? callback : () => {};\n\n if (!this.options.enabled) {\n return callback(new Error('Rollbar is not enabled'), null);\n }\n\n this.queue.addPendingItem(item);\n const originalError = item.err;\n this._applyTransforms(item, (err, i) => {\n if (err) {\n this.queue.removePendingItem(item);\n return callback(err, null);\n }\n this.queue.addItem(i, callback, originalError, item);\n });\n }\n\n /* Internal */\n\n /**\n * Applies the transforms that have been added to this notifier sequentially.\n * See `addTransform` for more information.\n *\n * @param {Object} item - An item to be transformed\n * @param {Function} callback - A function of type `function(err, item)` which\n * will be called with a non-null error and a null item in the case of a\n * transform failure, or a null error and non-null item after all\n * transforms have been applied.\n */\n _applyTransforms(item, callback) {\n let transformIndex = -1;\n const transformsLength = this.transforms.length;\n const transforms = this.transforms;\n const options = this.options;\n\n const next = (err, i) => {\n if (err) {\n callback(err, null);\n return;\n }\n\n transformIndex++;\n\n if (transformIndex === transformsLength) {\n callback(null, i);\n return;\n }\n\n transforms[transformIndex](i, options, next);\n };\n\n next(null, item);\n }\n}\n","import * as _ from './utility.js';\n\n/**\n * Queue - an object which handles which handles a queue of items to be sent to Rollbar.\n * This object handles rate limiting via a passed in rate limiter, retries based on connection\n * errors, and filtering of items based on a set of configurable predicates. The communication to\n * the backend is performed via a given API object.\n */\nclass Queue {\n /**\n * @param rateLimiter - An object which conforms to the interface\n * `rateLimiter.shouldSend(item) -> bool`\n * @param api - An object which conforms to the interface\n * `api.postItem(payload, function(err, response))`\n * @param logger - An object used to log verbose messages if desired\n * @param options - see `Queue.prototype.configure`\n * @param replay - Optional `Replay` for coordinating session replay with error occurrences\n */\n constructor(rateLimiter, api, logger, options, replay) {\n this.rateLimiter = rateLimiter;\n this.api = api;\n this.logger = logger;\n this.options = options;\n this.replay = replay;\n this.predicates = [];\n this.pendingItems = [];\n this.pendingRequests = [];\n this.retryQueue = [];\n this.retryHandle = null;\n this.waitCallback = null;\n this.waitIntervalID = null;\n }\n\n /**\n * configure - updates the options this queue uses\n *\n * @param options\n */\n configure(options) {\n this.api?.configure(options);\n const oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n return this;\n }\n\n /**\n * addPredicate - adds a predicate to the end of the list of predicates for this queue\n *\n * @param predicate - function(item, options) -> (bool|{err: Error})\n * Returning true means that this predicate passes and the item is okay to go on the queue\n * Returning false means do not add the item to the queue, but it is not an error\n * Returning {err: Error} means do not add the item to the queue, and the given error explains why\n * Returning {err: undefined} is equivalent to returning true but don't do that\n */\n addPredicate(predicate) {\n if (_.isFunction(predicate)) {\n this.predicates.push(predicate);\n }\n return this;\n }\n\n addPendingItem(item) {\n this.pendingItems.push(item);\n }\n\n removePendingItem(item) {\n const idx = this.pendingItems.indexOf(item);\n if (idx !== -1) {\n this.pendingItems.splice(idx, 1);\n }\n }\n\n /**\n * addItem - Send an item to the Rollbar API if all of the predicates are satisfied\n *\n * @param item - Item instance with the payload to send to the backend\n * @param callback - function(error, repsonse) which will be called with the response from the API\n * in the case of a success, otherwise response will be null and error will have a value. If both\n * error and response are null then the item was stopped by a predicate which did not consider this\n * to be an error condition, but nonetheless did not send the item to the API.\n * @param originalError - The original error before any transformations that is to be logged if any\n * @param originalItem - The original item before transforms, used in pendingItems queue\n */\n addItem(item, callback, originalError, originalItem) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {\n return;\n };\n }\n const data = item.data;\n const predicateResult = this._applyPredicates(data);\n if (predicateResult.stop) {\n this.removePendingItem(originalItem);\n callback(predicateResult.err);\n return;\n }\n this._maybeLog(data, originalError);\n this.removePendingItem(originalItem);\n if (!this.options.transmit) {\n callback(new Error('Transmit disabled'));\n return;\n }\n\n if (this.replay && data.body) {\n item.replayId = this.replay.capture(null, data.uuid, {\n type: 'occurrence',\n level: item.level,\n });\n\n if (item.replayId) {\n _.addItemAttributes(item.data, [\n { key: 'replay_id', value: item.replayId },\n ]);\n }\n }\n\n this.pendingRequests.push(data);\n try {\n this._makeApiRequest(data, (err, resp, headers) => {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers);\n }\n\n callback(err, resp);\n });\n } catch (err) {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay?.discard(item.replayId);\n }\n\n callback(err);\n }\n }\n\n /**\n * wait - Stop any further errors from being added to the queue, and get called back when all items\n * currently processing have finished sending to the backend.\n *\n * @param callback - function() called when all pending items have been sent\n */\n wait(callback) {\n if (!_.isFunction(callback)) {\n return;\n }\n this.waitCallback = callback;\n if (this._maybeCallWait()) {\n return;\n }\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitIntervalID = setInterval(() => {\n this._maybeCallWait();\n }, 500);\n }\n\n /**\n * Sequentially applies the predicates that have been added to the queue to the\n * given item with the currently configured options.\n *\n * @param item - An item in the queue\n * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue,\n * the error value should be passed up to a callbak if we are stopping.\n */\n _applyPredicates(item) {\n let p = null;\n for (let i = 0, len = this.predicates.length; i < len; i++) {\n p = this.predicates[i](item, this.options);\n if (!p || p.err !== undefined) {\n return { stop: true, err: p.err };\n }\n }\n return { stop: false, err: null };\n }\n\n /**\n * Send an item to Rollbar, callback when done, if there is an error make an\n * effort to retry if we are configured to do so.\n *\n * @param item - an item ready to send to the backend\n * @param callback - function(err, response)\n */\n _makeApiRequest(item, callback) {\n const rateLimitResponse = this.rateLimiter.shouldSend(item);\n if (rateLimitResponse.shouldSend) {\n this.api.postItem(item, (err, resp, headers) => {\n if (err) {\n this._maybeRetry(err, item, callback);\n } else {\n callback(err, resp, headers);\n }\n });\n } else if (rateLimitResponse.error) {\n callback(rateLimitResponse.error);\n } else {\n this.api.postItem(rateLimitResponse.payload, callback);\n }\n }\n\n // These are errors basically mean there is no internet connection\n static RETRIABLE_ERRORS = [\n 'ECONNRESET',\n 'ENOTFOUND',\n 'ESOCKETTIMEDOUT',\n 'ETIMEDOUT',\n 'ECONNREFUSED',\n 'EHOSTUNREACH',\n 'EPIPE',\n 'EAI_AGAIN',\n ];\n\n /**\n * Given the error returned by the API, decide if we should retry or just callback\n * with the error.\n *\n * @param err - an error returned by the API transport\n * @param item - the item that was trying to be sent when this error occured\n * @param callback - function(err, response)\n */\n _maybeRetry(err, item, callback) {\n let shouldRetry = false;\n if (this.options.retryInterval) {\n for (let i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) {\n if (err.code === Queue.RETRIABLE_ERRORS[i]) {\n shouldRetry = true;\n break;\n }\n }\n if (shouldRetry && _.isFiniteNumber(this.options.maxRetries)) {\n item.retries = item.retries ? item.retries + 1 : 1;\n if (item.retries > this.options.maxRetries) {\n shouldRetry = false;\n }\n }\n }\n if (shouldRetry) {\n this._retryApiRequest(item, callback);\n } else {\n callback(err);\n }\n }\n\n /**\n * Add an item and a callback to a queue and possibly start a timer to process\n * that queue based on the retryInterval in the options for this queue.\n *\n * @param item - an item that failed to send due to an error we deem retriable\n * @param callback - function(err, response)\n */\n _retryApiRequest(item, callback) {\n this.retryQueue.push({ item, callback });\n\n if (!this.retryHandle) {\n this.retryHandle = setInterval(() => {\n while (this.retryQueue.length) {\n const retryObject = this.retryQueue.shift();\n this._makeApiRequest(retryObject.item, retryObject.callback);\n }\n }, this.options.retryInterval);\n }\n }\n\n /**\n * Removes the item from the pending request queue, this queue is used to\n * enable to functionality of providing a callback that clients can pass to `wait` to be notified\n * when the pending request queue has been emptied. This must be called when the API finishes\n * processing this item. If a `wait` callback is configured, it is called by this function.\n *\n * @param item - the item previously added to the pending request queue\n */\n _dequeuePendingRequest(item) {\n const idx = this.pendingRequests.indexOf(item);\n if (idx !== -1) {\n this.pendingRequests.splice(idx, 1);\n this._maybeCallWait();\n }\n }\n\n _maybeLog(data, originalError) {\n if (this.logger && this.options.verbose) {\n let message =\n originalError ||\n _.get(data, 'body.trace.exception.message') ||\n _.get(data, 'body.trace_chain.0.exception.message');\n if (message) {\n this.logger.error(message);\n return;\n }\n message = _.get(data, 'body.message.body');\n if (message) {\n this.logger.log(message);\n }\n }\n }\n\n _maybeCallWait() {\n if (\n _.isFunction(this.waitCallback) &&\n this.pendingItems.length === 0 &&\n this.pendingRequests.length === 0\n ) {\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitCallback();\n return true;\n }\n return false;\n }\n}\n\nexport default Queue;\n","/*\n * RateLimiter - encapsulates the logic for counting items sent to Rollbar.\n *\n * @param options - the same options that are accepted by configureGlobal offered as a convenience\n */\nclass RateLimiter {\n static globalSettings = {\n startTime: Date.now(),\n maxItems: undefined,\n itemsPerMinute: undefined,\n };\n\n constructor(options = {}) {\n this.startTime = Date.now();\n this.counter = 0;\n this.perMinCounter = 0;\n this.platform = null;\n this.platformOptions = {};\n this.configureGlobal(options);\n }\n\n /*\n * configureGlobal - set the global rate limiter options\n *\n * @param options - Only the following values are recognized:\n * startTime: a timestamp of the form returned by (new Date()).getTime()\n * maxItems: the maximum items\n * itemsPerMinute: the max number of items to send in a given minute\n */\n configureGlobal(options = {}) {\n const { startTime, maxItems, itemsPerMinute } = options;\n\n if (startTime !== undefined) {\n RateLimiter.globalSettings.startTime = startTime;\n }\n if (maxItems !== undefined) {\n RateLimiter.globalSettings.maxItems = maxItems;\n }\n if (itemsPerMinute !== undefined) {\n RateLimiter.globalSettings.itemsPerMinute = itemsPerMinute;\n }\n }\n\n /*\n * shouldSend - determine if we should send a given item based on rate limit settings\n *\n * @param item - the item we are about to send\n * @returns An object with the following structure:\n * error: (Error|null)\n * shouldSend: bool\n * payload: (Object|null)\n * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and\n * exactly one of error or payload will be non-null. If error is non-null, the returned Error will\n * describe the situation, but it means that we were already over a rate limit (either globally or\n * per minute) when this item was checked. If error is null, and therefore payload is non-null, it\n * means this item put us over the global rate limit and the payload should be sent to Rollbar in\n * place of the passed in item.\n */\n shouldSend(item, now = Date.now()) {\n const elapsedTime = now - this.startTime;\n if (elapsedTime < 0 || elapsedTime >= 60000) {\n this.startTime = now;\n this.perMinCounter = 0;\n }\n\n const globalRateLimit = RateLimiter.globalSettings.maxItems;\n const globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute;\n\n if (checkRate(item, globalRateLimit, this.counter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n `${globalRateLimit} max items reached`,\n false,\n );\n }\n\n if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n `${globalRateLimitPerMin} items per minute reached`,\n false,\n );\n }\n\n this.counter += 1;\n this.perMinCounter += 1;\n\n const underGlobalLimit = !checkRate(item, globalRateLimit, this.counter);\n const perMinute = underGlobalLimit;\n const shouldSend =\n underGlobalLimit &&\n !checkRate(item, globalRateLimitPerMin, this.perMinCounter);\n\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n null,\n shouldSend,\n globalRateLimit,\n globalRateLimitPerMin,\n perMinute,\n );\n }\n\n setPlatformOptions(platform, options) {\n this.platform = platform;\n this.platformOptions = options;\n }\n}\n\n/* Helpers */\n\nfunction checkRate(item, limit, counter) {\n return !item.ignoreRateLimit && limit >= 1 && counter > limit;\n}\n\nfunction shouldSendValue(\n platform,\n options,\n error,\n shouldSend,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n let payload = null;\n const errorResult = error ? new Error(error) : null;\n\n if (!errorResult && !shouldSend) {\n payload = rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n );\n }\n\n return { error: errorResult, shouldSend, payload };\n}\n\nfunction rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n const environment =\n options.environment || (options.payload && options.payload.environment);\n const msg = perMinute\n ? 'item per minute limit reached, ignoring errors until timeout'\n : 'maxItems has been hit, ignoring errors until reset.';\n const item = {\n body: {\n message: {\n body: msg,\n extra: {\n maxItems: globalRateLimit,\n itemsPerMinute: limitPerMin,\n },\n },\n },\n language: 'javascript',\n environment: environment,\n notifier: {\n version:\n (options.notifier && options.notifier.version) || options.version,\n },\n };\n if (platform === 'browser') {\n item.platform = 'browser';\n item.framework = 'browser-js';\n item.notifier.name = 'rollbar-browser-js';\n } else if (platform === 'server') {\n item.framework = options.framework || 'node-js';\n item.notifier.name = options.notifier.name;\n } else if (platform === 'react-native') {\n item.framework = options.framework || 'react-native';\n item.notifier.name = options.notifier.name;\n }\n return item;\n}\n\nexport default RateLimiter;\n","import Notifier from './notifier.js';\nimport Queue from './queue.js';\nimport RateLimiter from './rateLimiter.js';\nimport * as _ from './utility.js';\n\n/*\n * Rollbar - the interface to Rollbar\n *\n * @param options\n * @param api\n * @param logger\n */\nfunction Rollbar(options, api, logger, telemeter, tracing, replay, platform) {\n this.options = _.merge(options);\n this.logger = logger;\n Rollbar.rateLimiter.configureGlobal(this.options);\n Rollbar.rateLimiter.setPlatformOptions(platform, this.options);\n this.api = api;\n this.queue = new Queue(\n Rollbar.rateLimiter,\n api,\n logger,\n this.options,\n replay,\n );\n\n this.tracing = tracing;\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is created\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier = new Notifier(this.queue, this.options);\n this.telemeter = telemeter;\n setStackTraceLimit(options);\n this.lastError = null;\n this.lastErrorHash = 'none';\n}\n\nvar defaultOptions = {\n maxItems: 0,\n itemsPerMinute: 60,\n};\n\nRollbar.rateLimiter = new RateLimiter(defaultOptions);\n\nRollbar.prototype.global = function (options) {\n Rollbar.rateLimiter.configureGlobal(options);\n return this;\n};\n\nRollbar.prototype.configure = function (options, payloadData) {\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.merge(oldOptions, options, payload);\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is configured\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier && this.notifier.configure(this.options);\n this.telemeter && this.telemeter.configure(this.options);\n setStackTraceLimit(options);\n this.global(this.options);\n\n if (validateTracer(options.tracer)) {\n this.tracer = options.tracer;\n }\n\n return this;\n};\n\nRollbar.prototype.log = function (item) {\n var level = this._defaultLogLevel();\n return this._log(level, item);\n};\n\nRollbar.prototype.debug = function (item) {\n this._log('debug', item);\n};\n\nRollbar.prototype.info = function (item) {\n this._log('info', item);\n};\n\nRollbar.prototype.warn = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.warning = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.error = function (item) {\n this._log('error', item);\n};\n\nRollbar.prototype.critical = function (item) {\n this._log('critical', item);\n};\n\nRollbar.prototype.wait = function (callback) {\n this.queue.wait(callback);\n};\n\nRollbar.prototype.captureEvent = function (type, metadata, level) {\n return this.telemeter && this.telemeter.captureEvent(type, metadata, level);\n};\n\nRollbar.prototype.captureDomContentLoaded = function (ts) {\n return this.telemeter && this.telemeter.captureDomContentLoaded(ts);\n};\n\nRollbar.prototype.captureLoad = function (ts) {\n return this.telemeter && this.telemeter.captureLoad(ts);\n};\n\nRollbar.prototype.buildJsonPayload = function (item) {\n return this.api.buildJsonPayload(item);\n};\n\nRollbar.prototype.sendJsonPayload = function (jsonPayload) {\n this.api.postJsonPayload(jsonPayload);\n};\n\n/* Internal */\n\nRollbar.prototype._log = function (defaultLevel, item) {\n var callback;\n if (item.callback) {\n callback = item.callback;\n delete item.callback;\n }\n if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) {\n if (callback) {\n var error = new Error('ignored identical item');\n error.item = item;\n callback(error);\n }\n return;\n }\n try {\n item.level = item.level || defaultLevel;\n\n this._addItemAttributes(item);\n\n // Legacy OpenTracing support\n this._addTracingInfo(item);\n\n const telemeter = this.telemeter;\n if (telemeter) {\n telemeter._captureRollbarItem(item);\n item.telemetryEvents = telemeter.copyEvents() || [];\n }\n\n this.notifier.log(item, callback);\n } catch (e) {\n if (callback) {\n callback(e);\n }\n this.logger.error(e);\n }\n};\n\nRollbar.prototype._addItemAttributes = function (item) {\n const span = this.tracing?.getSpan();\n\n const attributes = [\n { key: 'session_id', value: this.tracing?.sessionId },\n { key: 'span_id', value: span?.spanId },\n { key: 'trace_id', value: span?.traceId },\n ];\n if (item._isUncaught) {\n attributes.push({ key: 'is_uncaught', value: 'true' });\n }\n _.addItemAttributes(item.data, attributes);\n\n span?.addEvent('rollbar.occurrence', [\n { key: 'rollbar.occurrence.uuid', value: item.uuid },\n ]);\n};\n\nRollbar.prototype._defaultLogLevel = function () {\n return this.options.logLevel || 'debug';\n};\n\nRollbar.prototype._sameAsLastError = function (item) {\n if (!item._isUncaught) {\n return false;\n }\n var itemHash = generateItemHash(item);\n if (this.lastErrorHash === itemHash) {\n return true;\n }\n this.lastError = item.err;\n this.lastErrorHash = itemHash;\n return false;\n};\n\nRollbar.prototype._addTracingInfo = function (item) {\n // Tracer validation occurs in the constructor\n // or in the Rollbar.prototype.configure methods\n if (this.tracer) {\n // add rollbar occurrence uuid to span\n var span = this.tracer.scope().active();\n\n if (validateSpan(span)) {\n span.setTag('rollbar.error_uuid', item.uuid);\n span.setTag('rollbar.has_error', true);\n span.setTag('error', true);\n span.setTag(\n 'rollbar.item_url',\n `https://rollbar.com/item/uuid/?uuid=${item.uuid}`,\n );\n span.setTag(\n 'rollbar.occurrence_url',\n `https://rollbar.com/occurrence/uuid/?uuid=${item.uuid}`,\n );\n\n // add span ID & trace ID to occurrence\n var opentracingSpanId = span.context().toSpanId();\n var opentracingTraceId = span.context().toTraceId();\n\n if (item.custom) {\n item.custom.opentracing_span_id = opentracingSpanId;\n item.custom.opentracing_trace_id = opentracingTraceId;\n } else {\n item.custom = {\n opentracing_span_id: opentracingSpanId,\n opentracing_trace_id: opentracingTraceId,\n };\n }\n }\n }\n};\n\nfunction generateItemHash(item) {\n var message = item.message || '';\n var stack = (item.err || {}).stack || String(item.err);\n return message + '::' + stack;\n}\n\n// Node.js, Chrome, Safari, and some other browsers support this property\n// which globally sets the number of stack frames returned in an Error object.\n// If a browser can't use it, no harm done.\nfunction setStackTraceLimit(options) {\n if (options.stackTraceLimit) {\n Error.stackTraceLimit = options.stackTraceLimit;\n }\n}\n\n/**\n * Validate the Tracer object provided to the Client\n * is valid for our Opentracing use case.\n * @param {opentracer.Tracer} tracer\n */\nfunction validateTracer(tracer) {\n if (!tracer) {\n return false;\n }\n\n if (!tracer.scope || typeof tracer.scope !== 'function') {\n return false;\n }\n\n var scope = tracer.scope();\n\n if (!scope || !scope.active || typeof scope.active !== 'function') {\n return false;\n }\n\n return true;\n}\n\n/**\n * Validate the Span object provided\n * @param {opentracer.Span} span\n */\nfunction validateSpan(span) {\n if (!span || !span.context || typeof span.context !== 'function') {\n return false;\n }\n\n var spanContext = span.context();\n\n if (\n !spanContext ||\n !spanContext.toSpanId ||\n !spanContext.toTraceId ||\n typeof spanContext.toSpanId !== 'function' ||\n typeof spanContext.toTraceId !== 'function'\n ) {\n return false;\n }\n\n return true;\n}\n\nexport default Rollbar;\n","import * as _ from './utility.js';\n\nfunction itemToPayload(item, options, callback) {\n if (item._isUncaught) {\n item.data._isUncaught = true;\n }\n if (item._originalArgs) {\n item.data._originalArgs = item._originalArgs;\n }\n callback(null, item);\n}\n\nfunction addPayloadOptions(item, options, callback) {\n var payloadOptions = options.payload || {};\n if (payloadOptions.body) {\n delete payloadOptions.body;\n }\n\n item.data = _.merge(item.data, payloadOptions);\n callback(null, item);\n}\n\nfunction addTelemetryData(item, options, callback) {\n if (item.telemetryEvents) {\n _.set(item, 'data.body.telemetry', item.telemetryEvents);\n }\n callback(null, item);\n}\n\nfunction addMessageWithError(item, options, callback) {\n if (!item.message) {\n callback(null, item);\n return;\n }\n var tracePath = 'data.body.trace_chain.0';\n var trace = _.get(item, tracePath);\n if (!trace) {\n tracePath = 'data.body.trace';\n trace = _.get(item, tracePath);\n }\n if (trace) {\n if (!(trace.exception && trace.exception.description)) {\n _.set(item, tracePath + '.exception.description', item.message);\n callback(null, item);\n return;\n }\n var extra = _.get(item, tracePath + '.extra') || {};\n var newExtra = _.merge(extra, { message: item.message });\n _.set(item, tracePath + '.extra', newExtra);\n }\n callback(null, item);\n}\n\nfunction userTransform(logger) {\n return function (item, options, callback) {\n var newItem = _.merge(item);\n var response = null;\n try {\n if (_.isFunction(options.transform)) {\n response = options.transform(newItem.data, item);\n }\n } catch (e) {\n options.transform = null;\n logger.error(\n 'Error while calling custom transform() function. Removing custom transform().',\n e,\n );\n callback(null, item);\n return;\n }\n if (_.isPromise(response)) {\n response.then(\n function (promisedItem) {\n if (promisedItem) {\n newItem.data = promisedItem;\n }\n callback(null, newItem);\n },\n function (error) {\n callback(error, item);\n },\n );\n } else {\n callback(null, newItem);\n }\n };\n}\n\nfunction addConfigToPayload(item, options, callback) {\n if (!options.sendConfig) {\n return callback(null, item);\n }\n var configKey = '_rollbarConfig';\n var custom = _.get(item, 'data.custom') || {};\n custom[configKey] = options;\n item.data.custom = custom;\n callback(null, item);\n}\n\nfunction addFunctionOption(options, name) {\n if (_.isFunction(options[name])) {\n options[name] = options[name].toString();\n }\n}\n\nfunction addConfiguredOptions(item, options, callback) {\n var configuredOptions = options._configuredOptions;\n\n // These must be stringified or they'll get dropped during serialization.\n addFunctionOption(configuredOptions, 'transform');\n addFunctionOption(configuredOptions, 'checkIgnore');\n addFunctionOption(configuredOptions, 'onSendCallback');\n\n delete configuredOptions.accessToken;\n item.data.notifier.configured_options = configuredOptions;\n callback(null, item);\n}\n\nfunction addDiagnosticKeys(item, options, callback) {\n var diagnostic = _.merge(\n item.notifier.client.notifier.diagnostic,\n item.diagnostic,\n );\n\n if (_.get(item, 'err._isAnonymous')) {\n diagnostic.is_anonymous = true;\n }\n\n if (item._isUncaught) {\n diagnostic.is_uncaught = item._isUncaught;\n }\n\n if (item.err) {\n try {\n diagnostic.raw_error = {\n message: item.err.message,\n name: item.err.name,\n constructor_name: item.err.constructor && item.err.constructor.name,\n filename: item.err.fileName,\n line: item.err.lineNumber,\n column: item.err.columnNumber,\n stack: item.err.stack,\n };\n } catch (e) {\n diagnostic.raw_error = { failed: String(e) };\n }\n }\n\n item.data.notifier.diagnostic = _.merge(\n item.data.notifier.diagnostic,\n diagnostic,\n );\n callback(null, item);\n}\n\nexport {\n itemToPayload,\n addPayloadOptions,\n addTelemetryData,\n addMessageWithError,\n userTransform,\n addConfigToPayload,\n addConfiguredOptions,\n addDiagnosticKeys,\n};\n","/**\n * Default browser options\n */\nimport { commonScrubFields } from '../defaults.js';\n\nexport const scrubFields = [\n ...commonScrubFields,\n 'cc-number',\n 'card number',\n 'cardnumber',\n 'cardnum',\n 'ccnum',\n 'ccnumber',\n 'cc num',\n 'creditcardnumber',\n 'credit card number',\n 'newcreditcardnumber',\n 'new credit card',\n 'creditcardno',\n 'credit card no',\n 'card#',\n 'card #',\n 'cc-csc',\n 'cvc',\n 'cvc2',\n 'cvv2',\n 'ccv2',\n 'security code',\n 'card verification',\n 'name on credit card',\n 'name on card',\n 'nameoncard',\n 'cardholder',\n 'card holder',\n 'name des karteninhabers',\n 'ccname',\n 'card type',\n 'cardtype',\n 'cc type',\n 'cctype',\n 'payment type',\n 'expiration date',\n 'expirationdate',\n 'expdate',\n 'cc-exp',\n 'ccmonth',\n 'ccyear',\n];\n\n// For compatibility with existing code that expects default export with scrubFields property\nexport default { scrubFields };\n","import * as _ from '../utility.js';\n\nfunction checkIgnore(item, settings) {\n if (_.get(settings, 'plugins.jquery.ignoreAjaxErrors')) {\n return !_.get(item, 'body.message.extra.isAjax');\n }\n return true;\n}\n\nexport { checkIgnore };\n","import errorParser from '../errorParser.js';\nimport logger from '../logger.js';\nimport * as _ from '../utility.js';\n\nfunction handleDomException(item, options, callback) {\n if (item.err && errorParser.Stack(item.err).name === 'DOMException') {\n var originalError = new Error();\n originalError.name = item.err.name;\n originalError.message = item.err.message;\n originalError.stack = item.err.stack;\n originalError.nested = item.err;\n item.err = originalError;\n }\n callback(null, item);\n}\n\nfunction handleItemWithError(item, options, callback) {\n item.data = item.data || {};\n if (item.err) {\n try {\n item.stackInfo =\n item.err._savedStackTrace ||\n errorParser.parse(item.err, item.skipFrames);\n\n if (options.addErrorContext) {\n addErrorContext(item);\n }\n } catch (e) {\n logger.error('Error while parsing the error object.', e);\n try {\n item.message =\n item.err.message ||\n item.err.description ||\n item.message ||\n String(item.err);\n } catch (e2) {\n item.message = String(item.err) || String(e2);\n }\n delete item.err;\n }\n }\n callback(null, item);\n}\n\nfunction addErrorContext(item) {\n var chain = [];\n var err = item.err;\n\n chain.push(err);\n\n while (err.nested || err.cause) {\n err = err.nested || err.cause;\n chain.push(err);\n }\n\n _.addErrorContext(item, chain);\n}\n\nfunction ensureItemHasSomethingToSay(item, options, callback) {\n if (!item.message && !item.stackInfo && !item.custom) {\n callback(new Error('No message, stack info, or custom data'), null);\n }\n callback(null, item);\n}\n\nfunction addBaseInfo(item, options, callback) {\n var environment =\n (options.payload && options.payload.environment) || options.environment;\n item.data = _.merge(item.data, {\n environment: environment,\n level: item.level,\n endpoint: options.endpoint,\n platform: 'browser',\n framework: 'browser-js',\n language: 'javascript',\n server: {},\n uuid: item.uuid,\n notifier: {\n name: 'rollbar-browser-js',\n version: options.version,\n },\n custom: item.custom,\n });\n callback(null, item);\n}\n\nfunction addRequestInfo(window) {\n return function (item, options, callback) {\n var requestInfo = {};\n\n if (window && window.location) {\n requestInfo.url = window.location.href;\n requestInfo.query_string = window.location.search;\n }\n\n var remoteString = '$remote_ip';\n if (!options.captureIp) {\n remoteString = null;\n } else if (options.captureIp !== true) {\n remoteString += '_anonymize';\n }\n if (remoteString) requestInfo.user_ip = remoteString;\n\n if (Object.keys(requestInfo).length > 0) {\n _.set(item, 'data.request', requestInfo);\n }\n\n callback(null, item);\n };\n}\n\nfunction addClientInfo(window) {\n return function (item, options, callback) {\n if (!window) {\n return callback(null, item);\n }\n var nav = window.navigator || {};\n var scr = window.screen || {};\n _.set(item, 'data.client', {\n runtime_ms: item.timestamp - window._rollbarStartTime,\n timestamp: Math.round(item.timestamp / 1000),\n javascript: {\n browser: nav.userAgent,\n language: nav.language,\n cookie_enabled: nav.cookieEnabled,\n screen: {\n width: scr.width,\n height: scr.height,\n },\n },\n });\n callback(null, item);\n };\n}\n\nfunction addPluginInfo(window) {\n return function (item, options, callback) {\n if (!window || !window.navigator) {\n return callback(null, item);\n }\n var plugins = [];\n var navPlugins = window.navigator.plugins || [];\n var cur;\n for (var i = 0, l = navPlugins.length; i < l; ++i) {\n cur = navPlugins[i];\n plugins.push({ name: cur.name, description: cur.description });\n }\n _.set(item, 'data.client.javascript.plugins', plugins);\n callback(null, item);\n };\n}\n\nfunction addBody(item, options, callback) {\n if (item.stackInfo) {\n if (item.stackInfo.traceChain) {\n addBodyTraceChain(item, options, callback);\n } else {\n addBodyTrace(item, options, callback);\n }\n } else {\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction addBodyMessage(item, options, callback) {\n var message = item.message;\n var custom = item.custom;\n\n if (!message) {\n message = 'Item sent with null or missing arguments.';\n }\n var result = {\n body: message,\n };\n\n if (custom) {\n result.extra = _.merge(custom);\n }\n\n _.set(item, 'data.body', { message: result });\n callback(null, item);\n}\n\nfunction stackFromItem(item, stackInfo = null) {\n // Transform a TraceKit stackInfo object into a Rollbar trace\n let stack = (stackInfo || item.stackInfo).stack;\n if (\n stack &&\n stack.length === 0 &&\n item._unhandledStackInfo &&\n item._unhandledStackInfo.stack\n ) {\n stack = item._unhandledStackInfo.stack;\n }\n return stack;\n}\n\nfunction addBodyTraceChain(item, options, callback) {\n var traceChain = item.stackInfo.traceChain;\n var traces = [];\n\n var traceChainLength = traceChain.length;\n for (var i = 0; i < traceChainLength; i++) {\n var trace = buildTrace(item, traceChain[i], options);\n traces.push(trace);\n }\n\n _.set(item, 'data.body', { trace_chain: traces });\n callback(null, item);\n}\n\nfunction addBodyTrace(item, options, callback) {\n var stack = stackFromItem(item);\n\n if (stack) {\n var trace = buildTrace(item, item.stackInfo, options);\n _.set(item, 'data.body', { trace: trace });\n callback(null, item);\n } else {\n var stackInfo = item.stackInfo;\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n\n item.message = className + ': ' + message;\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction buildTrace(item, stackInfo, options) {\n var description = item && item.data.description;\n var custom = item && item.custom;\n var stack = stackFromItem(item, stackInfo);\n\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n var trace = {\n exception: {\n class: className,\n message: message,\n },\n };\n\n if (description) {\n trace.exception.description = description;\n }\n\n if (stack) {\n if (stack.length === 0) {\n trace.exception.stack = stackInfo.rawStack;\n trace.exception.raw = String(stackInfo.rawException);\n }\n var stackFrame;\n var frame;\n var code;\n var pre;\n var post;\n var contextLength;\n var i, mid;\n\n trace.frames = [];\n for (i = 0; i < stack.length; ++i) {\n stackFrame = stack[i];\n frame = {\n filename: stackFrame.url ? _.sanitizeUrl(stackFrame.url) : '(unknown)',\n lineno: stackFrame.line || null,\n method:\n !stackFrame.func || stackFrame.func === '?'\n ? '[anonymous]'\n : stackFrame.func,\n colno: stackFrame.column,\n };\n if (options.sendFrameUrl) {\n frame.url = stackFrame.url;\n }\n if (\n frame.method &&\n frame.method.endsWith &&\n frame.method.endsWith('_rollbar_wrapped')\n ) {\n continue;\n }\n\n code = pre = post = null;\n contextLength = stackFrame.context ? stackFrame.context.length : 0;\n if (contextLength) {\n mid = Math.floor(contextLength / 2);\n pre = stackFrame.context.slice(0, mid);\n code = stackFrame.context[mid];\n post = stackFrame.context.slice(mid);\n }\n\n if (code) {\n frame.code = code;\n }\n\n if (pre || post) {\n frame.context = {};\n if (pre && pre.length) {\n frame.context.pre = pre;\n }\n if (post && post.length) {\n frame.context.post = post;\n }\n }\n\n if (stackFrame.args) {\n frame.args = stackFrame.args;\n }\n\n trace.frames.push(frame);\n }\n\n // NOTE(cory): reverse the frames since rollbar.com expects the most recent call last\n trace.frames.reverse();\n\n if (custom) {\n trace.extra = _.merge(custom);\n }\n }\n\n return trace;\n}\n\nfunction errorClass(stackInfo, guess, options) {\n if (stackInfo.name) {\n return stackInfo.name;\n } else if (options.guessErrorClass) {\n return guess;\n } else {\n return '(unknown)';\n }\n}\n\nfunction addScrubber(scrubFn) {\n return function (item, options, callback) {\n if (scrubFn) {\n var scrubFields = options.scrubFields || [];\n var scrubPaths = options.scrubPaths || [];\n item.data = scrubFn(item.data, scrubFields, scrubPaths);\n }\n callback(null, item);\n };\n}\n\nexport {\n handleDomException,\n handleItemWithError,\n ensureItemHasSomethingToSay,\n addBaseInfo,\n addRequestInfo,\n addClientInfo,\n addPluginInfo,\n addBody,\n addScrubber,\n};\n","import logger from '../../logger.js';\nimport * as _ from '../../utility.js';\n\nfunction makeFetchRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n timeout,\n}) {\n var controller;\n var timeoutId;\n\n if (_.isFiniteNumber(timeout)) {\n controller = new AbortController();\n timeoutId = setTimeout(function () {\n controller.abort();\n }, timeout);\n }\n\n headers = {\n 'Content-Type': 'application/json',\n 'X-Rollbar-Access-Token': accessToken,\n signal: controller && controller.signal,\n ...headers,\n };\n\n fetch(url, {\n method,\n headers,\n body: payload,\n })\n .then(function (response) {\n if (timeoutId) clearTimeout(timeoutId);\n const respHeaders = response.headers;\n\n const isItemRoute = url.endsWith('/api/1/item/');\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': respHeaders.get('Rollbar-Replay-Enabled'),\n 'Rollbar-Replay-RateLimit-Remaining': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n\n const json = response.json();\n callback(null, json, headers);\n })\n .catch(function (error) {\n logger.error(error.message);\n callback(error);\n });\n}\n\nexport default makeFetchRequest;\n","/*global XDomainRequest*/\n\nimport logger from '../../logger.js';\nimport * as _ from '../../utility.js';\n\nfunction makeXhrRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n requestFactory,\n timeout,\n}) {\n var request;\n if (requestFactory) {\n request = requestFactory();\n } else {\n request = _createXMLHTTPObject();\n }\n if (!request) {\n // Give up, no way to send requests\n return callback(new Error('No way to send a request'));\n }\n try {\n try {\n var onreadystatechange = function () {\n try {\n if (onreadystatechange && request.readyState === 4) {\n onreadystatechange = undefined;\n\n var parseResponse = _.jsonParse(request.responseText);\n if (_isSuccess(request)) {\n const isItemRoute = url.endsWith('/api/1/item/');\n\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': request.getResponseHeader(\n 'Rollbar-Replay-Enabled',\n ),\n 'Rollbar-Replay-RateLimit-Remaining':\n request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n callback(parseResponse.error, parseResponse.value, headers);\n return;\n } else if (_isNormalFailure(request)) {\n if (request.status === 403) {\n // likely caused by using a server access token\n var message =\n parseResponse.value && parseResponse.value.message;\n logger.error(message);\n }\n // return valid http status codes\n callback(new Error(String(request.status)));\n } else {\n // IE will return a status 12000+ on some sort of connection failure,\n // so we return a blank error\n // http://msdn.microsoft.com/en-us/library/aa383770%28VS.85%29.aspx\n var msg =\n 'XHR response had no status code (likely connection failure)';\n callback(_newRetriableError(msg));\n }\n }\n } catch (ex) {\n //jquery source mentions firefox may error out while accessing the\n //request members if there is a network error\n //https://github.com/jquery/jquery/blob/a938d7b1282fc0e5c52502c225ae8f0cef219f0a/src/ajax/xhr.js#L111\n var exc;\n if (ex && ex.stack) {\n exc = ex;\n } else {\n exc = new Error(ex);\n }\n callback(exc);\n }\n };\n\n request.open(method, url, true);\n if (request.setRequestHeader) {\n request.setRequestHeader('Content-Type', 'application/json');\n request.setRequestHeader('X-Rollbar-Access-Token', accessToken);\n for (const [h, v] of Object.entries(headers ?? {})) {\n request.setRequestHeader(h, v);\n }\n }\n\n if (_.isFiniteNumber(timeout)) {\n request.timeout = timeout;\n }\n\n request.onreadystatechange = onreadystatechange;\n request.send(payload);\n } catch (_e1) {\n // Sending using the normal xmlhttprequest object didn't work, try XDomainRequest\n if (typeof XDomainRequest !== 'undefined') {\n // Assume we are in a really old browser which has a bunch of limitations:\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n\n // Extreme paranoia: if we have XDomainRequest then we have a window, but just in case\n if (!window || !window.location) {\n return callback(\n new Error(\n 'No window available during request, unknown environment',\n ),\n );\n }\n\n // If the current page is http, try and send over http\n if (\n window.location.href.substring(0, 5) === 'http:' &&\n url.substring(0, 5) === 'https'\n ) {\n url = 'http' + url.substring(5);\n }\n\n var xdomainrequest = new XDomainRequest();\n xdomainrequest.onprogress = () => {};\n xdomainrequest.ontimeout = function () {\n var msg = 'Request timed out';\n var code = 'ETIMEDOUT';\n callback(_newRetriableError(msg, code));\n };\n xdomainrequest.onerror = function () {\n callback(new Error('Error during request'));\n };\n xdomainrequest.onload = function () {\n var parseResponse = _.jsonParse(xdomainrequest.responseText);\n callback(parseResponse.error, parseResponse.value);\n };\n xdomainrequest.open(method, url, true);\n xdomainrequest.send(payload);\n } else {\n callback(new Error('Cannot find a method to transport a request'));\n }\n }\n } catch (e2) {\n callback(e2);\n }\n}\n\nfunction _createXMLHTTPObject() {\n /* global ActiveXObject:false */\n\n var factories = [\n function () {\n return new XMLHttpRequest();\n },\n function () {\n return new ActiveXObject('Msxml2.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Msxml3.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Microsoft.XMLHTTP');\n },\n ];\n var xmlhttp;\n var i;\n var numFactories = factories.length;\n for (i = 0; i < numFactories; i++) {\n try {\n xmlhttp = factories[i]();\n break;\n } catch (_e) {\n // pass\n }\n }\n return xmlhttp;\n}\n\nfunction _isSuccess(r) {\n return r && r.status && r.status === 200;\n}\n\nfunction _isNormalFailure(r) {\n return r && _.isType(r.status, 'number') && r.status >= 400 && r.status < 600;\n}\n\nfunction _newRetriableError(message, code) {\n var err = new Error(message);\n err.code = code || 'ENOTFOUND';\n return err;\n}\n\nexport default makeXhrRequest;\n","import * as _ from '../utility.js';\n\nimport makeFetchRequest from './transport/fetch.js';\nimport makeXhrRequest from './transport/xhr.js';\n\n/*\n * accessToken may be embedded in payload but that should not\n * be assumed\n *\n * options: {\n * hostname\n * protocol\n * path\n * port\n * method\n * transport ('xhr' | 'fetch')\n * }\n *\n * params is an object containing key/value pairs. These\n * will be appended to the path as 'key=value&key=value'\n *\n * payload is an unserialized object\n */\nfunction Transport(truncation) {\n this.truncation = truncation;\n}\n\nTransport.prototype.get = function (\n accessToken,\n options,\n params,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = () => {};\n }\n _.addParamsAndAccessTokenToPath(accessToken, options, params);\n\n var method = 'GET';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.post = function ({\n accessToken,\n options,\n payload,\n headers,\n callback,\n requestFactory,\n}) {\n if (!callback || !_.isFunction(callback)) {\n callback = () => {};\n }\n\n if (!payload) {\n return callback(new Error('Cannot send empty request'));\n }\n\n var stringifyResult;\n // Check payload.body to ensure only items are truncated.\n if (this.truncation && payload.body) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = _.stringify(payload);\n }\n if (stringifyResult.error) {\n return callback(stringifyResult.error);\n }\n\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload: stringifyResult.value,\n headers,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.postJsonPayload = function (\n accessToken,\n options,\n payload,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = () => {};\n }\n\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\n// Wraps `_makeRequest` if zone.js is being used, ensuring that Rollbar\n// API calls are not intercepted by any child forked zones.\n// This is equivalent to `NgZone.runOutsideAngular` in Angular.\nTransport.prototype._makeZoneRequest = function () {\n var gWindow =\n (typeof window !== 'undefined' && window) ||\n (typeof self !== 'undefined' && self);\n // Whenever zone.js is loaded and `Zone` is exposed globally, access\n // the root zone to ensure that requests are always made within it.\n // This approach is framework-agnostic, regardless of which\n // framework zone.js is used with.\n var rootZone = gWindow && gWindow.Zone && gWindow.Zone.root;\n var args = Array.prototype.slice.call(arguments);\n\n if (rootZone) {\n rootZone.run(() => {\n this._makeRequest.apply(undefined, args);\n });\n } else {\n this._makeRequest.apply(undefined, args);\n }\n};\n\nTransport.prototype._makeRequest = function (params) {\n const { payload, callback, transport } = params;\n if (typeof RollbarProxy !== 'undefined') {\n return _proxyRequest(payload, callback);\n }\n\n if (transport === 'fetch') {\n makeFetchRequest(params);\n } else {\n makeXhrRequest(params);\n }\n};\n\n/* global RollbarProxy */\nfunction _proxyRequest(json, callback) {\n var rollbarProxy = new RollbarProxy();\n rollbarProxy.sendJsonPayload(\n json,\n function (_msg) {\n /* do nothing */\n },\n function (err) {\n callback(new Error(err));\n },\n );\n}\n\nexport default Transport;\n","// See https://nodejs.org/docs/latest/api/url.html\nfunction parse(url) {\n var result = {\n protocol: null,\n auth: null,\n host: null,\n path: null,\n hash: null,\n href: url,\n hostname: null,\n port: null,\n pathname: null,\n search: null,\n query: null,\n };\n\n var i, last;\n i = url.indexOf('//');\n if (i !== -1) {\n result.protocol = url.substring(0, i);\n last = i + 2;\n } else {\n last = 0;\n }\n\n i = url.indexOf('@', last);\n if (i !== -1) {\n result.auth = url.substring(last, i);\n last = i + 1;\n }\n\n i = url.indexOf('/', last);\n if (i === -1) {\n i = url.indexOf('?', last);\n if (i === -1) {\n i = url.indexOf('#', last);\n if (i === -1) {\n result.host = url.substring(last);\n } else {\n result.host = url.substring(last, i);\n result.hash = url.substring(i);\n }\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n return result;\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n\n i = url.indexOf('#', last);\n if (i === -1) {\n result.path = url.substring(last);\n } else {\n result.path = url.substring(last, i);\n result.hash = url.substring(i);\n }\n\n if (result.path) {\n var pathParts = result.path.split('?');\n result.pathname = pathParts[0];\n result.query = pathParts[1];\n result.search = result.query ? '?' + result.query : null;\n }\n return result;\n}\n\nexport { parse };\n","import API from '../api.js';\nimport defaults from '../defaults.js';\nimport errorParser from '../errorParser.js';\nimport logger from '../logger.js';\nimport * as sharedPredicates from '../predicates.js';\nimport Client from '../rollbar.js';\nimport tracingDefaults from '../tracing/defaults.js';\nimport * as sharedTransforms from '../transforms.js';\nimport * as _ from '../utility.js';\n\nimport browserDefaults from './defaults.js';\nimport * as globals from './globalSetup.js';\nimport * as predicates from './predicates.js';\nimport replayDefaults from './replay/defaults.js';\nimport * as transforms from './transforms.js';\nimport Transport from './transport.js';\nimport * as urllib from './url.js';\n\n// Used to support global `Rollbar` instance.\nlet _instance = null;\n\nclass Rollbar {\n constructor(options, client) {\n logger.init({ logLevel: options.logLevel || 'error' });\n this.options = _.handleOptions(defaultOptions, options, null, logger);\n this.options._configuredOptions = options;\n this.components = this.components || {};\n const Telemeter = this.components.telemeter;\n const Instrumenter = this.components.instrumenter;\n this.wrapGlobals = this.components.wrapGlobals;\n this.scrub = this.components.scrub;\n const truncation = this.components.truncation;\n const Tracing = this.components.tracing;\n const Replay = this.components.replay;\n\n const transport = new Transport(truncation);\n const api = new API(this.options, transport, urllib, truncation);\n if (Tracing) {\n this.tracing = new Tracing(_gWindow(), api, this.options);\n this.tracing.initSession();\n }\n if (Telemeter) {\n this.telemeter = new Telemeter(this.options, this.tracing);\n }\n\n if (Replay && _.isBrowser()) {\n const replayOptions = this.options.replay;\n this.replay = new Replay({\n tracing: this.tracing,\n telemeter: this.telemeter,\n options: replayOptions,\n });\n\n if (replayOptions.enabled && replayOptions.autoStart) {\n this.replay.recorder.start();\n }\n }\n\n this.client =\n client ||\n new Client(\n this.options,\n api,\n logger,\n this.telemeter,\n this.tracing,\n this.replay,\n 'browser',\n );\n var gWindow = _gWindow();\n var gDocument = typeof document !== 'undefined' && document;\n this.isChrome = gWindow.chrome && gWindow.chrome.runtime; // check .runtime to avoid Edge browsers\n this.anonymousErrorsPending = 0;\n addTransformsToNotifier(this.client.notifier, this, gWindow);\n addPredicatesToQueue(this.client.queue);\n this.setupUnhandledCapture();\n if (Instrumenter) {\n this.instrumenter = new Instrumenter(\n this.options,\n this.client.telemeter,\n this,\n gWindow,\n gDocument,\n );\n this.instrumenter.instrument();\n }\n\n this.setSessionAttributesFromOptions(options);\n\n // Used with rollbar-react for rollbar-react-native compatibility.\n this.rollbar = this;\n }\n\n static init(options, client) {\n if (_instance) {\n return _instance.global(options).configure(options);\n }\n _instance = new Rollbar(options, client);\n return _instance;\n }\n\n static setComponents(components) {\n Rollbar.prototype.components = components;\n }\n\n global(options) {\n this.client.global(options);\n return this;\n }\n\n configure(options, payloadData) {\n if (options.logLevel) {\n logger.init({ logLevel: options.logLevel });\n }\n this.setSessionAttributesFromOptions(options);\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.handleOptions(oldOptions, options, payload, logger);\n this.options._configuredOptions = _.handleOptions(\n oldOptions._configuredOptions,\n options,\n payload,\n );\n\n this.tracing?.configure(this.options);\n this.replay?.configure(this.options.replay);\n this.client.configure(this.options, payloadData);\n this.instrumenter?.configure(this.options);\n this.setupUnhandledCapture();\n return this;\n }\n\n lastError() {\n return this.client.lastError;\n }\n\n log() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.log(item);\n return { uuid: uuid };\n }\n\n debug() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.debug(item);\n return { uuid: uuid };\n }\n\n info() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.info(item);\n return { uuid: uuid };\n }\n\n warn() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warn(item);\n return { uuid: uuid };\n }\n\n warning() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warning(item);\n return { uuid: uuid };\n }\n\n error() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.error(item);\n return { uuid: uuid };\n }\n\n critical() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.critical(item);\n return { uuid: uuid };\n }\n\n buildJsonPayload(item) {\n return this.client.buildJsonPayload(item);\n }\n\n sendJsonPayload(jsonPayload) {\n return this.client.sendJsonPayload(jsonPayload);\n }\n\n triggerDirectReplay(context) {\n return this.triggerReplay({ type: 'direct', ...context });\n }\n\n triggerReplay(context) {\n if (!this.replay) return null;\n\n return this.replay.triggerReplay(context);\n }\n\n setupUnhandledCapture() {\n var gWindow = _gWindow();\n\n if (!this.unhandledExceptionsInitialized) {\n if (\n this.options.captureUncaught ||\n this.options.handleUncaughtExceptions\n ) {\n globals.captureUncaughtExceptions(gWindow, this);\n if (this.wrapGlobals && this.options.wrapGlobalEventHandlers) {\n this.wrapGlobals(gWindow, this);\n }\n this.unhandledExceptionsInitialized = true;\n }\n }\n if (!this.unhandledRejectionsInitialized) {\n if (\n this.options.captureUnhandledRejections ||\n this.options.handleUnhandledRejections\n ) {\n globals.captureUnhandledRejections(gWindow, this);\n this.unhandledRejectionsInitialized = true;\n }\n }\n }\n\n handleUncaughtException(message, url, lineno, colno, error, context) {\n if (\n !this.options.captureUncaught &&\n !this.options.handleUncaughtExceptions\n ) {\n return;\n }\n\n // Chrome will always send 5+ arguments and error will be valid or null, not undefined.\n // If error is undefined, we have a different caller.\n // Chrome also sends errors from web workers with null error, but does not invoke\n // prepareStackTrace() for these. Test for empty url to skip them.\n if (\n this.options.inspectAnonymousErrors &&\n this.isChrome &&\n error === null &&\n url === ''\n ) {\n return 'anonymous';\n }\n\n var item;\n var stackInfo = _.makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n 'onerror',\n 'uncaught exception',\n errorParser,\n );\n if (_.isError(error)) {\n item = this._createItem([message, error, context]);\n item._unhandledStackInfo = stackInfo;\n } else if (_.isError(url)) {\n item = this._createItem([message, url, context]);\n item._unhandledStackInfo = stackInfo;\n } else {\n item = this._createItem([message, context]);\n item.stackInfo = stackInfo;\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n this.client.log(item);\n }\n\n /**\n * Chrome only. Other browsers will ignore.\n *\n * Use Error.prepareStackTrace to extract information about errors that\n * do not have a valid error object in onerror().\n *\n * In tested version of Chrome, onerror is called first but has no way\n * to communicate with prepareStackTrace. Use a counter to let this\n * handler know which errors to send to Rollbar.\n *\n * In config options, set inspectAnonymousErrors to enable.\n */\n handleAnonymousErrors() {\n if (!this.options.inspectAnonymousErrors || !this.isChrome) {\n return;\n }\n\n const prepareStackTrace = (error, _stack) => {\n if (this.options.inspectAnonymousErrors) {\n if (this.anonymousErrorsPending) {\n // This is the only known way to detect that onerror saw an anonymous error.\n // It depends on onerror reliably being called before Error.prepareStackTrace,\n // which so far holds true on tested versions of Chrome. If versions of Chrome\n // are tested that behave differently, this logic will need to be updated\n // accordingly.\n this.anonymousErrorsPending -= 1;\n\n if (!error) {\n // Not likely to get here, but calling handleUncaughtException from here\n // without an error object would throw off the anonymousErrorsPending counter,\n // so return now.\n return;\n }\n\n // Allow this to be tracked later.\n error._isAnonymous = true;\n\n // url, lineno, colno shouldn't be needed for these errors.\n // If that changes, update this accordingly, using the unused\n // _stack param as needed (rather than parse error.toString()).\n this.handleUncaughtException(error.message, null, null, null, error);\n }\n }\n\n // Workaround to ensure stack is preserved for normal errors.\n return error.stack;\n };\n\n // https://v8.dev/docs/stack-trace-api\n try {\n Error.prepareStackTrace = prepareStackTrace;\n } catch (e) {\n this.options.inspectAnonymousErrors = false;\n this.error('anonymous error handler failed', e);\n }\n }\n\n handleUnhandledRejection(reason, promise) {\n if (\n !this.options.captureUnhandledRejections &&\n !this.options.handleUnhandledRejections\n ) {\n return;\n }\n\n var message = 'unhandled rejection was null or undefined!';\n if (reason) {\n if (reason.message) {\n message = reason.message;\n } else {\n var reasonResult = _.stringify(reason);\n if (reasonResult.value) {\n message = reasonResult.value;\n }\n }\n }\n var context =\n (reason && reason._rollbarContext) ||\n (promise && promise._rollbarContext);\n\n var item;\n if (_.isError(reason)) {\n item = this._createItem([message, reason, context]);\n } else {\n item = this._createItem([message, reason, context]);\n item.stackInfo = _.makeUnhandledStackInfo(\n message,\n '',\n 0,\n 0,\n null,\n 'unhandledrejection',\n '',\n errorParser,\n );\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n item._originalArgs = item._originalArgs || [];\n item._originalArgs.push(promise);\n this.client.log(item);\n }\n\n wrap(f, context, _before) {\n try {\n var ctxFn;\n if (_.isFunction(context)) {\n ctxFn = context;\n } else {\n ctxFn = function () {\n return context || {};\n };\n }\n\n if (!_.isFunction(f)) {\n return f;\n }\n\n if (f._isWrap) {\n return f;\n }\n\n if (!f._rollbar_wrapped) {\n f._rollbar_wrapped = function () {\n if (_before && _.isFunction(_before)) {\n _before.apply(this, arguments);\n }\n try {\n return f.apply(this, arguments);\n } catch (exc) {\n var e = exc;\n if (e && window._rollbarWrappedError !== e) {\n if (_.isType(e, 'string')) {\n e = new String(e);\n }\n e._rollbarContext = ctxFn() || {};\n e._rollbarContext._wrappedSource = f.toString();\n\n window._rollbarWrappedError = e;\n }\n throw e;\n }\n };\n\n f._rollbar_wrapped._isWrap = true;\n\n for (var prop in f) {\n if (_.hasOwn(f, prop) && prop !== '_rollbar_wrapped') {\n f._rollbar_wrapped[prop] = f[prop];\n }\n }\n }\n\n return f._rollbar_wrapped;\n } catch (_e) {\n // Return the original function if the wrap fails.\n return f;\n }\n }\n\n captureEvent() {\n var event = _.createTelemetryEvent(arguments);\n return this.client.captureEvent(event.type, event.metadata, event.level);\n }\n\n setSessionUser(user) {\n if (!this.tracing?.session) return;\n\n this.tracing.session.setUser(user);\n }\n\n setSessionAttributes(attrs) {\n if (!this.tracing?.session) return;\n\n attrs = { ...attrs };\n\n this.tracing.session.setAttributes(attrs);\n }\n\n setSessionAttributesFromOptions(options) {\n const person = options.person || options.payload?.person;\n if (person) {\n this.setSessionUser(person);\n }\n const code_version =\n options.client?.javascript?.code_version ||\n options.codeVersion ||\n options.code_version ||\n options.payload?.client?.javascript?.code_version ||\n options.payload?.code_version ||\n options.payload?.codeVersion;\n this.setSessionAttributes({\n 'rollbar.codeVersion': code_version,\n 'rollbar.notifier.name': 'rollbar-browser-js',\n 'rollbar.notifier.version': options.version,\n });\n }\n\n // The following two methods are used internally and are not meant for public use\n captureDomContentLoaded(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureDomContentLoaded(ts);\n }\n\n captureLoad(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureLoad(ts);\n }\n\n loadFull() {\n logger.info(\n 'Unexpected Rollbar.loadFull() called on a Notifier instance. This can happen when Rollbar is loaded multiple times.',\n );\n }\n\n _createItem(args) {\n return _.createItem(args, logger, this);\n }\n\n // Static version of instance methods support the legacy pattern of a\n // global `Rollbar` instance, where after calling `Rollbar.init()`,\n // `Rollbar` can be used as if it were an instance.\n // If support for this pattern is dropped, these static methods can be removed.\n static callInstance(method, args) {\n if (!_instance) {\n const message = 'Rollbar is not initialized';\n logger.error(message);\n const maybeCallback = _getFirstFunction(args);\n if (maybeCallback) {\n maybeCallback(new Error(message));\n }\n return;\n }\n return _instance[method].apply(_instance, args);\n }\n\n static global = (...args) => Rollbar.callInstance('global', args);\n static configure = (...args) => Rollbar.callInstance('configure', args);\n static lastError = (...args) => Rollbar.callInstance('lastError', args);\n static log = (...args) => Rollbar.callInstance('log', args);\n static debug = (...args) => Rollbar.callInstance('debug', args);\n static info = (...args) => Rollbar.callInstance('info', args);\n static warn = (...args) => Rollbar.callInstance('warn', args);\n static warning = (...args) => Rollbar.callInstance('warning', args);\n static error = (...args) => Rollbar.callInstance('error', args);\n static critical = (...args) => Rollbar.callInstance('critical', args);\n static buildJsonPayload = (...args) =>\n Rollbar.callInstance('buildJsonPayload', args);\n static sendJsonPayload = (...args) =>\n Rollbar.callInstance('sendJsonPayload', args);\n static wrap = (...args) => Rollbar.callInstance('wrap', args);\n static captureEvent = (...args) => Rollbar.callInstance('captureEvent', args);\n}\n\n/* Internal */\n\nfunction addTransformsToNotifier(notifier, rollbar, gWindow) {\n notifier\n .addTransform(transforms.handleDomException)\n .addTransform(transforms.handleItemWithError)\n .addTransform(transforms.ensureItemHasSomethingToSay)\n .addTransform(transforms.addBaseInfo)\n .addTransform(transforms.addRequestInfo(gWindow))\n .addTransform(transforms.addClientInfo(gWindow))\n .addTransform(transforms.addPluginInfo(gWindow))\n .addTransform(transforms.addBody)\n .addTransform(sharedTransforms.addMessageWithError)\n .addTransform(sharedTransforms.addTelemetryData)\n .addTransform(sharedTransforms.addConfigToPayload)\n .addTransform(transforms.addScrubber(rollbar.scrub))\n .addTransform(sharedTransforms.addPayloadOptions)\n .addTransform(sharedTransforms.userTransform(logger))\n .addTransform(sharedTransforms.addConfiguredOptions)\n .addTransform(sharedTransforms.addDiagnosticKeys)\n .addTransform(sharedTransforms.itemToPayload);\n}\n\nfunction addPredicatesToQueue(queue) {\n queue\n .addPredicate(sharedPredicates.checkLevel)\n .addPredicate(predicates.checkIgnore)\n .addPredicate(sharedPredicates.userCheckIgnore(logger))\n .addPredicate(sharedPredicates.urlIsNotBlockListed(logger))\n .addPredicate(sharedPredicates.urlIsSafeListed(logger))\n .addPredicate(sharedPredicates.messageIsIgnored(logger));\n}\n\nfunction _getFirstFunction(args) {\n for (var i = 0, len = args.length; i < len; ++i) {\n if (_.isFunction(args[i])) {\n return args[i];\n }\n }\n return undefined;\n}\n\nfunction _gWindow() {\n return (\n (typeof window !== 'undefined' && window) ||\n (typeof self !== 'undefined' && self)\n );\n}\n\nconst defaultOptions = {\n environment: 'unknown',\n version: defaults.version,\n scrubFields: browserDefaults.scrubFields,\n logLevel: defaults.logLevel,\n reportLevel: defaults.reportLevel,\n uncaughtErrorLevel: defaults.uncaughtErrorLevel,\n endpoint: defaults.endpoint,\n verbose: false,\n enabled: true,\n transmit: true,\n sendConfig: false,\n includeItemsInTelemetry: true,\n captureIp: true,\n inspectAnonymousErrors: true,\n ignoreDuplicateErrors: true,\n wrapGlobalEventHandlers: false,\n replay: replayDefaults,\n tracing: tracingDefaults,\n};\n\nexport default Rollbar;\n","function captureUncaughtExceptions(window, handler, shim) {\n if (!window) {\n return;\n }\n var oldOnError;\n\n if (typeof handler._rollbarOldOnError === 'function') {\n oldOnError = handler._rollbarOldOnError;\n } else if (window.onerror) {\n oldOnError = window.onerror;\n while (oldOnError._rollbarOldOnError) {\n oldOnError = oldOnError._rollbarOldOnError;\n }\n handler._rollbarOldOnError = oldOnError;\n }\n\n handler.handleAnonymousErrors();\n\n var fn = function () {\n var args = Array.prototype.slice.call(arguments, 0);\n _rollbarWindowOnError(window, handler, oldOnError, args);\n };\n if (shim) {\n fn._rollbarOldOnError = oldOnError;\n }\n window.onerror = fn;\n}\n\nfunction _rollbarWindowOnError(window, r, old, args) {\n if (window._rollbarWrappedError) {\n if (!args[4]) {\n args[4] = window._rollbarWrappedError;\n }\n if (!args[5]) {\n args[5] = window._rollbarWrappedError._rollbarContext;\n }\n window._rollbarWrappedError = null;\n }\n\n var ret = r.handleUncaughtException.apply(r, args);\n\n if (old) {\n old.apply(window, args);\n }\n\n // Let other chained onerror handlers above run before setting this.\n // If an error is thrown and caught within a chained onerror handler,\n // Error.prepareStackTrace() will see that one before the one we want.\n if (ret === 'anonymous') {\n r.anonymousErrorsPending += 1; // See Rollbar.prototype.handleAnonymousErrors()\n }\n}\n\nfunction captureUnhandledRejections(window, handler, shim) {\n if (!window) {\n return;\n }\n\n if (\n typeof window._rollbarURH === 'function' &&\n window._rollbarURH.belongsToShim\n ) {\n window.removeEventListener('unhandledrejection', window._rollbarURH);\n }\n\n var rejectionHandler = function (evt) {\n var reason, promise, detail;\n try {\n reason = evt.reason;\n } catch (_e) {\n reason = undefined;\n }\n try {\n promise = evt.promise;\n } catch (_e) {\n promise = '[unhandledrejection] error getting `promise` from event';\n }\n try {\n detail = evt.detail;\n if (!reason && detail) {\n reason = detail.reason;\n promise = detail.promise;\n }\n } catch (_e) {\n // Ignore\n }\n if (!reason) {\n reason = '[unhandledrejection] error getting `reason` from event';\n }\n\n if (handler && handler.handleUnhandledRejection) {\n handler.handleUnhandledRejection(reason, promise);\n }\n };\n rejectionHandler.belongsToShim = shim;\n window._rollbarURH = rejectionHandler;\n window.addEventListener('unhandledrejection', rejectionHandler);\n}\n\nexport { captureUncaughtExceptions, captureUnhandledRejections };\n","/**\n * Default session replay recording options\n * See https://github.com/rrweb-io/rrweb/blob/master/guide.md#options for details\n */\nexport default {\n enabled: false, // Whether recording is enabled\n autoStart: true, // Start recording automatically when Rollbar initializes\n\n // defaults used by triggers that don't specify them\n triggerDefaults: {\n samplingRatio: 1.0,\n preDuration: 300,\n postDuration: 5,\n },\n triggers: [\n {\n type: 'occurrence',\n level: ['error', 'critical'],\n },\n ],\n\n debug: {\n logErrors: true, // Whether to log errors emitted by rrweb.\n logEmits: false, // Whether to log emitted events\n },\n\n // Recording options\n inlineStylesheet: true, // Whether to inline stylesheets to improve replay accuracy\n inlineImages: false, // Whether to record the image content\n collectFonts: true, // Whether to collect fonts in the website\n\n // Privacy options\n // Fine-grained control over which input types to mask\n // By default only password inputs are masked if maskInputs is true\n maskInputOptions: {\n password: true,\n email: false,\n tel: false,\n text: false,\n color: false,\n date: false,\n 'datetime-local': false,\n month: false,\n number: false,\n range: false,\n search: false,\n time: false,\n url: false,\n week: false,\n },\n\n // Mask all input values\n maskAllInputs: false,\n\n // Class names to block, mask, or ignore the content of elements.\n blockClass: 'rb-block',\n maskTextClass: 'rb-mask',\n ignoreClass: 'rb-ignore',\n\n // Remove unnecessary parts of the DOM\n // By default all removable elements are removed\n slimDOMOptions: {\n script: true, // Remove script elements\n comment: true, // Remove comments\n headFavicon: true, // Remove favicons in the head\n headWhitespace: true, // Remove whitespace in head\n headMetaDescKeywords: true, // Remove meta description and keywords\n headMetaSocial: true, // Remove social media meta tags\n headMetaRobots: true, // Remove robots meta directives\n headMetaHttpEquiv: true, // Remove http-equiv meta directives\n headMetaAuthorship: true, // Remove authorship meta directives\n headMetaVerification: true, // Remove verification meta directives\n },\n\n // Custom callbacks for advanced use cases\n // These are undefined by default and can be set programmatically\n // maskInputFn: undefined, // Custom function to mask input values\n // maskTextFn: undefined, // Custom function to mask text content\n // errorHandler: undefined, // Custom error handler for recording errors\n\n // Plugin system\n // plugins: [] // List of plugins to use (must be set programmatically)\n};\n","/**\n * Default tracing options\n */\nexport default {\n enabled: false,\n endpoint: 'api.rollbar.com/api/1/session/',\n};\n","import { hasOwn } from '../utility.js';\n\n/*\n * headers - Detect when fetch Headers are undefined and use a partial polyfill.\n *\n * A full polyfill is not used in order to keep package size as small as possible.\n * Since this is only used internally and is not added to the window object,\n * the full interface doesn't need to be supported.\n *\n * This implementation is modified from whatwg-fetch:\n * https://github.com/github/fetch\n */\nfunction headers(headers) {\n if (typeof Headers === 'undefined') {\n return new FetchHeaders(headers);\n }\n\n return new Headers(headers);\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n return name.toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value;\n}\n\nfunction iteratorFor(items) {\n var iterator = {\n next: function () {\n var value = items.shift();\n return { done: value === undefined, value: value };\n },\n };\n\n return iterator;\n}\n\nfunction FetchHeaders(headers) {\n this.map = {};\n\n if (headers instanceof FetchHeaders) {\n headers.forEach(function (value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function (header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function (name) {\n this.append(name, headers[name]);\n }, this);\n }\n}\n\nFetchHeaders.prototype.append = function (name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n};\n\nFetchHeaders.prototype.get = function (name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null;\n};\n\nFetchHeaders.prototype.has = function (name) {\n return hasOwn(this.map, normalizeName(name));\n};\n\nFetchHeaders.prototype.forEach = function (callback, thisArg) {\n for (var name in this.map) {\n if (hasOwn(this.map, name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n};\n\nFetchHeaders.prototype.entries = function () {\n var items = [];\n this.forEach(function (value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items);\n};\n\nexport default headers;\n","function replace(obj, name, replacement, replacements, type) {\n var orig = obj[name];\n obj[name] = replacement(orig);\n if (replacements) {\n replacements[type].push([obj, name, orig]);\n }\n}\n\nexport default replace;\n","function getElementType(e) {\n return (e.getAttribute('type') || '').toLowerCase();\n}\n\nfunction isDescribedElement(element, type, subtypes) {\n if (element.tagName.toLowerCase() !== type.toLowerCase()) {\n return false;\n }\n if (!subtypes) {\n return true;\n }\n const elementType = getElementType(element);\n for (const subtype of subtypes) {\n if (subtype === elementType) {\n return true;\n }\n }\n return false;\n}\n\nfunction getElementFromEvent(evt, doc) {\n if (evt.target) {\n return evt.target;\n }\n if (doc && doc.elementFromPoint) {\n return doc.elementFromPoint(evt.clientX, evt.clientY);\n }\n return undefined;\n}\n\nfunction treeToArray(elem) {\n var MAX_HEIGHT = 5;\n var out = [];\n var nextDescription;\n for (var height = 0; elem && height < MAX_HEIGHT; height++) {\n nextDescription = describeElement(elem);\n if (!nextDescription || nextDescription.tagName === 'html') {\n break;\n }\n out.unshift(nextDescription);\n elem = elem.parentNode;\n }\n return out;\n}\n\nfunction elementArrayToString(a) {\n var MAX_LENGTH = 80;\n var separator = ' > ',\n separatorLength = separator.length;\n var out = [],\n len = 0,\n nextStr,\n totalLength;\n\n for (var i = a.length - 1; i >= 0; i--) {\n nextStr = descriptionToString(a[i]);\n totalLength = len + out.length * separatorLength + nextStr.length;\n if (i < a.length - 1 && totalLength >= MAX_LENGTH + 3) {\n out.unshift('...');\n break;\n }\n out.unshift(nextStr);\n len += nextStr.length;\n }\n return out.join(separator);\n}\n\nfunction elementString(elem) {\n return elementArrayToString(treeToArray(elem));\n}\n\nfunction descriptionToString(desc) {\n if (!desc || !desc.tagName) {\n return '';\n }\n var out = [desc.tagName];\n if (desc.id) {\n out.push('#' + desc.id);\n }\n if (desc.classes) {\n out.push('.' + desc.classes.join('.'));\n }\n for (const attribute of desc.attributes) {\n out.push('[' + attribute.key + '=\"' + attribute.value + '\"]');\n }\n\n return out.join('');\n}\n\n/**\n * Input: a dom element\n * Output: null if tagName is falsey or input is falsey, else\n * {\n * tagName: String,\n * id: String | undefined,\n * classes: [String] | undefined,\n * attributes: [\n * {\n * key: OneOf(type, name, title, alt),\n * value: String\n * }\n * ]\n * }\n */\nfunction describeElement(elem) {\n if (!elem || !elem.tagName) {\n return null;\n }\n var out = {},\n className;\n out.tagName = elem.tagName.toLowerCase();\n if (elem.id) {\n out.id = elem.id;\n }\n className = elem.className;\n if (className && typeof className === 'string') {\n out.classes = className.split(/\\s+/);\n }\n var attributes = ['type', 'name', 'title', 'alt'];\n out.attributes = [];\n for (const attribute of attributes) {\n const attr = elem.getAttribute(attribute);\n if (attr) {\n out.attributes.push({ key: attribute, value: attr });\n }\n }\n return out;\n}\n\n/*\n * Detects if the given element matches any of the given class names (string or regex),\n * or CSS selectors.\n * @param {HTMLElement} element - The DOM element to check.\n * @param {Array} classes - An array of class names (string or regex) to match against.\n * @param {Array} selectors - An array of CSS selectors to match against.\n * @return {boolean} - True if the element matches any of the classes or selectors, false otherwise.\n */\nfunction isMatchingElement(element, classes, selectors) {\n try {\n for (const cls of classes) {\n if (typeof cls === 'string') {\n if (element.classList.contains(cls)) {\n return true;\n }\n } else {\n for (const c of element.classList) {\n if (cls.test(c)) {\n return true;\n }\n }\n }\n }\n for (const sel of selectors) {\n if (element.matches(sel)) {\n return true;\n }\n }\n } catch (_e) {\n // ignore errors from invalid arguments\n }\n return false;\n}\n\nexport {\n describeElement,\n descriptionToString,\n elementArrayToString,\n elementString,\n treeToArray,\n getElementFromEvent,\n isDescribedElement,\n getElementType,\n isMatchingElement,\n};\n","/* eslint-disable @typescript-eslint/no-this-alias */\n// TODO(matux): refactor to remove no-this-alias disable\n\nimport logger from '../logger.js';\nimport scrub from '../scrub.js';\nimport headers from '../utility/headers.js';\nimport replace from '../utility/replace.js';\nimport * as _ from '../utility.js';\n\nimport * as domUtil from './domUtility.js';\nimport * as urlparser from './url.js';\n\nconst defaults = {\n network: true,\n networkResponseHeaders: false,\n networkResponseBody: false,\n networkRequestHeaders: false,\n networkRequestBody: false,\n networkErrorOnHttp5xx: false,\n networkErrorOnHttp4xx: false,\n networkErrorOnHttp0: false,\n log: true,\n dom: true,\n navigation: true,\n connectivity: true,\n contentSecurityPolicy: true,\n errorOnContentSecurityPolicy: false,\n};\n\nfunction restore(replacements, type) {\n let b;\n while (replacements[type].length) {\n b = replacements[type].shift();\n b[0][b[1]] = b[2];\n }\n}\n\nfunction nameFromDescription(description) {\n if (!description || !description.attributes) {\n return null;\n }\n const attrs = description.attributes;\n for (const a of attrs) {\n if (a.key === 'name') {\n return a.value;\n }\n }\n return null;\n}\n\nfunction defaultValueScrubber(scrubFields) {\n const patterns = [];\n for (const field of scrubFields) {\n patterns.push(new RegExp(field, 'i'));\n }\n return function (description) {\n const name = nameFromDescription(description);\n if (!name) {\n return false;\n }\n for (const p of patterns) {\n if (p.test(name)) {\n return true;\n }\n }\n return false;\n };\n}\n\nclass Instrumenter {\n constructor(options, telemeter, rollbar, _window, _document) {\n this.options = options;\n let autoInstrument = options.autoInstrument;\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.telemeter = telemeter;\n this.rollbar = rollbar;\n this.diagnostic = rollbar.client.notifier.diagnostic;\n this._window = _window || {};\n this._document = _document || {};\n this.replacements = {\n network: [],\n log: [],\n navigation: [],\n connectivity: [],\n };\n this.eventRemovers = {\n dom: [],\n connectivity: [],\n contentsecuritypolicy: [],\n };\n\n this._location = this._window.location;\n this._lastHref = this._location && this._location.href;\n }\n\n configureScrubbing() {\n const options = this.options;\n this.scrubTelemetryInputs = Boolean(\n options.scrubTelemetryInputs ?? options.replay?.maskAllInputs,\n );\n this.telemetryScrubber = options.telemetryScrubber;\n this.defaultValueScrubber = defaultValueScrubber(options.scrubFields);\n this.maskInputFn = options.replay?.maskInputFn;\n this.maskInputOptions = options.replay?.maskInputOptions || {};\n this.scrubClasses = [\n options.replay?.blockClass,\n options.replay?.ignoreClass,\n options.replay?.maskTextClass,\n ].filter(Boolean);\n this.scrubSelectors = [\n options.replay?.blockSelector,\n options.replay?.ignoreSelector,\n options.replay?.maskTextSelector,\n ].filter(Boolean);\n }\n\n configure(options) {\n this.options = _.merge(this.options, options);\n let autoInstrument = options.autoInstrument;\n const oldSettings = _.merge(this.autoInstrument);\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.instrument(oldSettings);\n }\n\n // eslint-disable-next-line complexity\n instrument(oldSettings) {\n if (this.autoInstrument.network && !(oldSettings && oldSettings.network)) {\n this.instrumentNetwork();\n } else if (\n !this.autoInstrument.network &&\n oldSettings &&\n oldSettings.network\n ) {\n this.deinstrumentNetwork();\n }\n\n if (this.autoInstrument.log && !(oldSettings && oldSettings.log)) {\n this.instrumentConsole();\n } else if (!this.autoInstrument.log && oldSettings && oldSettings.log) {\n this.deinstrumentConsole();\n }\n\n if (this.autoInstrument.dom && !(oldSettings && oldSettings.dom)) {\n this.instrumentDom();\n } else if (!this.autoInstrument.dom && oldSettings && oldSettings.dom) {\n this.deinstrumentDom();\n }\n\n if (\n this.autoInstrument.navigation &&\n !(oldSettings && oldSettings.navigation)\n ) {\n this.instrumentNavigation();\n } else if (\n !this.autoInstrument.navigation &&\n oldSettings &&\n oldSettings.navigation\n ) {\n this.deinstrumentNavigation();\n }\n\n if (\n this.autoInstrument.connectivity &&\n !(oldSettings && oldSettings.connectivity)\n ) {\n this.instrumentConnectivity();\n } else if (\n !this.autoInstrument.connectivity &&\n oldSettings &&\n oldSettings.connectivity\n ) {\n this.deinstrumentConnectivity();\n }\n\n if (\n this.autoInstrument.contentSecurityPolicy &&\n !(oldSettings && oldSettings.contentSecurityPolicy)\n ) {\n this.instrumentContentSecurityPolicy();\n } else if (\n !this.autoInstrument.contentSecurityPolicy &&\n oldSettings &&\n oldSettings.contentSecurityPolicy\n ) {\n this.deinstrumentContentSecurityPolicy();\n }\n }\n\n deinstrumentNetwork() {\n restore(this.replacements, 'network');\n }\n\n instrumentNetwork() {\n const self = this;\n\n function wrapProp(prop, xhr) {\n if (prop in xhr && _.isFunction(xhr[prop])) {\n replace(xhr, prop, function (orig) {\n return self.rollbar.wrap(orig);\n });\n }\n }\n\n if ('XMLHttpRequest' in this._window) {\n const xhrp = this._window.XMLHttpRequest.prototype;\n replace(\n xhrp,\n 'open',\n function (orig) {\n return function (method, url) {\n const isUrlObject = _isUrlObject(url);\n if (_.isType(url, 'string') || isUrlObject) {\n url = isUrlObject ? url.toString() : url;\n if (this.__rollbar_xhr) {\n this.__rollbar_xhr.method = method;\n this.__rollbar_xhr.url = url;\n this.__rollbar_xhr.status_code = null;\n this.__rollbar_xhr.start_time_ms = _.now();\n this.__rollbar_xhr.end_time_ms = null;\n } else {\n this.__rollbar_xhr = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'setRequestHeader',\n function (orig) {\n return function (header, value) {\n // If xhr.open is async, __rollbar_xhr may not be initialized yet.\n if (!this.__rollbar_xhr) {\n this.__rollbar_xhr = {};\n }\n if (_.isType(header, 'string') && _.isType(value, 'string')) {\n if (self.autoInstrument.networkRequestHeaders) {\n if (!this.__rollbar_xhr.request_headers) {\n this.__rollbar_xhr.request_headers = {};\n }\n this.__rollbar_xhr.request_headers[header] = value;\n }\n // We want the content type even if request header telemetry is off.\n if (header.toLowerCase() === 'content-type') {\n this.__rollbar_xhr.request_content_type = value;\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'send',\n function (orig) {\n return function (data) {\n const xhr = this;\n\n function onreadystatechangeHandler() {\n if (xhr.__rollbar_xhr) {\n if (xhr.__rollbar_xhr.status_code === null) {\n xhr.__rollbar_xhr.status_code = 0;\n if (self.autoInstrument.networkRequestBody) {\n xhr.__rollbar_xhr.request = data;\n }\n xhr.__rollbar_event = self.captureNetwork(\n xhr.__rollbar_xhr,\n 'xhr',\n undefined,\n );\n }\n if (xhr.readyState < 2) {\n xhr.__rollbar_xhr.start_time_ms = _.now();\n }\n if (xhr.readyState > 3) {\n const end_time_ms = _.now();\n xhr.__rollbar_xhr.end_time_ms = end_time_ms;\n\n let headers = null;\n xhr.__rollbar_xhr.response_content_type =\n xhr.getResponseHeader('Content-Type');\n if (self.autoInstrument.networkResponseHeaders) {\n const headersConfig =\n self.autoInstrument.networkResponseHeaders;\n headers = {};\n try {\n let header;\n if (headersConfig === true) {\n const allHeaders = xhr.getAllResponseHeaders();\n if (allHeaders) {\n const arr = allHeaders.trim().split(/[\\r\\n]+/);\n let parts, value;\n for (const h of arr) {\n parts = h.split(': ');\n header = parts.shift();\n value = parts.join(': ');\n headers[header] = value;\n }\n }\n } else {\n for (const h of headersConfig) {\n headers[h] = xhr.getResponseHeader(h);\n }\n }\n } catch (_e) {\n /* we ignore the errors here that could come from different\n * browser issues with the xhr methods */\n }\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n try {\n body = xhr.responseText;\n } catch (_e) {\n /* ignore errors from reading responseText */\n }\n }\n let response = null;\n if (body || headers) {\n response = {};\n if (body) {\n if (\n self.isJsonContentType(\n xhr.__rollbar_xhr.response_content_type,\n )\n ) {\n response.body = self.scrubJson(body);\n } else {\n response.body = body;\n }\n }\n if (headers) {\n response.headers = headers;\n }\n }\n if (response) {\n xhr.__rollbar_xhr.response = response;\n }\n try {\n let code = xhr.status;\n code = code === 1223 ? 204 : code;\n xhr.__rollbar_xhr.status_code = code;\n self.addOtelNetworkResponse(\n xhr.__rollbar_event,\n end_time_ms,\n code,\n );\n xhr.__rollbar_event.level =\n self.telemeter.levelFromStatus(code);\n self.errorOnHttpStatus(xhr.__rollbar_xhr);\n } catch (_e) {\n /* ignore possible exception from xhr.status */\n }\n }\n }\n }\n\n wrapProp('onload', xhr);\n wrapProp('onerror', xhr);\n wrapProp('onprogress', xhr);\n\n if (\n 'onreadystatechange' in xhr &&\n _.isFunction(xhr.onreadystatechange)\n ) {\n replace(xhr, 'onreadystatechange', function (orig) {\n return self.rollbar.wrap(\n orig,\n undefined,\n onreadystatechangeHandler,\n );\n });\n } else {\n xhr.onreadystatechange = onreadystatechangeHandler;\n }\n if (xhr.__rollbar_xhr && self.trackHttpErrors()) {\n xhr.__rollbar_xhr.stack = new Error().stack;\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n }\n\n if ('fetch' in this._window) {\n replace(\n this._window,\n 'fetch',\n function (orig) {\n return function (_fn, _t) {\n const args = [...arguments];\n const input = args[0];\n let method = 'GET';\n let url;\n const isUrlObject = _isUrlObject(input);\n if (_.isType(input, 'string') || isUrlObject) {\n url = isUrlObject ? input.toString() : input;\n } else if (input) {\n url = input.url;\n if (input.method) {\n method = input.method;\n }\n }\n if (args[1] && args[1].method) {\n method = args[1].method;\n }\n const metadata = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n if (args[1] && args[1].headers) {\n // Argument may be a Headers object, or plain object. Ensure here that\n // we are working with a Headers object with case-insensitive keys.\n const reqHeaders = headers(args[1].headers);\n\n metadata.request_content_type = reqHeaders.get('Content-Type');\n\n if (self.autoInstrument.networkRequestHeaders) {\n metadata.request_headers = self.fetchHeaders(\n reqHeaders,\n self.autoInstrument.networkRequestHeaders,\n );\n }\n }\n\n if (self.autoInstrument.networkRequestBody) {\n if (args[1] && args[1].body) {\n metadata.request = args[1].body;\n } else if (\n args[0] &&\n !_.isType(args[0], 'string') &&\n args[0].body\n ) {\n metadata.request = args[0].body;\n }\n }\n const telemetryEvent = self.captureNetwork(\n metadata,\n 'fetch',\n undefined,\n );\n if (self.trackHttpErrors()) {\n metadata.stack = new Error().stack;\n }\n\n // Start our handler before returning the promise. This allows resp.clone()\n // to execute before other handlers touch the response.\n return orig.apply(this, args).then(function (resp) {\n const end_time_ms = _.now();\n metadata.end_time_ms = end_time_ms;\n metadata.status_code = resp.status;\n self.addOtelNetworkResponse(\n telemetryEvent,\n end_time_ms,\n resp.status,\n );\n\n metadata.response_content_type = resp.headers.get('Content-Type');\n let headers = null;\n if (self.autoInstrument.networkResponseHeaders) {\n headers = self.fetchHeaders(\n resp.headers,\n self.autoInstrument.networkResponseHeaders,\n );\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n if (typeof resp.text === 'function') {\n // Response.text() is not implemented on some platforms\n // The response must be cloned to prevent reading (and locking) the original stream.\n // This must be done before other handlers touch the response.\n body = resp.clone().text(); //returns a Promise\n }\n }\n if (headers || body) {\n metadata.response = {};\n if (body) {\n // Test to ensure body is a Promise, which it should always be.\n if (typeof body.then === 'function') {\n body.then(function (text) {\n if (\n text &&\n self.isJsonContentType(metadata.response_content_type)\n ) {\n metadata.response.body = self.scrubJson(text);\n } else {\n metadata.response.body = text;\n }\n });\n } else {\n metadata.response.body = body;\n }\n }\n if (headers) {\n metadata.response.headers = headers;\n }\n }\n self.errorOnHttpStatus(metadata);\n return resp;\n });\n };\n },\n this.replacements,\n 'network',\n );\n }\n }\n\n captureNetwork(metadata, subtype, rollbarUUID) {\n if (\n metadata.request &&\n this.isJsonContentType(metadata.request_content_type)\n ) {\n metadata.request = this.scrubJson(metadata.request);\n }\n return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID);\n }\n\n isJsonContentType(contentType) {\n return contentType &&\n _.isType(contentType, 'string') &&\n contentType.toLowerCase().includes('json')\n ? true\n : false;\n }\n\n addOtelNetworkResponse(event, endTimeMs, statusCode) {\n if (event.otelAttributes) {\n event.otelAttributes['response.timeUnixNano'] = (\n endTimeMs * 1e6\n ).toString();\n event.otelAttributes.statusCode = statusCode;\n }\n }\n\n scrubJson(json) {\n return JSON.stringify(scrub(JSON.parse(json), this.options.scrubFields));\n }\n\n fetchHeaders(inHeaders, headersConfig) {\n const outHeaders = {};\n try {\n if (headersConfig === true) {\n if (typeof inHeaders.entries === 'function') {\n // Headers.entries() is not implemented in IE\n const allHeaders = inHeaders.entries();\n let currentHeader = allHeaders.next();\n while (!currentHeader.done) {\n outHeaders[currentHeader.value[0]] = currentHeader.value[1];\n currentHeader = allHeaders.next();\n }\n }\n } else {\n for (const h of headersConfig) {\n outHeaders[h] = inHeaders.get(h);\n }\n }\n } catch (_e) {\n /* ignore probable IE errors */\n }\n return outHeaders;\n }\n\n trackHttpErrors() {\n return (\n this.autoInstrument.networkErrorOnHttp5xx ||\n this.autoInstrument.networkErrorOnHttp4xx ||\n this.autoInstrument.networkErrorOnHttp0\n );\n }\n\n errorOnHttpStatus(metadata) {\n const status = metadata.status_code;\n\n if (\n (status >= 500 && this.autoInstrument.networkErrorOnHttp5xx) ||\n (status >= 400 && this.autoInstrument.networkErrorOnHttp4xx) ||\n (status === 0 && this.autoInstrument.networkErrorOnHttp0)\n ) {\n const error = new Error('HTTP request failed with Status ' + status);\n error.stack = metadata.stack;\n this.rollbar.error(error, { skipFrames: 1 });\n }\n }\n\n deinstrumentConsole() {\n let b;\n while (this.replacements['log'].length) {\n b = this.replacements['log'].shift();\n this._window.console[b[0]] = b[1];\n }\n }\n\n instrumentConsole() {\n if (!this._window?.console?.log) {\n return;\n }\n\n const self = this;\n const c = this._window.console;\n\n function wrapConsole(method) {\n // eslint-disable-next-line strict\n 'use strict'; // See https://github.com/rollbar/rollbar.js/pull/778\n\n const orig = c[method];\n const origConsole = c;\n const level = method === 'warn' ? 'warning' : method;\n c[method] = function () {\n const args = Array.prototype.slice.call(arguments);\n const message = _.formatArgsAsString(args);\n self.telemeter.captureLog(message, level, null, _.now());\n if (orig) {\n Function.prototype.apply.call(orig, origConsole, args);\n }\n };\n self.replacements['log'].push([method, orig]);\n }\n const methods = ['debug', 'info', 'warn', 'error', 'log'];\n try {\n for (const m of methods) {\n wrapConsole(m);\n }\n } catch (e) {\n this.diagnostic.instrumentConsole = { error: e.message };\n }\n }\n\n deinstrumentDom() {\n this.removeListeners('dom');\n }\n\n instrumentDom() {\n this.addListener(\n 'dom',\n this._window,\n ['click', 'dblclick', 'contextmenu'],\n (e) => this.handleEvent('click', e),\n );\n this.addListener(\n 'dom',\n this._window,\n ['dragstart', 'dragend', 'dragenter', 'dragleave', 'drop'],\n (e) => this.handleEvent('dragdrop', e),\n );\n this.addListener('dom', this._window, ['blur', 'focus'], (e) =>\n this.handleEvent('focus', e),\n );\n this.addListener('dom', this._window, ['submit', 'invalid'], (e) =>\n this.handleEvent('form', e),\n );\n this.addListener('dom', this._window, ['input', 'change'], (e) =>\n this.handleEvent('input', e),\n );\n this.addListener('dom', this._window, ['resize'], (e) =>\n this.handleEvent('resize', e),\n );\n this.addListener('dom', this._document, ['DOMContentLoaded'], (e) =>\n this.handleEvent('contentLoaded', e),\n );\n }\n\n handleEvent(name, evt) {\n try {\n return {\n click: this.handleClick,\n dragdrop: this.handleDrag,\n focus: this.handleFocus,\n form: this.handleForm,\n input: this.handleInput,\n resize: this.handleResize,\n contentLoaded: this.handleContentLoaded,\n }[name].call(this, evt);\n } catch (exc) {\n logger.log(`${name} handler error`, evt, exc, exc.stack);\n }\n }\n\n handleContentLoaded(_evt) {\n this.rollbar.triggerReplay({\n type: 'navigation',\n path: new URL(this._location.href).pathname,\n });\n }\n\n handleClick(evt) {\n const tagName = evt.target?.tagName.toLowerCase();\n if (['input', 'select', 'textarea'].includes(tagName)) return;\n\n this.telemeter.captureClick({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n timestamp: _.now(),\n });\n }\n\n handleFocus(evt) {\n const type = evt.type;\n const element = evt.target?.window\n ? 'window'\n : domUtil.elementString(evt.target);\n\n this.telemeter.captureFocus({\n type: type,\n isSynthetic: !evt.isTrusted,\n element,\n timestamp: _.now(),\n });\n }\n\n handleForm(_evt) {\n // TODO: implement form event handling\n //const type = evt.type;\n //const elementString = evt.target?.window\n // ? 'window'\n // : domUtil.elementString(evt.target);\n }\n\n handleResize(evt) {\n const textZoomRatio = window.screen.width / window.innerWidth;\n\n this.telemeter.captureResize({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n width: window.innerWidth,\n height: window.innerHeight,\n textZoomRatio: textZoomRatio,\n timestamp: _.now(),\n });\n }\n\n handleDrag(evt) {\n const type = evt.type;\n let kinds, mediaTypes, dropEffect, effectAllowed;\n\n if (type === 'drop') {\n kinds = [];\n mediaTypes = [];\n const objs = [...evt.dataTransfer.files, ...evt.dataTransfer.items];\n for (const o of objs) {\n if (o.kind && o.type) {\n kinds.push(o.kind);\n mediaTypes.push(o.type);\n }\n }\n }\n if (['drop', 'dragstart'].includes(type)) {\n dropEffect = evt.dataTransfer?.dropEffect;\n effectAllowed = evt.dataTransfer?.effectAllowed;\n }\n\n this.telemeter.captureDragDrop({\n type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n dropEffect: dropEffect,\n effectAllowed: effectAllowed,\n kinds: JSON.stringify(kinds),\n mediaTypes: JSON.stringify(mediaTypes),\n timestamp: _.now(),\n });\n }\n\n /*\n * Applies Rollbar telemetry scrubbing options to the dom input value.\n * When replay options are present, applies those as well.\n */\n scrubInputValue(value, element, tagName, inputType) {\n const mask = '******';\n\n if (inputType === 'password') {\n return mask;\n }\n\n if (this.scrubTelemetryInputs) {\n return mask;\n } else {\n const description = domUtil.describeElement(element);\n if (this.telemetryScrubber) {\n if (this.telemetryScrubber(description)) {\n return mask;\n }\n } else if (this.defaultValueScrubber(description)) {\n return mask;\n }\n }\n\n // Apply replay options regardless of other scrubbing\n if (\n domUtil.isMatchingElement(element, this.scrubClasses, this.scrubSelectors)\n ) {\n return mask;\n }\n\n // This check is last since maskInputFn returns a modified value rather\n // than a boolean, which would cause an early return even if the value\n // was not scrubbed.\n if (\n this.maskInputOptions[tagName.toLowerCase()] ||\n this.maskInputOptions[inputType]\n ) {\n if (this.maskInputFn) {\n return this.maskInputFn(value, element);\n } else {\n return mask;\n }\n }\n\n return value;\n }\n\n /*\n * Uses the `input` event for everything except radio and checkbox inputs.\n * For those, it uses the `change` event.\n */\n handleInput(evt) {\n const type = evt.type;\n const tagName = evt.target?.tagName.toLowerCase();\n let value = evt.target?.value;\n let inputType = evt.target?.attributes?.type?.value || evt.target?.type;\n\n if (value !== undefined) {\n value = this.scrubInputValue(value, evt.target, tagName, inputType);\n }\n\n switch (type) {\n case 'input':\n if (['radio', 'checkbox'].includes(inputType)) return;\n if (['select', 'textarea'].includes(tagName)) {\n inputType = tagName;\n }\n break;\n\n case 'change':\n if (!['radio', 'checkbox'].includes(inputType)) return;\n if (inputType === 'checkbox') {\n value = evt.target?.checked;\n }\n break;\n }\n\n this.telemeter.captureInput({\n type: inputType,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n value,\n timestamp: _.now(),\n });\n }\n\n deinstrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n restore(this.replacements, 'navigation');\n }\n\n instrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n const self = this;\n replace(\n this._window,\n 'onpopstate',\n function (orig) {\n return function () {\n const current = self._location.href;\n self.handleUrlChange(self._lastHref, current);\n if (orig) {\n orig.apply(this, arguments);\n }\n };\n },\n this.replacements,\n 'navigation',\n );\n\n replace(\n this._window.history,\n 'pushState',\n function (orig) {\n return function () {\n const url = arguments.length > 2 ? arguments[2] : undefined;\n if (url) {\n self.handleUrlChange(self._lastHref, String(url));\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'navigation',\n );\n }\n\n handleUrlChange(from, to) {\n const parsedHref = urlparser.parse(this._location.href);\n const parsedTo = urlparser.parse(to);\n const parsedFrom = urlparser.parse(from);\n this._lastHref = to;\n if (\n parsedHref.protocol === parsedTo.protocol &&\n parsedHref.host === parsedTo.host\n ) {\n to = parsedTo.path + (parsedTo.hash || '');\n }\n if (\n parsedHref.protocol === parsedFrom.protocol &&\n parsedHref.host === parsedFrom.host\n ) {\n from = parsedFrom.path + (parsedFrom.hash || '');\n }\n this.telemeter.captureNavigation(from, to, null, _.now());\n this.rollbar.triggerReplay({\n type: 'navigation',\n path: to,\n });\n }\n\n deinstrumentConnectivity = function () {\n this.removeListeners('connectivity');\n };\n\n instrumentConnectivity() {\n const self = this;\n this.addListener(\n 'connectivity',\n this._window,\n ['online', 'offline'],\n (evt) => self.handleConnectivity(evt),\n );\n }\n\n handleConnectivity(evt) {\n const type = evt.type;\n\n this.telemeter.captureConnectivityChange({\n type,\n isSynthetic: !evt.isTrusted,\n timestamp: _.now(),\n });\n }\n\n handleCspEvent(cspEvent) {\n let message =\n 'Security Policy Violation: ' +\n 'blockedURI: ' +\n cspEvent.blockedURI +\n ', ' +\n 'violatedDirective: ' +\n cspEvent.violatedDirective +\n ', ' +\n 'effectiveDirective: ' +\n cspEvent.effectiveDirective +\n ', ';\n\n if (cspEvent.sourceFile) {\n message +=\n 'location: ' +\n cspEvent.sourceFile +\n ', ' +\n 'line: ' +\n cspEvent.lineNumber +\n ', ' +\n 'col: ' +\n cspEvent.columnNumber +\n ', ';\n }\n\n message += 'originalPolicy: ' + cspEvent.originalPolicy;\n\n this.telemeter.captureLog(message, 'error', null, _.now());\n this.handleCspError(message);\n }\n\n handleCspError(message) {\n if (this.autoInstrument.errorOnContentSecurityPolicy) {\n this.rollbar.error(message);\n }\n }\n\n deinstrumentContentSecurityPolicy() {\n this.removeListeners('contentsecuritypolicy');\n }\n\n instrumentContentSecurityPolicy() {\n if (!('addEventListener' in this._document)) {\n return;\n }\n\n const cspHandler = this.handleCspEvent.bind(this);\n this.addListener(\n 'contentsecuritypolicy',\n this._document,\n ['securitypolicyviolation'],\n cspHandler,\n );\n }\n\n addListener(section, obj, types, handler) {\n if (obj.addEventListener) {\n for (const t of types) {\n const options = { capture: true, passive: true };\n obj.addEventListener(t, handler, options, true);\n this.eventRemovers[section].push(function () {\n obj.removeEventListener(t, handler, options);\n });\n }\n }\n }\n\n removeListeners(section) {\n let r;\n while (this.eventRemovers[section].length) {\n r = this.eventRemovers[section].shift();\n r();\n }\n }\n}\n\nfunction _isUrlObject(input) {\n return typeof URL !== 'undefined' && input instanceof URL;\n}\n\nexport default Instrumenter;\n","import { hasOwn } from '../utility.js';\n\nfunction wrapGlobals(window, handler, shim) {\n if (!window) {\n return;\n }\n // Adapted from https://github.com/bugsnag/bugsnag-js\n var globals =\n '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'.split(\n ',',\n );\n var i, global;\n for (i = 0; i < globals.length; ++i) {\n global = globals[i];\n\n if (window[global] && window[global].prototype) {\n _extendListenerPrototype(handler, window[global].prototype, shim);\n }\n }\n}\n\nfunction _extendListenerPrototype(handler, prototype, shim) {\n if (hasOwn(prototype, 'addEventListener')) {\n var oldAddEventListener = prototype.addEventListener;\n while (\n oldAddEventListener._rollbarOldAdd &&\n oldAddEventListener.belongsToShim\n ) {\n oldAddEventListener = oldAddEventListener._rollbarOldAdd;\n }\n var addFn = function (event, callback, bubble) {\n oldAddEventListener.call(this, event, handler.wrap(callback), bubble);\n };\n addFn._rollbarOldAdd = oldAddEventListener;\n addFn.belongsToShim = shim;\n prototype.addEventListener = addFn;\n\n var oldRemoveEventListener = prototype.removeEventListener;\n while (\n oldRemoveEventListener._rollbarOldRemove &&\n oldRemoveEventListener.belongsToShim\n ) {\n oldRemoveEventListener = oldRemoveEventListener._rollbarOldRemove;\n }\n var removeFn = function (event, callback, bubble) {\n oldRemoveEventListener.call(\n this,\n event,\n (callback && callback._rollbar_wrapped) || callback,\n bubble,\n );\n };\n removeFn._rollbarOldRemove = oldRemoveEventListener;\n removeFn.belongsToShim = shim;\n prototype.removeEventListener = removeFn;\n }\n}\n\nexport default wrapGlobals;\n","import scrub from '../scrub.js';\nimport Telemeter from '../telemetry.js';\nimport Tracing from '../tracing/tracing.js';\nimport truncation from '../truncation.js';\n\nimport Rollbar from './core.js';\nimport Instrumenter from './telemetry.js';\nimport wrapGlobals from './wrapGlobals.js';\n\nRollbar.setComponents({\n telemeter: Telemeter,\n instrumenter: Instrumenter,\n wrapGlobals: wrapGlobals,\n scrub: scrub,\n truncation: truncation,\n tracing: Tracing,\n});\n\nexport default Rollbar;\n","import rollbar from '../rollbar.js';\n\nif ((typeof window !== 'undefined') && !window._rollbarStartTime) {\n window._rollbarStartTime = (new Date()).getTime();\n}\n\nexport default rollbar;\n"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","isType","x","t","typeName","name","_typeof","Error","toString","match","toLowerCase","isFunction","f","isObject","hasOwn","isFiniteNumber","n","Number","isFinite","isError","e","redact","LEVELS","debug","info","warning","error","critical","sanitizeUrl","url","baseUrlParts","str","parseUriOptions","m","parser","strictMode","exec","uri","i","l","length","q","replace","$0","$1","$2","parseUri","anchor","source","query","strict","loose","formatUrl","u","protocol","port","hostname","result","path","stringify","backup","JSON","jsonError","backupError","jsonParse","s","parse","makeUnhandledStackInfo","message","lineno","colno","mode","backupMessage","errorParser","location","line","column","func","guessFunctionName","context","gatherContext","href","document","useragent","window","navigator","userAgent","String","stack","wrapCallback","logger","err","resp","nonCircularClone","clone","seen","newSeen","includes","slice","push","createItem","args","notifier","requestKeys","lambdaContext","custom","callback","request","arg","extraArgs","argTypes","typ","DOMException","j","len","undefined","d","item","timestamp","now","diagnostic","uuid","c","r","Math","random","floor","data","level","skipFrames","setCustomItemKeys","_originalArgs","original_arg_types","TELEMETRY_TYPES","TELEMETRY_LEVELS","arrayIncludes","arr","val","_step2","_iterator2","_createForOfIteratorHelper","done","addItemAttributes","itemData","attributes","_step3","_iterator3","a","keys","split","_e","set","setPrototypeOf","temp","replacement","Date","handleOptions","current","input","payload","merge","options","hostWhiteList","hostSafeList","log","hostBlackList","hostBlockList","updateDeprecatedOptions","overwriteScrubFields","scrubFields","concat","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","constructor","src","copy","create","arguments","k","v","seenIndex","isObj","_","isArray","mapped","indexOf","same","scrubPath","last","_step4","_iterator4","entries","_step4$value","_slicedToArray","index","scrubPaths","_step","_iterator","paramRes","_step5","ret","_iterator5","pat","RegExp","_getScrubFieldRegexs","queryRes","_step6","_iterator6","_getScrubQueryParamRegexs","redactQueryParam","dummy0","paramPart","traverse","scrubber","tmpV","test","valScrubber","regex","paramScrubber","MAX_EVENTS","fromMillis","millis","trunc","round","Telemeter","tracing","_this$tracing","_classCallCheck","queue","maxTelemetryEvents","maxQueueSize","max","min","telemetrySpan","startSpan","oldOptions","newMaxEvents","deleteCount","splice","events","Array","filterTelemetry","filter","type","map","_ref","otelAttributes","event","_objectWithoutProperties","_excluded","end","metadata","rollbarUUID","getLevel","timestamp_ms","body","_exc","capture","_this$telemetrySpan","addEvent","_this$telemetrySpan2","_objectSpread","subtype","requestData","_metadata$response","_metadata$response2","_this$telemetrySpan3","levelFromStatus","status_code","endTimeNano","end_time_ms","method","statusCode","request_headers","response","headers","requestBody","responseBody","start_time_ms","element","checked","_ref2","_this$telemetrySpan4","isSynthetic","endTimeUnixNano","_getRepeatedEvent","_updateRepeatedEvent","_ref3","_this$telemetrySpan5","lastEvent","_lastEvent","target","duration","height","width","textZoomRatio","count","rate","list","_ref4","_this$telemetrySpan6","_ref5","_this$telemetrySpan7","_ref6","_this$telemetrySpan8","dropEffect","effectAllowed","kinds","mediaTypes","from","to","_this$telemetrySpan9","ts","getTime","_ref7","_this$telemetrySpan0","includeItemsInTelemetry","captureError","captureLog","shift","manual","Context","parentContext","_currentContext","Map","self","delete","ROOT_CONTEXT","ContextManager","currentContext","previousContext","fn","thisArg","enterContext","_len","_key","apply","exitContext","add","b","toMillis","hrtime","toNanos","performance","timeOrigin","isHrTime","SpanExporter","api","spans","_resultCallback","spanExportQueue","_toConsumableArray","_this","resourceSpans","resource","scopeMap","span","scopeKey","instrumentationScope","version","has","scope","_transformSpan","_transformResource","scopeSpans","values","scopeData","_transformInstrumentationScope","postSpans","_this2","transformAttributes","_transformAnyValue","traceId","spanContext","spanId","parentSpanId","kind","startTimeUnixNano","startTime","endTime","timeUnixNano","time","_this3","_this4","attr","_this5","stringValue","isInteger","intValue","doubleValue","boolValue","arrayValue","kvlistValue","gen","randomBytes","Uint8Array","crypto","getRandomValues","byte","padStart","join","SESSION_KEY","Session","_defineProperty","session","_attributes","attrs","getSession","createSession","initSessionAttributes","serializedSession","sessionStorage","getItem","_unused","id","createdAt","setSession","sessionString","setItem","_unused2","user","setAttributes","email","username","_navigator$userAgentD","_navigator$userAgentD2","_navigator$userAgentD3","userAgentData","brands","language","mobile","platform","levels","warn","disable","_len2","_key2","_len3","_key3","_len4","_key4","_len5","_key5","init","logLevel","unshift","console","SpanProcessor","exporter","pendingSpans","transforms","userTransform","bind","transformFn","transformSpan","transform","_parentContext","applyTransforms","export","Span","usePerformance","initReadableSpan","spanProcessor","onStart","_options$session","status","code","links","ended","droppedAttributesCount","droppedEventsCount","droppedLinksCount","_i","_Object$entries","_Object$entries$_i","setAttribute","onEnd","Tracer","_this$tracing$resourc","_options$resource","_this$tracing$session","contextManager","active","parentSpan","getSpan","parentSpanContext","traceState","traceFlags","SPAN_KEY","for","Tracing","gWindow","createTracer","_this$options$payload","_this$options$payload2","environment","bytes","tracer","addTransform","getValue","setValue","_this$contextManager","with","setSpan","raw","jsonBackup","selectFrames","frames","range","truncateFrames","trace_chain","trace","maybeTruncateValue","truncateStrings","truncator","truncateTraceData","traceData","exception","description","minBody","chain","_step2$value","needsTruncation","maxSize","string","charCodeAt","truncate","strategy","results","strategies","buildPayload","contextResult","substr","getTransportFromOptions","defaults","search","timeout","transport","defaultTransport","fetch","XMLHttpRequest","detectTransport","proxy","endpoint","opts","pathname","transportOptions","transportAPI","host","iterator","Generator","_regeneratorDefine2","p","y","G","TypeError","return","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","__proto__","displayName","_regenerator","w","_invoke","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_defineProperties","_toPropertyKey","toPrimitive","_toPrimitive","defaultOptions","OTLPDefaultOptions","Api","urllib","truncation","accessToken","_getTransport","OTLPTransportOptions","_getOTLPTransport","reject","post","helpers","setTimeout","_callee","_args","_context","_postPromise","_postSpans","_next","_throw","_x","stringifyResult","jsonPayload","postJsonPayload","_options$tracing","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","stacktrace","lineRE","lines","file","applySlice","parseOpera9","filtered","argsRaw","tokens","locationParts","extractLocation","pop","functionCall","functionName","function","col","parseOpera11","parseOpera10","parseOpera","parseV8OrIeString","parseV8OrIE","parseFFOrSafariString","parseFFOrSafari","allowEmpty","urlLike","parts","sanitizedLine","functionNameRegex","matches","stackframesLiteToStackframes","liteStackframes","liteStackframe","fileName","lineNumber","columnNumber","ERR_CLASS_REGEXP","Frame","stackFrame","_stackFrame","Stack","skip","parserStack","parse$1","getStack","_mostSpecificErrorName","rawStack","rawException","constructorName","guessErrorClass","errMsg","errClassMatch","errClass","nested","cause","traceChain","checkLevel","settings","levelVal","reportLevel","matchFrames","block","filename","listLength","frameLength","urlIsOnAList","safeOrBlock","traces","tracesLength","listName","messageIsIgnored","ignoredMessages","rIgnoredMessage","messages","messagesFromItem","Notifier","_this$queue","configure","enabled","addPendingItem","originalError","_applyTransforms","removePendingItem","addItem","transformIndex","transformsLength","next","Queue","rateLimiter","replay","predicates","pendingItems","pendingRequests","retryQueue","retryHandle","waitCallback","waitIntervalID","_this$api","predicate","idx","originalItem","predicateResult","_applyPredicates","stop","_maybeLog","transmit","replayId","_makeApiRequest","_dequeuePendingRequest","sendOrDiscardReplay","_this$replay","discard","_maybeCallWait","clearInterval","setInterval","rateLimitResponse","shouldSend","postItem","_maybeRetry","shouldRetry","retryInterval","RETRIABLE_ERRORS","maxRetries","retries","_retryApiRequest","retryObject","verbose","RateLimiter","counter","perMinCounter","platformOptions","configureGlobal","_createClass","maxItems","itemsPerMinute","globalSettings","elapsedTime","globalRateLimit","globalRateLimitPerMin","checkRate","shouldSendValue","underGlobalLimit","perMinute","limit","ignoreRateLimit","limitPerMin","errorResult","msg","extra","framework","rateLimitPayload","Rollbar","telemeter","setPlatformOptions","validateTracer","_configuredOptions","setStackTraceLimit","lastError","lastErrorHash","stackTraceLimit","global","payloadData","_defaultLogLevel","_log","wait","captureEvent","captureDomContentLoaded","captureLoad","buildJsonPayload","sendJsonPayload","defaultLevel","ignoreDuplicateErrors","_sameAsLastError","_addItemAttributes","_addTracingInfo","_captureRollbarItem","telemetryEvents","copyEvents","_this$tracing2","sessionId","_isUncaught","itemHash","generateItemHash","toSpanId","toTraceId","validateSpan","setTag","opentracingSpanId","opentracingTraceId","opentracing_span_id","opentracing_trace_id","itemToPayload","addPayloadOptions","payloadOptions","addTelemetryData","addMessageWithError","tracePath","newItem","promisedItem","addConfigToPayload","sendConfig","addFunctionOption","addConfiguredOptions","configuredOptions","configured_options","addDiagnosticKeys","client","is_anonymous","is_uncaught","raw_error","constructor_name","failed","checkIgnore","handleDomException","handleItemWithError","stackInfo","_savedStackTrace","addErrorContext","errors","contextAdded","rollbarContext","error_context","e2","ensureItemHasSomethingToSay","addBaseInfo","server","addBody","traceChainLength","buildTrace","addBodyTraceChain","stackFromItem","guess","className","errorClass","addBodyMessage","addBodyTrace","_unhandledStackInfo","class","frame","pre","contextLength","mid","sendFrameUrl","endsWith","reverse","controller","timeoutId","AbortController","abort","signal","clearTimeout","respHeaders","json","catch","_newRetriableError","requestFactory","xmlhttp","factories","ActiveXObject","numFactories","_createXMLHTTPObject","onreadystatechange","readyState","parseResponse","responseText","_isSuccess","getResponseHeader","_isNormalFailure","ex","exc","open","setRequestHeader","h","send","_e1","XDomainRequest","substring","xdomainrequest","onprogress","ontimeout","onerror","onload","Transport","params","access_token","paramsArray","sort","qs","_makeZoneRequest","rootZone","Zone","run","_makeRequest","RollbarProxy","_msg","_proxyRequest","makeFetchRequest","makeXhrRequest","auth","hash","parseInt","pathParts","_instance","components","Instrumenter","instrumenter","wrapGlobals","scrub","Replay","API","_gWindow","initSession","replayOptions","autoStart","recorder","start","Client","gDocument","isChrome","chrome","runtime","anonymousErrorsPending","rollbar","requestInfo","query_string","remoteString","captureIp","user_ip","nav","scr","screen","runtime_ms","_rollbarStartTime","javascript","browser","cookie_enabled","cookieEnabled","cur","plugins","navPlugins","sharedTransforms","scrubFn","addTransformsToNotifier","addPredicate","sharedPredicates","isUncaught","Boolean","onSendCallback","addPredicatesToQueue","setupUnhandledCapture","instrument","setSessionAttributesFromOptions","_this$instrumenter","_createItem","triggerReplay","unhandledExceptionsInitialized","captureUncaught","handleUncaughtExceptions","handler","shim","oldOnError","_rollbarOldOnError","handleAnonymousErrors","old","_rollbarWrappedError","_rollbarContext","handleUncaughtException","_rollbarWindowOnError","globals","wrapGlobalEventHandlers","unhandledRejectionsInitialized","captureUnhandledRejections","handleUnhandledRejections","_rollbarURH","belongsToShim","removeEventListener","rejectionHandler","evt","reason","promise","detail","handleUnhandledRejection","addEventListener","inspectAnonymousErrors","uncaughtErrorLevel","prepareStackTrace","_stack","_isAnonymous","reasonResult","_before","ctxFn","_isWrap","_rollbar_wrapped","_wrappedSource","setUser","_this$tracing3","_options$payload","_options$client","_options$payload2","_options$payload3","_options$payload4","person","setSessionUser","code_version","codeVersion","setSessionAttributes","maybeCallback","_getFirstFunction","_Rollbar","callInstance","_len6","_key6","_len7","_key7","_len8","_key8","_len9","_key9","_len0","_key0","_len1","_key1","_len10","_key10","_len11","_key11","_len12","_key12","browserDefaults","triggerDefaults","samplingRatio","preDuration","postDuration","triggers","logErrors","logEmits","inlineStylesheet","inlineImages","collectFonts","maskInputOptions","password","tel","text","color","date","month","number","week","maskAllInputs","blockClass","maskTextClass","ignoreClass","slimDOMOptions","script","comment","headFavicon","headWhitespace","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","normalizeName","FetchHeaders","forEach","append","header","getOwnPropertyNames","normalizeValue","oldValue","items","iteratorFor","Headers","replacements","orig","elementString","elem","nextStr","totalLength","out","descriptionToString","separator","MAX_LENGTH","elementArrayToString","nextDescription","describeElement","tagName","parentNode","treeToArray","desc","classes","attribute","getAttribute","network","networkResponseHeaders","networkResponseBody","networkRequestHeaders","networkRequestBody","networkErrorOnHttp5xx","networkErrorOnHttp4xx","networkErrorOnHttp0","dom","navigation","connectivity","contentSecurityPolicy","errorOnContentSecurityPolicy","restore","defaultValueScrubber","patterns","field","nameFromDescription","_patterns","_window","_document","removeListeners","autoInstrument","configureScrubbing","eventRemovers","contentsecuritypolicy","_location","_lastHref","_options$scrubTelemet","_options$replay","_options$replay2","_options$replay3","_options$replay4","_options$replay5","_options$replay6","_options$replay7","_options$replay8","_options$replay9","scrubTelemetryInputs","telemetryScrubber","maskInputFn","scrubClasses","scrubSelectors","blockSelector","ignoreSelector","maskTextSelector","oldSettings","deinstrumentNetwork","instrumentNetwork","deinstrumentConsole","instrumentConsole","deinstrumentDom","instrumentDom","deinstrumentNavigation","instrumentNavigation","deinstrumentConnectivity","instrumentConnectivity","deinstrumentContentSecurityPolicy","instrumentContentSecurityPolicy","wrapProp","xhr","wrap","xhrp","isUrlObject","_isUrlObject","__rollbar_xhr","request_content_type","onreadystatechangeHandler","__rollbar_event","captureNetwork","response_content_type","headersConfig","allHeaders","getAllResponseHeaders","trim","isJsonContentType","scrubJson","addOtelNetworkResponse","errorOnHttpStatus","trackHttpErrors","_fn","_t","reqHeaders","fetchHeaders","telemetryEvent","contentType","endTimeMs","inHeaders","outHeaders","currentHeader","_this$_window","_i2","_methods","wrapConsole","origConsole","Function","addListener","handleEvent","click","handleClick","dragdrop","handleDrag","focus","handleFocus","form","handleForm","handleInput","resize","handleResize","contentLoaded","handleContentLoaded","_evt","URL","_evt$target","captureClick","isTrusted","domUtil","_evt$target2","captureFocus","innerWidth","captureResize","innerHeight","_evt$dataTransfer","_evt$dataTransfer2","dataTransfer","files","captureDragDrop","inputType","mask","selectors","cls","classList","contains","sel","_evt$target3","_evt$target4","_evt$target5","_evt$target6","scrubInputValue","_evt$target7","captureInput","app","history","pushState","handleUrlChange","parsedHref","urlparser","parsedTo","parsedFrom","captureNavigation","handleConnectivity","captureConnectivityChange","cspEvent","blockedURI","violatedDirective","effectiveDirective","sourceFile","originalPolicy","handleCspError","cspHandler","handleCspEvent","section","types","_step7","_iterator7","_loop","passive","_extendListenerPrototype","oldAddEventListener","_rollbarOldAdd","addFn","bubble","oldRemoveEventListener","_rollbarOldRemove","removeFn","setComponents"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/rollbar.replay.js b/dist/rollbar.replay.js index 2b3d1233e..4308e3e0f 100644 --- a/dist/rollbar.replay.js +++ b/dist/rollbar.replay.js @@ -40,69 +40,14 @@ var url_namespaceObject = {}; __webpack_require__.r(url_namespaceObject); __webpack_require__.d(url_namespaceObject, { - parse: function() { return parse; } + parse: function() { return url_parse; } }); -;// ./src/merge.js -var hasOwn = Object.prototype.hasOwnProperty; -var toStr = Object.prototype.toString; -var isPlainObject = function isPlainObject(obj) { - if (!obj || toStr.call(obj) !== '[object Object]') { - return false; - } - var hasOwnConstructor = hasOwn.call(obj, 'constructor'); - var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); - // Not own constructor property must be Object - if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - var key; - for (key in obj) { - /**/ - } - return typeof key === 'undefined' || hasOwn.call(obj, key); -}; -function merge() { - var i, - src, - copy, - clone, - name, - result = Object.create(null), - // no prototype pollution on Object - current = null, - length = arguments.length; - for (i = 0; i < length; i++) { - current = arguments[i]; - if (current == null) { - continue; - } - for (name in current) { - src = result[name]; - copy = current[name]; - if (result !== copy) { - if (copy && isPlainObject(copy)) { - clone = src && isPlainObject(src) ? src : {}; - result[name] = merge(clone, copy); - } else if (typeof copy !== 'undefined') { - result[name] = copy; - } - } - } - } - return result; -} -/* harmony default export */ var src_merge = (merge); ;// ./src/utility.js function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } - - /* * isType - Given a Javascript value and a string, returns true if the type of the value matches the * given string. @@ -169,8 +114,18 @@ function isNativeFunction(f) { * @returns true is value is an object function is an object) */ function isObject(value) { - var type = _typeof(value); - return value != null && (type == 'object' || type == 'function'); + return value != null && (_typeof(value) == 'object' || typeof value == 'function'); +} + +/* hasOwn - safe helper around Object.hasOwnProperty */ +function hasOwn(obj, prop) { + if (obj == null) { + return false; + } + if (Object.hasOwn) { + return Object.hasOwn(obj, prop); + } + return Object.prototype.hasOwnProperty.call(obj, prop); } /* isString - Checks if the argument is a string @@ -192,16 +147,6 @@ function isFiniteNumber(n) { return Number.isFinite(n); } -/* - * isDefined - a convenience function for checking if a value is not equal to undefined - * - * @param u - any value - * @returns true if u is anything other than undefined - */ -function isDefined(u) { - return !isType(u, 'undefined'); -} - /* * isIterable - convenience function for checking if a value can be iterated, essentially * whether it is an object or an array. @@ -248,7 +193,7 @@ function redact() { // from http://stackoverflow.com/a/8809472/1138191 function uuid4() { - var d = utility_now(); + var d = now(); var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = (d + Math.random() * 16) % 16 | 0; d = Math.floor(d / 16); @@ -298,8 +243,8 @@ var parseUriOptions = { parser: /(?:^|&)([^&=]*)=?([^&]*)/g }, parser: { - strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, - loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ + strict: /^(?:([^:/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\d*))?))?((((?:[^?#/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, + loose: /^(?:(?![^:@]+:[^:@/]*@)([^:/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#/]*\.[^?#/.]+(?:[?#]|$)))*\/?)?([^?#/]*))(?:\?([^#]*))?(?:#(.*))?)/ } }; function parseUri(str) { @@ -499,7 +444,11 @@ function createItem(args, logger, notifier, requestKeys, lambdaContext) { case 'undefined': break; case 'string': - message ? extraArgs.push(arg) : message = arg; + if (message) { + extraArgs.push(arg); + } else { + message = arg; + } break; case 'function': callback = wrapCallback(logger, arg); @@ -511,12 +460,20 @@ function createItem(args, logger, notifier, requestKeys, lambdaContext) { case 'domexception': case 'exception': // Firefox Exception type - err ? extraArgs.push(arg) : err = arg; + if (err) { + extraArgs.push(arg); + } else { + err = arg; + } break; case 'object': case 'array': if (arg instanceof Error || typeof DOMException !== 'undefined' && arg instanceof DOMException) { - err ? extraArgs.push(arg) : err = arg; + if (err) { + extraArgs.push(arg); + } else { + err = arg; + } break; } if (requestKeys && typ === 'object' && !request) { @@ -530,11 +487,19 @@ function createItem(args, logger, notifier, requestKeys, lambdaContext) { break; } } - custom ? extraArgs.push(arg) : custom = arg; + if (custom) { + extraArgs.push(arg); + } else { + custom = arg; + } break; default: if (arg instanceof Error || typeof DOMException !== 'undefined' && arg instanceof DOMException) { - err ? extraArgs.push(arg) : err = arg; + if (err) { + extraArgs.push(arg); + } else { + err = arg; + } break; } extraArgs.push(arg); @@ -551,7 +516,7 @@ function createItem(args, logger, notifier, requestKeys, lambdaContext) { message: message, err: err, custom: custom, - timestamp: utility_now(), + timestamp: now(), callback: callback, notifier: notifier, diagnostic: diagnostic, @@ -583,14 +548,23 @@ function addErrorContext(item, errors) { var custom = item.data.custom || {}; var contextAdded = false; try { - for (var i = 0; i < errors.length; ++i) { - if (errors[i].hasOwnProperty('rollbarContext')) { - custom = src_merge(custom, nonCircularClone(errors[i].rollbarContext)); - contextAdded = true; + var _iterator = _createForOfIteratorHelper(errors), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var error = _step.value; + if (hasOwn(error, 'rollbarContext')) { + custom = merge(custom, nonCircularClone(error.rollbarContext)); + contextAdded = true; + } } - } - // Avoid adding an empty object to the data. + // Avoid adding an empty object to the data. + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } if (contextAdded) { item.data.custom = custom; } @@ -601,10 +575,19 @@ function addErrorContext(item, errors) { var TELEMETRY_TYPES = ['log', 'network', 'dom', 'navigation', 'error', 'manual']; var TELEMETRY_LEVELS = ['critical', 'error', 'warning', 'info', 'debug']; function arrayIncludes(arr, val) { - for (var k = 0; k < arr.length; ++k) { - if (arr[k] === val) { - return true; + var _iterator2 = _createForOfIteratorHelper(arr), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var entry = _step2.value; + if (entry === val) { + return true; + } } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); } return false; } @@ -638,20 +621,20 @@ function createTelemetryEvent(args) { } function addItemAttributes(itemData, attributes) { itemData.attributes = itemData.attributes || []; - var _iterator = _createForOfIteratorHelper(attributes), - _step; + var _iterator3 = _createForOfIteratorHelper(attributes), + _step3; try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var a = _step.value; + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var a = _step3.value; if (a.value === undefined) { continue; } itemData.attributes.push(a); } } catch (err) { - _iterator.e(err); + _iterator3.e(err); } finally { - _iterator.f(); + _iterator3.f(); } } @@ -673,7 +656,7 @@ function get(obj, path) { for (var i = 0, len = keys.length; i < len; ++i) { result = result[keys[i]]; } - } catch (e) { + } catch (_e) { result = undefined; } return result; @@ -703,7 +686,7 @@ function set(obj, path, value) { } temp[keys[len - 1]] = value; obj[keys[0]] = replacement; - } catch (e) { + } catch (_e) { return; } } @@ -734,11 +717,11 @@ function formatArgsAsString(args) { } return result.join(' '); } -function utility_now() { +function now() { if (Date.now) { - return +Date.now(); + return Date.now(); } - return +new Date(); + return Number(new Date()); } function filterIp(requestData, captureIp) { if (!requestData || !requestData['user_ip'] || captureIp === true) { @@ -769,14 +752,14 @@ function filterIp(requestData, captureIp) { } else { newIp = null; } - } catch (e) { + } catch (_e) { newIp = null; } } requestData['user_ip'] = newIp; } function handleOptions(current, input, payload, logger) { - var result = src_merge(current, input, payload); + var result = merge(current, input, payload); result = updateDeprecatedOptions(result, logger); if (!input || input.overwriteScrubFields) { return result; @@ -799,2710 +782,2205 @@ function updateDeprecatedOptions(options, logger) { } return options; } +function merge() { + function isPlainObject(obj) { + if (!obj || Object.prototype.toString.call(obj) !== '[object Object]') { + return false; + } + var hasOwnConstructor = hasOwn(obj, 'constructor'); + var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn(obj.constructor.prototype, 'isPrototypeOf'); + // Not own constructor property must be Object + if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { + return false; + } -;// ./src/rateLimiter.js + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + var key; + for (key in obj) { + /**/ + } + return typeof key === 'undefined' || hasOwn(obj, key); + } + var i, + src, + copy, + clone, + name, + result = Object.create(null), + // no prototype pollution on Object + current = null, + length = arguments.length; + for (i = 0; i < length; i++) { + current = arguments[i]; + if (current === null || current === undefined) { + continue; + } + for (name in current) { + src = result[name]; + copy = current[name]; + if (result !== copy) { + if (copy && isPlainObject(copy)) { + clone = src && isPlainObject(src) ? src : {}; + result[name] = merge(clone, copy); + } else if (typeof copy !== 'undefined') { + result[name] = copy; + } + } + } + } + return result; +} +;// ./src/utility/traverse.js -/* - * RateLimiter - an object that encapsulates the logic for counting items sent to Rollbar - * - * @param options - the same options that are accepted by configureGlobal offered as a convenience - */ -function RateLimiter(options) { - this.startTime = utility_now(); - this.counter = 0; - this.perMinCounter = 0; - this.platform = null; - this.platformOptions = {}; - this.configureGlobal(options); -} -RateLimiter.globalSettings = { - startTime: utility_now(), - maxItems: undefined, - itemsPerMinute: undefined -}; +function traverse(obj, func, seen) { + var k, v, i; + var isObj = isType(obj, 'object'); + var isArray = isType(obj, 'array'); + var keys = []; + var seenIndex; -/* - * configureGlobal - set the global rate limiter options - * - * @param options - Only the following values are recognized: - * startTime: a timestamp of the form returned by (new Date()).getTime() - * maxItems: the maximum items - * itemsPerMinute: the max number of items to send in a given minute - */ -RateLimiter.prototype.configureGlobal = function (options) { - if (options.startTime !== undefined) { - RateLimiter.globalSettings.startTime = options.startTime; + // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11. + seen = seen || { + obj: [], + mapped: [] + }; + if (isObj) { + seenIndex = seen.obj.indexOf(obj); + if (isObj && seenIndex !== -1) { + // Prefer the mapped object if there is one. + return seen.mapped[seenIndex] || seen.obj[seenIndex]; + } + seen.obj.push(obj); + seenIndex = seen.obj.length - 1; } - if (options.maxItems !== undefined) { - RateLimiter.globalSettings.maxItems = options.maxItems; + if (isObj) { + for (k in obj) { + if (hasOwn(obj, k)) { + keys.push(k); + } + } + } else if (isArray) { + for (i = 0; i < obj.length; ++i) { + keys.push(i); + } } - if (options.itemsPerMinute !== undefined) { - RateLimiter.globalSettings.itemsPerMinute = options.itemsPerMinute; + var result = isObj ? {} : []; + var same = true; + for (i = 0; i < keys.length; ++i) { + k = keys[i]; + v = obj[k]; + result[k] = func(k, v, seen); + same = same && result[k] === obj[k]; } -}; - -/* - * shouldSend - determine if we should send a given item based on rate limit settings - * - * @param item - the item we are about to send - * @returns An object with the following structure: - * error: (Error|null) - * shouldSend: bool - * payload: (Object|null) - * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and - * exactly one of error or payload will be non-null. If error is non-null, the returned Error will - * describe the situation, but it means that we were already over a rate limit (either globally or - * per minute) when this item was checked. If error is null, and therefore payload is non-null, it - * means this item put us over the global rate limit and the payload should be sent to Rollbar in - * place of the passed in item. - */ -RateLimiter.prototype.shouldSend = function (item, now) { - now = now || utility_now(); - var elapsedTime = now - this.startTime; - if (elapsedTime < 0 || elapsedTime >= 60000) { - this.startTime = now; - this.perMinCounter = 0; + if (isObj && !same) { + seen.mapped[seenIndex] = result; } - var globalRateLimit = RateLimiter.globalSettings.maxItems; - var globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute; - if (checkRate(item, globalRateLimit, this.counter)) { - return shouldSendValue(this.platform, this.platformOptions, globalRateLimit + ' max items reached', false); - } else if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) { - return shouldSendValue(this.platform, this.platformOptions, globalRateLimitPerMin + ' items per minute reached', false); - } - this.counter++; - this.perMinCounter++; - var shouldSend = !checkRate(item, globalRateLimit, this.counter); - var perMinute = shouldSend; - shouldSend = shouldSend && !checkRate(item, globalRateLimitPerMin, this.perMinCounter); - return shouldSendValue(this.platform, this.platformOptions, null, shouldSend, globalRateLimit, globalRateLimitPerMin, perMinute); -}; -RateLimiter.prototype.setPlatformOptions = function (platform, options) { - this.platform = platform; - this.platformOptions = options; -}; + return !same ? result : obj; +} +/* harmony default export */ var utility_traverse = (traverse); +;// ./src/scrub.js +function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || scrub_unsupportedIterableToArray(r, e) || _nonIterableRest(); } +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } +function scrub_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = scrub_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function scrub_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return scrub_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? scrub_arrayLikeToArray(r, a) : void 0; } } +function scrub_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -/* Helpers */ -function checkRate(item, limit, counter) { - return !item.ignoreRateLimit && limit >= 1 && counter > limit; -} -function shouldSendValue(platform, options, error, shouldSend, globalRateLimit, limitPerMin, perMinute) { - var payload = null; - if (error) { - error = new Error(error); - } - if (!error && !shouldSend) { - payload = rateLimitPayload(platform, options, globalRateLimit, limitPerMin, perMinute); +function scrub(data, scrubFields, scrubPaths) { + scrubFields = scrubFields || []; + if (scrubPaths) { + var _iterator = scrub_createForOfIteratorHelper(scrubPaths), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var path = _step.value; + scrubPath(data, path); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } } - return { - error: error, - shouldSend: shouldSend, - payload: payload - }; -} -function rateLimitPayload(platform, options, globalRateLimit, limitPerMin, perMinute) { - var environment = options.environment || options.payload && options.payload.environment; - var msg; - if (perMinute) { - msg = 'item per minute limit reached, ignoring errors until timeout'; - } else { - msg = 'maxItems has been hit, ignoring errors until reset.'; + var paramRes = _getScrubFieldRegexs(scrubFields); + var queryRes = _getScrubQueryParamRegexs(scrubFields); + function redactQueryParam(dummy0, paramPart) { + return paramPart + redact(); } - var item = { - body: { - message: { - body: msg, - extra: { - maxItems: globalRateLimit, - itemsPerMinute: limitPerMin + function paramScrubber(v) { + if (isType(v, 'string')) { + var _iterator2 = scrub_createForOfIteratorHelper(queryRes), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var regex = _step2.value; + v = v.replace(regex, redactQueryParam); } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); } - }, - language: 'javascript', - environment: environment, - notifier: { - version: options.notifier && options.notifier.version || options.version } - }; - if (platform === 'browser') { - item.platform = 'browser'; - item.framework = 'browser-js'; - item.notifier.name = 'rollbar-browser-js'; - } else if (platform === 'server') { - item.framework = options.framework || 'node-js'; - item.notifier.name = options.notifier.name; - } else if (platform === 'react-native') { - item.framework = options.framework || 'react-native'; - item.notifier.name = options.notifier.name; + return v; } - return item; -} -/* harmony default export */ var rateLimiter = (RateLimiter); -;// ./src/queue.js -function queue_typeof(o) { "@babel/helpers - typeof"; return queue_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, queue_typeof(o); } + function valScrubber(k, v) { + var _iterator3 = scrub_createForOfIteratorHelper(paramRes), + _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var regex = _step3.value; + if (regex.test(k)) { + v = redact(); + break; + } + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + return v; + } + function scrubber(k, v, seen) { + var tmpV = valScrubber(k, v); + if (tmpV === v) { + if (isType(v, 'object') || isType(v, 'array')) { + return utility_traverse(v, scrubber, seen); + } + return paramScrubber(tmpV); + } else { + return tmpV; + } + } + return utility_traverse(data, scrubber); +} +function scrubPath(obj, path) { + var keys = path.split('.'); + var last = keys.length - 1; + try { + var _iterator4 = scrub_createForOfIteratorHelper(keys.entries()), + _step4; + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + var _step4$value = _slicedToArray(_step4.value, 2), + index = _step4$value[0], + key = _step4$value[1]; + if (index < last) { + obj = obj[key]; + } else { + obj[key] = redact(); + } + } + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); + } + } catch (_e) { + // Missing key is OK; + } +} +function _getScrubFieldRegexs(scrubFields) { + var ret = []; + var _iterator5 = scrub_createForOfIteratorHelper(scrubFields), + _step5; + try { + for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { + var field = _step5.value; + var pat = '^\\[?(%5[bB])?' + field + '\\[?(%5[bB])?\\]?(%5[dD])?$'; + ret.push(new RegExp(pat, 'i')); + } + } catch (err) { + _iterator5.e(err); + } finally { + _iterator5.f(); + } + return ret; +} +function _getScrubQueryParamRegexs(scrubFields) { + var ret = []; + var _iterator6 = scrub_createForOfIteratorHelper(scrubFields), + _step6; + try { + for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { + var field = _step6.value; + var pat = '\\[?(%5[bB])?' + field + '\\[?(%5[bB])?\\]?(%5[dD])?'; + ret.push(new RegExp('(' + pat + '=)([^&\\n]+)', 'igm')); + } + } catch (err) { + _iterator6.e(err); + } finally { + _iterator6.f(); + } + return ret; +} +/* harmony default export */ var src_scrub = (scrub); +;// ./src/telemetry.js +var _excluded = ["otelAttributes"]; +function telemetry_typeof(o) { "@babel/helpers - typeof"; return telemetry_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, telemetry_typeof(o); } +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } +function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == queue_typeof(i) ? i : i + ""; } -function _toPrimitive(t, r) { if ("object" != queue_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != queue_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == telemetry_typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != telemetry_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != telemetry_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +var MAX_EVENTS = 100; -/** - * Queue - an object which handles which handles a queue of items to be sent to Rollbar. - * This object handles rate limiting via a passed in rate limiter, retries based on connection - * errors, and filtering of items based on a set of configurable predicates. The communication to - * the backend is performed via a given API object. - */ -var Queue = /*#__PURE__*/function () { - /** - * @param rateLimiter - An object which conforms to the interface - * `rateLimiter.shouldSend(item) -> bool` - * @param api - An object which conforms to the interface - * `api.postItem(payload, function(err, response))` - * @param logger - An object used to log verbose messages if desired - * @param options - see `Queue.prototype.configure` - * @param replay - Optional `Replay` for coordinating session replay with error occurrences - */ - function Queue(rateLimiter, api, logger, options, replay) { - _classCallCheck(this, Queue); - this.rateLimiter = rateLimiter; - this.api = api; - this.logger = logger; - this.options = options; - this.replay = replay; - this.predicates = []; - this.pendingItems = []; - this.pendingRequests = []; - this.retryQueue = []; - this.retryHandle = null; - this.waitCallback = null; - this.waitIntervalID = null; +// Temporary workaround while solving commonjs -> esm issues in Node 18 - 20. +function fromMillis(millis) { + return [Math.trunc(millis / 1000), Math.round(millis % 1000 * 1e6)]; +} +var Telemeter = /*#__PURE__*/function () { + function Telemeter(options, tracing) { + var _this$tracing; + _classCallCheck(this, Telemeter); + this.queue = []; + this.options = merge(options); + var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS; + this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS)); + this.tracing = tracing; + this.telemetrySpan = (_this$tracing = this.tracing) === null || _this$tracing === void 0 ? void 0 : _this$tracing.startSpan('rollbar-telemetry', {}); } - - /** - * configure - updates the options this queue uses - * - * @param options - */ - return _createClass(Queue, [{ + return _createClass(Telemeter, [{ key: "configure", value: function configure(options) { - var _this$api; - (_this$api = this.api) === null || _this$api === void 0 || _this$api.configure(options); var oldOptions = this.options; - this.options = src_merge(oldOptions, options); - return this; - } - - /** - * addPredicate - adds a predicate to the end of the list of predicates for this queue - * - * @param predicate - function(item, options) -> (bool|{err: Error}) - * Returning true means that this predicate passes and the item is okay to go on the queue - * Returning false means do not add the item to the queue, but it is not an error - * Returning {err: Error} means do not add the item to the queue, and the given error explains why - * Returning {err: undefined} is equivalent to returning true but don't do that - */ - }, { - key: "addPredicate", - value: function addPredicate(predicate) { - if (isFunction(predicate)) { - this.predicates.push(predicate); + this.options = merge(oldOptions, options); + var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS; + var newMaxEvents = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS)); + var deleteCount = 0; + if (this.queue.length > newMaxEvents) { + deleteCount = this.queue.length - newMaxEvents; } - return this; + this.maxQueueSize = newMaxEvents; + this.queue.splice(0, deleteCount); } }, { - key: "addPendingItem", - value: function addPendingItem(item) { - this.pendingItems.push(item); + key: "copyEvents", + value: function copyEvents() { + var events = Array.prototype.slice.call(this.queue, 0); + if (isFunction(this.options.filterTelemetry)) { + try { + var i = events.length; + while (i--) { + if (this.options.filterTelemetry(events[i])) { + events.splice(i, 1); + } + } + } catch (_e) { + this.options.filterTelemetry = null; + } + } + + // Filter until supported in legacy telemetry + events = events.filter(function (e) { + return e.type !== 'connectivity'; + }); + + // Remove internal keys from output + events = events.map(function (_ref) { + var _otelAttributes = _ref.otelAttributes, + event = _objectWithoutProperties(_ref, _excluded); + return event; + }); + return events; } }, { - key: "removePendingItem", - value: function removePendingItem(item) { - var idx = this.pendingItems.indexOf(item); - if (idx !== -1) { - this.pendingItems.splice(idx, 1); + key: "exportTelemetrySpan", + value: function exportTelemetrySpan() { + var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + if (this.telemetrySpan) { + this.telemetrySpan.end(attributes); + this.telemetrySpan = this.tracing.startSpan('rollbar-telemetry', {}); } } - - /** - * addItem - Send an item to the Rollbar API if all of the predicates are satisfied - * - * @param item - Item instance with the payload to send to the backend - * @param callback - function(error, repsonse) which will be called with the response from the API - * in the case of a success, otherwise response will be null and error will have a value. If both - * error and response are null then the item was stopped by a predicate which did not consider this - * to be an error condition, but nonetheless did not send the item to the API. - * @param originalError - The original error before any transformations that is to be logged if any - * @param originalItem - The original item before transforms, used in pendingItems queue - */ }, { - key: "addItem", - value: function addItem(item, callback, originalError, originalItem) { - var _this = this; - if (!callback || !isFunction(callback)) { - callback = function callback() { - return; - }; - } - var data = item.data; - var predicateResult = this._applyPredicates(data); - if (predicateResult.stop) { - this.removePendingItem(originalItem); - callback(predicateResult.err); - return; - } - this._maybeLog(data, originalError); - this.removePendingItem(originalItem); - if (!this.options.transmit) { - callback(new Error('Transmit disabled')); - return; + key: "capture", + value: function capture(type, metadata, level, rollbarUUID) { + var timestamp = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null; + var otelAttributes = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null; + var e = { + level: getLevel(type, level), + type: type, + timestamp_ms: timestamp || now(), + body: metadata, + source: 'client' + }; + if (rollbarUUID) { + e.uuid = rollbarUUID; } - if (this.replay && data.body) { - item.replayId = this.replay.capture(null, data.uuid, { - type: 'occurrence', - level: item.level - }); - if (item.replayId) { - addItemAttributes(item.data, [{ - key: 'replay_id', - value: item.replayId - }]); - } + if (otelAttributes) { + e.otelAttributes = otelAttributes; } - this.pendingRequests.push(data); try { - this._makeApiRequest(data, function (err, resp, headers) { - _this._dequeuePendingRequest(data); - if (item.replayId) { - _this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers); - } - callback(err, resp); - }); - } catch (err) { - this._dequeuePendingRequest(data); - if (item.replayId) { - var _this$replay; - (_this$replay = this.replay) === null || _this$replay === void 0 || _this$replay.discard(item.replayId); + if (isFunction(this.options.filterTelemetry) && this.options.filterTelemetry(e)) { + return false; } - callback(err); + } catch (_exc) { + this.options.filterTelemetry = null; } + this.push(e); + return e; } - - /** - * wait - Stop any further errors from being added to the queue, and get called back when all items - * currently processing have finished sending to the backend. - * - * @param callback - function() called when all pending items have been sent - */ }, { - key: "wait", - value: function wait(callback) { - var _this2 = this; - if (!isFunction(callback)) { - return; - } - this.waitCallback = callback; - if (this._maybeCallWait()) { - return; - } - if (this.waitIntervalID) { - this.waitIntervalID = clearInterval(this.waitIntervalID); - } - this.waitIntervalID = setInterval(function () { - _this2._maybeCallWait(); - }, 500); + key: "captureEvent", + value: function captureEvent(type, metadata, level, rollbarUUID) { + return this.capture(type, metadata, level, rollbarUUID); } - - /** - * Sequentially applies the predicates that have been added to the queue to the - * given item with the currently configured options. - * - * @param item - An item in the queue - * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue, - * the error value should be passed up to a callbak if we are stopping. - */ }, { - key: "_applyPredicates", - value: function _applyPredicates(item) { - var p = null; - for (var i = 0, len = this.predicates.length; i < len; i++) { - p = this.predicates[i](item, this.options); - if (!p || p.err !== undefined) { - return { - stop: true, - err: p.err - }; - } + key: "captureError", + value: function captureError(err, level, rollbarUUID, timestamp) { + var _this$telemetrySpan; + var message = err.message || String(err); + var metadata = { + message: message + }; + if (err.stack) { + metadata.stack = err.stack; } - return { - stop: false, - err: null + var otelAttributes = { + message: message, + level: level, + type: 'error', + uuid: rollbarUUID }; + (_this$telemetrySpan = this.telemetrySpan) === null || _this$telemetrySpan === void 0 || _this$telemetrySpan.addEvent('rollbar-occurrence-event', otelAttributes, fromMillis(timestamp)); + return this.capture('error', metadata, level, rollbarUUID, timestamp, otelAttributes); } - - /** - * Send an item to Rollbar, callback when done, if there is an error make an - * effort to retry if we are configured to do so. - * - * @param item - an item ready to send to the backend - * @param callback - function(err, response) - */ }, { - key: "_makeApiRequest", - value: function _makeApiRequest(item, callback) { - var _this3 = this; - var rateLimitResponse = this.rateLimiter.shouldSend(item); - if (rateLimitResponse.shouldSend) { - this.api.postItem(item, function (err, resp, headers) { - if (err) { - _this3._maybeRetry(err, item, callback); - } else { - callback(err, resp, headers); - } - }); - } else if (rateLimitResponse.error) { - callback(rateLimitResponse.error); - } else { - this.api.postItem(rateLimitResponse.payload, callback); - } + key: "captureLog", + value: function captureLog(message, level, rollbarUUID, timestamp) { + var _this$telemetrySpan2; + var event = rollbarUUID ? 'rollbar-occurrence-event' : 'rollbar-log-event'; + var otelAttributes = _objectSpread({ + message: message, + level: level + }, rollbarUUID ? { + type: 'message', + uuid: rollbarUUID + } : {}); + (_this$telemetrySpan2 = this.telemetrySpan) === null || _this$telemetrySpan2 === void 0 || _this$telemetrySpan2.addEvent(event, otelAttributes, fromMillis(timestamp)); + return this.capture('log', { + message: message + }, level, rollbarUUID, timestamp, otelAttributes); } - - // These are errors basically mean there is no internet connection }, { - key: "_maybeRetry", - value: - /** - * Given the error returned by the API, decide if we should retry or just callback - * with the error. - * - * @param err - an error returned by the API transport - * @param item - the item that was trying to be sent when this error occured - * @param callback - function(err, response) - */ - function _maybeRetry(err, item, callback) { - var shouldRetry = false; - if (this.options.retryInterval) { - for (var i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) { - if (err.code === Queue.RETRIABLE_ERRORS[i]) { - shouldRetry = true; - break; - } - } - if (shouldRetry && isFiniteNumber(this.options.maxRetries)) { - item.retries = item.retries ? item.retries + 1 : 1; - if (item.retries > this.options.maxRetries) { - shouldRetry = false; - } - } + key: "captureNetwork", + value: function captureNetwork(metadata, subtype, rollbarUUID, requestData) { + var _metadata$response, _metadata$response2, _this$telemetrySpan3; + subtype = subtype || 'xhr'; + metadata.subtype = metadata.subtype || subtype; + if (requestData) { + metadata.request = requestData; } - if (shouldRetry) { - this._retryApiRequest(item, callback); - } else { - callback(err); + var level = this.levelFromStatus(metadata.status_code); + var endTimeNano = (metadata.end_time_ms || 0) * 1e6; + var otelAttributes = { + type: metadata.subtype, + method: metadata.method, + url: metadata.url, + statusCode: metadata.status_code, + 'request.headers': JSON.stringify(metadata.request_headers || {}), + 'response.headers': JSON.stringify(((_metadata$response = metadata.response) === null || _metadata$response === void 0 ? void 0 : _metadata$response.headers) || {}), + 'response.timeUnixNano': endTimeNano.toString() + }; + var requestBody = metadata.request; + var responseBody = (_metadata$response2 = metadata.response) === null || _metadata$response2 === void 0 ? void 0 : _metadata$response2.body; + if (requestBody) { + otelAttributes['request.body'] = JSON.stringify(requestBody); } - } - - /** - * Add an item and a callback to a queue and possibly start a timer to process - * that queue based on the retryInterval in the options for this queue. - * - * @param item - an item that failed to send due to an error we deem retriable - * @param callback - function(err, response) - */ - }, { - key: "_retryApiRequest", - value: function _retryApiRequest(item, callback) { - var _this4 = this; - this.retryQueue.push({ - item: item, - callback: callback - }); - if (!this.retryHandle) { - this.retryHandle = setInterval(function () { - while (_this4.retryQueue.length) { - var retryObject = _this4.retryQueue.shift(); - _this4._makeApiRequest(retryObject.item, retryObject.callback); - } - }, this.options.retryInterval); + if (responseBody) { + otelAttributes['response.body'] = JSON.stringify(responseBody); } + (_this$telemetrySpan3 = this.telemetrySpan) === null || _this$telemetrySpan3 === void 0 || _this$telemetrySpan3.addEvent('rollbar-network-event', otelAttributes, fromMillis(metadata.start_time_ms)); + return this.capture('network', metadata, level, rollbarUUID, metadata.start_time_ms, otelAttributes); } - - /** - * Removes the item from the pending request queue, this queue is used to - * enable to functionality of providing a callback that clients can pass to `wait` to be notified - * when the pending request queue has been emptied. This must be called when the API finishes - * processing this item. If a `wait` callback is configured, it is called by this function. - * - * @param item - the item previously added to the pending request queue - */ }, { - key: "_dequeuePendingRequest", - value: function _dequeuePendingRequest(item) { - var idx = this.pendingRequests.indexOf(item); - if (idx !== -1) { - this.pendingRequests.splice(idx, 1); - this._maybeCallWait(); + key: "levelFromStatus", + value: function levelFromStatus(statusCode) { + if (statusCode >= 200 && statusCode < 400) { + return 'info'; } + if (statusCode === 0 || statusCode >= 400) { + return 'error'; + } + return 'info'; } }, { - key: "_maybeLog", - value: function _maybeLog(data, originalError) { - if (this.logger && this.options.verbose) { - var message = originalError || get(data, 'body.trace.exception.message') || get(data, 'body.trace_chain.0.exception.message'); - if (message) { - this.logger.error(message); - return; - } - message = get(data, 'body.message.body'); - if (message) { - this.logger.log(message); - } + key: "captureDom", + value: function captureDom(subtype, element, value, checked, rollbarUUID) { + var metadata = { + subtype: subtype, + element: element + }; + if (value !== undefined) { + metadata.value = value; } + if (checked !== undefined) { + metadata.checked = checked; + } + return this.capture('dom', metadata, 'info', rollbarUUID); } }, { - key: "_maybeCallWait", - value: function _maybeCallWait() { - if (isFunction(this.waitCallback) && this.pendingItems.length === 0 && this.pendingRequests.length === 0) { - if (this.waitIntervalID) { - this.waitIntervalID = clearInterval(this.waitIntervalID); - } - this.waitCallback(); - return true; + key: "captureInput", + value: function captureInput(_ref2) { + var _this$telemetrySpan4; + var type = _ref2.type, + isSynthetic = _ref2.isSynthetic, + element = _ref2.element, + value = _ref2.value, + timestamp = _ref2.timestamp; + var name = 'rollbar-input-event'; + var metadata = { + type: name, + subtype: type, + element: element, + value: value + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic, + element: element, + value: value, + endTimeUnixNano: fromMillis(timestamp) + }; + var event = this._getRepeatedEvent(name, otelAttributes); + if (event) { + return this._updateRepeatedEvent(event, otelAttributes, timestamp); } - return false; + (_this$telemetrySpan4 = this.telemetrySpan) === null || _this$telemetrySpan4 === void 0 || _this$telemetrySpan4.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); } - }]); -}(); -_defineProperty(Queue, "RETRIABLE_ERRORS", ['ECONNRESET', 'ENOTFOUND', 'ESOCKETTIMEDOUT', 'ETIMEDOUT', 'ECONNREFUSED', 'EHOSTUNREACH', 'EPIPE', 'EAI_AGAIN']); -/* harmony default export */ var queue = (Queue); -;// ./src/notifier.js - - -/* - * Notifier - the internal object responsible for delegating between the client exposed API, the - * chain of transforms necessary to turn an item into something that can be sent to Rollbar, and the - * queue which handles the communcation with the Rollbar API servers. - * - * @param queue - an object that conforms to the interface: addItem(item, callback) - * @param options - an object representing the options to be set for this notifier, this should have - * any defaults already set by the caller - */ -function Notifier(queue, options) { - this.queue = queue; - this.options = options; - this.transforms = []; - this.diagnostic = {}; -} - -/* - * configure - updates the options for this notifier with the passed in object - * - * @param options - an object which gets merged with the current options set on this notifier - * @returns this - */ -Notifier.prototype.configure = function (options) { - this.queue && this.queue.configure(options); - var oldOptions = this.options; - this.options = src_merge(oldOptions, options); - return this; -}; - -/* - * addTransform - adds a transform onto the end of the queue of transforms for this notifier - * - * @param transform - a function which takes three arguments: - * * item: An Object representing the data to eventually be sent to Rollbar - * * options: The current value of the options for this notifier - * * callback: function(err: (Null|Error), item: (Null|Object)) the transform must call this - * callback with a null value for error if it wants the processing chain to continue, otherwise - * with an error to terminate the processing. The item should be the updated item after this - * transform is finished modifying it. - */ -Notifier.prototype.addTransform = function (transform) { - if (isFunction(transform)) { - this.transforms.push(transform); - } - return this; -}; - -/* - * log - the internal log function which applies the configured transforms and then pushes onto the - * queue to be sent to the backend. - * - * @param item - An object with the following structure: - * message [String] - An optional string to be sent to rollbar - * error [Error] - An optional error - * - * @param callback - A function of type function(err, resp) which will be called with exactly one - * null argument and one non-null argument. The callback will be called once, either during the - * transform stage if an error occurs inside a transform, or in response to the communication with - * the backend. The second argument will be the response from the backend in case of success. - */ -Notifier.prototype.log = function (item, callback) { - if (!callback || !isFunction(callback)) { - callback = function callback() {}; - } - if (!this.options.enabled) { - return callback(new Error('Rollbar is not enabled')); - } - this.queue.addPendingItem(item); - var originalError = item.err; - this._applyTransforms(item, function (err, i) { - if (err) { - this.queue.removePendingItem(item); - return callback(err, null); - } - this.queue.addItem(i, callback, originalError, item); - }.bind(this)); -}; - -/* Internal */ - -/* - * _applyTransforms - Applies the transforms that have been added to this notifier sequentially. See - * `addTransform` for more information. - * - * @param item - An item to be transformed - * @param callback - A function of type function(err, item) which will be called with a non-null - * error and a null item in the case of a transform failure, or a null error and non-null item after - * all transforms have been applied. - */ -Notifier.prototype._applyTransforms = function (item, callback) { - var transformIndex = -1; - var transformsLength = this.transforms.length; - var transforms = this.transforms; - var options = this.options; - var _cb = function cb(err, i) { - if (err) { - callback(err, null); - return; - } - transformIndex++; - if (transformIndex === transformsLength) { - callback(null, i); - return; - } - transforms[transformIndex](i, options, _cb); - }; - _cb(null, item); -}; -/* harmony default export */ var notifier = (Notifier); -;// ./src/rollbar.js - - - - - -/* - * Rollbar - the interface to Rollbar - * - * @param options - * @param api - * @param logger - */ -function Rollbar(options, api, logger, telemeter, tracing, replay, platform) { - this.options = src_merge(options); - this.logger = logger; - Rollbar.rateLimiter.configureGlobal(this.options); - Rollbar.rateLimiter.setPlatformOptions(platform, this.options); - this.api = api; - this.queue = new queue(Rollbar.rateLimiter, api, logger, this.options, replay); - this.tracing = tracing; - - // Legacy OpenTracing support - // This must happen before the Notifier is created - var tracer = this.options.tracer || null; - if (validateTracer(tracer)) { - this.tracer = tracer; - // set to a string for api response serialization - this.options.tracer = 'opentracing-tracer-enabled'; - this.options._configuredOptions.tracer = 'opentracing-tracer-enabled'; - } else { - this.tracer = null; - } - this.notifier = new notifier(this.queue, this.options); - this.telemeter = telemeter; - setStackTraceLimit(options); - this.lastError = null; - this.lastErrorHash = 'none'; -} -var defaultOptions = { - maxItems: 0, - itemsPerMinute: 60 -}; -Rollbar.rateLimiter = new rateLimiter(defaultOptions); -Rollbar.prototype.global = function (options) { - Rollbar.rateLimiter.configureGlobal(options); - return this; -}; -Rollbar.prototype.configure = function (options, payloadData) { - var oldOptions = this.options; - var payload = {}; - if (payloadData) { - payload = { - payload: payloadData - }; - } - this.options = src_merge(oldOptions, options, payload); - - // Legacy OpenTracing support - // This must happen before the Notifier is configured - var tracer = this.options.tracer || null; - if (validateTracer(tracer)) { - this.tracer = tracer; - // set to a string for api response serialization - this.options.tracer = 'opentracing-tracer-enabled'; - this.options._configuredOptions.tracer = 'opentracing-tracer-enabled'; - } else { - this.tracer = null; - } - this.notifier && this.notifier.configure(this.options); - this.telemeter && this.telemeter.configure(this.options); - setStackTraceLimit(options); - this.global(this.options); - if (validateTracer(options.tracer)) { - this.tracer = options.tracer; - } - return this; -}; -Rollbar.prototype.log = function (item) { - var level = this._defaultLogLevel(); - return this._log(level, item); -}; -Rollbar.prototype.debug = function (item) { - this._log('debug', item); -}; -Rollbar.prototype.info = function (item) { - this._log('info', item); -}; -Rollbar.prototype.warn = function (item) { - this._log('warning', item); -}; -Rollbar.prototype.warning = function (item) { - this._log('warning', item); -}; -Rollbar.prototype.error = function (item) { - this._log('error', item); -}; -Rollbar.prototype.critical = function (item) { - this._log('critical', item); -}; -Rollbar.prototype.wait = function (callback) { - this.queue.wait(callback); -}; -Rollbar.prototype.captureEvent = function (type, metadata, level) { - return this.telemeter && this.telemeter.captureEvent(type, metadata, level); -}; -Rollbar.prototype.captureDomContentLoaded = function (ts) { - return this.telemeter && this.telemeter.captureDomContentLoaded(ts); -}; -Rollbar.prototype.captureLoad = function (ts) { - return this.telemeter && this.telemeter.captureLoad(ts); -}; -Rollbar.prototype.buildJsonPayload = function (item) { - return this.api.buildJsonPayload(item); -}; -Rollbar.prototype.sendJsonPayload = function (jsonPayload) { - this.api.postJsonPayload(jsonPayload); -}; - -/* Internal */ - -Rollbar.prototype._log = function (defaultLevel, item) { - var callback; - if (item.callback) { - callback = item.callback; - delete item.callback; - } - if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) { - if (callback) { - var error = new Error('ignored identical item'); - error.item = item; - callback(error); + }, { + key: "captureClick", + value: function captureClick(_ref3) { + var _this$telemetrySpan5; + var type = _ref3.type, + isSynthetic = _ref3.isSynthetic, + element = _ref3.element, + timestamp = _ref3.timestamp; + var name = 'rollbar-click-event'; + var metadata = { + type: name, + subtype: type, + element: element + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic, + element: element, + endTimeUnixNano: fromMillis(timestamp) + }; + var event = this._getRepeatedEvent(name, otelAttributes); + if (event) { + return this._updateRepeatedEvent(event, otelAttributes, timestamp); + } + (_this$telemetrySpan5 = this.telemetrySpan) === null || _this$telemetrySpan5 === void 0 || _this$telemetrySpan5.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); } - return; - } - try { - item.level = item.level || defaultLevel; - this._addTracingAttributes(item); - - // Legacy OpenTracing support - this._addTracingInfo(item); - var telemeter = this.telemeter; - if (telemeter) { - telemeter._captureRollbarItem(item); - item.telemetryEvents = telemeter.copyEvents() || []; + }, { + key: "_getRepeatedEvent", + value: function _getRepeatedEvent(name, attributes) { + var lastEvent = this._lastEvent(this.queue); + if (lastEvent && lastEvent.body.type === name && lastEvent.otelAttributes.target === attributes.target) { + return lastEvent; + } } - this.notifier.log(item, callback); - } catch (e) { - if (callback) { - callback(e); + }, { + key: "_updateRepeatedEvent", + value: function _updateRepeatedEvent(event, attributes, timestamp) { + var duration = Math.max(timestamp - event.timestamp_ms, 1); + event.body.value = attributes.value; + event.otelAttributes.value = attributes.value; + event.otelAttributes.height = attributes.height; + event.otelAttributes.width = attributes.width; + event.otelAttributes.textZoomRatio = attributes.textZoomRatio; + event.otelAttributes['endTimeUnixNano'] = fromMillis(timestamp); + event.otelAttributes['durationUnixNano'] = fromMillis(duration); + event.otelAttributes.count = (event.otelAttributes.count || 1) + 1; + event.otelAttributes.rate = event.otelAttributes.count / (duration / 1000); } - this.logger.error(e); - } -}; -Rollbar.prototype._addTracingAttributes = function (item) { - var _this$tracing, _this$tracing2; - var span = (_this$tracing = this.tracing) === null || _this$tracing === void 0 ? void 0 : _this$tracing.getSpan(); - var attributes = [{ - key: 'session_id', - value: (_this$tracing2 = this.tracing) === null || _this$tracing2 === void 0 ? void 0 : _this$tracing2.sessionId }, { - key: 'span_id', - value: span === null || span === void 0 ? void 0 : span.spanId + key: "_lastEvent", + value: function _lastEvent(list) { + return list.length > 0 ? list[list.length - 1] : null; + } }, { - key: 'trace_id', - value: span === null || span === void 0 ? void 0 : span.traceId - }]; - addItemAttributes(item.data, attributes); - span === null || span === void 0 || span.addEvent('rollbar.occurrence', [{ - key: 'rollbar.occurrence.uuid', - value: item.uuid - }]); -}; -Rollbar.prototype._defaultLogLevel = function () { - return this.options.logLevel || 'debug'; -}; -Rollbar.prototype._sameAsLastError = function (item) { - if (!item._isUncaught) { - return false; - } - var itemHash = generateItemHash(item); - if (this.lastErrorHash === itemHash) { - return true; - } - this.lastError = item.err; - this.lastErrorHash = itemHash; - return false; -}; -Rollbar.prototype._addTracingInfo = function (item) { - // Tracer validation occurs in the constructor - // or in the Rollbar.prototype.configure methods - if (this.tracer) { - // add rollbar occurrence uuid to span - var span = this.tracer.scope().active(); - if (validateSpan(span)) { - span.setTag('rollbar.error_uuid', item.uuid); - span.setTag('rollbar.has_error', true); - span.setTag('error', true); - span.setTag('rollbar.item_url', "https://rollbar.com/item/uuid/?uuid=".concat(item.uuid)); - span.setTag('rollbar.occurrence_url', "https://rollbar.com/occurrence/uuid/?uuid=".concat(item.uuid)); + key: "captureFocus", + value: function captureFocus(_ref4) { + var _this$telemetrySpan6; + var type = _ref4.type, + isSynthetic = _ref4.isSynthetic, + element = _ref4.element, + timestamp = _ref4.timestamp; + var name = 'rollbar-focus-event'; + var metadata = { + type: name, + subtype: type, + element: element + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic, + element: element + }; + (_this$telemetrySpan6 = this.telemetrySpan) === null || _this$telemetrySpan6 === void 0 || _this$telemetrySpan6.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + } + }, { + key: "captureResize", + value: function captureResize(_ref5) { + var _this$telemetrySpan7; + var type = _ref5.type, + isSynthetic = _ref5.isSynthetic, + width = _ref5.width, + height = _ref5.height, + textZoomRatio = _ref5.textZoomRatio, + timestamp = _ref5.timestamp; + var name = 'rollbar-resize-event'; + var metadata = { + type: name, + subtype: type, + width: width, + height: height, + textZoomRatio: textZoomRatio + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic, + width: width, + height: height, + textZoomRatio: textZoomRatio + }; + var event = this._getRepeatedEvent(name, otelAttributes); + if (event) { + return this._updateRepeatedEvent(event, otelAttributes, timestamp); + } + (_this$telemetrySpan7 = this.telemetrySpan) === null || _this$telemetrySpan7 === void 0 || _this$telemetrySpan7.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + } + }, { + key: "captureDragDrop", + value: function captureDragDrop(_ref6) { + var _this$telemetrySpan8; + var type = _ref6.type, + isSynthetic = _ref6.isSynthetic, + element = _ref6.element, + dropEffect = _ref6.dropEffect, + effectAllowed = _ref6.effectAllowed, + kinds = _ref6.kinds, + mediaTypes = _ref6.mediaTypes, + timestamp = _ref6.timestamp; + var name = 'rollbar-dragdrop-event'; + var metadata = { + type: name, + subtype: type, + isSynthetic: isSynthetic + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic + }; + if (type === 'dragstart') { + metadata = _objectSpread(_objectSpread({}, metadata), {}, { + element: element, + dropEffect: dropEffect, + effectAllowed: effectAllowed + }); + otelAttributes = _objectSpread(_objectSpread({}, otelAttributes), {}, { + element: element, + dropEffect: dropEffect, + effectAllowed: effectAllowed + }); + } + if (type === 'drop') { + metadata = _objectSpread(_objectSpread({}, metadata), {}, { + element: element, + dropEffect: dropEffect, + effectAllowed: effectAllowed, + kinds: kinds, + mediaTypes: mediaTypes + }); + otelAttributes = _objectSpread(_objectSpread({}, otelAttributes), {}, { + element: element, + dropEffect: dropEffect, + effectAllowed: effectAllowed, + kinds: kinds, + mediaTypes: mediaTypes + }); + } + (_this$telemetrySpan8 = this.telemetrySpan) === null || _this$telemetrySpan8 === void 0 || _this$telemetrySpan8.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + } + }, { + key: "captureNavigation", + value: function captureNavigation(from, to, rollbarUUID, timestamp) { + var _this$telemetrySpan9; + (_this$telemetrySpan9 = this.telemetrySpan) === null || _this$telemetrySpan9 === void 0 || _this$telemetrySpan9.addEvent('rollbar-navigation-event', { + 'previous.url.full': from, + 'url.full': to + }, fromMillis(timestamp)); + return this.capture('navigation', { + from: from, + to: to + }, 'info', rollbarUUID, timestamp); + } + }, { + key: "captureDomContentLoaded", + value: function captureDomContentLoaded(ts) { + return this.capture('navigation', { + subtype: 'DOMContentLoaded' + }, 'info', undefined, ts && ts.getTime()); + /** + * If we decide to make this a dom event instead, then use the line below: + return this.capture('dom', {subtype: 'DOMContentLoaded'}, 'info', undefined, ts && ts.getTime()); + */ + } + }, { + key: "captureLoad", + value: function captureLoad(ts) { + return this.capture('navigation', { + subtype: 'load' + }, 'info', undefined, ts && ts.getTime()); + /** + * If we decide to make this a dom event instead, then use the line below: + return this.capture('dom', {subtype: 'load'}, 'info', undefined, ts && ts.getTime()); + */ + } + }, { + key: "captureConnectivityChange", + value: function captureConnectivityChange(_ref7) { + var _this$telemetrySpan0; + var type = _ref7.type, + isSynthetic = _ref7.isSynthetic, + timestamp = _ref7.timestamp; + var name = 'rollbar-connectivity-event'; + var metadata = { + type: name, + subtype: type + }; + var otelAttributes = { + type: type, + isSynthetic: isSynthetic + }; + (_this$telemetrySpan0 = this.telemetrySpan) === null || _this$telemetrySpan0 === void 0 || _this$telemetrySpan0.addEvent(name, otelAttributes, fromMillis(timestamp)); + return this.capture('connectivity', metadata, 'info', null, timestamp, otelAttributes); + } - // add span ID & trace ID to occurrence - var opentracingSpanId = span.context().toSpanId(); - var opentracingTraceId = span.context().toTraceId(); + // Only intended to be used internally by the notifier + }, { + key: "_captureRollbarItem", + value: function _captureRollbarItem(item) { + if (!this.options.includeItemsInTelemetry) { + return; + } + if (item.err) { + return this.captureError(item.err, item.level, item.uuid, item.timestamp); + } + if (item.message) { + return this.captureLog(item.message, item.level, item.uuid, item.timestamp); + } if (item.custom) { - item.custom.opentracing_span_id = opentracingSpanId; - item.custom.opentracing_trace_id = opentracingTraceId; - } else { - item.custom = { - opentracing_span_id: opentracingSpanId, - opentracing_trace_id: opentracingTraceId - }; + return this.capture('log', item.custom, item.level, item.uuid, item.timestamp); + } + } + }, { + key: "push", + value: function push(e) { + this.queue.push(e); + if (this.queue.length > this.maxQueueSize) { + this.queue.shift(); } } + }]); +}(); +function getLevel(type, level) { + if (level) { + return level; } -}; -function generateItemHash(item) { - var message = item.message || ''; - var stack = (item.err || {}).stack || String(item.err); - return message + '::' + stack; + var defaultLevel = { + error: 'error', + manual: 'info' + }; + return defaultLevel[type] || 'info'; } - -// Node.js, Chrome, Safari, and some other browsers support this property -// which globally sets the number of stack frames returned in an Error object. -// If a browser can't use it, no harm done. -function setStackTraceLimit(options) { - if (options.stackTraceLimit) { - Error.stackTraceLimit = options.stackTraceLimit; +/* harmony default export */ var telemetry = (Telemeter); +;// ./src/tracing/context.js +function context_typeof(o) { "@babel/helpers - typeof"; return context_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, context_typeof(o); } +function context_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function context_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, context_toPropertyKey(o.key), o); } } +function context_createClass(e, r, t) { return r && context_defineProperties(e.prototype, r), t && context_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function context_toPropertyKey(t) { var i = context_toPrimitive(t, "string"); return "symbol" == context_typeof(i) ? i : i + ""; } +function context_toPrimitive(t, r) { if ("object" != context_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != context_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +var Context = /*#__PURE__*/function () { + function Context(parentContext) { + context_classCallCheck(this, Context); + this._currentContext = parentContext ? new Map(parentContext) : new Map(); } -} - -/** - * Validate the Tracer object provided to the Client - * is valid for our Opentracing use case. - * @param {opentracer.Tracer} tracer - */ -function validateTracer(tracer) { - if (!tracer) { - return false; - } - if (!tracer.scope || typeof tracer.scope !== 'function') { - return false; - } - var scope = tracer.scope(); - if (!scope || !scope.active || typeof scope.active !== 'function') { - return false; - } - return true; -} + return context_createClass(Context, [{ + key: "getValue", + value: function getValue(key) { + return this._currentContext.get(key); + } + }, { + key: "setValue", + value: function setValue(key, value) { + var context = new Context(this._currentContext); + context._currentContext.set(key, value); + return context; + } + }, { + key: "deleteValue", + value: function deleteValue(key) { + var context = new Context(self._currentContext); + context._currentContext.delete(key); + return context; + } + }]); +}(); +var ROOT_CONTEXT = new Context(); +;// ./src/tracing/contextManager.js +function contextManager_typeof(o) { "@babel/helpers - typeof"; return contextManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, contextManager_typeof(o); } +function contextManager_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function contextManager_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, contextManager_toPropertyKey(o.key), o); } } +function contextManager_createClass(e, r, t) { return r && contextManager_defineProperties(e.prototype, r), t && contextManager_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function contextManager_toPropertyKey(t) { var i = contextManager_toPrimitive(t, "string"); return "symbol" == contextManager_typeof(i) ? i : i + ""; } +function contextManager_toPrimitive(t, r) { if ("object" != contextManager_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != contextManager_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -/** - * Validate the Span object provided - * @param {opentracer.Span} span - */ -function validateSpan(span) { - if (!span || !span.context || typeof span.context !== 'function') { - return false; - } - var spanContext = span.context(); - if (!spanContext || !spanContext.toSpanId || !spanContext.toTraceId || typeof spanContext.toSpanId !== 'function' || typeof spanContext.toTraceId !== 'function') { - return false; +var ContextManager = /*#__PURE__*/function () { + function ContextManager() { + contextManager_classCallCheck(this, ContextManager); + this.currentContext = ROOT_CONTEXT; } - return true; -} -/* harmony default export */ var src_rollbar = (Rollbar); -;// ./src/apiUtility.js - -function buildPayload(data) { - if (!isType(data.context, 'string')) { - var contextResult = stringify(data.context); - if (contextResult.error) { - data.context = "Error: could not serialize 'context'"; - } else { - data.context = contextResult.value || ''; + return contextManager_createClass(ContextManager, [{ + key: "active", + value: function active() { + return this.currentContext; } - if (data.context.length > 255) { - data.context = data.context.substr(0, 255); + }, { + key: "enterContext", + value: function enterContext(context) { + var previousContext = this.currentContext; + this.currentContext = context || ROOT_CONTEXT; + return previousContext; } - } - return { - data: data - }; -} -function getTransportFromOptions(options, defaults, url) { - var hostname = defaults.hostname; - var protocol = defaults.protocol; - var port = defaults.port; - var path = defaults.path; - var search = defaults.search; - var timeout = options.timeout; - var transport = detectTransport(options); - var proxy = options.proxy; - if (options.endpoint) { - var opts = url.parse(options.endpoint); - hostname = opts.hostname; - protocol = opts.protocol; - port = opts.port; - path = opts.pathname; - search = opts.search; - } - return { - timeout: timeout, - hostname: hostname, - protocol: protocol, - port: port, - path: path, - search: search, - proxy: proxy, - transport: transport - }; -} -function detectTransport(options) { - var gWindow = typeof window != 'undefined' && window || typeof self != 'undefined' && self; - var transport = options.defaultTransport || 'xhr'; - if (typeof gWindow.fetch === 'undefined') transport = 'xhr'; - if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch'; - return transport; -} -function apiUtility_transportOptions(transport, method) { - var protocol = transport.protocol || 'https:'; - var port = transport.port || (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined); - var hostname = transport.hostname; - var path = transport.path; - var timeout = transport.timeout; - var transportAPI = transport.transport; - if (transport.search) { - path = path + transport.search; - } - if (transport.proxy) { - path = protocol + '//' + hostname + path; - hostname = transport.proxy.host || transport.proxy.hostname; - port = transport.proxy.port; - protocol = transport.proxy.protocol || protocol; - } - return { - timeout: timeout, - protocol: protocol, - hostname: hostname, - path: path, - port: port, - method: method, - transport: transportAPI - }; -} -function appendPathToPath(base, path) { - var baseTrailingSlash = /\/$/.test(base); - var pathBeginningSlash = /^\//.test(path); - if (baseTrailingSlash && pathBeginningSlash) { - path = path.substring(1); - } else if (!baseTrailingSlash && !pathBeginningSlash) { - path = '/' + path; - } - return base + path; + }, { + key: "exitContext", + value: function exitContext(context) { + this.currentContext = context; + return this.currentContext; + } + }, { + key: "with", + value: function _with(context, fn, thisArg) { + var previousContext = this.enterContext(context); + try { + for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { + args[_key - 3] = arguments[_key]; + } + return fn.call.apply(fn, [thisArg].concat(args)); + } finally { + this.exitContext(previousContext); + } + } + }]); +}(); +function createContextKey(key) { + // Use Symbol for OpenTelemetry compatibility. + return Symbol.for(key); } - -;// ./src/api.js -function api_typeof(o) { "@babel/helpers - typeof"; return api_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, api_typeof(o); } -function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { api_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function api_defineProperty(e, r, t) { return (r = api_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function api_toPropertyKey(t) { var i = api_toPrimitive(t, "string"); return "symbol" == api_typeof(i) ? i : i + ""; } -function api_toPrimitive(t, r) { if ("object" != api_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != api_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == api_typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(api_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } -function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } -function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } - - -var api_defaultOptions = { - hostname: 'api.rollbar.com', - path: '/api/1/item/', - search: null, - version: '1', - protocol: 'https:', - port: 443 -}; -var OTLPDefaultOptions = { - hostname: 'api.rollbar.com', - path: '/api/1/session/', - search: null, - version: '1', - protocol: 'https:', - port: 443 -}; +;// ./src/tracing/hrtime.js +/** + * @module hrtime + * + * @description Methods for handling OpenTelemetry hrtime. + */ /** - * Api is an object that encapsulates methods of communicating with - * the Rollbar API. It is a standard interface with some parts implemented - * differently for server or browser contexts. It is an object that should - * be instantiated when used so it can contain non-global options that may - * be different for another instance of RollbarApi. + * Convert a duration in milliseconds to an OpenTelemetry hrtime tuple. * - * @param options { - * accessToken: the accessToken to use for posting items to rollbar - * endpoint: an alternative endpoint to send errors to - * must be a valid, fully qualified URL. - * The default is: https://api.rollbar.com/api/1/item - * proxy: if you wish to proxy requests provide an object - * with the following keys: - * host or hostname (required): foo.example.com - * port (optional): 123 - * protocol (optional): https - * } + * @param {number} millis - The duration in milliseconds. + * @returns {[number, number]} An array where the first element is seconds + * and the second is nanoseconds. */ -function Api(options, transport, urllib, truncation) { - this.options = options; - this.transport = transport; - this.url = urllib; - this.truncation = truncation; - this.accessToken = options.accessToken; - this.transportOptions = _getTransport(options, urllib); - this.OTLPTransportOptions = _getOTLPTransport(options, urllib); +function hrtime_fromMillis(millis) { + return [Math.trunc(millis / 1000), Math.round(millis % 1000 * 1e6)]; } /** - * Wraps transport.post in a Promise to support async/await + * Convert an OpenTelemetry hrtime tuple back to a duration in milliseconds. * - * @param {Object} options - Options for the API request - * @param {string} options.accessToken - The access token for authentication - * @param {Object} options.transportOptions - Options for the transport - * @param {Object} options.payload - The data payload to send - * @returns {Promise} A promise that resolves with the response or rejects with an error - * @private + * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds]. + * @returns {number} The total duration in milliseconds. */ -Api.prototype._postPromise = function (_ref) { - var accessToken = _ref.accessToken, - options = _ref.options, - payload = _ref.payload, - headers = _ref.headers; - var self = this; - return new Promise(function (resolve, reject) { - self.transport.post({ - accessToken: accessToken, - options: options, - payload: payload, - headers: headers, - callback: function callback(err, resp) { - return err ? reject(err) : resolve(resp); - } - }); - }); -}; +function toMillis(hrtime) { + return hrtime[0] * 1e3 + Math.round(hrtime[1] / 1e6); +} /** + * Convert an OpenTelemetry hrtime tuple back to a duration in nanoseconds. * - * @param data - * @param callback + * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds]. + * @returns {number} The total duration in nanoseconds. */ -Api.prototype.postItem = function (data, callback) { - var options = apiUtility_transportOptions(this.transportOptions, 'POST'); - var payload = buildPayload(data); - var self = this; - - // ensure the network request is scheduled after the current tick. - setTimeout(function () { - self.transport.post({ - accessToken: self.accessToken, - options: options, - payload: payload, - callback: callback - }); - }, 0); -}; +function toNanos(hrtime) { + return hrtime[0] * 1e9 + hrtime[1]; +} /** - * Posts spans to the Rollbar API using the session endpoint + * Adds two OpenTelemetry hrtime tuples. + * + * @param {[number, number]} a - The first hrtime tuple [s, ns]. + * @param {[number, number]} b - The second hrtime tuple [s, ns]. + * @returns {[number, number]} Summed hrtime tuple, normalized. * - * @param {Array} payload - The spans to send - * @returns {Promise} A promise that resolves with the API response */ -Api.prototype.postSpans = /*#__PURE__*/function () { - var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(payload) { - var headers, - options, - _args = arguments; - return _regeneratorRuntime().wrap(function _callee$(_context) { - while (1) switch (_context.prev = _context.next) { - case 0: - headers = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; - options = apiUtility_transportOptions(this.OTLPTransportOptions, 'POST'); - _context.next = 4; - return this._postPromise({ - accessToken: this.accessToken, - options: options, - payload: payload, - headers: headers - }); - case 4: - return _context.abrupt("return", _context.sent); - case 5: - case "end": - return _context.stop(); - } - }, _callee, this); - })); - return function (_x) { - return _ref2.apply(this, arguments); - }; -}(); +function add(a, b) { + return [a[0] + b[0] + Math.trunc((a[1] + b[1]) / 1e9), (a[1] + b[1]) % 1e9]; +} /** + * Get the current high-resolution time as an OpenTelemetry hrtime tuple. * - * @param data - * @param callback + * @param {boolean} usePerformance=false - If true, uses the Performance API (timeOrigin + now()). + * + * @returns {[number, number]} The current hrtime tuple [s, ns]. */ -Api.prototype.buildJsonPayload = function (data, callback) { - var payload = buildPayload(data); - var stringifyResult; - if (this.truncation) { - stringifyResult = this.truncation.truncate(payload); - } else { - stringifyResult = stringify(payload); - } - if (stringifyResult.error) { - if (callback) { - callback(stringifyResult.error); - } - return null; +function hrtime_now() { + var usePerformance = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + if (usePerformance) { + return add(hrtime_fromMillis(performance.timeOrigin), hrtime_fromMillis(performance.now())); } - return stringifyResult.value; -}; + return hrtime_fromMillis(Date.now()); +} /** + * Check if a value is a valid OpenTelemetry hrtime tuple. + * + * An hrtime tuple is an Array of exactly two numbers: + * [seconds, nanoseconds] + * + * @param {*} value – anything to test + * @returns {boolean} true if `value` is a [number, number] array of length 2 * - * @param jsonPayload - * @param callback + * @example + * isHrTime([ 1, 500 ]); // true + * isHrTime([ 0, 1e9 ]); // true + * isHrTime([ '1', 500 ]); // false + * isHrTime({ 0: 1, 1: 500 }); // false */ -Api.prototype.postJsonPayload = function (jsonPayload, callback) { - var transportOptions = apiUtility_transportOptions(this.transportOptions, 'POST'); - this.transport.postJsonPayload(this.accessToken, transportOptions, jsonPayload, callback); -}; -Api.prototype.configure = function (options) { - var oldOptions = this.oldOptions; - this.options = src_merge(oldOptions, options); - this.transportOptions = _getTransport(this.options, this.url); - this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url); - if (this.options.accessToken !== undefined) { - this.accessToken = this.options.accessToken; - } - return this; -}; -function _getTransport(options, url) { - return getTransportFromOptions(options, api_defaultOptions, url); -} -function _getOTLPTransport(options, url) { - var _options$tracing; - options = _objectSpread(_objectSpread({}, options), {}, { - endpoint: (_options$tracing = options.tracing) === null || _options$tracing === void 0 ? void 0 : _options$tracing.endpoint - }); - return getTransportFromOptions(options, OTLPDefaultOptions, url); +function isHrTime(value) { + return Array.isArray(value) && value.length === 2 && typeof value[0] === 'number' && typeof value[1] === 'number'; } -/* harmony default export */ var src_api = (Api); -;// ./src/logger.js -var _log = function log() {}; -var levels = { - debug: 0, - info: 1, - warn: 2, - error: 3, - disable: 4 -}; -var logger_logger = { - error: function error() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - return _log('error', args); - }, - warn: function warn() { - for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - return _log('warn', args); - }, - info: function info() { - for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } - return _log('info', args); - }, - debug: function debug() { - for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; - } - return _log('debug', args); - }, - log: function log() { - for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { - args[_key5] = arguments[_key5]; - } - return _log('info', args); - }, - init: function init(_ref) { - var logLevel = _ref.logLevel; - _log = function _log(level, args) { - if (levels[level] < levels[logLevel]) return; - args.unshift('Rollbar:'); - console[level].apply(console, args); - }; - } -}; -/* harmony default export */ var src_logger = (logger_logger); -;// ./src/browser/globalSetup.js -function captureUncaughtExceptions(window, handler, shim) { - if (!window) { - return; + +/** + * Methods for handling hrtime. OpenTelemetry uses the [seconds, nanoseconds] + * format for hrtime in the `ReadableSpan` interface. + * + * @example + * import hrtime from '@tracing/hrtime.js'; + * + * hrtime.fromMillis(1000); + * hrtime.toMillis([0, 1000]); + * hrtime.add([0, 0], [0, 1000]); + * hrtime.now(); + * hrtime.isHrTime([0, 1000]); + */ +/* harmony default export */ var hrtime = ({ + fromMillis: hrtime_fromMillis, + toMillis: toMillis, + toNanos: toNanos, + add: add, + now: hrtime_now, + isHrTime: isHrTime +}); +;// ./src/tracing/exporter.js +function exporter_typeof(o) { "@babel/helpers - typeof"; return exporter_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, exporter_typeof(o); } +function exporter_slicedToArray(r, e) { return exporter_arrayWithHoles(r) || exporter_iterableToArrayLimit(r, e) || exporter_unsupportedIterableToArray(r, e) || exporter_nonIterableRest(); } +function exporter_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function exporter_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function exporter_arrayWithHoles(r) { if (Array.isArray(r)) return r; } +function exporter_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = exporter_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || exporter_unsupportedIterableToArray(r) || _nonIterableSpread(); } +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function exporter_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return exporter_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? exporter_arrayLikeToArray(r, a) : void 0; } } +function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } +function _arrayWithoutHoles(r) { if (Array.isArray(r)) return exporter_arrayLikeToArray(r); } +function exporter_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function exporter_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function exporter_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, exporter_toPropertyKey(o.key), o); } } +function exporter_createClass(e, r, t) { return r && exporter_defineProperties(e.prototype, r), t && exporter_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function exporter_toPropertyKey(t) { var i = exporter_toPrimitive(t, "string"); return "symbol" == exporter_typeof(i) ? i : i + ""; } +function exporter_toPrimitive(t, r) { if ("object" != exporter_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != exporter_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + + +/** + * SpanExporter is responsible for exporting ReadableSpan objects + * and transforming them into the OTLP-compatible format. + */ +var SpanExporter = /*#__PURE__*/function () { + function SpanExporter(api) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + exporter_classCallCheck(this, SpanExporter); + this.api = api; + this.options = options; } - var oldOnError; - if (typeof handler._rollbarOldOnError === 'function') { - oldOnError = handler._rollbarOldOnError; - } else if (window.onerror) { - oldOnError = window.onerror; - while (oldOnError._rollbarOldOnError) { - oldOnError = oldOnError._rollbarOldOnError; + + /** + * Export spans to the span export queue + * + * @param {Array} spans - Array of ReadableSpan objects to export + * @param {Function} _resultCallback - Optional callback (not used) + */ + return exporter_createClass(SpanExporter, [{ + key: "export", + value: function _export(spans, _resultCallback) { + spanExportQueue.push.apply(spanExportQueue, _toConsumableArray(spans)); } - handler._rollbarOldOnError = oldOnError; - } - handler.handleAnonymousErrors(); - var fn = function fn() { - var args = Array.prototype.slice.call(arguments, 0); - _rollbarWindowOnError(window, handler, oldOnError, args); - }; - if (shim) { - fn._rollbarOldOnError = oldOnError; - } - window.onerror = fn; -} -function _rollbarWindowOnError(window, r, old, args) { - if (window._rollbarWrappedError) { - if (!args[4]) { - args[4] = window._rollbarWrappedError; + + /** + * Transforms an array of ReadableSpan objects into the OTLP format payload + * compatible with the Rollbar API. This follows the OpenTelemetry protocol + * specification for traces. + * + * @returns {Object} OTLP format payload for API transmission + */ + }, { + key: "toPayload", + value: function toPayload() { + var _this = this; + var spans = spanExportQueue.slice(); + spanExportQueue.length = 0; + if (!spans || !spans.length) { + return { + resourceSpans: [] + }; + } + var resource = spans[0] && spans[0].resource || {}; + var scopeMap = new Map(); + var _iterator = exporter_createForOfIteratorHelper(spans), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var span = _step.value; + var scopeKey = span.instrumentationScope ? "".concat(span.instrumentationScope.name, ":").concat(span.instrumentationScope.version) : 'default:1.0.0'; + if (!scopeMap.has(scopeKey)) { + scopeMap.set(scopeKey, { + scope: span.instrumentationScope || { + name: 'default', + version: '1.0.0', + attributes: [] + }, + spans: [] + }); + } + scopeMap.get(scopeKey).spans.push(this._transformSpan(span)); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return { + resourceSpans: [{ + resource: this._transformResource(resource), + scopeSpans: Array.from(scopeMap.values()).map(function (scopeData) { + return { + scope: _this._transformInstrumentationScope(scopeData.scope), + spans: scopeData.spans + }; + }) + }] + }; } - if (!args[5]) { - args[5] = window._rollbarWrappedError._rollbarContext; + + /** + * Sends the given payload to the Rollbar API. + * + * @param {String} payload - Serialized OTLP format payload + * @param {Object} headers - Optional request headers + * @returns {Promise} Promise that resolves when the request completes + */ + }, { + key: "post", + value: function post(payload) { + var headers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return this.api.postSpans(payload, headers); } - window._rollbarWrappedError = null; - } - var ret = r.handleUncaughtException.apply(r, args); - if (old) { - old.apply(window, args); - } - // Let other chained onerror handlers above run before setting this. - // If an error is thrown and caught within a chained onerror handler, - // Error.prepareStackTrace() will see that one before the one we want. - if (ret === 'anonymous') { - r.anonymousErrorsPending += 1; // See Rollbar.prototype.handleAnonymousErrors() - } -} -function captureUnhandledRejections(window, handler, shim) { - if (!window) { - return; - } - if (typeof window._rollbarURH === 'function' && window._rollbarURH.belongsToShim) { - window.removeEventListener('unhandledrejection', window._rollbarURH); - } - var rejectionHandler = function rejectionHandler(evt) { - var reason, promise, detail; - try { - reason = evt.reason; - } catch (e) { - reason = undefined; - } - try { - promise = evt.promise; - } catch (e) { - promise = '[unhandledrejection] error getting `promise` from event'; + /** + * Transforms a ReadableSpan into the OTLP Span format + * + * @private + * @param {Object} span - ReadableSpan object to transform + * @returns {Object} OTLP Span format + */ + }, { + key: "_transformSpan", + value: function _transformSpan(span) { + var _this2 = this; + var transformAttributes = function transformAttributes(attributes) { + return Object.entries(attributes || {}).map(function (_ref) { + var _ref2 = exporter_slicedToArray(_ref, 2), + key = _ref2[0], + value = _ref2[1]; + return { + key: key, + value: _this2._transformAnyValue(value) + }; + }); + }; + var transformEvents = function transformEvents(events) { + return (events || []).map(function (event) { + return { + timeUnixNano: hrtime.toNanos(event.time), + name: event.name, + attributes: transformAttributes(event.attributes) + }; + }); + }; + return { + traceId: span.spanContext.traceId, + spanId: span.spanContext.spanId, + parentSpanId: span.parentSpanId || '', + name: span.name, + kind: span.kind || 1, + // INTERNAL by default + startTimeUnixNano: hrtime.toNanos(span.startTime), + endTimeUnixNano: hrtime.toNanos(span.endTime), + attributes: transformAttributes(span.attributes), + events: transformEvents(span.events) + }; } - try { - detail = evt.detail; - if (!reason && detail) { - reason = detail.reason; - promise = detail.promise; - } - } catch (e) { - // Ignore + + /** + * Transforms a resource object into OTLP Resource format + * + * @private + * @param {Object} resource - Resource information + * @returns {Object} OTLP Resource format + */ + }, { + key: "_transformResource", + value: function _transformResource(resource) { + var _this3 = this; + var attributes = resource.attributes || {}; + var keyValues = Object.entries(attributes).map(function (_ref3) { + var _ref4 = exporter_slicedToArray(_ref3, 2), + key = _ref4[0], + value = _ref4[1]; + return { + key: key, + value: _this3._transformAnyValue(value) + }; + }); + return { + attributes: keyValues + }; } - if (!reason) { - reason = '[unhandledrejection] error getting `reason` from event'; + + /** + * Transforms an instrumentation scope into OTLP InstrumentationScope format + * + * @private + * @param {Object} scope - Instrumentation scope information + * @returns {Object} OTLP InstrumentationScope format + */ + }, { + key: "_transformInstrumentationScope", + value: function _transformInstrumentationScope(scope) { + var _this4 = this; + return { + name: scope.name || '', + version: scope.version || '', + attributes: (scope.attributes || []).map(function (attr) { + return { + key: attr.key, + value: _this4._transformAnyValue(attr.value) + }; + }) + }; } - if (handler && handler.handleUnhandledRejection) { - handler.handleUnhandledRejection(reason, promise); + + /** + * Transforms a JavaScript value into an OTLP AnyValue + * + * @private + * @param {any} value - Value to transform + * @returns {Object} OTLP AnyValue format + */ + }, { + key: "_transformAnyValue", + value: function _transformAnyValue(value) { + var _this5 = this; + if (value === null || value === undefined) { + return { + stringValue: '' + }; + } + var type = exporter_typeof(value); + if (type === 'string') { + return { + stringValue: value + }; + } else if (type === 'number') { + if (Number.isInteger(value)) { + return { + intValue: value.toString() + }; + } else { + return { + doubleValue: value + }; + } + } else if (type === 'boolean') { + return { + boolValue: value + }; + } else if (Array.isArray(value)) { + return { + arrayValue: { + values: value.map(function (v) { + return _this5._transformAnyValue(v); + }) + } + }; + } else if (type === 'object') { + return { + kvlistValue: { + values: Object.entries(value).map(function (_ref5) { + var _ref6 = exporter_slicedToArray(_ref5, 2), + k = _ref6[0], + v = _ref6[1]; + return { + key: k, + value: _this5._transformAnyValue(v) + }; + }) + } + }; + } + return { + stringValue: String(value) + }; } - }; - rejectionHandler.belongsToShim = shim; - window._rollbarURH = rejectionHandler; - window.addEventListener('unhandledrejection', rejectionHandler); + }]); +}(); +var spanExportQueue = []; +;// ./src/tracing/id.js +/** + * Generate a random hexadecimal ID of specified byte length + * + * @param {number} bytes - Number of bytes for the ID (default: 16) + * @returns {string} - Hexadecimal string representation + */ +function gen() { + var bytes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16; + var randomBytes = new Uint8Array(bytes); + crypto.getRandomValues(randomBytes); + var randHex = Array.from(randomBytes, function (byte) { + return byte.toString(16).padStart(2, '0'); + }).join(''); + return randHex; } -;// ./src/browser/transport/fetch.js -function fetch_typeof(o) { "@babel/helpers - typeof"; return fetch_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, fetch_typeof(o); } -function fetch_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function fetch_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? fetch_ownKeys(Object(t), !0).forEach(function (r) { fetch_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : fetch_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function fetch_defineProperty(e, r, t) { return (r = fetch_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function fetch_toPropertyKey(t) { var i = fetch_toPrimitive(t, "string"); return "symbol" == fetch_typeof(i) ? i : i + ""; } -function fetch_toPrimitive(t, r) { if ("object" != fetch_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != fetch_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - +/** + * Tracing id generation utils + * + * @example + * import id from './id.js'; + * + * const spanId = id.gen(8); // => "a1b2c3d4e5f6..." + */ +/* harmony default export */ var id = ({ + gen: gen +}); +;// ./src/tracing/session.js +function session_typeof(o) { "@babel/helpers - typeof"; return session_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, session_typeof(o); } +function session_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function session_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? session_ownKeys(Object(t), !0).forEach(function (r) { session_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : session_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function session_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function session_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, session_toPropertyKey(o.key), o); } } +function session_createClass(e, r, t) { return r && session_defineProperties(e.prototype, r), t && session_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function session_defineProperty(e, r, t) { return (r = session_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function session_toPropertyKey(t) { var i = session_toPrimitive(t, "string"); return "symbol" == session_typeof(i) ? i : i + ""; } +function session_toPrimitive(t, r) { if ("object" != session_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != session_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -function makeFetchRequest(_ref) { - var accessToken = _ref.accessToken, - url = _ref.url, - method = _ref.method, - payload = _ref.payload, - headers = _ref.headers, - callback = _ref.callback, - timeout = _ref.timeout; - var controller; - var timeoutId; - if (isFiniteNumber(timeout)) { - controller = new AbortController(); - timeoutId = setTimeout(function () { - controller.abort(); - }, timeout); - } - headers = fetch_objectSpread({ - 'Content-Type': 'application/json', - 'X-Rollbar-Access-Token': accessToken, - signal: controller && controller.signal - }, headers); - fetch(url, { - method: method, - headers: headers, - body: payload - }).then(function (response) { - if (timeoutId) clearTimeout(timeoutId); - var respHeaders = response.headers; - var isItemRoute = url.endsWith('/api/1/item/'); - var headers = isItemRoute ? { - 'Rollbar-Replay-Enabled': respHeaders.get('Rollbar-Replay-Enabled'), - 'Rollbar-Replay-RateLimit-Remaining': respHeaders.get('Rollbar-Replay-RateLimit-Remaining'), - 'Rollbar-Replay-RateLimit-Reset': respHeaders.get('Rollbar-Replay-RateLimit-Reset') - } : {}; - var json = response.json(); - callback(null, json, headers); - }).catch(function (error) { - src_logger.error(error.message); - callback(error); - }); -} -/* harmony default export */ var transport_fetch = (makeFetchRequest); -;// ./src/browser/transport/xhr.js -function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || xhr_unsupportedIterableToArray(r, e) || _nonIterableRest(); } -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function xhr_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return xhr_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? xhr_arrayLikeToArray(r, a) : void 0; } } -function xhr_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } -/*global XDomainRequest*/ - - - -function makeXhrRequest(_ref) { - var accessToken = _ref.accessToken, - url = _ref.url, - method = _ref.method, - payload = _ref.payload, - headers = _ref.headers, - callback = _ref.callback, - requestFactory = _ref.requestFactory, - timeout = _ref.timeout; - var request; - if (requestFactory) { - request = requestFactory(); - } else { - request = _createXMLHTTPObject(); - } - if (!request) { - // Give up, no way to send requests - return callback(new Error('No way to send a request')); +var SESSION_KEY = 'RollbarSession'; +var Session = /*#__PURE__*/function () { + function Session(tracing, options) { + session_classCallCheck(this, Session); + session_defineProperty(this, "_attributes", void 0); + this.options = options; + this.tracing = tracing; + this.window = tracing.window; + this.session = null; + this._attributes = {}; } - try { - try { - var _onreadystatechange = function onreadystatechange() { - try { - if (_onreadystatechange && request.readyState === 4) { - _onreadystatechange = undefined; - var parseResponse = jsonParse(request.responseText); - if (_isSuccess(request)) { - var isItemRoute = url.endsWith('/api/1/item/'); - var _headers = isItemRoute ? { - 'Rollbar-Replay-Enabled': request.getResponseHeader('Rollbar-Replay-Enabled'), - 'Rollbar-Replay-RateLimit-Remaining': request.getResponseHeader('Rollbar-Replay-RateLimit-Remaining'), - 'Rollbar-Replay-RateLimit-Reset': request.getResponseHeader('Rollbar-Replay-RateLimit-Reset') - } : {}; - callback(parseResponse.error, parseResponse.value, _headers); - return; - } else if (_isNormalFailure(request)) { - if (request.status === 403) { - // likely caused by using a server access token - var message = parseResponse.value && parseResponse.value.message; - src_logger.error(message); - } - // return valid http status codes - callback(new Error(String(request.status))); - } else { - // IE will return a status 12000+ on some sort of connection failure, - // so we return a blank error - // http://msdn.microsoft.com/en-us/library/aa383770%28VS.85%29.aspx - var msg = 'XHR response had no status code (likely connection failure)'; - callback(_newRetriableError(msg)); - } - } - } catch (ex) { - //jquery source mentions firefox may error out while accessing the - //request members if there is a network error - //https://github.com/jquery/jquery/blob/a938d7b1282fc0e5c52502c225ae8f0cef219f0a/src/ajax/xhr.js#L111 - var exc; - if (ex && ex.stack) { - exc = ex; - } else { - exc = new Error(ex); - } - callback(exc); - } - }; - request.open(method, url, true); - if (request.setRequestHeader) { - request.setRequestHeader('Content-Type', 'application/json'); - request.setRequestHeader('X-Rollbar-Access-Token', accessToken); - for (var _i = 0, _Object$entries = Object.entries(headers !== null && headers !== void 0 ? headers : {}); _i < _Object$entries.length; _i++) { - var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2), - h = _Object$entries$_i[0], - v = _Object$entries$_i[1]; - request.setRequestHeader(h, v); - } - } - if (isFiniteNumber(timeout)) { - request.timeout = timeout; + return session_createClass(Session, [{ + key: "init", + value: function init() { + var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + if (this.session) { + return this; } - request.onreadystatechange = _onreadystatechange; - request.send(payload); - } catch (e1) { - // Sending using the normal xmlhttprequest object didn't work, try XDomainRequest - if (typeof XDomainRequest !== 'undefined') { - // Assume we are in a really old browser which has a bunch of limitations: - // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx - - // Extreme paranoia: if we have XDomainRequest then we have a window, but just in case - if (!window || !window.location) { - return callback(new Error('No window available during request, unknown environment')); - } - - // If the current page is http, try and send over http - if (window.location.href.substring(0, 5) === 'http:' && url.substring(0, 5) === 'https') { - url = 'http' + url.substring(5); + this.getSession() || this.createSession(); + this.initSessionAttributes(attrs); + return this; + } + }, { + key: "getSession", + value: function getSession() { + try { + var serializedSession = this.window.sessionStorage.getItem(SESSION_KEY); + if (!serializedSession) { + return null; } - var xdomainrequest = new XDomainRequest(); - xdomainrequest.onprogress = function () {}; - xdomainrequest.ontimeout = function () { - var msg = 'Request timed out'; - var code = 'ETIMEDOUT'; - callback(_newRetriableError(msg, code)); - }; - xdomainrequest.onerror = function () { - callback(new Error('Error during request')); - }; - xdomainrequest.onload = function () { - var parseResponse = jsonParse(xdomainrequest.responseText); - callback(parseResponse.error, parseResponse.value); - }; - xdomainrequest.open(method, url, true); - xdomainrequest.send(payload); - } else { - callback(new Error('Cannot find a method to transport a request')); + this.session = JSON.parse(serializedSession); + } catch (_unused) { + return null; } + return this; } - } catch (e2) { - callback(e2); - } -} -function _createXMLHTTPObject() { - /* global ActiveXObject:false */ - - var factories = [function () { - return new XMLHttpRequest(); - }, function () { - return new ActiveXObject('Msxml2.XMLHTTP'); - }, function () { - return new ActiveXObject('Msxml3.XMLHTTP'); - }, function () { - return new ActiveXObject('Microsoft.XMLHTTP'); - }]; - var xmlhttp; - var i; - var numFactories = factories.length; - for (i = 0; i < numFactories; i++) { - try { - xmlhttp = factories[i](); - break; - } catch (e) { - // pass + }, { + key: "createSession", + value: function createSession() { + this.session = { + id: id.gen(), + createdAt: Date.now() + }; + return this.setSession(this.session); } - } - return xmlhttp; -} -function _isSuccess(r) { - return r && r.status && r.status === 200; -} -function _isNormalFailure(r) { - return r && isType(r.status, 'number') && r.status >= 400 && r.status < 600; -} -function _newRetriableError(message, code) { - var err = new Error(message); - err.code = code || 'ENOTFOUND'; - return err; -} -/* harmony default export */ var xhr = (makeXhrRequest); -;// ./src/browser/transport.js - - - - -/* - * accessToken may be embedded in payload but that should not - * be assumed - * - * options: { - * hostname - * protocol - * path - * port - * method - * transport ('xhr' | 'fetch') - * } - * - * params is an object containing key/value pairs. These - * will be appended to the path as 'key=value&key=value' - * - * payload is an unserialized object - */ -function Transport(truncation) { - this.truncation = truncation; -} -Transport.prototype.get = function (accessToken, options, params, callback, requestFactory) { - if (!callback || !isFunction(callback)) { - callback = function callback() {}; - } - addParamsAndAccessTokenToPath(accessToken, options, params); - var method = 'GET'; - var url = formatUrl(options); - this._makeZoneRequest({ - accessToken: accessToken, - url: url, - method: method, - callback: callback, - requestFactory: requestFactory, - timeout: options.timeout, - transport: options.transport - }); -}; -Transport.prototype.post = function (_ref) { - var _this = this; - var accessToken = _ref.accessToken, - options = _ref.options, - payload = _ref.payload, - headers = _ref.headers, - callback = _ref.callback, - requestFactory = _ref.requestFactory; - return function (payload) { - if (!callback || !isFunction(callback)) { - callback = function callback() {}; + }, { + key: "setSession", + value: function setSession(session) { + var sessionString = JSON.stringify(session); + try { + this.window.sessionStorage.setItem(SESSION_KEY, sessionString); + } catch (_unused2) { + return null; + } + return this; } - if (!payload) { - return callback(new Error('Cannot send empty request')); + }, { + key: "attributes", + get: function get() { + return this._attributes; } - var stringifyResult; - // Check payload.body to ensure only items are truncated. - if (_this.truncation && payload.body) { - stringifyResult = _this.truncation.truncate(payload); - } else { - stringifyResult = stringify(payload); - } - if (stringifyResult.error) { - return callback(stringifyResult.error); - } - var payload = stringifyResult.value; - var method = 'POST'; - var url = formatUrl(options); - _this._makeZoneRequest({ - accessToken: accessToken, - url: url, - method: method, - payload: payload, - headers: headers, - callback: callback, - requestFactory: requestFactory, - timeout: options.timeout, - transport: options.transport - }); - }(payload); -}; -Transport.prototype.postJsonPayload = function (accessToken, options, payload, callback, requestFactory) { - if (!callback || !isFunction(callback)) { - callback = function callback() {}; - } - var method = 'POST'; - var url = formatUrl(options); - this._makeZoneRequest({ - accessToken: accessToken, - url: url, - method: method, - payload: payload, - callback: callback, - requestFactory: requestFactory, - timeout: options.timeout, - transport: options.transport - }); + }, { + key: "setAttributes", + value: function setAttributes(attributes) { + this._attributes = session_objectSpread(session_objectSpread({}, this._attributes), attributes); + return this; + } + }, { + key: "setUser", + value: function setUser(user) { + this.setAttributes({ + 'user.id': user === null || user === void 0 ? void 0 : user.id, + 'user.email': user === null || user === void 0 ? void 0 : user.email, + 'user.name': (user === null || user === void 0 ? void 0 : user.name) || (user === null || user === void 0 ? void 0 : user.username) + }); + return this; + } + }, { + key: "initSessionAttributes", + value: function initSessionAttributes(attrs) { + var _navigator$userAgentD, _navigator$userAgentD2, _navigator$userAgentD3; + this.setAttributes(session_objectSpread({ + 'session.id': this.session.id, + 'browser.brands': (_navigator$userAgentD = navigator.userAgentData) === null || _navigator$userAgentD === void 0 ? void 0 : _navigator$userAgentD.brands, + 'browser.language': navigator.language, + 'browser.mobile': (_navigator$userAgentD2 = navigator.userAgentData) === null || _navigator$userAgentD2 === void 0 ? void 0 : _navigator$userAgentD2.mobile, + 'browser.platform': (_navigator$userAgentD3 = navigator.userAgentData) === null || _navigator$userAgentD3 === void 0 ? void 0 : _navigator$userAgentD3.platform, + 'client.address': '$remote_ip', + // updated at the API + 'rollbar.notifier.framework': 'browser-js', + 'user_agent.original': navigator.userAgent + }, attrs)); + return this; + } + }]); +}(); +;// ./src/logger.js +var _log = function log() {}; +var levels = { + debug: 0, + info: 1, + warn: 2, + error: 3, + disable: 4 }; +var logger = { + error: function error() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + return _log('error', args); + }, + warn: function warn() { + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + return _log('warn', args); + }, + info: function info() { + for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; + } + return _log('info', args); + }, + debug: function debug() { + for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { + args[_key4] = arguments[_key4]; + } + return _log('debug', args); + }, + log: function log() { + for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { + args[_key5] = arguments[_key5]; + } + return _log('info', args); + }, + init: function init(_ref) { + var logLevel = _ref.logLevel; + _log = function _log(level, args) { + if (levels[level] < levels[logLevel]) return; + args.unshift('Rollbar:'); -// Wraps `_makeRequest` if zone.js is being used, ensuring that Rollbar -// API calls are not intercepted by any child forked zones. -// This is equivalent to `NgZone.runOutsideAngular` in Angular. -Transport.prototype._makeZoneRequest = function () { - var gWindow = typeof window != 'undefined' && window || typeof self != 'undefined' && self; - // Whenever zone.js is loaded and `Zone` is exposed globally, access - // the root zone to ensure that requests are always made within it. - // This approach is framework-agnostic, regardless of which - // framework zone.js is used with. - var rootZone = gWindow && gWindow.Zone && gWindow.Zone.root; - var args = Array.prototype.slice.call(arguments); - if (rootZone) { - var self = this; - rootZone.run(function () { - self._makeRequest.apply(undefined, args); - }); - } else { - this._makeRequest.apply(undefined, args); - } -}; -Transport.prototype._makeRequest = function (params) { - var payload = params.payload, - callback = params.callback, - transport = params.transport; - if (typeof RollbarProxy !== 'undefined') { - return _proxyRequest(payload, callback); - } - if (transport === 'fetch') { - transport_fetch(params); - } else { - xhr(params); + // eslint-disable-next-line no-console + console[level].apply(console, args); + }; } }; +/* harmony default export */ var src_logger = (logger); +;// ./src/tracing/spanProcessor.js +function spanProcessor_typeof(o) { "@babel/helpers - typeof"; return spanProcessor_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, spanProcessor_typeof(o); } +function spanProcessor_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = spanProcessor_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function spanProcessor_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return spanProcessor_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? spanProcessor_arrayLikeToArray(r, a) : void 0; } } +function spanProcessor_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function spanProcessor_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function spanProcessor_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, spanProcessor_toPropertyKey(o.key), o); } } +function spanProcessor_createClass(e, r, t) { return r && spanProcessor_defineProperties(e.prototype, r), t && spanProcessor_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function spanProcessor_toPropertyKey(t) { var i = spanProcessor_toPrimitive(t, "string"); return "symbol" == spanProcessor_typeof(i) ? i : i + ""; } +function spanProcessor_toPrimitive(t, r) { if ("object" != spanProcessor_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != spanProcessor_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -/* global RollbarProxy */ -function _proxyRequest(json, callback) { - var rollbarProxy = new RollbarProxy(); - rollbarProxy.sendJsonPayload(json, function (_msg) { - /* do nothing */ - }, function (err) { - callback(new Error(err)); - }); -} -/* harmony default export */ var browser_transport = (Transport); -;// ./src/browser/url.js -// See https://nodejs.org/docs/latest/api/url.html -function parse(url) { - var result = { - protocol: null, - auth: null, - host: null, - path: null, - hash: null, - href: url, - hostname: null, - port: null, - pathname: null, - search: null, - query: null - }; - var i, last; - i = url.indexOf('//'); - if (i !== -1) { - result.protocol = url.substring(0, i); - last = i + 2; - } else { - last = 0; - } - i = url.indexOf('@', last); - if (i !== -1) { - result.auth = url.substring(last, i); - last = i + 1; +var SpanProcessor = /*#__PURE__*/function () { + function SpanProcessor(exporter) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + spanProcessor_classCallCheck(this, SpanProcessor); + this.exporter = exporter; + this.options = options; + this.pendingSpans = new Map(); + this.transforms = [this.userTransform.bind(this)]; } - i = url.indexOf('/', last); - if (i === -1) { - i = url.indexOf('?', last); - if (i === -1) { - i = url.indexOf('#', last); - if (i === -1) { - result.host = url.substring(last); - } else { - result.host = url.substring(last, i); - result.hash = url.substring(i); - } - result.hostname = result.host.split(':')[0]; - result.port = result.host.split(':')[1]; - if (result.port) { - result.port = parseInt(result.port, 10); - } - return result; - } else { - result.host = url.substring(last, i); - result.hostname = result.host.split(':')[0]; - result.port = result.host.split(':')[1]; - if (result.port) { - result.port = parseInt(result.port, 10); - } - last = i; + return spanProcessor_createClass(SpanProcessor, [{ + key: "addTransform", + value: function addTransform(transformFn) { + this.transforms.unshift(transformFn); } - } else { - result.host = url.substring(last, i); - result.hostname = result.host.split(':')[0]; - result.port = result.host.split(':')[1]; - if (result.port) { - result.port = parseInt(result.port, 10); + }, { + key: "userTransform", + value: function userTransform(span) { + if (this.options.transformSpan) { + this.options.transformSpan({ + span: span + }); + } } - last = i; - } - i = url.indexOf('#', last); - if (i === -1) { - result.path = url.substring(last); - } else { - result.path = url.substring(last, i); - result.hash = url.substring(i); - } - if (result.path) { - var pathParts = result.path.split('?'); - result.pathname = pathParts[0]; - result.query = pathParts[1]; - result.search = result.query ? '?' + result.query : null; - } - return result; -} + }, { + key: "applyTransforms", + value: function applyTransforms(span) { + var _iterator = spanProcessor_createForOfIteratorHelper(this.transforms), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var transform = _step.value; + try { + transform(span); + } catch (e) { + src_logger.error('Error running span transform callback', e); + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + } + }, { + key: "onStart", + value: function onStart(span, _parentContext) { + this.pendingSpans.set(span.span.spanContext.spanId, span); + } + }, { + key: "onEnd", + value: function onEnd(span) { + this.applyTransforms(span.span); + this.exporter.export([span.export()]); + this.pendingSpans.delete(span.span.spanContext.spanId); + } + }]); +}(); +;// ./src/tracing/span.js +function span_typeof(o) { "@babel/helpers - typeof"; return span_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, span_typeof(o); } +function span_slicedToArray(r, e) { return span_arrayWithHoles(r) || span_iterableToArrayLimit(r, e) || span_unsupportedIterableToArray(r, e) || span_nonIterableRest(); } +function span_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function span_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return span_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? span_arrayLikeToArray(r, a) : void 0; } } +function span_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function span_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function span_arrayWithHoles(r) { if (Array.isArray(r)) return r; } +function span_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function span_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, span_toPropertyKey(o.key), o); } } +function span_createClass(e, r, t) { return r && span_defineProperties(e.prototype, r), t && span_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function span_toPropertyKey(t) { var i = span_toPrimitive(t, "string"); return "symbol" == span_typeof(i) ? i : i + ""; } +function span_toPrimitive(t, r) { if ("object" != span_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != span_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -;// ./node_modules/error-stack-parser-es/dist/lite.mjs -var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\S+:\d+/; -var CHROME_IE_STACK_REGEXP = /^\s*at .*(\S+:\d+|\(native\))/m; -var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\[native code\])?$/; -function lite_parse(error, options) { - if (typeof error.stacktrace !== "undefined" || typeof error["opera#sourceloc"] !== "undefined") return parseOpera(error, options);else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) return parseV8OrIE(error, options);else if (error.stack) return parseFFOrSafari(error, options);else if (options !== null && options !== void 0 && options.allowEmpty) return [];else throw new Error("Cannot parse given Error object"); -} -function parseStack(stackString, options) { - if (stackString.match(CHROME_IE_STACK_REGEXP)) return parseV8OrIeString(stackString, options);else return parseFFOrSafariString(stackString, options); -} -function extractLocation(urlLike) { - if (!urlLike.includes(":")) return [urlLike, undefined, undefined]; - var regExp = /(.+?)(?::(\d+))?(?::(\d+))?$/; - var parts = regExp.exec(urlLike.replace(/[()]/g, "")); - return [parts[1], parts[2] || undefined, parts[3] || undefined]; -} -function applySlice(lines, options) { - if (options && options.slice != null) { - if (Array.isArray(options.slice)) return lines.slice(options.slice[0], options.slice[1]); - return lines.slice(0, options.slice); - } - return lines; -} -function parseV8OrIE(error, options) { - return parseV8OrIeString(error.stack, options); -} -function parseV8OrIeString(stack, options) { - var filtered = applySlice(stack.split("\n").filter(function (line) { - return !!line.match(CHROME_IE_STACK_REGEXP); - }), options); - return filtered.map(function (line) { - if (line.includes("(eval ")) { - line = line.replace(/eval code/g, "eval").replace(/(\(eval at [^()]*)|(,.*$)/g, ""); +var Span = /*#__PURE__*/function () { + function Span(options) { + span_classCallCheck(this, Span); + this.usePerformance = options.usePerformance; + this.initReadableSpan(options); + this.spanProcessor = options.spanProcessor; + this.spanProcessor.onStart(this, options.context); + if (options.attributes) { + this.setAttributes(options.attributes); } - var sanitizedLine = line.replace(/^\s+/, "").replace(/\(eval code/g, "(").replace(/^.*?\s+/, ""); - var location = sanitizedLine.match(/ (\(.+\)$)/); - sanitizedLine = location ? sanitizedLine.replace(location[0], "") : sanitizedLine; - var locationParts = extractLocation(location ? location[1] : sanitizedLine); - var functionName = location && sanitizedLine || undefined; - var fileName = ["eval", ""].includes(locationParts[0]) ? undefined : locationParts[0]; - return { - function: functionName, - file: fileName, - line: locationParts[1] ? +locationParts[1] : undefined, - col: locationParts[2] ? +locationParts[2] : undefined, - raw: line - }; - }); -} -function parseFFOrSafari(error, options) { - return parseFFOrSafariString(error.stack, options); -} -function parseFFOrSafariString(stack, options) { - var filtered = applySlice(stack.split("\n").filter(function (line) { - return !line.match(SAFARI_NATIVE_CODE_REGEXP); - }), options); - return filtered.map(function (line) { - if (line.includes(" > eval")) line = line.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g, ":$1"); - if (!line.includes("@") && !line.includes(":")) { - return { - function: line - }; - } else { - var functionNameRegex = /(([^\n\r"\u2028\u2029]*".[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*(?:@[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*)*(?:[\n\r\u2028\u2029][^@]*)?)?[^@]*)@/; - var matches = line.match(functionNameRegex); - var functionName = matches && matches[1] ? matches[1] : undefined; - var locationParts = extractLocation(line.replace(functionNameRegex, "")); - return { - function: functionName, - file: locationParts[0], - line: locationParts[1] ? +locationParts[1] : undefined, - col: locationParts[2] ? +locationParts[2] : undefined, - raw: line + return this; + } + return span_createClass(Span, [{ + key: "initReadableSpan", + value: function initReadableSpan(options) { + var _options$session; + this.span = { + name: options.name, + kind: options.kind, + spanContext: options.spanContext, + parentSpanId: options.parentSpanId, + startTime: options.startTime || hrtime.now(options.usePerformance), + endTime: [0, 0], + status: { + code: 0, + message: '' + }, + attributes: { + 'session.id': (_options$session = options.session) === null || _options$session === void 0 ? void 0 : _options$session.id + }, + links: [], + events: [], + duration: 0, + ended: false, + resource: options.resource, + instrumentationScope: options.scope, + droppedAttributesCount: 0, + droppedEventsCount: 0, + droppedLinksCount: 0 }; } - }); -} -function parseOpera(e, options) { - if (!e.stacktrace || e.message.includes("\n") && e.message.split("\n").length > e.stacktrace.split("\n").length) return parseOpera9(e);else if (!e.stack) return parseOpera10(e);else return parseOpera11(e, options); -} -function parseOpera9(e, options) { - var lineRE = /Line (\d+).*script (?:in )?(\S+)/i; - var lines = e.message.split("\n"); - var result = []; - for (var i = 2, len = lines.length; i < len; i += 2) { - var match = lineRE.exec(lines[i]); - if (match) { - result.push({ - file: match[2], - line: +match[1], - raw: lines[i] - }); + }, { + key: "spanContext", + value: function spanContext() { + return this.span.spanContext; } - } - return applySlice(result, options); -} -function parseOpera10(e, options) { - var lineRE = /Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i; - var lines = e.stacktrace.split("\n"); - var result = []; - for (var i = 0, len = lines.length; i < len; i += 2) { - var match = lineRE.exec(lines[i]); - if (match) { - result.push({ - function: match[3] || undefined, - file: match[2], - line: match[1] ? +match[1] : undefined, - raw: lines[i] + }, { + key: "spanId", + get: function get() { + return this.span.spanContext.spanId; + } + }, { + key: "traceId", + get: function get() { + return this.span.spanContext.traceId; + } + }, { + key: "setAttribute", + value: function setAttribute(key, value) { + if (value == null || this.span.ended) return this; + if (key.length === 0) return this; + this.span.attributes[key] = value; + return this; + } + }, { + key: "setAttributes", + value: function setAttributes(attributes) { + for (var _i = 0, _Object$entries = Object.entries(attributes); _i < _Object$entries.length; _i++) { + var _Object$entries$_i = span_slicedToArray(_Object$entries[_i], 2), + k = _Object$entries$_i[0], + v = _Object$entries$_i[1]; + this.setAttribute(k, v); + } + return this; + } + }, { + key: "addEvent", + value: function addEvent(name) { + var attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var time = arguments.length > 2 ? arguments[2] : undefined; + if (this.span.ended) return this; + this.span.events.push({ + name: name, + attributes: attributes, + time: time || hrtime.now(), + droppedAttributesCount: 0 }); + return this; } - } - return applySlice(result, options); -} -function parseOpera11(error, options) { - var filtered = applySlice( - // @ts-expect-error missing stack property - error.stack.split("\n").filter(function (line) { - return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/); - }), options); - return filtered.map(function (line) { - var tokens = line.split("@"); - var locationParts = extractLocation(tokens.pop()); - var functionCall = tokens.shift() || ""; - var functionName = functionCall.replace(//, "$2").replace(/\([^)]*\)/g, "") || undefined; - var argsRaw; - if (functionCall.match(/\(([^)]*)\)/)) argsRaw = functionCall.replace(/^[^(]+\(([^)]*)\)$/, "$1"); - var args = argsRaw === undefined || argsRaw === "[arguments not available]" ? undefined : argsRaw.split(","); - return { - function: functionName, - args: args, - file: locationParts[0], - line: locationParts[1] ? +locationParts[1] : undefined, - col: locationParts[2] ? +locationParts[2] : undefined, - raw: line - }; - }); -} - -;// ./node_modules/error-stack-parser-es/dist/index.mjs - - -function stackframesLiteToStackframes(liteStackframes) { - return liteStackframes.map(function (liteStackframe) { - return { - functionName: liteStackframe.function, - args: liteStackframe.args, - fileName: liteStackframe.file, - lineNumber: liteStackframe.line, - columnNumber: liteStackframe.col, - source: liteStackframe.raw - }; - }); -} -function dist_parse(error, options) { - return stackframesLiteToStackframes(lite_parse(error, options)); -} -function dist_parseV8OrIE(error) { - return stackframesLiteToStackframes(parseV8OrIE$1(error)); -} -function dist_parseFFOrSafari(error) { - return stackframesLiteToStackframes(parseFFOrSafari$1(error)); -} -function dist_parseOpera(e) { - return stackframesLiteToStackframes(parseOpera$1(e)); -} -function dist_parseOpera9(e) { - return stackframesLiteToStackframes(parseOpera9$1(e)); -} -function dist_parseOpera10(e) { - return stackframesLiteToStackframes(parseOpera10$1(e)); -} -function dist_parseOpera11(error) { - return stackframesLiteToStackframes(parseOpera11$1(error)); -} - -;// ./src/errorParser.js - -var UNKNOWN_FUNCTION = '?'; -var ERR_CLASS_REGEXP = new RegExp('^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): '); -function guessFunctionName() { - return UNKNOWN_FUNCTION; -} -function gatherContext() { - return null; -} -function Frame(stackFrame) { - var data = {}; - data._stackFrame = stackFrame; - data.url = stackFrame.fileName; - data.line = stackFrame.lineNumber; - data.func = stackFrame.functionName; - data.column = stackFrame.columnNumber; - data.args = stackFrame.args; - data.context = gatherContext(); - return data; -} -function Stack(exception, skip) { - function getStack() { - var parserStack = []; - skip = skip || 0; - try { - parserStack = dist_parse(exception); - } catch (e) { - parserStack = []; + }, { + key: "isRecording", + value: function isRecording() { + return this.span.ended === false; } - var stack = []; - for (var i = skip; i < parserStack.length; i++) { - stack.push(new Frame(parserStack[i])); + }, { + key: "end", + value: function end(attributes, time) { + if (attributes) this.setAttributes(attributes); + this.span.endTime = time || hrtime.now(this.usePerformance); + this.span.ended = true; + this.spanProcessor.onEnd(this); } - return stack; - } - return { - stack: getStack(), - message: exception.message, - name: _mostSpecificErrorName(exception), - rawStack: exception.stack, - rawException: exception - }; -} -function errorParser_parse(e, skip) { - var err = e; - if (err.nested || err.cause) { - var traceChain = []; - while (err) { - traceChain.push(new Stack(err, skip)); - err = err.nested || err.cause; - skip = 0; // Only apply skip value to primary error + }, { + key: "export", + value: function _export() { + return this.span; } + }]); +}(); +;// ./src/tracing/tracer.js +function tracer_typeof(o) { "@babel/helpers - typeof"; return tracer_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, tracer_typeof(o); } +function tracer_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function tracer_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? tracer_ownKeys(Object(t), !0).forEach(function (r) { tracer_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : tracer_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function tracer_defineProperty(e, r, t) { return (r = tracer_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function tracer_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function tracer_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, tracer_toPropertyKey(o.key), o); } } +function tracer_createClass(e, r, t) { return r && tracer_defineProperties(e.prototype, r), t && tracer_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function tracer_toPropertyKey(t) { var i = tracer_toPrimitive(t, "string"); return "symbol" == tracer_typeof(i) ? i : i + ""; } +function tracer_toPrimitive(t, r) { if ("object" != tracer_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != tracer_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - // Return primary error with full trace chain attached. - traceChain[0].traceChain = traceChain; - return traceChain[0]; - } else { - return new Stack(err, skip); - } -} -function guessErrorClass(errMsg) { - if (!errMsg || !errMsg.match) { - return ['Unknown error. There was no error message to display.', '']; - } - var errClassMatch = errMsg.match(ERR_CLASS_REGEXP); - var errClass = '(unknown)'; - if (errClassMatch) { - errClass = errClassMatch[errClassMatch.length - 1]; - errMsg = errMsg.replace((errClassMatch[errClassMatch.length - 2] || '') + errClass + ':', ''); - errMsg = errMsg.replace(/(^[\s]+|[\s]+$)/g, ''); - } - return [errClass, errMsg]; -} -// * Prefers any value over an empty string -// * Prefers any value over 'Error' where possible -// * Prefers name over constructor.name when both are more specific than 'Error' -function _mostSpecificErrorName(error) { - var name = error.name && error.name.length && error.name; - var constructorName = error.constructor.name && error.constructor.name.length && error.constructor.name; - if (!name || !constructorName) { - return name || constructorName; - } - if (name === 'Error') { - return constructorName; +var Tracer = /*#__PURE__*/function () { + function Tracer(tracing, spanProcessor) { + tracer_classCallCheck(this, Tracer); + this.spanProcessor = spanProcessor; + this.tracing = tracing; } - return name; -} -/* harmony default export */ var errorParser = ({ - guessFunctionName: guessFunctionName, - guessErrorClass: guessErrorClass, - gatherContext: gatherContext, - parse: errorParser_parse, - Stack: Stack, - Frame: Frame -}); -;// ./src/browser/transforms.js + return tracer_createClass(Tracer, [{ + key: "startSpan", + value: function startSpan(name) { + var _this$tracing$resourc, _options$resource, _this$tracing$session; + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.tracing.contextManager.active(); + var parentSpan = this.tracing.getSpan(context); + var parentSpanContext = parentSpan === null || parentSpan === void 0 ? void 0 : parentSpan.spanContext(); + var spanId = id.gen(8); + var traceId; + var traceFlags = 0; + var traceState = null; + var parentSpanId; + if (parentSpanContext) { + traceId = parentSpanContext.traceId; + traceState = parentSpanContext.traceState; + parentSpanId = parentSpanContext.spanId; + } else { + traceId = id.gen(16); + } + var kind = 0; + var spanContext = { + traceId: traceId, + spanId: spanId, + traceFlags: traceFlags, + traceState: traceState + }; + var resource = { + attributes: tracer_objectSpread(tracer_objectSpread({}, ((_this$tracing$resourc = this.tracing.resource) === null || _this$tracing$resourc === void 0 ? void 0 : _this$tracing$resourc.attributes) || {}), ((_options$resource = options.resource) === null || _options$resource === void 0 ? void 0 : _options$resource.attributes) || {}) + }; + var span = new Span({ + resource: resource, + scope: this.tracing.scope, + session: (_this$tracing$session = this.tracing.session) === null || _this$tracing$session === void 0 ? void 0 : _this$tracing$session.session, + context: context, + spanContext: spanContext, + name: name, + kind: kind, + parentSpanId: parentSpanId, + spanProcessor: this.spanProcessor, + startTime: options.startTime, + usePerformance: options.usePerformance + }); + return span; + } + }]); +}(); +;// ./src/tracing/tracing.js +function tracing_typeof(o) { "@babel/helpers - typeof"; return tracing_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, tracing_typeof(o); } +function tracing_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function tracing_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? tracing_ownKeys(Object(t), !0).forEach(function (r) { tracing_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : tracing_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function tracing_defineProperty(e, r, t) { return (r = tracing_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function tracing_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function tracing_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, tracing_toPropertyKey(o.key), o); } } +function tracing_createClass(e, r, t) { return r && tracing_defineProperties(e.prototype, r), t && tracing_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function tracing_toPropertyKey(t) { var i = tracing_toPrimitive(t, "string"); return "symbol" == tracing_typeof(i) ? i : i + ""; } +function tracing_toPrimitive(t, r) { if ("object" != tracing_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != tracing_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -function handleDomException(item, options, callback) { - if (item.err && errorParser.Stack(item.err).name === 'DOMException') { - var originalError = new Error(); - originalError.name = item.err.name; - originalError.message = item.err.message; - originalError.stack = item.err.stack; - originalError.nested = item.err; - item.err = originalError; - } - callback(null, item); -} -function handleItemWithError(item, options, callback) { - item.data = item.data || {}; - if (item.err) { - try { - item.stackInfo = item.err._savedStackTrace || errorParser.parse(item.err, item.skipFrames); - if (options.addErrorContext) { - transforms_addErrorContext(item); - } - } catch (e) { - src_logger.error('Error while parsing the error object.', e); - try { - item.message = item.err.message || item.err.description || item.message || String(item.err); - } catch (e2) { - item.message = String(item.err) || String(e2); - } - delete item.err; + + + +var SPAN_KEY = createContextKey('Rollbar Context Key SPAN'); +var Tracing = /*#__PURE__*/function () { + function Tracing(gWindow, api, options) { + tracing_classCallCheck(this, Tracing); + this.api = api; + this.options = options; + this.window = gWindow; + if (this.window.sessionStorage) { + this.session = new Session(this, options); } + this.createTracer(); } - callback(null, item); -} -function transforms_addErrorContext(item) { - var chain = []; - var err = item.err; - chain.push(err); - while (err.nested || err.cause) { - err = err.nested || err.cause; - chain.push(err); - } - addErrorContext(item, chain); -} -function ensureItemHasSomethingToSay(item, options, callback) { - if (!item.message && !item.stackInfo && !item.custom) { - callback(new Error('No message, stack info, or custom data'), null); - } - callback(null, item); -} -function addBaseInfo(item, options, callback) { - var environment = options.payload && options.payload.environment || options.environment; - item.data = src_merge(item.data, { - environment: environment, - level: item.level, - endpoint: options.endpoint, - platform: 'browser', - framework: 'browser-js', - language: 'javascript', - server: {}, - uuid: item.uuid, - notifier: { - name: 'rollbar-browser-js', - version: options.version - }, - custom: item.custom - }); - callback(null, item); -} -function addRequestInfo(window) { - return function (item, options, callback) { - var requestInfo = {}; - if (window && window.location) { - requestInfo.url = window.location.href; - requestInfo.query_string = window.location.search; + return tracing_createClass(Tracing, [{ + key: "configure", + value: function configure(options) { + // Options merge happens before configure is called, so we can just replace. + this.options = options; } - var remoteString = '$remote_ip'; - if (!options.captureIp) { - remoteString = null; - } else if (options.captureIp !== true) { - remoteString += '_anonymize'; + }, { + key: "initSession", + value: function initSession() { + if (this.session) { + this.session.init(); + } } - if (remoteString) requestInfo.user_ip = remoteString; - if (Object.keys(requestInfo).length > 0) { - set(item, 'data.request', requestInfo); + }, { + key: "sessionId", + get: function get() { + if (this.session) { + return this.session.session.id; + } + return null; } - callback(null, item); - }; -} -function addClientInfo(window) { - return function (item, options, callback) { - if (!window) { - return callback(null, item); + }, { + key: "resource", + get: function get() { + var _this$options$payload, _this$options$payload2; + return { + attributes: tracing_objectSpread(tracing_objectSpread({}, this.options.resource || {}), {}, { + 'rollbar.environment': (_this$options$payload = (_this$options$payload2 = this.options.payload) === null || _this$options$payload2 === void 0 ? void 0 : _this$options$payload2.environment) !== null && _this$options$payload !== void 0 ? _this$options$payload : this.options.environment + }) + }; } - var nav = window.navigator || {}; - var scr = window.screen || {}; - set(item, 'data.client', { - runtime_ms: item.timestamp - window._rollbarStartTime, - timestamp: Math.round(item.timestamp / 1000), - javascript: { - browser: nav.userAgent, - language: nav.language, - cookie_enabled: nav.cookieEnabled, - screen: { - width: scr.width, - height: scr.height - } + }, { + key: "scope", + get: function get() { + return { + name: 'rollbar-browser-js', + version: this.options.version + }; + } + }, { + key: "idGen", + value: function idGen() { + var bytes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16; + return id.gen(bytes); + } + }, { + key: "createTracer", + value: function createTracer() { + this.contextManager = new ContextManager(); + this.exporter = new SpanExporter(this.api, this.options); + this.spanProcessor = new SpanProcessor(this.exporter, this.options.tracing); + this.tracer = new Tracer(this, this.spanProcessor); + } + }, { + key: "getTracer", + value: function getTracer() { + return this.tracer; + } + }, { + key: "addSpanTransform", + value: function addSpanTransform(transformFn) { + this.spanProcessor.addTransform(transformFn); + } + }, { + key: "getSpan", + value: function getSpan() { + var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.contextManager.active(); + return context.getValue(SPAN_KEY); + } + }, { + key: "setSpan", + value: function setSpan() { + var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.contextManager.active(); + var span = arguments.length > 1 ? arguments[1] : undefined; + return context.setValue(SPAN_KEY, span); + } + }, { + key: "startSpan", + value: function startSpan(name) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.contextManager.active(); + return this.tracer.startSpan(name, options, context); + } + }, { + key: "with", + value: function _with(context, fn, thisArg) { + var _this$contextManager; + for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { + args[_key - 3] = arguments[_key]; } - }); - callback(null, item); - }; -} -function addPluginInfo(window) { - return function (item, options, callback) { - if (!window || !window.navigator) { - return callback(null, item); + return (_this$contextManager = this.contextManager).with.apply(_this$contextManager, [context, fn, thisArg].concat(args)); } - var plugins = []; - var navPlugins = window.navigator.plugins || []; - var cur; - for (var i = 0, l = navPlugins.length; i < l; ++i) { - cur = navPlugins[i]; - plugins.push({ - name: cur.name, - description: cur.description - }); + }, { + key: "withSpan", + value: function withSpan(name, options, fn, thisArg) { + var span = this.startSpan(name, options); + return this.with(this.setSpan(this.contextManager.active(), span), fn, thisArg, span); } - set(item, 'data.client.javascript.plugins', plugins); - callback(null, item); - }; + }]); +}(); + +;// ./src/truncation.js +function truncation_slicedToArray(r, e) { return truncation_arrayWithHoles(r) || truncation_iterableToArrayLimit(r, e) || truncation_unsupportedIterableToArray(r, e) || truncation_nonIterableRest(); } +function truncation_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function truncation_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function truncation_arrayWithHoles(r) { if (Array.isArray(r)) return r; } +function truncation_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = truncation_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function truncation_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return truncation_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? truncation_arrayLikeToArray(r, a) : void 0; } } +function truncation_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } + + +function raw(payload, jsonBackup) { + return [payload, stringify(payload, jsonBackup)]; } -function addBody(item, options, callback) { - if (item.stackInfo) { - if (item.stackInfo.traceChain) { - addBodyTraceChain(item, options, callback); - } else { - addBodyTrace(item, options, callback); +function selectFrames(frames, range) { + var len = frames.length; + if (len > range * 2) { + return frames.slice(0, range).concat(frames.slice(len - range)); + } + return frames; +} +function truncateFrames(payload, jsonBackup, range) { + range = typeof range === 'undefined' ? 30 : range; + var body = payload.data.body; + var frames; + if (body.trace_chain) { + var chain = body.trace_chain; + var _iterator = truncation_createForOfIteratorHelper(chain), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var trace = _step.value; + frames = trace.frames; + frames = selectFrames(frames, range); + trace.frames = frames; + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); } - } else { - addBodyMessage(item, options, callback); + } else if (body.trace) { + frames = body.trace.frames; + frames = selectFrames(frames, range); + body.trace.frames = frames; } + return [payload, stringify(payload, jsonBackup)]; } -function addBodyMessage(item, options, callback) { - var message = item.message; - var custom = item.custom; - if (!message) { - message = 'Item sent with null or missing arguments.'; +function maybeTruncateValue(len, val) { + if (!val) { + return val; } - var result = { - body: message - }; - if (custom) { - result.extra = src_merge(custom); + if (val.length > len) { + return val.slice(0, len - 3).concat('...'); } - set(item, 'data.body', { - message: result - }); - callback(null, item); -} -function stackFromItem(item) { - // Transform a TraceKit stackInfo object into a Rollbar trace - var stack = item.stackInfo.stack; - if (stack && stack.length === 0 && item._unhandledStackInfo && item._unhandledStackInfo.stack) { - stack = item._unhandledStackInfo.stack; - } - return stack; + return val; } -function addBodyTraceChain(item, options, callback) { - var traceChain = item.stackInfo.traceChain; - var traces = []; - var traceChainLength = traceChain.length; - for (var i = 0; i < traceChainLength; i++) { - var trace = buildTrace(item, traceChain[i], options); - traces.push(trace); +function truncateStrings(len, payload, jsonBackup) { + function truncator(k, v, seen) { + switch (typeName(v)) { + case 'string': + return maybeTruncateValue(len, v); + case 'object': + case 'array': + return utility_traverse(v, truncator, seen); + default: + return v; + } } - set(item, 'data.body', { - trace_chain: traces - }); - callback(null, item); + payload = utility_traverse(payload, truncator); + return [payload, stringify(payload, jsonBackup)]; } -function addBodyTrace(item, options, callback) { - var stack = stackFromItem(item); - if (stack) { - var trace = buildTrace(item, item.stackInfo, options); - set(item, 'data.body', { - trace: trace - }); - callback(null, item); - } else { - var stackInfo = item.stackInfo; - var guess = errorParser.guessErrorClass(stackInfo.message); - var className = errorClass(stackInfo, guess[0], options); - var message = guess[1]; - item.message = className + ': ' + message; - addBodyMessage(item, options, callback); +function truncateTraceData(traceData) { + if (traceData.exception) { + delete traceData.exception.description; + traceData.exception.message = maybeTruncateValue(255, traceData.exception.message); } + traceData.frames = selectFrames(traceData.frames, 1); + return traceData; } -function buildTrace(item, stackInfo, options) { - var description = item && item.data.description; - var custom = item && item.custom; - var stack = stackFromItem(item); - var guess = errorParser.guessErrorClass(stackInfo.message); - var className = errorClass(stackInfo, guess[0], options); - var message = guess[1]; - var trace = { - exception: { - class: className, - message: message - } - }; - if (description) { - trace.exception.description = description; - } - if (stack) { - if (stack.length === 0) { - trace.exception.stack = stackInfo.rawStack; - trace.exception.raw = String(stackInfo.rawException); - } - var stackFrame; - var frame; - var code; - var pre; - var post; - var contextLength; - var i, mid; - trace.frames = []; - for (i = 0; i < stack.length; ++i) { - stackFrame = stack[i]; - frame = { - filename: stackFrame.url ? sanitizeUrl(stackFrame.url) : '(unknown)', - lineno: stackFrame.line || null, - method: !stackFrame.func || stackFrame.func === '?' ? '[anonymous]' : stackFrame.func, - colno: stackFrame.column - }; - if (options.sendFrameUrl) { - frame.url = stackFrame.url; - } - if (frame.method && frame.method.endsWith && frame.method.endsWith('_rollbar_wrapped')) { - continue; - } - code = pre = post = null; - contextLength = stackFrame.context ? stackFrame.context.length : 0; - if (contextLength) { - mid = Math.floor(contextLength / 2); - pre = stackFrame.context.slice(0, mid); - code = stackFrame.context[mid]; - post = stackFrame.context.slice(mid); - } - if (code) { - frame.code = code; - } - if (pre || post) { - frame.context = {}; - if (pre && pre.length) { - frame.context.pre = pre; - } - if (post && post.length) { - frame.context.post = post; - } - } - if (stackFrame.args) { - frame.args = stackFrame.args; +function minBody(payload, jsonBackup) { + var body = payload.data.body; + if (body.trace_chain) { + var chain = body.trace_chain; + var _iterator2 = truncation_createForOfIteratorHelper(chain.entries()), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var _step2$value = truncation_slicedToArray(_step2.value, 2), + index = _step2$value[0], + trace = _step2$value[1]; + chain[index] = truncateTraceData(trace); } - trace.frames.push(frame); - } - - // NOTE(cory): reverse the frames since rollbar.com expects the most recent call last - trace.frames.reverse(); - if (custom) { - trace.extra = src_merge(custom); + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); } + } else if (body.trace) { + body.trace = truncateTraceData(body.trace); } - return trace; + return [payload, stringify(payload, jsonBackup)]; } -function errorClass(stackInfo, guess, options) { - if (stackInfo.name) { - return stackInfo.name; - } else if (options.guessErrorClass) { - return guess; - } else { - return '(unknown)'; - } +function needsTruncation(payload, maxSize) { + return maxByteSize(payload) > maxSize; } -function addScrubber(scrubFn) { - return function (item, options, callback) { - if (scrubFn) { - var scrubFields = options.scrubFields || []; - var scrubPaths = options.scrubPaths || []; - item.data = scrubFn(item.data, scrubFields, scrubPaths); +function truncate(payload, jsonBackup, maxSize) { + maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize; + var strategies = [raw, truncateFrames, truncateStrings.bind(null, 1024), truncateStrings.bind(null, 512), truncateStrings.bind(null, 256), minBody]; + var strategy, results, result; + while (strategy = strategies.shift()) { + results = strategy(payload, jsonBackup); + payload = results[0]; + result = results[1]; + if (result.error || !needsTruncation(result.value, maxSize)) { + return result; } - callback(null, item); - }; + } + return result; } +/* harmony default export */ var truncation = ({ + truncate: truncate, + /* for testing */ + raw: raw, + truncateFrames: truncateFrames, + truncateStrings: truncateStrings, + maybeTruncateValue: maybeTruncateValue +}); +;// ./src/apiUtility.js -;// ./src/transforms.js - -function itemToPayload(item, options, callback) { - if (item._isUncaught) { - item.data._isUncaught = true; - } - if (item._originalArgs) { - item.data._originalArgs = item._originalArgs; +function buildPayload(data) { + if (!isType(data.context, 'string')) { + var contextResult = stringify(data.context); + if (contextResult.error) { + data.context = "Error: could not serialize 'context'"; + } else { + data.context = contextResult.value || ''; + } + if (data.context.length > 255) { + data.context = data.context.substr(0, 255); + } } - callback(null, item); + return { + data: data + }; } -function addPayloadOptions(item, options, callback) { - var payloadOptions = options.payload || {}; - if (payloadOptions.body) { - delete payloadOptions.body; +function getTransportFromOptions(options, defaults, url) { + var hostname = defaults.hostname; + var protocol = defaults.protocol; + var port = defaults.port; + var path = defaults.path; + var search = defaults.search; + var timeout = options.timeout; + var transport = detectTransport(options); + var proxy = options.proxy; + if (options.endpoint) { + var opts = url.parse(options.endpoint); + hostname = opts.hostname; + protocol = opts.protocol; + port = opts.port; + path = opts.pathname; + search = opts.search; } - item.data = src_merge(item.data, payloadOptions); - callback(null, item); + return { + timeout: timeout, + hostname: hostname, + protocol: protocol, + port: port, + path: path, + search: search, + proxy: proxy, + transport: transport + }; } -function addTelemetryData(item, options, callback) { - if (item.telemetryEvents) { - set(item, 'data.body.telemetry', item.telemetryEvents); - } - callback(null, item); +function detectTransport(options) { + var gWindow = typeof window !== 'undefined' && window || typeof self !== 'undefined' && self; + var transport = options.defaultTransport || 'xhr'; + if (typeof gWindow.fetch === 'undefined') transport = 'xhr'; + if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch'; + return transport; } -function addMessageWithError(item, options, callback) { - if (!item.message) { - callback(null, item); - return; - } - var tracePath = 'data.body.trace_chain.0'; - var trace = get(item, tracePath); - if (!trace) { - tracePath = 'data.body.trace'; - trace = get(item, tracePath); +function apiUtility_transportOptions(transport, method) { + var protocol = transport.protocol || 'https:'; + var port = transport.port || (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined); + var hostname = transport.hostname; + var path = transport.path; + var timeout = transport.timeout; + var transportAPI = transport.transport; + if (transport.search) { + path = path + transport.search; } - if (trace) { - if (!(trace.exception && trace.exception.description)) { - set(item, tracePath + '.exception.description', item.message); - callback(null, item); - return; - } - var extra = get(item, tracePath + '.extra') || {}; - var newExtra = src_merge(extra, { - message: item.message - }); - set(item, tracePath + '.extra', newExtra); + if (transport.proxy) { + path = protocol + '//' + hostname + path; + hostname = transport.proxy.host || transport.proxy.hostname; + port = transport.proxy.port; + protocol = transport.proxy.protocol || protocol; } - callback(null, item); -} -function userTransform(logger) { - return function (item, options, callback) { - var newItem = src_merge(item); - var response = null; - try { - if (isFunction(options.transform)) { - response = options.transform(newItem.data, item); - } - } catch (e) { - options.transform = null; - logger.error('Error while calling custom transform() function. Removing custom transform().', e); - callback(null, item); - return; - } - if (isPromise(response)) { - response.then(function (promisedItem) { - if (promisedItem) { - newItem.data = promisedItem; - } - callback(null, newItem); - }, function (error) { - callback(error, item); - }); - } else { - callback(null, newItem); - } + return { + timeout: timeout, + protocol: protocol, + hostname: hostname, + path: path, + port: port, + method: method, + transport: transportAPI }; } -function addConfigToPayload(item, options, callback) { - if (!options.sendConfig) { - return callback(null, item); - } - var configKey = '_rollbarConfig'; - var custom = get(item, 'data.custom') || {}; - custom[configKey] = options; - item.data.custom = custom; - callback(null, item); -} -function addFunctionOption(options, name) { - if (isFunction(options[name])) { - options[name] = options[name].toString(); +function appendPathToPath(base, path) { + var baseTrailingSlash = /\/$/.test(base); + var pathBeginningSlash = /^\//.test(path); + if (baseTrailingSlash && pathBeginningSlash) { + path = path.substring(1); + } else if (!baseTrailingSlash && !pathBeginningSlash) { + path = '/' + path; } + return base + path; } -function addConfiguredOptions(item, options, callback) { - var configuredOptions = options._configuredOptions; - // These must be stringified or they'll get dropped during serialization. - addFunctionOption(configuredOptions, 'transform'); - addFunctionOption(configuredOptions, 'checkIgnore'); - addFunctionOption(configuredOptions, 'onSendCallback'); - delete configuredOptions.accessToken; - item.data.notifier.configured_options = configuredOptions; - callback(null, item); -} -function addDiagnosticKeys(item, options, callback) { - var diagnostic = src_merge(item.notifier.client.notifier.diagnostic, item.diagnostic); - if (get(item, 'err._isAnonymous')) { - diagnostic.is_anonymous = true; - } - if (item._isUncaught) { - diagnostic.is_uncaught = item._isUncaught; - } - if (item.err) { - try { - diagnostic.raw_error = { - message: item.err.message, - name: item.err.name, - constructor_name: item.err.constructor && item.err.constructor.name, - filename: item.err.fileName, - line: item.err.lineNumber, - column: item.err.columnNumber, - stack: item.err.stack - }; - } catch (e) { - diagnostic.raw_error = { - failed: String(e) - }; - } - } - item.data.notifier.diagnostic = src_merge(item.data.notifier.diagnostic, diagnostic); - callback(null, item); -} +;// ./src/api.js +function api_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function api_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? api_ownKeys(Object(t), !0).forEach(function (r) { api_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : api_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function api_defineProperty(e, r, t) { return (r = api_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function api_typeof(o) { "@babel/helpers - typeof"; return api_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, api_typeof(o); } +function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); } +function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); } +function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } +function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } +function api_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function api_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, api_toPropertyKey(o.key), o); } } +function api_createClass(e, r, t) { return r && api_defineProperties(e.prototype, r), t && api_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function api_toPropertyKey(t) { var i = api_toPrimitive(t, "string"); return "symbol" == api_typeof(i) ? i : i + ""; } +function api_toPrimitive(t, r) { if ("object" != api_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != api_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -;// ./src/browser/predicates.js -function checkIgnore(item, settings) { - if (get(settings, 'plugins.jquery.ignoreAjaxErrors')) { - return !get(item, 'body.message.extra.isAjax'); +var defaultOptions = { + hostname: 'api.rollbar.com', + path: '/api/1/item/', + search: null, + version: '1', + protocol: 'https:', + port: 443 +}; +var OTLPDefaultOptions = { + hostname: 'api.rollbar.com', + path: '/api/1/session/', + search: null, + version: '1', + protocol: 'https:', + port: 443 +}; + +/** + * Api encapsulates methods of communicating with the Rollbar API. It is a + * standard interface with some parts implemented differently for server or + * browser contexts. It is an object that should be instantiated when used so + * it can contain non-global options that may be different for another instance + * of RollbarApi. + */ +var Api = /*#__PURE__*/function () { + /** + * @param {Object} options - Configuration supplied from the parent Rollbar instance. + * @param {string} options.accessToken - Token used to authenticate API calls. + * @param {string} [options.endpoint] - Optional fully qualified URL overriding + * the default `https://api.rollbar.com/api/1/item`. + * @param {Object} [options.proxy] - Optional proxy descriptor containing: + * `host`/`hostname` (required), `port`, and `protocol`. + * @param {Object} transport - Adapter implementing `post` and `postJsonPayload`. + * @param {Object} urllib - Minimal URL helper used for option normalization. + * @param {Object} truncation - Optional truncation helper for payload size enforcement. + */ + function Api(options, transport, urllib, truncation) { + api_classCallCheck(this, Api); + this.options = options; + this.transport = transport; + this.url = urllib; + this.truncation = truncation; + this.accessToken = options.accessToken; + this.transportOptions = _getTransport(options, urllib); + this.OTLPTransportOptions = _getOTLPTransport(options, urllib); } - return true; -} -;// ./src/predicates.js + /** + * Wraps transport.post in a Promise to support async/await + * + * @param {Object} options - Options for the API request + * @param {string} options.accessToken - The access token for authentication + * @param {Object} options.transportOptions - Options for the transport + * @param {Object} options.payload - The data payload to send + * @returns {Promise} A promise that resolves with the response or rejects with an error + * @private + */ + return api_createClass(Api, [{ + key: "_postPromise", + value: function _postPromise(_ref) { + var _this = this; + var accessToken = _ref.accessToken, + options = _ref.options, + payload = _ref.payload, + headers = _ref.headers; + return new Promise(function (resolve, reject) { + _this.transport.post({ + accessToken: accessToken, + options: options, + payload: payload, + headers: headers, + callback: function callback(err, resp) { + return err ? reject(err) : resolve(resp); + } + }); + }); + } -function checkLevel(item, settings) { - var level = item.level; - var levelVal = LEVELS[level] || 0; - var reportLevel = settings.reportLevel; - var reportLevelVal = LEVELS[reportLevel] || 0; - if (levelVal < reportLevelVal) { - return false; - } - return true; -} -function userCheckIgnore(logger) { - return function (item, settings) { - var isUncaught = !!item._isUncaught; - delete item._isUncaught; - var args = item._originalArgs; - delete item._originalArgs; - try { - if (isFunction(settings.onSendCallback)) { - settings.onSendCallback(isUncaught, args, item); + /** + * + * @param data + * @param callback + */ + }, { + key: "postItem", + value: function postItem(data, callback) { + var _this2 = this; + var options = apiUtility_transportOptions(this.transportOptions, 'POST'); + var payload = buildPayload(data); + + // ensure the network request is scheduled after the current tick. + setTimeout(function () { + _this2.transport.post({ + accessToken: _this2.accessToken, + options: options, + payload: payload, + callback: callback + }); + }, 0); + } + + /** + * Posts spans to the Rollbar API using the session endpoint + * + * @param {Array} payload - The spans to send + * @returns {Promise} A promise that resolves with the API response + */ + }, { + key: "postSpans", + value: (function () { + var _postSpans = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(payload) { + var headers, + options, + _args = arguments; + return _regenerator().w(function (_context) { + while (1) switch (_context.n) { + case 0: + headers = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; + options = apiUtility_transportOptions(this.OTLPTransportOptions, 'POST'); + return _context.a(2, this._postPromise({ + accessToken: this.accessToken, + options: options, + payload: payload, + headers: headers + })); + } + }, _callee, this); + })); + function postSpans(_x) { + return _postSpans.apply(this, arguments); } - } catch (e) { - settings.onSendCallback = null; - logger.error('Error while calling onSendCallback, removing', e); + return postSpans; + }() + /** + * + * @param data + * @param callback + */ + ) + }, { + key: "buildJsonPayload", + value: function buildJsonPayload(data, callback) { + var payload = buildPayload(data); + var stringifyResult; + if (this.truncation) { + stringifyResult = this.truncation.truncate(payload); + } else { + stringifyResult = stringify(payload); + } + if (stringifyResult.error) { + if (callback) { + callback(stringifyResult.error); + } + return null; + } + return stringifyResult.value; } - try { - if (isFunction(settings.checkIgnore) && settings.checkIgnore(isUncaught, args, item)) { - return false; + + /** + * + * @param jsonPayload + * @param callback + */ + }, { + key: "postJsonPayload", + value: function postJsonPayload(jsonPayload, callback) { + var transportOptions = apiUtility_transportOptions(this.transportOptions, 'POST'); + this.transport.postJsonPayload(this.accessToken, transportOptions, jsonPayload, callback); + } + }, { + key: "configure", + value: function configure(options) { + var oldOptions = this.options; + this.options = merge(oldOptions, options); + this.transportOptions = _getTransport(this.options, this.url); + this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url); + if (this.options.accessToken !== undefined) { + this.accessToken = this.options.accessToken; } - } catch (e) { - settings.checkIgnore = null; - logger.error('Error while calling custom checkIgnore(), removing', e); + return this; } - return true; - }; -} -function urlIsNotBlockListed(logger) { - return function (item, settings) { - return !urlIsOnAList(item, settings, 'blocklist', logger); - }; + }]); +}(); +function _getTransport(options, url) { + return getTransportFromOptions(options, defaultOptions, url); } -function urlIsSafeListed(logger) { - return function (item, settings) { - return urlIsOnAList(item, settings, 'safelist', logger); - }; +function _getOTLPTransport(options, url) { + var _options$tracing; + options = api_objectSpread(api_objectSpread({}, options), {}, { + endpoint: (_options$tracing = options.tracing) === null || _options$tracing === void 0 ? void 0 : _options$tracing.endpoint + }); + return getTransportFromOptions(options, OTLPDefaultOptions, url); } -function matchFrames(trace, list, block) { - if (!trace) { - return !block; - } - var frames = trace.frames; - if (!frames || frames.length === 0) { - return !block; - } - var frame, filename, url, urlRegex; - var listLength = list.length; - var frameLength = frames.length; - for (var i = 0; i < frameLength; i++) { - frame = frames[i]; - filename = frame.filename; - if (!isType(filename, 'string')) { - return !block; - } - for (var j = 0; j < listLength; j++) { - url = list[j]; - urlRegex = new RegExp(url); - if (urlRegex.test(filename)) { - return true; - } - } - } - return false; -} -function urlIsOnAList(item, settings, safeOrBlock, logger) { - // safelist is the default - var block = false; - if (safeOrBlock === 'blocklist') { - block = true; - } - var list, traces; - try { - list = block ? settings.hostBlockList : settings.hostSafeList; - traces = get(item, 'body.trace_chain') || [get(item, 'body.trace')]; - - // These two checks are important to come first as they are defaults - // in case the list is missing or the trace is missing or not well-formed - if (!list || list.length === 0) { - return !block; - } - if (traces.length === 0 || !traces[0]) { - return !block; - } - var tracesLength = traces.length; - for (var i = 0; i < tracesLength; i++) { - if (matchFrames(traces[i], list, block)) { - return true; - } - } - } catch (e - /* istanbul ignore next */) { - if (block) { - settings.hostBlockList = null; - } else { - settings.hostSafeList = null; - } - var listName = block ? 'hostBlockList' : 'hostSafeList'; - logger.error("Error while reading your configuration's " + listName + ' option. Removing custom ' + listName + '.', e); - return !block; - } - return false; -} -function messageIsIgnored(logger) { - return function (item, settings) { - var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages; - try { - messageIsIgnored = false; - ignoredMessages = settings.ignoredMessages; - if (!ignoredMessages || ignoredMessages.length === 0) { - return true; - } - messages = messagesFromItem(item); - if (messages.length === 0) { - return true; - } - len = ignoredMessages.length; - for (i = 0; i < len; i++) { - rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi'); - for (j = 0; j < messages.length; j++) { - messageIsIgnored = rIgnoredMessage.test(messages[j]); - if (messageIsIgnored) { - return false; - } - } - } - } catch (e - /* istanbul ignore next */) { - settings.ignoredMessages = null; - logger.error("Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages."); - } - return true; - }; -} -function messagesFromItem(item) { - var body = item.body; - var messages = []; - - // The payload schema only allows one of trace_chain, message, or trace. - // However, existing test cases are based on having both trace and message present. - // So here we preserve the ability to collect strings from any combination of these keys. - if (body.trace_chain) { - var traceChain = body.trace_chain; - for (var i = 0; i < traceChain.length; i++) { - var trace = traceChain[i]; - messages.push(get(trace, 'exception.message')); - } - } - if (body.trace) { - messages.push(get(body, 'trace.exception.message')); - } - if (body.message) { - messages.push(get(body, 'message.body')); - } - return messages; -} - -;// ./src/browser/replay/defaults.js -/** - * Default session replay recording options - * See https://github.com/rrweb-io/rrweb/blob/master/guide.md#options for details - */ -/* harmony default export */ var defaults = ({ - enabled: false, - // Whether recording is enabled - autoStart: true, - // Start recording automatically when Rollbar initializes - - // defaults used by triggers that don't specify them - triggerDefaults: { - samplingRatio: 1.0, - preDuration: 300, - postDuration: 5 - }, - triggers: [{ - type: 'occurrence', - level: ['error', 'critical'] - }], - debug: { - logErrors: true, - // Whether to log errors emitted by rrweb. - logEmits: false // Whether to log emitted events - }, - // Recording options - inlineStylesheet: true, - // Whether to inline stylesheets to improve replay accuracy - inlineImages: false, - // Whether to record the image content - collectFonts: true, - // Whether to collect fonts in the website - - // Privacy options - // Fine-grained control over which input types to mask - // By default only password inputs are masked if maskInputs is true - maskInputOptions: { - password: true, - email: false, - tel: false, - text: false, - color: false, - date: false, - 'datetime-local': false, - month: false, - number: false, - range: false, - search: false, - time: false, - url: false, - week: false - }, - // Mask all input values - maskAllInputs: false, - // Class names to block, mask, or ignore the content of elements. - blockClass: 'rb-block', - maskTextClass: 'rb-mask', - ignoreClass: 'rb-ignore', - // Remove unnecessary parts of the DOM - // By default all removable elements are removed - slimDOMOptions: { - script: true, - // Remove script elements - comment: true, - // Remove comments - headFavicon: true, - // Remove favicons in the head - headWhitespace: true, - // Remove whitespace in head - headMetaDescKeywords: true, - // Remove meta description and keywords - headMetaSocial: true, - // Remove social media meta tags - headMetaRobots: true, - // Remove robots meta directives - headMetaHttpEquiv: true, - // Remove http-equiv meta directives - headMetaAuthorship: true, - // Remove authorship meta directives - headMetaVerification: true // Remove verification meta directives - } - - // Custom callbacks for advanced use cases - // These are undefined by default and can be set programmatically - // maskInputFn: undefined, // Custom function to mask input values - // maskTextFn: undefined, // Custom function to mask text content - // errorHandler: undefined, // Custom error handler for recording errors - - // Plugin system - // plugins: [] // List of plugins to use (must be set programmatically) -}); -;// ./src/tracing/defaults.js -/** - * Default tracing options - */ -/* harmony default export */ var tracing_defaults = ({ - enabled: false, - endpoint: 'api.rollbar.com/api/1/session/' -}); +/* harmony default export */ var src_api = (Api); ;// ./src/defaults.js /** * Default options shared across platforms */ -var version = '3.0.0-rc.1'; +var version = '3.0.0'; var endpoint = 'api.rollbar.com/api/1/item/'; var logLevel = 'debug'; var reportLevel = 'debug'; @@ -3515,7 +2993,7 @@ var requestScrubFields = (/* unused pure expression or super */ null && (['reque var commonScrubHeaders = (/* unused pure expression or super */ null && (['authorization', 'www-authorization', 'http_authorization', 'omniauth.auth', 'cookie', 'oauth-access-token', 'x-access-token', 'x_csrf_token', 'http_x_csrf_token', 'x-csrf-token'])); // For backward compatibility with default export -/* harmony default export */ var src_defaults = ({ +/* harmony default export */ var defaults = ({ version: version, endpoint: endpoint, logLevel: logLevel, @@ -3524,3679 +3002,3087 @@ var commonScrubHeaders = (/* unused pure expression or super */ null && (['autho maxItems: maxItems, itemsPerMin: itemsPerMin }); -;// ./src/browser/defaults.js -function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || defaults_unsupportedIterableToArray(r) || _nonIterableSpread(); } -function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function defaults_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return defaults_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? defaults_arrayLikeToArray(r, a) : void 0; } } -function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } -function _arrayWithoutHoles(r) { if (Array.isArray(r)) return defaults_arrayLikeToArray(r); } -function defaults_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -/** - * Default browser options - */ - -var scrubFields = [].concat(_toConsumableArray(commonScrubFields), ['cc-number', 'card number', 'cardnumber', 'cardnum', 'ccnum', 'ccnumber', 'cc num', 'creditcardnumber', 'credit card number', 'newcreditcardnumber', 'new credit card', 'creditcardno', 'credit card no', 'card#', 'card #', 'cc-csc', 'cvc', 'cvc2', 'cvv2', 'ccv2', 'security code', 'card verification', 'name on credit card', 'name on card', 'nameoncard', 'cardholder', 'card holder', 'name des karteninhabers', 'ccname', 'card type', 'cardtype', 'cc type', 'cctype', 'payment type', 'expiration date', 'expirationdate', 'expdate', 'cc-exp', 'ccmonth', 'ccyear']); - -// For compatibility with existing code that expects default export with scrubFields property -/* harmony default export */ var browser_defaults = ({ - scrubFields: scrubFields -}); -;// ./src/browser/core.js -var _Rollbar; -function core_typeof(o) { "@babel/helpers - typeof"; return core_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, core_typeof(o); } -function core_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function core_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? core_ownKeys(Object(t), !0).forEach(function (r) { core_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : core_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function core_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function core_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, core_toPropertyKey(o.key), o); } } -function core_createClass(e, r, t) { return r && core_defineProperties(e.prototype, r), t && core_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function core_defineProperty(e, r, t) { return (r = core_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function core_toPropertyKey(t) { var i = core_toPrimitive(t, "string"); return "symbol" == core_typeof(i) ? i : i + ""; } -function core_toPrimitive(t, r) { if ("object" != core_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != core_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - - - - - - - - - - - - - - - -// Used to support global `Rollbar` instance. -var _instance = null; -var core_Rollbar = /*#__PURE__*/function () { - function Rollbar(options, client) { - core_classCallCheck(this, Rollbar); - src_logger.init({ - logLevel: options.logLevel || 'error' - }); - this.options = handleOptions(core_defaultOptions, options, null, src_logger); - this.options._configuredOptions = options; - this.components = this.components || {}; - var Telemeter = this.components.telemeter; - var Instrumenter = this.components.instrumenter; - this.wrapGlobals = this.components.wrapGlobals; - this.scrub = this.components.scrub; - var truncation = this.components.truncation; - var Tracing = this.components.tracing; - var Replay = this.components.replay; - var transport = new browser_transport(truncation); - var api = new src_api(this.options, transport, url_namespaceObject, truncation); - if (Tracing) { - this.tracing = new Tracing(_gWindow(), api, this.options); - this.tracing.initSession(); - } - if (Telemeter) { - this.telemeter = new Telemeter(this.options, this.tracing); - } - if (Replay && isBrowser()) { - var replayOptions = this.options.replay; - this.replay = new Replay({ - tracing: this.tracing, - telemeter: this.telemeter, - options: replayOptions - }); - if (replayOptions.enabled && replayOptions.autoStart) { - this.replay.recorder.start(); - } - } - this.client = client || new src_rollbar(this.options, api, src_logger, this.telemeter, this.tracing, this.replay, 'browser'); - var gWindow = _gWindow(); - var gDocument = typeof document != 'undefined' && document; - this.isChrome = gWindow.chrome && gWindow.chrome.runtime; // check .runtime to avoid Edge browsers - this.anonymousErrorsPending = 0; - addTransformsToNotifier(this.client.notifier, this, gWindow); - addPredicatesToQueue(this.client.queue); - this.setupUnhandledCapture(); - if (Instrumenter) { - this.instrumenter = new Instrumenter(this.options, this.client.telemeter, this, gWindow, gDocument); - this.instrumenter.instrument(); - } - this.setSessionAttributesFromOptions(options); - - // Used with rollbar-react for rollbar-react-native compatibility. - this.rollbar = this; +;// ./node_modules/error-stack-parser-es/dist/lite.mjs +var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\S+:\d+/; +var CHROME_IE_STACK_REGEXP = /^\s*at .*(\S+:\d+|\(native\))/m; +var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\[native code\])?$/; +function parse(error, options) { + if (typeof error.stacktrace !== "undefined" || typeof error["opera#sourceloc"] !== "undefined") return parseOpera(error, options);else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) return parseV8OrIE(error, options);else if (error.stack) return parseFFOrSafari(error, options);else if (options !== null && options !== void 0 && options.allowEmpty) return [];else throw new Error("Cannot parse given Error object"); +} +function parseStack(stackString, options) { + if (stackString.match(CHROME_IE_STACK_REGEXP)) return parseV8OrIeString(stackString, options);else return parseFFOrSafariString(stackString, options); +} +function extractLocation(urlLike) { + if (!urlLike.includes(":")) return [urlLike, undefined, undefined]; + var regExp = /(.+?)(?::(\d+))?(?::(\d+))?$/; + var parts = regExp.exec(urlLike.replace(/[()]/g, "")); + return [parts[1], parts[2] || undefined, parts[3] || undefined]; +} +function applySlice(lines, options) { + if (options && options.slice != null) { + if (Array.isArray(options.slice)) return lines.slice(options.slice[0], options.slice[1]); + return lines.slice(0, options.slice); } - return core_createClass(Rollbar, [{ - key: "global", - value: function global(options) { - this.client.global(options); - return this; - } - }, { - key: "configure", - value: function configure(options, payloadData) { - var _this$tracing, _this$replay, _this$instrumenter; - if (options.logLevel) { - src_logger.init({ - logLevel: options.logLevel - }); - } - this.setSessionAttributesFromOptions(options); - var oldOptions = this.options; - var payload = {}; - if (payloadData) { - payload = { - payload: payloadData - }; - } - this.options = handleOptions(oldOptions, options, payload, src_logger); - this.options._configuredOptions = handleOptions(oldOptions._configuredOptions, options, payload); - (_this$tracing = this.tracing) === null || _this$tracing === void 0 || _this$tracing.configure(this.options); - (_this$replay = this.replay) === null || _this$replay === void 0 || _this$replay.configure(this.options.replay); - this.client.configure(this.options, payloadData); - (_this$instrumenter = this.instrumenter) === null || _this$instrumenter === void 0 || _this$instrumenter.configure(this.options); - this.setupUnhandledCapture(); - return this; - } - }, { - key: "lastError", - value: function lastError() { - return this.client.lastError; - } - }, { - key: "log", - value: function log() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.log(item); - return { - uuid: uuid - }; - } - }, { - key: "debug", - value: function debug() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.debug(item); - return { - uuid: uuid - }; - } - }, { - key: "info", - value: function info() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.info(item); - return { - uuid: uuid - }; - } - }, { - key: "warn", - value: function warn() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.warn(item); - return { - uuid: uuid - }; + return lines; +} +function parseV8OrIE(error, options) { + return parseV8OrIeString(error.stack, options); +} +function parseV8OrIeString(stack, options) { + var filtered = applySlice(stack.split("\n").filter(function (line) { + return !!line.match(CHROME_IE_STACK_REGEXP); + }), options); + return filtered.map(function (line) { + if (line.includes("(eval ")) { + line = line.replace(/eval code/g, "eval").replace(/(\(eval at [^()]*)|(,.*$)/g, ""); } - }, { - key: "warning", - value: function warning() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.warning(item); + var sanitizedLine = line.replace(/^\s+/, "").replace(/\(eval code/g, "(").replace(/^.*?\s+/, ""); + var location = sanitizedLine.match(/ (\(.+\)$)/); + sanitizedLine = location ? sanitizedLine.replace(location[0], "") : sanitizedLine; + var locationParts = extractLocation(location ? location[1] : sanitizedLine); + var functionName = location && sanitizedLine || undefined; + var fileName = ["eval", ""].includes(locationParts[0]) ? undefined : locationParts[0]; + return { + function: functionName, + file: fileName, + line: locationParts[1] ? +locationParts[1] : undefined, + col: locationParts[2] ? +locationParts[2] : undefined, + raw: line + }; + }); +} +function parseFFOrSafari(error, options) { + return parseFFOrSafariString(error.stack, options); +} +function parseFFOrSafariString(stack, options) { + var filtered = applySlice(stack.split("\n").filter(function (line) { + return !line.match(SAFARI_NATIVE_CODE_REGEXP); + }), options); + return filtered.map(function (line) { + if (line.includes(" > eval")) line = line.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g, ":$1"); + if (!line.includes("@") && !line.includes(":")) { return { - uuid: uuid + function: line }; - } - }, { - key: "error", - value: function error() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.error(item); + } else { + var functionNameRegex = /(([^\n\r"\u2028\u2029]*".[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*(?:@[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*)*(?:[\n\r\u2028\u2029][^@]*)?)?[^@]*)@/; + var matches = line.match(functionNameRegex); + var functionName = matches && matches[1] ? matches[1] : undefined; + var locationParts = extractLocation(line.replace(functionNameRegex, "")); return { - uuid: uuid + function: functionName, + file: locationParts[0], + line: locationParts[1] ? +locationParts[1] : undefined, + col: locationParts[2] ? +locationParts[2] : undefined, + raw: line }; } - }, { - key: "critical", - value: function critical() { - var item = this._createItem(arguments); - var uuid = item.uuid; - this.client.critical(item); - return { - uuid: uuid - }; + }); +} +function parseOpera(e, options) { + if (!e.stacktrace || e.message.includes("\n") && e.message.split("\n").length > e.stacktrace.split("\n").length) return parseOpera9(e);else if (!e.stack) return parseOpera10(e);else return parseOpera11(e, options); +} +function parseOpera9(e, options) { + var lineRE = /Line (\d+).*script (?:in )?(\S+)/i; + var lines = e.message.split("\n"); + var result = []; + for (var i = 2, len = lines.length; i < len; i += 2) { + var match = lineRE.exec(lines[i]); + if (match) { + result.push({ + file: match[2], + line: +match[1], + raw: lines[i] + }); } - }, { - key: "buildJsonPayload", - value: function buildJsonPayload(item) { - return this.client.buildJsonPayload(item); - } - }, { - key: "sendJsonPayload", - value: function sendJsonPayload(jsonPayload) { - return this.client.sendJsonPayload(jsonPayload); - } - }, { - key: "triggerDirectReplay", - value: function triggerDirectReplay(context) { - return this.triggerReplay(core_objectSpread({ - type: 'direct' - }, context)); - } - }, { - key: "triggerReplay", - value: function triggerReplay(context) { - if (!this.replay) return null; - return this.replay.triggerReplay(context); - } - }, { - key: "setupUnhandledCapture", - value: function setupUnhandledCapture() { - var gWindow = _gWindow(); - if (!this.unhandledExceptionsInitialized) { - if (this.options.captureUncaught || this.options.handleUncaughtExceptions) { - captureUncaughtExceptions(gWindow, this); - if (this.wrapGlobals && this.options.wrapGlobalEventHandlers) { - this.wrapGlobals(gWindow, this); - } - this.unhandledExceptionsInitialized = true; - } - } - if (!this.unhandledRejectionsInitialized) { - if (this.options.captureUnhandledRejections || this.options.handleUnhandledRejections) { - captureUnhandledRejections(gWindow, this); - this.unhandledRejectionsInitialized = true; - } - } - } - }, { - key: "handleUncaughtException", - value: function handleUncaughtException(message, url, lineno, colno, error, context) { - if (!this.options.captureUncaught && !this.options.handleUncaughtExceptions) { - return; - } - - // Chrome will always send 5+ arguments and error will be valid or null, not undefined. - // If error is undefined, we have a different caller. - // Chrome also sends errors from web workers with null error, but does not invoke - // prepareStackTrace() for these. Test for empty url to skip them. - if (this.options.inspectAnonymousErrors && this.isChrome && error === null && url === '') { - return 'anonymous'; - } - var item; - var stackInfo = makeUnhandledStackInfo(message, url, lineno, colno, error, 'onerror', 'uncaught exception', errorParser); - if (isError(error)) { - item = this._createItem([message, error, context]); - item._unhandledStackInfo = stackInfo; - } else if (isError(url)) { - item = this._createItem([message, url, context]); - item._unhandledStackInfo = stackInfo; - } else { - item = this._createItem([message, context]); - item.stackInfo = stackInfo; - } - item.level = this.options.uncaughtErrorLevel; - item._isUncaught = true; - this.client.log(item); + } + return applySlice(result, options); +} +function parseOpera10(e, options) { + var lineRE = /Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i; + var lines = e.stacktrace.split("\n"); + var result = []; + for (var i = 0, len = lines.length; i < len; i += 2) { + var match = lineRE.exec(lines[i]); + if (match) { + result.push({ + function: match[3] || undefined, + file: match[2], + line: match[1] ? +match[1] : undefined, + raw: lines[i] + }); } + } + return applySlice(result, options); +} +function parseOpera11(error, options) { + var filtered = applySlice( + // @ts-expect-error missing stack property + error.stack.split("\n").filter(function (line) { + return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/); + }), options); + return filtered.map(function (line) { + var tokens = line.split("@"); + var locationParts = extractLocation(tokens.pop()); + var functionCall = tokens.shift() || ""; + var functionName = functionCall.replace(//, "$2").replace(/\([^)]*\)/g, "") || undefined; + var argsRaw; + if (functionCall.match(/\(([^)]*)\)/)) argsRaw = functionCall.replace(/^[^(]+\(([^)]*)\)$/, "$1"); + var args = argsRaw === undefined || argsRaw === "[arguments not available]" ? undefined : argsRaw.split(","); + return { + function: functionName, + args: args, + file: locationParts[0], + line: locationParts[1] ? +locationParts[1] : undefined, + col: locationParts[2] ? +locationParts[2] : undefined, + raw: line + }; + }); +} - /** - * Chrome only. Other browsers will ignore. - * - * Use Error.prepareStackTrace to extract information about errors that - * do not have a valid error object in onerror(). - * - * In tested version of Chrome, onerror is called first but has no way - * to communicate with prepareStackTrace. Use a counter to let this - * handler know which errors to send to Rollbar. - * - * In config options, set inspectAnonymousErrors to enable. - */ - }, { - key: "handleAnonymousErrors", - value: function handleAnonymousErrors() { - if (!this.options.inspectAnonymousErrors || !this.isChrome) { - return; - } - var r = this; - function prepareStackTrace(error, _stack) { - if (r.options.inspectAnonymousErrors) { - if (r.anonymousErrorsPending) { - // This is the only known way to detect that onerror saw an anonymous error. - // It depends on onerror reliably being called before Error.prepareStackTrace, - // which so far holds true on tested versions of Chrome. If versions of Chrome - // are tested that behave differently, this logic will need to be updated - // accordingly. - r.anonymousErrorsPending -= 1; - if (!error) { - // Not likely to get here, but calling handleUncaughtException from here - // without an error object would throw off the anonymousErrorsPending counter, - // so return now. - return; - } +;// ./node_modules/error-stack-parser-es/dist/index.mjs +/* unused harmony import specifier */ var parseV8OrIE$1; +/* unused harmony import specifier */ var parseFFOrSafari$1; +/* unused harmony import specifier */ var parseOpera$1; +/* unused harmony import specifier */ var parseOpera9$1; +/* unused harmony import specifier */ var parseOpera10$1; +/* unused harmony import specifier */ var parseOpera11$1; - // Allow this to be tracked later. - error._isAnonymous = true; - // url, lineno, colno shouldn't be needed for these errors. - // If that changes, update this accordingly, using the unused - // _stack param as needed (rather than parse error.toString()). - r.handleUncaughtException(error.message, null, null, null, error); - } - } +function stackframesLiteToStackframes(liteStackframes) { + return liteStackframes.map(function (liteStackframe) { + return { + functionName: liteStackframe.function, + args: liteStackframe.args, + fileName: liteStackframe.file, + lineNumber: liteStackframe.line, + columnNumber: liteStackframe.col, + source: liteStackframe.raw + }; + }); +} +function dist_parse(error, options) { + return stackframesLiteToStackframes(parse(error, options)); +} +function dist_parseV8OrIE(error) { + return stackframesLiteToStackframes(parseV8OrIE$1(error)); +} +function dist_parseFFOrSafari(error) { + return stackframesLiteToStackframes(parseFFOrSafari$1(error)); +} +function dist_parseOpera(e) { + return stackframesLiteToStackframes(parseOpera$1(e)); +} +function dist_parseOpera9(e) { + return stackframesLiteToStackframes(parseOpera9$1(e)); +} +function dist_parseOpera10(e) { + return stackframesLiteToStackframes(parseOpera10$1(e)); +} +function dist_parseOpera11(error) { + return stackframesLiteToStackframes(parseOpera11$1(error)); +} - // Workaround to ensure stack is preserved for normal errors. - return error.stack; - } +;// ./src/errorParser.js - // https://v8.dev/docs/stack-trace-api - try { - Error.prepareStackTrace = prepareStackTrace; - } catch (e) { - this.options.inspectAnonymousErrors = false; - this.error('anonymous error handler failed', e); - } +var UNKNOWN_FUNCTION = '?'; +var ERR_CLASS_REGEXP = new RegExp('^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): '); +function guessFunctionName() { + return UNKNOWN_FUNCTION; +} +function gatherContext() { + return null; +} +function Frame(stackFrame) { + var data = {}; + data._stackFrame = stackFrame; + data.url = stackFrame.fileName; + data.line = stackFrame.lineNumber; + data.func = stackFrame.functionName; + data.column = stackFrame.columnNumber; + data.args = stackFrame.args; + data.context = gatherContext(); + return data; +} +function Stack(exception, skip) { + function getStack() { + var parserStack = []; + skip = skip || 0; + try { + parserStack = dist_parse(exception); + } catch (_e) { + parserStack = []; } - }, { - key: "handleUnhandledRejection", - value: function handleUnhandledRejection(reason, promise) { - if (!this.options.captureUnhandledRejections && !this.options.handleUnhandledRejections) { - return; - } - var message = 'unhandled rejection was null or undefined!'; - if (reason) { - if (reason.message) { - message = reason.message; - } else { - var reasonResult = stringify(reason); - if (reasonResult.value) { - message = reasonResult.value; - } - } - } - var context = reason && reason._rollbarContext || promise && promise._rollbarContext; - var item; - if (isError(reason)) { - item = this._createItem([message, reason, context]); - } else { - item = this._createItem([message, reason, context]); - item.stackInfo = makeUnhandledStackInfo(message, '', 0, 0, null, 'unhandledrejection', '', errorParser); - } - item.level = this.options.uncaughtErrorLevel; - item._isUncaught = true; - item._originalArgs = item._originalArgs || []; - item._originalArgs.push(promise); - this.client.log(item); + var stack = []; + for (var i = skip; i < parserStack.length; i++) { + stack.push(new Frame(parserStack[i])); } - }, { - key: "wrap", - value: function wrap(f, context, _before) { - try { - var ctxFn; - if (isFunction(context)) { - ctxFn = context; - } else { - ctxFn = function ctxFn() { - return context || {}; - }; - } - if (!isFunction(f)) { - return f; - } - if (f._isWrap) { - return f; - } - if (!f._rollbar_wrapped) { - f._rollbar_wrapped = function () { - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } - try { - return f.apply(this, arguments); - } catch (exc) { - var e = exc; - if (e && window._rollbarWrappedError !== e) { - if (isType(e, 'string')) { - e = new String(e); - } - e._rollbarContext = ctxFn() || {}; - e._rollbarContext._wrappedSource = f.toString(); - window._rollbarWrappedError = e; - } - throw e; - } - }; - f._rollbar_wrapped._isWrap = true; - if (f.hasOwnProperty) { - for (var prop in f) { - if (f.hasOwnProperty(prop) && prop !== '_rollbar_wrapped') { - f._rollbar_wrapped[prop] = f[prop]; - } - } - } - } - return f._rollbar_wrapped; - } catch (e) { - // Return the original function if the wrap fails. - return f; - } - } - }, { - key: "captureEvent", - value: function captureEvent() { - var event = createTelemetryEvent(arguments); - return this.client.captureEvent(event.type, event.metadata, event.level); - } - }, { - key: "setSessionUser", - value: function setSessionUser(user) { - var _this$tracing2; - if (!((_this$tracing2 = this.tracing) !== null && _this$tracing2 !== void 0 && _this$tracing2.session)) return; - this.tracing.session.setUser(user); - } - }, { - key: "setSessionAttributes", - value: function setSessionAttributes(attrs) { - var _this$tracing3; - if (!((_this$tracing3 = this.tracing) !== null && _this$tracing3 !== void 0 && _this$tracing3.session)) return; - attrs = core_objectSpread({}, attrs); - this.tracing.session.setAttributes(attrs); - } - }, { - key: "setSessionAttributesFromOptions", - value: function setSessionAttributesFromOptions(options) { - var _options$payload, _options$client, _options$payload2, _options$payload3, _options$payload4; - var person = options.person || ((_options$payload = options.payload) === null || _options$payload === void 0 ? void 0 : _options$payload.person); - if (person) { - this.setSessionUser(person); - } - var code_version = ((_options$client = options.client) === null || _options$client === void 0 || (_options$client = _options$client.javascript) === null || _options$client === void 0 ? void 0 : _options$client.code_version) || options.codeVersion || options.code_version || ((_options$payload2 = options.payload) === null || _options$payload2 === void 0 || (_options$payload2 = _options$payload2.client) === null || _options$payload2 === void 0 || (_options$payload2 = _options$payload2.javascript) === null || _options$payload2 === void 0 ? void 0 : _options$payload2.code_version) || ((_options$payload3 = options.payload) === null || _options$payload3 === void 0 ? void 0 : _options$payload3.code_version) || ((_options$payload4 = options.payload) === null || _options$payload4 === void 0 ? void 0 : _options$payload4.codeVersion); - this.setSessionAttributes({ - 'rollbar.codeVersion': code_version, - 'rollbar.notifier.name': 'rollbar-browser-js', - 'rollbar.notifier.version': options.version - }); + return stack; + } + return { + stack: getStack(), + message: exception.message, + name: _mostSpecificErrorName(exception), + rawStack: exception.stack, + rawException: exception + }; +} +function errorParser_parse(e, skip) { + var err = e; + if (err.nested || err.cause) { + var traceChain = []; + while (err) { + traceChain.push(new Stack(err, skip)); + err = err.nested || err.cause; + skip = 0; // Only apply skip value to primary error } - // The following two methods are used internally and are not meant for public use - }, { - key: "captureDomContentLoaded", - value: function captureDomContentLoaded(e, ts) { - if (!ts) { - ts = new Date(); + // Return primary error with full trace chain attached. + traceChain[0].traceChain = traceChain; + return traceChain[0]; + } else { + return new Stack(err, skip); + } +} +function guessErrorClass(errMsg) { + if (!errMsg || !errMsg.match) { + return ['Unknown error. There was no error message to display.', '']; + } + var errClassMatch = errMsg.match(ERR_CLASS_REGEXP); + var errClass = '(unknown)'; + if (errClassMatch) { + errClass = errClassMatch[errClassMatch.length - 1]; + errMsg = errMsg.replace((errClassMatch[errClassMatch.length - 2] || '') + errClass + ':', ''); + errMsg = errMsg.replace(/(^[\s]+|[\s]+$)/g, ''); + } + return [errClass, errMsg]; +} + +// * Prefers any value over an empty string +// * Prefers any value over 'Error' where possible +// * Prefers name over constructor.name when both are more specific than 'Error' +function _mostSpecificErrorName(error) { + var name = error.name && error.name.length && error.name; + var constructorName = error.constructor.name && error.constructor.name.length && error.constructor.name; + if (!name || !constructorName) { + return name || constructorName; + } + if (name === 'Error') { + return constructorName; + } + return name; +} +/* harmony default export */ var errorParser = ({ + guessFunctionName: guessFunctionName, + guessErrorClass: guessErrorClass, + gatherContext: gatherContext, + parse: errorParser_parse, + Stack: Stack, + Frame: Frame +}); +;// ./src/predicates.js +function predicates_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = predicates_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function predicates_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return predicates_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? predicates_arrayLikeToArray(r, a) : void 0; } } +function predicates_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } + +function checkLevel(item, settings) { + var level = item.level; + var levelVal = LEVELS[level] || 0; + var reportLevel = settings.reportLevel; + var reportLevelVal = LEVELS[reportLevel] || 0; + if (levelVal < reportLevelVal) { + return false; + } + return true; +} +function userCheckIgnore(logger) { + return function (item, settings) { + var isUncaught = Boolean(item._isUncaught); + delete item._isUncaught; + var args = item._originalArgs; + delete item._originalArgs; + try { + if (isFunction(settings.onSendCallback)) { + settings.onSendCallback(isUncaught, args, item); } - return this.client.captureDomContentLoaded(ts); + } catch (e) { + settings.onSendCallback = null; + logger.error('Error while calling onSendCallback, removing', e); } - }, { - key: "captureLoad", - value: function captureLoad(e, ts) { - if (!ts) { - ts = new Date(); + try { + if (isFunction(settings.checkIgnore) && settings.checkIgnore(isUncaught, args, item)) { + return false; } - return this.client.captureLoad(ts); + } catch (e) { + settings.checkIgnore = null; + logger.error('Error while calling custom checkIgnore(), removing', e); } - }, { - key: "loadFull", - value: function loadFull() { - src_logger.info('Unexpected Rollbar.loadFull() called on a Notifier instance. This can happen when Rollbar is loaded multiple times.'); + return true; + }; +} +function urlIsNotBlockListed(logger) { + return function (item, settings) { + return !urlIsOnAList(item, settings, 'blocklist', logger); + }; +} +function urlIsSafeListed(logger) { + return function (item, settings) { + return urlIsOnAList(item, settings, 'safelist', logger); + }; +} +function matchFrames(trace, list, block) { + if (!trace) { + return !block; + } + var frames = trace.frames; + if (!frames || frames.length === 0) { + return !block; + } + var frame, filename, url, urlRegex; + var listLength = list.length; + var frameLength = frames.length; + for (var i = 0; i < frameLength; i++) { + frame = frames[i]; + filename = frame.filename; + if (!isType(filename, 'string')) { + return !block; } - }, { - key: "_createItem", - value: function _createItem(args) { - return createItem(args, src_logger, this); + for (var j = 0; j < listLength; j++) { + url = list[j]; + urlRegex = new RegExp(url); + if (urlRegex.test(filename)) { + return true; + } } + } + return false; +} +function urlIsOnAList(item, settings, safeOrBlock, logger) { + // safelist is the default + var block = false; + if (safeOrBlock === 'blocklist') { + block = true; + } + var list, traces; + try { + list = block ? settings.hostBlockList : settings.hostSafeList; + traces = get(item, 'body.trace_chain') || [get(item, 'body.trace')]; - // Static version of instance methods support the legacy pattern of a - // global `Rollbar` instance, where after calling `Rollbar.init()`, - // `Rollbar` can be used as if it were an instance. - // If support for this pattern is dropped, these static methods can be removed. - }], [{ - key: "init", - value: function init(options, client) { - if (_instance) { - return _instance.global(options).configure(options); - } - _instance = new Rollbar(options, client); - return _instance; + // These two checks are important to come first as they are defaults + // in case the list is missing or the trace is missing or not well-formed + if (!list || list.length === 0) { + return !block; } - }, { - key: "setComponents", - value: function setComponents(components) { - Rollbar.prototype.components = components; + if (traces.length === 0 || !traces[0]) { + return !block; } - }, { - key: "callInstance", - value: function callInstance(method, args) { - if (!_instance) { - var message = 'Rollbar is not initialized'; - src_logger.error(message); - var maybeCallback = _getFirstFunction(args); - if (maybeCallback) { - maybeCallback(new Error(message)); - } - return; + var tracesLength = traces.length; + for (var i = 0; i < tracesLength; i++) { + if (matchFrames(traces[i], list, block)) { + return true; } - return _instance[method].apply(_instance, args); } - }]); -}(); -/* Internal */ -_Rollbar = core_Rollbar; -core_defineProperty(core_Rollbar, "global", function () { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - return _Rollbar.callInstance('global', args); -}); -core_defineProperty(core_Rollbar, "configure", function () { - for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - return _Rollbar.callInstance('configure', args); -}); -core_defineProperty(core_Rollbar, "lastError", function () { - for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } - return _Rollbar.callInstance('lastError', args); -}); -core_defineProperty(core_Rollbar, "log", function () { - for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; - } - return _Rollbar.callInstance('log', args); -}); -core_defineProperty(core_Rollbar, "debug", function () { - for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { - args[_key5] = arguments[_key5]; - } - return _Rollbar.callInstance('debug', args); -}); -core_defineProperty(core_Rollbar, "info", function () { - for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { - args[_key6] = arguments[_key6]; - } - return _Rollbar.callInstance('info', args); -}); -core_defineProperty(core_Rollbar, "warn", function () { - for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { - args[_key7] = arguments[_key7]; - } - return _Rollbar.callInstance('warn', args); -}); -core_defineProperty(core_Rollbar, "warning", function () { - for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { - args[_key8] = arguments[_key8]; - } - return _Rollbar.callInstance('warning', args); -}); -core_defineProperty(core_Rollbar, "error", function () { - for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) { - args[_key9] = arguments[_key9]; - } - return _Rollbar.callInstance('error', args); -}); -core_defineProperty(core_Rollbar, "critical", function () { - for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) { - args[_key10] = arguments[_key10]; - } - return _Rollbar.callInstance('critical', args); -}); -core_defineProperty(core_Rollbar, "buildJsonPayload", function () { - for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) { - args[_key11] = arguments[_key11]; - } - return _Rollbar.callInstance('buildJsonPayload', args); -}); -core_defineProperty(core_Rollbar, "sendJsonPayload", function () { - for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) { - args[_key12] = arguments[_key12]; - } - return _Rollbar.callInstance('sendJsonPayload', args); -}); -core_defineProperty(core_Rollbar, "wrap", function () { - for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) { - args[_key13] = arguments[_key13]; - } - return _Rollbar.callInstance('wrap', args); -}); -core_defineProperty(core_Rollbar, "captureEvent", function () { - for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) { - args[_key14] = arguments[_key14]; + } catch (e + /* istanbul ignore next */) { + if (block) { + settings.hostBlockList = null; + } else { + settings.hostSafeList = null; + } + var listName = block ? 'hostBlockList' : 'hostSafeList'; + logger.error("Error while reading your configuration's " + listName + ' option. Removing custom ' + listName + '.', e); + return !block; } - return _Rollbar.callInstance('captureEvent', args); -}); -function addTransformsToNotifier(notifier, rollbar, gWindow) { - notifier.addTransform(handleDomException).addTransform(handleItemWithError).addTransform(ensureItemHasSomethingToSay).addTransform(addBaseInfo).addTransform(addRequestInfo(gWindow)).addTransform(addClientInfo(gWindow)).addTransform(addPluginInfo(gWindow)).addTransform(addBody).addTransform(addMessageWithError).addTransform(addTelemetryData).addTransform(addConfigToPayload).addTransform(addScrubber(rollbar.scrub)).addTransform(addPayloadOptions).addTransform(userTransform(src_logger)).addTransform(addConfiguredOptions).addTransform(addDiagnosticKeys).addTransform(itemToPayload); + return false; } -function addPredicatesToQueue(queue) { - queue.addPredicate(checkLevel).addPredicate(checkIgnore).addPredicate(userCheckIgnore(src_logger)).addPredicate(urlIsNotBlockListed(src_logger)).addPredicate(urlIsSafeListed(src_logger)).addPredicate(messageIsIgnored(src_logger)); +function messageIsIgnored(logger) { + return function (item, settings) { + var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages; + try { + messageIsIgnored = false; + ignoredMessages = settings.ignoredMessages; + if (!ignoredMessages || ignoredMessages.length === 0) { + return true; + } + messages = messagesFromItem(item); + if (messages.length === 0) { + return true; + } + len = ignoredMessages.length; + for (i = 0; i < len; i++) { + rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi'); + for (j = 0; j < messages.length; j++) { + messageIsIgnored = rIgnoredMessage.test(messages[j]); + if (messageIsIgnored) { + return false; + } + } + } + } catch (_e + /* istanbul ignore next */) { + settings.ignoredMessages = null; + logger.error("Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages."); + } + return true; + }; } -function _getFirstFunction(args) { - for (var i = 0, len = args.length; i < len; ++i) { - if (isFunction(args[i])) { - return args[i]; +function messagesFromItem(item) { + var body = item.body; + var messages = []; + + // The payload schema only allows one of trace_chain, message, or trace. + // However, existing test cases are based on having both trace and message present. + // So here we preserve the ability to collect strings from any combination of these keys. + if (body.trace_chain) { + var traceChain = body.trace_chain; + var _iterator = predicates_createForOfIteratorHelper(traceChain), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var trace = _step.value; + messages.push(get(trace, 'exception.message')); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); } } - return undefined; -} -function _gWindow() { - return typeof window != 'undefined' && window || typeof self != 'undefined' && self; + if (body.trace) { + messages.push(get(body, 'trace.exception.message')); + } + if (body.message) { + messages.push(get(body, 'message.body')); + } + return messages; } +;// ./src/notifier.js +function notifier_typeof(o) { "@babel/helpers - typeof"; return notifier_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, notifier_typeof(o); } +function notifier_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function notifier_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, notifier_toPropertyKey(o.key), o); } } +function notifier_createClass(e, r, t) { return r && notifier_defineProperties(e.prototype, r), t && notifier_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function notifier_toPropertyKey(t) { var i = notifier_toPrimitive(t, "string"); return "symbol" == notifier_typeof(i) ? i : i + ""; } +function notifier_toPrimitive(t, r) { if ("object" != notifier_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != notifier_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -var core_defaultOptions = { - environment: 'unknown', - version: version, - scrubFields: browser_defaults.scrubFields, - logLevel: logLevel, - reportLevel: reportLevel, - uncaughtErrorLevel: uncaughtErrorLevel, - endpoint: endpoint, - verbose: false, - enabled: true, - transmit: true, - sendConfig: false, - includeItemsInTelemetry: true, - captureIp: true, - inspectAnonymousErrors: true, - ignoreDuplicateErrors: true, - wrapGlobalEventHandlers: false, - replay: defaults, - tracing: tracing_defaults -}; -/* harmony default export */ var core = (core_Rollbar); -;// ./src/telemetry.js -var _excluded = ["otelAttributes"]; -function telemetry_typeof(o) { "@babel/helpers - typeof"; return telemetry_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, telemetry_typeof(o); } -function telemetry_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function telemetry_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? telemetry_ownKeys(Object(t), !0).forEach(function (r) { telemetry_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : telemetry_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function telemetry_defineProperty(e, r, t) { return (r = telemetry_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } -function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } -function telemetry_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function telemetry_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, telemetry_toPropertyKey(o.key), o); } } -function telemetry_createClass(e, r, t) { return r && telemetry_defineProperties(e.prototype, r), t && telemetry_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function telemetry_toPropertyKey(t) { var i = telemetry_toPrimitive(t, "string"); return "symbol" == telemetry_typeof(i) ? i : i + ""; } -function telemetry_toPrimitive(t, r) { if ("object" != telemetry_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != telemetry_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - -var MAX_EVENTS = 100; -// Temporary workaround while solving commonjs -> esm issues in Node 18 - 20. -function fromMillis(millis) { - return [Math.trunc(millis / 1000), Math.round(millis % 1000 * 1e6)]; -} -var Telemeter = /*#__PURE__*/function () { - function Telemeter(options, tracing) { - var _this$tracing; - telemetry_classCallCheck(this, Telemeter); - this.queue = []; - this.options = src_merge(options); - var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS; - this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS)); - this.tracing = tracing; - this.telemetrySpan = (_this$tracing = this.tracing) === null || _this$tracing === void 0 ? void 0 : _this$tracing.startSpan('rollbar-telemetry', {}); +/* + * Notifier - delegates between the client exposed API, the chain of transforms + * necessary to turn an item into something that can be sent to Rollbar, and the + * queue which handles the communcation with the Rollbar API servers. + */ +var Notifier = /*#__PURE__*/function () { + /** + * + * @param {Object} queue - an object that conforms to the interface: + * `addItem(item, callback)` + * @param {Object} options - an object representing the options to be set for + * this notifier, this should have any defaults already set by the caller + */ + function Notifier(queue, options) { + notifier_classCallCheck(this, Notifier); + this.queue = queue; + this.options = options; + this.transforms = []; + this.diagnostic = {}; } - return telemetry_createClass(Telemeter, [{ + + /** + * configure - updates the options for this notifier with the passed in object + * + * @param {Object} options - an object which gets merged with the current + * options set on this notifier + * @returns this + */ + return notifier_createClass(Notifier, [{ key: "configure", value: function configure(options) { + var _this$queue; + (_this$queue = this.queue) === null || _this$queue === void 0 || _this$queue.configure(options); var oldOptions = this.options; - this.options = src_merge(oldOptions, options); - var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS; - var newMaxEvents = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS)); - var deleteCount = 0; - if (this.queue.length > newMaxEvents) { - deleteCount = this.queue.length - newMaxEvents; - } - this.maxQueueSize = newMaxEvents; - this.queue.splice(0, deleteCount); + this.options = merge(oldOptions, options); + return this; } + + /** + * Adds a transform onto the end of the queue of transforms for this notifier + * + * @param {Function} transform - a function which takes three arguments: + * - item: An Object representing the data to eventually be sent to Rollbar + * - options: The current value of the options for this notifier + * - callback: `function(err: (Null|Error), item: (Null|Object))` the + * transform must call this callback with a null value for error if it + * wants the processing chain to continue, otherwise with an error to + * terminate the processing. The item should be the updated item after + * this transform is finished modifying it. + */ }, { - key: "copyEvents", - value: function copyEvents() { - var events = Array.prototype.slice.call(this.queue, 0); - if (isFunction(this.options.filterTelemetry)) { - try { - var i = events.length; - while (i--) { - if (this.options.filterTelemetry(events[i])) { - events.splice(i, 1); - } - } - } catch (e) { - this.options.filterTelemetry = null; - } + key: "addTransform", + value: function addTransform(transform) { + if (isFunction(transform)) { + this.transforms.push(transform); } + return this; + } - // Filter until supported in legacy telemetry - events = events.filter(function (e) { - return e.type !== 'connectivity'; + /** + * The internal log function which applies the configured transforms and then + * pushes onto the queue to be sent to the backend. + * + * @param {Object} item - An object with the following structure: + * - message [String] - An optional string to be sent to rollbar + * - error [Error] - An optional error + * @param {Function} callback - A function of type `function(err, resp)` which + * will be called with exactly one null argument and one non-null argument. + * The callback will be called once, either during the transform stage if + * an error occurs inside a transform, or in response to the communication + * with the backend. The second argument will be the response from the + * backend in case of success. + */ + }, { + key: "log", + value: function log(item, callback) { + var _this = this; + callback = isFunction(callback) ? callback : function () {}; + if (!this.options.enabled) { + return callback(new Error('Rollbar is not enabled'), null); + } + this.queue.addPendingItem(item); + var originalError = item.err; + this._applyTransforms(item, function (err, i) { + if (err) { + _this.queue.removePendingItem(item); + return callback(err, null); + } + _this.queue.addItem(i, callback, originalError, item); }); + } - // Remove internal keys from output - events = events.map(function (_ref) { - var otelAttributes = _ref.otelAttributes, - event = _objectWithoutProperties(_ref, _excluded); - return event; - }); - return events; - } + /* Internal */ + + /** + * Applies the transforms that have been added to this notifier sequentially. + * See `addTransform` for more information. + * + * @param {Object} item - An item to be transformed + * @param {Function} callback - A function of type `function(err, item)` which + * will be called with a non-null error and a null item in the case of a + * transform failure, or a null error and non-null item after all + * transforms have been applied. + */ }, { - key: "exportTelemetrySpan", - value: function exportTelemetrySpan() { - var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - if (this.telemetrySpan) { - this.telemetrySpan.end(attributes); - this.telemetrySpan = this.tracing.startSpan('rollbar-telemetry', {}); - } + key: "_applyTransforms", + value: function _applyTransforms(item, callback) { + var transformIndex = -1; + var transformsLength = this.transforms.length; + var transforms = this.transforms; + var options = this.options; + var _next = function next(err, i) { + if (err) { + callback(err, null); + return; + } + transformIndex++; + if (transformIndex === transformsLength) { + callback(null, i); + return; + } + transforms[transformIndex](i, options, _next); + }; + _next(null, item); + } + }]); +}(); + +;// ./src/queue.js +function queue_typeof(o) { "@babel/helpers - typeof"; return queue_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, queue_typeof(o); } +function queue_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function queue_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, queue_toPropertyKey(o.key), o); } } +function queue_createClass(e, r, t) { return r && queue_defineProperties(e.prototype, r), t && queue_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function queue_defineProperty(e, r, t) { return (r = queue_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function queue_toPropertyKey(t) { var i = queue_toPrimitive(t, "string"); return "symbol" == queue_typeof(i) ? i : i + ""; } +function queue_toPrimitive(t, r) { if ("object" != queue_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != queue_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + + +/** + * Queue - an object which handles which handles a queue of items to be sent to Rollbar. + * This object handles rate limiting via a passed in rate limiter, retries based on connection + * errors, and filtering of items based on a set of configurable predicates. The communication to + * the backend is performed via a given API object. + */ +var Queue = /*#__PURE__*/function () { + /** + * @param rateLimiter - An object which conforms to the interface + * `rateLimiter.shouldSend(item) -> bool` + * @param api - An object which conforms to the interface + * `api.postItem(payload, function(err, response))` + * @param logger - An object used to log verbose messages if desired + * @param options - see `Queue.prototype.configure` + * @param replay - Optional `Replay` for coordinating session replay with error occurrences + */ + function Queue(rateLimiter, api, logger, options, replay) { + queue_classCallCheck(this, Queue); + this.rateLimiter = rateLimiter; + this.api = api; + this.logger = logger; + this.options = options; + this.replay = replay; + this.predicates = []; + this.pendingItems = []; + this.pendingRequests = []; + this.retryQueue = []; + this.retryHandle = null; + this.waitCallback = null; + this.waitIntervalID = null; + } + + /** + * configure - updates the options this queue uses + * + * @param options + */ + return queue_createClass(Queue, [{ + key: "configure", + value: function configure(options) { + var _this$api; + (_this$api = this.api) === null || _this$api === void 0 || _this$api.configure(options); + var oldOptions = this.options; + this.options = merge(oldOptions, options); + return this; } + + /** + * addPredicate - adds a predicate to the end of the list of predicates for this queue + * + * @param predicate - function(item, options) -> (bool|{err: Error}) + * Returning true means that this predicate passes and the item is okay to go on the queue + * Returning false means do not add the item to the queue, but it is not an error + * Returning {err: Error} means do not add the item to the queue, and the given error explains why + * Returning {err: undefined} is equivalent to returning true but don't do that + */ }, { - key: "capture", - value: function capture(type, metadata, level, rollbarUUID) { - var timestamp = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null; - var otelAttributes = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null; - var e = { - level: getLevel(type, level), - type: type, - timestamp_ms: timestamp || utility_now(), - body: metadata, - source: 'client' - }; - if (rollbarUUID) { - e.uuid = rollbarUUID; - } - if (otelAttributes) { - e.otelAttributes = otelAttributes; - } - try { - if (isFunction(this.options.filterTelemetry) && this.options.filterTelemetry(e)) { - return false; - } - } catch (exc) { - this.options.filterTelemetry = null; + key: "addPredicate", + value: function addPredicate(predicate) { + if (isFunction(predicate)) { + this.predicates.push(predicate); } - this.push(e); - return e; + return this; } }, { - key: "captureEvent", - value: function captureEvent(type, metadata, level, rollbarUUID) { - return this.capture(type, metadata, level, rollbarUUID); + key: "addPendingItem", + value: function addPendingItem(item) { + this.pendingItems.push(item); } }, { - key: "captureError", - value: function captureError(err, level, rollbarUUID, timestamp) { - var _this$telemetrySpan; - var message = err.message || String(err); - var metadata = { - message: message - }; - if (err.stack) { - metadata.stack = err.stack; + key: "removePendingItem", + value: function removePendingItem(item) { + var idx = this.pendingItems.indexOf(item); + if (idx !== -1) { + this.pendingItems.splice(idx, 1); } - var otelAttributes = { - message: message, - level: level, - type: 'error', - uuid: rollbarUUID - }; - (_this$telemetrySpan = this.telemetrySpan) === null || _this$telemetrySpan === void 0 || _this$telemetrySpan.addEvent('rollbar-occurrence-event', otelAttributes, fromMillis(timestamp)); - return this.capture('error', metadata, level, rollbarUUID, timestamp, otelAttributes); } - }, { - key: "captureLog", - value: function captureLog(message, level, rollbarUUID, timestamp) { - var otelAttributes = null; - // If the uuid is present, this is a message occurrence. - if (rollbarUUID) { - var _this$telemetrySpan2; - otelAttributes = { - message: message, - level: level, - type: 'message', - uuid: rollbarUUID - }, (_this$telemetrySpan2 = this.telemetrySpan) === null || _this$telemetrySpan2 === void 0 ? void 0 : _this$telemetrySpan2.addEvent('rollbar-occurrence-event', otelAttributes, fromMillis(timestamp)); - } else { - var _this$telemetrySpan3; - otelAttributes = { - message: message, - level: level + /** + * addItem - Send an item to the Rollbar API if all of the predicates are satisfied + * + * @param item - Item instance with the payload to send to the backend + * @param callback - function(error, repsonse) which will be called with the response from the API + * in the case of a success, otherwise response will be null and error will have a value. If both + * error and response are null then the item was stopped by a predicate which did not consider this + * to be an error condition, but nonetheless did not send the item to the API. + * @param originalError - The original error before any transformations that is to be logged if any + * @param originalItem - The original item before transforms, used in pendingItems queue + */ + }, { + key: "addItem", + value: function addItem(item, callback, originalError, originalItem) { + var _this = this; + if (!callback || !isFunction(callback)) { + callback = function callback() { + return; }; - (_this$telemetrySpan3 = this.telemetrySpan) === null || _this$telemetrySpan3 === void 0 || _this$telemetrySpan3.addEvent('rollbar-log-event', otelAttributes, fromMillis(timestamp)); } - return this.capture('log', { - message: message - }, level, rollbarUUID, timestamp, otelAttributes); - } - }, { - key: "captureNetwork", - value: function captureNetwork(metadata, subtype, rollbarUUID, requestData) { - var _metadata$response, _this$telemetrySpan4; - subtype = subtype || 'xhr'; - metadata.subtype = metadata.subtype || subtype; - if (requestData) { - metadata.request = requestData; + var data = item.data; + var predicateResult = this._applyPredicates(data); + if (predicateResult.stop) { + this.removePendingItem(originalItem); + callback(predicateResult.err); + return; } - var level = this.levelFromStatus(metadata.status_code); - var endTimeNano = (metadata.end_time_ms || 0) * 1e6; - var otelAttributes = { - type: metadata.subtype, - method: metadata.method, - url: metadata.url, - statusCode: metadata.status_code, - 'request.headers': JSON.stringify(metadata.request_headers || {}), - 'response.headers': JSON.stringify(((_metadata$response = metadata.response) === null || _metadata$response === void 0 ? void 0 : _metadata$response.headers) || {}), - 'response.timeUnixNano': endTimeNano.toString() - }; - (_this$telemetrySpan4 = this.telemetrySpan) === null || _this$telemetrySpan4 === void 0 || _this$telemetrySpan4.addEvent('rollbar-network-event', otelAttributes, fromMillis(metadata.start_time_ms)); - return this.capture('network', metadata, level, rollbarUUID, metadata.start_time_ms, otelAttributes); - } - }, { - key: "levelFromStatus", - value: function levelFromStatus(statusCode) { - if (statusCode >= 200 && statusCode < 400) { - return 'info'; + this._maybeLog(data, originalError); + this.removePendingItem(originalItem); + if (!this.options.transmit) { + callback(new Error('Transmit disabled')); + return; } - if (statusCode === 0 || statusCode >= 400) { - return 'error'; + if (this.replay && data.body) { + item.replayId = this.replay.capture(null, data.uuid, { + type: 'occurrence', + level: item.level + }); + if (item.replayId) { + addItemAttributes(item.data, [{ + key: 'replay_id', + value: item.replayId + }]); + } + } + this.pendingRequests.push(data); + try { + this._makeApiRequest(data, function (err, resp, headers) { + _this._dequeuePendingRequest(data); + if (item.replayId) { + _this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers); + } + callback(err, resp); + }); + } catch (err) { + this._dequeuePendingRequest(data); + if (item.replayId) { + var _this$replay; + (_this$replay = this.replay) === null || _this$replay === void 0 || _this$replay.discard(item.replayId); + } + callback(err); } - return 'info'; } + + /** + * wait - Stop any further errors from being added to the queue, and get called back when all items + * currently processing have finished sending to the backend. + * + * @param callback - function() called when all pending items have been sent + */ }, { - key: "captureDom", - value: function captureDom(subtype, element, value, checked, rollbarUUID) { - var metadata = { - subtype: subtype, - element: element - }; - if (value !== undefined) { - metadata.value = value; + key: "wait", + value: function wait(callback) { + var _this2 = this; + if (!isFunction(callback)) { + return; } - if (checked !== undefined) { - metadata.checked = checked; + this.waitCallback = callback; + if (this._maybeCallWait()) { + return; } - return this.capture('dom', metadata, 'info', rollbarUUID); + if (this.waitIntervalID) { + this.waitIntervalID = clearInterval(this.waitIntervalID); + } + this.waitIntervalID = setInterval(function () { + _this2._maybeCallWait(); + }, 500); } + + /** + * Sequentially applies the predicates that have been added to the queue to the + * given item with the currently configured options. + * + * @param item - An item in the queue + * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue, + * the error value should be passed up to a callbak if we are stopping. + */ }, { - key: "captureInput", - value: function captureInput(_ref2) { - var _this$telemetrySpan5; - var type = _ref2.type, - isSynthetic = _ref2.isSynthetic, - element = _ref2.element, - value = _ref2.value, - timestamp = _ref2.timestamp; - var name = 'rollbar-input-event'; - var metadata = { - type: name, - subtype: type, - element: element, - value: value - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic, - element: element, - value: value, - endTimeUnixNano: fromMillis(timestamp) - }; - var event = this._getRepeatedEvent(name, otelAttributes); - if (event) { - return this._updateRepeatedEvent(event, otelAttributes, timestamp); + key: "_applyPredicates", + value: function _applyPredicates(item) { + var p = null; + for (var i = 0, len = this.predicates.length; i < len; i++) { + p = this.predicates[i](item, this.options); + if (!p || p.err !== undefined) { + return { + stop: true, + err: p.err + }; + } } - (_this$telemetrySpan5 = this.telemetrySpan) === null || _this$telemetrySpan5 === void 0 || _this$telemetrySpan5.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + return { + stop: false, + err: null + }; } + + /** + * Send an item to Rollbar, callback when done, if there is an error make an + * effort to retry if we are configured to do so. + * + * @param item - an item ready to send to the backend + * @param callback - function(err, response) + */ }, { - key: "captureClick", - value: function captureClick(_ref3) { - var _this$telemetrySpan6; - var type = _ref3.type, - isSynthetic = _ref3.isSynthetic, - element = _ref3.element, - timestamp = _ref3.timestamp; - var name = 'rollbar-click-event'; - var metadata = { - type: name, - subtype: type, - element: element - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic, - element: element, - endTimeUnixNano: fromMillis(timestamp) - }; - var event = this._getRepeatedEvent(name, otelAttributes); - if (event) { - return this._updateRepeatedEvent(event, otelAttributes, timestamp); + key: "_makeApiRequest", + value: function _makeApiRequest(item, callback) { + var _this3 = this; + var rateLimitResponse = this.rateLimiter.shouldSend(item); + if (rateLimitResponse.shouldSend) { + this.api.postItem(item, function (err, resp, headers) { + if (err) { + _this3._maybeRetry(err, item, callback); + } else { + callback(err, resp, headers); + } + }); + } else if (rateLimitResponse.error) { + callback(rateLimitResponse.error); + } else { + this.api.postItem(rateLimitResponse.payload, callback); } - (_this$telemetrySpan6 = this.telemetrySpan) === null || _this$telemetrySpan6 === void 0 || _this$telemetrySpan6.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); } + + // These are errors basically mean there is no internet connection }, { - key: "_getRepeatedEvent", - value: function _getRepeatedEvent(name, attributes) { - var lastEvent = this._lastEvent(this.queue); - if (lastEvent && lastEvent.body.type === name && lastEvent.otelAttributes.target === attributes.target) { - return lastEvent; + key: "_maybeRetry", + value: + /** + * Given the error returned by the API, decide if we should retry or just callback + * with the error. + * + * @param err - an error returned by the API transport + * @param item - the item that was trying to be sent when this error occured + * @param callback - function(err, response) + */ + function _maybeRetry(err, item, callback) { + var shouldRetry = false; + if (this.options.retryInterval) { + for (var i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) { + if (err.code === Queue.RETRIABLE_ERRORS[i]) { + shouldRetry = true; + break; + } + } + if (shouldRetry && isFiniteNumber(this.options.maxRetries)) { + item.retries = item.retries ? item.retries + 1 : 1; + if (item.retries > this.options.maxRetries) { + shouldRetry = false; + } + } + } + if (shouldRetry) { + this._retryApiRequest(item, callback); + } else { + callback(err); } } + + /** + * Add an item and a callback to a queue and possibly start a timer to process + * that queue based on the retryInterval in the options for this queue. + * + * @param item - an item that failed to send due to an error we deem retriable + * @param callback - function(err, response) + */ }, { - key: "_updateRepeatedEvent", - value: function _updateRepeatedEvent(event, attributes, timestamp) { - var duration = Math.max(timestamp - event.timestamp_ms, 1); - event.body.value = attributes.value; - event.otelAttributes.value = attributes.value; - event.otelAttributes.height = attributes.height; - event.otelAttributes.width = attributes.width; - event.otelAttributes.textZoomRatio = attributes.textZoomRatio; - event.otelAttributes['endTimeUnixNano'] = fromMillis(timestamp); - event.otelAttributes['durationUnixNano'] = fromMillis(duration); - event.otelAttributes.count = (event.otelAttributes.count || 1) + 1; - event.otelAttributes.rate = event.otelAttributes.count / (duration / 1000); + key: "_retryApiRequest", + value: function _retryApiRequest(item, callback) { + var _this4 = this; + this.retryQueue.push({ + item: item, + callback: callback + }); + if (!this.retryHandle) { + this.retryHandle = setInterval(function () { + while (_this4.retryQueue.length) { + var retryObject = _this4.retryQueue.shift(); + _this4._makeApiRequest(retryObject.item, retryObject.callback); + } + }, this.options.retryInterval); + } } + + /** + * Removes the item from the pending request queue, this queue is used to + * enable to functionality of providing a callback that clients can pass to `wait` to be notified + * when the pending request queue has been emptied. This must be called when the API finishes + * processing this item. If a `wait` callback is configured, it is called by this function. + * + * @param item - the item previously added to the pending request queue + */ }, { - key: "_lastEvent", - value: function _lastEvent(list) { - return list.length > 0 ? list[list.length - 1] : null; + key: "_dequeuePendingRequest", + value: function _dequeuePendingRequest(item) { + var idx = this.pendingRequests.indexOf(item); + if (idx !== -1) { + this.pendingRequests.splice(idx, 1); + this._maybeCallWait(); + } } }, { - key: "captureFocus", - value: function captureFocus(_ref4) { - var _this$telemetrySpan7; - var type = _ref4.type, - isSynthetic = _ref4.isSynthetic, - element = _ref4.element, - timestamp = _ref4.timestamp; - var name = 'rollbar-focus-event'; - var metadata = { - type: name, - subtype: type, - element: element - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic, - element: element - }; - (_this$telemetrySpan7 = this.telemetrySpan) === null || _this$telemetrySpan7 === void 0 || _this$telemetrySpan7.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + key: "_maybeLog", + value: function _maybeLog(data, originalError) { + if (this.logger && this.options.verbose) { + var message = originalError || get(data, 'body.trace.exception.message') || get(data, 'body.trace_chain.0.exception.message'); + if (message) { + this.logger.error(message); + return; + } + message = get(data, 'body.message.body'); + if (message) { + this.logger.log(message); + } + } } }, { - key: "captureResize", - value: function captureResize(_ref5) { - var _this$telemetrySpan8; - var type = _ref5.type, - isSynthetic = _ref5.isSynthetic, - width = _ref5.width, - height = _ref5.height, - textZoomRatio = _ref5.textZoomRatio, - timestamp = _ref5.timestamp; - var name = 'rollbar-resize-event'; - var metadata = { - type: name, - subtype: type, - width: width, - height: height, - textZoomRatio: textZoomRatio - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic, - width: width, - height: height, - textZoomRatio: textZoomRatio - }; - var event = this._getRepeatedEvent(name, otelAttributes); - if (event) { - return this._updateRepeatedEvent(event, otelAttributes, timestamp); + key: "_maybeCallWait", + value: function _maybeCallWait() { + if (isFunction(this.waitCallback) && this.pendingItems.length === 0 && this.pendingRequests.length === 0) { + if (this.waitIntervalID) { + this.waitIntervalID = clearInterval(this.waitIntervalID); + } + this.waitCallback(); + return true; } - (_this$telemetrySpan8 = this.telemetrySpan) === null || _this$telemetrySpan8 === void 0 || _this$telemetrySpan8.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); + return false; } - }, { - key: "captureDragDrop", - value: function captureDragDrop(_ref6) { - var _this$telemetrySpan9; - var type = _ref6.type, - isSynthetic = _ref6.isSynthetic, - element = _ref6.element, - dropEffect = _ref6.dropEffect, - effectAllowed = _ref6.effectAllowed, - kinds = _ref6.kinds, - mediaTypes = _ref6.mediaTypes, - timestamp = _ref6.timestamp; - var name = 'rollbar-dragdrop-event'; - var metadata = { - type: name, - subtype: type, - isSynthetic: isSynthetic - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic - }; - if (type === 'dragstart') { - metadata = telemetry_objectSpread(telemetry_objectSpread({}, metadata), {}, { - element: element, - dropEffect: dropEffect, - effectAllowed: effectAllowed - }); - otelAttributes = telemetry_objectSpread(telemetry_objectSpread({}, otelAttributes), {}, { - element: element, - dropEffect: dropEffect, - effectAllowed: effectAllowed - }); + }]); +}(); +queue_defineProperty(Queue, "RETRIABLE_ERRORS", ['ECONNRESET', 'ENOTFOUND', 'ESOCKETTIMEDOUT', 'ETIMEDOUT', 'ECONNREFUSED', 'EHOSTUNREACH', 'EPIPE', 'EAI_AGAIN']); +/* harmony default export */ var queue = (Queue); +;// ./src/rateLimiter.js +function rateLimiter_typeof(o) { "@babel/helpers - typeof"; return rateLimiter_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, rateLimiter_typeof(o); } +function _readOnlyError(r) { throw new TypeError('"' + r + '" is read-only'); } +function rateLimiter_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function rateLimiter_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, rateLimiter_toPropertyKey(o.key), o); } } +function rateLimiter_createClass(e, r, t) { return r && rateLimiter_defineProperties(e.prototype, r), t && rateLimiter_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function rateLimiter_defineProperty(e, r, t) { return (r = rateLimiter_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function rateLimiter_toPropertyKey(t) { var i = rateLimiter_toPrimitive(t, "string"); return "symbol" == rateLimiter_typeof(i) ? i : i + ""; } +function rateLimiter_toPrimitive(t, r) { if ("object" != rateLimiter_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != rateLimiter_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +/* + * RateLimiter - encapsulates the logic for counting items sent to Rollbar. + * + * @param options - the same options that are accepted by configureGlobal offered as a convenience + */ +var RateLimiter = /*#__PURE__*/function () { + function RateLimiter() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + rateLimiter_classCallCheck(this, RateLimiter); + this.startTime = Date.now(); + this.counter = 0; + this.perMinCounter = 0; + this.platform = null; + this.platformOptions = {}; + this.configureGlobal(options); + } + + /* + * configureGlobal - set the global rate limiter options + * + * @param options - Only the following values are recognized: + * startTime: a timestamp of the form returned by (new Date()).getTime() + * maxItems: the maximum items + * itemsPerMinute: the max number of items to send in a given minute + */ + return rateLimiter_createClass(RateLimiter, [{ + key: "configureGlobal", + value: function configureGlobal() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var startTime = options.startTime, + maxItems = options.maxItems, + itemsPerMinute = options.itemsPerMinute; + if (startTime !== undefined) { + RateLimiter.globalSettings.startTime = startTime; } - if (type === 'drop') { - metadata = telemetry_objectSpread(telemetry_objectSpread({}, metadata), {}, { - element: element, - dropEffect: dropEffect, - effectAllowed: effectAllowed, - kinds: kinds, - mediaTypes: mediaTypes - }); - otelAttributes = telemetry_objectSpread(telemetry_objectSpread({}, otelAttributes), {}, { - element: element, - dropEffect: dropEffect, - effectAllowed: effectAllowed, - kinds: kinds, - mediaTypes: mediaTypes - }); + if (maxItems !== undefined) { + RateLimiter.globalSettings.maxItems = maxItems; + } + if (itemsPerMinute !== undefined) { + RateLimiter.globalSettings.itemsPerMinute = itemsPerMinute; } - (_this$telemetrySpan9 = this.telemetrySpan) === null || _this$telemetrySpan9 === void 0 || _this$telemetrySpan9.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('dom', metadata, 'info', null, timestamp, otelAttributes); - } - }, { - key: "captureNavigation", - value: function captureNavigation(from, to, rollbarUUID, timestamp) { - var _this$telemetrySpan10; - (_this$telemetrySpan10 = this.telemetrySpan) === null || _this$telemetrySpan10 === void 0 || _this$telemetrySpan10.addEvent('rollbar-navigation-event', { - 'previous.url.full': from, - 'url.full': to - }, fromMillis(timestamp)); - return this.capture('navigation', { - from: from, - to: to - }, 'info', rollbarUUID, timestamp); - } - }, { - key: "captureDomContentLoaded", - value: function captureDomContentLoaded(ts) { - return this.capture('navigation', { - subtype: 'DOMContentLoaded' - }, 'info', undefined, ts && ts.getTime()); - /** - * If we decide to make this a dom event instead, then use the line below: - return this.capture('dom', {subtype: 'DOMContentLoaded'}, 'info', undefined, ts && ts.getTime()); - */ - } - }, { - key: "captureLoad", - value: function captureLoad(ts) { - return this.capture('navigation', { - subtype: 'load' - }, 'info', undefined, ts && ts.getTime()); - /** - * If we decide to make this a dom event instead, then use the line below: - return this.capture('dom', {subtype: 'load'}, 'info', undefined, ts && ts.getTime()); - */ - } - }, { - key: "captureConnectivityChange", - value: function captureConnectivityChange(_ref7) { - var _this$telemetrySpan11; - var type = _ref7.type, - isSynthetic = _ref7.isSynthetic, - timestamp = _ref7.timestamp; - var name = 'rollbar-connectivity-event'; - var metadata = { - type: name, - subtype: type - }; - var otelAttributes = { - type: type, - isSynthetic: isSynthetic - }; - (_this$telemetrySpan11 = this.telemetrySpan) === null || _this$telemetrySpan11 === void 0 || _this$telemetrySpan11.addEvent(name, otelAttributes, fromMillis(timestamp)); - return this.capture('connectivity', metadata, 'info', null, timestamp, otelAttributes); } - // Only intended to be used internally by the notifier + /* + * shouldSend - determine if we should send a given item based on rate limit settings + * + * @param item - the item we are about to send + * @returns An object with the following structure: + * error: (Error|null) + * shouldSend: bool + * payload: (Object|null) + * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and + * exactly one of error or payload will be non-null. If error is non-null, the returned Error will + * describe the situation, but it means that we were already over a rate limit (either globally or + * per minute) when this item was checked. If error is null, and therefore payload is non-null, it + * means this item put us over the global rate limit and the payload should be sent to Rollbar in + * place of the passed in item. + */ }, { - key: "_captureRollbarItem", - value: function _captureRollbarItem(item) { - if (!this.options.includeItemsInTelemetry) { - return; - } - if (item.err) { - return this.captureError(item.err, item.level, item.uuid, item.timestamp); + key: "shouldSend", + value: function shouldSend(item) { + var now = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Date.now(); + var elapsedTime = now - this.startTime; + if (elapsedTime < 0 || elapsedTime >= 60000) { + this.startTime = now; + this.perMinCounter = 0; } - if (item.message) { - return this.captureLog(item.message, item.level, item.uuid, item.timestamp); + var globalRateLimit = RateLimiter.globalSettings.maxItems; + var globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute; + if (checkRate(item, globalRateLimit, this.counter)) { + return shouldSendValue(this.platform, this.platformOptions, "".concat(globalRateLimit, " max items reached"), false); } - if (item.custom) { - return this.capture('log', item.custom, item.level, item.uuid, item.timestamp); + if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) { + return shouldSendValue(this.platform, this.platformOptions, "".concat(globalRateLimitPerMin, " items per minute reached"), false); } + this.counter += 1; + this.perMinCounter += 1; + var underGlobalLimit = !checkRate(item, globalRateLimit, this.counter); + var perMinute = underGlobalLimit; + var shouldSend = underGlobalLimit && !checkRate(item, globalRateLimitPerMin, this.perMinCounter); + return shouldSendValue(this.platform, this.platformOptions, null, shouldSend, globalRateLimit, globalRateLimitPerMin, perMinute); } }, { - key: "push", - value: function push(e) { - this.queue.push(e); - if (this.queue.length > this.maxQueueSize) { - this.queue.shift(); - } + key: "setPlatformOptions", + value: function setPlatformOptions(platform, options) { + this.platform = platform; + this.platformOptions = options; } }]); }(); -function getLevel(type, level) { - if (level) { - return level; +/* Helpers */ +rateLimiter_defineProperty(RateLimiter, "globalSettings", { + startTime: Date.now(), + maxItems: undefined, + itemsPerMinute: undefined +}); +function checkRate(item, limit, counter) { + return !item.ignoreRateLimit && limit >= 1 && counter > limit; +} +function shouldSendValue(platform, options, error, shouldSend, globalRateLimit, limitPerMin, perMinute) { + var payload = null; + var errorResult = error ? new Error(error) : null; + if (!errorResult && !shouldSend) { + payload = rateLimitPayload(platform, options, globalRateLimit, limitPerMin, perMinute); } - var defaultLevel = { - error: 'error', - manual: 'info' + return { + error: errorResult, + shouldSend: shouldSend, + payload: payload }; - return defaultLevel[type] || 'info'; } -/* harmony default export */ var telemetry = (Telemeter); -;// ./src/utility/headers.js +function rateLimitPayload(platform, options, globalRateLimit, limitPerMin, perMinute) { + var environment = options.environment || options.payload && options.payload.environment; + var msg = perMinute ? 'item per minute limit reached, ignoring errors until timeout' : 'maxItems has been hit, ignoring errors until reset.'; + var item = { + body: { + message: { + body: msg, + extra: { + maxItems: globalRateLimit, + itemsPerMinute: limitPerMin + } + } + }, + language: 'javascript', + environment: environment, + notifier: { + version: options.notifier && options.notifier.version || options.version + } + }; + if (platform === 'browser') { + item.platform = 'browser'; + item.framework = 'browser-js'; + item.notifier.name = 'rollbar-browser-js'; + } else if (platform === 'server') { + item.framework = options.framework || 'node-js'; + item.notifier.name = options.notifier.name; + } else if (platform === 'react-native') { + item.framework = options.framework || 'react-native'; + item.notifier.name = options.notifier.name; + } + return item; +} +/* harmony default export */ var rateLimiter = (RateLimiter); +;// ./src/rollbar.js + + + + + /* - * headers - Detect when fetch Headers are undefined and use a partial polyfill. - * - * A full polyfill is not used in order to keep package size as small as possible. - * Since this is only used internally and is not added to the window object, - * the full interface doesn't need to be supported. + * Rollbar - the interface to Rollbar * - * This implementation is modified from whatwg-fetch: - * https://github.com/github/fetch + * @param options + * @param api + * @param logger */ -function headers(headers) { - if (typeof Headers === 'undefined') { - return new FetchHeaders(headers); +function Rollbar(options, api, logger, telemeter, tracing, replay, platform) { + this.options = merge(options); + this.logger = logger; + Rollbar.rateLimiter.configureGlobal(this.options); + Rollbar.rateLimiter.setPlatformOptions(platform, this.options); + this.api = api; + this.queue = new queue(Rollbar.rateLimiter, api, logger, this.options, replay); + this.tracing = tracing; + + // Legacy OpenTracing support + // This must happen before the Notifier is created + var tracer = this.options.tracer || null; + if (validateTracer(tracer)) { + this.tracer = tracer; + // set to a string for api response serialization + this.options.tracer = 'opentracing-tracer-enabled'; + this.options._configuredOptions.tracer = 'opentracing-tracer-enabled'; + } else { + this.tracer = null; } - return new Headers(headers); + this.notifier = new Notifier(this.queue, this.options); + this.telemeter = telemeter; + setStackTraceLimit(options); + this.lastError = null; + this.lastErrorHash = 'none'; } -function normalizeName(name) { - if (typeof name !== 'string') { - name = String(name); +var rollbar_defaultOptions = { + maxItems: 0, + itemsPerMinute: 60 +}; +Rollbar.rateLimiter = new rateLimiter(rollbar_defaultOptions); +Rollbar.prototype.global = function (options) { + Rollbar.rateLimiter.configureGlobal(options); + return this; +}; +Rollbar.prototype.configure = function (options, payloadData) { + var oldOptions = this.options; + var payload = {}; + if (payloadData) { + payload = { + payload: payloadData + }; } - return name.toLowerCase(); -} -function normalizeValue(value) { - if (typeof value !== 'string') { - value = String(value); + this.options = merge(oldOptions, options, payload); + + // Legacy OpenTracing support + // This must happen before the Notifier is configured + var tracer = this.options.tracer || null; + if (validateTracer(tracer)) { + this.tracer = tracer; + // set to a string for api response serialization + this.options.tracer = 'opentracing-tracer-enabled'; + this.options._configuredOptions.tracer = 'opentracing-tracer-enabled'; + } else { + this.tracer = null; } - return value; -} -function iteratorFor(items) { - var iterator = { - next: function next() { - var value = items.shift(); - return { - done: value === undefined, - value: value - }; - } - }; - return iterator; -} -function FetchHeaders(headers) { - this.map = {}; - if (headers instanceof FetchHeaders) { - headers.forEach(function (value, name) { - this.append(name, value); - }, this); - } else if (Array.isArray(headers)) { - headers.forEach(function (header) { - this.append(header[0], header[1]); - }, this); - } else if (headers) { - Object.getOwnPropertyNames(headers).forEach(function (name) { - this.append(name, headers[name]); - }, this); + this.notifier && this.notifier.configure(this.options); + this.telemeter && this.telemeter.configure(this.options); + setStackTraceLimit(options); + this.global(this.options); + if (validateTracer(options.tracer)) { + this.tracer = options.tracer; } -} -FetchHeaders.prototype.append = function (name, value) { - name = normalizeName(name); - value = normalizeValue(value); - var oldValue = this.map[name]; - this.map[name] = oldValue ? oldValue + ', ' + value : value; + return this; }; -FetchHeaders.prototype.get = function (name) { - name = normalizeName(name); - return this.has(name) ? this.map[name] : null; +Rollbar.prototype.log = function (item) { + var level = this._defaultLogLevel(); + return this._log(level, item); }; -FetchHeaders.prototype.has = function (name) { - return this.map.hasOwnProperty(normalizeName(name)); +Rollbar.prototype.debug = function (item) { + this._log('debug', item); }; -FetchHeaders.prototype.forEach = function (callback, thisArg) { - for (var name in this.map) { - if (this.map.hasOwnProperty(name)) { - callback.call(thisArg, this.map[name], name, this); - } - } +Rollbar.prototype.info = function (item) { + this._log('info', item); }; -FetchHeaders.prototype.entries = function () { - var items = []; - this.forEach(function (value, name) { - items.push([name, value]); - }); - return iteratorFor(items); +Rollbar.prototype.warn = function (item) { + this._log('warning', item); +}; +Rollbar.prototype.warning = function (item) { + this._log('warning', item); +}; +Rollbar.prototype.error = function (item) { + this._log('error', item); +}; +Rollbar.prototype.critical = function (item) { + this._log('critical', item); +}; +Rollbar.prototype.wait = function (callback) { + this.queue.wait(callback); +}; +Rollbar.prototype.captureEvent = function (type, metadata, level) { + return this.telemeter && this.telemeter.captureEvent(type, metadata, level); +}; +Rollbar.prototype.captureDomContentLoaded = function (ts) { + return this.telemeter && this.telemeter.captureDomContentLoaded(ts); +}; +Rollbar.prototype.captureLoad = function (ts) { + return this.telemeter && this.telemeter.captureLoad(ts); +}; +Rollbar.prototype.buildJsonPayload = function (item) { + return this.api.buildJsonPayload(item); +}; +Rollbar.prototype.sendJsonPayload = function (jsonPayload) { + this.api.postJsonPayload(jsonPayload); }; -/* harmony default export */ var utility_headers = (headers); -;// ./src/utility/replace.js -function replace(obj, name, replacement, replacements, type) { - var orig = obj[name]; - obj[name] = replacement(orig); - if (replacements) { - replacements[type].push([obj, name, orig]); - } -} -/* harmony default export */ var utility_replace = (replace); -;// ./src/utility/traverse.js -function traverse(obj, func, seen) { - var k, v, i; - var isObj = isType(obj, 'object'); - var isArray = isType(obj, 'array'); - var keys = []; - var seenIndex; +/* Internal */ - // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11. - seen = seen || { - obj: [], - mapped: [] - }; - if (isObj) { - seenIndex = seen.obj.indexOf(obj); - if (isObj && seenIndex !== -1) { - // Prefer the mapped object if there is one. - return seen.mapped[seenIndex] || seen.obj[seenIndex]; +Rollbar.prototype._log = function (defaultLevel, item) { + var callback; + if (item.callback) { + callback = item.callback; + delete item.callback; + } + if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) { + if (callback) { + var error = new Error('ignored identical item'); + error.item = item; + callback(error); } - seen.obj.push(obj); - seenIndex = seen.obj.length - 1; + return; } - if (isObj) { - for (k in obj) { - if (Object.prototype.hasOwnProperty.call(obj, k)) { - keys.push(k); - } + try { + item.level = item.level || defaultLevel; + this._addItemAttributes(item); + + // Legacy OpenTracing support + this._addTracingInfo(item); + var telemeter = this.telemeter; + if (telemeter) { + telemeter._captureRollbarItem(item); + item.telemetryEvents = telemeter.copyEvents() || []; } - } else if (isArray) { - for (i = 0; i < obj.length; ++i) { - keys.push(i); + this.notifier.log(item, callback); + } catch (e) { + if (callback) { + callback(e); } + this.logger.error(e); } - var result = isObj ? {} : []; - var same = true; - for (i = 0; i < keys.length; ++i) { - k = keys[i]; - v = obj[k]; - result[k] = func(k, v, seen); - same = same && result[k] === obj[k]; - } - if (isObj && !same) { - seen.mapped[seenIndex] = result; +}; +Rollbar.prototype._addItemAttributes = function (item) { + var _this$tracing, _this$tracing2; + var span = (_this$tracing = this.tracing) === null || _this$tracing === void 0 ? void 0 : _this$tracing.getSpan(); + var attributes = [{ + key: 'session_id', + value: (_this$tracing2 = this.tracing) === null || _this$tracing2 === void 0 ? void 0 : _this$tracing2.sessionId + }, { + key: 'span_id', + value: span === null || span === void 0 ? void 0 : span.spanId + }, { + key: 'trace_id', + value: span === null || span === void 0 ? void 0 : span.traceId + }]; + if (item._isUncaught) { + attributes.push({ + key: 'is_uncaught', + value: 'true' + }); } - return !same ? result : obj; -} -/* harmony default export */ var utility_traverse = (traverse); -;// ./src/scrub.js - - -function scrub(data, scrubFields, scrubPaths) { - scrubFields = scrubFields || []; - if (scrubPaths) { - for (var i = 0; i < scrubPaths.length; ++i) { - scrubPath(data, scrubPaths[i]); - } + addItemAttributes(item.data, attributes); + span === null || span === void 0 || span.addEvent('rollbar.occurrence', [{ + key: 'rollbar.occurrence.uuid', + value: item.uuid + }]); +}; +Rollbar.prototype._defaultLogLevel = function () { + return this.options.logLevel || 'debug'; +}; +Rollbar.prototype._sameAsLastError = function (item) { + if (!item._isUncaught) { + return false; } - var paramRes = _getScrubFieldRegexs(scrubFields); - var queryRes = _getScrubQueryParamRegexs(scrubFields); - function redactQueryParam(dummy0, paramPart) { - return paramPart + redact(); + var itemHash = generateItemHash(item); + if (this.lastErrorHash === itemHash) { + return true; } - function paramScrubber(v) { - var i; - if (isType(v, 'string')) { - for (i = 0; i < queryRes.length; ++i) { - v = v.replace(queryRes[i], redactQueryParam); + this.lastError = item.err; + this.lastErrorHash = itemHash; + return false; +}; +Rollbar.prototype._addTracingInfo = function (item) { + // Tracer validation occurs in the constructor + // or in the Rollbar.prototype.configure methods + if (this.tracer) { + // add rollbar occurrence uuid to span + var span = this.tracer.scope().active(); + if (validateSpan(span)) { + span.setTag('rollbar.error_uuid', item.uuid); + span.setTag('rollbar.has_error', true); + span.setTag('error', true); + span.setTag('rollbar.item_url', "https://rollbar.com/item/uuid/?uuid=".concat(item.uuid)); + span.setTag('rollbar.occurrence_url', "https://rollbar.com/occurrence/uuid/?uuid=".concat(item.uuid)); + + // add span ID & trace ID to occurrence + var opentracingSpanId = span.context().toSpanId(); + var opentracingTraceId = span.context().toTraceId(); + if (item.custom) { + item.custom.opentracing_span_id = opentracingSpanId; + item.custom.opentracing_trace_id = opentracingTraceId; + } else { + item.custom = { + opentracing_span_id: opentracingSpanId, + opentracing_trace_id: opentracingTraceId + }; } } - return v; } - function valScrubber(k, v) { - var i; - for (i = 0; i < paramRes.length; ++i) { - if (paramRes[i].test(k)) { - v = redact(); - break; - } - } - return v; - } - function scrubber(k, v, seen) { - var tmpV = valScrubber(k, v); - if (tmpV === v) { - if (isType(v, 'object') || isType(v, 'array')) { - return utility_traverse(v, scrubber, seen); - } - return paramScrubber(tmpV); - } else { - return tmpV; - } - } - return utility_traverse(data, scrubber); +}; +function generateItemHash(item) { + var message = item.message || ''; + var stack = (item.err || {}).stack || String(item.err); + return message + '::' + stack; } -function scrubPath(obj, path) { - var keys = path.split('.'); - var last = keys.length - 1; - try { - for (var i = 0; i <= last; ++i) { - if (i < last) { - obj = obj[keys[i]]; - } else { - obj[keys[i]] = redact(); - } - } - } catch (e) { - // Missing key is OK; + +// Node.js, Chrome, Safari, and some other browsers support this property +// which globally sets the number of stack frames returned in an Error object. +// If a browser can't use it, no harm done. +function setStackTraceLimit(options) { + if (options.stackTraceLimit) { + Error.stackTraceLimit = options.stackTraceLimit; } } -function _getScrubFieldRegexs(scrubFields) { - var ret = []; - var pat; - for (var i = 0; i < scrubFields.length; ++i) { - pat = '^\\[?(%5[bB])?' + scrubFields[i] + '\\[?(%5[bB])?\\]?(%5[dD])?$'; - ret.push(new RegExp(pat, 'i')); + +/** + * Validate the Tracer object provided to the Client + * is valid for our Opentracing use case. + * @param {opentracer.Tracer} tracer + */ +function validateTracer(tracer) { + if (!tracer) { + return false; } - return ret; -} -function _getScrubQueryParamRegexs(scrubFields) { - var ret = []; - var pat; - for (var i = 0; i < scrubFields.length; ++i) { - pat = '\\[?(%5[bB])?' + scrubFields[i] + '\\[?(%5[bB])?\\]?(%5[dD])?'; - ret.push(new RegExp('(' + pat + '=)([^&\\n]+)', 'igm')); + if (!tracer.scope || typeof tracer.scope !== 'function') { + return false; } - return ret; -} -/* harmony default export */ var src_scrub = (scrub); -;// ./src/browser/domUtility.js -function domUtility_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = domUtility_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } -function domUtility_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return domUtility_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? domUtility_arrayLikeToArray(r, a) : void 0; } } -function domUtility_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function getElementType(e) { - return (e.getAttribute('type') || '').toLowerCase(); + var scope = tracer.scope(); + if (!scope || !scope.active || typeof scope.active !== 'function') { + return false; + } + return true; } -function isDescribedElement(element, type, subtypes) { - if (element.tagName.toLowerCase() !== type.toLowerCase()) { + +/** + * Validate the Span object provided + * @param {opentracer.Span} span + */ +function validateSpan(span) { + if (!span || !span.context || typeof span.context !== 'function') { return false; } - if (!subtypes) { - return true; + var spanContext = span.context(); + if (!spanContext || !spanContext.toSpanId || !spanContext.toTraceId || typeof spanContext.toSpanId !== 'function' || typeof spanContext.toTraceId !== 'function') { + return false; } - element = getElementType(element); - for (var i = 0; i < subtypes.length; i++) { - if (subtypes[i] === element) { - return true; - } + return true; +} +/* harmony default export */ var rollbar = (Rollbar); +;// ./src/tracing/defaults.js +/** + * Default tracing options + */ +/* harmony default export */ var tracing_defaults = ({ + enabled: false, + endpoint: 'api.rollbar.com/api/1/session/' +}); +;// ./src/transforms.js + +function itemToPayload(item, options, callback) { + if (item._isUncaught) { + item.data._isUncaught = true; } - return false; + if (item._originalArgs) { + item.data._originalArgs = item._originalArgs; + } + callback(null, item); } -function getElementFromEvent(evt, doc) { - if (evt.target) { - return evt.target; +function addPayloadOptions(item, options, callback) { + var payloadOptions = options.payload || {}; + if (payloadOptions.body) { + delete payloadOptions.body; } - if (doc && doc.elementFromPoint) { - return doc.elementFromPoint(evt.clientX, evt.clientY); + item.data = merge(item.data, payloadOptions); + callback(null, item); +} +function addTelemetryData(item, options, callback) { + if (item.telemetryEvents) { + set(item, 'data.body.telemetry', item.telemetryEvents); } - return undefined; + callback(null, item); } -function treeToArray(elem) { - var MAX_HEIGHT = 5; - var out = []; - var nextDescription; - for (var height = 0; elem && height < MAX_HEIGHT; height++) { - nextDescription = describeElement(elem); - if (nextDescription.tagName === 'html') { - break; +function addMessageWithError(item, options, callback) { + if (!item.message) { + callback(null, item); + return; + } + var tracePath = 'data.body.trace_chain.0'; + var trace = get(item, tracePath); + if (!trace) { + tracePath = 'data.body.trace'; + trace = get(item, tracePath); + } + if (trace) { + if (!(trace.exception && trace.exception.description)) { + set(item, tracePath + '.exception.description', item.message); + callback(null, item); + return; } - out.unshift(nextDescription); - elem = elem.parentNode; + var extra = get(item, tracePath + '.extra') || {}; + var newExtra = merge(extra, { + message: item.message + }); + set(item, tracePath + '.extra', newExtra); } - return out; + callback(null, item); } -function elementArrayToString(a) { - var MAX_LENGTH = 80; - var separator = ' > ', - separatorLength = separator.length; - var out = [], - len = 0, - nextStr, - totalLength; - for (var i = a.length - 1; i >= 0; i--) { - nextStr = descriptionToString(a[i]); - totalLength = len + out.length * separatorLength + nextStr.length; - if (i < a.length - 1 && totalLength >= MAX_LENGTH + 3) { - out.unshift('...'); - break; +function userTransform(logger) { + return function (item, options, callback) { + var newItem = merge(item); + var response = null; + try { + if (isFunction(options.transform)) { + response = options.transform(newItem.data, item); + } + } catch (e) { + options.transform = null; + logger.error('Error while calling custom transform() function. Removing custom transform().', e); + callback(null, item); + return; } - out.unshift(nextStr); - len += nextStr.length; - } - return out.join(separator); + if (isPromise(response)) { + response.then(function (promisedItem) { + if (promisedItem) { + newItem.data = promisedItem; + } + callback(null, newItem); + }, function (error) { + callback(error, item); + }); + } else { + callback(null, newItem); + } + }; } -function domUtility_elementString(elem) { - return elementArrayToString(treeToArray(elem)); +function addConfigToPayload(item, options, callback) { + if (!options.sendConfig) { + return callback(null, item); + } + var configKey = '_rollbarConfig'; + var custom = get(item, 'data.custom') || {}; + custom[configKey] = options; + item.data.custom = custom; + callback(null, item); } -function descriptionToString(desc) { - if (!desc || !desc.tagName) { - return ''; +function addFunctionOption(options, name) { + if (isFunction(options[name])) { + options[name] = options[name].toString(); } - var out = [desc.tagName]; - if (desc.id) { - out.push('#' + desc.id); +} +function addConfiguredOptions(item, options, callback) { + var configuredOptions = options._configuredOptions; + + // These must be stringified or they'll get dropped during serialization. + addFunctionOption(configuredOptions, 'transform'); + addFunctionOption(configuredOptions, 'checkIgnore'); + addFunctionOption(configuredOptions, 'onSendCallback'); + delete configuredOptions.accessToken; + item.data.notifier.configured_options = configuredOptions; + callback(null, item); +} +function addDiagnosticKeys(item, options, callback) { + var diagnostic = merge(item.notifier.client.notifier.diagnostic, item.diagnostic); + if (get(item, 'err._isAnonymous')) { + diagnostic.is_anonymous = true; } - if (desc.classes) { - out.push('.' + desc.classes.join('.')); + if (item._isUncaught) { + diagnostic.is_uncaught = item._isUncaught; } - for (var i = 0; i < desc.attributes.length; i++) { - out.push('[' + desc.attributes[i].key + '="' + desc.attributes[i].value + '"]'); + if (item.err) { + try { + diagnostic.raw_error = { + message: item.err.message, + name: item.err.name, + constructor_name: item.err.constructor && item.err.constructor.name, + filename: item.err.fileName, + line: item.err.lineNumber, + column: item.err.columnNumber, + stack: item.err.stack + }; + } catch (e) { + diagnostic.raw_error = { + failed: String(e) + }; + } } - return out.join(''); + item.data.notifier.diagnostic = merge(item.data.notifier.diagnostic, diagnostic); + callback(null, item); } +;// ./src/browser/defaults.js +function defaults_toConsumableArray(r) { return defaults_arrayWithoutHoles(r) || defaults_iterableToArray(r) || defaults_unsupportedIterableToArray(r) || defaults_nonIterableSpread(); } +function defaults_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function defaults_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return defaults_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? defaults_arrayLikeToArray(r, a) : void 0; } } +function defaults_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } +function defaults_arrayWithoutHoles(r) { if (Array.isArray(r)) return defaults_arrayLikeToArray(r); } +function defaults_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } /** - * Input: a dom element - * Output: null if tagName is falsey or input is falsey, else - * { - * tagName: String, - * id: String | undefined, - * classes: [String] | undefined, - * attributes: [ - * { - * key: OneOf(type, name, title, alt), - * value: String - * } - * ] - * } + * Default browser options */ -function describeElement(elem) { - if (!elem || !elem.tagName) { - return null; + +var scrubFields = [].concat(defaults_toConsumableArray(commonScrubFields), ['cc-number', 'card number', 'cardnumber', 'cardnum', 'ccnum', 'ccnumber', 'cc num', 'creditcardnumber', 'credit card number', 'newcreditcardnumber', 'new credit card', 'creditcardno', 'credit card no', 'card#', 'card #', 'cc-csc', 'cvc', 'cvc2', 'cvv2', 'ccv2', 'security code', 'card verification', 'name on credit card', 'name on card', 'nameoncard', 'cardholder', 'card holder', 'name des karteninhabers', 'ccname', 'card type', 'cardtype', 'cc type', 'cctype', 'payment type', 'expiration date', 'expirationdate', 'expdate', 'cc-exp', 'ccmonth', 'ccyear']); + +// For compatibility with existing code that expects default export with scrubFields property +/* harmony default export */ var browser_defaults = ({ + scrubFields: scrubFields +}); +;// ./src/browser/globalSetup.js +function captureUncaughtExceptions(window, handler, shim) { + if (!window) { + return; } - var out = {}, - className, - key, - attr, - i; - out.tagName = elem.tagName.toLowerCase(); - if (elem.id) { - out.id = elem.id; + var oldOnError; + if (typeof handler._rollbarOldOnError === 'function') { + oldOnError = handler._rollbarOldOnError; + } else if (window.onerror) { + oldOnError = window.onerror; + while (oldOnError._rollbarOldOnError) { + oldOnError = oldOnError._rollbarOldOnError; + } + handler._rollbarOldOnError = oldOnError; } - className = elem.className; - if (className && typeof className === 'string') { - out.classes = className.split(/\s+/); + handler.handleAnonymousErrors(); + var fn = function fn() { + var args = Array.prototype.slice.call(arguments, 0); + _rollbarWindowOnError(window, handler, oldOnError, args); + }; + if (shim) { + fn._rollbarOldOnError = oldOnError; } - var attributes = ['type', 'name', 'title', 'alt']; - out.attributes = []; - for (i = 0; i < attributes.length; i++) { - key = attributes[i]; - attr = elem.getAttribute(key); - if (attr) { - out.attributes.push({ - key: key, - value: attr - }); + window.onerror = fn; +} +function _rollbarWindowOnError(window, r, old, args) { + if (window._rollbarWrappedError) { + if (!args[4]) { + args[4] = window._rollbarWrappedError; + } + if (!args[5]) { + args[5] = window._rollbarWrappedError._rollbarContext; } + window._rollbarWrappedError = null; + } + var ret = r.handleUncaughtException.apply(r, args); + if (old) { + old.apply(window, args); } - return out; -} -/* - * Detects if the given element matches any of the given class names (string or regex), - * or CSS selectors. - * @param {HTMLElement} element - The DOM element to check. - * @param {Array} classes - An array of class names (string or regex) to match against. - * @param {Array} selectors - An array of CSS selectors to match against. - * @return {boolean} - True if the element matches any of the classes or selectors, false otherwise. - */ -function isMatchingElement(element, classes, selectors) { - try { - var _iterator = domUtility_createForOfIteratorHelper(classes), - _step; + // Let other chained onerror handlers above run before setting this. + // If an error is thrown and caught within a chained onerror handler, + // Error.prepareStackTrace() will see that one before the one we want. + if (ret === 'anonymous') { + r.anonymousErrorsPending += 1; // See Rollbar.prototype.handleAnonymousErrors() + } +} +function captureUnhandledRejections(window, handler, shim) { + if (!window) { + return; + } + if (typeof window._rollbarURH === 'function' && window._rollbarURH.belongsToShim) { + window.removeEventListener('unhandledrejection', window._rollbarURH); + } + var rejectionHandler = function rejectionHandler(evt) { + var reason, promise, detail; try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var cls = _step.value; - if (typeof cls === 'string') { - if (element.classList.contains(cls)) { - return true; - } - } else { - var _iterator3 = domUtility_createForOfIteratorHelper(element.classList), - _step3; - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var c = _step3.value; - if (cls.test(c)) { - return true; - } - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); + reason = evt.reason; + } catch (_e) { + reason = undefined; } - var _iterator2 = domUtility_createForOfIteratorHelper(selectors), - _step2; try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var sel = _step2.value; - if (element.matches(sel)) { - return true; - } + promise = evt.promise; + } catch (_e) { + promise = '[unhandledrejection] error getting `promise` from event'; + } + try { + detail = evt.detail; + if (!reason && detail) { + reason = detail.reason; + promise = detail.promise; } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); + } catch (_e) { + // Ignore } - } catch (e) { - // ignore errors from invalid arguments + if (!reason) { + reason = '[unhandledrejection] error getting `reason` from event'; + } + if (handler && handler.handleUnhandledRejection) { + handler.handleUnhandledRejection(reason, promise); + } + }; + rejectionHandler.belongsToShim = shim; + window._rollbarURH = rejectionHandler; + window.addEventListener('unhandledrejection', rejectionHandler); +} + +;// ./src/browser/predicates.js + +function checkIgnore(item, settings) { + if (get(settings, 'plugins.jquery.ignoreAjaxErrors')) { + return !get(item, 'body.message.extra.isAjax'); } - return false; + return true; } -;// ./src/browser/telemetry.js -function browser_telemetry_typeof(o) { "@babel/helpers - typeof"; return browser_telemetry_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, browser_telemetry_typeof(o); } -function telemetry_toConsumableArray(r) { return telemetry_arrayWithoutHoles(r) || telemetry_iterableToArray(r) || telemetry_unsupportedIterableToArray(r) || telemetry_nonIterableSpread(); } -function telemetry_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function telemetry_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } -function telemetry_arrayWithoutHoles(r) { if (Array.isArray(r)) return telemetry_arrayLikeToArray(r); } -function browser_telemetry_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function browser_telemetry_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, browser_telemetry_toPropertyKey(o.key), o); } } -function browser_telemetry_createClass(e, r, t) { return r && browser_telemetry_defineProperties(e.prototype, r), t && browser_telemetry_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function browser_telemetry_defineProperty(e, r, t) { return (r = browser_telemetry_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function browser_telemetry_toPropertyKey(t) { var i = browser_telemetry_toPrimitive(t, "string"); return "symbol" == browser_telemetry_typeof(i) ? i : i + ""; } -function browser_telemetry_toPrimitive(t, r) { if ("object" != browser_telemetry_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != browser_telemetry_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -function telemetry_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = telemetry_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } -function telemetry_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return telemetry_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? telemetry_arrayLikeToArray(r, a) : void 0; } } -function telemetry_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +;// ./src/browser/replay/defaults.js +/** + * Default session replay recording options + * See https://github.com/rrweb-io/rrweb/blob/master/guide.md#options for details + */ +/* harmony default export */ var replay_defaults = ({ + enabled: false, + // Whether recording is enabled + autoStart: true, + // Start recording automatically when Rollbar initializes + // defaults used by triggers that don't specify them + triggerDefaults: { + samplingRatio: 1.0, + preDuration: 300, + postDuration: 5 + }, + triggers: [{ + type: 'occurrence', + level: ['error', 'critical'] + }], + debug: { + logErrors: true, + // Whether to log errors emitted by rrweb. + logEmits: false // Whether to log emitted events + }, + // Recording options + inlineStylesheet: true, + // Whether to inline stylesheets to improve replay accuracy + inlineImages: false, + // Whether to record the image content + collectFonts: true, + // Whether to collect fonts in the website + // Privacy options + // Fine-grained control over which input types to mask + // By default only password inputs are masked if maskInputs is true + maskInputOptions: { + password: true, + email: false, + tel: false, + text: false, + color: false, + date: false, + 'datetime-local': false, + month: false, + number: false, + range: false, + search: false, + time: false, + url: false, + week: false + }, + // Mask all input values + maskAllInputs: false, + // Class names to block, mask, or ignore the content of elements. + blockClass: 'rb-block', + maskTextClass: 'rb-mask', + ignoreClass: 'rb-ignore', + // Remove unnecessary parts of the DOM + // By default all removable elements are removed + slimDOMOptions: { + script: true, + // Remove script elements + comment: true, + // Remove comments + headFavicon: true, + // Remove favicons in the head + headWhitespace: true, + // Remove whitespace in head + headMetaDescKeywords: true, + // Remove meta description and keywords + headMetaSocial: true, + // Remove social media meta tags + headMetaRobots: true, + // Remove robots meta directives + headMetaHttpEquiv: true, + // Remove http-equiv meta directives + headMetaAuthorship: true, + // Remove authorship meta directives + headMetaVerification: true // Remove verification meta directives + } + // Custom callbacks for advanced use cases + // These are undefined by default and can be set programmatically + // maskInputFn: undefined, // Custom function to mask input values + // maskTextFn: undefined, // Custom function to mask text content + // errorHandler: undefined, // Custom error handler for recording errors + // Plugin system + // plugins: [] // List of plugins to use (must be set programmatically) +}); +;// ./src/browser/transforms.js -var telemetry_defaults = { - network: true, - networkResponseHeaders: false, - networkResponseBody: false, - networkRequestHeaders: false, - networkRequestBody: false, - networkErrorOnHttp5xx: false, - networkErrorOnHttp4xx: false, - networkErrorOnHttp0: false, - log: true, - dom: true, - navigation: true, - connectivity: true, - contentSecurityPolicy: true, - errorOnContentSecurityPolicy: false -}; -function restore(replacements, type) { - var b; - while (replacements[type].length) { - b = replacements[type].shift(); - b[0][b[1]] = b[2]; + +function handleDomException(item, options, callback) { + if (item.err && errorParser.Stack(item.err).name === 'DOMException') { + var originalError = new Error(); + originalError.name = item.err.name; + originalError.message = item.err.message; + originalError.stack = item.err.stack; + originalError.nested = item.err; + item.err = originalError; } + callback(null, item); } -function nameFromDescription(description) { - if (!description || !description.attributes) { - return null; - } - var attrs = description.attributes; - var _iterator = telemetry_createForOfIteratorHelper(attrs), - _step; - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var a = _step.value; - if (a.key === 'name') { - return a.value; +function handleItemWithError(item, options, callback) { + item.data = item.data || {}; + if (item.err) { + try { + item.stackInfo = item.err._savedStackTrace || errorParser.parse(item.err, item.skipFrames); + if (options.addErrorContext) { + transforms_addErrorContext(item); + } + } catch (e) { + src_logger.error('Error while parsing the error object.', e); + try { + item.message = item.err.message || item.err.description || item.message || String(item.err); + } catch (e2) { + item.message = String(item.err) || String(e2); } + delete item.err; } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); } - return null; + callback(null, item); } -function defaultValueScrubber(scrubFields) { - var patterns = []; - var _iterator2 = telemetry_createForOfIteratorHelper(scrubFields), - _step2; - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var field = _step2.value; - patterns.push(new RegExp(field, 'i')); - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); +function transforms_addErrorContext(item) { + var chain = []; + var err = item.err; + chain.push(err); + while (err.nested || err.cause) { + err = err.nested || err.cause; + chain.push(err); } - return function (description) { - var name = nameFromDescription(description); - if (!name) { - return false; + addErrorContext(item, chain); +} +function ensureItemHasSomethingToSay(item, options, callback) { + if (!item.message && !item.stackInfo && !item.custom) { + callback(new Error('No message, stack info, or custom data'), null); + } + callback(null, item); +} +function addBaseInfo(item, options, callback) { + var environment = options.payload && options.payload.environment || options.environment; + item.data = merge(item.data, { + environment: environment, + level: item.level, + endpoint: options.endpoint, + platform: 'browser', + framework: 'browser-js', + language: 'javascript', + server: {}, + uuid: item.uuid, + notifier: { + name: 'rollbar-browser-js', + version: options.version + }, + custom: item.custom + }); + callback(null, item); +} +function addRequestInfo(window) { + return function (item, options, callback) { + var requestInfo = {}; + if (window && window.location) { + requestInfo.url = window.location.href; + requestInfo.query_string = window.location.search; } - for (var _i = 0, _patterns = patterns; _i < _patterns.length; _i++) { - var p = _patterns[_i]; - if (p.test(name)) { - return true; - } + var remoteString = '$remote_ip'; + if (!options.captureIp) { + remoteString = null; + } else if (options.captureIp !== true) { + remoteString += '_anonymize'; } - return false; + if (remoteString) requestInfo.user_ip = remoteString; + if (Object.keys(requestInfo).length > 0) { + set(item, 'data.request', requestInfo); + } + callback(null, item); }; } -var Instrumenter = /*#__PURE__*/function () { - function Instrumenter(options, telemeter, rollbar, _window, _document) { - browser_telemetry_classCallCheck(this, Instrumenter); - browser_telemetry_defineProperty(this, "deinstrumentConnectivity", function () { - this.removeListeners('connectivity'); - }); - this.options = options; - var autoInstrument = options.autoInstrument; - if (options.enabled === false || autoInstrument === false) { - this.autoInstrument = {}; - } else { - if (!isType(autoInstrument, 'object')) { - autoInstrument = telemetry_defaults; - } - this.autoInstrument = src_merge(telemetry_defaults, autoInstrument); - } - this.configureScrubbing(); - this.telemeter = telemeter; - this.rollbar = rollbar; - this.diagnostic = rollbar.client.notifier.diagnostic; - this._window = _window || {}; - this._document = _document || {}; - this.replacements = { - network: [], - log: [], - navigation: [], - connectivity: [] - }; - this.eventRemovers = { - dom: [], - connectivity: [], - contentsecuritypolicy: [] - }; - this._location = this._window.location; - this._lastHref = this._location && this._location.href; - } - return browser_telemetry_createClass(Instrumenter, [{ - key: "configureScrubbing", - value: function configureScrubbing() { - var _options$scrubTelemet, _options$replay, _options$replay2, _options$replay3, _options$replay4, _options$replay5, _options$replay6, _options$replay7, _options$replay8, _options$replay9; - var options = this.options; - this.scrubTelemetryInputs = !!((_options$scrubTelemet = options.scrubTelemetryInputs) !== null && _options$scrubTelemet !== void 0 ? _options$scrubTelemet : (_options$replay = options.replay) === null || _options$replay === void 0 ? void 0 : _options$replay.maskAllInputs); - this.telemetryScrubber = options.telemetryScrubber; - this.defaultValueScrubber = defaultValueScrubber(options.scrubFields); - this.maskInputFn = (_options$replay2 = options.replay) === null || _options$replay2 === void 0 ? void 0 : _options$replay2.maskInputFn; - this.maskInputOptions = ((_options$replay3 = options.replay) === null || _options$replay3 === void 0 ? void 0 : _options$replay3.maskInputOptions) || {}; - this.scrubClasses = [(_options$replay4 = options.replay) === null || _options$replay4 === void 0 ? void 0 : _options$replay4.blockClass, (_options$replay5 = options.replay) === null || _options$replay5 === void 0 ? void 0 : _options$replay5.ignoreClass, (_options$replay6 = options.replay) === null || _options$replay6 === void 0 ? void 0 : _options$replay6.maskTextClass].filter(Boolean); - this.scrubSelectors = [(_options$replay7 = options.replay) === null || _options$replay7 === void 0 ? void 0 : _options$replay7.blockSelector, (_options$replay8 = options.replay) === null || _options$replay8 === void 0 ? void 0 : _options$replay8.ignoreSelector, (_options$replay9 = options.replay) === null || _options$replay9 === void 0 ? void 0 : _options$replay9.maskTextSelector].filter(Boolean); +function addClientInfo(window) { + return function (item, options, callback) { + if (!window) { + return callback(null, item); } - }, { - key: "configure", - value: function configure(options) { - this.options = src_merge(this.options, options); - var autoInstrument = options.autoInstrument; - var oldSettings = src_merge(this.autoInstrument); - if (options.enabled === false || autoInstrument === false) { - this.autoInstrument = {}; - } else { - if (!isType(autoInstrument, 'object')) { - autoInstrument = telemetry_defaults; + var nav = window.navigator || {}; + var scr = window.screen || {}; + set(item, 'data.client', { + runtime_ms: item.timestamp - window._rollbarStartTime, + timestamp: Math.round(item.timestamp / 1000), + javascript: { + browser: nav.userAgent, + language: nav.language, + cookie_enabled: nav.cookieEnabled, + screen: { + width: scr.width, + height: scr.height } - this.autoInstrument = src_merge(telemetry_defaults, autoInstrument); - } - this.configureScrubbing(); - this.instrument(oldSettings); - } - - // eslint-disable-next-line complexity - }, { - key: "instrument", - value: function instrument(oldSettings) { - if (this.autoInstrument.network && !(oldSettings && oldSettings.network)) { - this.instrumentNetwork(); - } else if (!this.autoInstrument.network && oldSettings && oldSettings.network) { - this.deinstrumentNetwork(); - } - if (this.autoInstrument.log && !(oldSettings && oldSettings.log)) { - this.instrumentConsole(); - } else if (!this.autoInstrument.log && oldSettings && oldSettings.log) { - this.deinstrumentConsole(); - } - if (this.autoInstrument.dom && !(oldSettings && oldSettings.dom)) { - this.instrumentDom(); - } else if (!this.autoInstrument.dom && oldSettings && oldSettings.dom) { - this.deinstrumentDom(); - } - if (this.autoInstrument.navigation && !(oldSettings && oldSettings.navigation)) { - this.instrumentNavigation(); - } else if (!this.autoInstrument.navigation && oldSettings && oldSettings.navigation) { - this.deinstrumentNavigation(); - } - if (this.autoInstrument.connectivity && !(oldSettings && oldSettings.connectivity)) { - this.instrumentConnectivity(); - } else if (!this.autoInstrument.connectivity && oldSettings && oldSettings.connectivity) { - this.deinstrumentConnectivity(); - } - if (this.autoInstrument.contentSecurityPolicy && !(oldSettings && oldSettings.contentSecurityPolicy)) { - this.instrumentContentSecurityPolicy(); - } else if (!this.autoInstrument.contentSecurityPolicy && oldSettings && oldSettings.contentSecurityPolicy) { - this.deinstrumentContentSecurityPolicy(); } + }); + callback(null, item); + }; +} +function addPluginInfo(window) { + return function (item, options, callback) { + if (!window || !window.navigator) { + return callback(null, item); } - }, { - key: "deinstrumentNetwork", - value: function deinstrumentNetwork() { - restore(this.replacements, 'network'); - } - }, { - key: "instrumentNetwork", - value: function instrumentNetwork() { - var self = this; - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - utility_replace(xhr, prop, function (orig) { - return self.rollbar.wrap(orig); - }); + var plugins = []; + var navPlugins = window.navigator.plugins || []; + var cur; + for (var i = 0, l = navPlugins.length; i < l; ++i) { + cur = navPlugins[i]; + plugins.push({ + name: cur.name, + description: cur.description + }); + } + set(item, 'data.client.javascript.plugins', plugins); + callback(null, item); + }; +} +function addBody(item, options, callback) { + if (item.stackInfo) { + if (item.stackInfo.traceChain) { + addBodyTraceChain(item, options, callback); + } else { + addBodyTrace(item, options, callback); + } + } else { + addBodyMessage(item, options, callback); + } +} +function addBodyMessage(item, options, callback) { + var message = item.message; + var custom = item.custom; + if (!message) { + message = 'Item sent with null or missing arguments.'; + } + var result = { + body: message + }; + if (custom) { + result.extra = merge(custom); + } + set(item, 'data.body', { + message: result + }); + callback(null, item); +} +function stackFromItem(item) { + var stackInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + // Transform a TraceKit stackInfo object into a Rollbar trace + var stack = (stackInfo || item.stackInfo).stack; + if (stack && stack.length === 0 && item._unhandledStackInfo && item._unhandledStackInfo.stack) { + stack = item._unhandledStackInfo.stack; + } + return stack; +} +function addBodyTraceChain(item, options, callback) { + var traceChain = item.stackInfo.traceChain; + var traces = []; + var traceChainLength = traceChain.length; + for (var i = 0; i < traceChainLength; i++) { + var trace = buildTrace(item, traceChain[i], options); + traces.push(trace); + } + set(item, 'data.body', { + trace_chain: traces + }); + callback(null, item); +} +function addBodyTrace(item, options, callback) { + var stack = stackFromItem(item); + if (stack) { + var trace = buildTrace(item, item.stackInfo, options); + set(item, 'data.body', { + trace: trace + }); + callback(null, item); + } else { + var stackInfo = item.stackInfo; + var guess = errorParser.guessErrorClass(stackInfo.message); + var className = errorClass(stackInfo, guess[0], options); + var message = guess[1]; + item.message = className + ': ' + message; + addBodyMessage(item, options, callback); + } +} +function buildTrace(item, stackInfo, options) { + var description = item && item.data.description; + var custom = item && item.custom; + var stack = stackFromItem(item, stackInfo); + var guess = errorParser.guessErrorClass(stackInfo.message); + var className = errorClass(stackInfo, guess[0], options); + var message = guess[1]; + var trace = { + exception: { + class: className, + message: message + } + }; + if (description) { + trace.exception.description = description; + } + if (stack) { + if (stack.length === 0) { + trace.exception.stack = stackInfo.rawStack; + trace.exception.raw = String(stackInfo.rawException); + } + var stackFrame; + var frame; + var code; + var pre; + var post; + var contextLength; + var i, mid; + trace.frames = []; + for (i = 0; i < stack.length; ++i) { + stackFrame = stack[i]; + frame = { + filename: stackFrame.url ? sanitizeUrl(stackFrame.url) : '(unknown)', + lineno: stackFrame.line || null, + method: !stackFrame.func || stackFrame.func === '?' ? '[anonymous]' : stackFrame.func, + colno: stackFrame.column + }; + if (options.sendFrameUrl) { + frame.url = stackFrame.url; + } + if (frame.method && frame.method.endsWith && frame.method.endsWith('_rollbar_wrapped')) { + continue; + } + code = pre = post = null; + contextLength = stackFrame.context ? stackFrame.context.length : 0; + if (contextLength) { + mid = Math.floor(contextLength / 2); + pre = stackFrame.context.slice(0, mid); + code = stackFrame.context[mid]; + post = stackFrame.context.slice(mid); + } + if (code) { + frame.code = code; + } + if (pre || post) { + frame.context = {}; + if (pre && pre.length) { + frame.context.pre = pre; + } + if (post && post.length) { + frame.context.post = post; } } - if ('XMLHttpRequest' in this._window) { - var xhrp = this._window.XMLHttpRequest.prototype; - utility_replace(xhrp, 'open', function (orig) { - return function (method, url) { - var isUrlObject = _isUrlObject(url); - if (isType(url, 'string') || isUrlObject) { - url = isUrlObject ? url.toString() : url; - if (this.__rollbar_xhr) { - this.__rollbar_xhr.method = method; - this.__rollbar_xhr.url = url; - this.__rollbar_xhr.status_code = null; - this.__rollbar_xhr.start_time_ms = utility_now(); - this.__rollbar_xhr.end_time_ms = null; - } else { - this.__rollbar_xhr = { - method: method, - url: url, - status_code: null, - start_time_ms: utility_now(), - end_time_ms: null - }; - } - } - return orig.apply(this, arguments); - }; - }, this.replacements, 'network'); - utility_replace(xhrp, 'setRequestHeader', function (orig) { - return function (header, value) { - // If xhr.open is async, __rollbar_xhr may not be initialized yet. - if (!this.__rollbar_xhr) { - this.__rollbar_xhr = {}; - } - if (isType(header, 'string') && isType(value, 'string')) { - if (self.autoInstrument.networkRequestHeaders) { - if (!this.__rollbar_xhr.request_headers) { - this.__rollbar_xhr.request_headers = {}; - } - this.__rollbar_xhr.request_headers[header] = value; - } - // We want the content type even if request header telemetry is off. - if (header.toLowerCase() === 'content-type') { - this.__rollbar_xhr.request_content_type = value; - } - } - return orig.apply(this, arguments); - }; - }, this.replacements, 'network'); - utility_replace(xhrp, 'send', function (orig) { - return function (data) { - var xhr = this; - function onreadystatechangeHandler() { - if (xhr.__rollbar_xhr) { - if (xhr.__rollbar_xhr.status_code === null) { - xhr.__rollbar_xhr.status_code = 0; - if (self.autoInstrument.networkRequestBody) { - xhr.__rollbar_xhr.request = data; - } - xhr.__rollbar_event = self.captureNetwork(xhr.__rollbar_xhr, 'xhr', undefined); - } - if (xhr.readyState < 2) { - xhr.__rollbar_xhr.start_time_ms = utility_now(); - } - if (xhr.readyState > 3) { - var end_time_ms = utility_now(); - xhr.__rollbar_xhr.end_time_ms = end_time_ms; - var _headers = null; - xhr.__rollbar_xhr.response_content_type = xhr.getResponseHeader('Content-Type'); - if (self.autoInstrument.networkResponseHeaders) { - var headersConfig = self.autoInstrument.networkResponseHeaders; - _headers = {}; - try { - var header; - if (headersConfig === true) { - var allHeaders = xhr.getAllResponseHeaders(); - if (allHeaders) { - var arr = allHeaders.trim().split(/[\r\n]+/); - var parts, value; - var _iterator3 = telemetry_createForOfIteratorHelper(arr), - _step3; - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var h = _step3.value; - parts = h.split(': '); - header = parts.shift(); - value = parts.join(': '); - _headers[header] = value; - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - } - } else { - var _iterator4 = telemetry_createForOfIteratorHelper(headersConfig), - _step4; - try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { - var _h = _step4.value; - _headers[_h] = xhr.getResponseHeader(_h); - } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); - } - } - } catch (e) { - /* we ignore the errors here that could come from different - * browser issues with the xhr methods */ - } - } - var body = null; - if (self.autoInstrument.networkResponseBody) { - try { - body = xhr.responseText; - } catch (e) { - /* ignore errors from reading responseText */ - } - } - var response = null; - if (body || _headers) { - response = {}; - if (body) { - if (self.isJsonContentType(xhr.__rollbar_xhr.response_content_type)) { - response.body = self.scrubJson(body); - } else { - response.body = body; - } - } - if (_headers) { - response.headers = _headers; - } - } - if (response) { - xhr.__rollbar_xhr.response = response; - } - try { - var code = xhr.status; - code = code === 1223 ? 204 : code; - xhr.__rollbar_xhr.status_code = code; - self.addOtelNetworkResponse(xhr.__rollbar_event, end_time_ms, code); - xhr.__rollbar_event.level = self.telemeter.levelFromStatus(code); - self.errorOnHttpStatus(xhr.__rollbar_xhr); - } catch (e) { - /* ignore possible exception from xhr.status */ - } - } - } - } - wrapProp('onload', xhr); - wrapProp('onerror', xhr); - wrapProp('onprogress', xhr); - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - utility_replace(xhr, 'onreadystatechange', function (orig) { - return self.rollbar.wrap(orig, undefined, onreadystatechangeHandler); - }); - } else { - xhr.onreadystatechange = onreadystatechangeHandler; - } - if (xhr.__rollbar_xhr && self.trackHttpErrors()) { - xhr.__rollbar_xhr.stack = new Error().stack; - } - return orig.apply(this, arguments); - }; - }, this.replacements, 'network'); - } - if ('fetch' in this._window) { - utility_replace(this._window, 'fetch', function (orig) { - return function (fn, t) { - var args = Array.prototype.slice.call(arguments); - var input = args[0]; - var method = 'GET'; - var url; - var isUrlObject = _isUrlObject(input); - if (isType(input, 'string') || isUrlObject) { - url = isUrlObject ? input.toString() : input; - } else if (input) { - url = input.url; - if (input.method) { - method = input.method; - } - } - if (args[1] && args[1].method) { - method = args[1].method; - } - var metadata = { - method: method, - url: url, - status_code: null, - start_time_ms: utility_now(), - end_time_ms: null - }; - if (args[1] && args[1].headers) { - // Argument may be a Headers object, or plain object. Ensure here that - // we are working with a Headers object with case-insensitive keys. - var reqHeaders = utility_headers(args[1].headers); - metadata.request_content_type = reqHeaders.get('Content-Type'); - if (self.autoInstrument.networkRequestHeaders) { - metadata.request_headers = self.fetchHeaders(reqHeaders, self.autoInstrument.networkRequestHeaders); - } - } - if (self.autoInstrument.networkRequestBody) { - if (args[1] && args[1].body) { - metadata.request = args[1].body; - } else if (args[0] && !isType(args[0], 'string') && args[0].body) { - metadata.request = args[0].body; - } - } - var telemetryEvent = self.captureNetwork(metadata, 'fetch', undefined); - if (self.trackHttpErrors()) { - metadata.stack = new Error().stack; - } - - // Start our handler before returning the promise. This allows resp.clone() - // to execute before other handlers touch the response. - return orig.apply(this, args).then(function (resp) { - var end_time_ms = utility_now(); - metadata.end_time_ms = end_time_ms; - metadata.status_code = resp.status; - self.addOtelNetworkResponse(telemetryEvent, end_time_ms, resp.status); - metadata.response_content_type = resp.headers.get('Content-Type'); - var headers = null; - if (self.autoInstrument.networkResponseHeaders) { - headers = self.fetchHeaders(resp.headers, self.autoInstrument.networkResponseHeaders); - } - var body = null; - if (self.autoInstrument.networkResponseBody) { - if (typeof resp.text === 'function') { - // Response.text() is not implemented on some platforms - // The response must be cloned to prevent reading (and locking) the original stream. - // This must be done before other handlers touch the response. - body = resp.clone().text(); //returns a Promise - } - } - if (headers || body) { - metadata.response = {}; - if (body) { - // Test to ensure body is a Promise, which it should always be. - if (typeof body.then === 'function') { - body.then(function (text) { - if (text && self.isJsonContentType(metadata.response_content_type)) { - metadata.response.body = self.scrubJson(text); - } else { - metadata.response.body = text; - } - }); - } else { - metadata.response.body = body; - } - } - if (headers) { - metadata.response.headers = headers; - } - } - self.errorOnHttpStatus(metadata); - return resp; - }); - }; - }, this.replacements, 'network'); - } - } - }, { - key: "captureNetwork", - value: function captureNetwork(metadata, subtype, rollbarUUID) { - if (metadata.request && this.isJsonContentType(metadata.request_content_type)) { - metadata.request = this.scrubJson(metadata.request); - } - return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID); - } - }, { - key: "isJsonContentType", - value: function isJsonContentType(contentType) { - return contentType && isType(contentType, 'string') && contentType.toLowerCase().includes('json') ? true : false; - } - }, { - key: "addOtelNetworkResponse", - value: function addOtelNetworkResponse(event, endTimeMs, statusCode) { - if (event.otelAttributes) { - event.otelAttributes['response.timeUnixNano'] = (endTimeMs * 1e6).toString(); - event.otelAttributes.statusCode = statusCode; - } - } - }, { - key: "scrubJson", - value: function scrubJson(json) { - return JSON.stringify(src_scrub(JSON.parse(json), this.options.scrubFields)); - } - }, { - key: "fetchHeaders", - value: function fetchHeaders(inHeaders, headersConfig) { - var outHeaders = {}; - try { - if (headersConfig === true) { - if (typeof inHeaders.entries === 'function') { - // Headers.entries() is not implemented in IE - var allHeaders = inHeaders.entries(); - var currentHeader = allHeaders.next(); - while (!currentHeader.done) { - outHeaders[currentHeader.value[0]] = currentHeader.value[1]; - currentHeader = allHeaders.next(); - } - } - } else { - var _iterator5 = telemetry_createForOfIteratorHelper(headersConfig), - _step5; - try { - for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { - var h = _step5.value; - outHeaders[h] = inHeaders.get(h); - } - } catch (err) { - _iterator5.e(err); - } finally { - _iterator5.f(); - } - } - } catch (e) { - /* ignore probable IE errors */ + if (stackFrame.args) { + frame.args = stackFrame.args; } - return outHeaders; - } - }, { - key: "trackHttpErrors", - value: function trackHttpErrors() { - return this.autoInstrument.networkErrorOnHttp5xx || this.autoInstrument.networkErrorOnHttp4xx || this.autoInstrument.networkErrorOnHttp0; + trace.frames.push(frame); } - }, { - key: "errorOnHttpStatus", - value: function errorOnHttpStatus(metadata) { - var status = metadata.status_code; - if (status >= 500 && this.autoInstrument.networkErrorOnHttp5xx || status >= 400 && this.autoInstrument.networkErrorOnHttp4xx || status === 0 && this.autoInstrument.networkErrorOnHttp0) { - var error = new Error('HTTP request failed with Status ' + status); - error.stack = metadata.stack; - this.rollbar.error(error, { - skipFrames: 1 - }); - } + + // NOTE(cory): reverse the frames since rollbar.com expects the most recent call last + trace.frames.reverse(); + if (custom) { + trace.extra = merge(custom); } - }, { - key: "deinstrumentConsole", - value: function deinstrumentConsole() { - var b; - while (this.replacements['log'].length) { - b = this.replacements['log'].shift(); - this._window.console[b[0]] = b[1]; - } + } + return trace; +} +function errorClass(stackInfo, guess, options) { + if (stackInfo.name) { + return stackInfo.name; + } else if (options.guessErrorClass) { + return guess; + } else { + return '(unknown)'; + } +} +function addScrubber(scrubFn) { + return function (item, options, callback) { + if (scrubFn) { + var scrubFields = options.scrubFields || []; + var scrubPaths = options.scrubPaths || []; + item.data = scrubFn(item.data, scrubFields, scrubPaths); } - }, { - key: "instrumentConsole", - value: function instrumentConsole() { - var _this$_window; - if (!((_this$_window = this._window) !== null && _this$_window !== void 0 && (_this$_window = _this$_window.console) !== null && _this$_window !== void 0 && _this$_window.log)) { - return; - } - var self = this; - var c = this._window.console; - function wrapConsole(method) { - 'use strict'; + callback(null, item); + }; +} - // See https://github.com/rollbar/rollbar.js/pull/778 - var orig = c[method]; - var origConsole = c; - var level = method === 'warn' ? 'warning' : method; - c[method] = function () { - var args = Array.prototype.slice.call(arguments); - var message = formatArgsAsString(args); - self.telemeter.captureLog(message, level, null, utility_now()); - if (orig) { - Function.prototype.apply.call(orig, origConsole, args); +;// ./src/browser/transport/fetch.js +function fetch_typeof(o) { "@babel/helpers - typeof"; return fetch_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, fetch_typeof(o); } +function fetch_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function fetch_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? fetch_ownKeys(Object(t), !0).forEach(function (r) { fetch_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : fetch_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function fetch_defineProperty(e, r, t) { return (r = fetch_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function fetch_toPropertyKey(t) { var i = fetch_toPrimitive(t, "string"); return "symbol" == fetch_typeof(i) ? i : i + ""; } +function fetch_toPrimitive(t, r) { if ("object" != fetch_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != fetch_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + + +function makeFetchRequest(_ref) { + var accessToken = _ref.accessToken, + url = _ref.url, + method = _ref.method, + payload = _ref.payload, + headers = _ref.headers, + callback = _ref.callback, + timeout = _ref.timeout; + var controller; + var timeoutId; + if (isFiniteNumber(timeout)) { + controller = new AbortController(); + timeoutId = setTimeout(function () { + controller.abort(); + }, timeout); + } + headers = fetch_objectSpread({ + 'Content-Type': 'application/json', + 'X-Rollbar-Access-Token': accessToken, + signal: controller && controller.signal + }, headers); + fetch(url, { + method: method, + headers: headers, + body: payload + }).then(function (response) { + if (timeoutId) clearTimeout(timeoutId); + var respHeaders = response.headers; + var isItemRoute = url.endsWith('/api/1/item/'); + var headers = isItemRoute ? { + 'Rollbar-Replay-Enabled': respHeaders.get('Rollbar-Replay-Enabled'), + 'Rollbar-Replay-RateLimit-Remaining': respHeaders.get('Rollbar-Replay-RateLimit-Remaining'), + 'Rollbar-Replay-RateLimit-Reset': respHeaders.get('Rollbar-Replay-RateLimit-Reset') + } : {}; + var json = response.json(); + callback(null, json, headers); + }).catch(function (error) { + src_logger.error(error.message); + callback(error); + }); +} +/* harmony default export */ var transport_fetch = (makeFetchRequest); +;// ./src/browser/transport/xhr.js +function xhr_slicedToArray(r, e) { return xhr_arrayWithHoles(r) || xhr_iterableToArrayLimit(r, e) || xhr_unsupportedIterableToArray(r, e) || xhr_nonIterableRest(); } +function xhr_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function xhr_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return xhr_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? xhr_arrayLikeToArray(r, a) : void 0; } } +function xhr_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function xhr_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function xhr_arrayWithHoles(r) { if (Array.isArray(r)) return r; } +/*global XDomainRequest*/ + + + +function makeXhrRequest(_ref) { + var accessToken = _ref.accessToken, + url = _ref.url, + method = _ref.method, + payload = _ref.payload, + headers = _ref.headers, + callback = _ref.callback, + requestFactory = _ref.requestFactory, + timeout = _ref.timeout; + var request; + if (requestFactory) { + request = requestFactory(); + } else { + request = _createXMLHTTPObject(); + } + if (!request) { + // Give up, no way to send requests + return callback(new Error('No way to send a request')); + } + try { + try { + var _onreadystatechange = function onreadystatechange() { + try { + if (_onreadystatechange && request.readyState === 4) { + _onreadystatechange = undefined; + var parseResponse = jsonParse(request.responseText); + if (_isSuccess(request)) { + var isItemRoute = url.endsWith('/api/1/item/'); + var _headers = isItemRoute ? { + 'Rollbar-Replay-Enabled': request.getResponseHeader('Rollbar-Replay-Enabled'), + 'Rollbar-Replay-RateLimit-Remaining': request.getResponseHeader('Rollbar-Replay-RateLimit-Remaining'), + 'Rollbar-Replay-RateLimit-Reset': request.getResponseHeader('Rollbar-Replay-RateLimit-Reset') + } : {}; + callback(parseResponse.error, parseResponse.value, _headers); + return; + } else if (_isNormalFailure(request)) { + if (request.status === 403) { + // likely caused by using a server access token + var message = parseResponse.value && parseResponse.value.message; + src_logger.error(message); + } + // return valid http status codes + callback(new Error(String(request.status))); + } else { + // IE will return a status 12000+ on some sort of connection failure, + // so we return a blank error + // http://msdn.microsoft.com/en-us/library/aa383770%28VS.85%29.aspx + var msg = 'XHR response had no status code (likely connection failure)'; + callback(_newRetriableError(msg)); + } } - }; - self.replacements['log'].push([method, orig]); + } catch (ex) { + //jquery source mentions firefox may error out while accessing the + //request members if there is a network error + //https://github.com/jquery/jquery/blob/a938d7b1282fc0e5c52502c225ae8f0cef219f0a/src/ajax/xhr.js#L111 + var exc; + if (ex && ex.stack) { + exc = ex; + } else { + exc = new Error(ex); + } + callback(exc); + } + }; + request.open(method, url, true); + if (request.setRequestHeader) { + request.setRequestHeader('Content-Type', 'application/json'); + request.setRequestHeader('X-Rollbar-Access-Token', accessToken); + for (var _i = 0, _Object$entries = Object.entries(headers !== null && headers !== void 0 ? headers : {}); _i < _Object$entries.length; _i++) { + var _Object$entries$_i = xhr_slicedToArray(_Object$entries[_i], 2), + h = _Object$entries$_i[0], + v = _Object$entries$_i[1]; + request.setRequestHeader(h, v); + } } - var methods = ['debug', 'info', 'warn', 'error', 'log']; - try { - for (var _i2 = 0, _methods = methods; _i2 < _methods.length; _i2++) { - var m = _methods[_i2]; - wrapConsole(m); + if (isFiniteNumber(timeout)) { + request.timeout = timeout; + } + request.onreadystatechange = _onreadystatechange; + request.send(payload); + } catch (_e1) { + // Sending using the normal xmlhttprequest object didn't work, try XDomainRequest + if (typeof XDomainRequest !== 'undefined') { + // Assume we are in a really old browser which has a bunch of limitations: + // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx + + // Extreme paranoia: if we have XDomainRequest then we have a window, but just in case + if (!window || !window.location) { + return callback(new Error('No window available during request, unknown environment')); } - } catch (e) { - this.diagnostic.instrumentConsole = { - error: e.message + + // If the current page is http, try and send over http + if (window.location.href.substring(0, 5) === 'http:' && url.substring(0, 5) === 'https') { + url = 'http' + url.substring(5); + } + var xdomainrequest = new XDomainRequest(); + xdomainrequest.onprogress = function () {}; + xdomainrequest.ontimeout = function () { + var msg = 'Request timed out'; + var code = 'ETIMEDOUT'; + callback(_newRetriableError(msg, code)); + }; + xdomainrequest.onerror = function () { + callback(new Error('Error during request')); + }; + xdomainrequest.onload = function () { + var parseResponse = jsonParse(xdomainrequest.responseText); + callback(parseResponse.error, parseResponse.value); }; + xdomainrequest.open(method, url, true); + xdomainrequest.send(payload); + } else { + callback(new Error('Cannot find a method to transport a request')); } } - }, { - key: "deinstrumentDom", - value: function deinstrumentDom() { - this.removeListeners('dom'); - } - }, { - key: "instrumentDom", - value: function instrumentDom() { - var _this = this; - var self = this; - this.addListener('dom', this._window, ['click', 'dblclick', 'contextmenu'], function (e) { - return _this.handleEvent('click', e); - }); - this.addListener('dom', this._window, ['dragstart', 'dragend', 'dragenter', 'dragleave', 'drop'], function (e) { - return _this.handleEvent('dragdrop', e); - }); - this.addListener('dom', this._window, ['blur', 'focus'], function (e) { - return _this.handleEvent('focus', e); - }); - this.addListener('dom', this._window, ['submit', 'invalid'], function (e) { - return _this.handleEvent('form', e); - }); - this.addListener('dom', this._window, ['input', 'change'], function (e) { - return _this.handleEvent('input', e); - }); - this.addListener('dom', this._window, ['resize'], function (e) { - return _this.handleEvent('resize', e); - }); - this.addListener('dom', this._document, ['DOMContentLoaded'], function (e) { - return _this.handleEvent('contentLoaded', e); - }); - } - }, { - key: "handleEvent", - value: function handleEvent(name, evt) { - try { - return { - click: this.handleClick, - dragdrop: this.handleDrag, - focus: this.handleFocus, - form: this.handleForm, - input: this.handleInput, - resize: this.handleResize, - contentLoaded: this.handleContentLoaded - }[name].call(this, evt); - } catch (exc) { - console.log("".concat(name, " handler error"), evt, exc, exc.stack); - } - } - }, { - key: "handleContentLoaded", - value: function handleContentLoaded(evt) { - var replayId = this.rollbar.triggerReplay({ - type: 'navigation', - path: new URL(this._location.href).pathname - }); - } - }, { - key: "handleClick", - value: function handleClick(evt) { - var _evt$target; - var tagName = (_evt$target = evt.target) === null || _evt$target === void 0 ? void 0 : _evt$target.tagName.toLowerCase(); - if (['input', 'select', 'textarea'].includes(tagName)) return; - this.telemeter.captureClick({ - type: evt.type, - isSynthetic: !evt.isTrusted, - element: domUtility_elementString(evt.target), - timestamp: utility_now() - }); - } - }, { - key: "handleFocus", - value: function handleFocus(evt) { - var _evt$target2; - var type = evt.type; - var element = (_evt$target2 = evt.target) !== null && _evt$target2 !== void 0 && _evt$target2.window ? 'window' : domUtility_elementString(evt.target); - this.telemeter.captureFocus({ - type: type, - isSynthetic: !evt.isTrusted, - element: element, - timestamp: utility_now() - }); - } - }, { - key: "handleForm", - value: function handleForm(evt) { - var _evt$target3; - // TODO: implement form event handling - var type = evt.type; - var elementString = (_evt$target3 = evt.target) !== null && _evt$target3 !== void 0 && _evt$target3.window ? 'window' : domUtility_elementString(evt.target); - } - }, { - key: "handleResize", - value: function handleResize(evt) { - var textZoomRatio = window.screen.width / window.innerWidth; - this.telemeter.captureResize({ - type: evt.type, - isSynthetic: !evt.isTrusted, - width: window.innerWidth, - height: window.innerHeight, - textZoomRatio: textZoomRatio, - timestamp: utility_now() - }); - } - }, { - key: "handleDrag", - value: function handleDrag(evt) { - var type = evt.type; - var kinds, mediaTypes, dropEffect, effectAllowed; - if (type === 'drop') { - kinds = []; - mediaTypes = []; - var objs = [].concat(telemetry_toConsumableArray(evt.dataTransfer.files), telemetry_toConsumableArray(evt.dataTransfer.items)); - var _iterator6 = telemetry_createForOfIteratorHelper(objs), - _step6; - try { - for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { - var o = _step6.value; - if (o.kind && o.type) { - kinds.push(o.kind); - mediaTypes.push(o.type); - } - } - } catch (err) { - _iterator6.e(err); - } finally { - _iterator6.f(); - } - } - if (['drop', 'dragstart'].includes(type)) { - var _evt$dataTransfer, _evt$dataTransfer2; - dropEffect = (_evt$dataTransfer = evt.dataTransfer) === null || _evt$dataTransfer === void 0 ? void 0 : _evt$dataTransfer.dropEffect; - effectAllowed = (_evt$dataTransfer2 = evt.dataTransfer) === null || _evt$dataTransfer2 === void 0 ? void 0 : _evt$dataTransfer2.effectAllowed; - } - this.telemeter.captureDragDrop({ - type: type, - isSynthetic: !evt.isTrusted, - element: domUtility_elementString(evt.target), - dropEffect: dropEffect, - effectAllowed: effectAllowed, - kinds: JSON.stringify(kinds), - mediaTypes: JSON.stringify(mediaTypes), - timestamp: utility_now() - }); + } catch (e2) { + callback(e2); + } +} +function _createXMLHTTPObject() { + /* global ActiveXObject:false */ + + var factories = [function () { + return new XMLHttpRequest(); + }, function () { + return new ActiveXObject('Msxml2.XMLHTTP'); + }, function () { + return new ActiveXObject('Msxml3.XMLHTTP'); + }, function () { + return new ActiveXObject('Microsoft.XMLHTTP'); + }]; + var xmlhttp; + var i; + var numFactories = factories.length; + for (i = 0; i < numFactories; i++) { + try { + xmlhttp = factories[i](); + break; + } catch (_e) { + // pass } + } + return xmlhttp; +} +function _isSuccess(r) { + return r && r.status && r.status === 200; +} +function _isNormalFailure(r) { + return r && isType(r.status, 'number') && r.status >= 400 && r.status < 600; +} +function _newRetriableError(message, code) { + var err = new Error(message); + err.code = code || 'ENOTFOUND'; + return err; +} +/* harmony default export */ var xhr = (makeXhrRequest); +;// ./src/browser/transport.js - /* - * Applies Rollbar telemetry scrubbing options to the dom input value. - * When replay options are present, applies those as well. - */ - }, { - key: "scrubInputValue", - value: function scrubInputValue(value, element, tagName, inputType) { - var mask = '******'; - if (inputType === 'password') { - return mask; - } - if (this.scrubTelemetryInputs) { - return mask; - } else { - var description = describeElement(element); - if (this.telemetryScrubber) { - if (this.telemetryScrubber(description)) { - return mask; - } - } else if (this.defaultValueScrubber(description)) { - return mask; - } - } - // Apply replay options regardless of other scrubbing - if (isMatchingElement(element, this.scrubClasses, this.scrubSelectors)) { - return mask; - } - // This check is last since maskInputFn returns a modified value rather - // than a boolean, which would cause an early return even if the value - // was not scrubbed. - if (this.maskInputOptions[tagName.toLowerCase()] || this.maskInputOptions[inputType]) { - if (this.maskInputFn) { - return this.maskInputFn(value, element); - } else { - return mask; - } - } - return value; - } - /* - * Uses the `input` event for everything except radio and checkbox inputs. - * For those, it uses the `change` event. - */ - }, { - key: "handleInput", - value: function handleInput(evt) { - var _evt$target4, _evt$target5, _evt$target6, _evt$target7; - var type = evt.type; - var tagName = (_evt$target4 = evt.target) === null || _evt$target4 === void 0 ? void 0 : _evt$target4.tagName.toLowerCase(); - var value = (_evt$target5 = evt.target) === null || _evt$target5 === void 0 ? void 0 : _evt$target5.value; - var inputType = ((_evt$target6 = evt.target) === null || _evt$target6 === void 0 || (_evt$target6 = _evt$target6.attributes) === null || _evt$target6 === void 0 || (_evt$target6 = _evt$target6.type) === null || _evt$target6 === void 0 ? void 0 : _evt$target6.value) || ((_evt$target7 = evt.target) === null || _evt$target7 === void 0 ? void 0 : _evt$target7.type); - if (value !== undefined) { - value = this.scrubInputValue(value, evt.target, tagName, inputType); - } - switch (type) { - case 'input': - if (['radio', 'checkbox'].includes(inputType)) return; - if (['select', 'textarea'].includes(tagName)) { - inputType = tagName; - } - break; - case 'change': - if (!['radio', 'checkbox'].includes(inputType)) return; - if (inputType === 'checkbox') { - var _evt$target8; - value = (_evt$target8 = evt.target) === null || _evt$target8 === void 0 ? void 0 : _evt$target8.checked; - } - break; - } - this.telemeter.captureInput({ - type: inputType, - isSynthetic: !evt.isTrusted, - element: domUtility_elementString(evt.target), - value: value, - timestamp: utility_now() - }); - } - }, { - key: "deinstrumentNavigation", - value: function deinstrumentNavigation() { - var chrome = this._window.chrome; - var chromePackagedApp = chrome && chrome.app && chrome.app.runtime; - // See https://github.com/angular/angular.js/pull/13945/files - var hasPushState = !chromePackagedApp && this._window.history && this._window.history.pushState; - if (!hasPushState) { - return; - } - restore(this.replacements, 'navigation'); - } - }, { - key: "instrumentNavigation", - value: function instrumentNavigation() { - var chrome = this._window.chrome; - var chromePackagedApp = chrome && chrome.app && chrome.app.runtime; - // See https://github.com/angular/angular.js/pull/13945/files - var hasPushState = !chromePackagedApp && this._window.history && this._window.history.pushState; - if (!hasPushState) { - return; - } - var self = this; - utility_replace(this._window, 'onpopstate', function (orig) { - return function () { - var current = self._location.href; - self.handleUrlChange(self._lastHref, current); - if (orig) { - orig.apply(this, arguments); - } - }; - }, this.replacements, 'navigation'); - utility_replace(this._window.history, 'pushState', function (orig) { - return function () { - var url = arguments.length > 2 ? arguments[2] : undefined; - if (url) { - self.handleUrlChange(self._lastHref, url + ''); - } - return orig.apply(this, arguments); - }; - }, this.replacements, 'navigation'); - } - }, { - key: "handleUrlChange", - value: function handleUrlChange(from, to) { - var parsedHref = parse(this._location.href); - var parsedTo = parse(to); - var parsedFrom = parse(from); - this._lastHref = to; - if (parsedHref.protocol === parsedTo.protocol && parsedHref.host === parsedTo.host) { - to = parsedTo.path + (parsedTo.hash || ''); - } - if (parsedHref.protocol === parsedFrom.protocol && parsedHref.host === parsedFrom.host) { - from = parsedFrom.path + (parsedFrom.hash || ''); - } - this.telemeter.captureNavigation(from, to, null, utility_now()); - var replayId = this.rollbar.triggerReplay({ - type: 'navigation', - path: to - }); - } - }, { - key: "instrumentConnectivity", - value: function instrumentConnectivity() { - var self = this; - this.addListener('connectivity', this._window, ['online', 'offline'], function (evt) { - return self.handleConnectivity(evt); - }); - } - }, { - key: "handleConnectivity", - value: function handleConnectivity(evt) { - var type = evt.type; - this.telemeter.captureConnectivityChange({ - type: type, - isSynthetic: !evt.isTrusted, - timestamp: utility_now() - }); - } - }, { - key: "handleCspEvent", - value: function handleCspEvent(cspEvent) { - var message = 'Security Policy Violation: ' + 'blockedURI: ' + cspEvent.blockedURI + ', ' + 'violatedDirective: ' + cspEvent.violatedDirective + ', ' + 'effectiveDirective: ' + cspEvent.effectiveDirective + ', '; - if (cspEvent.sourceFile) { - message += 'location: ' + cspEvent.sourceFile + ', ' + 'line: ' + cspEvent.lineNumber + ', ' + 'col: ' + cspEvent.columnNumber + ', '; - } - message += 'originalPolicy: ' + cspEvent.originalPolicy; - this.telemeter.captureLog(message, 'error', null, utility_now()); - this.handleCspError(message); - } - }, { - key: "handleCspError", - value: function handleCspError(message) { - if (this.autoInstrument.errorOnContentSecurityPolicy) { - this.rollbar.error(message); - } - } - }, { - key: "deinstrumentContentSecurityPolicy", - value: function deinstrumentContentSecurityPolicy() { - this.removeListeners('contentsecuritypolicy'); - } - }, { - key: "instrumentContentSecurityPolicy", - value: function instrumentContentSecurityPolicy() { - if (!('addEventListener' in this._document)) { - return; - } - var cspHandler = this.handleCspEvent.bind(this); - this.addListener('contentsecuritypolicy', this._document, ['securitypolicyviolation'], cspHandler); - } - }, { - key: "addListener", - value: function addListener(section, obj, types, handler) { - var _this2 = this; - if (obj.addEventListener) { - var _iterator7 = telemetry_createForOfIteratorHelper(types), - _step7; - try { - var _loop = function _loop() { - var t = _step7.value; - var options = { - capture: true, - passive: true - }; - obj.addEventListener(t, handler, options, true); - _this2.eventRemovers[section].push(function () { - obj.removeEventListener(t, handler, options); - }); - }; - for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { - _loop(); - } - } catch (err) { - _iterator7.e(err); - } finally { - _iterator7.f(); - } - } - } - }, { - key: "removeListeners", - value: function removeListeners(section) { - var r; - while (this.eventRemovers[section].length) { - r = this.eventRemovers[section].shift(); - r(); - } - } - }]); -}(); -function _isUrlObject(input) { - return typeof URL !== 'undefined' && input instanceof URL; +/* + * accessToken may be embedded in payload but that should not + * be assumed + * + * options: { + * hostname + * protocol + * path + * port + * method + * transport ('xhr' | 'fetch') + * } + * + * params is an object containing key/value pairs. These + * will be appended to the path as 'key=value&key=value' + * + * payload is an unserialized object + */ +function Transport(truncation) { + this.truncation = truncation; } -/* harmony default export */ var browser_telemetry = (Instrumenter); -;// ./src/browser/wrapGlobals.js -function wrapGlobals(window, handler, shim) { - if (!window) { - return; - } - // Adapted from https://github.com/bugsnag/bugsnag-js - var globals = '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'.split(','); - var i, global; - for (i = 0; i < globals.length; ++i) { - global = globals[i]; - if (window[global] && window[global].prototype) { - _extendListenerPrototype(handler, window[global].prototype, shim); - } +Transport.prototype.get = function (accessToken, options, params, callback, requestFactory) { + if (!callback || !isFunction(callback)) { + callback = function callback() {}; } -} -function _extendListenerPrototype(handler, prototype, shim) { - if (prototype.hasOwnProperty && prototype.hasOwnProperty('addEventListener')) { - var oldAddEventListener = prototype.addEventListener; - while (oldAddEventListener._rollbarOldAdd && oldAddEventListener.belongsToShim) { - oldAddEventListener = oldAddEventListener._rollbarOldAdd; - } - var addFn = function addFn(event, callback, bubble) { - oldAddEventListener.call(this, event, handler.wrap(callback), bubble); - }; - addFn._rollbarOldAdd = oldAddEventListener; - addFn.belongsToShim = shim; - prototype.addEventListener = addFn; - var oldRemoveEventListener = prototype.removeEventListener; - while (oldRemoveEventListener._rollbarOldRemove && oldRemoveEventListener.belongsToShim) { - oldRemoveEventListener = oldRemoveEventListener._rollbarOldRemove; - } - var removeFn = function removeFn(event, callback, bubble) { - oldRemoveEventListener.call(this, event, callback && callback._rollbar_wrapped || callback, bubble); - }; - removeFn._rollbarOldRemove = oldRemoveEventListener; - removeFn.belongsToShim = shim; - prototype.removeEventListener = removeFn; + addParamsAndAccessTokenToPath(accessToken, options, params); + var method = 'GET'; + var url = formatUrl(options); + this._makeZoneRequest({ + accessToken: accessToken, + url: url, + method: method, + callback: callback, + requestFactory: requestFactory, + timeout: options.timeout, + transport: options.transport + }); +}; +Transport.prototype.post = function (_ref) { + var accessToken = _ref.accessToken, + options = _ref.options, + payload = _ref.payload, + headers = _ref.headers, + callback = _ref.callback, + requestFactory = _ref.requestFactory; + if (!callback || !isFunction(callback)) { + callback = function callback() {}; } -} -/* harmony default export */ var browser_wrapGlobals = (wrapGlobals); -;// ./src/truncation.js - - -function raw(payload, jsonBackup) { - return [payload, stringify(payload, jsonBackup)]; -} -function selectFrames(frames, range) { - var len = frames.length; - if (len > range * 2) { - return frames.slice(0, range).concat(frames.slice(len - range)); + if (!payload) { + return callback(new Error('Cannot send empty request')); } - return frames; -} -function truncateFrames(payload, jsonBackup, range) { - range = typeof range === 'undefined' ? 30 : range; - var body = payload.data.body; - var frames; - if (body.trace_chain) { - var chain = body.trace_chain; - for (var i = 0; i < chain.length; i++) { - frames = chain[i].frames; - frames = selectFrames(frames, range); - chain[i].frames = frames; - } - } else if (body.trace) { - frames = body.trace.frames; - frames = selectFrames(frames, range); - body.trace.frames = frames; + var stringifyResult; + // Check payload.body to ensure only items are truncated. + if (this.truncation && payload.body) { + stringifyResult = this.truncation.truncate(payload); + } else { + stringifyResult = stringify(payload); } - return [payload, stringify(payload, jsonBackup)]; -} -function maybeTruncateValue(len, val) { - if (!val) { - return val; + if (stringifyResult.error) { + return callback(stringifyResult.error); } - if (val.length > len) { - return val.slice(0, len - 3).concat('...'); + var method = 'POST'; + var url = formatUrl(options); + this._makeZoneRequest({ + accessToken: accessToken, + url: url, + method: method, + payload: stringifyResult.value, + headers: headers, + callback: callback, + requestFactory: requestFactory, + timeout: options.timeout, + transport: options.transport + }); +}; +Transport.prototype.postJsonPayload = function (accessToken, options, payload, callback, requestFactory) { + if (!callback || !isFunction(callback)) { + callback = function callback() {}; } - return val; -} -function truncateStrings(len, payload, jsonBackup) { - function truncator(k, v, seen) { - switch (typeName(v)) { - case 'string': - return maybeTruncateValue(len, v); - case 'object': - case 'array': - return utility_traverse(v, truncator, seen); - default: - return v; - } + var method = 'POST'; + var url = formatUrl(options); + this._makeZoneRequest({ + accessToken: accessToken, + url: url, + method: method, + payload: payload, + callback: callback, + requestFactory: requestFactory, + timeout: options.timeout, + transport: options.transport + }); +}; + +// Wraps `_makeRequest` if zone.js is being used, ensuring that Rollbar +// API calls are not intercepted by any child forked zones. +// This is equivalent to `NgZone.runOutsideAngular` in Angular. +Transport.prototype._makeZoneRequest = function () { + var _this = this; + var gWindow = typeof window !== 'undefined' && window || typeof self !== 'undefined' && self; + // Whenever zone.js is loaded and `Zone` is exposed globally, access + // the root zone to ensure that requests are always made within it. + // This approach is framework-agnostic, regardless of which + // framework zone.js is used with. + var rootZone = gWindow && gWindow.Zone && gWindow.Zone.root; + var args = Array.prototype.slice.call(arguments); + if (rootZone) { + rootZone.run(function () { + _this._makeRequest.apply(undefined, args); + }); + } else { + this._makeRequest.apply(undefined, args); } - payload = utility_traverse(payload, truncator); - return [payload, stringify(payload, jsonBackup)]; -} -function truncateTraceData(traceData) { - if (traceData.exception) { - delete traceData.exception.description; - traceData.exception.message = maybeTruncateValue(255, traceData.exception.message); +}; +Transport.prototype._makeRequest = function (params) { + var payload = params.payload, + callback = params.callback, + transport = params.transport; + if (typeof RollbarProxy !== 'undefined') { + return _proxyRequest(payload, callback); } - traceData.frames = selectFrames(traceData.frames, 1); - return traceData; -} -function minBody(payload, jsonBackup) { - var body = payload.data.body; - if (body.trace_chain) { - var chain = body.trace_chain; - for (var i = 0; i < chain.length; i++) { - chain[i] = truncateTraceData(chain[i]); - } - } else if (body.trace) { - body.trace = truncateTraceData(body.trace); + if (transport === 'fetch') { + transport_fetch(params); + } else { + xhr(params); } - return [payload, stringify(payload, jsonBackup)]; -} -function needsTruncation(payload, maxSize) { - return maxByteSize(payload) > maxSize; +}; + +/* global RollbarProxy */ +function _proxyRequest(json, callback) { + var rollbarProxy = new RollbarProxy(); + rollbarProxy.sendJsonPayload(json, function (_msg) { + /* do nothing */ + }, function (err) { + callback(new Error(err)); + }); } -function truncate(payload, jsonBackup, maxSize) { - maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize; - var strategies = [raw, truncateFrames, truncateStrings.bind(null, 1024), truncateStrings.bind(null, 512), truncateStrings.bind(null, 256), minBody]; - var strategy, results, result; - while (strategy = strategies.shift()) { - results = strategy(payload, jsonBackup); - payload = results[0]; - result = results[1]; - if (result.error || !needsTruncation(result.value, maxSize)) { +/* harmony default export */ var browser_transport = (Transport); +;// ./src/browser/url.js +// See https://nodejs.org/docs/latest/api/url.html +function url_parse(url) { + var result = { + protocol: null, + auth: null, + host: null, + path: null, + hash: null, + href: url, + hostname: null, + port: null, + pathname: null, + search: null, + query: null + }; + var i, last; + i = url.indexOf('//'); + if (i !== -1) { + result.protocol = url.substring(0, i); + last = i + 2; + } else { + last = 0; + } + i = url.indexOf('@', last); + if (i !== -1) { + result.auth = url.substring(last, i); + last = i + 1; + } + i = url.indexOf('/', last); + if (i === -1) { + i = url.indexOf('?', last); + if (i === -1) { + i = url.indexOf('#', last); + if (i === -1) { + result.host = url.substring(last); + } else { + result.host = url.substring(last, i); + result.hash = url.substring(i); + } + result.hostname = result.host.split(':')[0]; + result.port = result.host.split(':')[1]; + if (result.port) { + result.port = parseInt(result.port, 10); + } return result; + } else { + result.host = url.substring(last, i); + result.hostname = result.host.split(':')[0]; + result.port = result.host.split(':')[1]; + if (result.port) { + result.port = parseInt(result.port, 10); + } + last = i; + } + } else { + result.host = url.substring(last, i); + result.hostname = result.host.split(':')[0]; + result.port = result.host.split(':')[1]; + if (result.port) { + result.port = parseInt(result.port, 10); } + last = i; + } + i = url.indexOf('#', last); + if (i === -1) { + result.path = url.substring(last); + } else { + result.path = url.substring(last, i); + result.hash = url.substring(i); + } + if (result.path) { + var pathParts = result.path.split('?'); + result.pathname = pathParts[0]; + result.query = pathParts[1]; + result.search = result.query ? '?' + result.query : null; } return result; } -/* harmony default export */ var truncation = ({ - truncate: truncate, - /* for testing */ - raw: raw, - truncateFrames: truncateFrames, - truncateStrings: truncateStrings, - maybeTruncateValue: maybeTruncateValue -}); -;// ./src/tracing/context.js -function context_typeof(o) { "@babel/helpers - typeof"; return context_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, context_typeof(o); } -function context_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function context_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, context_toPropertyKey(o.key), o); } } -function context_createClass(e, r, t) { return r && context_defineProperties(e.prototype, r), t && context_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function context_toPropertyKey(t) { var i = context_toPrimitive(t, "string"); return "symbol" == context_typeof(i) ? i : i + ""; } -function context_toPrimitive(t, r) { if ("object" != context_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != context_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -var Context = /*#__PURE__*/function () { - function Context(parentContext) { - context_classCallCheck(this, Context); - this._currentContext = parentContext ? new Map(parentContext) : new Map(); - } - return context_createClass(Context, [{ - key: "getValue", - value: function getValue(key) { - return this._currentContext.get(key); + +;// ./src/browser/core.js +var _Rollbar; +function core_typeof(o) { "@babel/helpers - typeof"; return core_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, core_typeof(o); } +function core_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function core_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? core_ownKeys(Object(t), !0).forEach(function (r) { core_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : core_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function core_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function core_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, core_toPropertyKey(o.key), o); } } +function core_createClass(e, r, t) { return r && core_defineProperties(e.prototype, r), t && core_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function core_defineProperty(e, r, t) { return (r = core_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function core_toPropertyKey(t) { var i = core_toPrimitive(t, "string"); return "symbol" == core_typeof(i) ? i : i + ""; } +function core_toPrimitive(t, r) { if ("object" != core_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != core_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + + + + + + + + + + + + + + + + + +// Used to support global `Rollbar` instance. +var _instance = null; +var core_Rollbar = /*#__PURE__*/function () { + function Rollbar(options, client) { + core_classCallCheck(this, Rollbar); + src_logger.init({ + logLevel: options.logLevel || 'error' + }); + this.options = handleOptions(core_defaultOptions, options, null, src_logger); + this.options._configuredOptions = options; + this.components = this.components || {}; + var Telemeter = this.components.telemeter; + var Instrumenter = this.components.instrumenter; + this.wrapGlobals = this.components.wrapGlobals; + this.scrub = this.components.scrub; + var truncation = this.components.truncation; + var Tracing = this.components.tracing; + var Replay = this.components.replay; + var transport = new browser_transport(truncation); + var api = new src_api(this.options, transport, url_namespaceObject, truncation); + if (Tracing) { + this.tracing = new Tracing(_gWindow(), api, this.options); + this.tracing.initSession(); } - }, { - key: "setValue", - value: function setValue(key, value) { - var context = new Context(this._currentContext); - context._currentContext.set(key, value); - return context; + if (Telemeter) { + this.telemeter = new Telemeter(this.options, this.tracing); } - }, { - key: "deleteValue", - value: function deleteValue(key) { - var context = new Context(self._currentContext); - context._currentContext.delete(key); - return context; + if (Replay && isBrowser()) { + var replayOptions = this.options.replay; + this.replay = new Replay({ + tracing: this.tracing, + telemeter: this.telemeter, + options: replayOptions + }); + if (replayOptions.enabled && replayOptions.autoStart) { + this.replay.recorder.start(); + } } - }]); -}(); -var ROOT_CONTEXT = new Context(); -;// ./src/tracing/contextManager.js -function contextManager_typeof(o) { "@babel/helpers - typeof"; return contextManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, contextManager_typeof(o); } -function contextManager_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function contextManager_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, contextManager_toPropertyKey(o.key), o); } } -function contextManager_createClass(e, r, t) { return r && contextManager_defineProperties(e.prototype, r), t && contextManager_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function contextManager_toPropertyKey(t) { var i = contextManager_toPrimitive(t, "string"); return "symbol" == contextManager_typeof(i) ? i : i + ""; } -function contextManager_toPrimitive(t, r) { if ("object" != contextManager_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != contextManager_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + this.client = client || new rollbar(this.options, api, src_logger, this.telemeter, this.tracing, this.replay, 'browser'); + var gWindow = _gWindow(); + var gDocument = typeof document !== 'undefined' && document; + this.isChrome = gWindow.chrome && gWindow.chrome.runtime; // check .runtime to avoid Edge browsers + this.anonymousErrorsPending = 0; + addTransformsToNotifier(this.client.notifier, this, gWindow); + addPredicatesToQueue(this.client.queue); + this.setupUnhandledCapture(); + if (Instrumenter) { + this.instrumenter = new Instrumenter(this.options, this.client.telemeter, this, gWindow, gDocument); + this.instrumenter.instrument(); + } + this.setSessionAttributesFromOptions(options); -var ContextManager = /*#__PURE__*/function () { - function ContextManager() { - contextManager_classCallCheck(this, ContextManager); - this.currentContext = ROOT_CONTEXT; + // Used with rollbar-react for rollbar-react-native compatibility. + this.rollbar = this; } - return contextManager_createClass(ContextManager, [{ - key: "active", - value: function active() { - return this.currentContext; - } - }, { - key: "enterContext", - value: function enterContext(context) { - var previousContext = this.currentContext; - this.currentContext = context || ROOT_CONTEXT; - return previousContext; + return core_createClass(Rollbar, [{ + key: "global", + value: function global(options) { + this.client.global(options); + return this; } }, { - key: "exitContext", - value: function exitContext(context) { - this.currentContext = context; - return this.currentContext; - } - }, { - key: "with", - value: function _with(context, fn, thisArg) { - var previousContext = this.enterContext(context); - try { - for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { - args[_key - 3] = arguments[_key]; - } - return fn.call.apply(fn, [thisArg].concat(args)); - } finally { - this.exitContext(previousContext); + key: "configure", + value: function configure(options, payloadData) { + var _this$tracing, _this$replay, _this$instrumenter; + if (options.logLevel) { + src_logger.init({ + logLevel: options.logLevel + }); } - } - }]); -}(); -function createContextKey(key) { - // Use Symbol for OpenTelemetry compatibility. - return Symbol.for(key); -} -;// ./src/tracing/id.js -/** - * Generate a random hexadecimal ID of specified byte length - * - * @param {number} bytes - Number of bytes for the ID (default: 16) - * @returns {string} - Hexadecimal string representation - */ -function gen() { - var bytes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16; - var randomBytes = new Uint8Array(bytes); - crypto.getRandomValues(randomBytes); - var randHex = Array.from(randomBytes, function (byte) { - return byte.toString(16).padStart(2, '0'); - }).join(''); - return randHex; -} - -/** - * Tracing id generation utils - * - * @example - * import id from './id.js'; - * - * const spanId = id.gen(8); // => "a1b2c3d4e5f6..." - */ -/* harmony default export */ var id = ({ - gen: gen -}); -;// ./src/tracing/session.js -function session_typeof(o) { "@babel/helpers - typeof"; return session_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, session_typeof(o); } -function session_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function session_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? session_ownKeys(Object(t), !0).forEach(function (r) { session_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : session_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function session_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function session_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, session_toPropertyKey(o.key), o); } } -function session_createClass(e, r, t) { return r && session_defineProperties(e.prototype, r), t && session_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function session_defineProperty(e, r, t) { return (r = session_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function session_toPropertyKey(t) { var i = session_toPrimitive(t, "string"); return "symbol" == session_typeof(i) ? i : i + ""; } -function session_toPrimitive(t, r) { if ("object" != session_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != session_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - -var SESSION_KEY = 'RollbarSession'; -var Session = /*#__PURE__*/function () { - function Session(tracing, options) { - session_classCallCheck(this, Session); - session_defineProperty(this, "_attributes", void 0); - this.options = options; - this.tracing = tracing; - this.window = tracing.window; - this.session = null; - this._attributes = {}; - } - return session_createClass(Session, [{ - key: "init", - value: function init() { - var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - if (this.session) { - return this; + this.setSessionAttributesFromOptions(options); + var oldOptions = this.options; + var payload = {}; + if (payloadData) { + payload = { + payload: payloadData + }; } - this.getSession() || this.createSession(); - this.initSessionAttributes(attrs); + this.options = handleOptions(oldOptions, options, payload, src_logger); + this.options._configuredOptions = handleOptions(oldOptions._configuredOptions, options, payload); + (_this$tracing = this.tracing) === null || _this$tracing === void 0 || _this$tracing.configure(this.options); + (_this$replay = this.replay) === null || _this$replay === void 0 || _this$replay.configure(this.options.replay); + this.client.configure(this.options, payloadData); + (_this$instrumenter = this.instrumenter) === null || _this$instrumenter === void 0 || _this$instrumenter.configure(this.options); + this.setupUnhandledCapture(); return this; } }, { - key: "getSession", - value: function getSession() { - try { - var serializedSession = this.window.sessionStorage.getItem(SESSION_KEY); - if (!serializedSession) { - return null; - } - this.session = JSON.parse(serializedSession); - } catch (_unused) { - return null; - } - return this; + key: "lastError", + value: function lastError() { + return this.client.lastError; } }, { - key: "createSession", - value: function createSession() { - this.session = { - id: id.gen(), - createdAt: Date.now() + key: "log", + value: function log() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.log(item); + return { + uuid: uuid }; - return this.setSession(this.session); } }, { - key: "setSession", - value: function setSession(session) { - var sessionString = JSON.stringify(session); - try { - this.window.sessionStorage.setItem(SESSION_KEY, sessionString); - } catch (_unused2) { - return null; - } - return this; + key: "debug", + value: function debug() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.debug(item); + return { + uuid: uuid + }; } }, { - key: "attributes", - get: function get() { - return this._attributes; + key: "info", + value: function info() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.info(item); + return { + uuid: uuid + }; } }, { - key: "setAttributes", - value: function setAttributes(attributes) { - this._attributes = session_objectSpread(session_objectSpread({}, this._attributes), attributes); - return this; + key: "warn", + value: function warn() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.warn(item); + return { + uuid: uuid + }; } }, { - key: "setUser", - value: function setUser(user) { - this.setAttributes({ - 'user.id': user === null || user === void 0 ? void 0 : user.id, - 'user.email': user === null || user === void 0 ? void 0 : user.email, - 'user.name': (user === null || user === void 0 ? void 0 : user.name) || (user === null || user === void 0 ? void 0 : user.username) - }); - return this; + key: "warning", + value: function warning() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.warning(item); + return { + uuid: uuid + }; } }, { - key: "initSessionAttributes", - value: function initSessionAttributes(attrs) { - var _navigator$userAgentD, _navigator$userAgentD2, _navigator$userAgentD3; - this.setAttributes(session_objectSpread({ - 'session.id': this.session.id, - 'browser.brands': (_navigator$userAgentD = navigator.userAgentData) === null || _navigator$userAgentD === void 0 ? void 0 : _navigator$userAgentD.brands, - 'browser.language': navigator.language, - 'browser.mobile': (_navigator$userAgentD2 = navigator.userAgentData) === null || _navigator$userAgentD2 === void 0 ? void 0 : _navigator$userAgentD2.mobile, - 'browser.platform': (_navigator$userAgentD3 = navigator.userAgentData) === null || _navigator$userAgentD3 === void 0 ? void 0 : _navigator$userAgentD3.platform, - 'client.address': '$remote_ip', - // updated at the API - 'rollbar.notifier.framework': 'browser-js', - 'user_agent.original': navigator.userAgent - }, attrs)); - return this; + key: "error", + value: function error() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.error(item); + return { + uuid: uuid + }; } - }]); -}(); -;// ./src/tracing/hrtime.js -/** - * @module hrtime - * - * @description Methods for handling OpenTelemetry hrtime. - */ - -/** - * Convert a duration in milliseconds to an OpenTelemetry hrtime tuple. - * - * @param {number} millis - The duration in milliseconds. - * @returns {[number, number]} An array where the first element is seconds - * and the second is nanoseconds. - */ -function hrtime_fromMillis(millis) { - return [Math.trunc(millis / 1000), Math.round(millis % 1000 * 1e6)]; -} - -/** - * Convert an OpenTelemetry hrtime tuple back to a duration in milliseconds. - * - * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds]. - * @returns {number} The total duration in milliseconds. - */ -function toMillis(hrtime) { - return hrtime[0] * 1e3 + Math.round(hrtime[1] / 1e6); -} - -/** - * Convert an OpenTelemetry hrtime tuple back to a duration in nanoseconds. - * - * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds]. - * @returns {number} The total duration in nanoseconds. - */ -function toNanos(hrtime) { - return hrtime[0] * 1e9 + hrtime[1]; -} - -/** - * Adds two OpenTelemetry hrtime tuples. - * - * @param {[number, number]} a - The first hrtime tuple [s, ns]. - * @param {[number, number]} b - The second hrtime tuple [s, ns]. - * @returns {[number, number]} Summed hrtime tuple, normalized. - * - */ -function add(a, b) { - return [a[0] + b[0] + Math.trunc((a[1] + b[1]) / 1e9), (a[1] + b[1]) % 1e9]; -} - -/** - * Get the current high-resolution time as an OpenTelemetry hrtime tuple. - * - * @param {boolean} usePerformance=false - If true, uses the Performance API (timeOrigin + now()). - * - * @returns {[number, number]} The current hrtime tuple [s, ns]. - */ -function now() { - var usePerformance = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - if (usePerformance) { - return add(hrtime_fromMillis(performance.timeOrigin), hrtime_fromMillis(performance.now())); - } - return hrtime_fromMillis(Date.now()); -} - -/** - * Check if a value is a valid OpenTelemetry hrtime tuple. - * - * An hrtime tuple is an Array of exactly two numbers: - * [seconds, nanoseconds] - * - * @param {*} value – anything to test - * @returns {boolean} true if `value` is a [number, number] array of length 2 - * - * @example - * isHrTime([ 1, 500 ]); // true - * isHrTime([ 0, 1e9 ]); // true - * isHrTime([ '1', 500 ]); // false - * isHrTime({ 0: 1, 1: 500 }); // false - */ -function isHrTime(value) { - return Array.isArray(value) && value.length === 2 && typeof value[0] === 'number' && typeof value[1] === 'number'; -} - -/** - * Methods for handling hrtime. OpenTelemetry uses the [seconds, nanoseconds] - * format for hrtime in the `ReadableSpan` interface. - * - * @example - * import hrtime from '@tracing/hrtime.js'; - * - * hrtime.fromMillis(1000); - * hrtime.toMillis([0, 1000]); - * hrtime.add([0, 0], [0, 1000]); - * hrtime.now(); - * hrtime.isHrTime([0, 1000]); - */ -/* harmony default export */ var hrtime = ({ - fromMillis: hrtime_fromMillis, - toMillis: toMillis, - toNanos: toNanos, - add: add, - now: now, - isHrTime: isHrTime -}); -;// ./src/tracing/exporter.js -function exporter_typeof(o) { "@babel/helpers - typeof"; return exporter_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, exporter_typeof(o); } -function exporter_slicedToArray(r, e) { return exporter_arrayWithHoles(r) || exporter_iterableToArrayLimit(r, e) || exporter_unsupportedIterableToArray(r, e) || exporter_nonIterableRest(); } -function exporter_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function exporter_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function exporter_arrayWithHoles(r) { if (Array.isArray(r)) return r; } -function exporter_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = exporter_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } -function exporter_toConsumableArray(r) { return exporter_arrayWithoutHoles(r) || exporter_iterableToArray(r) || exporter_unsupportedIterableToArray(r) || exporter_nonIterableSpread(); } -function exporter_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function exporter_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return exporter_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? exporter_arrayLikeToArray(r, a) : void 0; } } -function exporter_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } -function exporter_arrayWithoutHoles(r) { if (Array.isArray(r)) return exporter_arrayLikeToArray(r); } -function exporter_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function exporter_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function exporter_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, exporter_toPropertyKey(o.key), o); } } -function exporter_createClass(e, r, t) { return r && exporter_defineProperties(e.prototype, r), t && exporter_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function exporter_toPropertyKey(t) { var i = exporter_toPrimitive(t, "string"); return "symbol" == exporter_typeof(i) ? i : i + ""; } -function exporter_toPrimitive(t, r) { if ("object" != exporter_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != exporter_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - - -/** - * SpanExporter is responsible for exporting ReadableSpan objects - * and transforming them into the OTLP-compatible format. - */ -var SpanExporter = /*#__PURE__*/function () { - function SpanExporter(api) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - exporter_classCallCheck(this, SpanExporter); - this.api = api; - this.options = options; - } - - /** - * Export spans to the span export queue - * - * @param {Array} spans - Array of ReadableSpan objects to export - * @param {Function} _resultCallback - Optional callback (not used) - */ - return exporter_createClass(SpanExporter, [{ - key: "export", - value: function _export(spans, _resultCallback) { - spanExportQueue.push.apply(spanExportQueue, exporter_toConsumableArray(spans)); + }, { + key: "critical", + value: function critical() { + var item = this._createItem(arguments); + var uuid = item.uuid; + this.client.critical(item); + return { + uuid: uuid + }; } - - /** - * Transforms an array of ReadableSpan objects into the OTLP format payload - * compatible with the Rollbar API. This follows the OpenTelemetry protocol - * specification for traces. - * - * @returns {Object} OTLP format payload for API transmission - */ }, { - key: "toPayload", - value: function toPayload() { - var _this = this; - var spans = spanExportQueue.slice(); - spanExportQueue.length = 0; - if (!spans || !spans.length) { - return { - resourceSpans: [] - }; - } - var resource = spans[0] && spans[0].resource || {}; - var scopeMap = new Map(); - var _iterator = exporter_createForOfIteratorHelper(spans), - _step; - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var span = _step.value; - var scopeKey = span.instrumentationScope ? "".concat(span.instrumentationScope.name, ":").concat(span.instrumentationScope.version) : 'default:1.0.0'; - if (!scopeMap.has(scopeKey)) { - scopeMap.set(scopeKey, { - scope: span.instrumentationScope || { - name: 'default', - version: '1.0.0', - attributes: [] - }, - spans: [] - }); + key: "buildJsonPayload", + value: function buildJsonPayload(item) { + return this.client.buildJsonPayload(item); + } + }, { + key: "sendJsonPayload", + value: function sendJsonPayload(jsonPayload) { + return this.client.sendJsonPayload(jsonPayload); + } + }, { + key: "triggerDirectReplay", + value: function triggerDirectReplay(context) { + return this.triggerReplay(core_objectSpread({ + type: 'direct' + }, context)); + } + }, { + key: "triggerReplay", + value: function triggerReplay(context) { + if (!this.replay) return null; + return this.replay.triggerReplay(context); + } + }, { + key: "setupUnhandledCapture", + value: function setupUnhandledCapture() { + var gWindow = _gWindow(); + if (!this.unhandledExceptionsInitialized) { + if (this.options.captureUncaught || this.options.handleUncaughtExceptions) { + captureUncaughtExceptions(gWindow, this); + if (this.wrapGlobals && this.options.wrapGlobalEventHandlers) { + this.wrapGlobals(gWindow, this); } - scopeMap.get(scopeKey).spans.push(this._transformSpan(span)); + this.unhandledExceptionsInitialized = true; + } + } + if (!this.unhandledRejectionsInitialized) { + if (this.options.captureUnhandledRejections || this.options.handleUnhandledRejections) { + captureUnhandledRejections(gWindow, this); + this.unhandledRejectionsInitialized = true; } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); } - return { - resourceSpans: [{ - resource: this._transformResource(resource), - scopeSpans: Array.from(scopeMap.values()).map(function (scopeData) { - return { - scope: _this._transformInstrumentationScope(scopeData.scope), - spans: scopeData.spans - }; - }) - }] - }; } - - /** - * Sends the given payload to the Rollbar API. - * - * @param {String} payload - Serialized OTLP format payload - * @param {Object} headers - Optional request headers - * @returns {Promise} Promise that resolves when the request completes - */ }, { - key: "post", - value: function post(payload) { - var headers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - return this.api.postSpans(payload, headers); + key: "handleUncaughtException", + value: function handleUncaughtException(message, url, lineno, colno, error, context) { + if (!this.options.captureUncaught && !this.options.handleUncaughtExceptions) { + return; + } + + // Chrome will always send 5+ arguments and error will be valid or null, not undefined. + // If error is undefined, we have a different caller. + // Chrome also sends errors from web workers with null error, but does not invoke + // prepareStackTrace() for these. Test for empty url to skip them. + if (this.options.inspectAnonymousErrors && this.isChrome && error === null && url === '') { + return 'anonymous'; + } + var item; + var stackInfo = makeUnhandledStackInfo(message, url, lineno, colno, error, 'onerror', 'uncaught exception', errorParser); + if (isError(error)) { + item = this._createItem([message, error, context]); + item._unhandledStackInfo = stackInfo; + } else if (isError(url)) { + item = this._createItem([message, url, context]); + item._unhandledStackInfo = stackInfo; + } else { + item = this._createItem([message, context]); + item.stackInfo = stackInfo; + } + item.level = this.options.uncaughtErrorLevel; + item._isUncaught = true; + this.client.log(item); } /** - * Transforms a ReadableSpan into the OTLP Span format + * Chrome only. Other browsers will ignore. * - * @private - * @param {Object} span - ReadableSpan object to transform - * @returns {Object} OTLP Span format + * Use Error.prepareStackTrace to extract information about errors that + * do not have a valid error object in onerror(). + * + * In tested version of Chrome, onerror is called first but has no way + * to communicate with prepareStackTrace. Use a counter to let this + * handler know which errors to send to Rollbar. + * + * In config options, set inspectAnonymousErrors to enable. */ }, { - key: "_transformSpan", - value: function _transformSpan(span) { - var _this2 = this; - var transformAttributes = function transformAttributes(attributes) { - return Object.entries(attributes || {}).map(function (_ref) { - var _ref2 = exporter_slicedToArray(_ref, 2), - key = _ref2[0], - value = _ref2[1]; - return { - key: key, - value: _this2._transformAnyValue(value) - }; - }); - }; - var transformEvents = function transformEvents(events) { - return (events || []).map(function (event) { - return { - timeUnixNano: hrtime.toNanos(event.time), - name: event.name, - attributes: transformAttributes(event.attributes) - }; - }); - }; - return { - traceId: span.spanContext.traceId, - spanId: span.spanContext.spanId, - parentSpanId: span.parentSpanId || '', - name: span.name, - kind: span.kind || 1, - // INTERNAL by default - startTimeUnixNano: hrtime.toNanos(span.startTime), - endTimeUnixNano: hrtime.toNanos(span.endTime), - attributes: transformAttributes(span.attributes), - events: transformEvents(span.events) - }; - } + key: "handleAnonymousErrors", + value: function handleAnonymousErrors() { + var _this = this; + if (!this.options.inspectAnonymousErrors || !this.isChrome) { + return; + } + var prepareStackTrace = function prepareStackTrace(error, _stack) { + if (_this.options.inspectAnonymousErrors) { + if (_this.anonymousErrorsPending) { + // This is the only known way to detect that onerror saw an anonymous error. + // It depends on onerror reliably being called before Error.prepareStackTrace, + // which so far holds true on tested versions of Chrome. If versions of Chrome + // are tested that behave differently, this logic will need to be updated + // accordingly. + _this.anonymousErrorsPending -= 1; + if (!error) { + // Not likely to get here, but calling handleUncaughtException from here + // without an error object would throw off the anonymousErrorsPending counter, + // so return now. + return; + } - /** - * Transforms a resource object into OTLP Resource format - * - * @private - * @param {Object} resource - Resource information - * @returns {Object} OTLP Resource format - */ - }, { - key: "_transformResource", - value: function _transformResource(resource) { - var _this3 = this; - var attributes = resource.attributes || {}; - var keyValues = Object.entries(attributes).map(function (_ref3) { - var _ref4 = exporter_slicedToArray(_ref3, 2), - key = _ref4[0], - value = _ref4[1]; - return { - key: key, - value: _this3._transformAnyValue(value) - }; - }); - return { - attributes: keyValues - }; - } + // Allow this to be tracked later. + error._isAnonymous = true; - /** - * Transforms an instrumentation scope into OTLP InstrumentationScope format - * - * @private - * @param {Object} scope - Instrumentation scope information - * @returns {Object} OTLP InstrumentationScope format - */ - }, { - key: "_transformInstrumentationScope", - value: function _transformInstrumentationScope(scope) { - var _this4 = this; - return { - name: scope.name || '', - version: scope.version || '', - attributes: (scope.attributes || []).map(function (attr) { - return { - key: attr.key, - value: _this4._transformAnyValue(attr.value) - }; - }) + // url, lineno, colno shouldn't be needed for these errors. + // If that changes, update this accordingly, using the unused + // _stack param as needed (rather than parse error.toString()). + _this.handleUncaughtException(error.message, null, null, null, error); + } + } + + // Workaround to ensure stack is preserved for normal errors. + return error.stack; }; - } - /** - * Transforms a JavaScript value into an OTLP AnyValue - * - * @private - * @param {any} value - Value to transform - * @returns {Object} OTLP AnyValue format - */ + // https://v8.dev/docs/stack-trace-api + try { + Error.prepareStackTrace = prepareStackTrace; + } catch (e) { + this.options.inspectAnonymousErrors = false; + this.error('anonymous error handler failed', e); + } + } }, { - key: "_transformAnyValue", - value: function _transformAnyValue(value) { - var _this5 = this; - if (value === null || value === undefined) { - return { - stringValue: '' - }; + key: "handleUnhandledRejection", + value: function handleUnhandledRejection(reason, promise) { + if (!this.options.captureUnhandledRejections && !this.options.handleUnhandledRejections) { + return; } - var type = exporter_typeof(value); - if (type === 'string') { - return { - stringValue: value - }; - } else if (type === 'number') { - if (Number.isInteger(value)) { - return { - intValue: value.toString() - }; + var message = 'unhandled rejection was null or undefined!'; + if (reason) { + if (reason.message) { + message = reason.message; } else { - return { - doubleValue: value - }; - } - } else if (type === 'boolean') { - return { - boolValue: value - }; - } else if (Array.isArray(value)) { - return { - arrayValue: { - values: value.map(function (v) { - return _this5._transformAnyValue(v); - }) - } - }; - } else if (type === 'object') { - return { - kvlistValue: { - values: Object.entries(value).map(function (_ref5) { - var _ref6 = exporter_slicedToArray(_ref5, 2), - k = _ref6[0], - v = _ref6[1]; - return { - key: k, - value: _this5._transformAnyValue(v) - }; - }) + var reasonResult = stringify(reason); + if (reasonResult.value) { + message = reasonResult.value; } - }; + } } - return { - stringValue: String(value) - }; - } - }]); -}(); -var spanExportQueue = []; -;// ./src/tracing/spanProcessor.js -function spanProcessor_typeof(o) { "@babel/helpers - typeof"; return spanProcessor_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, spanProcessor_typeof(o); } -function spanProcessor_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = spanProcessor_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } -function spanProcessor_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return spanProcessor_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? spanProcessor_arrayLikeToArray(r, a) : void 0; } } -function spanProcessor_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function spanProcessor_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function spanProcessor_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, spanProcessor_toPropertyKey(o.key), o); } } -function spanProcessor_createClass(e, r, t) { return r && spanProcessor_defineProperties(e.prototype, r), t && spanProcessor_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function spanProcessor_toPropertyKey(t) { var i = spanProcessor_toPrimitive(t, "string"); return "symbol" == spanProcessor_typeof(i) ? i : i + ""; } -function spanProcessor_toPrimitive(t, r) { if ("object" != spanProcessor_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != spanProcessor_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - -var SpanProcessor = /*#__PURE__*/function () { - function SpanProcessor(exporter) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - spanProcessor_classCallCheck(this, SpanProcessor); - this.exporter = exporter; - this.options = options; - this.pendingSpans = new Map(); - this.transforms = [this.userTransform.bind(this)]; - } - return spanProcessor_createClass(SpanProcessor, [{ - key: "addTransform", - value: function addTransform(transformFn) { - this.transforms.unshift(transformFn); - } - }, { - key: "userTransform", - value: function userTransform(span) { - if (this.options.transformSpan) { - this.options.transformSpan({ - span: span - }); + var context = reason && reason._rollbarContext || promise && promise._rollbarContext; + var item; + if (isError(reason)) { + item = this._createItem([message, reason, context]); + } else { + item = this._createItem([message, reason, context]); + item.stackInfo = makeUnhandledStackInfo(message, '', 0, 0, null, 'unhandledrejection', '', errorParser); } + item.level = this.options.uncaughtErrorLevel; + item._isUncaught = true; + item._originalArgs = item._originalArgs || []; + item._originalArgs.push(promise); + this.client.log(item); } }, { - key: "applyTransforms", - value: function applyTransforms(span) { - var _iterator = spanProcessor_createForOfIteratorHelper(this.transforms), - _step; + key: "wrap", + value: function wrap(f, context, _before) { try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var transform = _step.value; - try { - transform(span); - } catch (e) { - src_logger.error('Error running span transform callback', e); - } + var ctxFn; + if (isFunction(context)) { + ctxFn = context; + } else { + ctxFn = function ctxFn() { + return context || {}; + }; } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - } - }, { - key: "onStart", - value: function onStart(span, _parentContext) { - this.pendingSpans.set(span.span.spanContext.spanId, span); - } - }, { - key: "onEnd", - value: function onEnd(span) { - this.applyTransforms(span.span); - this.exporter.export([span.export()]); - this.pendingSpans.delete(span.span.spanContext.spanId); - } - }]); -}(); -;// ./src/tracing/span.js -function span_typeof(o) { "@babel/helpers - typeof"; return span_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, span_typeof(o); } -function span_slicedToArray(r, e) { return span_arrayWithHoles(r) || span_iterableToArrayLimit(r, e) || span_unsupportedIterableToArray(r, e) || span_nonIterableRest(); } -function span_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function span_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return span_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? span_arrayLikeToArray(r, a) : void 0; } } -function span_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function span_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function span_arrayWithHoles(r) { if (Array.isArray(r)) return r; } -function span_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function span_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, span_toPropertyKey(o.key), o); } } -function span_createClass(e, r, t) { return r && span_defineProperties(e.prototype, r), t && span_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function span_toPropertyKey(t) { var i = span_toPrimitive(t, "string"); return "symbol" == span_typeof(i) ? i : i + ""; } -function span_toPrimitive(t, r) { if ("object" != span_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != span_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - -var Span = /*#__PURE__*/function () { - function Span(options) { - span_classCallCheck(this, Span); - this.usePerformance = options.usePerformance; - this.initReadableSpan(options); - this.spanProcessor = options.spanProcessor; - this.spanProcessor.onStart(this, options.context); - if (options.attributes) { - this.setAttributes(options.attributes); + if (!isFunction(f)) { + return f; + } + if (f._isWrap) { + return f; + } + if (!f._rollbar_wrapped) { + f._rollbar_wrapped = function () { + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } + try { + return f.apply(this, arguments); + } catch (exc) { + var e = exc; + if (e && window._rollbarWrappedError !== e) { + if (isType(e, 'string')) { + e = new String(e); + } + e._rollbarContext = ctxFn() || {}; + e._rollbarContext._wrappedSource = f.toString(); + window._rollbarWrappedError = e; + } + throw e; + } + }; + f._rollbar_wrapped._isWrap = true; + for (var prop in f) { + if (hasOwn(f, prop) && prop !== '_rollbar_wrapped') { + f._rollbar_wrapped[prop] = f[prop]; + } + } + } + return f._rollbar_wrapped; + } catch (_e) { + // Return the original function if the wrap fails. + return f; + } } - return this; - } - return span_createClass(Span, [{ - key: "initReadableSpan", - value: function initReadableSpan(options) { - var _options$session; - this.span = { - name: options.name, - kind: options.kind, - spanContext: options.spanContext, - parentSpanId: options.parentSpanId, - startTime: options.startTime || hrtime.now(options.usePerformance), - endTime: [0, 0], - status: { - code: 0, - message: '' - }, - attributes: { - 'session.id': (_options$session = options.session) === null || _options$session === void 0 ? void 0 : _options$session.id - }, - links: [], - events: [], - duration: 0, - ended: false, - resource: options.resource, - instrumentationScope: options.scope, - droppedAttributesCount: 0, - droppedEventsCount: 0, - droppedLinksCount: 0 - }; + }, { + key: "captureEvent", + value: function captureEvent() { + var event = createTelemetryEvent(arguments); + return this.client.captureEvent(event.type, event.metadata, event.level); } }, { - key: "spanContext", - value: function spanContext() { - return this.span.spanContext; + key: "setSessionUser", + value: function setSessionUser(user) { + var _this$tracing2; + if (!((_this$tracing2 = this.tracing) !== null && _this$tracing2 !== void 0 && _this$tracing2.session)) return; + this.tracing.session.setUser(user); } }, { - key: "spanId", - get: function get() { - return this.span.spanContext.spanId; + key: "setSessionAttributes", + value: function setSessionAttributes(attrs) { + var _this$tracing3; + if (!((_this$tracing3 = this.tracing) !== null && _this$tracing3 !== void 0 && _this$tracing3.session)) return; + attrs = core_objectSpread({}, attrs); + this.tracing.session.setAttributes(attrs); } }, { - key: "traceId", - get: function get() { - return this.span.spanContext.traceId; + key: "setSessionAttributesFromOptions", + value: function setSessionAttributesFromOptions(options) { + var _options$payload, _options$client, _options$payload2, _options$payload3, _options$payload4; + var person = options.person || ((_options$payload = options.payload) === null || _options$payload === void 0 ? void 0 : _options$payload.person); + if (person) { + this.setSessionUser(person); + } + var code_version = ((_options$client = options.client) === null || _options$client === void 0 || (_options$client = _options$client.javascript) === null || _options$client === void 0 ? void 0 : _options$client.code_version) || options.codeVersion || options.code_version || ((_options$payload2 = options.payload) === null || _options$payload2 === void 0 || (_options$payload2 = _options$payload2.client) === null || _options$payload2 === void 0 || (_options$payload2 = _options$payload2.javascript) === null || _options$payload2 === void 0 ? void 0 : _options$payload2.code_version) || ((_options$payload3 = options.payload) === null || _options$payload3 === void 0 ? void 0 : _options$payload3.code_version) || ((_options$payload4 = options.payload) === null || _options$payload4 === void 0 ? void 0 : _options$payload4.codeVersion); + this.setSessionAttributes({ + 'rollbar.codeVersion': code_version, + 'rollbar.notifier.name': 'rollbar-browser-js', + 'rollbar.notifier.version': options.version + }); } + + // The following two methods are used internally and are not meant for public use }, { - key: "setAttribute", - value: function setAttribute(key, value) { - if (value == null || this.span.ended) return this; - if (key.length === 0) return this; - this.span.attributes[key] = value; - return this; + key: "captureDomContentLoaded", + value: function captureDomContentLoaded(e, ts) { + if (!ts) { + ts = new Date(); + } + return this.client.captureDomContentLoaded(ts); } }, { - key: "setAttributes", - value: function setAttributes(attributes) { - for (var _i = 0, _Object$entries = Object.entries(attributes); _i < _Object$entries.length; _i++) { - var _Object$entries$_i = span_slicedToArray(_Object$entries[_i], 2), - k = _Object$entries$_i[0], - v = _Object$entries$_i[1]; - this.setAttribute(k, v); + key: "captureLoad", + value: function captureLoad(e, ts) { + if (!ts) { + ts = new Date(); } - return this; + return this.client.captureLoad(ts); } }, { - key: "addEvent", - value: function addEvent(name) { - var attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var time = arguments.length > 2 ? arguments[2] : undefined; - if (this.span.ended) return this; - this.span.events.push({ - name: name, - attributes: attributes, - time: time || hrtime.now(), - droppedAttributesCount: 0 - }); - return this; + key: "loadFull", + value: function loadFull() { + src_logger.info('Unexpected Rollbar.loadFull() called on a Notifier instance. This can happen when Rollbar is loaded multiple times.'); } }, { - key: "isRecording", - value: function isRecording() { - return this.span.ended === false; + key: "_createItem", + value: function _createItem(args) { + return createItem(args, src_logger, this); + } + + // Static version of instance methods support the legacy pattern of a + // global `Rollbar` instance, where after calling `Rollbar.init()`, + // `Rollbar` can be used as if it were an instance. + // If support for this pattern is dropped, these static methods can be removed. + }], [{ + key: "init", + value: function init(options, client) { + if (_instance) { + return _instance.global(options).configure(options); + } + _instance = new Rollbar(options, client); + return _instance; } }, { - key: "end", - value: function end(attributes, time) { - if (attributes) this.setAttributes(attributes); - this.span.endTime = time || hrtime.now(this.usePerformance); - this.span.ended = true; - this.spanProcessor.onEnd(this); + key: "setComponents", + value: function setComponents(components) { + Rollbar.prototype.components = components; } }, { - key: "export", - value: function _export() { - return this.span; + key: "callInstance", + value: function callInstance(method, args) { + if (!_instance) { + var message = 'Rollbar is not initialized'; + src_logger.error(message); + var maybeCallback = _getFirstFunction(args); + if (maybeCallback) { + maybeCallback(new Error(message)); + } + return; + } + return _instance[method].apply(_instance, args); } }]); }(); -;// ./src/tracing/tracer.js -function tracer_typeof(o) { "@babel/helpers - typeof"; return tracer_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, tracer_typeof(o); } -function tracer_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function tracer_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? tracer_ownKeys(Object(t), !0).forEach(function (r) { tracer_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : tracer_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function tracer_defineProperty(e, r, t) { return (r = tracer_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function tracer_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function tracer_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, tracer_toPropertyKey(o.key), o); } } -function tracer_createClass(e, r, t) { return r && tracer_defineProperties(e.prototype, r), t && tracer_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function tracer_toPropertyKey(t) { var i = tracer_toPrimitive(t, "string"); return "symbol" == tracer_typeof(i) ? i : i + ""; } -function tracer_toPrimitive(t, r) { if ("object" != tracer_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != tracer_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - - -var Tracer = /*#__PURE__*/function () { - function Tracer(tracing, spanProcessor) { - tracer_classCallCheck(this, Tracer); - this.spanProcessor = spanProcessor; - this.tracing = tracing; +/* Internal */ +_Rollbar = core_Rollbar; +core_defineProperty(core_Rollbar, "global", function () { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; } - return tracer_createClass(Tracer, [{ - key: "startSpan", - value: function startSpan(name) { - var _this$tracing$resourc, _options$resource, _this$tracing$session; - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.tracing.contextManager.active(); - var parentSpan = this.tracing.getSpan(context); - var parentSpanContext = parentSpan === null || parentSpan === void 0 ? void 0 : parentSpan.spanContext(); - var spanId = id.gen(8); - var traceId; - var traceFlags = 0; - var traceState = null; - var parentSpanId; - if (parentSpanContext) { - traceId = parentSpanContext.traceId; - traceState = parentSpanContext.traceState; - parentSpanId = parentSpanContext.spanId; - } else { - traceId = id.gen(16); - } - var kind = 0; - var spanContext = { - traceId: traceId, - spanId: spanId, - traceFlags: traceFlags, - traceState: traceState - }; - var resource = { - attributes: tracer_objectSpread(tracer_objectSpread({}, ((_this$tracing$resourc = this.tracing.resource) === null || _this$tracing$resourc === void 0 ? void 0 : _this$tracing$resourc.attributes) || {}), ((_options$resource = options.resource) === null || _options$resource === void 0 ? void 0 : _options$resource.attributes) || {}) - }; - var span = new Span({ - resource: resource, - scope: this.tracing.scope, - session: (_this$tracing$session = this.tracing.session) === null || _this$tracing$session === void 0 ? void 0 : _this$tracing$session.session, - context: context, - spanContext: spanContext, - name: name, - kind: kind, - parentSpanId: parentSpanId, - spanProcessor: this.spanProcessor, - startTime: options.startTime, - usePerformance: options.usePerformance - }); - return span; - } - }]); -}(); -;// ./src/tracing/tracing.js -function tracing_typeof(o) { "@babel/helpers - typeof"; return tracing_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, tracing_typeof(o); } -function tracing_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function tracing_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? tracing_ownKeys(Object(t), !0).forEach(function (r) { tracing_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : tracing_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function tracing_defineProperty(e, r, t) { return (r = tracing_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function tracing_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function tracing_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, tracing_toPropertyKey(o.key), o); } } -function tracing_createClass(e, r, t) { return r && tracing_defineProperties(e.prototype, r), t && tracing_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function tracing_toPropertyKey(t) { var i = tracing_toPrimitive(t, "string"); return "symbol" == tracing_typeof(i) ? i : i + ""; } -function tracing_toPrimitive(t, r) { if ("object" != tracing_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != tracing_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - - - - - - -var SPAN_KEY = createContextKey('Rollbar Context Key SPAN'); -var Tracing = /*#__PURE__*/function () { - function Tracing(gWindow, api, options) { - tracing_classCallCheck(this, Tracing); - this.api = api; - this.options = options; - this.window = gWindow; - if (this.window.sessionStorage) { - this.session = new Session(this, options); - } - this.createTracer(); + return _Rollbar.callInstance('global', args); +}); +core_defineProperty(core_Rollbar, "configure", function () { + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; } - return tracing_createClass(Tracing, [{ - key: "configure", - value: function configure(options) { - // Options merge happens before configure is called, so we can just replace. - this.options = options; - } - }, { - key: "initSession", - value: function initSession() { - if (this.session) { - this.session.init(); - } - } - }, { - key: "sessionId", - get: function get() { - if (this.session) { - return this.session.session.id; - } - return null; - } - }, { - key: "resource", - get: function get() { - var _this$options$payload, _this$options$payload2; - return { - attributes: tracing_objectSpread(tracing_objectSpread({}, this.options.resource || {}), {}, { - 'rollbar.environment': (_this$options$payload = (_this$options$payload2 = this.options.payload) === null || _this$options$payload2 === void 0 ? void 0 : _this$options$payload2.environment) !== null && _this$options$payload !== void 0 ? _this$options$payload : this.options.environment - }) - }; - } - }, { - key: "scope", - get: function get() { - return { - name: 'rollbar-browser-js', - version: this.options.version - }; - } - }, { - key: "idGen", - value: function idGen() { - var bytes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16; - return id.gen(bytes); - } - }, { - key: "createTracer", - value: function createTracer() { - this.contextManager = new ContextManager(); - this.exporter = new SpanExporter(this.api, this.options); - this.spanProcessor = new SpanProcessor(this.exporter, this.options.tracing); - this.tracer = new Tracer(this, this.spanProcessor); - } - }, { - key: "getTracer", - value: function getTracer() { - return this.tracer; - } - }, { - key: "addSpanTransform", - value: function addSpanTransform(transformFn) { - this.spanProcessor.addTransform(transformFn); - } - }, { - key: "getSpan", - value: function getSpan() { - var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.contextManager.active(); - return context.getValue(SPAN_KEY); - } - }, { - key: "setSpan", - value: function setSpan() { - var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.contextManager.active(); - var span = arguments.length > 1 ? arguments[1] : undefined; - return context.setValue(SPAN_KEY, span); - } - }, { - key: "startSpan", - value: function startSpan(name) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.contextManager.active(); - return this.tracer.startSpan(name, options, context); - } - }, { - key: "with", - value: function _with(context, fn, thisArg) { - var _this$contextManager; - for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { - args[_key - 3] = arguments[_key]; - } - return (_this$contextManager = this.contextManager).with.apply(_this$contextManager, [context, fn, thisArg].concat(args)); - } - }, { - key: "withSpan", - value: function withSpan(name, options, fn, thisArg) { - var span = this.startSpan(name, options); - return this.with(this.setSpan(this.contextManager.active(), span), fn, thisArg, span); + return _Rollbar.callInstance('configure', args); +}); +core_defineProperty(core_Rollbar, "lastError", function () { + for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; + } + return _Rollbar.callInstance('lastError', args); +}); +core_defineProperty(core_Rollbar, "log", function () { + for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { + args[_key4] = arguments[_key4]; + } + return _Rollbar.callInstance('log', args); +}); +core_defineProperty(core_Rollbar, "debug", function () { + for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { + args[_key5] = arguments[_key5]; + } + return _Rollbar.callInstance('debug', args); +}); +core_defineProperty(core_Rollbar, "info", function () { + for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { + args[_key6] = arguments[_key6]; + } + return _Rollbar.callInstance('info', args); +}); +core_defineProperty(core_Rollbar, "warn", function () { + for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { + args[_key7] = arguments[_key7]; + } + return _Rollbar.callInstance('warn', args); +}); +core_defineProperty(core_Rollbar, "warning", function () { + for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { + args[_key8] = arguments[_key8]; + } + return _Rollbar.callInstance('warning', args); +}); +core_defineProperty(core_Rollbar, "error", function () { + for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) { + args[_key9] = arguments[_key9]; + } + return _Rollbar.callInstance('error', args); +}); +core_defineProperty(core_Rollbar, "critical", function () { + for (var _len0 = arguments.length, args = new Array(_len0), _key0 = 0; _key0 < _len0; _key0++) { + args[_key0] = arguments[_key0]; + } + return _Rollbar.callInstance('critical', args); +}); +core_defineProperty(core_Rollbar, "buildJsonPayload", function () { + for (var _len1 = arguments.length, args = new Array(_len1), _key1 = 0; _key1 < _len1; _key1++) { + args[_key1] = arguments[_key1]; + } + return _Rollbar.callInstance('buildJsonPayload', args); +}); +core_defineProperty(core_Rollbar, "sendJsonPayload", function () { + for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) { + args[_key10] = arguments[_key10]; + } + return _Rollbar.callInstance('sendJsonPayload', args); +}); +core_defineProperty(core_Rollbar, "wrap", function () { + for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) { + args[_key11] = arguments[_key11]; + } + return _Rollbar.callInstance('wrap', args); +}); +core_defineProperty(core_Rollbar, "captureEvent", function () { + for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) { + args[_key12] = arguments[_key12]; + } + return _Rollbar.callInstance('captureEvent', args); +}); +function addTransformsToNotifier(notifier, rollbar, gWindow) { + notifier.addTransform(handleDomException).addTransform(handleItemWithError).addTransform(ensureItemHasSomethingToSay).addTransform(addBaseInfo).addTransform(addRequestInfo(gWindow)).addTransform(addClientInfo(gWindow)).addTransform(addPluginInfo(gWindow)).addTransform(addBody).addTransform(addMessageWithError).addTransform(addTelemetryData).addTransform(addConfigToPayload).addTransform(addScrubber(rollbar.scrub)).addTransform(addPayloadOptions).addTransform(userTransform(src_logger)).addTransform(addConfiguredOptions).addTransform(addDiagnosticKeys).addTransform(itemToPayload); +} +function addPredicatesToQueue(queue) { + queue.addPredicate(checkLevel).addPredicate(checkIgnore).addPredicate(userCheckIgnore(src_logger)).addPredicate(urlIsNotBlockListed(src_logger)).addPredicate(urlIsSafeListed(src_logger)).addPredicate(messageIsIgnored(src_logger)); +} +function _getFirstFunction(args) { + for (var i = 0, len = args.length; i < len; ++i) { + if (isFunction(args[i])) { + return args[i]; } - }]); -}(); - -;// ./node_modules/@rrweb/record/dist/record.js -var record_excluded = ["inputs"], - _excluded2 = ["inputId"], - _excluded3 = ["inputs"], - _excluded4 = ["inputId"], - _excluded5 = ["type"]; -function record_objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = record_objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } -function record_objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } -function record_regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ record_regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == record_typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(record_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } -function record_asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } -function record_asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { record_asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { record_asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } -function record_slicedToArray(r, e) { return record_arrayWithHoles(r) || record_iterableToArrayLimit(r, e) || record_unsupportedIterableToArray(r, e) || record_nonIterableRest(); } -function record_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function record_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function record_arrayWithHoles(r) { if (Array.isArray(r)) return r; } -function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; } + } + return undefined; +} +function _gWindow() { + return typeof window !== 'undefined' && window || typeof self !== 'undefined' && self; +} +var core_defaultOptions = { + environment: 'unknown', + version: defaults.version, + scrubFields: browser_defaults.scrubFields, + logLevel: defaults.logLevel, + reportLevel: defaults.reportLevel, + uncaughtErrorLevel: defaults.uncaughtErrorLevel, + endpoint: defaults.endpoint, + verbose: false, + enabled: true, + transmit: true, + sendConfig: false, + includeItemsInTelemetry: true, + captureIp: true, + inspectAnonymousErrors: true, + ignoreDuplicateErrors: true, + wrapGlobalEventHandlers: false, + replay: replay_defaults, + tracing: tracing_defaults +}; +/* harmony default export */ var core = (core_Rollbar); +;// ./node_modules/@rrweb/record/dist/record.js +var record_excluded = ["inputs"], + _excluded2 = ["inputId"], + _excluded3 = ["inputs"], + _excluded4 = ["inputId"], + _excluded5 = ["type"]; +function record_objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = record_objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } +function record_objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } +function _regeneratorValues(e) { if (null != e) { var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"], r = 0; if (t) return t.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) return { next: function next() { return e && r >= e.length && (e = void 0), { value: e && e[r++], done: !e }; } }; } throw new TypeError(record_typeof(e) + " is not iterable"); } +function record_regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return record_regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (record_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, record_regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, record_regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), record_regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", record_regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), record_regeneratorDefine2(u), record_regeneratorDefine2(u, o, "Generator"), record_regeneratorDefine2(u, n, function () { return this; }), record_regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (record_regenerator = function _regenerator() { return { w: i, m: f }; })(); } +function record_regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } record_regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { record_regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, record_regeneratorDefine2(e, r, n, t); } +function record_asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } +function record_asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { record_asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { record_asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } +function record_slicedToArray(r, e) { return record_arrayWithHoles(r) || record_iterableToArrayLimit(r, e) || record_unsupportedIterableToArray(r, e) || record_nonIterableRest(); } +function record_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function record_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function record_arrayWithHoles(r) { if (Array.isArray(r)) return r; } +function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; } function _get() { return _get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); } function _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; } function record_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } @@ -7260,7 +6146,7 @@ var NodeType$3 = /* @__PURE__ */function (NodeType2) { return NodeType2; }(NodeType$3 || {}); var testableAccessors$1 = { - Node: ["childNodes", "parentNode", "parentElement", "textContent"], + Node: ["childNodes", "parentNode", "parentElement", "textContent", "ownerDocument"], ShadowRoot: ["host", "styleSheets"], Element: ["shadowRoot", "querySelector", "querySelectorAll"], MutationObserver: [] @@ -7331,6 +6217,9 @@ function getUntaintedMethod$1(key, instance, method) { untaintedMethodCache$1[cacheKey] = untaintedMethod; return untaintedMethod.bind(instance); } +function ownerDocument$1(n2) { + return getUntaintedAccessor$1("Node", n2, "ownerDocument"); +} function childNodes$1(n2) { return getUntaintedAccessor$1("Node", n2, "childNodes"); } @@ -7369,7 +6258,32 @@ function querySelectorAll$1(n2, selectors) { function mutationObserverCtor$1() { return getUntaintedPrototype$1("MutationObserver").constructor; } +function patch$1(source, name, replacement) { + try { + if (!(name in source)) { + return function () {}; + } + var original = source[name]; + var wrapped = replacement(original); + if (typeof wrapped === "function") { + wrapped.prototype = wrapped.prototype || {}; + Object.defineProperties(wrapped, { + __rrweb_original__: { + enumerable: false, + value: original + } + }); + } + source[name] = wrapped; + return function () { + source[name] = original; + }; + } catch (_unused2) { + return function () {}; + } +} var index$1 = { + ownerDocument: ownerDocument$1, childNodes: childNodes$1, parentNode: parentNode$1, parentElement: parentElement$1, @@ -7381,7 +6295,8 @@ var index$1 = { shadowRoot: shadowRoot$1, querySelector: querySelector$1, querySelectorAll: querySelectorAll$1, - mutationObserver: mutationObserverCtor$1 + mutationObserver: mutationObserverCtor$1, + patch: patch$1 }; function isElement(n2) { return n2.nodeType === n2.ELEMENT_NODE; @@ -7426,8 +6341,8 @@ function stringifyStylesheet(s2) { return null; } var sheetHref = s2.href; - if (!sheetHref && s2.ownerNode && s2.ownerNode.ownerDocument) { - sheetHref = s2.ownerNode.ownerDocument.location.href; + if (!sheetHref && s2.ownerNode) { + sheetHref = s2.ownerNode.baseURI; } var stringifiedRules = Array.from(rules2, function (rule2) { return stringifyRule(rule2, sheetHref); @@ -7669,25 +6584,83 @@ function absolutifyURLs(cssText, href) { }); } function normalizeCssString(cssText) { - return cssText.replace(/(\/\*[^*]*\*\/)|[\s;]/g, ""); + var _testNoPxNorm = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + if (_testNoPxNorm) { + return cssText.replace(/(\/\*[^*]*\*\/)|[\s;]/g, ""); + } else { + return cssText.replace(/(\/\*[^*]*\*\/)|[\s;]/g, "").replace(/0px/g, "0"); + } } function splitCssText(cssText, style) { + var _testNoPxNorm = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; var childNodes2 = Array.from(style.childNodes); var splits = []; + var iterCount = 0; if (childNodes2.length > 1 && cssText && typeof cssText === "string") { - var cssTextNorm = normalizeCssString(cssText); + var cssTextNorm = normalizeCssString(cssText, _testNoPxNorm); + var normFactor = cssTextNorm.length / cssText.length; for (var i2 = 1; i2 < childNodes2.length; i2++) { if (childNodes2[i2].textContent && typeof childNodes2[i2].textContent === "string") { - var textContentNorm = normalizeCssString(childNodes2[i2].textContent); - for (var j = 3; j < textContentNorm.length; j++) { - var bit = textContentNorm.substring(0, j); - if (cssTextNorm.split(bit).length === 2) { - var splitNorm = cssTextNorm.indexOf(bit); - for (var k = splitNorm; k < cssText.length; k++) { - if (normalizeCssString(cssText.substring(0, k)).length === splitNorm) { + var textContentNorm = normalizeCssString(childNodes2[i2].textContent, _testNoPxNorm); + var jLimit = 100; + var j = 3; + for (; j < textContentNorm.length; j++) { + if ( + // keep consuming css identifiers (to get a decent chunk more quickly) + textContentNorm[j].match(/[a-zA-Z0-9]/) || + // substring needs to be unique to this section + textContentNorm.indexOf(textContentNorm.substring(0, j), 1) !== -1) { + continue; + } + break; + } + for (; j < textContentNorm.length; j++) { + var startSubstring = textContentNorm.substring(0, j); + var cssNormSplits = cssTextNorm.split(startSubstring); + var splitNorm = -1; + if (cssNormSplits.length === 2) { + splitNorm = cssNormSplits[0].length; + } else if (cssNormSplits.length > 2 && cssNormSplits[0] === "" && childNodes2[i2 - 1].textContent !== "") { + splitNorm = cssTextNorm.indexOf(startSubstring, 1); + } else if (cssNormSplits.length === 1) { + startSubstring = startSubstring.substring(0, startSubstring.length - 1); + cssNormSplits = cssTextNorm.split(startSubstring); + if (cssNormSplits.length <= 1) { + splits.push(cssText); + return splits; + } + j = jLimit + 1; + } else if (j === textContentNorm.length - 1) { + splitNorm = cssTextNorm.indexOf(startSubstring); + } + if (cssNormSplits.length >= 2 && j > jLimit) { + var prevTextContent = childNodes2[i2 - 1].textContent; + if (prevTextContent && typeof prevTextContent === "string") { + var prevMinLength = normalizeCssString(prevTextContent).length; + splitNorm = cssTextNorm.indexOf(startSubstring, prevMinLength); + } + if (splitNorm === -1) { + splitNorm = cssNormSplits[0].length; + } + } + if (splitNorm !== -1) { + var k = Math.floor(splitNorm / normFactor); + for (; k > 0 && k < cssText.length;) { + iterCount += 1; + if (iterCount > 50 * childNodes2.length) { + splits.push(cssText); + return splits; + } + var normPart = normalizeCssString(cssText.substring(0, k), _testNoPxNorm); + if (normPart.length === splitNorm) { splits.push(cssText.substring(0, k)); cssText = cssText.substring(k); + cssTextNorm = cssTextNorm.substring(splitNorm); break; + } else if (normPart.length < splitNorm) { + k += Math.max(1, Math.floor((splitNorm - normPart.length) / normFactor)); + } else { + k -= Math.max(1, Math.floor((normPart.length - splitNorm) * normFactor)); } } break; @@ -7808,7 +6781,7 @@ function transformAttribute(doc, tagName, name, value) { return absoluteToDoc(doc, value); } else if (name === "xlink:href" && value[0] !== "#") { return absoluteToDoc(doc, value); - } else if (name === "background" && (tagName === "table" || tagName === "td" || tagName === "th")) { + } else if (name === "background" && ["table", "td", "th"].includes(tagName)) { return absoluteToDoc(doc, value); } else if (name === "srcset") { return getAbsoluteSrcsetString(doc, value); @@ -7820,7 +6793,7 @@ function transformAttribute(doc, tagName, name, value) { return value; } function ignoreAttribute(tagName, name, _value) { - return (tagName === "video" || tagName === "audio") && name === "autoplay"; + return ["video", "audio"].includes(tagName) && name === "autoplay"; } function _isBlockedElement(element, blockClass, blockSelector) { try { @@ -8107,7 +7080,7 @@ function serializeElementNode(n2, options) { attributes._cssText = _cssText; } } - if (tagName === "input" || tagName === "textarea" || tagName === "select") { + if (["input", "textarea", "select"].includes(tagName)) { var value = n2.value; var checked = n2.checked; if (attributes.type !== "radio" && attributes.type !== "checkbox" && attributes.type !== "submit" && attributes.type !== "button" && value) { @@ -8179,7 +7152,7 @@ function serializeElementNode(n2, options) { }; if (image.complete && image.naturalWidth !== 0) _recordInlineImage();else image.addEventListener("load", _recordInlineImage); } - if (tagName === "audio" || tagName === "video") { + if (["audio", "video"].includes(tagName)) { var mediaAttributes = attributes; mediaAttributes.rr_mediaState = n2.paused ? "paused" : "played"; mediaAttributes.rr_mediaCurrentTime = n2.currentTime; @@ -8234,6 +7207,28 @@ function lowerIfExists(maybeAttr) { return maybeAttr.toLowerCase(); } } +function slimDOMDefaults(_slimDOMOptions) { + if (_slimDOMOptions === true || _slimDOMOptions === "all") { + return { + script: true, + comment: true, + headFavicon: true, + headWhitespace: true, + headMetaSocial: true, + headMetaRobots: true, + headMetaHttpEquiv: true, + headMetaVerification: true, + // the following are off for slimDOMOptions === true, + // as they destroy some (hidden) info: + headMetaAuthorship: _slimDOMOptions === "all", + headMetaDescKeywords: _slimDOMOptions === "all", + headTitleMutations: _slimDOMOptions === "all" + }; + } else if (_slimDOMOptions) { + return _slimDOMOptions; + } + return {}; +} function slimDOMExcluded(sn, slimDOMOptions) { if (slimDOMOptions.comment && sn.type === NodeType$3.Comment) { return true; @@ -8242,7 +7237,7 @@ function slimDOMExcluded(sn, slimDOMOptions) { // script tag sn.tagName === "script" || // (module)preload link - sn.tagName === "link" && (sn.attributes.rel === "preload" || sn.attributes.rel === "modulepreload") && sn.attributes.as === "script" || + sn.tagName === "link" && (sn.attributes.rel === "preload" && sn.attributes.as === "script" || sn.attributes.rel === "modulepreload") || // prefetch link sn.tagName === "link" && sn.attributes.rel === "prefetch" && typeof sn.attributes.href === "string" && extractFileExtension(sn.attributes.href) === "js")) { return true; @@ -8542,21 +7537,7 @@ function snapshot(n2, options) { } : maskAllInputs === false ? { password: true } : maskAllInputs; - var slimDOMOptions = slimDOM === true || slimDOM === "all" ? - // if true: set of sensible options that should not throw away any information - { - script: true, - comment: true, - headFavicon: true, - headWhitespace: true, - headMetaDescKeywords: slimDOM === "all", - // destructive - headMetaSocial: true, - headMetaRobots: true, - headMetaHttpEquiv: true, - headMetaAuthorship: true, - headMetaVerification: true - } : slimDOM === false ? {} : slimDOM; + var slimDOMOptions = slimDOMDefaults(slimDOM); return serializeNodeWithId(n2, { doc: n2, mirror: mirror2, @@ -10575,17 +9556,17 @@ var Container$7$1 = /*#__PURE__*/function (_Node$1$) { } } else if (nodes.type === "root" && this.type !== "document") { nodes = nodes.nodes.slice(0); - var _iterator10 = record_createForOfIteratorHelper(nodes), - _step10; + var _iterator0 = record_createForOfIteratorHelper(nodes), + _step0; try { - for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) { - var _i6 = _step10.value; + for (_iterator0.s(); !(_step0 = _iterator0.n()).done;) { + var _i6 = _step0.value; if (_i6.parent) _i6.parent.removeChild(_i6, "ignore"); } } catch (err) { - _iterator10.e(err); + _iterator0.e(err); } finally { - _iterator10.f(); + _iterator0.f(); } } else if (nodes.type) { nodes = [nodes]; @@ -10627,32 +9608,32 @@ var Container$7$1 = /*#__PURE__*/function (_Node$1$) { children[_key5] = arguments[_key5]; } children = children.reverse(); - var _iterator11 = record_createForOfIteratorHelper(children), - _step11; + var _iterator1 = record_createForOfIteratorHelper(children), + _step1; try { - for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) { - var child = _step11.value; + for (_iterator1.s(); !(_step1 = _iterator1.n()).done;) { + var child = _step1.value; var nodes = this.normalize(child, this.first, "prepend").reverse(); - var _iterator12 = record_createForOfIteratorHelper(nodes), - _step12; + var _iterator10 = record_createForOfIteratorHelper(nodes), + _step10; try { - for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) { - var node2 = _step12.value; + for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) { + var node2 = _step10.value; this.proxyOf.nodes.unshift(node2); } } catch (err) { - _iterator12.e(err); + _iterator10.e(err); } finally { - _iterator12.f(); + _iterator10.f(); } for (var id in this.indexes) { this.indexes[id] = this.indexes[id] + nodes.length; } } } catch (err) { - _iterator11.e(err); + _iterator1.e(err); } finally { - _iterator11.f(); + _iterator1.f(); } this.markDirty(); return this; @@ -10667,17 +9648,17 @@ var Container$7$1 = /*#__PURE__*/function (_Node$1$) { }, { key: "removeAll", value: function removeAll() { - var _iterator13 = record_createForOfIteratorHelper(this.proxyOf.nodes), - _step13; + var _iterator11 = record_createForOfIteratorHelper(this.proxyOf.nodes), + _step11; try { - for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) { - var node2 = _step13.value; + for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) { + var node2 = _step11.value; node2.parent = void 0; } } catch (err) { - _iterator13.e(err); + _iterator11.e(err); } finally { - _iterator13.f(); + _iterator11.f(); } this.proxyOf.nodes = []; this.markDirty(); @@ -10867,15 +9848,15 @@ var Container$6$1 = container$1; var LazyResult$4$1, Processor$3$1; var Document$3$1 = /*#__PURE__*/function (_Container$6$) { function Document2(defaults) { - var _this10; + var _this0; record_classCallCheck(this, Document2); - _this10 = _callSuper(this, Document2, [record_objectSpread({ + _this0 = _callSuper(this, Document2, [record_objectSpread({ type: "document" }, defaults)]); - if (!_this10.nodes) { - _this10.nodes = []; + if (!_this0.nodes) { + _this0.nodes = []; } - return _this10; + return _this0; } _inherits(Document2, _Container$6$); return record_createClass(Document2, [{ @@ -11201,11 +10182,11 @@ var tokenize$1 = function tokenizer(input2) { var Container$5$1 = container$1; var AtRule$3$1 = /*#__PURE__*/function (_Container$5$) { function AtRule(defaults) { - var _this11; + var _this1; record_classCallCheck(this, AtRule); - _this11 = _callSuper(this, AtRule, [defaults]); - _this11.type = "atrule"; - return _this11; + _this1 = _callSuper(this, AtRule, [defaults]); + _this1.type = "atrule"; + return _this1; } _inherits(AtRule, _Container$5$); return record_createClass(AtRule, [{ @@ -11235,12 +10216,12 @@ var Container$4$1 = container$1; var LazyResult$3$1, Processor$2$1; var Root$5$1 = /*#__PURE__*/function (_Container$4$) { function Root(defaults) { - var _this12; + var _this10; record_classCallCheck(this, Root); - _this12 = _callSuper(this, Root, [defaults]); - _this12.type = "root"; - if (!_this12.nodes) _this12.nodes = []; - return _this12; + _this10 = _callSuper(this, Root, [defaults]); + _this10.type = "root"; + if (!_this10.nodes) _this10.nodes = []; + return _this10; } _inherits(Root, _Container$4$); return record_createClass(Root, [{ @@ -11255,17 +10236,17 @@ var Root$5$1 = /*#__PURE__*/function (_Container$4$) { delete sample.raws.before; } } else if (this.first !== sample) { - var _iterator14 = record_createForOfIteratorHelper(nodes), - _step14; + var _iterator12 = record_createForOfIteratorHelper(nodes), + _step12; try { - for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) { - var node2 = _step14.value; + for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) { + var node2 = _step12.value; node2.raws.before = sample.raws.before; } } catch (err) { - _iterator14.e(err); + _iterator12.e(err); } finally { - _iterator14.f(); + _iterator12.f(); } } } @@ -11314,11 +10295,11 @@ var list$2$1 = { var inQuote = false; var prevQuote = ""; var escape = false; - var _iterator15 = record_createForOfIteratorHelper(string), - _step15; + var _iterator13 = record_createForOfIteratorHelper(string), + _step13; try { - for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) { - var letter = _step15.value; + for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) { + var letter = _step13.value; if (escape) { escape = false; } else if (letter === "\\") { @@ -11346,9 +10327,9 @@ var list$2$1 = { } } } catch (err) { - _iterator15.e(err); + _iterator13.e(err); } finally { - _iterator15.f(); + _iterator13.f(); } if (last || current !== "") array.push(current.trim()); return array; @@ -11360,12 +10341,12 @@ var Container$3$1 = container$1; var list$1$1 = list_1$1; var Rule$3$1 = /*#__PURE__*/function (_Container$3$) { function Rule(defaults) { - var _this13; + var _this11; record_classCallCheck(this, Rule); - _this13 = _callSuper(this, Rule, [defaults]); - _this13.type = "rule"; - if (!_this13.nodes) _this13.nodes = []; - return _this13; + _this11 = _callSuper(this, Rule, [defaults]); + _this11.type = "rule"; + if (!_this11.nodes) _this11.nodes = []; + return _this11; } _inherits(Rule, _Container$3$); return record_createClass(Rule, [{ @@ -11519,13 +10500,13 @@ var Parser$1$1 = /*#__PURE__*/function () { value: function colon(tokens) { var brackets = 0; var token, type, prev; - var _iterator16 = record_createForOfIteratorHelper(tokens.entries()), - _step16; + var _iterator14 = record_createForOfIteratorHelper(tokens.entries()), + _step14; try { - for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) { - var _step16$value = record_slicedToArray(_step16.value, 2), - i2 = _step16$value[0], - element = _step16$value[1]; + for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) { + var _step14$value = record_slicedToArray(_step14.value, 2), + i2 = _step14$value[0], + element = _step14$value[1]; token = element; type = token[0]; if (type === "(") { @@ -11546,9 +10527,9 @@ var Parser$1$1 = /*#__PURE__*/function () { prev = token; } } catch (err) { - _iterator16.e(err); + _iterator14.e(err); } finally { - _iterator16.f(); + _iterator14.f(); } return false; } @@ -11994,7 +10975,8 @@ function parse$3$1(css, opts) { try { parser2.parse(); } catch (e2) { - if (false) {} + if (false) // removed by dead control flow +{} throw e2; } return parser2.root; @@ -12093,7 +11075,7 @@ function cleanMarks$1(node2) { var postcss$2$1 = {}; var LazyResult$2$1 = /*#__PURE__*/function () { function LazyResult(processor2, css, opts) { - var _this14 = this; + var _this12 = this; record_classCallCheck(this, LazyResult); this.stringified = false; this.processed = false; @@ -12129,7 +11111,7 @@ var LazyResult$2$1 = /*#__PURE__*/function () { }); this.plugins = this.processor.plugins.map(function (plugin22) { if (record_typeof(plugin22) === "object" && plugin22.prepare) { - return record_objectSpread(record_objectSpread({}, plugin22), plugin22.prepare(_this14.result)); + return record_objectSpread(record_objectSpread({}, plugin22), plugin22.prepare(_this12.result)); } else { return plugin22; } @@ -12171,7 +11153,8 @@ var LazyResult$2$1 = /*#__PURE__*/function () { error.plugin = plugin22.postcssPlugin; error.setMessage(); } else if (plugin22.postcssVersion) { - if (false) { var b, a2, runtimeVer, pluginVer, pluginName; } + if (false) // removed by dead control flow +{ var b, a2, runtimeVer, pluginVer, pluginName; } } } catch (err) { if (console && console.error) console.error(err); @@ -12181,17 +11164,17 @@ var LazyResult$2$1 = /*#__PURE__*/function () { }, { key: "prepareVisitors", value: function prepareVisitors() { - var _this15 = this; + var _this13 = this; this.listeners = {}; var add = function add(plugin22, type, cb) { - if (!_this15.listeners[type]) _this15.listeners[type] = []; - _this15.listeners[type].push([plugin22, cb]); + if (!_this13.listeners[type]) _this13.listeners[type] = []; + _this13.listeners[type].push([plugin22, cb]); }; - var _iterator17 = record_createForOfIteratorHelper(this.plugins), - _step17; + var _iterator15 = record_createForOfIteratorHelper(this.plugins), + _step15; try { - for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) { - var plugin22 = _step17.value; + for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) { + var plugin22 = _step15.value; if (record_typeof(plugin22) === "object") { for (var event in plugin22) { if (!PLUGIN_PROPS$1[event] && /^[A-Z]/.test(event)) { @@ -12214,161 +11197,157 @@ var LazyResult$2$1 = /*#__PURE__*/function () { } } } catch (err) { - _iterator17.e(err); + _iterator15.e(err); } finally { - _iterator17.f(); + _iterator15.f(); } this.hasListener = Object.keys(this.listeners).length > 0; } }, { key: "runAsync", value: function () { - var _runAsync = record_asyncToGenerator(/*#__PURE__*/record_regeneratorRuntime().mark(function _callee() { - var _this16 = this; - var i2, plugin22, promise, root2, stack, _promise, node2, _iterator18, _step18, _loop; - return record_regeneratorRuntime().wrap(function _callee$(_context2) { - while (1) switch (_context2.prev = _context2.next) { + var _runAsync = record_asyncToGenerator(/*#__PURE__*/record_regenerator().m(function _callee() { + var _this14 = this; + var i2, plugin22, promise, root2, stack, _promise, node2, _iterator16, _step16, _loop, _t2, _t3, _t4; + return record_regenerator().w(function (_context2) { + while (1) switch (_context2.p = _context2.n) { case 0: this.plugin = 0; i2 = 0; - case 2: + case 1: if (!(i2 < this.plugins.length)) { - _context2.next = 17; + _context2.n = 6; break; } plugin22 = this.plugins[i2]; promise = this.runOnRoot(plugin22); if (!isPromise$1(promise)) { - _context2.next = 14; + _context2.n = 5; break; } - _context2.prev = 6; - _context2.next = 9; + _context2.p = 2; + _context2.n = 3; return promise; - case 9: - _context2.next = 14; + case 3: + _context2.n = 5; break; - case 11: - _context2.prev = 11; - _context2.t0 = _context2["catch"](6); - throw this.handleError(_context2.t0); - case 14: + case 4: + _context2.p = 4; + _t2 = _context2.v; + throw this.handleError(_t2); + case 5: i2++; - _context2.next = 2; + _context2.n = 1; break; - case 17: + case 6: this.prepareVisitors(); if (!this.hasListener) { - _context2.next = 56; + _context2.n = 21; break; } root2 = this.result.root; - case 20: + case 7: if (root2[isClean$3]) { - _context2.next = 39; + _context2.n = 14; break; } root2[isClean$3] = true; stack = [toStack$1(root2)]; - case 23: + case 8: if (!(stack.length > 0)) { - _context2.next = 37; + _context2.n = 13; break; } _promise = this.visitTick(stack); if (!isPromise$1(_promise)) { - _context2.next = 35; + _context2.n = 12; break; } - _context2.prev = 26; - _context2.next = 29; + _context2.p = 9; + _context2.n = 10; return _promise; - case 29: - _context2.next = 35; + case 10: + _context2.n = 12; break; - case 31: - _context2.prev = 31; - _context2.t1 = _context2["catch"](26); + case 11: + _context2.p = 11; + _t3 = _context2.v; node2 = stack[stack.length - 1].node; - throw this.handleError(_context2.t1, node2); - case 35: - _context2.next = 23; + throw this.handleError(_t3, node2); + case 12: + _context2.n = 8; break; - case 37: - _context2.next = 20; + case 13: + _context2.n = 7; break; - case 39: + case 14: if (!this.listeners.OnceExit) { - _context2.next = 56; + _context2.n = 21; break; } - _iterator18 = record_createForOfIteratorHelper(this.listeners.OnceExit); - _context2.prev = 41; - _loop = /*#__PURE__*/record_regeneratorRuntime().mark(function _loop() { - var _step18$value, plugin22, visitor, roots; - return record_regeneratorRuntime().wrap(function _loop$(_context) { - while (1) switch (_context.prev = _context.next) { + _iterator16 = record_createForOfIteratorHelper(this.listeners.OnceExit); + _context2.p = 15; + _loop = /*#__PURE__*/record_regenerator().m(function _loop() { + var _step16$value, plugin22, visitor, roots, _t; + return record_regenerator().w(function (_context) { + while (1) switch (_context.p = _context.n) { case 0: - _step18$value = record_slicedToArray(_step18.value, 2), plugin22 = _step18$value[0], visitor = _step18$value[1]; - _this16.result.lastPlugin = plugin22; - _context.prev = 2; + _step16$value = record_slicedToArray(_step16.value, 2), plugin22 = _step16$value[0], visitor = _step16$value[1]; + _this14.result.lastPlugin = plugin22; + _context.p = 1; if (!(root2.type === "document")) { - _context.next = 9; + _context.n = 3; break; } roots = root2.nodes.map(function (subRoot) { - return visitor(subRoot, _this16.helpers); + return visitor(subRoot, _this14.helpers); }); - _context.next = 7; + _context.n = 2; return Promise.all(roots); - case 7: - _context.next = 11; + case 2: + _context.n = 4; break; - case 9: - _context.next = 11; - return visitor(root2, _this16.helpers); - case 11: - _context.next = 16; + case 3: + _context.n = 4; + return visitor(root2, _this14.helpers); + case 4: + _context.n = 6; break; - case 13: - _context.prev = 13; - _context.t0 = _context["catch"](2); - throw _this16.handleError(_context.t0); - case 16: - case "end": - return _context.stop(); + case 5: + _context.p = 5; + _t = _context.v; + throw _this14.handleError(_t); + case 6: + return _context.a(2); } - }, _loop, null, [[2, 13]]); + }, _loop, null, [[1, 5]]); }); - _iterator18.s(); - case 44: - if ((_step18 = _iterator18.n()).done) { - _context2.next = 48; + _iterator16.s(); + case 16: + if ((_step16 = _iterator16.n()).done) { + _context2.n = 18; break; } - return _context2.delegateYield(_loop(), "t2", 46); - case 46: - _context2.next = 44; + return _context2.d(_regeneratorValues(_loop()), 17); + case 17: + _context2.n = 16; break; - case 48: - _context2.next = 53; + case 18: + _context2.n = 20; break; - case 50: - _context2.prev = 50; - _context2.t3 = _context2["catch"](41); - _iterator18.e(_context2.t3); - case 53: - _context2.prev = 53; - _iterator18.f(); - return _context2.finish(53); - case 56: + case 19: + _context2.p = 19; + _t4 = _context2.v; + _iterator16.e(_t4); + case 20: + _context2.p = 20; + _iterator16.f(); + return _context2.f(20); + case 21: this.processed = true; - return _context2.abrupt("return", this.stringify()); - case 58: - case "end": - return _context2.stop(); + return _context2.a(2, this.stringify()); } - }, _callee, this, [[6, 11], [26, 31], [41, 50, 53, 56]]); + }, _callee, this, [[15, 19, 20, 21], [9, 11], [2, 4]]); })); function runAsync() { return _runAsync.apply(this, arguments); @@ -12378,13 +11357,13 @@ var LazyResult$2$1 = /*#__PURE__*/function () { }, { key: "runOnRoot", value: function runOnRoot(plugin22) { - var _this17 = this; + var _this15 = this; this.result.lastPlugin = plugin22; try { if (record_typeof(plugin22) === "object" && plugin22.Once) { if (this.result.root.type === "document") { var roots = this.result.root.nodes.map(function (root2) { - return plugin22.Once(root2, _this17.helpers); + return plugin22.Once(root2, _this15.helpers); }); if (isPromise$1(roots[0])) { return Promise.all(roots); @@ -12426,20 +11405,20 @@ var LazyResult$2$1 = /*#__PURE__*/function () { if (this.processing) { throw this.getAsyncError(); } - var _iterator19 = record_createForOfIteratorHelper(this.plugins), - _step19; + var _iterator17 = record_createForOfIteratorHelper(this.plugins), + _step17; try { - for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) { - var plugin22 = _step19.value; + for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) { + var plugin22 = _step17.value; var promise = this.runOnRoot(plugin22); if (isPromise$1(promise)) { throw this.getAsyncError(); } } } catch (err) { - _iterator19.e(err); + _iterator17.e(err); } finally { - _iterator19.f(); + _iterator17.f(); } this.prepareVisitors(); if (this.hasListener) { @@ -12450,17 +11429,17 @@ var LazyResult$2$1 = /*#__PURE__*/function () { } if (this.listeners.OnceExit) { if (root2.type === "document") { - var _iterator20 = record_createForOfIteratorHelper(root2.nodes), - _step20; + var _iterator18 = record_createForOfIteratorHelper(root2.nodes), + _step18; try { - for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) { - var subRoot = _step20.value; + for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) { + var subRoot = _step18.value; this.visitSync(this.listeners.OnceExit, subRoot); } } catch (err) { - _iterator20.e(err); + _iterator18.e(err); } finally { - _iterator20.f(); + _iterator18.f(); } } else { this.visitSync(this.listeners.OnceExit, root2); @@ -12472,7 +11451,8 @@ var LazyResult$2$1 = /*#__PURE__*/function () { }, { key: "then", value: function then(onFulfilled, onRejected) { - if (false) {} + if (false) // removed by dead control flow +{} return this.async().then(onFulfilled, onRejected); } }, { @@ -12483,13 +11463,13 @@ var LazyResult$2$1 = /*#__PURE__*/function () { }, { key: "visitSync", value: function visitSync(visitors, node2) { - var _iterator21 = record_createForOfIteratorHelper(visitors), - _step21; + var _iterator19 = record_createForOfIteratorHelper(visitors), + _step19; try { - for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) { - var _step21$value = record_slicedToArray(_step21.value, 2), - plugin22 = _step21$value[0], - visitor = _step21$value[1]; + for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) { + var _step19$value = record_slicedToArray(_step19.value, 2), + plugin22 = _step19$value[0], + visitor = _step19$value[1]; this.result.lastPlugin = plugin22; var promise = void 0; try { @@ -12505,9 +11485,9 @@ var LazyResult$2$1 = /*#__PURE__*/function () { } } } catch (err) { - _iterator21.e(err); + _iterator19.e(err); } finally { - _iterator21.f(); + _iterator19.f(); } } }, { @@ -12570,18 +11550,18 @@ var LazyResult$2$1 = /*#__PURE__*/function () { }, { key: "walkSync", value: function walkSync(node2) { - var _this18 = this; + var _this16 = this; node2[isClean$3] = true; var events = getEvents$1(node2); - var _iterator22 = record_createForOfIteratorHelper(events), - _step22; + var _iterator20 = record_createForOfIteratorHelper(events), + _step20; try { - for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) { - var event = _step22.value; + for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) { + var event = _step20.value; if (event === CHILDREN$1) { if (node2.nodes) { node2.each(function (child) { - if (!child[isClean$3]) _this18.walkSync(child); + if (!child[isClean$3]) _this16.walkSync(child); }); } } else { @@ -12592,9 +11572,9 @@ var LazyResult$2$1 = /*#__PURE__*/function () { } } } catch (err) { - _iterator22.e(err); + _iterator20.e(err); } finally { - _iterator22.f(); + _iterator20.f(); } } }, { @@ -12717,7 +11697,8 @@ var NoWorkResult$1$1 = /*#__PURE__*/function () { }, { key: "then", value: function then(onFulfilled, onRejected) { - if (false) {} + if (false) // removed by dead control flow +{} return this.async().then(onFulfilled, onRejected); } }, { @@ -12804,11 +11785,11 @@ var Processor$1$1 = /*#__PURE__*/function () { key: "normalize", value: function normalize(plugins) { var normalized = []; - var _iterator23 = record_createForOfIteratorHelper(plugins), - _step23; + var _iterator21 = record_createForOfIteratorHelper(plugins), + _step21; try { - for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) { - var i2 = _step23.value; + for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) { + var i2 = _step21.value; if (i2.postcss === true) { i2 = i2(); } else if (i2.postcss) { @@ -12821,15 +11802,16 @@ var Processor$1$1 = /*#__PURE__*/function () { } else if (typeof i2 === "function") { normalized.push(i2); } else if (record_typeof(i2) === "object" && (i2.parse || i2.stringify)) { - if (false) {} + if (false) // removed by dead control flow +{} } else { throw new Error(i2 + " is not a PostCSS plugin"); } } } catch (err) { - _iterator23.e(err); + _iterator21.e(err); } finally { - _iterator23.f(); + _iterator21.f(); } return normalized; } @@ -12870,11 +11852,11 @@ function fromJSON$1$1(json, inputs) { defaults = record_objectWithoutProperties(json, record_excluded); if (ownInputs) { inputs = []; - var _iterator24 = record_createForOfIteratorHelper(ownInputs), - _step24; + var _iterator22 = record_createForOfIteratorHelper(ownInputs), + _step22; try { - for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) { - var input2 = _step24.value; + for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) { + var input2 = _step22.value; var inputHydrated = record_objectSpread(record_objectSpread({}, input2), {}, { __proto__: Input$1$1.prototype }); @@ -12886,9 +11868,9 @@ function fromJSON$1$1(json, inputs) { inputs.push(inputHydrated); } } catch (err) { - _iterator24.e(err); + _iterator22.e(err); } finally { - _iterator24.f(); + _iterator22.f(); } } if (defaults.nodes) { @@ -13128,36 +12110,36 @@ var pico = picocolors_browserExports; var terminalHighlight$1 = require$$2; var CssSyntaxError$3 = /*#__PURE__*/function (_Error2) { function CssSyntaxError2(message, line, column, source, file, plugin22) { - var _this19; + var _this17; record_classCallCheck(this, CssSyntaxError2); - _this19 = _callSuper(this, CssSyntaxError2, [message]); - _this19.name = "CssSyntaxError"; - _this19.reason = message; + _this17 = _callSuper(this, CssSyntaxError2, [message]); + _this17.name = "CssSyntaxError"; + _this17.reason = message; if (file) { - _this19.file = file; + _this17.file = file; } if (source) { - _this19.source = source; + _this17.source = source; } if (plugin22) { - _this19.plugin = plugin22; + _this17.plugin = plugin22; } if (typeof line !== "undefined" && typeof column !== "undefined") { if (typeof line === "number") { - _this19.line = line; - _this19.column = column; + _this17.line = line; + _this17.column = column; } else { - _this19.line = line.line; - _this19.column = line.column; - _this19.endLine = column.line; - _this19.endColumn = column.column; + _this17.line = line.line; + _this17.column = line.column; + _this17.endLine = column.line; + _this17.endColumn = column.column; } } - _this19.setMessage(); + _this17.setMessage(); if (Error.captureStackTrace) { - Error.captureStackTrace(_this19, CssSyntaxError2); + Error.captureStackTrace(_this17, CssSyntaxError2); } - return _this19; + return _this17; } _inherits(CssSyntaxError2, _Error2); return record_createClass(CssSyntaxError2, [{ @@ -13173,7 +12155,7 @@ var CssSyntaxError$3 = /*#__PURE__*/function (_Error2) { }, { key: "showSourceCode", value: function showSourceCode(color) { - var _this20 = this; + var _this18 = this; if (!this.source) return ""; var css = this.source; if (color == null) color = pico.isColorSupported; @@ -13204,8 +12186,8 @@ var CssSyntaxError$3 = /*#__PURE__*/function (_Error2) { return lines.slice(start, end).map(function (line, index2) { var number = start + 1 + index2; var gutter = " " + (" " + number).slice(-maxWidth) + " | "; - if (number === _this20.line) { - var spacing = aside(gutter.replace(/\d/g, " ")) + line.slice(0, _this20.column - 1).replace(/[^\t]/g, " "); + if (number === _this18.line) { + var spacing = aside(gutter.replace(/\d/g, " ")) + line.slice(0, _this18.column - 1).replace(/[^\t]/g, " "); return mark(">") + aside(gutter) + line + "\n " + spacing + mark("^"); } return " " + aside(gutter) + line; @@ -13612,11 +12594,11 @@ var Node$4 = /*#__PURE__*/function () { for (var name in defaults) { if (name === "nodes") { this.nodes = []; - var _iterator25 = record_createForOfIteratorHelper(defaults[name]), - _step25; + var _iterator23 = record_createForOfIteratorHelper(defaults[name]), + _step23; try { - for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) { - var node2 = _step25.value; + for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) { + var node2 = _step23.value; if (typeof node2.clone === "function") { this.append(node2.clone()); } else { @@ -13624,9 +12606,9 @@ var Node$4 = /*#__PURE__*/function () { } } } catch (err) { - _iterator25.e(err); + _iterator23.e(err); } finally { - _iterator25.f(); + _iterator23.f(); } } else { this[name] = defaults[name]; @@ -13986,16 +12968,16 @@ Node$4.default = Node$4; var Node$3 = node; var Declaration$4 = /*#__PURE__*/function (_Node$) { function Declaration2(defaults) { - var _this21; + var _this19; record_classCallCheck(this, Declaration2); if (defaults && typeof defaults.value !== "undefined" && typeof defaults.value !== "string") { defaults = record_objectSpread(record_objectSpread({}, defaults), {}, { value: String(defaults.value) }); } - _this21 = _callSuper(this, Declaration2, [defaults]); - _this21.type = "decl"; - return _this21; + _this19 = _callSuper(this, Declaration2, [defaults]); + _this19.type = "decl"; + return _this19; } _inherits(Declaration2, _Node$); return record_createClass(Declaration2, [{ @@ -14435,11 +13417,11 @@ var MapGenerator$2 = /*#__PURE__*/function () { }, { key: "applyPrevMaps", value: function applyPrevMaps() { - var _iterator26 = record_createForOfIteratorHelper(this.previous()), - _step26; + var _iterator24 = record_createForOfIteratorHelper(this.previous()), + _step24; try { - for (_iterator26.s(); !(_step26 = _iterator26.n()).done;) { - var prev = _step26.value; + for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) { + var prev = _step24.value; var from = this.toUrl(this.path(prev.file)); var root2 = prev.root || dirname(prev.file); var map = void 0; @@ -14454,9 +13436,9 @@ var MapGenerator$2 = /*#__PURE__*/function () { this.map.applySourceMap(map, from, this.toUrl(this.path(root2))); } } catch (err) { - _iterator26.e(err); + _iterator24.e(err); } finally { - _iterator26.f(); + _iterator24.f(); } } }, { @@ -14530,7 +13512,7 @@ var MapGenerator$2 = /*#__PURE__*/function () { }, { key: "generateString", value: function generateString() { - var _this22 = this; + var _this20 = this; this.css = ""; this.map = new SourceMapGenerator({ file: this.outputFile(), @@ -14552,20 +13534,20 @@ var MapGenerator$2 = /*#__PURE__*/function () { }; var lines, last; this.stringify(this.root, function (str, node2, type) { - _this22.css += str; + _this20.css += str; if (node2 && type !== "end") { mapping.generated.line = line; mapping.generated.column = column - 1; if (node2.source && node2.source.start) { - mapping.source = _this22.sourcePath(node2); + mapping.source = _this20.sourcePath(node2); mapping.original.line = node2.source.start.line; mapping.original.column = node2.source.start.column - 1; - _this22.map.addMapping(mapping); + _this20.map.addMapping(mapping); } else { mapping.source = noSource; mapping.original.line = 1; mapping.original.column = 0; - _this22.map.addMapping(mapping); + _this20.map.addMapping(mapping); } } lines = str.match(/\n/g); @@ -14583,19 +13565,19 @@ var MapGenerator$2 = /*#__PURE__*/function () { var childless = node2.type === "decl" || node2.type === "atrule" && !node2.nodes; if (!childless || node2 !== p.last || p.raws.semicolon) { if (node2.source && node2.source.end) { - mapping.source = _this22.sourcePath(node2); + mapping.source = _this20.sourcePath(node2); mapping.original.line = node2.source.end.line; mapping.original.column = node2.source.end.column - 1; mapping.generated.line = line; mapping.generated.column = column - 2; - _this22.map.addMapping(mapping); + _this20.map.addMapping(mapping); } else { mapping.source = noSource; mapping.original.line = 1; mapping.original.column = 0; mapping.generated.line = line; mapping.generated.column = column - 1; - _this22.map.addMapping(mapping); + _this20.map.addMapping(mapping); } } } @@ -14685,15 +13667,15 @@ var MapGenerator$2 = /*#__PURE__*/function () { }, { key: "previous", value: function previous() { - var _this23 = this; + var _this21 = this; if (!this.previousMaps) { this.previousMaps = []; if (this.root) { this.root.walk(function (node2) { if (node2.source && node2.source.input.map) { var map = node2.source.input.map; - if (!_this23.previousMaps.includes(map)) { - _this23.previousMaps.push(map); + if (!_this21.previousMaps.includes(map)) { + _this21.previousMaps.push(map); } } }); @@ -14707,7 +13689,7 @@ var MapGenerator$2 = /*#__PURE__*/function () { }, { key: "setSourcesContent", value: function setSourcesContent() { - var _this24 = this; + var _this22 = this; var already = {}; if (this.root) { this.root.walk(function (node2) { @@ -14715,8 +13697,8 @@ var MapGenerator$2 = /*#__PURE__*/function () { var from = node2.source.input.from; if (from && !already[from]) { already[from] = true; - var fromUrl = _this24.usesFileUrls ? _this24.toFileUrl(from) : _this24.toUrl(_this24.path(from)); - _this24.map.setSourceContent(fromUrl, node2.source.input.css); + var fromUrl = _this22.usesFileUrls ? _this22.toFileUrl(from) : _this22.toUrl(_this22.path(from)); + _this22.map.setSourceContent(fromUrl, node2.source.input.css); } } }); @@ -14776,11 +13758,11 @@ var mapGenerator = MapGenerator$2; var Node$2 = node; var Comment$4 = /*#__PURE__*/function (_Node$2) { function Comment2(defaults) { - var _this25; + var _this23; record_classCallCheck(this, Comment2); - _this25 = _callSuper(this, Comment2, [defaults]); - _this25.type = "comment"; - return _this25; + _this23 = _callSuper(this, Comment2, [defaults]); + _this23.type = "comment"; + return _this23; } _inherits(Comment2, _Node$2); return record_createClass(Comment2); @@ -14803,17 +13785,17 @@ function cleanSource(nodes) { function markDirtyUp(node2) { node2[isClean$1] = false; if (node2.proxyOf.nodes) { - var _iterator27 = record_createForOfIteratorHelper(node2.proxyOf.nodes), - _step27; + var _iterator25 = record_createForOfIteratorHelper(node2.proxyOf.nodes), + _step25; try { - for (_iterator27.s(); !(_step27 = _iterator27.n()).done;) { - var i2 = _step27.value; + for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) { + var i2 = _step25.value; markDirtyUp(i2); } } catch (err) { - _iterator27.e(err); + _iterator25.e(err); } finally { - _iterator27.f(); + _iterator25.f(); } } } @@ -14826,23 +13808,23 @@ var Container$7 = /*#__PURE__*/function (_Node$3) { return record_createClass(Container2, [{ key: "append", value: function append() { - for (var _len10 = arguments.length, children = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) { - children[_key10] = arguments[_key10]; + for (var _len0 = arguments.length, children = new Array(_len0), _key0 = 0; _key0 < _len0; _key0++) { + children[_key0] = arguments[_key0]; } for (var _i9 = 0, _children2 = children; _i9 < _children2.length; _i9++) { var child = _children2[_i9]; var nodes = this.normalize(child, this.last); - var _iterator28 = record_createForOfIteratorHelper(nodes), - _step28; + var _iterator26 = record_createForOfIteratorHelper(nodes), + _step26; try { - for (_iterator28.s(); !(_step28 = _iterator28.n()).done;) { - var node2 = _step28.value; + for (_iterator26.s(); !(_step26 = _iterator26.n()).done;) { + var node2 = _step26.value; this.proxyOf.nodes.push(node2); } } catch (err) { - _iterator28.e(err); + _iterator26.e(err); } finally { - _iterator28.f(); + _iterator26.f(); } } this.markDirty(); @@ -14853,17 +13835,17 @@ var Container$7 = /*#__PURE__*/function (_Node$3) { value: function cleanRaws(keepBetween) { _superPropGet(Container2, "cleanRaws", this, 3)([keepBetween]); if (this.nodes) { - var _iterator29 = record_createForOfIteratorHelper(this.nodes), - _step29; + var _iterator27 = record_createForOfIteratorHelper(this.nodes), + _step27; try { - for (_iterator29.s(); !(_step29 = _iterator29.n()).done;) { - var node2 = _step29.value; + for (_iterator27.s(); !(_step27 = _iterator27.n()).done;) { + var node2 = _step27.value; node2.cleanRaws(keepBetween); } } catch (err) { - _iterator29.e(err); + _iterator27.e(err); } finally { - _iterator29.f(); + _iterator27.f(); } } } @@ -14908,8 +13890,8 @@ var Container$7 = /*#__PURE__*/function (_Node$3) { return node2[prop]; } else if (prop === "each" || typeof prop === "string" && prop.startsWith("walk")) { return function () { - for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) { - args[_key11] = arguments[_key11]; + for (var _len1 = arguments.length, args = new Array(_len1), _key1 = 0; _key1 < _len1; _key1++) { + args[_key1] = arguments[_key1]; } return node2[prop].apply(node2, record_toConsumableArray(args.map(function (i2) { if (typeof i2 === "function") { @@ -14924,8 +13906,8 @@ var Container$7 = /*#__PURE__*/function (_Node$3) { } else if (prop === "every" || prop === "some") { return function (cb) { return node2[prop](function (child) { - for (var _len12 = arguments.length, other = new Array(_len12 > 1 ? _len12 - 1 : 0), _key12 = 1; _key12 < _len12; _key12++) { - other[_key12 - 1] = arguments[_key12]; + for (var _len10 = arguments.length, other = new Array(_len10 > 1 ? _len10 - 1 : 0), _key10 = 1; _key10 < _len10; _key10++) { + other[_key10 - 1] = arguments[_key10]; } return cb.apply(void 0, [child.toProxy()].concat(other)); }); @@ -14967,17 +13949,17 @@ var Container$7 = /*#__PURE__*/function (_Node$3) { var existIndex = this.index(exist); var nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse(); existIndex = this.index(exist); - var _iterator30 = record_createForOfIteratorHelper(nodes), - _step30; + var _iterator28 = record_createForOfIteratorHelper(nodes), + _step28; try { - for (_iterator30.s(); !(_step30 = _iterator30.n()).done;) { - var node2 = _step30.value; + for (_iterator28.s(); !(_step28 = _iterator28.n()).done;) { + var node2 = _step28.value; this.proxyOf.nodes.splice(existIndex + 1, 0, node2); } } catch (err) { - _iterator30.e(err); + _iterator28.e(err); } finally { - _iterator30.f(); + _iterator28.f(); } var index2; for (var id in this.indexes) { @@ -14996,17 +13978,17 @@ var Container$7 = /*#__PURE__*/function (_Node$3) { var type = existIndex === 0 ? "prepend" : false; var nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse(); existIndex = this.index(exist); - var _iterator31 = record_createForOfIteratorHelper(nodes), - _step31; + var _iterator29 = record_createForOfIteratorHelper(nodes), + _step29; try { - for (_iterator31.s(); !(_step31 = _iterator31.n()).done;) { - var node2 = _step31.value; + for (_iterator29.s(); !(_step29 = _iterator29.n()).done;) { + var node2 = _step29.value; this.proxyOf.nodes.splice(existIndex, 0, node2); } } catch (err) { - _iterator31.e(err); + _iterator29.e(err); } finally { - _iterator31.f(); + _iterator29.f(); } var index2; for (var id in this.indexes) { @@ -15021,38 +14003,38 @@ var Container$7 = /*#__PURE__*/function (_Node$3) { }, { key: "normalize", value: function normalize(nodes, sample) { - var _this26 = this; + var _this24 = this; if (typeof nodes === "string") { nodes = cleanSource(parse$4(nodes).nodes); } else if (typeof nodes === "undefined") { nodes = []; } else if (Array.isArray(nodes)) { nodes = nodes.slice(0); - var _iterator32 = record_createForOfIteratorHelper(nodes), - _step32; + var _iterator30 = record_createForOfIteratorHelper(nodes), + _step30; try { - for (_iterator32.s(); !(_step32 = _iterator32.n()).done;) { - var i2 = _step32.value; + for (_iterator30.s(); !(_step30 = _iterator30.n()).done;) { + var i2 = _step30.value; if (i2.parent) i2.parent.removeChild(i2, "ignore"); } } catch (err) { - _iterator32.e(err); + _iterator30.e(err); } finally { - _iterator32.f(); + _iterator30.f(); } } else if (nodes.type === "root" && this.type !== "document") { nodes = nodes.nodes.slice(0); - var _iterator33 = record_createForOfIteratorHelper(nodes), - _step33; + var _iterator31 = record_createForOfIteratorHelper(nodes), + _step31; try { - for (_iterator33.s(); !(_step33 = _iterator33.n()).done;) { - var _i10 = _step33.value; - if (_i10.parent) _i10.parent.removeChild(_i10, "ignore"); + for (_iterator31.s(); !(_step31 = _iterator31.n()).done;) { + var _i0 = _step31.value; + if (_i0.parent) _i0.parent.removeChild(_i0, "ignore"); } } catch (err) { - _iterator33.e(err); + _iterator31.e(err); } finally { - _iterator33.f(); + _iterator31.f(); } } else if (nodes.type) { nodes = [nodes]; @@ -15082,7 +14064,7 @@ var Container$7 = /*#__PURE__*/function (_Node$3) { i2.raws.before = sample.raws.before.replace(/\S/g, ""); } } - i2.parent = _this26.proxyOf; + i2.parent = _this24.proxyOf; return i2; }); return processed; @@ -15090,36 +14072,36 @@ var Container$7 = /*#__PURE__*/function (_Node$3) { }, { key: "prepend", value: function prepend() { - for (var _len13 = arguments.length, children = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) { - children[_key13] = arguments[_key13]; + for (var _len11 = arguments.length, children = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) { + children[_key11] = arguments[_key11]; } children = children.reverse(); - var _iterator34 = record_createForOfIteratorHelper(children), - _step34; + var _iterator32 = record_createForOfIteratorHelper(children), + _step32; try { - for (_iterator34.s(); !(_step34 = _iterator34.n()).done;) { - var child = _step34.value; + for (_iterator32.s(); !(_step32 = _iterator32.n()).done;) { + var child = _step32.value; var nodes = this.normalize(child, this.first, "prepend").reverse(); - var _iterator35 = record_createForOfIteratorHelper(nodes), - _step35; + var _iterator33 = record_createForOfIteratorHelper(nodes), + _step33; try { - for (_iterator35.s(); !(_step35 = _iterator35.n()).done;) { - var node2 = _step35.value; + for (_iterator33.s(); !(_step33 = _iterator33.n()).done;) { + var node2 = _step33.value; this.proxyOf.nodes.unshift(node2); } } catch (err) { - _iterator35.e(err); + _iterator33.e(err); } finally { - _iterator35.f(); + _iterator33.f(); } for (var id in this.indexes) { this.indexes[id] = this.indexes[id] + nodes.length; } } } catch (err) { - _iterator34.e(err); + _iterator32.e(err); } finally { - _iterator34.f(); + _iterator32.f(); } this.markDirty(); return this; @@ -15134,17 +14116,17 @@ var Container$7 = /*#__PURE__*/function (_Node$3) { }, { key: "removeAll", value: function removeAll() { - var _iterator36 = record_createForOfIteratorHelper(this.proxyOf.nodes), - _step36; + var _iterator34 = record_createForOfIteratorHelper(this.proxyOf.nodes), + _step34; try { - for (_iterator36.s(); !(_step36 = _iterator36.n()).done;) { - var node2 = _step36.value; + for (_iterator34.s(); !(_step34 = _iterator34.n()).done;) { + var node2 = _step34.value; node2.parent = void 0; } } catch (err) { - _iterator36.e(err); + _iterator34.e(err); } finally { - _iterator36.f(); + _iterator34.f(); } this.proxyOf.nodes = []; this.markDirty(); @@ -15334,15 +14316,15 @@ var Container$6 = container; var LazyResult$4, Processor$3; var Document$3 = /*#__PURE__*/function (_Container$) { function Document23(defaults) { - var _this27; + var _this25; record_classCallCheck(this, Document23); - _this27 = _callSuper(this, Document23, [record_objectSpread({ + _this25 = _callSuper(this, Document23, [record_objectSpread({ type: "document" }, defaults)]); - if (!_this27.nodes) { - _this27.nodes = []; + if (!_this25.nodes) { + _this25.nodes = []; } - return _this27; + return _this25; } _inherits(Document23, _Container$); return record_createClass(Document23, [{ @@ -15668,19 +14650,19 @@ var tokenize = function tokenizer2(input2) { var Container$5 = container; var AtRule$3 = /*#__PURE__*/function (_Container$2) { function AtRule2(defaults) { - var _this28; + var _this26; record_classCallCheck(this, AtRule2); - _this28 = _callSuper(this, AtRule2, [defaults]); - _this28.type = "atrule"; - return _this28; + _this26 = _callSuper(this, AtRule2, [defaults]); + _this26.type = "atrule"; + return _this26; } _inherits(AtRule2, _Container$2); return record_createClass(AtRule2, [{ key: "append", value: function append() { if (!this.proxyOf.nodes) this.nodes = []; - for (var _len14 = arguments.length, children = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) { - children[_key14] = arguments[_key14]; + for (var _len12 = arguments.length, children = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) { + children[_key12] = arguments[_key12]; } return _superPropGet(AtRule2, "append", this, 3)(children); } @@ -15688,8 +14670,8 @@ var AtRule$3 = /*#__PURE__*/function (_Container$2) { key: "prepend", value: function prepend() { if (!this.proxyOf.nodes) this.nodes = []; - for (var _len15 = arguments.length, children = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) { - children[_key15] = arguments[_key15]; + for (var _len13 = arguments.length, children = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) { + children[_key13] = arguments[_key13]; } return _superPropGet(AtRule2, "prepend", this, 3)(children); } @@ -15702,12 +14684,12 @@ var Container$4 = container; var LazyResult$3, Processor$2; var Root$5 = /*#__PURE__*/function (_Container$3) { function Root2(defaults) { - var _this29; + var _this27; record_classCallCheck(this, Root2); - _this29 = _callSuper(this, Root2, [defaults]); - _this29.type = "root"; - if (!_this29.nodes) _this29.nodes = []; - return _this29; + _this27 = _callSuper(this, Root2, [defaults]); + _this27.type = "root"; + if (!_this27.nodes) _this27.nodes = []; + return _this27; } _inherits(Root2, _Container$3); return record_createClass(Root2, [{ @@ -15722,17 +14704,17 @@ var Root$5 = /*#__PURE__*/function (_Container$3) { delete sample.raws.before; } } else if (this.first !== sample) { - var _iterator37 = record_createForOfIteratorHelper(nodes), - _step37; + var _iterator35 = record_createForOfIteratorHelper(nodes), + _step35; try { - for (_iterator37.s(); !(_step37 = _iterator37.n()).done;) { - var node2 = _step37.value; + for (_iterator35.s(); !(_step35 = _iterator35.n()).done;) { + var node2 = _step35.value; node2.raws.before = sample.raws.before; } } catch (err) { - _iterator37.e(err); + _iterator35.e(err); } finally { - _iterator37.f(); + _iterator35.f(); } } } @@ -15781,11 +14763,11 @@ var list$2 = { var inQuote = false; var prevQuote = ""; var escape = false; - var _iterator38 = record_createForOfIteratorHelper(string), - _step38; + var _iterator36 = record_createForOfIteratorHelper(string), + _step36; try { - for (_iterator38.s(); !(_step38 = _iterator38.n()).done;) { - var letter = _step38.value; + for (_iterator36.s(); !(_step36 = _iterator36.n()).done;) { + var letter = _step36.value; if (escape) { escape = false; } else if (letter === "\\") { @@ -15813,9 +14795,9 @@ var list$2 = { } } } catch (err) { - _iterator38.e(err); + _iterator36.e(err); } finally { - _iterator38.f(); + _iterator36.f(); } if (last || current !== "") array.push(current.trim()); return array; @@ -15827,12 +14809,12 @@ var Container$3 = container; var list$1 = list_1; var Rule$3 = /*#__PURE__*/function (_Container$4) { function Rule2(defaults) { - var _this30; + var _this28; record_classCallCheck(this, Rule2); - _this30 = _callSuper(this, Rule2, [defaults]); - _this30.type = "rule"; - if (!_this30.nodes) _this30.nodes = []; - return _this30; + _this28 = _callSuper(this, Rule2, [defaults]); + _this28.type = "rule"; + if (!_this28.nodes) _this28.nodes = []; + return _this28; } _inherits(Rule2, _Container$4); return record_createClass(Rule2, [{ @@ -15986,13 +14968,13 @@ var Parser$1 = /*#__PURE__*/function () { value: function colon(tokens) { var brackets = 0; var token, type, prev; - var _iterator39 = record_createForOfIteratorHelper(tokens.entries()), - _step39; + var _iterator37 = record_createForOfIteratorHelper(tokens.entries()), + _step37; try { - for (_iterator39.s(); !(_step39 = _iterator39.n()).done;) { - var _step39$value = record_slicedToArray(_step39.value, 2), - i2 = _step39$value[0], - element = _step39$value[1]; + for (_iterator37.s(); !(_step37 = _iterator37.n()).done;) { + var _step37$value = record_slicedToArray(_step37.value, 2), + i2 = _step37$value[0], + element = _step37$value[1]; token = element; type = token[0]; if (type === "(") { @@ -16013,9 +14995,9 @@ var Parser$1 = /*#__PURE__*/function () { prev = token; } } catch (err) { - _iterator39.e(err); + _iterator37.e(err); } finally { - _iterator39.f(); + _iterator37.f(); } return false; } @@ -16461,7 +15443,8 @@ function parse$3(css, opts) { try { parser2.parse(); } catch (e2) { - if (false) {} + if (false) // removed by dead control flow +{} throw e2; } return parser2.root; @@ -16560,7 +15543,7 @@ function cleanMarks(node2) { var postcss$2 = {}; var LazyResult$2 = /*#__PURE__*/function () { function LazyResult2(processor2, css, opts) { - var _this31 = this; + var _this29 = this; record_classCallCheck(this, LazyResult2); this.stringified = false; this.processed = false; @@ -16596,7 +15579,7 @@ var LazyResult$2 = /*#__PURE__*/function () { }); this.plugins = this.processor.plugins.map(function (plugin22) { if (record_typeof(plugin22) === "object" && plugin22.prepare) { - return record_objectSpread(record_objectSpread({}, plugin22), plugin22.prepare(_this31.result)); + return record_objectSpread(record_objectSpread({}, plugin22), plugin22.prepare(_this29.result)); } else { return plugin22; } @@ -16638,7 +15621,8 @@ var LazyResult$2 = /*#__PURE__*/function () { error.plugin = plugin22.postcssPlugin; error.setMessage(); } else if (plugin22.postcssVersion) { - if (false) { var b, a2, runtimeVer, pluginVer, pluginName; } + if (false) // removed by dead control flow +{ var b, a2, runtimeVer, pluginVer, pluginName; } } } catch (err) { if (console && console.error) console.error(err); @@ -16648,17 +15632,17 @@ var LazyResult$2 = /*#__PURE__*/function () { }, { key: "prepareVisitors", value: function prepareVisitors() { - var _this32 = this; + var _this30 = this; this.listeners = {}; var add = function add(plugin22, type, cb) { - if (!_this32.listeners[type]) _this32.listeners[type] = []; - _this32.listeners[type].push([plugin22, cb]); + if (!_this30.listeners[type]) _this30.listeners[type] = []; + _this30.listeners[type].push([plugin22, cb]); }; - var _iterator40 = record_createForOfIteratorHelper(this.plugins), - _step40; + var _iterator38 = record_createForOfIteratorHelper(this.plugins), + _step38; try { - for (_iterator40.s(); !(_step40 = _iterator40.n()).done;) { - var plugin22 = _step40.value; + for (_iterator38.s(); !(_step38 = _iterator38.n()).done;) { + var plugin22 = _step38.value; if (record_typeof(plugin22) === "object") { for (var event in plugin22) { if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) { @@ -16681,161 +15665,157 @@ var LazyResult$2 = /*#__PURE__*/function () { } } } catch (err) { - _iterator40.e(err); + _iterator38.e(err); } finally { - _iterator40.f(); + _iterator38.f(); } this.hasListener = Object.keys(this.listeners).length > 0; } }, { key: "runAsync", value: function () { - var _runAsync2 = record_asyncToGenerator(/*#__PURE__*/record_regeneratorRuntime().mark(function _callee2() { - var _this33 = this; - var i2, plugin22, promise, root2, stack, _promise2, node2, _iterator41, _step41, _loop2; - return record_regeneratorRuntime().wrap(function _callee2$(_context4) { - while (1) switch (_context4.prev = _context4.next) { + var _runAsync2 = record_asyncToGenerator(/*#__PURE__*/record_regenerator().m(function _callee2() { + var _this31 = this; + var i2, plugin22, promise, root2, stack, _promise2, node2, _iterator39, _step39, _loop2, _t6, _t7, _t8; + return record_regenerator().w(function (_context4) { + while (1) switch (_context4.p = _context4.n) { case 0: this.plugin = 0; i2 = 0; - case 2: + case 1: if (!(i2 < this.plugins.length)) { - _context4.next = 17; + _context4.n = 6; break; } plugin22 = this.plugins[i2]; promise = this.runOnRoot(plugin22); if (!record_isPromise(promise)) { - _context4.next = 14; + _context4.n = 5; break; } - _context4.prev = 6; - _context4.next = 9; + _context4.p = 2; + _context4.n = 3; return promise; - case 9: - _context4.next = 14; + case 3: + _context4.n = 5; break; - case 11: - _context4.prev = 11; - _context4.t0 = _context4["catch"](6); - throw this.handleError(_context4.t0); - case 14: + case 4: + _context4.p = 4; + _t6 = _context4.v; + throw this.handleError(_t6); + case 5: i2++; - _context4.next = 2; + _context4.n = 1; break; - case 17: + case 6: this.prepareVisitors(); if (!this.hasListener) { - _context4.next = 56; + _context4.n = 21; break; } root2 = this.result.root; - case 20: + case 7: if (root2[isClean]) { - _context4.next = 39; + _context4.n = 14; break; } root2[isClean] = true; stack = [toStack(root2)]; - case 23: + case 8: if (!(stack.length > 0)) { - _context4.next = 37; + _context4.n = 13; break; } _promise2 = this.visitTick(stack); if (!record_isPromise(_promise2)) { - _context4.next = 35; + _context4.n = 12; break; } - _context4.prev = 26; - _context4.next = 29; + _context4.p = 9; + _context4.n = 10; return _promise2; - case 29: - _context4.next = 35; + case 10: + _context4.n = 12; break; - case 31: - _context4.prev = 31; - _context4.t1 = _context4["catch"](26); + case 11: + _context4.p = 11; + _t7 = _context4.v; node2 = stack[stack.length - 1].node; - throw this.handleError(_context4.t1, node2); - case 35: - _context4.next = 23; + throw this.handleError(_t7, node2); + case 12: + _context4.n = 8; break; - case 37: - _context4.next = 20; + case 13: + _context4.n = 7; break; - case 39: + case 14: if (!this.listeners.OnceExit) { - _context4.next = 56; + _context4.n = 21; break; } - _iterator41 = record_createForOfIteratorHelper(this.listeners.OnceExit); - _context4.prev = 41; - _loop2 = /*#__PURE__*/record_regeneratorRuntime().mark(function _loop2() { - var _step41$value, plugin22, visitor, roots; - return record_regeneratorRuntime().wrap(function _loop2$(_context3) { - while (1) switch (_context3.prev = _context3.next) { + _iterator39 = record_createForOfIteratorHelper(this.listeners.OnceExit); + _context4.p = 15; + _loop2 = /*#__PURE__*/record_regenerator().m(function _loop2() { + var _step39$value, plugin22, visitor, roots, _t5; + return record_regenerator().w(function (_context3) { + while (1) switch (_context3.p = _context3.n) { case 0: - _step41$value = record_slicedToArray(_step41.value, 2), plugin22 = _step41$value[0], visitor = _step41$value[1]; - _this33.result.lastPlugin = plugin22; - _context3.prev = 2; + _step39$value = record_slicedToArray(_step39.value, 2), plugin22 = _step39$value[0], visitor = _step39$value[1]; + _this31.result.lastPlugin = plugin22; + _context3.p = 1; if (!(root2.type === "document")) { - _context3.next = 9; + _context3.n = 3; break; } roots = root2.nodes.map(function (subRoot) { - return visitor(subRoot, _this33.helpers); + return visitor(subRoot, _this31.helpers); }); - _context3.next = 7; + _context3.n = 2; return Promise.all(roots); - case 7: - _context3.next = 11; + case 2: + _context3.n = 4; break; - case 9: - _context3.next = 11; - return visitor(root2, _this33.helpers); - case 11: - _context3.next = 16; + case 3: + _context3.n = 4; + return visitor(root2, _this31.helpers); + case 4: + _context3.n = 6; break; - case 13: - _context3.prev = 13; - _context3.t0 = _context3["catch"](2); - throw _this33.handleError(_context3.t0); - case 16: - case "end": - return _context3.stop(); + case 5: + _context3.p = 5; + _t5 = _context3.v; + throw _this31.handleError(_t5); + case 6: + return _context3.a(2); } - }, _loop2, null, [[2, 13]]); + }, _loop2, null, [[1, 5]]); }); - _iterator41.s(); - case 44: - if ((_step41 = _iterator41.n()).done) { - _context4.next = 48; + _iterator39.s(); + case 16: + if ((_step39 = _iterator39.n()).done) { + _context4.n = 18; break; } - return _context4.delegateYield(_loop2(), "t2", 46); - case 46: - _context4.next = 44; + return _context4.d(_regeneratorValues(_loop2()), 17); + case 17: + _context4.n = 16; break; - case 48: - _context4.next = 53; + case 18: + _context4.n = 20; break; - case 50: - _context4.prev = 50; - _context4.t3 = _context4["catch"](41); - _iterator41.e(_context4.t3); - case 53: - _context4.prev = 53; - _iterator41.f(); - return _context4.finish(53); - case 56: + case 19: + _context4.p = 19; + _t8 = _context4.v; + _iterator39.e(_t8); + case 20: + _context4.p = 20; + _iterator39.f(); + return _context4.f(20); + case 21: this.processed = true; - return _context4.abrupt("return", this.stringify()); - case 58: - case "end": - return _context4.stop(); + return _context4.a(2, this.stringify()); } - }, _callee2, this, [[6, 11], [26, 31], [41, 50, 53, 56]]); + }, _callee2, this, [[15, 19, 20, 21], [9, 11], [2, 4]]); })); function runAsync() { return _runAsync2.apply(this, arguments); @@ -16845,13 +15825,13 @@ var LazyResult$2 = /*#__PURE__*/function () { }, { key: "runOnRoot", value: function runOnRoot(plugin22) { - var _this34 = this; + var _this32 = this; this.result.lastPlugin = plugin22; try { if (record_typeof(plugin22) === "object" && plugin22.Once) { if (this.result.root.type === "document") { var roots = this.result.root.nodes.map(function (root2) { - return plugin22.Once(root2, _this34.helpers); + return plugin22.Once(root2, _this32.helpers); }); if (record_isPromise(roots[0])) { return Promise.all(roots); @@ -16893,20 +15873,20 @@ var LazyResult$2 = /*#__PURE__*/function () { if (this.processing) { throw this.getAsyncError(); } - var _iterator42 = record_createForOfIteratorHelper(this.plugins), - _step42; + var _iterator40 = record_createForOfIteratorHelper(this.plugins), + _step40; try { - for (_iterator42.s(); !(_step42 = _iterator42.n()).done;) { - var plugin22 = _step42.value; + for (_iterator40.s(); !(_step40 = _iterator40.n()).done;) { + var plugin22 = _step40.value; var promise = this.runOnRoot(plugin22); if (record_isPromise(promise)) { throw this.getAsyncError(); } } } catch (err) { - _iterator42.e(err); + _iterator40.e(err); } finally { - _iterator42.f(); + _iterator40.f(); } this.prepareVisitors(); if (this.hasListener) { @@ -16917,17 +15897,17 @@ var LazyResult$2 = /*#__PURE__*/function () { } if (this.listeners.OnceExit) { if (root2.type === "document") { - var _iterator43 = record_createForOfIteratorHelper(root2.nodes), - _step43; + var _iterator41 = record_createForOfIteratorHelper(root2.nodes), + _step41; try { - for (_iterator43.s(); !(_step43 = _iterator43.n()).done;) { - var subRoot = _step43.value; + for (_iterator41.s(); !(_step41 = _iterator41.n()).done;) { + var subRoot = _step41.value; this.visitSync(this.listeners.OnceExit, subRoot); } } catch (err) { - _iterator43.e(err); + _iterator41.e(err); } finally { - _iterator43.f(); + _iterator41.f(); } } else { this.visitSync(this.listeners.OnceExit, root2); @@ -16939,7 +15919,8 @@ var LazyResult$2 = /*#__PURE__*/function () { }, { key: "then", value: function then(onFulfilled, onRejected) { - if (false) {} + if (false) // removed by dead control flow +{} return this.async().then(onFulfilled, onRejected); } }, { @@ -16950,13 +15931,13 @@ var LazyResult$2 = /*#__PURE__*/function () { }, { key: "visitSync", value: function visitSync(visitors, node2) { - var _iterator44 = record_createForOfIteratorHelper(visitors), - _step44; + var _iterator42 = record_createForOfIteratorHelper(visitors), + _step42; try { - for (_iterator44.s(); !(_step44 = _iterator44.n()).done;) { - var _step44$value = record_slicedToArray(_step44.value, 2), - plugin22 = _step44$value[0], - visitor = _step44$value[1]; + for (_iterator42.s(); !(_step42 = _iterator42.n()).done;) { + var _step42$value = record_slicedToArray(_step42.value, 2), + plugin22 = _step42$value[0], + visitor = _step42$value[1]; this.result.lastPlugin = plugin22; var promise = void 0; try { @@ -16972,9 +15953,9 @@ var LazyResult$2 = /*#__PURE__*/function () { } } } catch (err) { - _iterator44.e(err); + _iterator42.e(err); } finally { - _iterator44.f(); + _iterator42.f(); } } }, { @@ -17037,18 +16018,18 @@ var LazyResult$2 = /*#__PURE__*/function () { }, { key: "walkSync", value: function walkSync(node2) { - var _this35 = this; + var _this33 = this; node2[isClean] = true; var events = getEvents(node2); - var _iterator45 = record_createForOfIteratorHelper(events), - _step45; + var _iterator43 = record_createForOfIteratorHelper(events), + _step43; try { - for (_iterator45.s(); !(_step45 = _iterator45.n()).done;) { - var event = _step45.value; + for (_iterator43.s(); !(_step43 = _iterator43.n()).done;) { + var event = _step43.value; if (event === CHILDREN) { if (node2.nodes) { node2.each(function (child) { - if (!child[isClean]) _this35.walkSync(child); + if (!child[isClean]) _this33.walkSync(child); }); } } else { @@ -17059,9 +16040,9 @@ var LazyResult$2 = /*#__PURE__*/function () { } } } catch (err) { - _iterator45.e(err); + _iterator43.e(err); } finally { - _iterator45.f(); + _iterator43.f(); } } }, { @@ -17184,7 +16165,8 @@ var NoWorkResult$1 = /*#__PURE__*/function () { }, { key: "then", value: function then(onFulfilled, onRejected) { - if (false) {} + if (false) // removed by dead control flow +{} return this.async().then(onFulfilled, onRejected); } }, { @@ -17271,11 +16253,11 @@ var Processor$1 = /*#__PURE__*/function () { key: "normalize", value: function normalize(plugins) { var normalized = []; - var _iterator46 = record_createForOfIteratorHelper(plugins), - _step46; + var _iterator44 = record_createForOfIteratorHelper(plugins), + _step44; try { - for (_iterator46.s(); !(_step46 = _iterator46.n()).done;) { - var i2 = _step46.value; + for (_iterator44.s(); !(_step44 = _iterator44.n()).done;) { + var i2 = _step44.value; if (i2.postcss === true) { i2 = i2(); } else if (i2.postcss) { @@ -17288,15 +16270,16 @@ var Processor$1 = /*#__PURE__*/function () { } else if (typeof i2 === "function") { normalized.push(i2); } else if (record_typeof(i2) === "object" && (i2.parse || i2.stringify)) { - if (false) {} + if (false) // removed by dead control flow +{} } else { throw new Error(i2 + " is not a PostCSS plugin"); } } } catch (err) { - _iterator46.e(err); + _iterator44.e(err); } finally { - _iterator46.f(); + _iterator44.f(); } return normalized; } @@ -17337,11 +16320,11 @@ function fromJSON$1(json, inputs) { defaults = record_objectWithoutProperties(json, _excluded3); if (ownInputs) { inputs = []; - var _iterator47 = record_createForOfIteratorHelper(ownInputs), - _step47; + var _iterator45 = record_createForOfIteratorHelper(ownInputs), + _step45; try { - for (_iterator47.s(); !(_step47 = _iterator47.n()).done;) { - var input2 = _step47.value; + for (_iterator45.s(); !(_step45 = _iterator45.n()).done;) { + var input2 = _step45.value; var inputHydrated = record_objectSpread(record_objectSpread({}, input2), {}, { __proto__: Input$1.prototype }); @@ -17353,9 +16336,9 @@ function fromJSON$1(json, inputs) { inputs.push(inputHydrated); } } catch (err) { - _iterator47.e(err); + _iterator45.e(err); } finally { - _iterator47.f(); + _iterator45.f(); } } if (defaults.nodes) { @@ -17407,8 +16390,8 @@ var Rule22 = rule; var Root22 = root; var Node22 = node; function postcss() { - for (var _len16 = arguments.length, plugins = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) { - plugins[_key16] = arguments[_key16]; + for (var _len14 = arguments.length, plugins = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) { + plugins[_key14] = arguments[_key14]; } if (plugins.length === 1 && Array.isArray(plugins[0])) { plugins = plugins[0]; @@ -17569,7 +16552,7 @@ var BaseRRNode = /*#__PURE__*/function () { }]); }(); var testableAccessors = { - Node: ["childNodes", "parentNode", "parentElement", "textContent"], + Node: ["childNodes", "parentNode", "parentElement", "textContent", "ownerDocument"], ShadowRoot: ["host", "styleSheets"], Element: ["shadowRoot", "querySelector", "querySelectorAll"], MutationObserver: [] @@ -17615,7 +16598,7 @@ function getUntaintedPrototype(key) { document.body.removeChild(iframeEl); if (!untaintedObject) return defaultPrototype; return untaintedBasePrototype[key] = untaintedObject; - } catch (_unused2) { + } catch (_unused3) { return defaultPrototype; } } @@ -17640,6 +16623,9 @@ function getUntaintedMethod(key, instance, method) { untaintedMethodCache[cacheKey] = untaintedMethod; return untaintedMethod.bind(instance); } +function ownerDocument(n2) { + return getUntaintedAccessor("Node", n2, "ownerDocument"); +} function childNodes(n2) { return getUntaintedAccessor("Node", n2, "childNodes"); } @@ -17678,7 +16664,32 @@ function querySelectorAll(n2, selectors) { function mutationObserverCtor() { return getUntaintedPrototype("MutationObserver").constructor; } +function patch(source, name, replacement) { + try { + if (!(name in source)) { + return function () {}; + } + var original = source[name]; + var wrapped = replacement(original); + if (typeof wrapped === "function") { + wrapped.prototype = wrapped.prototype || {}; + Object.defineProperties(wrapped, { + __rrweb_original__: { + enumerable: false, + value: original + } + }); + } + source[name] = wrapped; + return function () { + source[name] = original; + }; + } catch (_unused4) { + return function () {}; + } +} var index = { + ownerDocument: ownerDocument, childNodes: childNodes, parentNode: parentNode, parentElement: parentElement, @@ -17690,7 +16701,8 @@ var index = { shadowRoot: shadowRoot, querySelector: querySelector, querySelectorAll: querySelectorAll, - mutationObserver: mutationObserverCtor + mutationObserver: mutationObserverCtor, + patch: patch }; function on(type, fn) { var target = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : document; @@ -17740,8 +16752,8 @@ function throttle(func, wait) { var timeout = null; var previous = 0; return function () { - for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) { - args[_key17] = arguments[_key17]; + for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) { + args[_key15] = arguments[_key15]; } var now = Date.now(); if (!previous && options.leading === false) { @@ -17770,9 +16782,9 @@ function hookSetter(target, key, d, isRevoked) { var original = win.Object.getOwnPropertyDescriptor(target, key); win.Object.defineProperty(target, key, isRevoked ? d : { set: function set(value) { - var _this36 = this; + var _this34 = this; setTimeout(function () { - d.set.call(_this36, value); + d.set.call(_this34, value); }, 0); if (original && original.set) { original.set.call(this, value); @@ -17783,30 +16795,6 @@ function hookSetter(target, key, d, isRevoked) { return hookSetter(target, key, original || {}, true); }; } -function patch(source, name, replacement) { - try { - if (!(name in source)) { - return function () {}; - } - var original = source[name]; - var wrapped = replacement(original); - if (typeof wrapped === "function") { - wrapped.prototype = wrapped.prototype || {}; - Object.defineProperties(wrapped, { - __rrweb_original__: { - enumerable: false, - value: original - } - }); - } - source[name] = wrapped; - return function () { - source[name] = original; - }; - } catch (_unused3) { - return function () {}; - } -} var nowTimestamp = Date.now; if (! /* @__PURE__ *//[1-9][0-9]{12}/.test(Date.now().toString())) { nowTimestamp = function nowTimestamp() { @@ -17972,13 +16960,13 @@ function getRootShadowHost(n2) { return rootShadowHost; } function shadowHostInDom(n2) { - var doc = n2.ownerDocument; + var doc = index.ownerDocument(n2); if (!doc) return false; var shadowHost = getRootShadowHost(n2); return index.contains(doc, shadowHost); } function inDom(n2) { - var doc = n2.ownerDocument; + var doc = index.ownerDocument(n2); if (!doc) return false; return index.contains(doc, n2) || shadowHostInDom(n2); } @@ -18148,7 +17136,7 @@ var moveKey = function moveKey(id, parentId) { }; var MutationBuffer = /*#__PURE__*/function () { function MutationBuffer() { - var _this37 = this; + var _this35 = this; record_classCallCheck(this, MutationBuffer); __publicField(this, "frozen", false); __publicField(this, "locked", false); @@ -18185,11 +17173,11 @@ var MutationBuffer = /*#__PURE__*/function () { __publicField(this, "processedNodeManager"); __publicField(this, "unattachedDoc"); __publicField(this, "processMutations", function (mutations) { - mutations.forEach(_this37.processMutation); - _this37.emit(); + mutations.forEach(_this35.processMutation); + _this35.emit(); }); __publicField(this, "emit", function () { - if (_this37.frozen || _this37.locked) { + if (_this35.frozen || _this35.locked) { return; } var adds = []; @@ -18200,7 +17188,7 @@ var MutationBuffer = /*#__PURE__*/function () { var nextId = IGNORED_NODE; while (nextId === IGNORED_NODE) { ns = ns && ns.nextSibling; - nextId = ns && _this37.mirror.getId(ns); + nextId = ns && _this35.mirror.getId(ns); } return nextId; }; @@ -18214,49 +17202,49 @@ var MutationBuffer = /*#__PURE__*/function () { var parentTag = parent.tagName; if (parentTag === "TEXTAREA") { return; - } else if (parentTag === "STYLE" && _this37.addedSet.has(parent)) { + } else if (parentTag === "STYLE" && _this35.addedSet.has(parent)) { cssCaptured = true; } } - var parentId = isShadowRoot(parent) ? _this37.mirror.getId(getShadowHost(n2)) : _this37.mirror.getId(parent); + var parentId = isShadowRoot(parent) ? _this35.mirror.getId(getShadowHost(n2)) : _this35.mirror.getId(parent); var nextId = getNextId(n2); if (parentId === -1 || nextId === -1) { return addList.addNode(n2); } var sn = serializeNodeWithId(n2, { - doc: _this37.doc, - mirror: _this37.mirror, - blockClass: _this37.blockClass, - blockSelector: _this37.blockSelector, - maskTextClass: _this37.maskTextClass, - maskTextSelector: _this37.maskTextSelector, + doc: _this35.doc, + mirror: _this35.mirror, + blockClass: _this35.blockClass, + blockSelector: _this35.blockSelector, + maskTextClass: _this35.maskTextClass, + maskTextSelector: _this35.maskTextSelector, skipChild: true, newlyAddedElement: true, - inlineStylesheet: _this37.inlineStylesheet, - maskInputOptions: _this37.maskInputOptions, - maskTextFn: _this37.maskTextFn, - maskInputFn: _this37.maskInputFn, - slimDOMOptions: _this37.slimDOMOptions, - dataURLOptions: _this37.dataURLOptions, - recordCanvas: _this37.recordCanvas, - inlineImages: _this37.inlineImages, + inlineStylesheet: _this35.inlineStylesheet, + maskInputOptions: _this35.maskInputOptions, + maskTextFn: _this35.maskTextFn, + maskInputFn: _this35.maskInputFn, + slimDOMOptions: _this35.slimDOMOptions, + dataURLOptions: _this35.dataURLOptions, + recordCanvas: _this35.recordCanvas, + inlineImages: _this35.inlineImages, onSerialize: function onSerialize(currentN) { - if (isSerializedIframe(currentN, _this37.mirror)) { - _this37.iframeManager.addIframe(currentN); + if (isSerializedIframe(currentN, _this35.mirror)) { + _this35.iframeManager.addIframe(currentN); } - if (isSerializedStylesheet(currentN, _this37.mirror)) { - _this37.stylesheetManager.trackLinkElement(currentN); + if (isSerializedStylesheet(currentN, _this35.mirror)) { + _this35.stylesheetManager.trackLinkElement(currentN); } if (hasShadowRoot(n2)) { - _this37.shadowDomManager.addShadowRoot(index.shadowRoot(n2), _this37.doc); + _this35.shadowDomManager.addShadowRoot(index.shadowRoot(n2), _this35.doc); } }, onIframeLoad: function onIframeLoad(iframe, childSn) { - _this37.iframeManager.attachIframe(iframe, childSn); - _this37.shadowDomManager.observeAttachShadow(iframe); + _this35.iframeManager.attachIframe(iframe, childSn); + _this35.shadowDomManager.observeAttachShadow(iframe); }, onStylesheetLoad: function onStylesheetLoad(link, childSn) { - _this37.stylesheetManager.attachLinkElement(link, childSn); + _this35.stylesheetManager.attachLinkElement(link, childSn); }, cssCaptured: cssCaptured }); @@ -18269,47 +17257,47 @@ var MutationBuffer = /*#__PURE__*/function () { addedIds.add(sn.id); } }; - while (_this37.mapRemoves.length) { - _this37.mirror.removeNodeFromMap(_this37.mapRemoves.shift()); + while (_this35.mapRemoves.length) { + _this35.mirror.removeNodeFromMap(_this35.mapRemoves.shift()); } - var _iterator48 = record_createForOfIteratorHelper(_this37.movedSet), - _step48; + var _iterator46 = record_createForOfIteratorHelper(_this35.movedSet), + _step46; try { - for (_iterator48.s(); !(_step48 = _iterator48.n()).done;) { - var n2 = _step48.value; - if (isParentRemoved(_this37.removesSubTreeCache, n2, _this37.mirror) && !_this37.movedSet.has(index.parentNode(n2))) { + for (_iterator46.s(); !(_step46 = _iterator46.n()).done;) { + var n2 = _step46.value; + if (isParentRemoved(_this35.removesSubTreeCache, n2, _this35.mirror) && !_this35.movedSet.has(index.parentNode(n2))) { continue; } pushAdd(n2); } } catch (err) { - _iterator48.e(err); + _iterator46.e(err); } finally { - _iterator48.f(); + _iterator46.f(); } - var _iterator49 = record_createForOfIteratorHelper(_this37.addedSet), - _step49; + var _iterator47 = record_createForOfIteratorHelper(_this35.addedSet), + _step47; try { - for (_iterator49.s(); !(_step49 = _iterator49.n()).done;) { - var _n = _step49.value; - if (!isAncestorInSet(_this37.droppedSet, _n) && !isParentRemoved(_this37.removesSubTreeCache, _n, _this37.mirror)) { + for (_iterator47.s(); !(_step47 = _iterator47.n()).done;) { + var _n = _step47.value; + if (!isAncestorInSet(_this35.droppedSet, _n) && !isParentRemoved(_this35.removesSubTreeCache, _n, _this35.mirror)) { pushAdd(_n); - } else if (isAncestorInSet(_this37.movedSet, _n)) { + } else if (isAncestorInSet(_this35.movedSet, _n)) { pushAdd(_n); } else { - _this37.droppedSet.add(_n); + _this35.droppedSet.add(_n); } } } catch (err) { - _iterator49.e(err); + _iterator47.e(err); } finally { - _iterator49.f(); + _iterator47.f(); } var candidate = null; while (addList.length) { var node2 = null; if (candidate) { - var parentId = _this37.mirror.getId(index.parentNode(candidate.value)); + var parentId = _this35.mirror.getId(index.parentNode(candidate.value)); var nextId = getNextId(candidate.value); if (parentId !== -1 && nextId !== -1) { node2 = candidate; @@ -18321,7 +17309,7 @@ var MutationBuffer = /*#__PURE__*/function () { var _node = tailNode; tailNode = tailNode.previous; if (_node) { - var _parentId = _this37.mirror.getId(index.parentNode(_node.value)); + var _parentId = _this35.mirror.getId(index.parentNode(_node.value)); var _nextId = getNextId(_node.value); if (_nextId === -1) continue;else if (_parentId !== -1) { node2 = _node; @@ -18331,7 +17319,7 @@ var MutationBuffer = /*#__PURE__*/function () { var parent = index.parentNode(unhandledNode); if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { var shadowHost = index.host(parent); - var parentId2 = _this37.mirror.getId(shadowHost); + var parentId2 = _this35.mirror.getId(shadowHost); if (parentId2 !== -1) { node2 = _node; break; @@ -18352,22 +17340,22 @@ var MutationBuffer = /*#__PURE__*/function () { pushAdd(node2.value); } var payload = { - texts: _this37.texts.map(function (text) { + texts: _this35.texts.map(function (text) { var n2 = text.node; var parent = index.parentNode(n2); if (parent && parent.tagName === "TEXTAREA") { - _this37.genTextAreaValueMutation(parent); + _this35.genTextAreaValueMutation(parent); } return { - id: _this37.mirror.getId(n2), + id: _this35.mirror.getId(n2), value: text.value }; }).filter(function (text) { return !addedIds.has(text.id); }).filter(function (text) { - return _this37.mirror.has(text.id); + return _this35.mirror.has(text.id); }), - attributes: _this37.attributes.map(function (attribute) { + attributes: _this35.attributes.map(function (attribute) { var attributes = attribute.attributes; if (typeof attributes.style === "string") { var diffAsStr = JSON.stringify(attribute.styleDiff); @@ -18379,33 +17367,33 @@ var MutationBuffer = /*#__PURE__*/function () { } } return { - id: _this37.mirror.getId(attribute.node), + id: _this35.mirror.getId(attribute.node), attributes: attributes }; }).filter(function (attribute) { return !addedIds.has(attribute.id); }).filter(function (attribute) { - return _this37.mirror.has(attribute.id); + return _this35.mirror.has(attribute.id); }), - removes: _this37.removes, + removes: _this35.removes, adds: adds }; if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) { return; } - _this37.texts = []; - _this37.attributes = []; - _this37.attributeMap = /* @__PURE__ */new WeakMap(); - _this37.removes = []; - _this37.addedSet = /* @__PURE__ */new Set(); - _this37.movedSet = /* @__PURE__ */new Set(); - _this37.droppedSet = /* @__PURE__ */new Set(); - _this37.removesSubTreeCache = /* @__PURE__ */new Set(); - _this37.movedMap = {}; - _this37.mutationCb(payload); + _this35.texts = []; + _this35.attributes = []; + _this35.attributeMap = /* @__PURE__ */new WeakMap(); + _this35.removes = []; + _this35.addedSet = /* @__PURE__ */new Set(); + _this35.movedSet = /* @__PURE__ */new Set(); + _this35.droppedSet = /* @__PURE__ */new Set(); + _this35.removesSubTreeCache = /* @__PURE__ */new Set(); + _this35.movedMap = {}; + _this35.mutationCb(payload); }); __publicField(this, "genTextAreaValueMutation", function (textarea) { - var item = _this37.attributeMap.get(textarea); + var item = _this35.attributeMap.get(textarea); if (!item) { item = { node: textarea, @@ -18413,26 +17401,34 @@ var MutationBuffer = /*#__PURE__*/function () { styleDiff: {}, _unchangedStyles: {} }; - _this37.attributes.push(item); - _this37.attributeMap.set(textarea, item); + _this35.attributes.push(item); + _this35.attributeMap.set(textarea, item); } - item.attributes.value = Array.from(index.childNodes(textarea), function (cn) { + var value = Array.from(index.childNodes(textarea), function (cn) { return index.textContent(cn) || ""; }).join(""); + item.attributes.value = maskInputValue({ + element: textarea, + maskInputOptions: _this35.maskInputOptions, + tagName: textarea.tagName, + type: getInputType(textarea), + value: value, + maskInputFn: _this35.maskInputFn + }); }); __publicField(this, "processMutation", function (m) { - if (isIgnored(m.target, _this37.mirror, _this37.slimDOMOptions)) { + if (isIgnored(m.target, _this35.mirror, _this35.slimDOMOptions)) { return; } switch (m.type) { case "characterData": { var value = index.textContent(m.target); - if (!isBlocked(m.target, _this37.blockClass, _this37.blockSelector, false) && value !== m.oldValue) { - _this37.texts.push({ - value: needMaskingText(m.target, _this37.maskTextClass, _this37.maskTextSelector, true + if (!isBlocked(m.target, _this35.blockClass, _this35.blockSelector, false) && value !== m.oldValue) { + _this35.texts.push({ + value: needMaskingText(m.target, _this35.maskTextClass, _this35.maskTextSelector, true // checkAncestors - ) && value ? _this37.maskTextFn ? _this37.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\S]/g, "*") : value, + ) && value ? _this35.maskTextFn ? _this35.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\S]/g, "*") : value, node: m.target }); } @@ -18447,18 +17443,18 @@ var MutationBuffer = /*#__PURE__*/function () { var type = getInputType(target); _value2 = maskInputValue({ element: target, - maskInputOptions: _this37.maskInputOptions, + maskInputOptions: _this35.maskInputOptions, tagName: target.tagName, type: type, value: _value2, - maskInputFn: _this37.maskInputFn + maskInputFn: _this35.maskInputFn }); } - if (isBlocked(m.target, _this37.blockClass, _this37.blockSelector, false) || _value2 === m.oldValue) { + if (isBlocked(m.target, _this35.blockClass, _this35.blockSelector, false) || _value2 === m.oldValue) { return; } - var item = _this37.attributeMap.get(m.target); - if (target.tagName === "IFRAME" && attributeName === "src" && !_this37.keepIframeSrcFn(_value2)) { + var item = _this35.attributeMap.get(m.target); + if (target.tagName === "IFRAME" && attributeName === "src" && !_this35.keepIframeSrcFn(_value2)) { if (!target.contentDocument) { attributeName = "rr_src"; } else { @@ -18472,28 +17468,28 @@ var MutationBuffer = /*#__PURE__*/function () { styleDiff: {}, _unchangedStyles: {} }; - _this37.attributes.push(item); - _this37.attributeMap.set(m.target, item); + _this35.attributes.push(item); + _this35.attributeMap.set(m.target, item); } if (attributeName === "type" && target.tagName === "INPUT" && (m.oldValue || "").toLowerCase() === "password") { target.setAttribute("data-rr-is-password", "true"); } if (!ignoreAttribute(target.tagName, attributeName)) { - item.attributes[attributeName] = transformAttribute(_this37.doc, toLowerCase(target.tagName), toLowerCase(attributeName), _value2); + item.attributes[attributeName] = transformAttribute(_this35.doc, toLowerCase(target.tagName), toLowerCase(attributeName), _value2); if (attributeName === "style") { - if (!_this37.unattachedDoc) { + if (!_this35.unattachedDoc) { try { - _this37.unattachedDoc = document.implementation.createHTMLDocument(); + _this35.unattachedDoc = document.implementation.createHTMLDocument(); } catch (e2) { - _this37.unattachedDoc = _this37.doc; + _this35.unattachedDoc = _this35.doc; } } - var old = _this37.unattachedDoc.createElement("span"); + var old = _this35.unattachedDoc.createElement("span"); if (m.oldValue) { old.setAttribute("style", m.oldValue); } - for (var _i11 = 0, _Array$from3 = Array.from(target.style); _i11 < _Array$from3.length; _i11++) { - var pname = _Array$from3[_i11]; + for (var _i1 = 0, _Array$from3 = Array.from(target.style); _i1 < _Array$from3.length; _i1++) { + var pname = _Array$from3[_i1]; var newValue = target.style.getPropertyValue(pname); var newPriority = target.style.getPropertyPriority(pname); if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) { @@ -18506,8 +17502,8 @@ var MutationBuffer = /*#__PURE__*/function () { item._unchangedStyles[pname] = [newValue, newPriority]; } } - for (var _i12 = 0, _Array$from4 = Array.from(old.style); _i12 < _Array$from4.length; _i12++) { - var _pname = _Array$from4[_i12]; + for (var _i10 = 0, _Array$from4 = Array.from(old.style); _i10 < _Array$from4.length; _i10++) { + var _pname = _Array$from4[_i10]; if (target.style.getPropertyValue(_pname) === "") { item.styleDiff[_pname] = false; } @@ -18524,66 +17520,66 @@ var MutationBuffer = /*#__PURE__*/function () { } case "childList": { - if (isBlocked(m.target, _this37.blockClass, _this37.blockSelector, true)) return; + if (isBlocked(m.target, _this35.blockClass, _this35.blockSelector, true)) return; if (m.target.tagName === "TEXTAREA") { - _this37.genTextAreaValueMutation(m.target); + _this35.genTextAreaValueMutation(m.target); return; } m.addedNodes.forEach(function (n2) { - return _this37.genAdds(n2, m.target); + return _this35.genAdds(n2, m.target); }); m.removedNodes.forEach(function (n2) { - var nodeId = _this37.mirror.getId(n2); - var parentId = isShadowRoot(m.target) ? _this37.mirror.getId(index.host(m.target)) : _this37.mirror.getId(m.target); - if (isBlocked(m.target, _this37.blockClass, _this37.blockSelector, false) || isIgnored(n2, _this37.mirror, _this37.slimDOMOptions) || !isSerialized(n2, _this37.mirror)) { + var nodeId = _this35.mirror.getId(n2); + var parentId = isShadowRoot(m.target) ? _this35.mirror.getId(index.host(m.target)) : _this35.mirror.getId(m.target); + if (isBlocked(m.target, _this35.blockClass, _this35.blockSelector, false) || isIgnored(n2, _this35.mirror, _this35.slimDOMOptions) || !isSerialized(n2, _this35.mirror)) { return; } - if (_this37.addedSet.has(n2)) { - deepDelete(_this37.addedSet, n2); - _this37.droppedSet.add(n2); - } else if (_this37.addedSet.has(m.target) && nodeId === -1) ;else if (isAncestorRemoved(m.target, _this37.mirror)) ;else if (_this37.movedSet.has(n2) && _this37.movedMap[moveKey(nodeId, parentId)]) { - deepDelete(_this37.movedSet, n2); + if (_this35.addedSet.has(n2)) { + deepDelete(_this35.addedSet, n2); + _this35.droppedSet.add(n2); + } else if (_this35.addedSet.has(m.target) && nodeId === -1) ;else if (isAncestorRemoved(m.target, _this35.mirror)) ;else if (_this35.movedSet.has(n2) && _this35.movedMap[moveKey(nodeId, parentId)]) { + deepDelete(_this35.movedSet, n2); } else { - _this37.removes.push({ + _this35.removes.push({ parentId: parentId, id: nodeId, isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0 }); - processRemoves(n2, _this37.removesSubTreeCache); + processRemoves(n2, _this35.removesSubTreeCache); } - _this37.mapRemoves.push(n2); + _this35.mapRemoves.push(n2); }); break; } } }); __publicField(this, "genAdds", function (n2, target) { - if (_this37.processedNodeManager.inOtherBuffer(n2, _this37)) return; - if (_this37.addedSet.has(n2) || _this37.movedSet.has(n2)) return; - if (_this37.mirror.hasNode(n2)) { - if (isIgnored(n2, _this37.mirror, _this37.slimDOMOptions)) { + if (_this35.processedNodeManager.inOtherBuffer(n2, _this35)) return; + if (_this35.addedSet.has(n2) || _this35.movedSet.has(n2)) return; + if (_this35.mirror.hasNode(n2)) { + if (isIgnored(n2, _this35.mirror, _this35.slimDOMOptions)) { return; } - _this37.movedSet.add(n2); + _this35.movedSet.add(n2); var targetId = null; - if (target && _this37.mirror.hasNode(target)) { - targetId = _this37.mirror.getId(target); + if (target && _this35.mirror.hasNode(target)) { + targetId = _this35.mirror.getId(target); } if (targetId && targetId !== -1) { - _this37.movedMap[moveKey(_this37.mirror.getId(n2), targetId)] = true; + _this35.movedMap[moveKey(_this35.mirror.getId(n2), targetId)] = true; } } else { - _this37.addedSet.add(n2); - _this37.droppedSet.delete(n2); + _this35.addedSet.add(n2); + _this35.droppedSet.delete(n2); } - if (!isBlocked(n2, _this37.blockClass, _this37.blockSelector, false)) { + if (!isBlocked(n2, _this35.blockClass, _this35.blockSelector, false)) { index.childNodes(n2).forEach(function (childN) { - return _this37.genAdds(childN); + return _this35.genAdds(childN); }); if (hasShadowRoot(n2)) { index.childNodes(index.shadowRoot(n2)).forEach(function (childN) { - _this37.processedNodeManager.add(childN, _this37); - _this37.genAdds(childN, n2); + _this35.processedNodeManager.add(childN, _this35); + _this35.genAdds(childN, n2); }); } } @@ -18592,9 +17588,9 @@ var MutationBuffer = /*#__PURE__*/function () { return record_createClass(MutationBuffer, [{ key: "init", value: function init(options) { - var _this38 = this; + var _this36 = this; ["mutationCb", "blockClass", "blockSelector", "maskTextClass", "maskTextSelector", "inlineStylesheet", "maskInputOptions", "maskTextFn", "maskInputFn", "keepIframeSrcFn", "recordCanvas", "inlineImages", "slimDOMOptions", "dataURLOptions", "doc", "mirror", "iframeManager", "stylesheetManager", "shadowDomManager", "canvasManager", "processedNodeManager"].forEach(function (key) { - _this38[key] = options[key]; + _this36[key] = options[key]; }); } }, { @@ -18711,7 +17707,7 @@ function getEventTarget(event) { } else if ("path" in event && event.path.length) { return event.path[0]; } - } catch (_unused4) {} + } catch (_unused5) {} return event && event.target; } function initMutationObserver(options, rootEl) { @@ -18919,18 +17915,18 @@ function initViewportResizeObserver(_ref8, _ref9) { } var INPUT_TAGS = ["INPUT", "TEXTAREA", "SELECT"]; var lastInputValueMap = /* @__PURE__ */new WeakMap(); -function initInputObserver(_ref10) { - var inputCb = _ref10.inputCb, - doc = _ref10.doc, - mirror2 = _ref10.mirror, - blockClass = _ref10.blockClass, - blockSelector = _ref10.blockSelector, - ignoreClass = _ref10.ignoreClass, - ignoreSelector = _ref10.ignoreSelector, - maskInputOptions = _ref10.maskInputOptions, - maskInputFn = _ref10.maskInputFn, - sampling = _ref10.sampling, - userTriggeredOnInput = _ref10.userTriggeredOnInput; +function initInputObserver(_ref0) { + var inputCb = _ref0.inputCb, + doc = _ref0.doc, + mirror2 = _ref0.mirror, + blockClass = _ref0.blockClass, + blockSelector = _ref0.blockSelector, + ignoreClass = _ref0.ignoreClass, + ignoreSelector = _ref0.ignoreSelector, + maskInputOptions = _ref0.maskInputOptions, + maskInputFn = _ref0.maskInputFn, + sampling = _ref0.sampling, + userTriggeredOnInput = _ref0.userTriggeredOnInput; function eventHandler(event) { var target = getEventTarget(event); var userTriggered = event.isTrusted; @@ -19054,11 +18050,11 @@ function getIdAndStyleId(sheet, mirror2, styleMirror) { id: id }; } -function initStyleSheetObserver(_ref11, _ref12) { - var styleSheetRuleCb = _ref11.styleSheetRuleCb, - mirror2 = _ref11.mirror, - stylesheetManager = _ref11.stylesheetManager; - var win = _ref12.win; +function initStyleSheetObserver(_ref1, _ref10) { + var styleSheetRuleCb = _ref1.styleSheetRuleCb, + mirror2 = _ref1.mirror, + stylesheetManager = _ref1.stylesheetManager; + var win = _ref10.win; if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) { return function () {}; } @@ -19169,10 +18165,10 @@ function initStyleSheetObserver(_ref11, _ref12) { } } var unmodifiedFunctions = {}; - Object.entries(supportedNestedCSSRuleTypes).forEach(function (_ref13) { - var _ref14 = record_slicedToArray(_ref13, 2), - typeKey = _ref14[0], - type = _ref14[1]; + Object.entries(supportedNestedCSSRuleTypes).forEach(function (_ref11) { + var _ref12 = record_slicedToArray(_ref11, 2), + typeKey = _ref12[0], + type = _ref12[1]; unmodifiedFunctions[typeKey] = { // eslint-disable-next-line @typescript-eslint/unbound-method insertRule: type.prototype.insertRule, @@ -19227,18 +18223,18 @@ function initStyleSheetObserver(_ref11, _ref12) { win.CSSStyleSheet.prototype.deleteRule = deleteRule; replace && (win.CSSStyleSheet.prototype.replace = replace); replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync); - Object.entries(supportedNestedCSSRuleTypes).forEach(function (_ref15) { - var _ref16 = record_slicedToArray(_ref15, 2), - typeKey = _ref16[0], - type = _ref16[1]; + Object.entries(supportedNestedCSSRuleTypes).forEach(function (_ref13) { + var _ref14 = record_slicedToArray(_ref13, 2), + typeKey = _ref14[0], + type = _ref14[1]; type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule; type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule; }); }); } -function initAdoptedStyleSheetObserver(_ref17, host2) { - var mirror2 = _ref17.mirror, - stylesheetManager = _ref17.stylesheetManager; +function initAdoptedStyleSheetObserver(_ref15, host2) { + var mirror2 = _ref15.mirror, + stylesheetManager = _ref15.stylesheetManager; var _a2, _b, _c; var hostId = null; if (host2.nodeName === "#document") hostId = mirror2.getId(host2);else hostId = mirror2.getId(index.host(host2)); @@ -19274,12 +18270,12 @@ function initAdoptedStyleSheetObserver(_ref17, host2) { }); }); } -function initStyleDeclarationObserver(_ref18, _ref19) { - var styleDeclarationCb = _ref18.styleDeclarationCb, - mirror2 = _ref18.mirror, - ignoreCSSAttributes = _ref18.ignoreCSSAttributes, - stylesheetManager = _ref18.stylesheetManager; - var win = _ref19.win; +function initStyleDeclarationObserver(_ref16, _ref17) { + var styleDeclarationCb = _ref16.styleDeclarationCb, + mirror2 = _ref16.mirror, + ignoreCSSAttributes = _ref16.ignoreCSSAttributes, + stylesheetManager = _ref16.stylesheetManager; + var win = _ref17.win; var setProperty = win.CSSStyleDeclaration.prototype.setProperty; win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, { apply: callbackWrapper(function (target, thisArg, argumentsList) { @@ -19341,13 +18337,13 @@ function initStyleDeclarationObserver(_ref18, _ref19) { win.CSSStyleDeclaration.prototype.removeProperty = removeProperty; }); } -function initMediaInteractionObserver(_ref20) { - var mediaInteractionCb = _ref20.mediaInteractionCb, - blockClass = _ref20.blockClass, - blockSelector = _ref20.blockSelector, - mirror2 = _ref20.mirror, - sampling = _ref20.sampling, - doc = _ref20.doc; +function initMediaInteractionObserver(_ref18) { + var mediaInteractionCb = _ref18.mediaInteractionCb, + blockClass = _ref18.blockClass, + blockSelector = _ref18.blockSelector, + mirror2 = _ref18.mirror, + sampling = _ref18.sampling, + doc = _ref18.doc; var handler = callbackWrapper(function (type) { return throttle(callbackWrapper(function (event) { var target = getEventTarget(event); @@ -19377,9 +18373,9 @@ function initMediaInteractionObserver(_ref20) { }); }); } -function initFontObserver(_ref21) { - var fontCb = _ref21.fontCb, - doc = _ref21.doc; +function initFontObserver(_ref19) { + var fontCb = _ref19.fontCb, + doc = _ref19.doc; var win = doc.defaultView; if (!win) { return function () {}; @@ -19454,9 +18450,9 @@ function initSelectionObserver(param) { updateSelection(); return on("selectionchange", updateSelection); } -function initCustomElementObserver(_ref22) { - var doc = _ref22.doc, - customElementCb = _ref22.customElementCb; +function initCustomElementObserver(_ref20) { + var doc = _ref20.doc, + customElementCb = _ref20.customElementCb; var win = doc.defaultView; if (!win || !win.customElements) return function () {}; var restoreHandler = patch(win.customElements, "define", function (original) { @@ -19606,17 +18602,17 @@ function initObservers(o2) { var selectionObserver = initSelectionObserver(o2); var customElementObserver = initCustomElementObserver(o2); var pluginHandlers = []; - var _iterator50 = record_createForOfIteratorHelper(o2.plugins), - _step50; + var _iterator48 = record_createForOfIteratorHelper(o2.plugins), + _step48; try { - for (_iterator50.s(); !(_step50 = _iterator50.n()).done;) { - var plugin3 = _step50.value; + for (_iterator48.s(); !(_step48 = _iterator48.n()).done;) { + var plugin3 = _step48.value; pluginHandlers.push(plugin3.observer(plugin3.callback, currentWindow, plugin3.options)); } } catch (err) { - _iterator50.e(err); + _iterator48.e(err); } finally { - _iterator50.f(); + _iterator48.f(); } return callbackWrapper(function () { mutationBuffers.forEach(function (b) { @@ -19672,11 +18668,11 @@ var CrossOriginIframeMirror = /*#__PURE__*/function () { }, { key: "getIds", value: function getIds(iframe, remoteId) { - var _this39 = this; + var _this37 = this; var idToRemoteIdMap = this.getIdToRemoteIdMap(iframe); var remoteIdToIdMap = this.getRemoteIdToIdMap(iframe); return remoteId.map(function (id) { - return _this39.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap); + return _this37.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap); }); } }, { @@ -19691,10 +18687,10 @@ var CrossOriginIframeMirror = /*#__PURE__*/function () { }, { key: "getRemoteIds", value: function getRemoteIds(iframe, ids) { - var _this40 = this; + var _this38 = this; var remoteIdToIdMap = this.getRemoteIdToIdMap(iframe); return ids.map(function (id) { - return _this40.getRemoteId(iframe, id, remoteIdToIdMap); + return _this38.getRemoteId(iframe, id, remoteIdToIdMap); }); } }, { @@ -19801,7 +18797,7 @@ var IframeManager = /*#__PURE__*/function () { }, { key: "transformCrossOriginEvent", value: function transformCrossOriginEvent(iframeEl, e2) { - var _this41 = this; + var _this39 = this; var _a2; switch (e2.type) { case EventType.FullSnapshot: @@ -19850,19 +18846,19 @@ var IframeManager = /*#__PURE__*/function () { case IncrementalSource.Mutation: { e2.data.adds.forEach(function (n2) { - _this41.replaceIds(n2, iframeEl, ["parentId", "nextId", "previousId"]); - _this41.replaceIdOnNode(n2.node, iframeEl); - var rootId = _this41.crossOriginIframeRootIdMap.get(iframeEl); - rootId && _this41.patchRootIdOnNode(n2.node, rootId); + _this39.replaceIds(n2, iframeEl, ["parentId", "nextId", "previousId"]); + _this39.replaceIdOnNode(n2.node, iframeEl); + var rootId = _this39.crossOriginIframeRootIdMap.get(iframeEl); + rootId && _this39.patchRootIdOnNode(n2.node, rootId); }); e2.data.removes.forEach(function (n2) { - _this41.replaceIds(n2, iframeEl, ["parentId", "id"]); + _this39.replaceIds(n2, iframeEl, ["parentId", "id"]); }); e2.data.attributes.forEach(function (n2) { - _this41.replaceIds(n2, iframeEl, ["id"]); + _this39.replaceIds(n2, iframeEl, ["id"]); }); e2.data.texts.forEach(function (n2) { - _this41.replaceIds(n2, iframeEl, ["id"]); + _this39.replaceIds(n2, iframeEl, ["id"]); }); return e2; } @@ -19871,7 +18867,7 @@ var IframeManager = /*#__PURE__*/function () { case IncrementalSource.MouseMove: { e2.data.positions.forEach(function (p) { - _this41.replaceIds(p, iframeEl, ["id"]); + _this39.replaceIds(p, iframeEl, ["id"]); }); return e2; } @@ -19902,7 +18898,7 @@ var IframeManager = /*#__PURE__*/function () { case IncrementalSource.Selection: { e2.data.ranges.forEach(function (range) { - _this41.replaceIds(range, iframeEl, ["start", "end"]); + _this39.replaceIds(range, iframeEl, ["start", "end"]); }); return e2; } @@ -19911,7 +18907,7 @@ var IframeManager = /*#__PURE__*/function () { this.replaceIds(e2.data, iframeEl, ["id"]); this.replaceStyleIds(e2.data, iframeEl, ["styleIds"]); (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach(function (style) { - _this41.replaceStyleIds(style, iframeEl, ["styleId"]); + _this39.replaceStyleIds(style, iframeEl, ["styleId"]); }); return e2; } @@ -19923,11 +18919,11 @@ var IframeManager = /*#__PURE__*/function () { }, { key: "replace", value: function replace(iframeMirror, obj, iframeEl, keys) { - var _iterator51 = record_createForOfIteratorHelper(keys), - _step51; + var _iterator49 = record_createForOfIteratorHelper(keys), + _step49; try { - for (_iterator51.s(); !(_step51 = _iterator51.n()).done;) { - var key = _step51.value; + for (_iterator49.s(); !(_step49 = _iterator49.n()).done;) { + var key = _step49.value; if (!Array.isArray(obj[key]) && typeof obj[key] !== "number") continue; if (Array.isArray(obj[key])) { obj[key] = iframeMirror.getIds(iframeEl, obj[key]); @@ -19936,9 +18932,9 @@ var IframeManager = /*#__PURE__*/function () { } } } catch (err) { - _iterator51.e(err); + _iterator49.e(err); } finally { - _iterator51.f(); + _iterator49.f(); } return obj; } @@ -19955,22 +18951,22 @@ var IframeManager = /*#__PURE__*/function () { }, { key: "replaceIdOnNode", value: function replaceIdOnNode(node2, iframeEl) { - var _this42 = this; + var _this40 = this; this.replaceIds(node2, iframeEl, ["id", "rootId"]); if ("childNodes" in node2) { node2.childNodes.forEach(function (child) { - _this42.replaceIdOnNode(child, iframeEl); + _this40.replaceIdOnNode(child, iframeEl); }); } } }, { key: "patchRootIdOnNode", value: function patchRootIdOnNode(node2, rootId) { - var _this43 = this; + var _this41 = this; if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId; if ("childNodes" in node2) { node2.childNodes.forEach(function (child) { - _this43.patchRootIdOnNode(child, rootId); + _this41.patchRootIdOnNode(child, rootId); }); } } @@ -20000,7 +18996,7 @@ var ShadowDomManager = /*#__PURE__*/function () { }, { key: "addShadowRoot", value: function addShadowRoot(shadowRoot2, doc) { - var _this44 = this; + var _this42 = this; if (!isNativeShadowDom(shadowRoot2)) return; if (this.shadowDoms.has(shadowRoot2)) return; this.shadowDoms.add(shadowRoot2); @@ -20021,10 +19017,10 @@ var ShadowDomManager = /*#__PURE__*/function () { mirror: this.mirror }))); setTimeout(function () { - if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0) _this44.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot2.adoptedStyleSheets, _this44.mirror.getId(index.host(shadowRoot2))); - _this44.restoreHandlers.push(initAdoptedStyleSheetObserver({ - mirror: _this44.mirror, - stylesheetManager: _this44.bypassOptions.stylesheetManager + if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0) _this42.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot2.adoptedStyleSheets, _this42.mirror.getId(index.host(shadowRoot2))); + _this42.restoreHandlers.push(initAdoptedStyleSheetObserver({ + mirror: _this42.mirror, + stylesheetManager: _this42.bypassOptions.stylesheetManager }, shadowRoot2)); }, 0); } @@ -20191,25 +19187,25 @@ var isInstanceOfWebGLObject = function isInstanceOfWebGLObject(value, win) { function initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) { var handlers = []; var props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype); - var _iterator52 = record_createForOfIteratorHelper(props2D), - _step52; + var _iterator50 = record_createForOfIteratorHelper(props2D), + _step50; try { var _loop3 = function _loop3() { - var prop = _step52.value; + var prop = _step50.value; try { if (typeof win.CanvasRenderingContext2D.prototype[prop] !== "function") { return 1; // continue } var restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) { return function () { - var _this45 = this; - for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) { - args[_key18] = arguments[_key18]; + var _this43 = this; + for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) { + args[_key16] = arguments[_key16]; } if (!isBlocked(this.canvas, blockClass, blockSelector, true)) { setTimeout(function () { - var recordArgs = serializeArgs(args, win, _this45); - cb(_this45.canvas, { + var recordArgs = serializeArgs(args, win, _this43); + cb(_this43.canvas, { type: CanvasContext["2D"], property: prop, args: recordArgs @@ -20220,7 +19216,7 @@ function initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) { }; }); handlers.push(restoreHandler); - } catch (_unused5) { + } catch (_unused6) { var hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, { set: function set(v2) { cb(this.canvas, { @@ -20234,13 +19230,13 @@ function initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) { handlers.push(hookHandler); } }; - for (_iterator52.s(); !(_step52 = _iterator52.n()).done;) { + for (_iterator50.s(); !(_step50 = _iterator50.n()).done;) { if (_loop3()) continue; } } catch (err) { - _iterator52.e(err); + _iterator50.e(err); } finally { - _iterator52.f(); + _iterator50.f(); } return function () { handlers.forEach(function (h) { @@ -20256,8 +19252,8 @@ function initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDr try { var restoreHandler = patch(win.HTMLCanvasElement.prototype, "getContext", function (original) { return function (contextType) { - for (var _len19 = arguments.length, args = new Array(_len19 > 1 ? _len19 - 1 : 0), _key19 = 1; _key19 < _len19; _key19++) { - args[_key19 - 1] = arguments[_key19]; + for (var _len17 = arguments.length, args = new Array(_len17 > 1 ? _len17 - 1 : 0), _key17 = 1; _key17 < _len17; _key17++) { + args[_key17 - 1] = arguments[_key17]; } if (!isBlocked(this, blockClass, blockSelector, true)) { var ctxName = getNormalizedContextName(contextType); @@ -20279,7 +19275,7 @@ function initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDr }; }); handlers.push(restoreHandler); - } catch (_unused6) { + } catch (_unused7) { console.error("failed to patch HTMLCanvasElement.prototype.getContext"); } return function () { @@ -20291,11 +19287,11 @@ function initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDr function patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) { var handlers = []; var props = Object.getOwnPropertyNames(prototype); - var _iterator53 = record_createForOfIteratorHelper(props), - _step53; + var _iterator51 = record_createForOfIteratorHelper(props), + _step51; try { var _loop4 = function _loop4() { - var prop = _step53.value; + var prop = _step51.value; if ( //prop.startsWith('get') || // e.g. getProgramParameter, but too risky ["isContextLost", "canvas", "drawingBufferWidth", "drawingBufferHeight"].includes(prop)) { @@ -20307,8 +19303,8 @@ function patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) { } var restoreHandler = patch(prototype, prop, function (original) { return function () { - for (var _len20 = arguments.length, args = new Array(_len20), _key20 = 0; _key20 < _len20; _key20++) { - args[_key20] = arguments[_key20]; + for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) { + args[_key18] = arguments[_key18]; } var result2 = original.apply(this, args); saveWebGLVar(result2, win, this); @@ -20325,7 +19321,7 @@ function patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) { }; }); handlers.push(restoreHandler); - } catch (_unused7) { + } catch (_unused8) { var hookHandler = hookSetter(prototype, prop, { set: function set(v2) { cb(this.canvas, { @@ -20340,14 +19336,14 @@ function patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) { } }, _ret; - for (_iterator53.s(); !(_step53 = _iterator53.n()).done;) { + for (_iterator51.s(); !(_step51 = _iterator51.n()).done;) { _ret = _loop4(); if (_ret === 0) continue; } } catch (err) { - _iterator53.e(err); + _iterator51.e(err); } finally { - _iterator53.f(); + _iterator51.f(); } return handlers; } @@ -20394,7 +19390,7 @@ function WorkerWrapper(options) { } var CanvasManager = /*#__PURE__*/function () { function CanvasManager(options) { - var _this46 = this; + var _this44 = this; record_classCallCheck(this, CanvasManager); __publicField(this, "pendingCanvasMutations", /* @__PURE__ */new Map()); __publicField(this, "rafStamps", { @@ -20407,12 +19403,12 @@ var CanvasManager = /*#__PURE__*/function () { __publicField(this, "frozen", false); __publicField(this, "locked", false); __publicField(this, "processMutation", function (target, mutation) { - var newFrame = _this46.rafStamps.invokeId && _this46.rafStamps.latestId !== _this46.rafStamps.invokeId; - if (newFrame || !_this46.rafStamps.invokeId) _this46.rafStamps.invokeId = _this46.rafStamps.latestId; - if (!_this46.pendingCanvasMutations.has(target)) { - _this46.pendingCanvasMutations.set(target, []); + var newFrame = _this44.rafStamps.invokeId && _this44.rafStamps.latestId !== _this44.rafStamps.invokeId; + if (newFrame || !_this44.rafStamps.invokeId) _this44.rafStamps.invokeId = _this44.rafStamps.latestId; + if (!_this44.pendingCanvasMutations.has(target)) { + _this44.pendingCanvasMutations.set(target, []); } - _this46.pendingCanvasMutations.get(target).push(mutation); + _this44.pendingCanvasMutations.get(target).push(mutation); }); var _options$sampling = options.sampling, sampling = _options$sampling === void 0 ? "all" : _options$sampling, @@ -20457,7 +19453,7 @@ var CanvasManager = /*#__PURE__*/function () { }, { key: "initCanvasFPSObserver", value: function initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) { - var _this47 = this; + var _this45 = this; var canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, true); var snapshotInProgressMap = /* @__PURE__ */new Map(); var worker = new WorkerWrapper(); @@ -20470,7 +19466,7 @@ var CanvasManager = /*#__PURE__*/function () { type = _e2$data.type, width = _e2$data.width, height = _e2$data.height; - _this47.mutationCb({ + _this45.mutationCb({ id: id, type: CanvasContext["2D"], commands: [{ @@ -20513,24 +19509,24 @@ var CanvasManager = /*#__PURE__*/function () { } lastSnapshotTime = timestamp; getCanvas().forEach(/*#__PURE__*/function () { - var _ref23 = record_asyncToGenerator(/*#__PURE__*/record_regeneratorRuntime().mark(function _callee3(canvas) { + var _ref21 = record_asyncToGenerator(/*#__PURE__*/record_regenerator().m(function _callee3(canvas) { var _a2, id, context, bitmap; - return record_regeneratorRuntime().wrap(function _callee3$(_context5) { - while (1) switch (_context5.prev = _context5.next) { + return record_regenerator().w(function (_context5) { + while (1) switch (_context5.n) { case 0: - id = _this47.mirror.getId(canvas); + id = _this45.mirror.getId(canvas); if (!snapshotInProgressMap.get(id)) { - _context5.next = 3; + _context5.n = 1; break; } - return _context5.abrupt("return"); - case 3: + return _context5.a(2); + case 1: if (!(canvas.width === 0 || canvas.height === 0)) { - _context5.next = 5; + _context5.n = 2; break; } - return _context5.abrupt("return"); - case 5: + return _context5.a(2); + case 2: snapshotInProgressMap.set(id, true); if (["webgl", "webgl2"].includes(canvas.__context)) { context = canvas.getContext(canvas.__context); @@ -20538,10 +19534,10 @@ var CanvasManager = /*#__PURE__*/function () { context.clear(context.COLOR_BUFFER_BIT); } } - _context5.next = 9; + _context5.n = 3; return createImageBitmap(canvas); - case 9: - bitmap = _context5.sent; + case 3: + bitmap = _context5.v; worker.postMessage({ id: id, bitmap: bitmap, @@ -20549,14 +19545,13 @@ var CanvasManager = /*#__PURE__*/function () { height: canvas.height, dataURLOptions: options.dataURLOptions }, [bitmap]); - case 11: - case "end": - return _context5.stop(); + case 4: + return _context5.a(2); } }, _callee3); })); return function (_x) { - return _ref23.apply(this, arguments); + return _ref21.apply(this, arguments); }; }()); rafId = requestAnimationFrame(_takeCanvasSnapshots); @@ -20584,17 +19579,17 @@ var CanvasManager = /*#__PURE__*/function () { }, { key: "startPendingCanvasMutationFlusher", value: function startPendingCanvasMutationFlusher() { - var _this48 = this; + var _this46 = this; requestAnimationFrame(function () { - return _this48.flushPendingCanvasMutations(); + return _this46.flushPendingCanvasMutations(); }); } }, { key: "startRAFTimestamping", value: function startRAFTimestamping() { - var _this49 = this; + var _this47 = this; var _setLatestRAFTimestamp = function setLatestRAFTimestamp(timestamp) { - _this49.rafStamps.latestId = timestamp; + _this47.rafStamps.latestId = timestamp; requestAnimationFrame(_setLatestRAFTimestamp); }; requestAnimationFrame(_setLatestRAFTimestamp); @@ -20602,13 +19597,13 @@ var CanvasManager = /*#__PURE__*/function () { }, { key: "flushPendingCanvasMutations", value: function flushPendingCanvasMutations() { - var _this50 = this; + var _this48 = this; this.pendingCanvasMutations.forEach(function (_values, canvas) { - var id = _this50.mirror.getId(canvas); - _this50.flushPendingCanvasMutationFor(canvas, id); + var id = _this48.mirror.getId(canvas); + _this48.flushPendingCanvasMutationFor(canvas, id); }); requestAnimationFrame(function () { - return _this50.flushPendingCanvasMutations(); + return _this48.flushPendingCanvasMutations(); }); } }, { @@ -20668,21 +19663,21 @@ var StylesheetManager = /*#__PURE__*/function () { }, { key: "adoptStyleSheets", value: function adoptStyleSheets(sheets, hostId) { - var _this51 = this; + var _this49 = this; if (sheets.length === 0) return; var adoptedStyleSheetData = { id: hostId, styleIds: [] }; var styles = []; - var _iterator54 = record_createForOfIteratorHelper(sheets), - _step54; + var _iterator52 = record_createForOfIteratorHelper(sheets), + _step52; try { var _loop5 = function _loop5() { - var sheet = _step54.value; + var sheet = _step52.value; var styleId; - if (!_this51.styleMirror.has(sheet)) { - styleId = _this51.styleMirror.add(sheet); + if (!_this49.styleMirror.has(sheet)) { + styleId = _this49.styleMirror.add(sheet); styles.push({ styleId: styleId, rules: Array.from(sheet.rules || CSSRule, function (r2, index2) { @@ -20692,16 +19687,16 @@ var StylesheetManager = /*#__PURE__*/function () { }; }) }); - } else styleId = _this51.styleMirror.getId(sheet); + } else styleId = _this49.styleMirror.getId(sheet); adoptedStyleSheetData.styleIds.push(styleId); }; - for (_iterator54.s(); !(_step54 = _iterator54.n()).done;) { + for (_iterator52.s(); !(_step52 = _iterator52.n()).done;) { _loop5(); } } catch (err) { - _iterator54.e(err); + _iterator52.e(err); } finally { - _iterator54.f(); + _iterator52.f(); } if (styles.length > 0) adoptedStyleSheetData.styles = styles; this.adoptedStyleSheetCb(adoptedStyleSheetData); @@ -20735,12 +19730,12 @@ var ProcessedNodeManager = /*#__PURE__*/function () { }, { key: "add", value: function add(node2, buffer) { - var _this52 = this; + var _this50 = this; if (!this.active) { this.active = true; requestAnimationFrame(function () { - _this52.nodeMap = /* @__PURE__ */new WeakMap(); - _this52.active = false; + _this50.nodeMap = /* @__PURE__ */new WeakMap(); + _this50.active = false; }); } this.nodeMap.set(node2, (this.nodeMap.get(node2) || /* @__PURE__ */new Set()).add(buffer)); @@ -20862,38 +19857,24 @@ function record() { } : _maskInputOptions !== void 0 ? _maskInputOptions : { password: true }; - var slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === "all" ? { - script: true, - comment: true, - headFavicon: true, - headWhitespace: true, - headMetaSocial: true, - headMetaRobots: true, - headMetaHttpEquiv: true, - headMetaVerification: true, - // the following are off for slimDOMOptions === true, - // as they destroy some (hidden) info: - headMetaAuthorship: _slimDOMOptions === "all", - headMetaDescKeywords: _slimDOMOptions === "all", - headTitleMutations: _slimDOMOptions === "all" - } : _slimDOMOptions ? _slimDOMOptions : {}; + var slimDOMOptions = slimDOMDefaults(_slimDOMOptions); polyfill$1(); var lastFullSnapshotEvent; var incrementalSnapshotCount = 0; var eventProcessor = function eventProcessor(e2) { - var _iterator55 = record_createForOfIteratorHelper(plugins || []), - _step55; + var _iterator53 = record_createForOfIteratorHelper(plugins || []), + _step53; try { - for (_iterator55.s(); !(_step55 = _iterator55.n()).done;) { - var plugin3 = _step55.value; + for (_iterator53.s(); !(_step53 = _iterator53.n()).done;) { + var plugin3 = _step53.value; if (plugin3.eventProcessor) { e2 = plugin3.eventProcessor(e2); } } } catch (err) { - _iterator55.e(err); + _iterator53.e(err); } finally { - _iterator55.f(); + _iterator53.f(); } if (packFn && // Disable packing events which will be emitted to parent frames. @@ -20980,11 +19961,11 @@ function record() { recordCrossOriginIframes: recordCrossOriginIframes, wrappedEmit: wrappedEmit }); - var _iterator56 = record_createForOfIteratorHelper(plugins || []), - _step56; + var _iterator54 = record_createForOfIteratorHelper(plugins || []), + _step54; try { - for (_iterator56.s(); !(_step56 = _iterator56.n()).done;) { - var plugin3 = _step56.value; + for (_iterator54.s(); !(_step54 = _iterator54.n()).done;) { + var plugin3 = _step54.value; if (plugin3.getMirror) plugin3.getMirror({ nodeMirror: mirror, crossOriginIframeMirror: iframeManager.crossOriginIframeMirror, @@ -20992,9 +19973,9 @@ function record() { }); } } catch (err) { - _iterator56.e(err); + _iterator54.e(err); } finally { - _iterator56.f(); + _iterator54.f(); } var processedNodeManager = new ProcessedNodeManager(); canvasManager = new CanvasManager({ @@ -21246,7 +20227,7 @@ function record() { handlers.push(observe(document)); recording = true; }; - if (document.readyState === "interactive" || document.readyState === "complete") { + if (["interactive", "complete"].includes(document.readyState)) { init(); } else { handlers.push(on("DOMContentLoaded", function () { @@ -21265,8 +20246,15 @@ function record() { }, window)); } return function () { - handlers.forEach(function (h) { - return h(); + handlers.forEach(function (handler) { + try { + handler(); + } catch (error) { + var msg = String(error).toLowerCase(); + if (!msg.includes("cross-origin")) { + console.warn(error); + } + } }); processedNodeManager.destroy(); recording = false; @@ -21400,6 +20388,125 @@ var types_NodeType = /* @__PURE__ */function (NodeType2) { return NodeType2; }(types_NodeType || {}); +;// ./src/browser/replay/checkoutWatchdog.js +function checkoutWatchdog_typeof(o) { "@babel/helpers - typeof"; return checkoutWatchdog_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, checkoutWatchdog_typeof(o); } +function checkoutWatchdog_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function checkoutWatchdog_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, checkoutWatchdog_toPropertyKey(o.key), o); } } +function checkoutWatchdog_createClass(e, r, t) { return r && checkoutWatchdog_defineProperties(e.prototype, r), t && checkoutWatchdog_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function checkoutWatchdog_defineProperty(e, r, t) { return (r = checkoutWatchdog_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function checkoutWatchdog_toPropertyKey(t) { var i = checkoutWatchdog_toPrimitive(t, "string"); return "symbol" == checkoutWatchdog_typeof(i) ? i : i + ""; } +function checkoutWatchdog_toPrimitive(t, r) { if ("object" != checkoutWatchdog_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != checkoutWatchdog_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + + +/** + * Schedules forced rrweb checkouts when the recorder has been idle too long. + * + * Recorder notifies the watchdog whenever rrweb performs a checkout. If + * another checkout doesn't happen within the configured window, the watchdog + * calls `forceCheckout` so buffers stay within max pre-duration limits. + */ +var CheckoutWatchdog = /*#__PURE__*/function () { + /** + * @param {Object} params + * @param {() => number} params.getIntervalMs - Returns checkout interval + * @param {() => void} params.forceCheckout - Invoked to force a checkout + * @param {number} [params.marginMs] - Safety margin before forcing checkout, default: 1000ms + * @param {() => number} [params.now] - Clock function (primarily for tests), default: Date.now + */ + function CheckoutWatchdog(_ref) { + var getIntervalMs = _ref.getIntervalMs, + forceCheckout = _ref.forceCheckout, + _ref$marginMs = _ref.marginMs, + marginMs = _ref$marginMs === void 0 ? 1000 : _ref$marginMs, + _ref$now = _ref.now, + now = _ref$now === void 0 ? function () { + return Date.now(); + } : _ref$now; + checkoutWatchdog_classCallCheck(this, CheckoutWatchdog); + checkoutWatchdog_defineProperty(this, "_getIntervalMs", void 0); + checkoutWatchdog_defineProperty(this, "_forceCheckout", void 0); + checkoutWatchdog_defineProperty(this, "_marginMs", void 0); + checkoutWatchdog_defineProperty(this, "_now", void 0); + checkoutWatchdog_defineProperty(this, "_timerId", null); + checkoutWatchdog_defineProperty(this, "_lastCheckoutAt", null); + checkoutWatchdog_defineProperty(this, "_running", false); + this._getIntervalMs = getIntervalMs; + this._forceCheckout = forceCheckout; + this._marginMs = marginMs; + this._now = now; + } + return checkoutWatchdog_createClass(CheckoutWatchdog, [{ + key: "start", + value: function start() { + if (this._running) return; + this._running = true; + this._lastCheckoutAt = this._now(); + this._arm(); + } + }, { + key: "stop", + value: function stop() { + if (!this._running) return; + this._running = false; + this._lastCheckoutAt = null; + this._clearTimer(); + } + + /** + * Notifies the watchdog that rrweb just performed a checkout. + * + * @param {number} [timestamp] - Timestamp of checkout (ms) + */ + }, { + key: "notify", + value: function notify() { + var timestamp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._now(); + if (!this._running) return; + this._lastCheckoutAt = timestamp; + this._arm(); + } + }, { + key: "_arm", + value: function _arm() { + var _this = this; + this._clearTimer(); + if (!this._running) return; + var delay = this._getIntervalMs() + this._marginMs; + this._timerId = setTimeout(function () { + return _this._maybeForceCheckout(); + }, delay); + } + }, { + key: "_maybeForceCheckout", + value: function _maybeForceCheckout() { + var _this$_lastCheckoutAt; + if (!this._running) return; + var interval = this._getIntervalMs(); + var lastCheckoutAt = (_this$_lastCheckoutAt = this._lastCheckoutAt) !== null && _this$_lastCheckoutAt !== void 0 ? _this$_lastCheckoutAt : this._now(); + var delta = this._now() - lastCheckoutAt; + if (delta < interval) { + this._arm(); + return; + } + try { + this._forceCheckout(); + } catch (error) { + src_logger.error('Replay: Forced checkout failed', error); + } + this._lastCheckoutAt = this._now(); + this._arm(); + } + }, { + key: "_clearTimer", + value: function _clearTimer() { + if (this._timerId) { + clearTimeout(this._timerId); + this._timerId = null; + } + } + }]); +}(); + ;// ./src/browser/replay/recorder.js var recorder_excluded = ["enabled", "autoStart", "maxPreDuration", "debug", "emit", "checkoutEveryNms"]; function recorder_typeof(o) { "@babel/helpers - typeof"; return recorder_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, recorder_typeof(o); } @@ -21421,6 +20528,8 @@ function recorder_toPrimitive(t, r) { if ("object" != recorder_typeof(t) || !t) + + /** @typedef {import('./recorder.js').BufferCursor} BufferCursor */ var Recorder = /*#__PURE__*/function () { /** @@ -21428,13 +20537,17 @@ var Recorder = /*#__PURE__*/function () { * * @param {Object} options - Configuration options for the recorder */ - function Recorder(options) { + function Recorder() { + var _this$_recordFn, + _this = this; + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; recorder_classCallCheck(this, Recorder); recorder_defineProperty(this, "_options", void 0); recorder_defineProperty(this, "_rrwebOptions", void 0); recorder_defineProperty(this, "_isReady", false); recorder_defineProperty(this, "_stopFn", null); recorder_defineProperty(this, "_recordFn", void 0); + recorder_defineProperty(this, "_checkoutWatchdog", void 0); /** A two-slot ring buffer for storing events. */ recorder_defineProperty(this, "_buffers", [[], []]); /** Active slot index (0|1). Stores new events until next checkout. */ @@ -21443,6 +20556,17 @@ var Recorder = /*#__PURE__*/function () { // Tests inject a custom rrweb record function or mock. this._recordFn = options.recordFn || record; + if (!isFunction((_this$_recordFn = this._recordFn) === null || _this$_recordFn === void 0 ? void 0 : _this$_recordFn.takeFullSnapshot)) { + throw new Error('Recorder requires a valid rrweb record function'); + } + this._checkoutWatchdog = new CheckoutWatchdog({ + getIntervalMs: function getIntervalMs() { + return _this.checkoutEveryNms(); + }, + forceCheckout: function forceCheckout() { + return _this._recordFn.takeFullSnapshot(true); + } + }); } return recorder_createClass(Recorder, [{ key: "_previousSlot", @@ -21475,8 +20599,8 @@ var Recorder = /*#__PURE__*/function () { autoStart = newOptions.autoStart, maxPreDuration = newOptions.maxPreDuration, debug = newOptions.debug, - emit = newOptions.emit, - checkoutEveryNms = newOptions.checkoutEveryNms, + _emit = newOptions.emit, + _checkoutEveryNms = newOptions.checkoutEveryNms, rrwebOptions = recorder_objectWithoutProperties(newOptions, recorder_excluded); this._options = { enabled: enabled, @@ -21569,35 +20693,37 @@ var Recorder = /*#__PURE__*/function () { }, { key: "start", value: function start() { - var _this = this; + var _this2 = this; if (this.isRecording || this.options.enabled === false) { return; } this.clear(); this._stopFn = this._recordFn(recorder_objectSpread({ emit: function emit(event, isCheckout) { - var _this$options$debug; - if (!_this._isReady && event.type === types_EventType.FullSnapshot) { - _this._isReady = true; + var _this2$options$debug; + if (!_this2._isReady && event.type === types_EventType.FullSnapshot) { + _this2._isReady = true; } - if ((_this$options$debug = _this.options.debug) !== null && _this$options$debug !== void 0 && _this$options$debug.logEmits) { + if ((_this2$options$debug = _this2.options.debug) !== null && _this2$options$debug !== void 0 && _this2$options$debug.logEmits) { Recorder._logEvent(event, isCheckout); } if (isCheckout && event.type === types_EventType.Meta) { - _this._currentSlot = _this._previousSlot; - _this._buffers[_this._currentSlot] = []; + _this2._currentSlot = _this2._previousSlot; + _this2._buffers[_this2._currentSlot] = []; + _this2._checkoutWatchdog.notify(event.timestamp); } - _this._buffers[_this._currentSlot].push(event); + _this2._buffers[_this2._currentSlot].push(event); }, checkoutEveryNms: this.checkoutEveryNms(), errorHandler: function errorHandler(error) { - var _this$options$debug2; - if ((_this$options$debug2 = _this.options.debug) !== null && _this$options$debug2 !== void 0 && _this$options$debug2.logErrors) { + var _this2$options$debug2; + if ((_this2$options$debug2 = _this2.options.debug) !== null && _this2$options$debug2 !== void 0 && _this2$options$debug2.logErrors) { src_logger.error('Error during replay recording', error); } return true; // swallow the error instead of throwing it to the window } }, this._rrwebOptions)); + this._checkoutWatchdog.start(); return this; } }, { @@ -21609,6 +20735,7 @@ var Recorder = /*#__PURE__*/function () { this._stopFn(); this._stopFn = null; this._isReady = false; + this._checkoutWatchdog.stop(); return this; } }, { @@ -21617,6 +20744,7 @@ var Recorder = /*#__PURE__*/function () { this._buffers = [[], []]; this._currentSlot = 0; this._isReady = false; + this._checkoutWatchdog.stop(); } /** @@ -21649,14 +20777,14 @@ var Recorder = /*#__PURE__*/function () { }, { key: "_collectEventsFromCursor", value: function _collectEventsFromCursor(cursor) { - var _this$_buffers$cursor, _this$options$debug3; + var _this$_buffers$cursor, _this$options$debug; var currentSlot = this._currentSlot; var capturedBuffer = (_this$_buffers$cursor = this._buffers[cursor.slot]) !== null && _this$_buffers$cursor !== void 0 ? _this$_buffers$cursor : []; var currentBuffer = this._buffers[currentSlot]; var head = capturedBuffer.slice(Math.max(0, cursor.offset + 1)); var tail = cursor.slot === currentSlot ? [] : currentBuffer; var events = head.concat(tail); - if ((_this$options$debug3 = this.options.debug) !== null && _this$options$debug3 !== void 0 && _this$options$debug3.logErrors) { + if ((_this$options$debug = this.options.debug) !== null && _this$options$debug !== void 0 && _this$options$debug.logErrors) { if (cursor.slot !== currentSlot && head.length === 0) { src_logger.warn('Captured lead buffer cleared by multiple checkouts'); } @@ -21911,7 +21039,7 @@ var ReplayPredicates = /*#__PURE__*/function () { value: function isSampled(trigger, context) { var _trigger$samplingRati; var ratio = (_trigger$samplingRati = trigger.samplingRatio) !== null && _trigger$samplingRati !== void 0 ? _trigger$samplingRati : 1; - if (ratio == 1) { + if (ratio === 1) { return true; } var rv = context.replayId.slice(-14); @@ -21921,55 +21049,60 @@ var ReplayPredicates = /*#__PURE__*/function () { }]); }(); -;// ./src/browser/replay/scheduledCapture.js -function scheduledCapture_typeof(o) { "@babel/helpers - typeof"; return scheduledCapture_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, scheduledCapture_typeof(o); } -function scheduledCapture_regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ scheduledCapture_regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == scheduledCapture_typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(scheduledCapture_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } -function scheduledCapture_asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } -function scheduledCapture_asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { scheduledCapture_asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { scheduledCapture_asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } -function scheduledCapture_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function scheduledCapture_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, scheduledCapture_toPropertyKey(o.key), o); } } -function scheduledCapture_createClass(e, r, t) { return r && scheduledCapture_defineProperties(e.prototype, r), t && scheduledCapture_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function scheduledCapture_defineProperty(e, r, t) { return (r = scheduledCapture_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function scheduledCapture_toPropertyKey(t) { var i = scheduledCapture_toPrimitive(t, "string"); return "symbol" == scheduledCapture_typeof(i) ? i : i + ""; } -function scheduledCapture_toPrimitive(t, r) { if ("object" != scheduledCapture_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != scheduledCapture_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +;// ./src/browser/replay/scheduledStreamCapture.js +function scheduledStreamCapture_typeof(o) { "@babel/helpers - typeof"; return scheduledStreamCapture_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, scheduledStreamCapture_typeof(o); } +function scheduledStreamCapture_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = scheduledStreamCapture_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function scheduledStreamCapture_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return scheduledStreamCapture_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? scheduledStreamCapture_arrayLikeToArray(r, a) : void 0; } } +function scheduledStreamCapture_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function scheduledStreamCapture_regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return scheduledStreamCapture_regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (scheduledStreamCapture_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, scheduledStreamCapture_regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, scheduledStreamCapture_regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), scheduledStreamCapture_regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", scheduledStreamCapture_regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), scheduledStreamCapture_regeneratorDefine2(u), scheduledStreamCapture_regeneratorDefine2(u, o, "Generator"), scheduledStreamCapture_regeneratorDefine2(u, n, function () { return this; }), scheduledStreamCapture_regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (scheduledStreamCapture_regenerator = function _regenerator() { return { w: i, m: f }; })(); } +function scheduledStreamCapture_regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } scheduledStreamCapture_regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { scheduledStreamCapture_regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, scheduledStreamCapture_regeneratorDefine2(e, r, n, t); } +function scheduledStreamCapture_asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } +function scheduledStreamCapture_asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { scheduledStreamCapture_asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { scheduledStreamCapture_asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } +function scheduledStreamCapture_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function scheduledStreamCapture_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, scheduledStreamCapture_toPropertyKey(o.key), o); } } +function scheduledStreamCapture_createClass(e, r, t) { return r && scheduledStreamCapture_defineProperties(e.prototype, r), t && scheduledStreamCapture_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function scheduledStreamCapture_defineProperty(e, r, t) { return (r = scheduledStreamCapture_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function scheduledStreamCapture_toPropertyKey(t) { var i = scheduledStreamCapture_toPrimitive(t, "string"); return "symbol" == scheduledStreamCapture_typeof(i) ? i : i + ""; } +function scheduledStreamCapture_toPrimitive(t, r) { if ("object" != scheduledStreamCapture_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != scheduledStreamCapture_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /** @typedef {import('./recorder.js').BufferCursor} BufferCursor */ /** @typedef {import('./recorder.js').Recorder} Recorder */ /** - * A utility for coordinating delayed, cursor-based captures. + * A utility for coordinating streaming, cursor-based captures over extended + * durations. * - * Manages timer-based capture scheduling, buffer cursor stability across - * checkouts, and payload preparation. Used primarily for capturing events - * that occur after a trigger (leading replays), but the implementation is - * generic and could be used for any delayed capture scenario. + * Unlike ScheduledCapture (single delayed export), this class exports multiple + * chunks at intervals to prevent event loss during long postDuration windows. + * Chunks are queued during capture and sent sequentially after coordination + * requirements are met. */ -var ScheduledCapture = /*#__PURE__*/(/* unused pure expression or super */ null && (function () { +var ScheduledStreamCapture = /*#__PURE__*/function () { /** - * Creates a new ScheduledCapture instance + * Creates a new ScheduledStreamCapture instance * * @param {Object} props - Configuration object * @param {Object} props.recorder - Recorder instance for capturing events * @param {Object} props.tracing - Tracing instance for span management * @param {Object} props.telemeter - Optional telemeter for telemetry spans * @param {Function} props.shouldSend - Function to check if replay can be sent - * @param {Function} props.onComplete - Function to call when leading capture completes + * @param {Function} props.onComplete - Function to call when capture completes */ - function ScheduledCapture(_ref) { + function ScheduledStreamCapture(_ref) { var recorder = _ref.recorder, tracing = _ref.tracing, telemeter = _ref.telemeter, shouldSend = _ref.shouldSend, onComplete = _ref.onComplete; - scheduledCapture_classCallCheck(this, ScheduledCapture); + scheduledStreamCapture_classCallCheck(this, ScheduledStreamCapture); /** @type {Recorder} */ - scheduledCapture_defineProperty(this, "_recorder", void 0); - scheduledCapture_defineProperty(this, "_tracing", void 0); - scheduledCapture_defineProperty(this, "_telemeter", void 0); - scheduledCapture_defineProperty(this, "_pending", new Map()); - scheduledCapture_defineProperty(this, "_shouldSend", void 0); - scheduledCapture_defineProperty(this, "_onComplete", void 0); + scheduledStreamCapture_defineProperty(this, "_recorder", void 0); + scheduledStreamCapture_defineProperty(this, "_tracing", void 0); + scheduledStreamCapture_defineProperty(this, "_telemeter", void 0); + scheduledStreamCapture_defineProperty(this, "_pending", new Map()); + scheduledStreamCapture_defineProperty(this, "_shouldSend", void 0); + scheduledStreamCapture_defineProperty(this, "_onComplete", void 0); this._recorder = recorder; this._tracing = tracing; this._telemeter = telemeter; @@ -21978,1096 +21111,2162 @@ var ScheduledCapture = /*#__PURE__*/(/* unused pure expression or super */ null } /** - * Schedules the capture of leading replay events after a delay. + * Schedules streaming chunk captures over the specified duration. * - * Captures a buffer cursor at the time of scheduling, which remains stable - * even as the buffer continues to receive events. When the timer fires, - * events after this cursor position are exported as the leading replay. + * Starts a periodic interval that exports chunks at safe intervals to + * prevent event loss during buffer checkouts. Chunks are queued for later + * sequential sending. * * @param {string} replayId - The replay ID * @param {string} occurrenceUuid - The occurrence UUID - * @param {number} seconds - Number of seconds to wait before capturing + * @param {number} postDuration - Duration in seconds to capture */ - return scheduledCapture_createClass(ScheduledCapture, [{ + return scheduledStreamCapture_createClass(ScheduledStreamCapture, [{ key: "schedule", - value: function schedule(replayId, occurrenceUuid, seconds) { + value: function schedule(replayId, occurrenceUuid, postDuration) { var _this = this; + var startTime = Date.now(); + var endAt = startTime + postDuration * 1000; + var chunkMs = this._recorder.checkoutEveryNms(); var cursor = this._recorder.bufferCursor(); - var timerId = setTimeout(/*#__PURE__*/scheduledCapture_asyncToGenerator(/*#__PURE__*/scheduledCapture_regeneratorRuntime().mark(function _callee() { - return scheduledCapture_regeneratorRuntime().wrap(function _callee$(_context) { - while (1) switch (_context.prev = _context.next) { + var intervalId = setInterval(function () { + _this._export(replayId); + }, chunkMs); + var endTimerId = setTimeout(function () { + _this._finalExport(replayId); + }, postDuration * 1000); + this._pending.set(replayId, { + intervalId: intervalId, + endTimerId: endTimerId, + startTime: startTime, + endAt: endAt, + postDuration: postDuration, + occurrenceUuid: occurrenceUuid, + cursor: cursor, + chunkQueue: [], + sending: false, + aborted: false, + finished: false + }); + } + + /** + * Exports a chunk and adds it to the send queue. + * + * Called periodically by the interval timer. Captures events from the last + * cursor position to current, exports as a span, and queues the payload. + * Stops the interval when postDuration is exceeded. + * + * @param {string} replayId - The replay ID + * @private + */ + }, { + key: "_export", + value: (function () { + var _export2 = scheduledStreamCapture_asyncToGenerator(/*#__PURE__*/scheduledStreamCapture_regenerator().m(function _callee(replayId) { + var _this$_telemeter; + var ctx, before, after, payload, _t; + return scheduledStreamCapture_regenerator().w(function (_context) { + while (1) switch (_context.p = _context.n) { case 0: - try { - _this._export(replayId, occurrenceUuid, cursor); - _this.sendIfReady(replayId); - } catch (error) { - logger.error('Error during leading replay processing:', error); + ctx = this._pending.get(replayId); + if (!(!ctx || ctx.aborted || ctx.finished || Date.now() >= ctx.endAt)) { + _context.n = 1; + break; + } + return _context.a(2); + case 1: + before = ctx.cursor; + after = this._recorder.bufferCursor(); + _context.p = 2; + this._recorder.exportRecordingSpan(this._tracing, { + 'rollbar.replay.id': replayId, + 'rollbar.occurrence.uuid': ctx.occurrenceUuid + }, before); + _context.n = 4; + break; + case 3: + _context.p = 3; + _t = _context.v; + src_logger.debug('Error exporting leading chunk (tick):', _t); + return _context.a(2); + case 4: + (_this$_telemeter = this._telemeter) === null || _this$_telemeter === void 0 || _this$_telemeter.exportTelemetrySpan({ + 'rollbar.replay.id': replayId + }); + payload = this._tracing.exporter.toPayload(); + ctx.chunkQueue.push({ + payload: payload, + cursor: before + }); + ctx.cursor = after; + _context.n = 5; + return this.sendIfReady(replayId); + case 5: + return _context.a(2); + } + }, _callee, this, [[2, 3]]); + })); + function _export(_x) { + return _export2.apply(this, arguments); + } + return _export; + }()) + }, { + key: "_finalExport", + value: function () { + var _finalExport2 = scheduledStreamCapture_asyncToGenerator(/*#__PURE__*/scheduledStreamCapture_regenerator().m(function _callee2(replayId) { + var ctx, before, after, _this$_telemeter2, payload, _this$_onComplete; + return scheduledStreamCapture_regenerator().w(function (_context2) { + while (1) switch (_context2.n) { + case 0: + ctx = this._pending.get(replayId); + if (!(!ctx || ctx.aborted)) { + _context2.n = 1; + break; + } + return _context2.a(2); + case 1: + if (ctx.intervalId) clearInterval(ctx.intervalId); + if (ctx.endTimerId) clearTimeout(ctx.endTimerId); + ctx.finished = true; + before = ctx.cursor; + after = this._recorder.bufferCursor(); + try { + this._recorder.exportRecordingSpan(this._tracing, { + 'rollbar.replay.id': replayId, + 'rollbar.occurrence.uuid': ctx.occurrenceUuid + }, before); + (_this$_telemeter2 = this._telemeter) === null || _this$_telemeter2 === void 0 || _this$_telemeter2.exportTelemetrySpan({ + 'rollbar.replay.id': replayId + }); + payload = this._tracing.exporter.toPayload(); + ctx.chunkQueue.push({ + payload: payload, + cursor: before + }); + ctx.cursor = after; + } catch (error) { + // TODO(matux): No events probably, this is expected, be more graceful. + src_logger.debug('Error exporting leading chunk (final):', error); + } + if (!(!ctx.sending && ctx.chunkQueue.length === 0)) { + _context2.n = 2; + break; + } + this._pending.delete(replayId); + (_this$_onComplete = this._onComplete) === null || _this$_onComplete === void 0 || _this$_onComplete.call(this, replayId); + return _context2.a(2); + case 2: + _context2.n = 3; + return this.sendIfReady(replayId); + case 3: + return _context2.a(2); + } + }, _callee2, this); + })); + function _finalExport(_x2) { + return _finalExport2.apply(this, arguments); + } + return _finalExport; + }() + /** + * Sends queued chunks if ready and coordination allows it. + * + * Called by Replay after trailing replay succeeds. Sends chunks + * sequentially, waiting for each to complete before sending the next. If any + * chunk fails to send, aborts the entire stream. + * + * @param {string} replayId - The replay ID + * @returns {Promise} + */ + }, { + key: "sendIfReady", + value: (function () { + var _sendIfReady = scheduledStreamCapture_asyncToGenerator(/*#__PURE__*/scheduledStreamCapture_regenerator().m(function _callee3(replayId) { + var ctx, _this$_onComplete2, _iterator, _step, chunk, _this$_onComplete3, _t2, _t3; + return scheduledStreamCapture_regenerator().w(function (_context3) { + while (1) switch (_context3.p = _context3.n) { + case 0: + ctx = this._pendingContextIfReady(replayId); + if (ctx) { + _context3.n = 1; + break; + } + return _context3.a(2); + case 1: + if (!(ctx.finished && !ctx.sending && ctx.chunkQueue.length === 0)) { + _context3.n = 2; + break; + } + this._pending.delete(replayId); + (_this$_onComplete2 = this._onComplete) === null || _this$_onComplete2 === void 0 || _this$_onComplete2.call(this, replayId); + return _context3.a(2); + case 2: + ctx.sending = true; + _iterator = scheduledStreamCapture_createForOfIteratorHelper(ctx.chunkQueue); + _context3.p = 3; + _iterator.s(); + case 4: + if ((_step = _iterator.n()).done) { + _context3.n = 10; + break; + } + chunk = _step.value; + if (!ctx.aborted) { + _context3.n = 5; + break; + } + return _context3.a(3, 10); + case 5: + if (this._shouldSend(replayId)) { + _context3.n = 6; + break; + } + src_logger.error('Coordination check failed during chunk send'); + this.discard(replayId); + throw new Error('Coordination check failed during chunk send'); + case 6: + _context3.p = 6; + _context3.n = 7; + return this._tracing.exporter.post(chunk.payload, { + 'X-Rollbar-Replay-Id': replayId + }); + case 7: + _context3.n = 9; + break; + case 8: + _context3.p = 8; + _t2 = _context3.v; + src_logger.error('Failed to send leading replay:', _t2); + this.discard(replayId); + throw _t2; + case 9: + _context3.n = 4; + break; + case 10: + _context3.n = 12; + break; + case 11: + _context3.p = 11; + _t3 = _context3.v; + _iterator.e(_t3); + case 12: + _context3.p = 12; + _iterator.f(); + return _context3.f(12); + case 13: + ctx.sending = false; + ctx.chunkQueue = []; + if (ctx.finished) { + this._pending.delete(replayId); + (_this$_onComplete3 = this._onComplete) === null || _this$_onComplete3 === void 0 || _this$_onComplete3.call(this, replayId); + } + case 14: + return _context3.a(2); + } + }, _callee3, this, [[6, 8], [3, 11, 12, 13]]); + })); + function sendIfReady(_x3) { + return _sendIfReady.apply(this, arguments); + } + return sendIfReady; + }() + /** + * Aborts the streaming capture and cleans up all state. + * + * Stops the interval timer, discards all queued chunks, and marks the + * capture as aborted. This is called on send failures or explicit discard. + * + * @param {string} replayId - The replay ID to abort + */ + ) + }, { + key: "discard", + value: function discard(replayId) { + var _this$_onComplete4; + var ctx = this._pending.get(replayId); + if (!ctx) return; + ctx.aborted = true; + if (ctx.intervalId) clearInterval(ctx.intervalId); + if (ctx.endTimerId) clearTimeout(ctx.endTimerId); + ctx.chunkQueue = []; + this._pending.delete(replayId); + (_this$_onComplete4 = this._onComplete) === null || _this$_onComplete4 === void 0 || _this$_onComplete4.call(this, replayId); + } + + /** + * Returns the pending context for the given replayId if it's ready to be sent. + * + * @param {string} replayId - The replay ID + * @returns {Object|null} The pending context if ready, otherwise null + */ + }, { + key: "_pendingContextIfReady", + value: function _pendingContextIfReady(replayId) { + var ctx = this._pending.get(replayId); + return ctx && !ctx.aborted && !ctx.sending && ctx.chunkQueue.length > 0 && this._shouldSend(replayId) ? ctx : null; + } + }]); +}(); + +;// ./src/browser/replay/replay.js +function replay_typeof(o) { "@babel/helpers - typeof"; return replay_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, replay_typeof(o); } +function replay_slicedToArray(r, e) { return replay_arrayWithHoles(r) || replay_iterableToArrayLimit(r, e) || replay_unsupportedIterableToArray(r, e) || replay_nonIterableRest(); } +function replay_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function replay_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return replay_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? replay_arrayLikeToArray(r, a) : void 0; } } +function replay_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function replay_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } +function replay_arrayWithHoles(r) { if (Array.isArray(r)) return r; } +function replay_regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return replay_regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (replay_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, replay_regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, replay_regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), replay_regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", replay_regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), replay_regeneratorDefine2(u), replay_regeneratorDefine2(u, o, "Generator"), replay_regeneratorDefine2(u, n, function () { return this; }), replay_regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (replay_regenerator = function _regenerator() { return { w: i, m: f }; })(); } +function replay_regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } replay_regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { replay_regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, replay_regeneratorDefine2(e, r, n, t); } +function replay_asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } +function replay_asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { replay_asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { replay_asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } +function replay_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function replay_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? replay_ownKeys(Object(t), !0).forEach(function (r) { replay_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : replay_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +function replay_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function replay_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, replay_toPropertyKey(o.key), o); } } +function replay_createClass(e, r, t) { return r && replay_defineProperties(e.prototype, r), t && replay_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function replay_defineProperty(e, r, t) { return (r = replay_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function replay_toPropertyKey(t) { var i = replay_toPrimitive(t, "string"); return "symbol" == replay_typeof(i) ? i : i + ""; } +function replay_toPrimitive(t, r) { if ("object" != replay_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != replay_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } + + + + + + + + +/** @typedef {import('./recorder.js').BufferCursor} BufferCursor */ +/** @typedef {import('./recorder.js').Recorder} Recorder */ + +/** + * Enum for tracking the status of trailing replay sends. + * Used to coordinate between trailing and leading replay captures. + */ +var TrailingStatus = Object.freeze({ + PENDING: 'pending', + // Trailing not yet sent + SENT: 'sent', + // Trailing successfully sent + FAILED: 'failed', + // Trailing failed to send + SKIPPED: 'skipped' // Trailing was skipped (replay is leading only) +}); + +/** + * Replay - Manages the mapping between error occurrences and their associated + * session recordings. This class handles the coordination between when recordings + * are dumped and when they are eventually sent to the backend. + */ +var Replay = /*#__PURE__*/function () { + /** + * Creates a new Replay instance + * + * @param {Object} [props.tracing] - The tracing instance used to create spans and manage context + * @param {Object} [props.telemeter] - Optional telemeter instance for capturing telemetry events + * @param {Object} [props.options] - Configuration options + */ + function Replay(_ref) { + var tracing = _ref.tracing, + telemeter = _ref.telemeter, + options = _ref.options; + replay_classCallCheck(this, Replay); + replay_defineProperty(this, "_map", void 0); + replay_defineProperty(this, "_options", void 0); + /** @type {Recorder} */ + replay_defineProperty(this, "_recorder", void 0); + replay_defineProperty(this, "_tracing", void 0); + replay_defineProperty(this, "_telemeter", void 0); + replay_defineProperty(this, "_scheduledCapture", void 0); + replay_defineProperty(this, "_trailingStatus", void 0); + if (!tracing) { + throw new TypeError("Expected 'tracing' to be provided"); + } + this._map = new Map(); + this._options = options; + this._predicates = new ReplayPredicates(options); + this._recorder = new Recorder(replay_objectSpread(replay_objectSpread({}, options), {}, { + maxPreDuration: this._predicates.maxPreDuration + })); + this._tracing = tracing; + this._telemeter = telemeter; + this._trailingStatus = new Map(); + this._scheduledCapture = new ScheduledStreamCapture({ + recorder: this._recorder, + tracing: this._tracing, + telemeter: this._telemeter, + shouldSend: this._shouldSendScheduled.bind(this), + onComplete: this._onScheduledComplete.bind(this) + }); + this._tracing.addSpanTransform(this.uuidsTransform.bind(this)); + } + + /** + * Called when a scheduled capture completes (sent or discarded). + * Cleans up the trailing status coordination state. + * + * @param {string} replayId - The replay ID + * @private + */ + return replay_createClass(Replay, [{ + key: "_onScheduledComplete", + value: function _onScheduledComplete(replayId) { + this._trailingStatus.delete(replayId); + } + + /** + * Determines if a scheduled replay should be sent based on coordination state. + * + * Scheduled replays can only be sent after the trailing replay has been + * successfully sent or explicitly skipped (for leading-only captures). + * + * @param {string} replayId - The replay ID + * @returns {boolean} True if scheduled replay can be sent + * @private + */ + }, { + key: "_shouldSendScheduled", + value: function _shouldSendScheduled(replayId) { + var status = this._trailingStatus.get(replayId); + return status === TrailingStatus.SENT || status === TrailingStatus.SKIPPED; + } + }, { + key: "configure", + value: function configure(options) { + this._options = options; + this._predicates.configure(options); + this._recorder.configure(replay_objectSpread(replay_objectSpread({}, options), {}, { + maxPreDuration: this._predicates.maxPreDuration + })); + } + + /** + * Exports recording and telemetry spans, then stores the tracing payload in the map. + * + * Exports both telemetry and recording spans, then generates the complete payload + * using the tracing exporter and stores it in the map using replayId as the key. + * This is an async operation that runs in the background. + * + * @param {string} replayId - The unique ID for this replay + * @param {string} occurrenceUuid - The UUID of the associated error occurrence + * @private + */ + }, { + key: "_exportSpansAndAddTracingPayload", + value: (function () { + var _exportSpansAndAddTracingPayload2 = replay_asyncToGenerator(/*#__PURE__*/replay_regenerator().m(function _callee(replayId, occurrenceUuid, trigger, triggerContext) { + var _this$_telemeter; + var payload, leadingSeconds, _t; + return replay_regenerator().w(function (_context) { + while (1) switch (_context.p = _context.n) { + case 0: + _context.p = 0; + this._recorder.exportRecordingSpan(this._tracing, { + 'rollbar.replay.id': replayId, + 'rollbar.occurrence.uuid': occurrenceUuid, + 'rollbar.replay.trigger.type': trigger.type, + 'rollbar.replay.trigger.context': JSON.stringify(triggerContext), + 'rollbar.replay.trigger': JSON.stringify(trigger), + 'rollbar.replay.url.full': sanitizeHref(window.location.href), + 'rollbar.replay.options': JSON.stringify(this._options || {}) + }); + _context.n = 2; + break; + case 1: + _context.p = 1; + _t = _context.v; + // TODO(matux): No events probably, this is expected, be more graceful. + src_logger.debug('Error exporting recording span:', _t); + return _context.a(2); + case 2: + (_this$_telemeter = this._telemeter) === null || _this$_telemeter === void 0 || _this$_telemeter.exportTelemetrySpan({ + 'rollbar.replay.id': replayId + }); + payload = this._tracing.exporter.toPayload(); + this._map.set(replayId, payload); + leadingSeconds = (trigger === null || trigger === void 0 ? void 0 : trigger.postDuration) || 0; + if (leadingSeconds > 0) { + this._scheduledCapture.schedule(replayId, occurrenceUuid, leadingSeconds); + this._trailingStatus.set(replayId, TrailingStatus.PENDING); + } + case 3: + return _context.a(2); + } + }, _callee, this, [[0, 1]]); + })); + function _exportSpansAndAddTracingPayload(_x, _x2, _x3, _x4) { + return _exportSpansAndAddTracingPayload2.apply(this, arguments); + } + return _exportSpansAndAddTracingPayload; + }() + /** + * Captures a replay and returns a uniquely generated replay ID. + * + * This method immediately returns the replayId and asynchronously processes + * the replay data in the background. The processing involves converting + * recorder events into a payload format and storing it in the map. + * + * @returns {string} A unique identifier for this replay + */ + ) + }, { + key: "capture", + value: function capture(replayId, occurrenceUuid, triggerContext) { + if (!this._recorder.isReady) { + src_logger.warn('Replay.capture: Recorder is not ready, cannot export replay'); + return null; + } + replayId = replayId || id.gen(8); + + /* + * trigger.preDuration and trigger.postDuration are the requested capture + * durations for the trigger. The recorder buffers have been configured to + * handle the max preDuration across all triggers. + */ + var trigger = this._predicates.shouldCaptureForTriggerContext(replay_objectSpread(replay_objectSpread({}, triggerContext), {}, { + replayId: replayId + })); + if (!trigger) { + return null; + } + + // Start processing the replay in the background + this._exportSpansAndAddTracingPayload(replayId, occurrenceUuid, trigger, triggerContext); + return replayId; + } + + /** + * On a matching trigger condition, captures and sends a replay. + * This method handles the non-occurrence based triggers, which don't require + * special occurrence-specific handling. + * + * @returns {string} A unique identifier for this replay or null if not sent. + */ + }, { + key: "triggerReplay", + value: (function () { + var _triggerReplay = replay_asyncToGenerator(/*#__PURE__*/replay_regenerator().m(function _callee2(triggerContext) { + var replayId, trigger, _this$_recorder$optio, leadingSeconds, _t2; + return replay_regenerator().w(function (_context2) { + while (1) switch (_context2.p = _context2.n) { + case 0: + replayId = id.gen(8); + trigger = this._predicates.shouldCaptureForTriggerContext(replay_objectSpread(replay_objectSpread({}, triggerContext), {}, { + replayId: replayId + })); + if (trigger) { + _context2.n = 1; + break; + } + return _context2.a(2, null); + case 1: + if (!this._recorder.isReady) { + _context2.n = 3; + break; + } + _context2.n = 2; + return this._exportSpansAndAddTracingPayload(replayId, null, trigger, triggerContext); + case 2: + _context2.n = 4; + break; + case 3: + // If the recorder is not ready, mark the trailing capture as skipped and + // allow the leading capture to proceed. + this._trailingStatus.set(replayId, TrailingStatus.SKIPPED); + leadingSeconds = ((_this$_recorder$optio = this._recorder.options) === null || _this$_recorder$optio === void 0 ? void 0 : _this$_recorder$optio.postDuration) || 0; + if (leadingSeconds > 0) { + this._scheduledCapture.schedule(replayId, null, leadingSeconds); + } + case 4: + _context2.p = 4; + _context2.n = 5; + return this.send(replayId); + case 5: + _context2.n = 7; + break; + case 6: + _context2.p = 6; + _t2 = _context2.v; + this.discard(replayId); + return _context2.a(2, null); + case 7: + return _context2.a(2, replayId); + } + }, _callee2, this, [[4, 6]]); + })); + function triggerReplay(_x5) { + return _triggerReplay.apply(this, arguments); + } + return triggerReplay; + }() + /** + * Determines if a replay can be sent based on API response and headers. + * + * @param {Error|null} err - Any error that occurred during the API request + * @param {Object|null} resp - The API response object + * @param {Object|null} hs - The response headers + * @returns {boolean} true if the replay can be sent, false otherwise. + * @private + */ + ) + }, { + key: "sendOrDiscardReplay", + value: ( + /** + * Sends or discards a replay based on whether it can be sent. + * + * The criteria for sending a replay are: + * - No error occurred during the API request + * - The response indicates success (err === 0) + * - Replay is enabled on the server + * - Rate limit quota is not exhausted + * + * Called by Queue after determining replay eligibility from API response. + * + * @param {string} replayId - The ID of the replay to send or discard + * @param {Error|null} err - Any error that occurred during the API request + * @param {Object|null} resp - The API response object + * @param {Object|null} headers - The response headers + * @returns {Promise} A promise that resolves when the operation is complete + */ + function () { + var _sendOrDiscardReplay = replay_asyncToGenerator(/*#__PURE__*/replay_regenerator().m(function _callee3(replayId, err, resp, headers) { + var canSendReplay, _t3; + return replay_regenerator().w(function (_context3) { + while (1) switch (_context3.p = _context3.n) { + case 0: + canSendReplay = Replay._canSendReplay(err, resp, headers); + if (!canSendReplay) { + _context3.n = 5; + break; + } + _context3.p = 1; + _context3.n = 2; + return this.send(replayId); + case 2: + _context3.n = 4; + break; + case 3: + _context3.p = 3; + _t3 = _context3.v; + src_logger.error('Failed to send replay:', _t3); + this.discard(replayId); + case 4: + _context3.n = 6; + break; + case 5: + this.discard(replayId); + case 6: + return _context3.a(2); + } + }, _callee3, this, [[1, 3]]); + })); + function sendOrDiscardReplay(_x6, _x7, _x8, _x9) { + return _sendOrDiscardReplay.apply(this, arguments); + } + return sendOrDiscardReplay; + }() + /** + * Sends the replay payload associated with the given replayId to the backend + * and removes it from the map. + * + * Retrieves the payload from the map, checks if it's valid, then sends it + * to the API endpoint for processing. The payload can be either a spans array + * or a formatted OTLP payload object. + * + * @param {string} replayId - The ID of the replay to send + * @returns {Promise} A promise that resolves to true if the payload was found and sent, false otherwise + */ + ) + }, { + key: "send", + value: (function () { + var _send = replay_asyncToGenerator(/*#__PURE__*/replay_regenerator().m(function _callee4(replayId) { + var payload, isEmpty; + return replay_regenerator().w(function (_context4) { + while (1) switch (_context4.n) { + case 0: + if (replayId) { + _context4.n = 1; + break; + } + throw Error('Replay.send: No replayId provided'); + case 1: + if (this._map.has(replayId)) { + _context4.n = 2; + break; + } + throw Error("Replay.send: No replay found for id: ".concat(replayId)); + case 2: + payload = this._map.get(replayId); + this._map.delete(replayId); + + // Check if payload is empty (could be raw spans array or OTLP payload) + isEmpty = !payload || Array.isArray(payload) && payload.length === 0 || payload.resourceSpans && payload.resourceSpans.length === 0; + if (!isEmpty) { + _context4.n = 3; + break; + } + throw Error("Replay.send: No payload found for id: ".concat(replayId)); + case 3: + _context4.n = 4; + return this._tracing.exporter.post(payload, { + 'X-Rollbar-Replay-Id': replayId + }); + case 4: + this._trailingStatus.set(replayId, TrailingStatus.SENT); + _context4.n = 5; + return this._scheduledCapture.sendIfReady(replayId); + case 5: + return _context4.a(2); + } + }, _callee4, this); + })); + function send(_x0) { + return _send.apply(this, arguments); + } + return send; + }() + /** + * Discards the replay associated with the given replay ID by removing + * it from the map without sending it. + * + * @param {string} replayId - The ID of the replay to discard + * @returns {boolean} True if a replay was found and discarded, false otherwise + */ + ) + }, { + key: "discard", + value: function discard(replayId) { + if (!replayId) { + src_logger.error('Replay.discard: No replayId provided'); + return false; + } + this._trailingStatus.set(replayId, TrailingStatus.FAILED); + this._scheduledCapture.discard(replayId); + if (!this._map.has(replayId)) { + src_logger.error("Replay.discard: No replay found for replayId: ".concat(replayId)); + return false; + } + this._map.delete(replayId); + this._trailingStatus.delete(replayId); + return true; + } + }, { + key: "uuidsTransform", + value: function uuidsTransform(span) { + var startTime = hrtime.toMillis(span.startTime); + var uuidEvents = this._telemeter.queue.filter(function (e) { + return e.timestamp_ms >= startTime && e.uuid; + }); + var uuids = uuidEvents.map(function (e) { + return e.uuid; + }); + span.attributes['rollbar.occurrence.uuids'] = JSON.stringify(uuids); + } + + /** + * Gets spans for the given replay ID + * + * @param {string} replayId - The ID to retrieve spans for + * @returns {Array|null} The spans array or null if not found + */ + }, { + key: "getSpans", + value: function getSpans(replayId) { + var _this$_map$get; + return (_this$_map$get = this._map.get(replayId)) !== null && _this$_map$get !== void 0 ? _this$_map$get : null; + } + + /** + * Sets spans for a given replay ID + * + * @param {string} replayId - The ID to set spans for + * @param {Array} spans - The spans to set + */ + }, { + key: "setSpans", + value: function setSpans(replayId, spans) { + this._map.set(replayId, spans); + } + + /** + * Clears all stored replays without sending them + */ + }, { + key: "clear", + value: function clear() { + this._map.clear(); + } + + /** + * Returns the size of the map (number of stored replays) + * + * @returns {number} The number of replays currently stored + */ + }, { + key: "size", + get: function get() { + return this._map.size; + } + + /** + * Returns the Recorder instance used by this manager + * + * @returns {Recorder} The Recorder instance + */ + }, { + key: "recorder", + get: function get() { + return this._recorder; + } + }], [{ + key: "_canSendReplay", + value: function _canSendReplay(err, resp, hs) { + if (!hs) return false; + var hasNoErrors = !err && (resp === null || resp === void 0 ? void 0 : resp.err) === 0; + var headers = Object.fromEntries(Object.entries(hs).map(function (_ref2) { + var _ref3 = replay_slicedToArray(_ref2, 2), + k = _ref3[0], + v = _ref3[1]; + return [k.toLowerCase(), String(v).trim()]; + })); + var headersAreValid = headers['rollbar-replay-enabled'] === 'true' && headers['rollbar-replay-ratelimit-remaining'] !== '0'; + return hasNoErrors && headersAreValid; + } + }]); +}(); + +;// ./src/utility/headers.js + + +/* + * headers - Detect when fetch Headers are undefined and use a partial polyfill. + * + * A full polyfill is not used in order to keep package size as small as possible. + * Since this is only used internally and is not added to the window object, + * the full interface doesn't need to be supported. + * + * This implementation is modified from whatwg-fetch: + * https://github.com/github/fetch + */ +function headers(headers) { + if (typeof Headers === 'undefined') { + return new FetchHeaders(headers); + } + return new Headers(headers); +} +function normalizeName(name) { + if (typeof name !== 'string') { + name = String(name); + } + return name.toLowerCase(); +} +function normalizeValue(value) { + if (typeof value !== 'string') { + value = String(value); + } + return value; +} +function iteratorFor(items) { + var iterator = { + next: function next() { + var value = items.shift(); + return { + done: value === undefined, + value: value + }; + } + }; + return iterator; +} +function FetchHeaders(headers) { + this.map = {}; + if (headers instanceof FetchHeaders) { + headers.forEach(function (value, name) { + this.append(name, value); + }, this); + } else if (Array.isArray(headers)) { + headers.forEach(function (header) { + this.append(header[0], header[1]); + }, this); + } else if (headers) { + Object.getOwnPropertyNames(headers).forEach(function (name) { + this.append(name, headers[name]); + }, this); + } +} +FetchHeaders.prototype.append = function (name, value) { + name = normalizeName(name); + value = normalizeValue(value); + var oldValue = this.map[name]; + this.map[name] = oldValue ? oldValue + ', ' + value : value; +}; +FetchHeaders.prototype.get = function (name) { + name = normalizeName(name); + return this.has(name) ? this.map[name] : null; +}; +FetchHeaders.prototype.has = function (name) { + return hasOwn(this.map, normalizeName(name)); +}; +FetchHeaders.prototype.forEach = function (callback, thisArg) { + for (var name in this.map) { + if (hasOwn(this.map, name)) { + callback.call(thisArg, this.map[name], name, this); + } + } +}; +FetchHeaders.prototype.entries = function () { + var items = []; + this.forEach(function (value, name) { + items.push([name, value]); + }); + return iteratorFor(items); +}; +/* harmony default export */ var utility_headers = (headers); +;// ./src/utility/replace.js +function replace(obj, name, replacement, replacements, type) { + var orig = obj[name]; + obj[name] = replacement(orig); + if (replacements) { + replacements[type].push([obj, name, orig]); + } +} +/* harmony default export */ var utility_replace = (replace); +;// ./src/browser/domUtility.js +function domUtility_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = domUtility_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function domUtility_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return domUtility_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? domUtility_arrayLikeToArray(r, a) : void 0; } } +function domUtility_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function getElementType(e) { + return (e.getAttribute('type') || '').toLowerCase(); +} +function isDescribedElement(element, type, subtypes) { + if (element.tagName.toLowerCase() !== type.toLowerCase()) { + return false; + } + if (!subtypes) { + return true; + } + var elementType = getElementType(element); + var _iterator = domUtility_createForOfIteratorHelper(subtypes), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var subtype = _step.value; + if (subtype === elementType) { + return true; + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return false; +} +function getElementFromEvent(evt, doc) { + if (evt.target) { + return evt.target; + } + if (doc && doc.elementFromPoint) { + return doc.elementFromPoint(evt.clientX, evt.clientY); + } + return undefined; +} +function treeToArray(elem) { + var MAX_HEIGHT = 5; + var out = []; + var nextDescription; + for (var height = 0; elem && height < MAX_HEIGHT; height++) { + nextDescription = describeElement(elem); + if (!nextDescription || nextDescription.tagName === 'html') { + break; + } + out.unshift(nextDescription); + elem = elem.parentNode; + } + return out; +} +function elementArrayToString(a) { + var MAX_LENGTH = 80; + var separator = ' > ', + separatorLength = separator.length; + var out = [], + len = 0, + nextStr, + totalLength; + for (var i = a.length - 1; i >= 0; i--) { + nextStr = descriptionToString(a[i]); + totalLength = len + out.length * separatorLength + nextStr.length; + if (i < a.length - 1 && totalLength >= MAX_LENGTH + 3) { + out.unshift('...'); + break; + } + out.unshift(nextStr); + len += nextStr.length; + } + return out.join(separator); +} +function elementString(elem) { + return elementArrayToString(treeToArray(elem)); +} +function descriptionToString(desc) { + if (!desc || !desc.tagName) { + return ''; + } + var out = [desc.tagName]; + if (desc.id) { + out.push('#' + desc.id); + } + if (desc.classes) { + out.push('.' + desc.classes.join('.')); + } + var _iterator2 = domUtility_createForOfIteratorHelper(desc.attributes), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var attribute = _step2.value; + out.push('[' + attribute.key + '="' + attribute.value + '"]'); + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + return out.join(''); +} + +/** + * Input: a dom element + * Output: null if tagName is falsey or input is falsey, else + * { + * tagName: String, + * id: String | undefined, + * classes: [String] | undefined, + * attributes: [ + * { + * key: OneOf(type, name, title, alt), + * value: String + * } + * ] + * } + */ +function describeElement(elem) { + if (!elem || !elem.tagName) { + return null; + } + var out = {}, + className; + out.tagName = elem.tagName.toLowerCase(); + if (elem.id) { + out.id = elem.id; + } + className = elem.className; + if (className && typeof className === 'string') { + out.classes = className.split(/\s+/); + } + var attributes = ['type', 'name', 'title', 'alt']; + out.attributes = []; + for (var _i = 0, _attributes = attributes; _i < _attributes.length; _i++) { + var attribute = _attributes[_i]; + var attr = elem.getAttribute(attribute); + if (attr) { + out.attributes.push({ + key: attribute, + value: attr + }); + } + } + return out; +} + +/* + * Detects if the given element matches any of the given class names (string or regex), + * or CSS selectors. + * @param {HTMLElement} element - The DOM element to check. + * @param {Array} classes - An array of class names (string or regex) to match against. + * @param {Array} selectors - An array of CSS selectors to match against. + * @return {boolean} - True if the element matches any of the classes or selectors, false otherwise. + */ +function isMatchingElement(element, classes, selectors) { + try { + var _iterator3 = domUtility_createForOfIteratorHelper(classes), + _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var cls = _step3.value; + if (typeof cls === 'string') { + if (element.classList.contains(cls)) { + return true; + } + } else { + var _iterator5 = domUtility_createForOfIteratorHelper(element.classList), + _step5; + try { + for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { + var c = _step5.value; + if (cls.test(c)) { + return true; + } + } + } catch (err) { + _iterator5.e(err); + } finally { + _iterator5.f(); + } + } + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + var _iterator4 = domUtility_createForOfIteratorHelper(selectors), + _step4; + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + var sel = _step4.value; + if (element.matches(sel)) { + return true; + } + } + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); + } + } catch (_e) { + // ignore errors from invalid arguments + } + return false; +} + +;// ./src/browser/telemetry.js +function browser_telemetry_typeof(o) { "@babel/helpers - typeof"; return browser_telemetry_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, browser_telemetry_typeof(o); } +function telemetry_toConsumableArray(r) { return telemetry_arrayWithoutHoles(r) || telemetry_iterableToArray(r) || telemetry_unsupportedIterableToArray(r) || telemetry_nonIterableSpread(); } +function telemetry_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function telemetry_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } +function telemetry_arrayWithoutHoles(r) { if (Array.isArray(r)) return telemetry_arrayLikeToArray(r); } +function telemetry_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function telemetry_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, telemetry_toPropertyKey(o.key), o); } } +function telemetry_createClass(e, r, t) { return r && telemetry_defineProperties(e.prototype, r), t && telemetry_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function telemetry_defineProperty(e, r, t) { return (r = telemetry_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function telemetry_toPropertyKey(t) { var i = telemetry_toPrimitive(t, "string"); return "symbol" == browser_telemetry_typeof(i) ? i : i + ""; } +function telemetry_toPrimitive(t, r) { if ("object" != browser_telemetry_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != browser_telemetry_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function telemetry_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = telemetry_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function telemetry_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return telemetry_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? telemetry_arrayLikeToArray(r, a) : void 0; } } +function telemetry_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +/* eslint-disable @typescript-eslint/no-this-alias */ +// TODO(matux): refactor to remove no-this-alias disable + + + + + + + + +var telemetry_defaults = { + network: true, + networkResponseHeaders: false, + networkResponseBody: false, + networkRequestHeaders: false, + networkRequestBody: false, + networkErrorOnHttp5xx: false, + networkErrorOnHttp4xx: false, + networkErrorOnHttp0: false, + log: true, + dom: true, + navigation: true, + connectivity: true, + contentSecurityPolicy: true, + errorOnContentSecurityPolicy: false +}; +function restore(replacements, type) { + var b; + while (replacements[type].length) { + b = replacements[type].shift(); + b[0][b[1]] = b[2]; + } +} +function nameFromDescription(description) { + if (!description || !description.attributes) { + return null; + } + var attrs = description.attributes; + var _iterator = telemetry_createForOfIteratorHelper(attrs), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var a = _step.value; + if (a.key === 'name') { + return a.value; + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return null; +} +function defaultValueScrubber(scrubFields) { + var patterns = []; + var _iterator2 = telemetry_createForOfIteratorHelper(scrubFields), + _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var field = _step2.value; + patterns.push(new RegExp(field, 'i')); + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + return function (description) { + var name = nameFromDescription(description); + if (!name) { + return false; + } + for (var _i = 0, _patterns = patterns; _i < _patterns.length; _i++) { + var p = _patterns[_i]; + if (p.test(name)) { + return true; + } + } + return false; + }; +} +var Instrumenter = /*#__PURE__*/function () { + function Instrumenter(options, telemeter, rollbar, _window, _document) { + telemetry_classCallCheck(this, Instrumenter); + telemetry_defineProperty(this, "deinstrumentConnectivity", function () { + this.removeListeners('connectivity'); + }); + this.options = options; + var autoInstrument = options.autoInstrument; + if (options.enabled === false || autoInstrument === false) { + this.autoInstrument = {}; + } else { + if (!isType(autoInstrument, 'object')) { + autoInstrument = telemetry_defaults; + } + this.autoInstrument = merge(telemetry_defaults, autoInstrument); + } + this.configureScrubbing(); + this.telemeter = telemeter; + this.rollbar = rollbar; + this.diagnostic = rollbar.client.notifier.diagnostic; + this._window = _window || {}; + this._document = _document || {}; + this.replacements = { + network: [], + log: [], + navigation: [], + connectivity: [] + }; + this.eventRemovers = { + dom: [], + connectivity: [], + contentsecuritypolicy: [] + }; + this._location = this._window.location; + this._lastHref = this._location && this._location.href; + } + return telemetry_createClass(Instrumenter, [{ + key: "configureScrubbing", + value: function configureScrubbing() { + var _options$scrubTelemet, _options$replay, _options$replay2, _options$replay3, _options$replay4, _options$replay5, _options$replay6, _options$replay7, _options$replay8, _options$replay9; + var options = this.options; + this.scrubTelemetryInputs = Boolean((_options$scrubTelemet = options.scrubTelemetryInputs) !== null && _options$scrubTelemet !== void 0 ? _options$scrubTelemet : (_options$replay = options.replay) === null || _options$replay === void 0 ? void 0 : _options$replay.maskAllInputs); + this.telemetryScrubber = options.telemetryScrubber; + this.defaultValueScrubber = defaultValueScrubber(options.scrubFields); + this.maskInputFn = (_options$replay2 = options.replay) === null || _options$replay2 === void 0 ? void 0 : _options$replay2.maskInputFn; + this.maskInputOptions = ((_options$replay3 = options.replay) === null || _options$replay3 === void 0 ? void 0 : _options$replay3.maskInputOptions) || {}; + this.scrubClasses = [(_options$replay4 = options.replay) === null || _options$replay4 === void 0 ? void 0 : _options$replay4.blockClass, (_options$replay5 = options.replay) === null || _options$replay5 === void 0 ? void 0 : _options$replay5.ignoreClass, (_options$replay6 = options.replay) === null || _options$replay6 === void 0 ? void 0 : _options$replay6.maskTextClass].filter(Boolean); + this.scrubSelectors = [(_options$replay7 = options.replay) === null || _options$replay7 === void 0 ? void 0 : _options$replay7.blockSelector, (_options$replay8 = options.replay) === null || _options$replay8 === void 0 ? void 0 : _options$replay8.ignoreSelector, (_options$replay9 = options.replay) === null || _options$replay9 === void 0 ? void 0 : _options$replay9.maskTextSelector].filter(Boolean); + } + }, { + key: "configure", + value: function configure(options) { + this.options = merge(this.options, options); + var autoInstrument = options.autoInstrument; + var oldSettings = merge(this.autoInstrument); + if (options.enabled === false || autoInstrument === false) { + this.autoInstrument = {}; + } else { + if (!isType(autoInstrument, 'object')) { + autoInstrument = telemetry_defaults; + } + this.autoInstrument = merge(telemetry_defaults, autoInstrument); + } + this.configureScrubbing(); + this.instrument(oldSettings); + } + + // eslint-disable-next-line complexity + }, { + key: "instrument", + value: function instrument(oldSettings) { + if (this.autoInstrument.network && !(oldSettings && oldSettings.network)) { + this.instrumentNetwork(); + } else if (!this.autoInstrument.network && oldSettings && oldSettings.network) { + this.deinstrumentNetwork(); + } + if (this.autoInstrument.log && !(oldSettings && oldSettings.log)) { + this.instrumentConsole(); + } else if (!this.autoInstrument.log && oldSettings && oldSettings.log) { + this.deinstrumentConsole(); + } + if (this.autoInstrument.dom && !(oldSettings && oldSettings.dom)) { + this.instrumentDom(); + } else if (!this.autoInstrument.dom && oldSettings && oldSettings.dom) { + this.deinstrumentDom(); + } + if (this.autoInstrument.navigation && !(oldSettings && oldSettings.navigation)) { + this.instrumentNavigation(); + } else if (!this.autoInstrument.navigation && oldSettings && oldSettings.navigation) { + this.deinstrumentNavigation(); + } + if (this.autoInstrument.connectivity && !(oldSettings && oldSettings.connectivity)) { + this.instrumentConnectivity(); + } else if (!this.autoInstrument.connectivity && oldSettings && oldSettings.connectivity) { + this.deinstrumentConnectivity(); + } + if (this.autoInstrument.contentSecurityPolicy && !(oldSettings && oldSettings.contentSecurityPolicy)) { + this.instrumentContentSecurityPolicy(); + } else if (!this.autoInstrument.contentSecurityPolicy && oldSettings && oldSettings.contentSecurityPolicy) { + this.deinstrumentContentSecurityPolicy(); + } + } + }, { + key: "deinstrumentNetwork", + value: function deinstrumentNetwork() { + restore(this.replacements, 'network'); + } + }, { + key: "instrumentNetwork", + value: function instrumentNetwork() { + var self = this; + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + utility_replace(xhr, prop, function (orig) { + return self.rollbar.wrap(orig); + }); + } + } + if ('XMLHttpRequest' in this._window) { + var xhrp = this._window.XMLHttpRequest.prototype; + utility_replace(xhrp, 'open', function (orig) { + return function (method, url) { + var isUrlObject = _isUrlObject(url); + if (isType(url, 'string') || isUrlObject) { + url = isUrlObject ? url.toString() : url; + if (this.__rollbar_xhr) { + this.__rollbar_xhr.method = method; + this.__rollbar_xhr.url = url; + this.__rollbar_xhr.status_code = null; + this.__rollbar_xhr.start_time_ms = now(); + this.__rollbar_xhr.end_time_ms = null; + } else { + this.__rollbar_xhr = { + method: method, + url: url, + status_code: null, + start_time_ms: now(), + end_time_ms: null + }; + } + } + return orig.apply(this, arguments); + }; + }, this.replacements, 'network'); + utility_replace(xhrp, 'setRequestHeader', function (orig) { + return function (header, value) { + // If xhr.open is async, __rollbar_xhr may not be initialized yet. + if (!this.__rollbar_xhr) { + this.__rollbar_xhr = {}; + } + if (isType(header, 'string') && isType(value, 'string')) { + if (self.autoInstrument.networkRequestHeaders) { + if (!this.__rollbar_xhr.request_headers) { + this.__rollbar_xhr.request_headers = {}; + } + this.__rollbar_xhr.request_headers[header] = value; + } + // We want the content type even if request header telemetry is off. + if (header.toLowerCase() === 'content-type') { + this.__rollbar_xhr.request_content_type = value; + } + } + return orig.apply(this, arguments); + }; + }, this.replacements, 'network'); + utility_replace(xhrp, 'send', function (orig) { + return function (data) { + var xhr = this; + function onreadystatechangeHandler() { + if (xhr.__rollbar_xhr) { + if (xhr.__rollbar_xhr.status_code === null) { + xhr.__rollbar_xhr.status_code = 0; + if (self.autoInstrument.networkRequestBody) { + xhr.__rollbar_xhr.request = data; + } + xhr.__rollbar_event = self.captureNetwork(xhr.__rollbar_xhr, 'xhr', undefined); + } + if (xhr.readyState < 2) { + xhr.__rollbar_xhr.start_time_ms = now(); + } + if (xhr.readyState > 3) { + var end_time_ms = now(); + xhr.__rollbar_xhr.end_time_ms = end_time_ms; + var _headers = null; + xhr.__rollbar_xhr.response_content_type = xhr.getResponseHeader('Content-Type'); + if (self.autoInstrument.networkResponseHeaders) { + var headersConfig = self.autoInstrument.networkResponseHeaders; + _headers = {}; + try { + var header; + if (headersConfig === true) { + var allHeaders = xhr.getAllResponseHeaders(); + if (allHeaders) { + var arr = allHeaders.trim().split(/[\r\n]+/); + var parts, value; + var _iterator3 = telemetry_createForOfIteratorHelper(arr), + _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var h = _step3.value; + parts = h.split(': '); + header = parts.shift(); + value = parts.join(': '); + _headers[header] = value; + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + } + } else { + var _iterator4 = telemetry_createForOfIteratorHelper(headersConfig), + _step4; + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + var _h = _step4.value; + _headers[_h] = xhr.getResponseHeader(_h); + } + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); + } + } + } catch (_e) { + /* we ignore the errors here that could come from different + * browser issues with the xhr methods */ + } + } + var body = null; + if (self.autoInstrument.networkResponseBody) { + try { + body = xhr.responseText; + } catch (_e) { + /* ignore errors from reading responseText */ + } + } + var response = null; + if (body || _headers) { + response = {}; + if (body) { + if (self.isJsonContentType(xhr.__rollbar_xhr.response_content_type)) { + response.body = self.scrubJson(body); + } else { + response.body = body; + } + } + if (_headers) { + response.headers = _headers; + } + } + if (response) { + xhr.__rollbar_xhr.response = response; + } + try { + var code = xhr.status; + code = code === 1223 ? 204 : code; + xhr.__rollbar_xhr.status_code = code; + self.addOtelNetworkResponse(xhr.__rollbar_event, end_time_ms, code); + xhr.__rollbar_event.level = self.telemeter.levelFromStatus(code); + self.errorOnHttpStatus(xhr.__rollbar_xhr); + } catch (_e) { + /* ignore possible exception from xhr.status */ + } + } + } + } + wrapProp('onload', xhr); + wrapProp('onerror', xhr); + wrapProp('onprogress', xhr); + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + utility_replace(xhr, 'onreadystatechange', function (orig) { + return self.rollbar.wrap(orig, undefined, onreadystatechangeHandler); + }); + } else { + xhr.onreadystatechange = onreadystatechangeHandler; + } + if (xhr.__rollbar_xhr && self.trackHttpErrors()) { + xhr.__rollbar_xhr.stack = new Error().stack; + } + return orig.apply(this, arguments); + }; + }, this.replacements, 'network'); + } + if ('fetch' in this._window) { + utility_replace(this._window, 'fetch', function (orig) { + return function (_fn, _t) { + var args = Array.prototype.slice.call(arguments); + var input = args[0]; + var method = 'GET'; + var url; + var isUrlObject = _isUrlObject(input); + if (isType(input, 'string') || isUrlObject) { + url = isUrlObject ? input.toString() : input; + } else if (input) { + url = input.url; + if (input.method) { + method = input.method; + } + } + if (args[1] && args[1].method) { + method = args[1].method; + } + var metadata = { + method: method, + url: url, + status_code: null, + start_time_ms: now(), + end_time_ms: null + }; + if (args[1] && args[1].headers) { + // Argument may be a Headers object, or plain object. Ensure here that + // we are working with a Headers object with case-insensitive keys. + var reqHeaders = utility_headers(args[1].headers); + metadata.request_content_type = reqHeaders.get('Content-Type'); + if (self.autoInstrument.networkRequestHeaders) { + metadata.request_headers = self.fetchHeaders(reqHeaders, self.autoInstrument.networkRequestHeaders); + } + } + if (self.autoInstrument.networkRequestBody) { + if (args[1] && args[1].body) { + metadata.request = args[1].body; + } else if (args[0] && !isType(args[0], 'string') && args[0].body) { + metadata.request = args[0].body; + } + } + var telemetryEvent = self.captureNetwork(metadata, 'fetch', undefined); + if (self.trackHttpErrors()) { + metadata.stack = new Error().stack; + } + + // Start our handler before returning the promise. This allows resp.clone() + // to execute before other handlers touch the response. + return orig.apply(this, args).then(function (resp) { + var end_time_ms = now(); + metadata.end_time_ms = end_time_ms; + metadata.status_code = resp.status; + self.addOtelNetworkResponse(telemetryEvent, end_time_ms, resp.status); + metadata.response_content_type = resp.headers.get('Content-Type'); + var headers = null; + if (self.autoInstrument.networkResponseHeaders) { + headers = self.fetchHeaders(resp.headers, self.autoInstrument.networkResponseHeaders); } - case 1: - case "end": - return _context.stop(); - } - }, _callee); - })), seconds * 1000); - this._pending.set(replayId, { - timerId: timerId, - occurrenceUuid: occurrenceUuid, - cursor: cursor, - ready: false - }); + var body = null; + if (self.autoInstrument.networkResponseBody) { + if (typeof resp.text === 'function') { + // Response.text() is not implemented on some platforms + // The response must be cloned to prevent reading (and locking) the original stream. + // This must be done before other handlers touch the response. + body = resp.clone().text(); //returns a Promise + } + } + if (headers || body) { + metadata.response = {}; + if (body) { + // Test to ensure body is a Promise, which it should always be. + if (typeof body.then === 'function') { + body.then(function (text) { + if (text && self.isJsonContentType(metadata.response_content_type)) { + metadata.response.body = self.scrubJson(text); + } else { + metadata.response.body = text; + } + }); + } else { + metadata.response.body = body; + } + } + if (headers) { + metadata.response.headers = headers; + } + } + self.errorOnHttpStatus(metadata); + return resp; + }); + }; + }, this.replacements, 'network'); + } } - - /** - * Exports replay spans and adds the payload to pending context. - * - * Uses the captured buffer cursor to collect events that occurred after - * the trigger. Exports both recording and telemetry spans, then generates - * the payload and stores it for later sending. - * - * @param {string} replayId - The replay ID - * @param {string} occurrenceUuid - The occurrence UUID - * @param {BufferCursor} cursor - Buffer cursor position - * @private - */ }, { - key: "_export", - value: function _export(replayId, occurrenceUuid, cursor) { - var _this$_telemeter; - var pendingContext = this._pending.get(replayId); - if (!pendingContext) { - // Already cleaned up, possibly due to discard - throw new Error('No pending context for replayId, cleaned up?'); - } - try { - this._recorder.exportRecordingSpan(this._tracing, { - 'rollbar.replay.id': replayId, - 'rollbar.occurrence.uuid': occurrenceUuid - }, cursor); - } catch (error) { - logger.error('Error exporting leading recording span:', error); - this.discard(replayId); - throw new Error('Leading export failed', { - cause: error - }); + key: "captureNetwork", + value: function captureNetwork(metadata, subtype, rollbarUUID) { + if (metadata.request && this.isJsonContentType(metadata.request_content_type)) { + metadata.request = this.scrubJson(metadata.request); } - (_this$_telemeter = this._telemeter) === null || _this$_telemeter === void 0 || _this$_telemeter.exportTelemetrySpan({ - 'rollbar.replay.id': replayId - }); - var payload = this._tracing.exporter.toPayload(); - this._pending.set(replayId, { - ready: true, - payload: payload - }); + return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID); } - - /** - * Sends the payload if it's ready and coordination allows it. - * - * Checks if the replay can be sent via the delegate function and only - * sends if coordination requirements are met. - * - * @param {string} replayId - The replay ID - * @returns {Promise} - */ }, { - key: "sendIfReady", - value: (function () { - var _sendIfReady = scheduledCapture_asyncToGenerator(/*#__PURE__*/scheduledCapture_regeneratorRuntime().mark(function _callee2(replayId) { - var pendingContext; - return scheduledCapture_regeneratorRuntime().wrap(function _callee2$(_context2) { - while (1) switch (_context2.prev = _context2.next) { - case 0: - pendingContext = this._pendingContextIfReady(replayId); - if (pendingContext) { - _context2.next = 3; - break; - } - return _context2.abrupt("return"); - case 3: - _context2.prev = 3; - _context2.next = 6; - return this._post(replayId, pendingContext.payload); - case 6: - _context2.next = 11; - break; - case 8: - _context2.prev = 8; - _context2.t0 = _context2["catch"](3); - logger.error('Failed to send leading replay:', _context2.t0); - case 11: - this.discard(replayId); - case 12: - case "end": - return _context2.stop(); - } - }, _callee2, this, [[3, 8]]); - })); - function sendIfReady(_x) { - return _sendIfReady.apply(this, arguments); - } - return sendIfReady; - }() - /** - * Cancels a scheduled capture and cleans up all state. - * - * Clears the timer if it hasn't fired yet, and removes all pending - * context for the replay. - * - * @param {string} replayId - The replay ID to discard - */ - ) + key: "isJsonContentType", + value: function isJsonContentType(contentType) { + return contentType && isType(contentType, 'string') && contentType.toLowerCase().includes('json') ? true : false; + } }, { - key: "discard", - value: function discard(replayId) { - var _this$_onComplete; - var pendingContext = this._pending.get(replayId); - if (pendingContext !== null && pendingContext !== void 0 && pendingContext.timerId) { - clearTimeout(pendingContext.timerId); + key: "addOtelNetworkResponse", + value: function addOtelNetworkResponse(event, endTimeMs, statusCode) { + if (event.otelAttributes) { + event.otelAttributes['response.timeUnixNano'] = (endTimeMs * 1e6).toString(); + event.otelAttributes.statusCode = statusCode; } - this._pending.delete(replayId); - (_this$_onComplete = this._onComplete) === null || _this$_onComplete === void 0 || _this$_onComplete.call(this, replayId); } - - /** - * Returns the pending context for the given replayId if it's ready to be sent. - * - * @param {string} replayId - The replay ID - * @returns {Object|null} The pending context if ready, otherwise null - * @private - */ }, { - key: "_pendingContextIfReady", - value: function _pendingContextIfReady(replayId) { - var ctx = this._pending.get(replayId); - return (ctx === null || ctx === void 0 ? void 0 : ctx.ready) === true && ctx !== null && ctx !== void 0 && ctx.payload && this._shouldSend(replayId) ? ctx : null; + key: "scrubJson", + value: function scrubJson(json) { + return JSON.stringify(src_scrub(JSON.parse(json), this.options.scrubFields)); } - - /** - * Sends the given payload for the replay id to the Rollbar API. - * - * @param {string} replayId - The replay ID - * @param {string} payload - Serialized OTLP format payload - * @private - */ }, { - key: "_post", - value: (function () { - var _post2 = scheduledCapture_asyncToGenerator(/*#__PURE__*/scheduledCapture_regeneratorRuntime().mark(function _callee3(replayId, payload) { - return scheduledCapture_regeneratorRuntime().wrap(function _callee3$(_context3) { - while (1) switch (_context3.prev = _context3.next) { - case 0: - _context3.next = 2; - return this._tracing.exporter.post(payload, { - 'X-Rollbar-Replay-Id': replayId - }); - case 2: - case "end": - return _context3.stop(); + key: "fetchHeaders", + value: function fetchHeaders(inHeaders, headersConfig) { + var outHeaders = {}; + try { + if (headersConfig === true) { + if (typeof inHeaders.entries === 'function') { + // Headers.entries() is not implemented in IE + var allHeaders = inHeaders.entries(); + var currentHeader = allHeaders.next(); + while (!currentHeader.done) { + outHeaders[currentHeader.value[0]] = currentHeader.value[1]; + currentHeader = allHeaders.next(); + } } - }, _callee3, this); - })); - function _post(_x2, _x3) { - return _post2.apply(this, arguments); - } - return _post; - }()) - }]); -}())); - -;// ./src/browser/replay/scheduledStreamCapture.js -function scheduledStreamCapture_typeof(o) { "@babel/helpers - typeof"; return scheduledStreamCapture_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, scheduledStreamCapture_typeof(o); } -function scheduledStreamCapture_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = scheduledStreamCapture_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } -function scheduledStreamCapture_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return scheduledStreamCapture_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? scheduledStreamCapture_arrayLikeToArray(r, a) : void 0; } } -function scheduledStreamCapture_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function scheduledStreamCapture_regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ scheduledStreamCapture_regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == scheduledStreamCapture_typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(scheduledStreamCapture_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } -function scheduledStreamCapture_asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } -function scheduledStreamCapture_asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { scheduledStreamCapture_asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { scheduledStreamCapture_asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } -function scheduledStreamCapture_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function scheduledStreamCapture_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, scheduledStreamCapture_toPropertyKey(o.key), o); } } -function scheduledStreamCapture_createClass(e, r, t) { return r && scheduledStreamCapture_defineProperties(e.prototype, r), t && scheduledStreamCapture_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function scheduledStreamCapture_defineProperty(e, r, t) { return (r = scheduledStreamCapture_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function scheduledStreamCapture_toPropertyKey(t) { var i = scheduledStreamCapture_toPrimitive(t, "string"); return "symbol" == scheduledStreamCapture_typeof(i) ? i : i + ""; } -function scheduledStreamCapture_toPrimitive(t, r) { if ("object" != scheduledStreamCapture_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != scheduledStreamCapture_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - - -/** @typedef {import('./recorder.js').BufferCursor} BufferCursor */ -/** @typedef {import('./recorder.js').Recorder} Recorder */ - -/** - * A utility for coordinating streaming, cursor-based captures over extended - * durations. - * - * Unlike ScheduledCapture (single delayed export), this class exports multiple - * chunks at intervals to prevent event loss during long postDuration windows. - * Chunks are queued during capture and sent sequentially after coordination - * requirements are met. - */ -var ScheduledStreamCapture = /*#__PURE__*/function () { - /** - * Creates a new ScheduledStreamCapture instance - * - * @param {Object} props - Configuration object - * @param {Object} props.recorder - Recorder instance for capturing events - * @param {Object} props.tracing - Tracing instance for span management - * @param {Object} props.telemeter - Optional telemeter for telemetry spans - * @param {Function} props.shouldSend - Function to check if replay can be sent - * @param {Function} props.onComplete - Function to call when capture completes - */ - function ScheduledStreamCapture(_ref) { - var recorder = _ref.recorder, - tracing = _ref.tracing, - telemeter = _ref.telemeter, - shouldSend = _ref.shouldSend, - onComplete = _ref.onComplete; - scheduledStreamCapture_classCallCheck(this, ScheduledStreamCapture); - /** @type {Recorder} */ - scheduledStreamCapture_defineProperty(this, "_recorder", void 0); - scheduledStreamCapture_defineProperty(this, "_tracing", void 0); - scheduledStreamCapture_defineProperty(this, "_telemeter", void 0); - scheduledStreamCapture_defineProperty(this, "_pending", new Map()); - scheduledStreamCapture_defineProperty(this, "_shouldSend", void 0); - scheduledStreamCapture_defineProperty(this, "_onComplete", void 0); - this._recorder = recorder; - this._tracing = tracing; - this._telemeter = telemeter; - this._shouldSend = shouldSend; - this._onComplete = onComplete; - } - - /** - * Schedules streaming chunk captures over the specified duration. - * - * Starts a periodic interval that exports chunks at safe intervals to - * prevent event loss during buffer checkouts. Chunks are queued for later - * sequential sending. - * - * @param {string} replayId - The replay ID - * @param {string} occurrenceUuid - The occurrence UUID - * @param {number} postDuration - Duration in seconds to capture - */ - return scheduledStreamCapture_createClass(ScheduledStreamCapture, [{ - key: "schedule", - value: function schedule(replayId, occurrenceUuid, postDuration) { - var _this = this; - var startTime = Date.now(); - var endAt = startTime + postDuration * 1000; - var chunkMs = this._recorder.checkoutEveryNms(); - var cursor = this._recorder.bufferCursor(); - var intervalId = setInterval(function () { - _this._export(replayId); - }, chunkMs); - var endTimerId = setTimeout(function () { - _this._finalExport(replayId); - }, postDuration * 1000); - this._pending.set(replayId, { - intervalId: intervalId, - endTimerId: endTimerId, - startTime: startTime, - endAt: endAt, - postDuration: postDuration, - occurrenceUuid: occurrenceUuid, - cursor: cursor, - chunkQueue: [], - sending: false, - aborted: false, - finished: false - }); + } else { + var _iterator5 = telemetry_createForOfIteratorHelper(headersConfig), + _step5; + try { + for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { + var h = _step5.value; + outHeaders[h] = inHeaders.get(h); + } + } catch (err) { + _iterator5.e(err); + } finally { + _iterator5.f(); + } + } + } catch (_e) { + /* ignore probable IE errors */ + } + return outHeaders; } - - /** - * Exports a chunk and adds it to the send queue. - * - * Called periodically by the interval timer. Captures events from the last - * cursor position to current, exports as a span, and queues the payload. - * Stops the interval when postDuration is exceeded. - * - * @param {string} replayId - The replay ID - * @private - */ }, { - key: "_export", - value: (function () { - var _export2 = scheduledStreamCapture_asyncToGenerator(/*#__PURE__*/scheduledStreamCapture_regeneratorRuntime().mark(function _callee(replayId) { - var _this$_telemeter; - var ctx, before, after, payload; - return scheduledStreamCapture_regeneratorRuntime().wrap(function _callee$(_context) { - while (1) switch (_context.prev = _context.next) { - case 0: - ctx = this._pending.get(replayId); - if (!(!ctx || ctx.aborted || ctx.finished || Date.now() >= ctx.endAt)) { - _context.next = 3; - break; - } - return _context.abrupt("return"); - case 3: - before = ctx.cursor; - after = this._recorder.bufferCursor(); - _context.prev = 5; - this._recorder.exportRecordingSpan(this._tracing, { - 'rollbar.replay.id': replayId, - 'rollbar.occurrence.uuid': ctx.occurrenceUuid - }, before); - _context.next = 13; - break; - case 9: - _context.prev = 9; - _context.t0 = _context["catch"](5); - src_logger.debug('Error exporting leading chunk (tick):', _context.t0); - return _context.abrupt("return"); - case 13: - (_this$_telemeter = this._telemeter) === null || _this$_telemeter === void 0 || _this$_telemeter.exportTelemetrySpan({ - 'rollbar.replay.id': replayId - }); - payload = this._tracing.exporter.toPayload(); - ctx.chunkQueue.push({ - payload: payload, - cursor: before - }); - ctx.cursor = after; - _context.next = 19; - return this.sendIfReady(replayId); - case 19: - case "end": - return _context.stop(); - } - }, _callee, this, [[5, 9]]); - })); - function _export(_x) { - return _export2.apply(this, arguments); + key: "trackHttpErrors", + value: function trackHttpErrors() { + return this.autoInstrument.networkErrorOnHttp5xx || this.autoInstrument.networkErrorOnHttp4xx || this.autoInstrument.networkErrorOnHttp0; + } + }, { + key: "errorOnHttpStatus", + value: function errorOnHttpStatus(metadata) { + var status = metadata.status_code; + if (status >= 500 && this.autoInstrument.networkErrorOnHttp5xx || status >= 400 && this.autoInstrument.networkErrorOnHttp4xx || status === 0 && this.autoInstrument.networkErrorOnHttp0) { + var error = new Error('HTTP request failed with Status ' + status); + error.stack = metadata.stack; + this.rollbar.error(error, { + skipFrames: 1 + }); } - return _export; - }()) + } }, { - key: "_finalExport", - value: function () { - var _finalExport2 = scheduledStreamCapture_asyncToGenerator(/*#__PURE__*/scheduledStreamCapture_regeneratorRuntime().mark(function _callee2(replayId) { - var ctx, before, after, _this$_telemeter2, payload, _this$_onComplete; - return scheduledStreamCapture_regeneratorRuntime().wrap(function _callee2$(_context2) { - while (1) switch (_context2.prev = _context2.next) { - case 0: - ctx = this._pending.get(replayId); - if (!(!ctx || ctx.aborted)) { - _context2.next = 3; - break; - } - return _context2.abrupt("return"); - case 3: - if (ctx.intervalId) clearInterval(ctx.intervalId); - if (ctx.endTimerId) clearTimeout(ctx.endTimerId); - ctx.finished = true; - before = ctx.cursor; - after = this._recorder.bufferCursor(); - try { - this._recorder.exportRecordingSpan(this._tracing, { - 'rollbar.replay.id': replayId, - 'rollbar.occurrence.uuid': ctx.occurrenceUuid - }, before); - (_this$_telemeter2 = this._telemeter) === null || _this$_telemeter2 === void 0 || _this$_telemeter2.exportTelemetrySpan({ - 'rollbar.replay.id': replayId - }); - payload = this._tracing.exporter.toPayload(); - ctx.chunkQueue.push({ - payload: payload, - cursor: before - }); - ctx.cursor = after; - } catch (error) { - // TODO(matux): No events probably, this is expected, be more graceful. - src_logger.debug('Error exporting leading chunk (final):', error); - } - if (!(!ctx.sending && ctx.chunkQueue.length === 0)) { - _context2.next = 13; - break; - } - this._pending.delete(replayId); - (_this$_onComplete = this._onComplete) === null || _this$_onComplete === void 0 || _this$_onComplete.call(this, replayId); - return _context2.abrupt("return"); - case 13: - _context2.next = 15; - return this.sendIfReady(replayId); - case 15: - case "end": - return _context2.stop(); - } - }, _callee2, this); - })); - function _finalExport(_x2) { - return _finalExport2.apply(this, arguments); + key: "deinstrumentConsole", + value: function deinstrumentConsole() { + var b; + while (this.replacements['log'].length) { + b = this.replacements['log'].shift(); + this._window.console[b[0]] = b[1]; } - return _finalExport; - }() - /** - * Sends queued chunks if ready and coordination allows it. - * - * Called by Replay after trailing replay succeeds. Sends chunks - * sequentially, waiting for each to complete before sending the next. If any - * chunk fails to send, aborts the entire stream. - * - * @param {string} replayId - The replay ID - * @returns {Promise} - */ + } }, { - key: "sendIfReady", - value: (function () { - var _sendIfReady = scheduledStreamCapture_asyncToGenerator(/*#__PURE__*/scheduledStreamCapture_regeneratorRuntime().mark(function _callee3(replayId) { - var ctx, _this$_onComplete2, _iterator, _step, chunk, _this$_onComplete3; - return scheduledStreamCapture_regeneratorRuntime().wrap(function _callee3$(_context3) { - while (1) switch (_context3.prev = _context3.next) { - case 0: - ctx = this._pendingContextIfReady(replayId); - if (ctx) { - _context3.next = 3; - break; - } - return _context3.abrupt("return"); - case 3: - if (!(ctx.finished && !ctx.sending && ctx.chunkQueue.length === 0)) { - _context3.next = 7; - break; - } - this._pending.delete(replayId); - (_this$_onComplete2 = this._onComplete) === null || _this$_onComplete2 === void 0 || _this$_onComplete2.call(this, replayId); - return _context3.abrupt("return"); - case 7: - ctx.sending = true; - _iterator = scheduledStreamCapture_createForOfIteratorHelper(ctx.chunkQueue); - _context3.prev = 9; - _iterator.s(); - case 11: - if ((_step = _iterator.n()).done) { - _context3.next = 31; - break; - } - chunk = _step.value; - if (!ctx.aborted) { - _context3.next = 15; - break; - } - return _context3.abrupt("break", 31); - case 15: - if (this._shouldSend(replayId)) { - _context3.next = 19; - break; - } - src_logger.error('Coordination check failed during chunk send'); - this.discard(replayId); - throw new Error('Coordination check failed during chunk send'); - case 19: - _context3.prev = 19; - _context3.next = 22; - return this._tracing.exporter.post(chunk.payload, { - 'X-Rollbar-Replay-Id': replayId - }); - case 22: - _context3.next = 29; - break; - case 24: - _context3.prev = 24; - _context3.t0 = _context3["catch"](19); - src_logger.error('Failed to send leading replay:', _context3.t0); - this.discard(replayId); - throw _context3.t0; - case 29: - _context3.next = 11; - break; - case 31: - _context3.next = 36; - break; - case 33: - _context3.prev = 33; - _context3.t1 = _context3["catch"](9); - _iterator.e(_context3.t1); - case 36: - _context3.prev = 36; - _iterator.f(); - return _context3.finish(36); - case 39: - ctx.sending = false; - ctx.chunkQueue = []; - if (ctx.finished) { - this._pending.delete(replayId); - (_this$_onComplete3 = this._onComplete) === null || _this$_onComplete3 === void 0 || _this$_onComplete3.call(this, replayId); - } - case 42: - case "end": - return _context3.stop(); + key: "instrumentConsole", + value: function instrumentConsole() { + var _this$_window; + if (!((_this$_window = this._window) !== null && _this$_window !== void 0 && (_this$_window = _this$_window.console) !== null && _this$_window !== void 0 && _this$_window.log)) { + return; + } + var self = this; + var c = this._window.console; + function wrapConsole(method) { + // eslint-disable-next-line strict + 'use strict'; + + // See https://github.com/rollbar/rollbar.js/pull/778 + var orig = c[method]; + var origConsole = c; + var level = method === 'warn' ? 'warning' : method; + c[method] = function () { + var args = Array.prototype.slice.call(arguments); + var message = formatArgsAsString(args); + self.telemeter.captureLog(message, level, null, now()); + if (orig) { + Function.prototype.apply.call(orig, origConsole, args); } - }, _callee3, this, [[9, 33, 36, 39], [19, 24]]); - })); - function sendIfReady(_x3) { - return _sendIfReady.apply(this, arguments); + }; + self.replacements['log'].push([method, orig]); } - return sendIfReady; - }() - /** - * Aborts the streaming capture and cleans up all state. - * - * Stops the interval timer, discards all queued chunks, and marks the - * capture as aborted. This is called on send failures or explicit discard. - * - * @param {string} replayId - The replay ID to abort - */ - ) + var methods = ['debug', 'info', 'warn', 'error', 'log']; + try { + for (var _i2 = 0, _methods = methods; _i2 < _methods.length; _i2++) { + var m = _methods[_i2]; + wrapConsole(m); + } + } catch (e) { + this.diagnostic.instrumentConsole = { + error: e.message + }; + } + } + }, { + key: "deinstrumentDom", + value: function deinstrumentDom() { + this.removeListeners('dom'); + } + }, { + key: "instrumentDom", + value: function instrumentDom() { + var _this = this; + this.addListener('dom', this._window, ['click', 'dblclick', 'contextmenu'], function (e) { + return _this.handleEvent('click', e); + }); + this.addListener('dom', this._window, ['dragstart', 'dragend', 'dragenter', 'dragleave', 'drop'], function (e) { + return _this.handleEvent('dragdrop', e); + }); + this.addListener('dom', this._window, ['blur', 'focus'], function (e) { + return _this.handleEvent('focus', e); + }); + this.addListener('dom', this._window, ['submit', 'invalid'], function (e) { + return _this.handleEvent('form', e); + }); + this.addListener('dom', this._window, ['input', 'change'], function (e) { + return _this.handleEvent('input', e); + }); + this.addListener('dom', this._window, ['resize'], function (e) { + return _this.handleEvent('resize', e); + }); + this.addListener('dom', this._document, ['DOMContentLoaded'], function (e) { + return _this.handleEvent('contentLoaded', e); + }); + } }, { - key: "discard", - value: function discard(replayId) { - var _this$_onComplete4; - var ctx = this._pending.get(replayId); - if (!ctx) return; - ctx.aborted = true; - if (ctx.intervalId) clearInterval(ctx.intervalId); - if (ctx.endTimerId) clearTimeout(ctx.endTimerId); - ctx.chunkQueue = []; - this._pending.delete(replayId); - (_this$_onComplete4 = this._onComplete) === null || _this$_onComplete4 === void 0 || _this$_onComplete4.call(this, replayId); + key: "handleEvent", + value: function handleEvent(name, evt) { + try { + return { + click: this.handleClick, + dragdrop: this.handleDrag, + focus: this.handleFocus, + form: this.handleForm, + input: this.handleInput, + resize: this.handleResize, + contentLoaded: this.handleContentLoaded + }[name].call(this, evt); + } catch (exc) { + src_logger.log("".concat(name, " handler error"), evt, exc, exc.stack); + } } - - /** - * Returns the pending context for the given replayId if it's ready to be sent. - * - * @param {string} replayId - The replay ID - * @returns {Object|null} The pending context if ready, otherwise null - */ }, { - key: "_pendingContextIfReady", - value: function _pendingContextIfReady(replayId) { - var ctx = this._pending.get(replayId); - return ctx && !ctx.aborted && !ctx.sending && ctx.chunkQueue.length > 0 && this._shouldSend(replayId) ? ctx : null; + key: "handleContentLoaded", + value: function handleContentLoaded(_evt) { + this.rollbar.triggerReplay({ + type: 'navigation', + path: new URL(this._location.href).pathname + }); } - }]); -}(); - -;// ./src/browser/replay/replay.js -function replay_typeof(o) { "@babel/helpers - typeof"; return replay_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, replay_typeof(o); } -function replay_slicedToArray(r, e) { return replay_arrayWithHoles(r) || replay_iterableToArrayLimit(r, e) || replay_unsupportedIterableToArray(r, e) || replay_nonIterableRest(); } -function replay_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function replay_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return replay_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? replay_arrayLikeToArray(r, a) : void 0; } } -function replay_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function replay_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function replay_arrayWithHoles(r) { if (Array.isArray(r)) return r; } -function replay_regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ replay_regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == replay_typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(replay_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } -function replay_asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } -function replay_asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { replay_asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { replay_asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } -function replay_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } -function replay_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? replay_ownKeys(Object(t), !0).forEach(function (r) { replay_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : replay_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } -function replay_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } -function replay_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, replay_toPropertyKey(o.key), o); } } -function replay_createClass(e, r, t) { return r && replay_defineProperties(e.prototype, r), t && replay_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } -function replay_defineProperty(e, r, t) { return (r = replay_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } -function replay_toPropertyKey(t) { var i = replay_toPrimitive(t, "string"); return "symbol" == replay_typeof(i) ? i : i + ""; } -function replay_toPrimitive(t, r) { if ("object" != replay_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != replay_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } - - - - - - - - - -/** @typedef {import('./recorder.js').BufferCursor} BufferCursor */ -/** @typedef {import('./recorder.js').Recorder} Recorder */ - -/** - * Enum for tracking the status of trailing replay sends. - * Used to coordinate between trailing and leading replay captures. - */ -var TrailingStatus = Object.freeze({ - PENDING: 'pending', - // Trailing not yet sent - SENT: 'sent', - // Trailing successfully sent - FAILED: 'failed', - // Trailing failed to send - SKIPPED: 'skipped' // Trailing was skipped (replay is leading only) -}); - -/** - * Replay - Manages the mapping between error occurrences and their associated - * session recordings. This class handles the coordination between when recordings - * are dumped and when they are eventually sent to the backend. - */ -var Replay = /*#__PURE__*/function () { - /** - * Creates a new Replay instance - * - * @param {Object} [props.tracing] - The tracing instance used to create spans and manage context - * @param {Object} [props.telemeter] - Optional telemeter instance for capturing telemetry events - * @param {Object} [props.options] - Configuration options - */ - function Replay(_ref) { - var tracing = _ref.tracing, - telemeter = _ref.telemeter, - options = _ref.options; - replay_classCallCheck(this, Replay); - replay_defineProperty(this, "_map", void 0); - /** @type {Recorder} */ - replay_defineProperty(this, "_recorder", void 0); - replay_defineProperty(this, "_tracing", void 0); - replay_defineProperty(this, "_telemeter", void 0); - replay_defineProperty(this, "_scheduledCapture", void 0); - replay_defineProperty(this, "_trailingStatus", void 0); - if (!tracing) { - throw new TypeError("Expected 'tracing' to be provided"); + }, { + key: "handleClick", + value: function handleClick(evt) { + var _evt$target; + var tagName = (_evt$target = evt.target) === null || _evt$target === void 0 ? void 0 : _evt$target.tagName.toLowerCase(); + if (['input', 'select', 'textarea'].includes(tagName)) return; + this.telemeter.captureClick({ + type: evt.type, + isSynthetic: !evt.isTrusted, + element: elementString(evt.target), + timestamp: now() + }); } - this._map = new Map(); - this._predicates = new ReplayPredicates(options); - this._recorder = new Recorder(replay_objectSpread(replay_objectSpread({}, options), {}, { - maxPreDuration: this._predicates.maxPreDuration - })); - this._tracing = tracing; - this._telemeter = telemeter; - this._trailingStatus = new Map(); - this._scheduledCapture = new ScheduledStreamCapture({ - recorder: this._recorder, - tracing: this._tracing, - telemeter: this._telemeter, - shouldSend: this._shouldSendScheduled.bind(this), - onComplete: this._onScheduledComplete.bind(this) - }); - this._tracing.addSpanTransform(this.uuidsTransform.bind(this)); - } - - /** - * Called when a scheduled capture completes (sent or discarded). - * Cleans up the trailing status coordination state. - * - * @param {string} replayId - The replay ID - * @private - */ - return replay_createClass(Replay, [{ - key: "_onScheduledComplete", - value: function _onScheduledComplete(replayId) { - this._trailingStatus.delete(replayId); + }, { + key: "handleFocus", + value: function handleFocus(evt) { + var _evt$target2; + var type = evt.type; + var element = (_evt$target2 = evt.target) !== null && _evt$target2 !== void 0 && _evt$target2.window ? 'window' : elementString(evt.target); + this.telemeter.captureFocus({ + type: type, + isSynthetic: !evt.isTrusted, + element: element, + timestamp: now() + }); } - - /** - * Determines if a scheduled replay should be sent based on coordination state. - * - * Scheduled replays can only be sent after the trailing replay has been - * successfully sent or explicitly skipped (for leading-only captures). - * - * @param {string} replayId - The replay ID - * @returns {boolean} True if scheduled replay can be sent - * @private - */ }, { - key: "_shouldSendScheduled", - value: function _shouldSendScheduled(replayId) { - var status = this._trailingStatus.get(replayId); - return status === TrailingStatus.SENT || status === TrailingStatus.SKIPPED; + key: "handleForm", + value: function handleForm(_evt) { + // TODO: implement form event handling + //const type = evt.type; + //const elementString = evt.target?.window + // ? 'window' + // : domUtil.elementString(evt.target); } }, { - key: "configure", - value: function configure(options) { - this._predicates.configure(options); - this._recorder.configure(replay_objectSpread(replay_objectSpread({}, options), {}, { - maxPreDuration: this._predicates.maxPreDuration - })); + key: "handleResize", + value: function handleResize(evt) { + var textZoomRatio = window.screen.width / window.innerWidth; + this.telemeter.captureResize({ + type: evt.type, + isSynthetic: !evt.isTrusted, + width: window.innerWidth, + height: window.innerHeight, + textZoomRatio: textZoomRatio, + timestamp: now() + }); } - - /** - * Exports recording and telemetry spans, then stores the tracing payload in the map. - * - * Exports both telemetry and recording spans, then generates the complete payload - * using the tracing exporter and stores it in the map using replayId as the key. - * This is an async operation that runs in the background. - * - * @param {string} replayId - The unique ID for this replay - * @param {string} occurrenceUuid - The UUID of the associated error occurrence - * @private - */ }, { - key: "_exportSpansAndAddTracingPayload", - value: (function () { - var _exportSpansAndAddTracingPayload2 = replay_asyncToGenerator(/*#__PURE__*/replay_regeneratorRuntime().mark(function _callee(replayId, occurrenceUuid, trigger, triggerContext) { - var _this$_telemeter; - var payload, leadingSeconds; - return replay_regeneratorRuntime().wrap(function _callee$(_context) { - while (1) switch (_context.prev = _context.next) { - case 0: - _context.prev = 0; - this._recorder.exportRecordingSpan(this._tracing, { - 'rollbar.replay.id': replayId, - 'rollbar.occurrence.uuid': occurrenceUuid, - 'rollbar.replay.trigger.type': trigger.type, - 'rollbar.replay.trigger.context': JSON.stringify(triggerContext), - 'rollbar.replay.trigger': JSON.stringify(trigger), - 'rollbar.replay.url.full': sanitizeHref(window.location.href) - }); - _context.next = 8; - break; - case 4: - _context.prev = 4; - _context.t0 = _context["catch"](0); - // TODO(matux): No events probably, this is expected, be more graceful. - src_logger.debug('Error exporting recording span:', _context.t0); - return _context.abrupt("return"); - case 8: - (_this$_telemeter = this._telemeter) === null || _this$_telemeter === void 0 || _this$_telemeter.exportTelemetrySpan({ - 'rollbar.replay.id': replayId - }); - payload = this._tracing.exporter.toPayload(); - this._map.set(replayId, payload); - leadingSeconds = (trigger === null || trigger === void 0 ? void 0 : trigger.postDuration) || 0; - if (leadingSeconds > 0) { - this._scheduledCapture.schedule(replayId, occurrenceUuid, leadingSeconds); - this._trailingStatus.set(replayId, TrailingStatus.PENDING); - } - case 13: - case "end": - return _context.stop(); + key: "handleDrag", + value: function handleDrag(evt) { + var type = evt.type; + var kinds, mediaTypes, dropEffect, effectAllowed; + if (type === 'drop') { + kinds = []; + mediaTypes = []; + var objs = [].concat(telemetry_toConsumableArray(evt.dataTransfer.files), telemetry_toConsumableArray(evt.dataTransfer.items)); + var _iterator6 = telemetry_createForOfIteratorHelper(objs), + _step6; + try { + for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { + var o = _step6.value; + if (o.kind && o.type) { + kinds.push(o.kind); + mediaTypes.push(o.type); + } } - }, _callee, this, [[0, 4]]); - })); - function _exportSpansAndAddTracingPayload(_x, _x2, _x3, _x4) { - return _exportSpansAndAddTracingPayload2.apply(this, arguments); + } catch (err) { + _iterator6.e(err); + } finally { + _iterator6.f(); + } } - return _exportSpansAndAddTracingPayload; - }() - /** - * Captures a replay and returns a uniquely generated replay ID. - * - * This method immediately returns the replayId and asynchronously processes - * the replay data in the background. The processing involves converting - * recorder events into a payload format and storing it in the map. - * - * @returns {string} A unique identifier for this replay + if (['drop', 'dragstart'].includes(type)) { + var _evt$dataTransfer, _evt$dataTransfer2; + dropEffect = (_evt$dataTransfer = evt.dataTransfer) === null || _evt$dataTransfer === void 0 ? void 0 : _evt$dataTransfer.dropEffect; + effectAllowed = (_evt$dataTransfer2 = evt.dataTransfer) === null || _evt$dataTransfer2 === void 0 ? void 0 : _evt$dataTransfer2.effectAllowed; + } + this.telemeter.captureDragDrop({ + type: type, + isSynthetic: !evt.isTrusted, + element: elementString(evt.target), + dropEffect: dropEffect, + effectAllowed: effectAllowed, + kinds: JSON.stringify(kinds), + mediaTypes: JSON.stringify(mediaTypes), + timestamp: now() + }); + } + + /* + * Applies Rollbar telemetry scrubbing options to the dom input value. + * When replay options are present, applies those as well. */ - ) }, { - key: "capture", - value: function capture(replayId, occurrenceUuid, triggerContext) { - if (!this._recorder.isReady) { - src_logger.warn('Replay.capture: Recorder is not ready, cannot export replay'); - return null; + key: "scrubInputValue", + value: function scrubInputValue(value, element, tagName, inputType) { + var mask = '******'; + if (inputType === 'password') { + return mask; + } + if (this.scrubTelemetryInputs) { + return mask; + } else { + var description = describeElement(element); + if (this.telemetryScrubber) { + if (this.telemetryScrubber(description)) { + return mask; + } + } else if (this.defaultValueScrubber(description)) { + return mask; + } } - replayId = replayId || id.gen(8); - /* - * trigger.preDuration and trigger.postDuration are the requested capture - * durations for the trigger. The recorder buffers have been configured to - * handle the max preDuration across all triggers. - */ - var trigger = this._predicates.shouldCaptureForTriggerContext(replay_objectSpread(replay_objectSpread({}, triggerContext), {}, { - replayId: replayId - })); - if (!trigger) { - return null; + // Apply replay options regardless of other scrubbing + if (isMatchingElement(element, this.scrubClasses, this.scrubSelectors)) { + return mask; } - // Start processing the replay in the background - this._exportSpansAndAddTracingPayload(replayId, occurrenceUuid, trigger, triggerContext); - return replayId; + // This check is last since maskInputFn returns a modified value rather + // than a boolean, which would cause an early return even if the value + // was not scrubbed. + if (this.maskInputOptions[tagName.toLowerCase()] || this.maskInputOptions[inputType]) { + if (this.maskInputFn) { + return this.maskInputFn(value, element); + } else { + return mask; + } + } + return value; } - /** - * On a matching trigger condition, captures and sends a replay. - * This method handles the non-occurrence based triggers, which don't require - * special occurrence-specific handling. - * - * @returns {string} A unique identifier for this replay or null if not sent. + /* + * Uses the `input` event for everything except radio and checkbox inputs. + * For those, it uses the `change` event. */ }, { - key: "triggerReplay", - value: (function () { - var _triggerReplay = replay_asyncToGenerator(/*#__PURE__*/replay_regeneratorRuntime().mark(function _callee2(triggerContext) { - var replayId, trigger, _this$_recorder$optio, leadingSeconds; - return replay_regeneratorRuntime().wrap(function _callee2$(_context2) { - while (1) switch (_context2.prev = _context2.next) { - case 0: - replayId = id.gen(8); - trigger = this._predicates.shouldCaptureForTriggerContext(replay_objectSpread(replay_objectSpread({}, triggerContext), {}, { - replayId: replayId - })); - if (trigger) { - _context2.next = 4; - break; - } - return _context2.abrupt("return", null); - case 4: - if (!this._recorder.isReady) { - _context2.next = 9; - break; - } - _context2.next = 7; - return this._exportSpansAndAddTracingPayload(replayId, null, trigger, triggerContext); - case 7: - _context2.next = 12; - break; - case 9: - // If the recorder is not ready, mark the trailing capture as skipped and - // allow the leading capture to proceed. - this._trailingStatus.set(replayId, TrailingStatus.SKIPPED); - leadingSeconds = ((_this$_recorder$optio = this._recorder.options) === null || _this$_recorder$optio === void 0 ? void 0 : _this$_recorder$optio.postDuration) || 0; - if (leadingSeconds > 0) { - this._scheduledCapture.schedule(replayId, null, leadingSeconds); - } - case 12: - _context2.prev = 12; - _context2.next = 15; - return this.send(replayId); - case 15: - _context2.next = 21; - break; - case 17: - _context2.prev = 17; - _context2.t0 = _context2["catch"](12); - this.discard(replayId); - return _context2.abrupt("return", null); - case 21: - return _context2.abrupt("return", replayId); - case 22: - case "end": - return _context2.stop(); - } - }, _callee2, this, [[12, 17]]); - })); - function triggerReplay(_x5) { - return _triggerReplay.apply(this, arguments); + key: "handleInput", + value: function handleInput(evt) { + var _evt$target3, _evt$target4, _evt$target5, _evt$target6; + var type = evt.type; + var tagName = (_evt$target3 = evt.target) === null || _evt$target3 === void 0 ? void 0 : _evt$target3.tagName.toLowerCase(); + var value = (_evt$target4 = evt.target) === null || _evt$target4 === void 0 ? void 0 : _evt$target4.value; + var inputType = ((_evt$target5 = evt.target) === null || _evt$target5 === void 0 || (_evt$target5 = _evt$target5.attributes) === null || _evt$target5 === void 0 || (_evt$target5 = _evt$target5.type) === null || _evt$target5 === void 0 ? void 0 : _evt$target5.value) || ((_evt$target6 = evt.target) === null || _evt$target6 === void 0 ? void 0 : _evt$target6.type); + if (value !== undefined) { + value = this.scrubInputValue(value, evt.target, tagName, inputType); } - return triggerReplay; - }() - /** - * Determines if a replay can be sent based on API response and headers. - * - * @param {Error|null} err - Any error that occurred during the API request - * @param {Object|null} resp - The API response object - * @param {Object|null} hs - The response headers - * @returns {boolean} true if the replay can be sent, false otherwise. - * @private - */ - ) - }, { - key: "sendOrDiscardReplay", - value: ( - /** - * Sends or discards a replay based on whether it can be sent. - * - * The criteria for sending a replay are: - * - No error occurred during the API request - * - The response indicates success (err === 0) - * - Replay is enabled on the server - * - Rate limit quota is not exhausted - * - * Called by Queue after determining replay eligibility from API response. - * - * @param {string} replayId - The ID of the replay to send or discard - * @param {Error|null} err - Any error that occurred during the API request - * @param {Object|null} resp - The API response object - * @param {Object|null} headers - The response headers - * @returns {Promise} A promise that resolves when the operation is complete - */ - function () { - var _sendOrDiscardReplay = replay_asyncToGenerator(/*#__PURE__*/replay_regeneratorRuntime().mark(function _callee3(replayId, err, resp, headers) { - var canSendReplay; - return replay_regeneratorRuntime().wrap(function _callee3$(_context3) { - while (1) switch (_context3.prev = _context3.next) { - case 0: - canSendReplay = Replay._canSendReplay(err, resp, headers); - if (!canSendReplay) { - _context3.next = 13; - break; - } - _context3.prev = 2; - _context3.next = 5; - return this.send(replayId); - case 5: - _context3.next = 11; - break; - case 7: - _context3.prev = 7; - _context3.t0 = _context3["catch"](2); - src_logger.error('Failed to send replay:', _context3.t0); - this.discard(replayId); - case 11: - _context3.next = 14; - break; - case 13: - this.discard(replayId); - case 14: - case "end": - return _context3.stop(); + switch (type) { + case 'input': + if (['radio', 'checkbox'].includes(inputType)) return; + if (['select', 'textarea'].includes(tagName)) { + inputType = tagName; } - }, _callee3, this, [[2, 7]]); - })); - function sendOrDiscardReplay(_x6, _x7, _x8, _x9) { - return _sendOrDiscardReplay.apply(this, arguments); - } - return sendOrDiscardReplay; - }() - /** - * Sends the replay payload associated with the given replayId to the backend - * and removes it from the map. - * - * Retrieves the payload from the map, checks if it's valid, then sends it - * to the API endpoint for processing. The payload can be either a spans array - * or a formatted OTLP payload object. - * - * @param {string} replayId - The ID of the replay to send - * @returns {Promise} A promise that resolves to true if the payload was found and sent, false otherwise - */ - ) - }, { - key: "send", - value: (function () { - var _send = replay_asyncToGenerator(/*#__PURE__*/replay_regeneratorRuntime().mark(function _callee4(replayId) { - var payload, isEmpty; - return replay_regeneratorRuntime().wrap(function _callee4$(_context4) { - while (1) switch (_context4.prev = _context4.next) { - case 0: - if (replayId) { - _context4.next = 2; - break; - } - throw Error('Replay.send: No replayId provided'); - case 2: - if (this._map.has(replayId)) { - _context4.next = 4; - break; - } - throw Error("Replay.send: No replay found for id: ".concat(replayId)); - case 4: - payload = this._map.get(replayId); - this._map.delete(replayId); - - // Check if payload is empty (could be raw spans array or OTLP payload) - isEmpty = !payload || Array.isArray(payload) && payload.length === 0 || payload.resourceSpans && payload.resourceSpans.length === 0; - if (!isEmpty) { - _context4.next = 9; - break; - } - throw Error("Replay.send: No payload found for id: ".concat(replayId)); - case 9: - _context4.next = 11; - return this._tracing.exporter.post(payload, { - 'X-Rollbar-Replay-Id': replayId - }); - case 11: - this._trailingStatus.set(replayId, TrailingStatus.SENT); - _context4.next = 14; - return this._scheduledCapture.sendIfReady(replayId); - case 14: - case "end": - return _context4.stop(); + break; + case 'change': + if (!['radio', 'checkbox'].includes(inputType)) return; + if (inputType === 'checkbox') { + var _evt$target7; + value = (_evt$target7 = evt.target) === null || _evt$target7 === void 0 ? void 0 : _evt$target7.checked; } - }, _callee4, this); - })); - function send(_x10) { - return _send.apply(this, arguments); + break; + } + this.telemeter.captureInput({ + type: inputType, + isSynthetic: !evt.isTrusted, + element: elementString(evt.target), + value: value, + timestamp: now() + }); + } + }, { + key: "deinstrumentNavigation", + value: function deinstrumentNavigation() { + var chrome = this._window.chrome; + var chromePackagedApp = chrome && chrome.app && chrome.app.runtime; + // See https://github.com/angular/angular.js/pull/13945/files + var hasPushState = !chromePackagedApp && this._window.history && this._window.history.pushState; + if (!hasPushState) { + return; } - return send; - }() - /** - * Discards the replay associated with the given replay ID by removing - * it from the map without sending it. - * - * @param {string} replayId - The ID of the replay to discard - * @returns {boolean} True if a replay was found and discarded, false otherwise - */ - ) + restore(this.replacements, 'navigation'); + } }, { - key: "discard", - value: function discard(replayId) { - if (!replayId) { - src_logger.error('Replay.discard: No replayId provided'); - return false; + key: "instrumentNavigation", + value: function instrumentNavigation() { + var chrome = this._window.chrome; + var chromePackagedApp = chrome && chrome.app && chrome.app.runtime; + // See https://github.com/angular/angular.js/pull/13945/files + var hasPushState = !chromePackagedApp && this._window.history && this._window.history.pushState; + if (!hasPushState) { + return; } - this._trailingStatus.set(replayId, TrailingStatus.FAILED); - this._scheduledCapture.discard(replayId); - if (!this._map.has(replayId)) { - src_logger.error("Replay.discard: No replay found for replayId: ".concat(replayId)); - return false; + var self = this; + utility_replace(this._window, 'onpopstate', function (orig) { + return function () { + var current = self._location.href; + self.handleUrlChange(self._lastHref, current); + if (orig) { + orig.apply(this, arguments); + } + }; + }, this.replacements, 'navigation'); + utility_replace(this._window.history, 'pushState', function (orig) { + return function () { + var url = arguments.length > 2 ? arguments[2] : undefined; + if (url) { + self.handleUrlChange(self._lastHref, String(url)); + } + return orig.apply(this, arguments); + }; + }, this.replacements, 'navigation'); + } + }, { + key: "handleUrlChange", + value: function handleUrlChange(from, to) { + var parsedHref = url_parse(this._location.href); + var parsedTo = url_parse(to); + var parsedFrom = url_parse(from); + this._lastHref = to; + if (parsedHref.protocol === parsedTo.protocol && parsedHref.host === parsedTo.host) { + to = parsedTo.path + (parsedTo.hash || ''); } - this._map.delete(replayId); - this._trailingStatus.delete(replayId); - return true; + if (parsedHref.protocol === parsedFrom.protocol && parsedHref.host === parsedFrom.host) { + from = parsedFrom.path + (parsedFrom.hash || ''); + } + this.telemeter.captureNavigation(from, to, null, now()); + this.rollbar.triggerReplay({ + type: 'navigation', + path: to + }); } }, { - key: "uuidsTransform", - value: function uuidsTransform(span) { - var startTime = hrtime.toMillis(span.startTime); - var uuidEvents = this._telemeter.queue.filter(function (e) { - return e.timestamp_ms >= startTime && e.uuid; + key: "instrumentConnectivity", + value: function instrumentConnectivity() { + var self = this; + this.addListener('connectivity', this._window, ['online', 'offline'], function (evt) { + return self.handleConnectivity(evt); }); - var uuids = uuidEvents.map(function (e) { - return e.uuid; + } + }, { + key: "handleConnectivity", + value: function handleConnectivity(evt) { + var type = evt.type; + this.telemeter.captureConnectivityChange({ + type: type, + isSynthetic: !evt.isTrusted, + timestamp: now() }); - span.attributes['rollbar.occurrence.uuids'] = JSON.stringify(uuids); } - - /** - * Gets spans for the given replay ID - * - * @param {string} replayId - The ID to retrieve spans for - * @returns {Array|null} The spans array or null if not found - */ }, { - key: "getSpans", - value: function getSpans(replayId) { - var _this$_map$get; - return (_this$_map$get = this._map.get(replayId)) !== null && _this$_map$get !== void 0 ? _this$_map$get : null; + key: "handleCspEvent", + value: function handleCspEvent(cspEvent) { + var message = 'Security Policy Violation: ' + 'blockedURI: ' + cspEvent.blockedURI + ', ' + 'violatedDirective: ' + cspEvent.violatedDirective + ', ' + 'effectiveDirective: ' + cspEvent.effectiveDirective + ', '; + if (cspEvent.sourceFile) { + message += 'location: ' + cspEvent.sourceFile + ', ' + 'line: ' + cspEvent.lineNumber + ', ' + 'col: ' + cspEvent.columnNumber + ', '; + } + message += 'originalPolicy: ' + cspEvent.originalPolicy; + this.telemeter.captureLog(message, 'error', null, now()); + this.handleCspError(message); } - - /** - * Sets spans for a given replay ID - * - * @param {string} replayId - The ID to set spans for - * @param {Array} spans - The spans to set - */ }, { - key: "setSpans", - value: function setSpans(replayId, spans) { - this._map.set(replayId, spans); + key: "handleCspError", + value: function handleCspError(message) { + if (this.autoInstrument.errorOnContentSecurityPolicy) { + this.rollbar.error(message); + } } - - /** - * Clears all stored replays without sending them - */ }, { - key: "clear", - value: function clear() { - this._map.clear(); + key: "deinstrumentContentSecurityPolicy", + value: function deinstrumentContentSecurityPolicy() { + this.removeListeners('contentsecuritypolicy'); } - - /** - * Returns the size of the map (number of stored replays) - * - * @returns {number} The number of replays currently stored - */ }, { - key: "size", - get: function get() { - return this._map.size; + key: "instrumentContentSecurityPolicy", + value: function instrumentContentSecurityPolicy() { + if (!('addEventListener' in this._document)) { + return; + } + var cspHandler = this.handleCspEvent.bind(this); + this.addListener('contentsecuritypolicy', this._document, ['securitypolicyviolation'], cspHandler); } - - /** - * Returns the Recorder instance used by this manager - * - * @returns {Recorder} The Recorder instance - */ }, { - key: "recorder", - get: function get() { - return this._recorder; + key: "addListener", + value: function addListener(section, obj, types, handler) { + var _this2 = this; + if (obj.addEventListener) { + var _iterator7 = telemetry_createForOfIteratorHelper(types), + _step7; + try { + var _loop = function _loop() { + var t = _step7.value; + var options = { + capture: true, + passive: true + }; + obj.addEventListener(t, handler, options, true); + _this2.eventRemovers[section].push(function () { + obj.removeEventListener(t, handler, options); + }); + }; + for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { + _loop(); + } + } catch (err) { + _iterator7.e(err); + } finally { + _iterator7.f(); + } + } } - }], [{ - key: "_canSendReplay", - value: function _canSendReplay(err, resp, hs) { - if (!hs) return false; - var hasNoErrors = !err && (resp === null || resp === void 0 ? void 0 : resp.err) === 0; - var headers = Object.fromEntries(Object.entries(hs).map(function (_ref2) { - var _ref3 = replay_slicedToArray(_ref2, 2), - k = _ref3[0], - v = _ref3[1]; - return [k.toLowerCase(), String(v).trim()]; - })); - var headersAreValid = headers['rollbar-replay-enabled'] === 'true' && headers['rollbar-replay-ratelimit-remaining'] !== '0'; - return hasNoErrors && headersAreValid; + }, { + key: "removeListeners", + value: function removeListeners(section) { + var r; + while (this.eventRemovers[section].length) { + r = this.eventRemovers[section].shift(); + r(); + } } }]); }(); +function _isUrlObject(input) { + return typeof URL !== 'undefined' && input instanceof URL; +} +/* harmony default export */ var browser_telemetry = (Instrumenter); +;// ./src/browser/wrapGlobals.js +function wrapGlobals(window, handler, shim) { + if (!window) { + return; + } + // Adapted from https://github.com/bugsnag/bugsnag-js + var globals = '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'.split(','); + var i, global; + for (i = 0; i < globals.length; ++i) { + global = globals[i]; + if (window[global] && window[global].prototype) { + _extendListenerPrototype(handler, window[global].prototype, shim); + } + } +} +function _extendListenerPrototype(handler, prototype, shim) { + if (hasOwn(prototype, 'addEventListener')) { + var oldAddEventListener = prototype.addEventListener; + while (oldAddEventListener._rollbarOldAdd && oldAddEventListener.belongsToShim) { + oldAddEventListener = oldAddEventListener._rollbarOldAdd; + } + var addFn = function addFn(event, callback, bubble) { + oldAddEventListener.call(this, event, handler.wrap(callback), bubble); + }; + addFn._rollbarOldAdd = oldAddEventListener; + addFn.belongsToShim = shim; + prototype.addEventListener = addFn; + var oldRemoveEventListener = prototype.removeEventListener; + while (oldRemoveEventListener._rollbarOldRemove && oldRemoveEventListener.belongsToShim) { + oldRemoveEventListener = oldRemoveEventListener._rollbarOldRemove; + } + var removeFn = function removeFn(event, callback, bubble) { + oldRemoveEventListener.call(this, event, callback && callback._rollbar_wrapped || callback, bubble); + }; + removeFn._rollbarOldRemove = oldRemoveEventListener; + removeFn.belongsToShim = shim; + prototype.removeEventListener = removeFn; + } +} +/* harmony default export */ var browser_wrapGlobals = (wrapGlobals); ;// ./src/browser/rollbarReplay.js @@ -23088,6 +23287,7 @@ core.setComponents({ }); /* harmony default export */ var rollbarReplay = (core); ;// ./src/browser/bundles/rollbarReplay.js +/* unused harmony import specifier */ var rollbarReplay_rollbar; var options = typeof window !== 'undefined' && window._rollbarConfig; var alias = options && options.globalAlias || 'Rollbar'; @@ -23105,6 +23305,6 @@ if (!shimRunning && options) { self.rollbar = rollbarReplay; self._rollbarDidLoad = true; } -/* harmony default export */ var bundles_rollbarReplay = ((/* unused pure expression or super */ null && (rollbar))); +/* harmony default export */ var bundles_rollbarReplay = ((/* unused pure expression or super */ null && (rollbarReplay_rollbar))); /******/ })() ; \ No newline at end of file diff --git a/dist/rollbar.replay.js.map b/dist/rollbar.replay.js.map index 16e8571c6..46f2cd31b 100644 --- a/dist/rollbar.replay.js.map +++ b/dist/rollbar.replay.js.map @@ -1 +1 @@ -{"version":3,"file":"rollbar.replay.js","mappings":"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","sources":["webpack://rollbar/webpack/bootstrap","webpack://rollbar/webpack/runtime/define property getters","webpack://rollbar/webpack/runtime/hasOwnProperty shorthand","webpack://rollbar/webpack/runtime/make namespace object","webpack://rollbar/./src/merge.js","webpack://rollbar/./src/utility.js","webpack://rollbar/./src/rateLimiter.js","webpack://rollbar/./src/queue.js","webpack://rollbar/./src/notifier.js","webpack://rollbar/./src/rollbar.js","webpack://rollbar/./src/apiUtility.js","webpack://rollbar/./src/api.js","webpack://rollbar/./src/logger.js","webpack://rollbar/./src/browser/globalSetup.js","webpack://rollbar/./src/browser/transport/fetch.js","webpack://rollbar/./src/browser/transport/xhr.js","webpack://rollbar/./src/browser/transport.js","webpack://rollbar/./src/browser/url.js","webpack://rollbar/./node_modules/error-stack-parser-es/dist/lite.mjs","webpack://rollbar/./node_modules/error-stack-parser-es/dist/index.mjs","webpack://rollbar/./src/errorParser.js","webpack://rollbar/./src/browser/transforms.js","webpack://rollbar/./src/transforms.js","webpack://rollbar/./src/browser/predicates.js","webpack://rollbar/./src/predicates.js","webpack://rollbar/./src/browser/replay/defaults.js","webpack://rollbar/./src/tracing/defaults.js","webpack://rollbar/./src/defaults.js","webpack://rollbar/./src/browser/defaults.js","webpack://rollbar/./src/browser/core.js","webpack://rollbar/./src/telemetry.js","webpack://rollbar/./src/utility/headers.js","webpack://rollbar/./src/utility/replace.js","webpack://rollbar/./src/utility/traverse.js","webpack://rollbar/./src/scrub.js","webpack://rollbar/./src/browser/domUtility.js","webpack://rollbar/./src/browser/telemetry.js","webpack://rollbar/./src/browser/wrapGlobals.js","webpack://rollbar/./src/truncation.js","webpack://rollbar/./src/tracing/context.js","webpack://rollbar/./src/tracing/contextManager.js","webpack://rollbar/./src/tracing/id.js","webpack://rollbar/./src/tracing/session.js","webpack://rollbar/./src/tracing/hrtime.js","webpack://rollbar/./src/tracing/exporter.js","webpack://rollbar/./src/tracing/spanProcessor.js","webpack://rollbar/./src/tracing/span.js","webpack://rollbar/./src/tracing/tracer.js","webpack://rollbar/./src/tracing/tracing.js","webpack://rollbar/../../rrweb/dist/rrweb.js","webpack://rollbar/../src/index.ts","webpack://rollbar/./src/browser/replay/recorder.js","webpack://rollbar/./src/browser/replay/replayPredicates.js","webpack://rollbar/./src/browser/replay/scheduledCapture.js","webpack://rollbar/./src/browser/replay/scheduledStreamCapture.js","webpack://rollbar/./src/browser/replay/replay.js","webpack://rollbar/./src/browser/rollbarReplay.js","webpack://rollbar/./src/browser/bundles/rollbarReplay.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(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__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\n\nvar isPlainObject = function isPlainObject(obj) {\n if (!obj || toStr.call(obj) !== '[object Object]') {\n return false;\n }\n\n var hasOwnConstructor = hasOwn.call(obj, 'constructor');\n var hasIsPrototypeOf =\n obj.constructor &&\n obj.constructor.prototype &&\n hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n // Not own constructor property must be Object\n if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n return false;\n }\n\n // Own properties are enumerated firstly, so to speed up,\n // if last one is own, then all properties are own.\n var key;\n for (key in obj) {\n /**/\n }\n\n return typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\nfunction merge() {\n var i,\n src,\n copy,\n clone,\n name,\n result = Object.create(null), // no prototype pollution on Object\n current = null,\n length = arguments.length;\n\n for (i = 0; i < length; i++) {\n current = arguments[i];\n if (current == null) {\n continue;\n }\n\n for (name in current) {\n src = result[name];\n copy = current[name];\n if (result !== copy) {\n if (copy && isPlainObject(copy)) {\n clone = src && isPlainObject(src) ? src : {};\n result[name] = merge(clone, copy);\n } else if (typeof copy !== 'undefined') {\n result[name] = copy;\n }\n }\n }\n }\n return result;\n}\n\nexport default merge;\n","import merge from './merge.js';\n\n/*\n * isType - Given a Javascript value and a string, returns true if the type of the value matches the\n * given string.\n *\n * @param x - any value\n * @param t - a lowercase string containing one of the following type names:\n * - undefined\n * - null\n * - error\n * - number\n * - boolean\n * - string\n * - symbol\n * - function\n * - object\n * - array\n * @returns true if x is of type t, otherwise false\n */\nfunction isType(x, t) {\n return t === typeName(x);\n}\n\n/*\n * typeName - Given a Javascript value, returns the type of the object as a string\n */\nfunction typeName(x) {\n var name = typeof x;\n if (name !== 'object') {\n return name;\n }\n if (!x) {\n return 'null';\n }\n if (x instanceof Error) {\n return 'error';\n }\n return {}.toString\n .call(x)\n .match(/\\s([a-zA-Z]+)/)[1]\n .toLowerCase();\n}\n\n/* isFunction - a convenience function for checking if a value is a function\n *\n * @param f - any value\n * @returns true if f is a function, otherwise false\n */\nfunction isFunction(f) {\n return isType(f, 'function');\n}\n\n/* isNativeFunction - a convenience function for checking if a value is a native JS function\n *\n * @param f - any value\n * @returns true if f is a native JS function, otherwise false\n */\nfunction isNativeFunction(f) {\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n var funcMatchString = Function.prototype.toString\n .call(Object.prototype.hasOwnProperty)\n .replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?');\n var reIsNative = RegExp('^' + funcMatchString + '$');\n return isObject(f) && reIsNative.test(f);\n}\n\n/* isObject - Checks if the argument is an object\n *\n * @param value - any value\n * @returns true is value is an object function is an object)\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/* isString - Checks if the argument is a string\n *\n * @param value - any value\n * @returns true if value is a string\n */\nfunction isString(value) {\n return typeof value === 'string' || value instanceof String;\n}\n\n/**\n * isFiniteNumber - determines whether the passed value is a finite number\n *\n * @param {*} n - any value\n * @returns true if value is a finite number\n */\nfunction isFiniteNumber(n) {\n return Number.isFinite(n);\n}\n\n/*\n * isDefined - a convenience function for checking if a value is not equal to undefined\n *\n * @param u - any value\n * @returns true if u is anything other than undefined\n */\nfunction isDefined(u) {\n return !isType(u, 'undefined');\n}\n\n/*\n * isIterable - convenience function for checking if a value can be iterated, essentially\n * whether it is an object or an array.\n *\n * @param i - any value\n * @returns true if i is an object or an array as determined by `typeName`\n */\nfunction isIterable(i) {\n var type = typeName(i);\n return type === 'object' || type === 'array';\n}\n\n/*\n * isError - convenience function for checking if a value is of an error type\n *\n * @param e - any value\n * @returns true if e is an error\n */\nfunction isError(e) {\n // Detect both Error and Firefox Exception type\n return isType(e, 'error') || isType(e, 'exception');\n}\n\n/* isPromise - a convenience function for checking if a value is a promise\n *\n * @param p - any value\n * @returns true if f is a function, otherwise false\n */\nfunction isPromise(p) {\n return isObject(p) && isType(p.then, 'function');\n}\n\n/**\n * isBrowser - a convenience function for checking if the code is running in a browser\n *\n * @returns true if the code is running in a browser environment\n */\nfunction isBrowser() {\n return typeof window !== 'undefined';\n}\n\nfunction redact() {\n return '********';\n}\n\n// from http://stackoverflow.com/a/8809472/1138191\nfunction uuid4() {\n var d = now();\n var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(\n /[xy]/g,\n function (c) {\n var r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : (r & 0x7) | 0x8).toString(16);\n },\n );\n return uuid;\n}\n\nvar LEVELS = {\n debug: 0,\n info: 1,\n warning: 2,\n error: 3,\n critical: 4,\n};\n\nfunction sanitizeHref(url) {\n try {\n const urlObject = new URL(url);\n if (urlObject.password) {\n urlObject.password = redact();\n }\n if (urlObject.search) {\n urlObject.search = redact();\n }\n return urlObject.toString();\n } catch (_) {\n return url; // Return original URL if parsing fails\n }\n}\n\nfunction sanitizeUrl(url) {\n var baseUrlParts = parseUri(url);\n if (!baseUrlParts) {\n return '(unknown)';\n }\n\n // remove a trailing # if there is no anchor\n if (baseUrlParts.anchor === '') {\n baseUrlParts.source = baseUrlParts.source.replace('#', '');\n }\n\n url = baseUrlParts.source.replace('?' + baseUrlParts.query, '');\n return url;\n}\n\nvar parseUriOptions = {\n strictMode: false,\n key: [\n 'source',\n 'protocol',\n 'authority',\n 'userInfo',\n 'user',\n 'password',\n 'host',\n 'port',\n 'relative',\n 'path',\n 'directory',\n 'file',\n 'query',\n 'anchor',\n ],\n q: {\n name: 'queryKey',\n parser: /(?:^|&)([^&=]*)=?([^&]*)/g,\n },\n parser: {\n strict:\n /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?))?((((?:[^?#\\/]*\\/)*)([^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n loose:\n /^(?:(?![^:@]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n },\n};\n\nfunction parseUri(str) {\n if (!isType(str, 'string')) {\n return undefined;\n }\n\n var o = parseUriOptions;\n var m = o.parser[o.strictMode ? 'strict' : 'loose'].exec(str);\n var uri = {};\n\n for (var i = 0, l = o.key.length; i < l; ++i) {\n uri[o.key[i]] = m[i] || '';\n }\n\n uri[o.q.name] = {};\n uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {\n if ($1) {\n uri[o.q.name][$1] = $2;\n }\n });\n\n return uri;\n}\n\nfunction addParamsAndAccessTokenToPath(accessToken, options, params) {\n params = params || {};\n params.access_token = accessToken;\n var paramsArray = [];\n var k;\n for (k in params) {\n if (Object.prototype.hasOwnProperty.call(params, k)) {\n paramsArray.push([k, params[k]].join('='));\n }\n }\n var query = '?' + paramsArray.sort().join('&');\n\n options = options || {};\n options.path = options.path || '';\n var qs = options.path.indexOf('?');\n var h = options.path.indexOf('#');\n var p;\n if (qs !== -1 && (h === -1 || h > qs)) {\n p = options.path;\n options.path = p.substring(0, qs) + query + '&' + p.substring(qs + 1);\n } else {\n if (h !== -1) {\n p = options.path;\n options.path = p.substring(0, h) + query + p.substring(h);\n } else {\n options.path = options.path + query;\n }\n }\n}\n\nfunction formatUrl(u, protocol) {\n protocol = protocol || u.protocol;\n if (!protocol && u.port) {\n if (u.port === 80) {\n protocol = 'http:';\n } else if (u.port === 443) {\n protocol = 'https:';\n }\n }\n protocol = protocol || 'https:';\n\n if (!u.hostname) {\n return null;\n }\n var result = protocol + '//' + u.hostname;\n if (u.port) {\n result = result + ':' + u.port;\n }\n if (u.path) {\n result = result + u.path;\n }\n return result;\n}\n\nfunction stringify(obj, backup) {\n var value, error;\n try {\n value = JSON.stringify(obj);\n } catch (jsonError) {\n if (backup && isFunction(backup)) {\n try {\n value = backup(obj);\n } catch (backupError) {\n error = backupError;\n }\n } else {\n error = jsonError;\n }\n }\n return { error: error, value: value };\n}\n\nfunction maxByteSize(string) {\n // The transport will use utf-8, so assume utf-8 encoding.\n //\n // This minimal implementation will accurately count bytes for all UCS-2 and\n // single code point UTF-16. If presented with multi code point UTF-16,\n // which should be rare, it will safely overcount, not undercount.\n //\n // While robust utf-8 encoders exist, this is far smaller and far more performant.\n // For quickly counting payload size for truncation, smaller is better.\n\n var count = 0;\n var length = string.length;\n\n for (var i = 0; i < length; i++) {\n var code = string.charCodeAt(i);\n if (code < 128) {\n // up to 7 bits\n count = count + 1;\n } else if (code < 2048) {\n // up to 11 bits\n count = count + 2;\n } else if (code < 65536) {\n // up to 16 bits\n count = count + 3;\n }\n }\n\n return count;\n}\n\nfunction jsonParse(s) {\n var value, error;\n try {\n value = JSON.parse(s);\n } catch (e) {\n error = e;\n }\n return { error: error, value: value };\n}\n\nfunction makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n mode,\n backupMessage,\n errorParser,\n) {\n var location = {\n url: url || '',\n line: lineno,\n column: colno,\n };\n location.func = errorParser.guessFunctionName(location.url, location.line);\n location.context = errorParser.gatherContext(location.url, location.line);\n var href =\n typeof document !== 'undefined' &&\n document &&\n document.location &&\n document.location.href;\n var useragent =\n typeof window !== 'undefined' &&\n window &&\n window.navigator &&\n window.navigator.userAgent;\n return {\n mode: mode,\n message: error ? String(error) : message || backupMessage,\n url: href,\n stack: [location],\n useragent: useragent,\n };\n}\n\nfunction wrapCallback(logger, f) {\n return function (err, resp) {\n try {\n f(err, resp);\n } catch (e) {\n logger.error(e);\n }\n };\n}\n\nfunction nonCircularClone(obj) {\n var seen = [obj];\n\n function clone(obj, seen) {\n var value,\n name,\n newSeen,\n result = {};\n\n try {\n for (name in obj) {\n value = obj[name];\n\n if (value && (isType(value, 'object') || isType(value, 'array'))) {\n if (seen.includes(value)) {\n result[name] = 'Removed circular reference: ' + typeName(value);\n } else {\n newSeen = seen.slice();\n newSeen.push(value);\n result[name] = clone(value, newSeen);\n }\n continue;\n }\n\n result[name] = value;\n }\n } catch (e) {\n result = 'Failed cloning custom data: ' + e.message;\n }\n return result;\n }\n return clone(obj, seen);\n}\n\nfunction createItem(args, logger, notifier, requestKeys, lambdaContext) {\n var message, err, custom, callback, request;\n var arg;\n var extraArgs = [];\n var diagnostic = {};\n var argTypes = [];\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n argTypes.push(typ);\n switch (typ) {\n case 'undefined':\n break;\n case 'string':\n message ? extraArgs.push(arg) : (message = arg);\n break;\n case 'function':\n callback = wrapCallback(logger, arg);\n break;\n case 'date':\n extraArgs.push(arg);\n break;\n case 'error':\n case 'domexception':\n case 'exception': // Firefox Exception type\n err ? extraArgs.push(arg) : (err = arg);\n break;\n case 'object':\n case 'array':\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n err ? extraArgs.push(arg) : (err = arg);\n break;\n }\n if (requestKeys && typ === 'object' && !request) {\n for (var j = 0, len = requestKeys.length; j < len; ++j) {\n if (arg[requestKeys[j]] !== undefined) {\n request = arg;\n break;\n }\n }\n if (request) {\n break;\n }\n }\n custom ? extraArgs.push(arg) : (custom = arg);\n break;\n default:\n if (\n arg instanceof Error ||\n (typeof DOMException !== 'undefined' && arg instanceof DOMException)\n ) {\n err ? extraArgs.push(arg) : (err = arg);\n break;\n }\n extraArgs.push(arg);\n }\n }\n\n // if custom is an array this turns it into an object with integer keys\n if (custom) custom = nonCircularClone(custom);\n\n if (extraArgs.length > 0) {\n if (!custom) custom = nonCircularClone({});\n custom.extraArgs = nonCircularClone(extraArgs);\n }\n\n var item = {\n message: message,\n err: err,\n custom: custom,\n timestamp: now(),\n callback: callback,\n notifier: notifier,\n diagnostic: diagnostic,\n uuid: uuid4(),\n };\n\n item.data = item.data || {};\n\n setCustomItemKeys(item, custom);\n\n if (requestKeys && request) {\n item.request = request;\n }\n if (lambdaContext) {\n item.lambdaContext = lambdaContext;\n }\n item._originalArgs = args;\n item.diagnostic.original_arg_types = argTypes;\n return item;\n}\n\nfunction setCustomItemKeys(item, custom) {\n if (custom && custom.level !== undefined) {\n item.level = custom.level;\n delete custom.level;\n }\n if (custom && custom.skipFrames !== undefined) {\n item.skipFrames = custom.skipFrames;\n delete custom.skipFrames;\n }\n}\n\nfunction addErrorContext(item, errors) {\n var custom = item.data.custom || {};\n var contextAdded = false;\n\n try {\n for (var i = 0; i < errors.length; ++i) {\n if (errors[i].hasOwnProperty('rollbarContext')) {\n custom = merge(custom, nonCircularClone(errors[i].rollbarContext));\n contextAdded = true;\n }\n }\n\n // Avoid adding an empty object to the data.\n if (contextAdded) {\n item.data.custom = custom;\n }\n } catch (e) {\n item.diagnostic.error_context = 'Failed: ' + e.message;\n }\n}\n\nvar TELEMETRY_TYPES = [\n 'log',\n 'network',\n 'dom',\n 'navigation',\n 'error',\n 'manual',\n];\nvar TELEMETRY_LEVELS = ['critical', 'error', 'warning', 'info', 'debug'];\n\nfunction arrayIncludes(arr, val) {\n for (var k = 0; k < arr.length; ++k) {\n if (arr[k] === val) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction createTelemetryEvent(args) {\n var type, metadata, level;\n var arg;\n\n for (var i = 0, l = args.length; i < l; ++i) {\n arg = args[i];\n\n var typ = typeName(arg);\n switch (typ) {\n case 'string':\n if (!type && arrayIncludes(TELEMETRY_TYPES, arg)) {\n type = arg;\n } else if (!level && arrayIncludes(TELEMETRY_LEVELS, arg)) {\n level = arg;\n }\n break;\n case 'object':\n metadata = arg;\n break;\n default:\n break;\n }\n }\n var event = {\n type: type || 'manual',\n metadata: metadata || {},\n level: level,\n };\n\n return event;\n}\n\nfunction addItemAttributes(itemData, attributes) {\n itemData.attributes = itemData.attributes || [];\n for (const a of attributes) {\n if (a.value === undefined) {\n continue;\n }\n itemData.attributes.push(a);\n }\n}\n\n/*\n * get - given an obj/array and a keypath, return the value at that keypath or\n * undefined if not possible.\n *\n * @param obj - an object or array\n * @param path - a string of keys separated by '.' such as 'plugin.jquery.0.message'\n * which would correspond to 42 in `{plugin: {jquery: [{message: 42}]}}`\n */\nfunction get(obj, path) {\n if (!obj) {\n return undefined;\n }\n var keys = path.split('.');\n var result = obj;\n try {\n for (var i = 0, len = keys.length; i < len; ++i) {\n result = result[keys[i]];\n }\n } catch (e) {\n result = undefined;\n }\n return result;\n}\n\nfunction set(obj, path, value) {\n if (!obj) {\n return;\n }\n\n // Prevent prototype pollution by setting the prototype to null.\n Object.setPrototypeOf(obj, null);\n\n var keys = path.split('.');\n var len = keys.length;\n if (len < 1) {\n return;\n }\n if (len === 1) {\n obj[keys[0]] = value;\n return;\n }\n try {\n var temp = obj[keys[0]] || {};\n var replacement = temp;\n for (var i = 1; i < len - 1; ++i) {\n temp[keys[i]] = temp[keys[i]] || {};\n temp = temp[keys[i]];\n }\n temp[keys[len - 1]] = value;\n obj[keys[0]] = replacement;\n } catch (e) {\n return;\n }\n}\n\nfunction formatArgsAsString(args) {\n var i, len, arg;\n var result = [];\n for (i = 0, len = args.length; i < len; ++i) {\n arg = args[i];\n switch (typeName(arg)) {\n case 'object':\n arg = stringify(arg);\n arg = arg.error || arg.value;\n if (arg.length > 500) {\n arg = arg.substr(0, 497) + '...';\n }\n break;\n case 'null':\n arg = 'null';\n break;\n case 'undefined':\n arg = 'undefined';\n break;\n case 'symbol':\n arg = arg.toString();\n break;\n }\n result.push(arg);\n }\n return result.join(' ');\n}\n\nfunction now() {\n if (Date.now) {\n return +Date.now();\n }\n return +new Date();\n}\n\nfunction filterIp(requestData, captureIp) {\n if (!requestData || !requestData['user_ip'] || captureIp === true) {\n return;\n }\n var newIp = requestData['user_ip'];\n if (!captureIp) {\n newIp = null;\n } else {\n try {\n var parts;\n if (newIp.indexOf('.') !== -1) {\n parts = newIp.split('.');\n parts.pop();\n parts.push('0');\n newIp = parts.join('.');\n } else if (newIp.indexOf(':') !== -1) {\n parts = newIp.split(':');\n if (parts.length > 2) {\n var beginning = parts.slice(0, 3);\n var slashIdx = beginning[2].indexOf('/');\n if (slashIdx !== -1) {\n beginning[2] = beginning[2].substring(0, slashIdx);\n }\n var terminal = '0000:0000:0000:0000:0000';\n newIp = beginning.concat(terminal).join(':');\n }\n } else {\n newIp = null;\n }\n } catch (e) {\n newIp = null;\n }\n }\n requestData['user_ip'] = newIp;\n}\n\nfunction handleOptions(current, input, payload, logger) {\n var result = merge(current, input, payload);\n result = updateDeprecatedOptions(result, logger);\n if (!input || input.overwriteScrubFields) {\n return result;\n }\n if (input.scrubFields) {\n result.scrubFields = (current.scrubFields || []).concat(input.scrubFields);\n }\n return result;\n}\n\nfunction updateDeprecatedOptions(options, logger) {\n if (options.hostWhiteList && !options.hostSafeList) {\n options.hostSafeList = options.hostWhiteList;\n options.hostWhiteList = undefined;\n logger && logger.log('hostWhiteList is deprecated. Use hostSafeList.');\n }\n if (options.hostBlackList && !options.hostBlockList) {\n options.hostBlockList = options.hostBlackList;\n options.hostBlackList = undefined;\n logger && logger.log('hostBlackList is deprecated. Use hostBlockList.');\n }\n return options;\n}\n\nexport {\n addParamsAndAccessTokenToPath,\n createItem,\n addErrorContext,\n createTelemetryEvent,\n addItemAttributes,\n filterIp,\n formatArgsAsString,\n formatUrl,\n get,\n handleOptions,\n isError,\n isFiniteNumber,\n isFunction,\n isIterable,\n isNativeFunction,\n isObject,\n isString,\n isType,\n isPromise,\n isBrowser,\n jsonParse,\n LEVELS,\n makeUnhandledStackInfo,\n merge,\n now,\n redact,\n sanitizeHref,\n sanitizeUrl,\n set,\n stringify,\n maxByteSize,\n typeName,\n uuid4,\n};\n","import * as _ from './utility.js';\n\n/*\n * RateLimiter - an object that encapsulates the logic for counting items sent to Rollbar\n *\n * @param options - the same options that are accepted by configureGlobal offered as a convenience\n */\nfunction RateLimiter(options) {\n this.startTime = _.now();\n this.counter = 0;\n this.perMinCounter = 0;\n this.platform = null;\n this.platformOptions = {};\n this.configureGlobal(options);\n}\n\nRateLimiter.globalSettings = {\n startTime: _.now(),\n maxItems: undefined,\n itemsPerMinute: undefined,\n};\n\n/*\n * configureGlobal - set the global rate limiter options\n *\n * @param options - Only the following values are recognized:\n * startTime: a timestamp of the form returned by (new Date()).getTime()\n * maxItems: the maximum items\n * itemsPerMinute: the max number of items to send in a given minute\n */\nRateLimiter.prototype.configureGlobal = function (options) {\n if (options.startTime !== undefined) {\n RateLimiter.globalSettings.startTime = options.startTime;\n }\n if (options.maxItems !== undefined) {\n RateLimiter.globalSettings.maxItems = options.maxItems;\n }\n if (options.itemsPerMinute !== undefined) {\n RateLimiter.globalSettings.itemsPerMinute = options.itemsPerMinute;\n }\n};\n\n/*\n * shouldSend - determine if we should send a given item based on rate limit settings\n *\n * @param item - the item we are about to send\n * @returns An object with the following structure:\n * error: (Error|null)\n * shouldSend: bool\n * payload: (Object|null)\n * If shouldSend is false, the item passed as a parameter should not be sent to Rollbar, and\n * exactly one of error or payload will be non-null. If error is non-null, the returned Error will\n * describe the situation, but it means that we were already over a rate limit (either globally or\n * per minute) when this item was checked. If error is null, and therefore payload is non-null, it\n * means this item put us over the global rate limit and the payload should be sent to Rollbar in\n * place of the passed in item.\n */\nRateLimiter.prototype.shouldSend = function (item, now) {\n now = now || _.now();\n var elapsedTime = now - this.startTime;\n if (elapsedTime < 0 || elapsedTime >= 60000) {\n this.startTime = now;\n this.perMinCounter = 0;\n }\n\n var globalRateLimit = RateLimiter.globalSettings.maxItems;\n var globalRateLimitPerMin = RateLimiter.globalSettings.itemsPerMinute;\n\n if (checkRate(item, globalRateLimit, this.counter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n globalRateLimit + ' max items reached',\n false,\n );\n } else if (checkRate(item, globalRateLimitPerMin, this.perMinCounter)) {\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n globalRateLimitPerMin + ' items per minute reached',\n false,\n );\n }\n this.counter++;\n this.perMinCounter++;\n\n var shouldSend = !checkRate(item, globalRateLimit, this.counter);\n var perMinute = shouldSend;\n shouldSend =\n shouldSend && !checkRate(item, globalRateLimitPerMin, this.perMinCounter);\n return shouldSendValue(\n this.platform,\n this.platformOptions,\n null,\n shouldSend,\n globalRateLimit,\n globalRateLimitPerMin,\n perMinute,\n );\n};\n\nRateLimiter.prototype.setPlatformOptions = function (platform, options) {\n this.platform = platform;\n this.platformOptions = options;\n};\n\n/* Helpers */\n\nfunction checkRate(item, limit, counter) {\n return !item.ignoreRateLimit && limit >= 1 && counter > limit;\n}\n\nfunction shouldSendValue(\n platform,\n options,\n error,\n shouldSend,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n var payload = null;\n if (error) {\n error = new Error(error);\n }\n if (!error && !shouldSend) {\n payload = rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n );\n }\n return { error: error, shouldSend: shouldSend, payload: payload };\n}\n\nfunction rateLimitPayload(\n platform,\n options,\n globalRateLimit,\n limitPerMin,\n perMinute,\n) {\n var environment =\n options.environment || (options.payload && options.payload.environment);\n var msg;\n if (perMinute) {\n msg = 'item per minute limit reached, ignoring errors until timeout';\n } else {\n msg = 'maxItems has been hit, ignoring errors until reset.';\n }\n var item = {\n body: {\n message: {\n body: msg,\n extra: {\n maxItems: globalRateLimit,\n itemsPerMinute: limitPerMin,\n },\n },\n },\n language: 'javascript',\n environment: environment,\n notifier: {\n version:\n (options.notifier && options.notifier.version) || options.version,\n },\n };\n if (platform === 'browser') {\n item.platform = 'browser';\n item.framework = 'browser-js';\n item.notifier.name = 'rollbar-browser-js';\n } else if (platform === 'server') {\n item.framework = options.framework || 'node-js';\n item.notifier.name = options.notifier.name;\n } else if (platform === 'react-native') {\n item.framework = options.framework || 'react-native';\n item.notifier.name = options.notifier.name;\n }\n return item;\n}\n\nexport default RateLimiter;\n","import * as _ from './utility.js';\n\n/**\n * Queue - an object which handles which handles a queue of items to be sent to Rollbar.\n * This object handles rate limiting via a passed in rate limiter, retries based on connection\n * errors, and filtering of items based on a set of configurable predicates. The communication to\n * the backend is performed via a given API object.\n */\nclass Queue {\n /**\n * @param rateLimiter - An object which conforms to the interface\n * `rateLimiter.shouldSend(item) -> bool`\n * @param api - An object which conforms to the interface\n * `api.postItem(payload, function(err, response))`\n * @param logger - An object used to log verbose messages if desired\n * @param options - see `Queue.prototype.configure`\n * @param replay - Optional `Replay` for coordinating session replay with error occurrences\n */\n constructor(rateLimiter, api, logger, options, replay) {\n this.rateLimiter = rateLimiter;\n this.api = api;\n this.logger = logger;\n this.options = options;\n this.replay = replay;\n this.predicates = [];\n this.pendingItems = [];\n this.pendingRequests = [];\n this.retryQueue = [];\n this.retryHandle = null;\n this.waitCallback = null;\n this.waitIntervalID = null;\n }\n\n /**\n * configure - updates the options this queue uses\n *\n * @param options\n */\n configure(options) {\n this.api?.configure(options);\n const oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n return this;\n }\n\n /**\n * addPredicate - adds a predicate to the end of the list of predicates for this queue\n *\n * @param predicate - function(item, options) -> (bool|{err: Error})\n * Returning true means that this predicate passes and the item is okay to go on the queue\n * Returning false means do not add the item to the queue, but it is not an error\n * Returning {err: Error} means do not add the item to the queue, and the given error explains why\n * Returning {err: undefined} is equivalent to returning true but don't do that\n */\n addPredicate(predicate) {\n if (_.isFunction(predicate)) {\n this.predicates.push(predicate);\n }\n return this;\n }\n\n addPendingItem(item) {\n this.pendingItems.push(item);\n }\n\n removePendingItem(item) {\n const idx = this.pendingItems.indexOf(item);\n if (idx !== -1) {\n this.pendingItems.splice(idx, 1);\n }\n }\n\n /**\n * addItem - Send an item to the Rollbar API if all of the predicates are satisfied\n *\n * @param item - Item instance with the payload to send to the backend\n * @param callback - function(error, repsonse) which will be called with the response from the API\n * in the case of a success, otherwise response will be null and error will have a value. If both\n * error and response are null then the item was stopped by a predicate which did not consider this\n * to be an error condition, but nonetheless did not send the item to the API.\n * @param originalError - The original error before any transformations that is to be logged if any\n * @param originalItem - The original item before transforms, used in pendingItems queue\n */\n addItem(item, callback, originalError, originalItem) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {\n return;\n };\n }\n const data = item.data;\n const predicateResult = this._applyPredicates(data);\n if (predicateResult.stop) {\n this.removePendingItem(originalItem);\n callback(predicateResult.err);\n return;\n }\n this._maybeLog(data, originalError);\n this.removePendingItem(originalItem);\n if (!this.options.transmit) {\n callback(new Error('Transmit disabled'));\n return;\n }\n\n if (this.replay && data.body) {\n item.replayId = this.replay.capture(null, data.uuid, {\n type: 'occurrence',\n level: item.level,\n });\n\n if (item.replayId) {\n _.addItemAttributes(item.data, [\n { key: 'replay_id', value: item.replayId },\n ]);\n }\n }\n\n this.pendingRequests.push(data);\n try {\n this._makeApiRequest(data, (err, resp, headers) => {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay.sendOrDiscardReplay(item.replayId, err, resp, headers);\n }\n\n callback(err, resp);\n });\n } catch (err) {\n this._dequeuePendingRequest(data);\n\n if (item.replayId) {\n this.replay?.discard(item.replayId);\n }\n\n callback(err);\n }\n }\n\n /**\n * wait - Stop any further errors from being added to the queue, and get called back when all items\n * currently processing have finished sending to the backend.\n *\n * @param callback - function() called when all pending items have been sent\n */\n wait(callback) {\n if (!_.isFunction(callback)) {\n return;\n }\n this.waitCallback = callback;\n if (this._maybeCallWait()) {\n return;\n }\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitIntervalID = setInterval(() => {\n this._maybeCallWait();\n }, 500);\n }\n\n /**\n * Sequentially applies the predicates that have been added to the queue to the\n * given item with the currently configured options.\n *\n * @param item - An item in the queue\n * @returns {stop: bool, err: (Error|null)} - stop being true means do not add item to the queue,\n * the error value should be passed up to a callbak if we are stopping.\n */\n _applyPredicates(item) {\n let p = null;\n for (let i = 0, len = this.predicates.length; i < len; i++) {\n p = this.predicates[i](item, this.options);\n if (!p || p.err !== undefined) {\n return { stop: true, err: p.err };\n }\n }\n return { stop: false, err: null };\n }\n\n /**\n * Send an item to Rollbar, callback when done, if there is an error make an\n * effort to retry if we are configured to do so.\n *\n * @param item - an item ready to send to the backend\n * @param callback - function(err, response)\n */\n _makeApiRequest(item, callback) {\n const rateLimitResponse = this.rateLimiter.shouldSend(item);\n if (rateLimitResponse.shouldSend) {\n this.api.postItem(item, (err, resp, headers) => {\n if (err) {\n this._maybeRetry(err, item, callback);\n } else {\n callback(err, resp, headers);\n }\n });\n } else if (rateLimitResponse.error) {\n callback(rateLimitResponse.error);\n } else {\n this.api.postItem(rateLimitResponse.payload, callback);\n }\n }\n\n // These are errors basically mean there is no internet connection\n static RETRIABLE_ERRORS = [\n 'ECONNRESET',\n 'ENOTFOUND',\n 'ESOCKETTIMEDOUT',\n 'ETIMEDOUT',\n 'ECONNREFUSED',\n 'EHOSTUNREACH',\n 'EPIPE',\n 'EAI_AGAIN',\n ];\n\n /**\n * Given the error returned by the API, decide if we should retry or just callback\n * with the error.\n *\n * @param err - an error returned by the API transport\n * @param item - the item that was trying to be sent when this error occured\n * @param callback - function(err, response)\n */\n _maybeRetry(err, item, callback) {\n let shouldRetry = false;\n if (this.options.retryInterval) {\n for (let i = 0, len = Queue.RETRIABLE_ERRORS.length; i < len; i++) {\n if (err.code === Queue.RETRIABLE_ERRORS[i]) {\n shouldRetry = true;\n break;\n }\n }\n if (shouldRetry && _.isFiniteNumber(this.options.maxRetries)) {\n item.retries = item.retries ? item.retries + 1 : 1;\n if (item.retries > this.options.maxRetries) {\n shouldRetry = false;\n }\n }\n }\n if (shouldRetry) {\n this._retryApiRequest(item, callback);\n } else {\n callback(err);\n }\n }\n\n /**\n * Add an item and a callback to a queue and possibly start a timer to process\n * that queue based on the retryInterval in the options for this queue.\n *\n * @param item - an item that failed to send due to an error we deem retriable\n * @param callback - function(err, response)\n */\n _retryApiRequest(item, callback) {\n this.retryQueue.push({ item, callback });\n\n if (!this.retryHandle) {\n this.retryHandle = setInterval(() => {\n while (this.retryQueue.length) {\n const retryObject = this.retryQueue.shift();\n this._makeApiRequest(retryObject.item, retryObject.callback);\n }\n }, this.options.retryInterval);\n }\n }\n\n /**\n * Removes the item from the pending request queue, this queue is used to\n * enable to functionality of providing a callback that clients can pass to `wait` to be notified\n * when the pending request queue has been emptied. This must be called when the API finishes\n * processing this item. If a `wait` callback is configured, it is called by this function.\n *\n * @param item - the item previously added to the pending request queue\n */\n _dequeuePendingRequest(item) {\n const idx = this.pendingRequests.indexOf(item);\n if (idx !== -1) {\n this.pendingRequests.splice(idx, 1);\n this._maybeCallWait();\n }\n }\n\n _maybeLog(data, originalError) {\n if (this.logger && this.options.verbose) {\n let message =\n originalError ||\n _.get(data, 'body.trace.exception.message') ||\n _.get(data, 'body.trace_chain.0.exception.message');\n if (message) {\n this.logger.error(message);\n return;\n }\n message = _.get(data, 'body.message.body');\n if (message) {\n this.logger.log(message);\n }\n }\n }\n\n _maybeCallWait() {\n if (\n _.isFunction(this.waitCallback) &&\n this.pendingItems.length === 0 &&\n this.pendingRequests.length === 0\n ) {\n if (this.waitIntervalID) {\n this.waitIntervalID = clearInterval(this.waitIntervalID);\n }\n this.waitCallback();\n return true;\n }\n return false;\n }\n}\n\nexport default Queue;\n","import * as _ from './utility.js';\n\n/*\n * Notifier - the internal object responsible for delegating between the client exposed API, the\n * chain of transforms necessary to turn an item into something that can be sent to Rollbar, and the\n * queue which handles the communcation with the Rollbar API servers.\n *\n * @param queue - an object that conforms to the interface: addItem(item, callback)\n * @param options - an object representing the options to be set for this notifier, this should have\n * any defaults already set by the caller\n */\nfunction Notifier(queue, options) {\n this.queue = queue;\n this.options = options;\n this.transforms = [];\n this.diagnostic = {};\n}\n\n/*\n * configure - updates the options for this notifier with the passed in object\n *\n * @param options - an object which gets merged with the current options set on this notifier\n * @returns this\n */\nNotifier.prototype.configure = function (options) {\n this.queue && this.queue.configure(options);\n var oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n return this;\n};\n\n/*\n * addTransform - adds a transform onto the end of the queue of transforms for this notifier\n *\n * @param transform - a function which takes three arguments:\n * * item: An Object representing the data to eventually be sent to Rollbar\n * * options: The current value of the options for this notifier\n * * callback: function(err: (Null|Error), item: (Null|Object)) the transform must call this\n * callback with a null value for error if it wants the processing chain to continue, otherwise\n * with an error to terminate the processing. The item should be the updated item after this\n * transform is finished modifying it.\n */\nNotifier.prototype.addTransform = function (transform) {\n if (_.isFunction(transform)) {\n this.transforms.push(transform);\n }\n return this;\n};\n\n/*\n * log - the internal log function which applies the configured transforms and then pushes onto the\n * queue to be sent to the backend.\n *\n * @param item - An object with the following structure:\n * message [String] - An optional string to be sent to rollbar\n * error [Error] - An optional error\n *\n * @param callback - A function of type function(err, resp) which will be called with exactly one\n * null argument and one non-null argument. The callback will be called once, either during the\n * transform stage if an error occurs inside a transform, or in response to the communication with\n * the backend. The second argument will be the response from the backend in case of success.\n */\nNotifier.prototype.log = function (item, callback) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n\n if (!this.options.enabled) {\n return callback(new Error('Rollbar is not enabled'));\n }\n\n this.queue.addPendingItem(item);\n var originalError = item.err;\n this._applyTransforms(\n item,\n function (err, i) {\n if (err) {\n this.queue.removePendingItem(item);\n return callback(err, null);\n }\n this.queue.addItem(i, callback, originalError, item);\n }.bind(this),\n );\n};\n\n/* Internal */\n\n/*\n * _applyTransforms - Applies the transforms that have been added to this notifier sequentially. See\n * `addTransform` for more information.\n *\n * @param item - An item to be transformed\n * @param callback - A function of type function(err, item) which will be called with a non-null\n * error and a null item in the case of a transform failure, or a null error and non-null item after\n * all transforms have been applied.\n */\nNotifier.prototype._applyTransforms = function (item, callback) {\n var transformIndex = -1;\n var transformsLength = this.transforms.length;\n var transforms = this.transforms;\n var options = this.options;\n\n var cb = function (err, i) {\n if (err) {\n callback(err, null);\n return;\n }\n\n transformIndex++;\n\n if (transformIndex === transformsLength) {\n callback(null, i);\n return;\n }\n\n transforms[transformIndex](i, options, cb);\n };\n\n cb(null, item);\n};\n\nexport default Notifier;\n","import RateLimiter from './rateLimiter.js';\nimport Queue from './queue.js';\nimport Notifier from './notifier.js';\nimport * as _ from './utility.js';\n\n/*\n * Rollbar - the interface to Rollbar\n *\n * @param options\n * @param api\n * @param logger\n */\nfunction Rollbar(options, api, logger, telemeter, tracing, replay, platform) {\n this.options = _.merge(options);\n this.logger = logger;\n Rollbar.rateLimiter.configureGlobal(this.options);\n Rollbar.rateLimiter.setPlatformOptions(platform, this.options);\n this.api = api;\n this.queue = new Queue(\n Rollbar.rateLimiter,\n api,\n logger,\n this.options,\n replay,\n );\n\n this.tracing = tracing;\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is created\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier = new Notifier(this.queue, this.options);\n this.telemeter = telemeter;\n setStackTraceLimit(options);\n this.lastError = null;\n this.lastErrorHash = 'none';\n}\n\nvar defaultOptions = {\n maxItems: 0,\n itemsPerMinute: 60,\n};\n\nRollbar.rateLimiter = new RateLimiter(defaultOptions);\n\nRollbar.prototype.global = function (options) {\n Rollbar.rateLimiter.configureGlobal(options);\n return this;\n};\n\nRollbar.prototype.configure = function (options, payloadData) {\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.merge(oldOptions, options, payload);\n\n // Legacy OpenTracing support\n // This must happen before the Notifier is configured\n var tracer = this.options.tracer || null;\n if (validateTracer(tracer)) {\n this.tracer = tracer;\n // set to a string for api response serialization\n this.options.tracer = 'opentracing-tracer-enabled';\n this.options._configuredOptions.tracer = 'opentracing-tracer-enabled';\n } else {\n this.tracer = null;\n }\n\n this.notifier && this.notifier.configure(this.options);\n this.telemeter && this.telemeter.configure(this.options);\n setStackTraceLimit(options);\n this.global(this.options);\n\n if (validateTracer(options.tracer)) {\n this.tracer = options.tracer;\n }\n\n return this;\n};\n\nRollbar.prototype.log = function (item) {\n var level = this._defaultLogLevel();\n return this._log(level, item);\n};\n\nRollbar.prototype.debug = function (item) {\n this._log('debug', item);\n};\n\nRollbar.prototype.info = function (item) {\n this._log('info', item);\n};\n\nRollbar.prototype.warn = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.warning = function (item) {\n this._log('warning', item);\n};\n\nRollbar.prototype.error = function (item) {\n this._log('error', item);\n};\n\nRollbar.prototype.critical = function (item) {\n this._log('critical', item);\n};\n\nRollbar.prototype.wait = function (callback) {\n this.queue.wait(callback);\n};\n\nRollbar.prototype.captureEvent = function (type, metadata, level) {\n return this.telemeter && this.telemeter.captureEvent(type, metadata, level);\n};\n\nRollbar.prototype.captureDomContentLoaded = function (ts) {\n return this.telemeter && this.telemeter.captureDomContentLoaded(ts);\n};\n\nRollbar.prototype.captureLoad = function (ts) {\n return this.telemeter && this.telemeter.captureLoad(ts);\n};\n\nRollbar.prototype.buildJsonPayload = function (item) {\n return this.api.buildJsonPayload(item);\n};\n\nRollbar.prototype.sendJsonPayload = function (jsonPayload) {\n this.api.postJsonPayload(jsonPayload);\n};\n\n/* Internal */\n\nRollbar.prototype._log = function (defaultLevel, item) {\n var callback;\n if (item.callback) {\n callback = item.callback;\n delete item.callback;\n }\n if (this.options.ignoreDuplicateErrors && this._sameAsLastError(item)) {\n if (callback) {\n var error = new Error('ignored identical item');\n error.item = item;\n callback(error);\n }\n return;\n }\n try {\n item.level = item.level || defaultLevel;\n\n this._addTracingAttributes(item);\n\n // Legacy OpenTracing support\n this._addTracingInfo(item);\n\n const telemeter = this.telemeter;\n if (telemeter) {\n telemeter._captureRollbarItem(item);\n item.telemetryEvents = telemeter.copyEvents() || [];\n }\n\n this.notifier.log(item, callback);\n } catch (e) {\n if (callback) {\n callback(e);\n }\n this.logger.error(e);\n }\n};\n\nRollbar.prototype._addTracingAttributes = function (item) {\n const span = this.tracing?.getSpan();\n\n const attributes = [\n { key: 'session_id', value: this.tracing?.sessionId },\n { key: 'span_id', value: span?.spanId },\n { key: 'trace_id', value: span?.traceId },\n ];\n _.addItemAttributes(item.data, attributes);\n\n span?.addEvent('rollbar.occurrence', [\n { key: 'rollbar.occurrence.uuid', value: item.uuid },\n ]);\n};\n\nRollbar.prototype._defaultLogLevel = function () {\n return this.options.logLevel || 'debug';\n};\n\nRollbar.prototype._sameAsLastError = function (item) {\n if (!item._isUncaught) {\n return false;\n }\n var itemHash = generateItemHash(item);\n if (this.lastErrorHash === itemHash) {\n return true;\n }\n this.lastError = item.err;\n this.lastErrorHash = itemHash;\n return false;\n};\n\nRollbar.prototype._addTracingInfo = function (item) {\n // Tracer validation occurs in the constructor\n // or in the Rollbar.prototype.configure methods\n if (this.tracer) {\n // add rollbar occurrence uuid to span\n var span = this.tracer.scope().active();\n\n if (validateSpan(span)) {\n span.setTag('rollbar.error_uuid', item.uuid);\n span.setTag('rollbar.has_error', true);\n span.setTag('error', true);\n span.setTag(\n 'rollbar.item_url',\n `https://rollbar.com/item/uuid/?uuid=${item.uuid}`,\n );\n span.setTag(\n 'rollbar.occurrence_url',\n `https://rollbar.com/occurrence/uuid/?uuid=${item.uuid}`,\n );\n\n // add span ID & trace ID to occurrence\n var opentracingSpanId = span.context().toSpanId();\n var opentracingTraceId = span.context().toTraceId();\n\n if (item.custom) {\n item.custom.opentracing_span_id = opentracingSpanId;\n item.custom.opentracing_trace_id = opentracingTraceId;\n } else {\n item.custom = {\n opentracing_span_id: opentracingSpanId,\n opentracing_trace_id: opentracingTraceId,\n };\n }\n }\n }\n};\n\nfunction generateItemHash(item) {\n var message = item.message || '';\n var stack = (item.err || {}).stack || String(item.err);\n return message + '::' + stack;\n}\n\n// Node.js, Chrome, Safari, and some other browsers support this property\n// which globally sets the number of stack frames returned in an Error object.\n// If a browser can't use it, no harm done.\nfunction setStackTraceLimit(options) {\n if (options.stackTraceLimit) {\n Error.stackTraceLimit = options.stackTraceLimit;\n }\n}\n\n/**\n * Validate the Tracer object provided to the Client\n * is valid for our Opentracing use case.\n * @param {opentracer.Tracer} tracer\n */\nfunction validateTracer(tracer) {\n if (!tracer) {\n return false;\n }\n\n if (!tracer.scope || typeof tracer.scope !== 'function') {\n return false;\n }\n\n var scope = tracer.scope();\n\n if (!scope || !scope.active || typeof scope.active !== 'function') {\n return false;\n }\n\n return true;\n}\n\n/**\n * Validate the Span object provided\n * @param {opentracer.Span} span\n */\nfunction validateSpan(span) {\n if (!span || !span.context || typeof span.context !== 'function') {\n return false;\n }\n\n var spanContext = span.context();\n\n if (\n !spanContext ||\n !spanContext.toSpanId ||\n !spanContext.toTraceId ||\n typeof spanContext.toSpanId !== 'function' ||\n typeof spanContext.toTraceId !== 'function'\n ) {\n return false;\n }\n\n return true;\n}\n\nexport default Rollbar;\n","import * as _ from './utility.js';\n\nfunction buildPayload(data) {\n if (!_.isType(data.context, 'string')) {\n var contextResult = _.stringify(data.context);\n if (contextResult.error) {\n data.context = \"Error: could not serialize 'context'\";\n } else {\n data.context = contextResult.value || '';\n }\n if (data.context.length > 255) {\n data.context = data.context.substr(0, 255);\n }\n }\n return {\n data: data,\n };\n}\n\nfunction getTransportFromOptions(options, defaults, url) {\n var hostname = defaults.hostname;\n var protocol = defaults.protocol;\n var port = defaults.port;\n var path = defaults.path;\n var search = defaults.search;\n var timeout = options.timeout;\n var transport = detectTransport(options);\n\n var proxy = options.proxy;\n if (options.endpoint) {\n var opts = url.parse(options.endpoint);\n hostname = opts.hostname;\n protocol = opts.protocol;\n port = opts.port;\n path = opts.pathname;\n search = opts.search;\n }\n return {\n timeout: timeout,\n hostname: hostname,\n protocol: protocol,\n port: port,\n path: path,\n search: search,\n proxy: proxy,\n transport: transport,\n };\n}\n\nfunction detectTransport(options) {\n var gWindow =\n (typeof window != 'undefined' && window) ||\n (typeof self != 'undefined' && self);\n var transport = options.defaultTransport || 'xhr';\n if (typeof gWindow.fetch === 'undefined') transport = 'xhr';\n if (typeof gWindow.XMLHttpRequest === 'undefined') transport = 'fetch';\n return transport;\n}\n\nfunction transportOptions(transport, method) {\n var protocol = transport.protocol || 'https:';\n var port =\n transport.port ||\n (protocol === 'http:' ? 80 : protocol === 'https:' ? 443 : undefined);\n var hostname = transport.hostname;\n var path = transport.path;\n var timeout = transport.timeout;\n var transportAPI = transport.transport;\n if (transport.search) {\n path = path + transport.search;\n }\n if (transport.proxy) {\n path = protocol + '//' + hostname + path;\n hostname = transport.proxy.host || transport.proxy.hostname;\n port = transport.proxy.port;\n protocol = transport.proxy.protocol || protocol;\n }\n return {\n timeout: timeout,\n protocol: protocol,\n hostname: hostname,\n path: path,\n port: port,\n method: method,\n transport: transportAPI,\n };\n}\n\nfunction appendPathToPath(base, path) {\n var baseTrailingSlash = /\\/$/.test(base);\n var pathBeginningSlash = /^\\//.test(path);\n\n if (baseTrailingSlash && pathBeginningSlash) {\n path = path.substring(1);\n } else if (!baseTrailingSlash && !pathBeginningSlash) {\n path = '/' + path;\n }\n\n return base + path;\n}\n\nexport {\n buildPayload,\n getTransportFromOptions,\n transportOptions,\n appendPathToPath,\n};\n","import * as _ from './utility.js';\nimport * as helpers from './apiUtility.js';\n\nvar defaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/item/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\nvar OTLPDefaultOptions = {\n hostname: 'api.rollbar.com',\n path: '/api/1/session/',\n search: null,\n version: '1',\n protocol: 'https:',\n port: 443,\n};\n\n/**\n * Api is an object that encapsulates methods of communicating with\n * the Rollbar API. It is a standard interface with some parts implemented\n * differently for server or browser contexts. It is an object that should\n * be instantiated when used so it can contain non-global options that may\n * be different for another instance of RollbarApi.\n *\n * @param options {\n * accessToken: the accessToken to use for posting items to rollbar\n * endpoint: an alternative endpoint to send errors to\n * must be a valid, fully qualified URL.\n * The default is: https://api.rollbar.com/api/1/item\n * proxy: if you wish to proxy requests provide an object\n * with the following keys:\n * host or hostname (required): foo.example.com\n * port (optional): 123\n * protocol (optional): https\n * }\n */\nfunction Api(options, transport, urllib, truncation) {\n this.options = options;\n this.transport = transport;\n this.url = urllib;\n this.truncation = truncation;\n this.accessToken = options.accessToken;\n this.transportOptions = _getTransport(options, urllib);\n this.OTLPTransportOptions = _getOTLPTransport(options, urllib);\n}\n\n/**\n * Wraps transport.post in a Promise to support async/await\n *\n * @param {Object} options - Options for the API request\n * @param {string} options.accessToken - The access token for authentication\n * @param {Object} options.transportOptions - Options for the transport\n * @param {Object} options.payload - The data payload to send\n * @returns {Promise} A promise that resolves with the response or rejects with an error\n * @private\n */\nApi.prototype._postPromise = function ({\n accessToken,\n options,\n payload,\n headers,\n}) {\n const self = this;\n return new Promise((resolve, reject) => {\n self.transport.post({\n accessToken,\n options,\n payload,\n headers,\n callback: (err, resp) => (err ? reject(err) : resolve(resp)),\n });\n });\n};\n\n/**\n *\n * @param data\n * @param callback\n */\nApi.prototype.postItem = function (data, callback) {\n const options = helpers.transportOptions(this.transportOptions, 'POST');\n const payload = helpers.buildPayload(data);\n const self = this;\n\n // ensure the network request is scheduled after the current tick.\n setTimeout(function () {\n self.transport.post({\n accessToken: self.accessToken,\n options,\n payload,\n callback,\n });\n }, 0);\n};\n\n/**\n * Posts spans to the Rollbar API using the session endpoint\n *\n * @param {Array} payload - The spans to send\n * @returns {Promise} A promise that resolves with the API response\n */\nApi.prototype.postSpans = async function (payload, headers = {}) {\n const options = helpers.transportOptions(this.OTLPTransportOptions, 'POST');\n\n return await this._postPromise({\n accessToken: this.accessToken,\n options,\n payload,\n headers,\n });\n};\n\n/**\n *\n * @param data\n * @param callback\n */\nApi.prototype.buildJsonPayload = function (data, callback) {\n var payload = helpers.buildPayload(data);\n\n var stringifyResult;\n if (this.truncation) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = _.stringify(payload);\n }\n\n if (stringifyResult.error) {\n if (callback) {\n callback(stringifyResult.error);\n }\n return null;\n }\n\n return stringifyResult.value;\n};\n\n/**\n *\n * @param jsonPayload\n * @param callback\n */\nApi.prototype.postJsonPayload = function (jsonPayload, callback) {\n var transportOptions = helpers.transportOptions(\n this.transportOptions,\n 'POST',\n );\n this.transport.postJsonPayload(\n this.accessToken,\n transportOptions,\n jsonPayload,\n callback,\n );\n};\n\nApi.prototype.configure = function (options) {\n var oldOptions = this.oldOptions;\n this.options = _.merge(oldOptions, options);\n this.transportOptions = _getTransport(this.options, this.url);\n this.OTLPTransportOptions = _getOTLPTransport(this.options, this.url);\n if (this.options.accessToken !== undefined) {\n this.accessToken = this.options.accessToken;\n }\n return this;\n};\n\nfunction _getTransport(options, url) {\n return helpers.getTransportFromOptions(options, defaultOptions, url);\n}\n\nfunction _getOTLPTransport(options, url) {\n options = { ...options, endpoint: options.tracing?.endpoint };\n return helpers.getTransportFromOptions(options, OTLPDefaultOptions, url);\n}\n\nexport default Api;\n","let log = () => {};\n\nconst levels = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n disable: 4,\n};\n\nconst logger = {\n error: (...args) => log('error', args),\n warn: (...args) => log('warn', args),\n info: (...args) => log('info', args),\n debug: (...args) => log('debug', args),\n log: (...args) => log('info', args),\n init: ({ logLevel }) => {\n log = function (level, args) {\n if (levels[level] < levels[logLevel]) return;\n\n args.unshift('Rollbar:');\n\n console[level].apply(console, args);\n };\n },\n};\n\nexport default logger;\n","function captureUncaughtExceptions(window, handler, shim) {\n if (!window) {\n return;\n }\n var oldOnError;\n\n if (typeof handler._rollbarOldOnError === 'function') {\n oldOnError = handler._rollbarOldOnError;\n } else if (window.onerror) {\n oldOnError = window.onerror;\n while (oldOnError._rollbarOldOnError) {\n oldOnError = oldOnError._rollbarOldOnError;\n }\n handler._rollbarOldOnError = oldOnError;\n }\n\n handler.handleAnonymousErrors();\n\n var fn = function () {\n var args = Array.prototype.slice.call(arguments, 0);\n _rollbarWindowOnError(window, handler, oldOnError, args);\n };\n if (shim) {\n fn._rollbarOldOnError = oldOnError;\n }\n window.onerror = fn;\n}\n\nfunction _rollbarWindowOnError(window, r, old, args) {\n if (window._rollbarWrappedError) {\n if (!args[4]) {\n args[4] = window._rollbarWrappedError;\n }\n if (!args[5]) {\n args[5] = window._rollbarWrappedError._rollbarContext;\n }\n window._rollbarWrappedError = null;\n }\n\n var ret = r.handleUncaughtException.apply(r, args);\n\n if (old) {\n old.apply(window, args);\n }\n\n // Let other chained onerror handlers above run before setting this.\n // If an error is thrown and caught within a chained onerror handler,\n // Error.prepareStackTrace() will see that one before the one we want.\n if (ret === 'anonymous') {\n r.anonymousErrorsPending += 1; // See Rollbar.prototype.handleAnonymousErrors()\n }\n}\n\nfunction captureUnhandledRejections(window, handler, shim) {\n if (!window) {\n return;\n }\n\n if (\n typeof window._rollbarURH === 'function' &&\n window._rollbarURH.belongsToShim\n ) {\n window.removeEventListener('unhandledrejection', window._rollbarURH);\n }\n\n var rejectionHandler = function (evt) {\n var reason, promise, detail;\n try {\n reason = evt.reason;\n } catch (e) {\n reason = undefined;\n }\n try {\n promise = evt.promise;\n } catch (e) {\n promise = '[unhandledrejection] error getting `promise` from event';\n }\n try {\n detail = evt.detail;\n if (!reason && detail) {\n reason = detail.reason;\n promise = detail.promise;\n }\n } catch (e) {\n // Ignore\n }\n if (!reason) {\n reason = '[unhandledrejection] error getting `reason` from event';\n }\n\n if (handler && handler.handleUnhandledRejection) {\n handler.handleUnhandledRejection(reason, promise);\n }\n };\n rejectionHandler.belongsToShim = shim;\n window._rollbarURH = rejectionHandler;\n window.addEventListener('unhandledrejection', rejectionHandler);\n}\n\nexport { captureUncaughtExceptions, captureUnhandledRejections };\n","import logger from '../../logger.js';\nimport * as _ from '../../utility.js';\n\nfunction makeFetchRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n timeout,\n}) {\n var controller;\n var timeoutId;\n\n if (_.isFiniteNumber(timeout)) {\n controller = new AbortController();\n timeoutId = setTimeout(function () {\n controller.abort();\n }, timeout);\n }\n\n headers = {\n 'Content-Type': 'application/json',\n 'X-Rollbar-Access-Token': accessToken,\n signal: controller && controller.signal,\n ...headers,\n };\n\n fetch(url, {\n method,\n headers,\n body: payload,\n })\n .then(function (response) {\n if (timeoutId) clearTimeout(timeoutId);\n const respHeaders = response.headers;\n\n const isItemRoute = url.endsWith('/api/1/item/');\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': respHeaders.get('Rollbar-Replay-Enabled'),\n 'Rollbar-Replay-RateLimit-Remaining': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': respHeaders.get(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n\n const json = response.json();\n callback(null, json, headers);\n })\n .catch(function (error) {\n logger.error(error.message);\n callback(error);\n });\n}\n\nexport default makeFetchRequest;\n","/*global XDomainRequest*/\n\nimport * as _ from '../../utility.js';\nimport logger from '../../logger.js';\n\nfunction makeXhrRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n requestFactory,\n timeout,\n}) {\n var request;\n if (requestFactory) {\n request = requestFactory();\n } else {\n request = _createXMLHTTPObject();\n }\n if (!request) {\n // Give up, no way to send requests\n return callback(new Error('No way to send a request'));\n }\n try {\n try {\n var onreadystatechange = function () {\n try {\n if (onreadystatechange && request.readyState === 4) {\n onreadystatechange = undefined;\n\n var parseResponse = _.jsonParse(request.responseText);\n if (_isSuccess(request)) {\n const isItemRoute = url.endsWith('/api/1/item/');\n\n const headers = isItemRoute\n ? {\n 'Rollbar-Replay-Enabled': request.getResponseHeader(\n 'Rollbar-Replay-Enabled',\n ),\n 'Rollbar-Replay-RateLimit-Remaining':\n request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Remaining',\n ),\n 'Rollbar-Replay-RateLimit-Reset': request.getResponseHeader(\n 'Rollbar-Replay-RateLimit-Reset',\n ),\n }\n : {};\n callback(parseResponse.error, parseResponse.value, headers);\n return;\n } else if (_isNormalFailure(request)) {\n if (request.status === 403) {\n // likely caused by using a server access token\n var message =\n parseResponse.value && parseResponse.value.message;\n logger.error(message);\n }\n // return valid http status codes\n callback(new Error(String(request.status)));\n } else {\n // IE will return a status 12000+ on some sort of connection failure,\n // so we return a blank error\n // http://msdn.microsoft.com/en-us/library/aa383770%28VS.85%29.aspx\n var msg =\n 'XHR response had no status code (likely connection failure)';\n callback(_newRetriableError(msg));\n }\n }\n } catch (ex) {\n //jquery source mentions firefox may error out while accessing the\n //request members if there is a network error\n //https://github.com/jquery/jquery/blob/a938d7b1282fc0e5c52502c225ae8f0cef219f0a/src/ajax/xhr.js#L111\n var exc;\n if (ex && ex.stack) {\n exc = ex;\n } else {\n exc = new Error(ex);\n }\n callback(exc);\n }\n };\n\n request.open(method, url, true);\n if (request.setRequestHeader) {\n request.setRequestHeader('Content-Type', 'application/json');\n request.setRequestHeader('X-Rollbar-Access-Token', accessToken);\n for (const [h, v] of Object.entries(headers ?? {})) {\n request.setRequestHeader(h, v);\n }\n }\n\n if (_.isFiniteNumber(timeout)) {\n request.timeout = timeout;\n }\n\n request.onreadystatechange = onreadystatechange;\n request.send(payload);\n } catch (e1) {\n // Sending using the normal xmlhttprequest object didn't work, try XDomainRequest\n if (typeof XDomainRequest !== 'undefined') {\n // Assume we are in a really old browser which has a bunch of limitations:\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n\n // Extreme paranoia: if we have XDomainRequest then we have a window, but just in case\n if (!window || !window.location) {\n return callback(\n new Error(\n 'No window available during request, unknown environment',\n ),\n );\n }\n\n // If the current page is http, try and send over http\n if (\n window.location.href.substring(0, 5) === 'http:' &&\n url.substring(0, 5) === 'https'\n ) {\n url = 'http' + url.substring(5);\n }\n\n var xdomainrequest = new XDomainRequest();\n xdomainrequest.onprogress = function () {};\n xdomainrequest.ontimeout = function () {\n var msg = 'Request timed out';\n var code = 'ETIMEDOUT';\n callback(_newRetriableError(msg, code));\n };\n xdomainrequest.onerror = function () {\n callback(new Error('Error during request'));\n };\n xdomainrequest.onload = function () {\n var parseResponse = _.jsonParse(xdomainrequest.responseText);\n callback(parseResponse.error, parseResponse.value);\n };\n xdomainrequest.open(method, url, true);\n xdomainrequest.send(payload);\n } else {\n callback(new Error('Cannot find a method to transport a request'));\n }\n }\n } catch (e2) {\n callback(e2);\n }\n}\n\nfunction _createXMLHTTPObject() {\n /* global ActiveXObject:false */\n\n var factories = [\n function () {\n return new XMLHttpRequest();\n },\n function () {\n return new ActiveXObject('Msxml2.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Msxml3.XMLHTTP');\n },\n function () {\n return new ActiveXObject('Microsoft.XMLHTTP');\n },\n ];\n var xmlhttp;\n var i;\n var numFactories = factories.length;\n for (i = 0; i < numFactories; i++) {\n try {\n xmlhttp = factories[i]();\n break;\n } catch (e) {\n // pass\n }\n }\n return xmlhttp;\n}\n\nfunction _isSuccess(r) {\n return r && r.status && r.status === 200;\n}\n\nfunction _isNormalFailure(r) {\n return r && _.isType(r.status, 'number') && r.status >= 400 && r.status < 600;\n}\n\nfunction _newRetriableError(message, code) {\n var err = new Error(message);\n err.code = code || 'ENOTFOUND';\n return err;\n}\n\nexport default makeXhrRequest;\n","import * as _ from '../utility.js';\nimport makeFetchRequest from './transport/fetch.js';\nimport makeXhrRequest from './transport/xhr.js';\n\n/*\n * accessToken may be embedded in payload but that should not\n * be assumed\n *\n * options: {\n * hostname\n * protocol\n * path\n * port\n * method\n * transport ('xhr' | 'fetch')\n * }\n *\n * params is an object containing key/value pairs. These\n * will be appended to the path as 'key=value&key=value'\n *\n * payload is an unserialized object\n */\nfunction Transport(truncation) {\n this.truncation = truncation;\n}\n\nTransport.prototype.get = function (\n accessToken,\n options,\n params,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n _.addParamsAndAccessTokenToPath(accessToken, options, params);\n\n var method = 'GET';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.post = function ({\n accessToken,\n options,\n payload,\n headers,\n callback,\n requestFactory,\n}) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n\n if (!payload) {\n return callback(new Error('Cannot send empty request'));\n }\n\n var stringifyResult;\n // Check payload.body to ensure only items are truncated.\n if (this.truncation && payload.body) {\n stringifyResult = this.truncation.truncate(payload);\n } else {\n stringifyResult = _.stringify(payload);\n }\n if (stringifyResult.error) {\n return callback(stringifyResult.error);\n }\n\n var payload = stringifyResult.value;\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload,\n headers,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\nTransport.prototype.postJsonPayload = function (\n accessToken,\n options,\n payload,\n callback,\n requestFactory,\n) {\n if (!callback || !_.isFunction(callback)) {\n callback = function () {};\n }\n\n var method = 'POST';\n var url = _.formatUrl(options);\n this._makeZoneRequest({\n accessToken,\n url,\n method,\n payload,\n callback,\n requestFactory,\n timeout: options.timeout,\n transport: options.transport,\n });\n};\n\n// Wraps `_makeRequest` if zone.js is being used, ensuring that Rollbar\n// API calls are not intercepted by any child forked zones.\n// This is equivalent to `NgZone.runOutsideAngular` in Angular.\nTransport.prototype._makeZoneRequest = function () {\n var gWindow =\n (typeof window != 'undefined' && window) ||\n (typeof self != 'undefined' && self);\n // Whenever zone.js is loaded and `Zone` is exposed globally, access\n // the root zone to ensure that requests are always made within it.\n // This approach is framework-agnostic, regardless of which\n // framework zone.js is used with.\n var rootZone = gWindow && gWindow.Zone && gWindow.Zone.root;\n var args = Array.prototype.slice.call(arguments);\n\n if (rootZone) {\n var self = this;\n rootZone.run(function () {\n self._makeRequest.apply(undefined, args);\n });\n } else {\n this._makeRequest.apply(undefined, args);\n }\n};\n\nTransport.prototype._makeRequest = function (params) {\n const { payload, callback, transport } = params;\n if (typeof RollbarProxy !== 'undefined') {\n return _proxyRequest(payload, callback);\n }\n\n if (transport === 'fetch') {\n makeFetchRequest(params);\n } else {\n makeXhrRequest(params);\n }\n};\n\n/* global RollbarProxy */\nfunction _proxyRequest(json, callback) {\n var rollbarProxy = new RollbarProxy();\n rollbarProxy.sendJsonPayload(\n json,\n function (_msg) {\n /* do nothing */\n },\n function (err) {\n callback(new Error(err));\n },\n );\n}\n\nexport default Transport;\n","// See https://nodejs.org/docs/latest/api/url.html\nfunction parse(url) {\n var result = {\n protocol: null,\n auth: null,\n host: null,\n path: null,\n hash: null,\n href: url,\n hostname: null,\n port: null,\n pathname: null,\n search: null,\n query: null,\n };\n\n var i, last;\n i = url.indexOf('//');\n if (i !== -1) {\n result.protocol = url.substring(0, i);\n last = i + 2;\n } else {\n last = 0;\n }\n\n i = url.indexOf('@', last);\n if (i !== -1) {\n result.auth = url.substring(last, i);\n last = i + 1;\n }\n\n i = url.indexOf('/', last);\n if (i === -1) {\n i = url.indexOf('?', last);\n if (i === -1) {\n i = url.indexOf('#', last);\n if (i === -1) {\n result.host = url.substring(last);\n } else {\n result.host = url.substring(last, i);\n result.hash = url.substring(i);\n }\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n return result;\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n } else {\n result.host = url.substring(last, i);\n result.hostname = result.host.split(':')[0];\n result.port = result.host.split(':')[1];\n if (result.port) {\n result.port = parseInt(result.port, 10);\n }\n last = i;\n }\n\n i = url.indexOf('#', last);\n if (i === -1) {\n result.path = url.substring(last);\n } else {\n result.path = url.substring(last, i);\n result.hash = url.substring(i);\n }\n\n if (result.path) {\n var pathParts = result.path.split('?');\n result.pathname = pathParts[0];\n result.query = pathParts[1];\n result.search = result.query ? '?' + result.query : null;\n }\n return result;\n}\n\nexport { parse };\n","const FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\nfunction parse(error, options) {\n if (typeof error.stacktrace !== \"undefined\" || typeof error[\"opera#sourceloc\"] !== \"undefined\")\n return parseOpera(error, options);\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIE(error, options);\n else if (error.stack)\n return parseFFOrSafari(error, options);\n else if (options?.allowEmpty)\n return [];\n else\n throw new Error(\"Cannot parse given Error object\");\n}\nfunction parseStack(stackString, options) {\n if (stackString.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIeString(stackString, options);\n else\n return parseFFOrSafariString(stackString, options);\n}\nfunction extractLocation(urlLike) {\n if (!urlLike.includes(\":\"))\n return [urlLike, undefined, undefined];\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n const parts = regExp.exec(urlLike.replace(/[()]/g, \"\"));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n}\nfunction applySlice(lines, options) {\n if (options && options.slice != null) {\n if (Array.isArray(options.slice))\n return lines.slice(options.slice[0], options.slice[1]);\n return lines.slice(0, options.slice);\n }\n return lines;\n}\nfunction parseV8OrIE(error, options) {\n return parseV8OrIeString(error.stack, options);\n}\nfunction parseV8OrIeString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\"(eval \")) {\n line = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(,.*$)/g, \"\");\n }\n let sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\").replace(/^.*?\\s+/, \"\");\n const location = sanitizedLine.match(/ (\\(.+\\)$)/);\n sanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n const locationParts = extractLocation(location ? location[1] : sanitizedLine);\n const functionName = location && sanitizedLine || undefined;\n const fileName = [\"eval\", \"\"].includes(locationParts[0]) ? undefined : locationParts[0];\n return {\n function: functionName,\n file: fileName,\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\nfunction parseFFOrSafari(error, options) {\n return parseFFOrSafariString(error.stack, options);\n}\nfunction parseFFOrSafariString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\" > eval\"))\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, \":$1\");\n if (!line.includes(\"@\") && !line.includes(\":\")) {\n return {\n function: line\n };\n } else {\n const functionNameRegex = /(([^\\n\\r\"\\u2028\\u2029]*\".[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*(?:@[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*)*(?:[\\n\\r\\u2028\\u2029][^@]*)?)?[^@]*)@/;\n const matches = line.match(functionNameRegex);\n const functionName = matches && matches[1] ? matches[1] : undefined;\n const locationParts = extractLocation(line.replace(functionNameRegex, \"\"));\n return {\n function: functionName,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n }\n });\n}\nfunction parseOpera(e, options) {\n if (!e.stacktrace || e.message.includes(\"\\n\") && e.message.split(\"\\n\").length > e.stacktrace.split(\"\\n\").length)\n return parseOpera9(e);\n else if (!e.stack)\n return parseOpera10(e);\n else\n return parseOpera11(e, options);\n}\nfunction parseOpera9(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n const lines = e.message.split(\"\\n\");\n const result = [];\n for (let i = 2, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n file: match[2],\n line: +match[1],\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera10(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n const lines = e.stacktrace.split(\"\\n\");\n const result = [];\n for (let i = 0, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n function: match[3] || undefined,\n file: match[2],\n line: match[1] ? +match[1] : undefined,\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera11(error, options) {\n const filtered = applySlice(\n // @ts-expect-error missing stack property\n error.stack.split(\"\\n\").filter((line) => {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }),\n options\n );\n return filtered.map((line) => {\n const tokens = line.split(\"@\");\n const locationParts = extractLocation(tokens.pop());\n const functionCall = tokens.shift() || \"\";\n const functionName = functionCall.replace(//, \"$2\").replace(/\\([^)]*\\)/g, \"\") || undefined;\n let argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/))\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, \"$1\");\n const args = argsRaw === undefined || argsRaw === \"[arguments not available]\" ? undefined : argsRaw.split(\",\");\n return {\n function: functionName,\n args,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : undefined,\n col: locationParts[2] ? +locationParts[2] : undefined,\n raw: line\n };\n });\n}\n\nexport { extractLocation, parse, parseFFOrSafari, parseFFOrSafariString, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseStack, parseV8OrIE, parseV8OrIeString };\n","import { parse as parse$1, parseV8OrIE as parseV8OrIE$1, parseFFOrSafari as parseFFOrSafari$1, parseOpera as parseOpera$1, parseOpera9 as parseOpera9$1, parseOpera10 as parseOpera10$1, parseOpera11 as parseOpera11$1 } from './lite.mjs';\nexport { extractLocation } from './lite.mjs';\n\nfunction stackframesLiteToStackframes(liteStackframes) {\n return liteStackframes.map((liteStackframe) => {\n return {\n functionName: liteStackframe.function,\n args: liteStackframe.args,\n fileName: liteStackframe.file,\n lineNumber: liteStackframe.line,\n columnNumber: liteStackframe.col,\n source: liteStackframe.raw\n };\n });\n}\nfunction parse(error, options) {\n return stackframesLiteToStackframes(parse$1(error, options));\n}\nfunction parseV8OrIE(error) {\n return stackframesLiteToStackframes(parseV8OrIE$1(error));\n}\nfunction parseFFOrSafari(error) {\n return stackframesLiteToStackframes(parseFFOrSafari$1(error));\n}\nfunction parseOpera(e) {\n return stackframesLiteToStackframes(parseOpera$1(e));\n}\nfunction parseOpera9(e) {\n return stackframesLiteToStackframes(parseOpera9$1(e));\n}\nfunction parseOpera10(e) {\n return stackframesLiteToStackframes(parseOpera10$1(e));\n}\nfunction parseOpera11(error) {\n return stackframesLiteToStackframes(parseOpera11$1(error));\n}\n\nexport { parse, parseFFOrSafari, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseV8OrIE };\n","import { parse as parseErrorStack } from 'error-stack-parser-es';\n\nvar UNKNOWN_FUNCTION = '?';\nvar ERR_CLASS_REGEXP = new RegExp(\n '^(([a-zA-Z0-9-_$ ]*): *)?(Uncaught )?([a-zA-Z0-9-_$ ]*): ',\n);\n\nfunction guessFunctionName() {\n return UNKNOWN_FUNCTION;\n}\n\nfunction gatherContext() {\n return null;\n}\n\nfunction Frame(stackFrame) {\n var data = {};\n\n data._stackFrame = stackFrame;\n\n data.url = stackFrame.fileName;\n data.line = stackFrame.lineNumber;\n data.func = stackFrame.functionName;\n data.column = stackFrame.columnNumber;\n data.args = stackFrame.args;\n\n data.context = gatherContext();\n\n return data;\n}\n\nfunction Stack(exception, skip) {\n function getStack() {\n var parserStack = [];\n\n skip = skip || 0;\n\n try {\n parserStack = parseErrorStack(exception);\n } catch (e) {\n parserStack = [];\n }\n\n var stack = [];\n\n for (var i = skip; i < parserStack.length; i++) {\n stack.push(new Frame(parserStack[i]));\n }\n\n return stack;\n }\n\n return {\n stack: getStack(),\n message: exception.message,\n name: _mostSpecificErrorName(exception),\n rawStack: exception.stack,\n rawException: exception,\n };\n}\n\nfunction parse(e, skip) {\n var err = e;\n\n if (err.nested || err.cause) {\n var traceChain = [];\n while (err) {\n traceChain.push(new Stack(err, skip));\n err = err.nested || err.cause;\n\n skip = 0; // Only apply skip value to primary error\n }\n\n // Return primary error with full trace chain attached.\n traceChain[0].traceChain = traceChain;\n return traceChain[0];\n } else {\n return new Stack(err, skip);\n }\n}\n\nfunction guessErrorClass(errMsg) {\n if (!errMsg || !errMsg.match) {\n return ['Unknown error. There was no error message to display.', ''];\n }\n var errClassMatch = errMsg.match(ERR_CLASS_REGEXP);\n var errClass = '(unknown)';\n\n if (errClassMatch) {\n errClass = errClassMatch[errClassMatch.length - 1];\n errMsg = errMsg.replace(\n (errClassMatch[errClassMatch.length - 2] || '') + errClass + ':',\n '',\n );\n errMsg = errMsg.replace(/(^[\\s]+|[\\s]+$)/g, '');\n }\n return [errClass, errMsg];\n}\n\n// * Prefers any value over an empty string\n// * Prefers any value over 'Error' where possible\n// * Prefers name over constructor.name when both are more specific than 'Error'\nfunction _mostSpecificErrorName(error) {\n var name = error.name && error.name.length && error.name;\n var constructorName =\n error.constructor.name &&\n error.constructor.name.length &&\n error.constructor.name;\n\n if (!name || !constructorName) {\n return name || constructorName;\n }\n\n if (name === 'Error') {\n return constructorName;\n }\n return name;\n}\n\nexport default {\n guessFunctionName,\n guessErrorClass,\n gatherContext,\n parse,\n Stack,\n Frame,\n};\n","import * as _ from '../utility.js';\nimport errorParser from '../errorParser.js';\nimport logger from '../logger.js';\n\nfunction handleDomException(item, options, callback) {\n if (item.err && errorParser.Stack(item.err).name === 'DOMException') {\n var originalError = new Error();\n originalError.name = item.err.name;\n originalError.message = item.err.message;\n originalError.stack = item.err.stack;\n originalError.nested = item.err;\n item.err = originalError;\n }\n callback(null, item);\n}\n\nfunction handleItemWithError(item, options, callback) {\n item.data = item.data || {};\n if (item.err) {\n try {\n item.stackInfo =\n item.err._savedStackTrace ||\n errorParser.parse(item.err, item.skipFrames);\n\n if (options.addErrorContext) {\n addErrorContext(item);\n }\n } catch (e) {\n logger.error('Error while parsing the error object.', e);\n try {\n item.message =\n item.err.message ||\n item.err.description ||\n item.message ||\n String(item.err);\n } catch (e2) {\n item.message = String(item.err) || String(e2);\n }\n delete item.err;\n }\n }\n callback(null, item);\n}\n\nfunction addErrorContext(item) {\n var chain = [];\n var err = item.err;\n\n chain.push(err);\n\n while (err.nested || err.cause) {\n err = err.nested || err.cause;\n chain.push(err);\n }\n\n _.addErrorContext(item, chain);\n}\n\nfunction ensureItemHasSomethingToSay(item, options, callback) {\n if (!item.message && !item.stackInfo && !item.custom) {\n callback(new Error('No message, stack info, or custom data'), null);\n }\n callback(null, item);\n}\n\nfunction addBaseInfo(item, options, callback) {\n var environment =\n (options.payload && options.payload.environment) || options.environment;\n item.data = _.merge(item.data, {\n environment: environment,\n level: item.level,\n endpoint: options.endpoint,\n platform: 'browser',\n framework: 'browser-js',\n language: 'javascript',\n server: {},\n uuid: item.uuid,\n notifier: {\n name: 'rollbar-browser-js',\n version: options.version,\n },\n custom: item.custom,\n });\n callback(null, item);\n}\n\nfunction addRequestInfo(window) {\n return function (item, options, callback) {\n var requestInfo = {};\n\n if (window && window.location) {\n requestInfo.url = window.location.href;\n requestInfo.query_string = window.location.search;\n }\n\n var remoteString = '$remote_ip';\n if (!options.captureIp) {\n remoteString = null;\n } else if (options.captureIp !== true) {\n remoteString += '_anonymize';\n }\n if (remoteString) requestInfo.user_ip = remoteString;\n\n if (Object.keys(requestInfo).length > 0) {\n _.set(item, 'data.request', requestInfo);\n }\n\n callback(null, item);\n };\n}\n\nfunction addClientInfo(window) {\n return function (item, options, callback) {\n if (!window) {\n return callback(null, item);\n }\n var nav = window.navigator || {};\n var scr = window.screen || {};\n _.set(item, 'data.client', {\n runtime_ms: item.timestamp - window._rollbarStartTime,\n timestamp: Math.round(item.timestamp / 1000),\n javascript: {\n browser: nav.userAgent,\n language: nav.language,\n cookie_enabled: nav.cookieEnabled,\n screen: {\n width: scr.width,\n height: scr.height,\n },\n },\n });\n callback(null, item);\n };\n}\n\nfunction addPluginInfo(window) {\n return function (item, options, callback) {\n if (!window || !window.navigator) {\n return callback(null, item);\n }\n var plugins = [];\n var navPlugins = window.navigator.plugins || [];\n var cur;\n for (var i = 0, l = navPlugins.length; i < l; ++i) {\n cur = navPlugins[i];\n plugins.push({ name: cur.name, description: cur.description });\n }\n _.set(item, 'data.client.javascript.plugins', plugins);\n callback(null, item);\n };\n}\n\nfunction addBody(item, options, callback) {\n if (item.stackInfo) {\n if (item.stackInfo.traceChain) {\n addBodyTraceChain(item, options, callback);\n } else {\n addBodyTrace(item, options, callback);\n }\n } else {\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction addBodyMessage(item, options, callback) {\n var message = item.message;\n var custom = item.custom;\n\n if (!message) {\n message = 'Item sent with null or missing arguments.';\n }\n var result = {\n body: message,\n };\n\n if (custom) {\n result.extra = _.merge(custom);\n }\n\n _.set(item, 'data.body', { message: result });\n callback(null, item);\n}\n\nfunction stackFromItem(item) {\n // Transform a TraceKit stackInfo object into a Rollbar trace\n var stack = item.stackInfo.stack;\n if (\n stack &&\n stack.length === 0 &&\n item._unhandledStackInfo &&\n item._unhandledStackInfo.stack\n ) {\n stack = item._unhandledStackInfo.stack;\n }\n return stack;\n}\n\nfunction addBodyTraceChain(item, options, callback) {\n var traceChain = item.stackInfo.traceChain;\n var traces = [];\n\n var traceChainLength = traceChain.length;\n for (var i = 0; i < traceChainLength; i++) {\n var trace = buildTrace(item, traceChain[i], options);\n traces.push(trace);\n }\n\n _.set(item, 'data.body', { trace_chain: traces });\n callback(null, item);\n}\n\nfunction addBodyTrace(item, options, callback) {\n var stack = stackFromItem(item);\n\n if (stack) {\n var trace = buildTrace(item, item.stackInfo, options);\n _.set(item, 'data.body', { trace: trace });\n callback(null, item);\n } else {\n var stackInfo = item.stackInfo;\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n\n item.message = className + ': ' + message;\n addBodyMessage(item, options, callback);\n }\n}\n\nfunction buildTrace(item, stackInfo, options) {\n var description = item && item.data.description;\n var custom = item && item.custom;\n var stack = stackFromItem(item);\n\n var guess = errorParser.guessErrorClass(stackInfo.message);\n var className = errorClass(stackInfo, guess[0], options);\n var message = guess[1];\n var trace = {\n exception: {\n class: className,\n message: message,\n },\n };\n\n if (description) {\n trace.exception.description = description;\n }\n\n if (stack) {\n if (stack.length === 0) {\n trace.exception.stack = stackInfo.rawStack;\n trace.exception.raw = String(stackInfo.rawException);\n }\n var stackFrame;\n var frame;\n var code;\n var pre;\n var post;\n var contextLength;\n var i, mid;\n\n trace.frames = [];\n for (i = 0; i < stack.length; ++i) {\n stackFrame = stack[i];\n frame = {\n filename: stackFrame.url ? _.sanitizeUrl(stackFrame.url) : '(unknown)',\n lineno: stackFrame.line || null,\n method:\n !stackFrame.func || stackFrame.func === '?'\n ? '[anonymous]'\n : stackFrame.func,\n colno: stackFrame.column,\n };\n if (options.sendFrameUrl) {\n frame.url = stackFrame.url;\n }\n if (\n frame.method &&\n frame.method.endsWith &&\n frame.method.endsWith('_rollbar_wrapped')\n ) {\n continue;\n }\n\n code = pre = post = null;\n contextLength = stackFrame.context ? stackFrame.context.length : 0;\n if (contextLength) {\n mid = Math.floor(contextLength / 2);\n pre = stackFrame.context.slice(0, mid);\n code = stackFrame.context[mid];\n post = stackFrame.context.slice(mid);\n }\n\n if (code) {\n frame.code = code;\n }\n\n if (pre || post) {\n frame.context = {};\n if (pre && pre.length) {\n frame.context.pre = pre;\n }\n if (post && post.length) {\n frame.context.post = post;\n }\n }\n\n if (stackFrame.args) {\n frame.args = stackFrame.args;\n }\n\n trace.frames.push(frame);\n }\n\n // NOTE(cory): reverse the frames since rollbar.com expects the most recent call last\n trace.frames.reverse();\n\n if (custom) {\n trace.extra = _.merge(custom);\n }\n }\n\n return trace;\n}\n\nfunction errorClass(stackInfo, guess, options) {\n if (stackInfo.name) {\n return stackInfo.name;\n } else if (options.guessErrorClass) {\n return guess;\n } else {\n return '(unknown)';\n }\n}\n\nfunction addScrubber(scrubFn) {\n return function (item, options, callback) {\n if (scrubFn) {\n var scrubFields = options.scrubFields || [];\n var scrubPaths = options.scrubPaths || [];\n item.data = scrubFn(item.data, scrubFields, scrubPaths);\n }\n callback(null, item);\n };\n}\n\nexport {\n handleDomException,\n handleItemWithError,\n ensureItemHasSomethingToSay,\n addBaseInfo,\n addRequestInfo,\n addClientInfo,\n addPluginInfo,\n addBody,\n addScrubber,\n};\n","import * as _ from './utility.js';\n\nfunction itemToPayload(item, options, callback) {\n if (item._isUncaught) {\n item.data._isUncaught = true;\n }\n if (item._originalArgs) {\n item.data._originalArgs = item._originalArgs;\n }\n callback(null, item);\n}\n\nfunction addPayloadOptions(item, options, callback) {\n var payloadOptions = options.payload || {};\n if (payloadOptions.body) {\n delete payloadOptions.body;\n }\n\n item.data = _.merge(item.data, payloadOptions);\n callback(null, item);\n}\n\nfunction addTelemetryData(item, options, callback) {\n if (item.telemetryEvents) {\n _.set(item, 'data.body.telemetry', item.telemetryEvents);\n }\n callback(null, item);\n}\n\nfunction addMessageWithError(item, options, callback) {\n if (!item.message) {\n callback(null, item);\n return;\n }\n var tracePath = 'data.body.trace_chain.0';\n var trace = _.get(item, tracePath);\n if (!trace) {\n tracePath = 'data.body.trace';\n trace = _.get(item, tracePath);\n }\n if (trace) {\n if (!(trace.exception && trace.exception.description)) {\n _.set(item, tracePath + '.exception.description', item.message);\n callback(null, item);\n return;\n }\n var extra = _.get(item, tracePath + '.extra') || {};\n var newExtra = _.merge(extra, { message: item.message });\n _.set(item, tracePath + '.extra', newExtra);\n }\n callback(null, item);\n}\n\nfunction userTransform(logger) {\n return function (item, options, callback) {\n var newItem = _.merge(item);\n var response = null;\n try {\n if (_.isFunction(options.transform)) {\n response = options.transform(newItem.data, item);\n }\n } catch (e) {\n options.transform = null;\n logger.error(\n 'Error while calling custom transform() function. Removing custom transform().',\n e,\n );\n callback(null, item);\n return;\n }\n if (_.isPromise(response)) {\n response.then(\n function (promisedItem) {\n if (promisedItem) {\n newItem.data = promisedItem;\n }\n callback(null, newItem);\n },\n function (error) {\n callback(error, item);\n },\n );\n } else {\n callback(null, newItem);\n }\n };\n}\n\nfunction addConfigToPayload(item, options, callback) {\n if (!options.sendConfig) {\n return callback(null, item);\n }\n var configKey = '_rollbarConfig';\n var custom = _.get(item, 'data.custom') || {};\n custom[configKey] = options;\n item.data.custom = custom;\n callback(null, item);\n}\n\nfunction addFunctionOption(options, name) {\n if (_.isFunction(options[name])) {\n options[name] = options[name].toString();\n }\n}\n\nfunction addConfiguredOptions(item, options, callback) {\n var configuredOptions = options._configuredOptions;\n\n // These must be stringified or they'll get dropped during serialization.\n addFunctionOption(configuredOptions, 'transform');\n addFunctionOption(configuredOptions, 'checkIgnore');\n addFunctionOption(configuredOptions, 'onSendCallback');\n\n delete configuredOptions.accessToken;\n item.data.notifier.configured_options = configuredOptions;\n callback(null, item);\n}\n\nfunction addDiagnosticKeys(item, options, callback) {\n var diagnostic = _.merge(\n item.notifier.client.notifier.diagnostic,\n item.diagnostic,\n );\n\n if (_.get(item, 'err._isAnonymous')) {\n diagnostic.is_anonymous = true;\n }\n\n if (item._isUncaught) {\n diagnostic.is_uncaught = item._isUncaught;\n }\n\n if (item.err) {\n try {\n diagnostic.raw_error = {\n message: item.err.message,\n name: item.err.name,\n constructor_name: item.err.constructor && item.err.constructor.name,\n filename: item.err.fileName,\n line: item.err.lineNumber,\n column: item.err.columnNumber,\n stack: item.err.stack,\n };\n } catch (e) {\n diagnostic.raw_error = { failed: String(e) };\n }\n }\n\n item.data.notifier.diagnostic = _.merge(\n item.data.notifier.diagnostic,\n diagnostic,\n );\n callback(null, item);\n}\n\nexport {\n itemToPayload,\n addPayloadOptions,\n addTelemetryData,\n addMessageWithError,\n userTransform,\n addConfigToPayload,\n addConfiguredOptions,\n addDiagnosticKeys,\n};\n","import * as _ from '../utility.js';\n\nfunction checkIgnore(item, settings) {\n if (_.get(settings, 'plugins.jquery.ignoreAjaxErrors')) {\n return !_.get(item, 'body.message.extra.isAjax');\n }\n return true;\n}\n\nexport { checkIgnore };\n","import * as _ from './utility.js';\n\nfunction checkLevel(item, settings) {\n var level = item.level;\n var levelVal = _.LEVELS[level] || 0;\n var reportLevel = settings.reportLevel;\n var reportLevelVal = _.LEVELS[reportLevel] || 0;\n\n if (levelVal < reportLevelVal) {\n return false;\n }\n return true;\n}\n\nfunction userCheckIgnore(logger) {\n return function (item, settings) {\n var isUncaught = !!item._isUncaught;\n delete item._isUncaught;\n var args = item._originalArgs;\n delete item._originalArgs;\n try {\n if (_.isFunction(settings.onSendCallback)) {\n settings.onSendCallback(isUncaught, args, item);\n }\n } catch (e) {\n settings.onSendCallback = null;\n logger.error('Error while calling onSendCallback, removing', e);\n }\n try {\n if (\n _.isFunction(settings.checkIgnore) &&\n settings.checkIgnore(isUncaught, args, item)\n ) {\n return false;\n }\n } catch (e) {\n settings.checkIgnore = null;\n logger.error('Error while calling custom checkIgnore(), removing', e);\n }\n return true;\n };\n}\n\nfunction urlIsNotBlockListed(logger) {\n return function (item, settings) {\n return !urlIsOnAList(item, settings, 'blocklist', logger);\n };\n}\n\nfunction urlIsSafeListed(logger) {\n return function (item, settings) {\n return urlIsOnAList(item, settings, 'safelist', logger);\n };\n}\n\nfunction matchFrames(trace, list, block) {\n if (!trace) {\n return !block;\n }\n\n var frames = trace.frames;\n\n if (!frames || frames.length === 0) {\n return !block;\n }\n\n var frame, filename, url, urlRegex;\n var listLength = list.length;\n var frameLength = frames.length;\n for (var i = 0; i < frameLength; i++) {\n frame = frames[i];\n filename = frame.filename;\n\n if (!_.isType(filename, 'string')) {\n return !block;\n }\n\n for (var j = 0; j < listLength; j++) {\n url = list[j];\n urlRegex = new RegExp(url);\n\n if (urlRegex.test(filename)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction urlIsOnAList(item, settings, safeOrBlock, logger) {\n // safelist is the default\n var block = false;\n if (safeOrBlock === 'blocklist') {\n block = true;\n }\n\n var list, traces;\n try {\n list = block ? settings.hostBlockList : settings.hostSafeList;\n traces = _.get(item, 'body.trace_chain') || [_.get(item, 'body.trace')];\n\n // These two checks are important to come first as they are defaults\n // in case the list is missing or the trace is missing or not well-formed\n if (!list || list.length === 0) {\n return !block;\n }\n if (traces.length === 0 || !traces[0]) {\n return !block;\n }\n\n var tracesLength = traces.length;\n for (var i = 0; i < tracesLength; i++) {\n if (matchFrames(traces[i], list, block)) {\n return true;\n }\n }\n } catch (\n e\n /* istanbul ignore next */\n ) {\n if (block) {\n settings.hostBlockList = null;\n } else {\n settings.hostSafeList = null;\n }\n var listName = block ? 'hostBlockList' : 'hostSafeList';\n logger.error(\n \"Error while reading your configuration's \" +\n listName +\n ' option. Removing custom ' +\n listName +\n '.',\n e,\n );\n return !block;\n }\n return false;\n}\n\nfunction messageIsIgnored(logger) {\n return function (item, settings) {\n var i, j, ignoredMessages, len, messageIsIgnored, rIgnoredMessage, messages;\n\n try {\n messageIsIgnored = false;\n ignoredMessages = settings.ignoredMessages;\n\n if (!ignoredMessages || ignoredMessages.length === 0) {\n return true;\n }\n\n messages = messagesFromItem(item);\n\n if (messages.length === 0) {\n return true;\n }\n\n len = ignoredMessages.length;\n for (i = 0; i < len; i++) {\n rIgnoredMessage = new RegExp(ignoredMessages[i], 'gi');\n\n for (j = 0; j < messages.length; j++) {\n messageIsIgnored = rIgnoredMessage.test(messages[j]);\n\n if (messageIsIgnored) {\n return false;\n }\n }\n }\n } catch (\n e\n /* istanbul ignore next */\n ) {\n settings.ignoredMessages = null;\n logger.error(\n \"Error while reading your configuration's ignoredMessages option. Removing custom ignoredMessages.\",\n );\n }\n\n return true;\n };\n}\n\nfunction messagesFromItem(item) {\n var body = item.body;\n var messages = [];\n\n // The payload schema only allows one of trace_chain, message, or trace.\n // However, existing test cases are based on having both trace and message present.\n // So here we preserve the ability to collect strings from any combination of these keys.\n if (body.trace_chain) {\n var traceChain = body.trace_chain;\n for (var i = 0; i < traceChain.length; i++) {\n var trace = traceChain[i];\n messages.push(_.get(trace, 'exception.message'));\n }\n }\n if (body.trace) {\n messages.push(_.get(body, 'trace.exception.message'));\n }\n if (body.message) {\n messages.push(_.get(body, 'message.body'));\n }\n return messages;\n}\n\nexport {\n checkLevel,\n userCheckIgnore,\n urlIsNotBlockListed,\n urlIsSafeListed,\n messageIsIgnored,\n};\n","/**\n * Default session replay recording options\n * See https://github.com/rrweb-io/rrweb/blob/master/guide.md#options for details\n */\nexport default {\n enabled: false, // Whether recording is enabled\n autoStart: true, // Start recording automatically when Rollbar initializes\n\n // defaults used by triggers that don't specify them\n triggerDefaults: {\n samplingRatio: 1.0,\n preDuration: 300,\n postDuration: 5,\n },\n triggers: [\n {\n type: 'occurrence',\n level: ['error', 'critical'],\n },\n ],\n\n debug: {\n logErrors: true, // Whether to log errors emitted by rrweb.\n logEmits: false, // Whether to log emitted events\n },\n\n // Recording options\n inlineStylesheet: true, // Whether to inline stylesheets to improve replay accuracy\n inlineImages: false, // Whether to record the image content\n collectFonts: true, // Whether to collect fonts in the website\n\n // Privacy options\n // Fine-grained control over which input types to mask\n // By default only password inputs are masked if maskInputs is true\n maskInputOptions: {\n password: true,\n email: false,\n tel: false,\n text: false,\n color: false,\n date: false,\n 'datetime-local': false,\n month: false,\n number: false,\n range: false,\n search: false,\n time: false,\n url: false,\n week: false,\n },\n\n // Mask all input values\n maskAllInputs: false,\n\n // Class names to block, mask, or ignore the content of elements.\n blockClass: 'rb-block',\n maskTextClass: 'rb-mask',\n ignoreClass: 'rb-ignore',\n\n // Remove unnecessary parts of the DOM\n // By default all removable elements are removed\n slimDOMOptions: {\n script: true, // Remove script elements\n comment: true, // Remove comments\n headFavicon: true, // Remove favicons in the head\n headWhitespace: true, // Remove whitespace in head\n headMetaDescKeywords: true, // Remove meta description and keywords\n headMetaSocial: true, // Remove social media meta tags\n headMetaRobots: true, // Remove robots meta directives\n headMetaHttpEquiv: true, // Remove http-equiv meta directives\n headMetaAuthorship: true, // Remove authorship meta directives\n headMetaVerification: true, // Remove verification meta directives\n },\n\n // Custom callbacks for advanced use cases\n // These are undefined by default and can be set programmatically\n // maskInputFn: undefined, // Custom function to mask input values\n // maskTextFn: undefined, // Custom function to mask text content\n // errorHandler: undefined, // Custom error handler for recording errors\n\n // Plugin system\n // plugins: [] // List of plugins to use (must be set programmatically)\n};\n","/**\n * Default tracing options\n */\nexport default {\n enabled: false,\n endpoint: 'api.rollbar.com/api/1/session/',\n};\n","/**\n * Default options shared across platforms\n */\nexport const version = '3.0.0-rc.1';\nexport const endpoint = 'api.rollbar.com/api/1/item/';\nexport const logLevel = 'debug';\nexport const reportLevel = 'debug';\nexport const uncaughtErrorLevel = 'error';\nexport const maxItems = 0;\nexport const itemsPerMin = 60;\n\nexport const commonScrubFields = [\n 'pw',\n 'pass',\n 'passwd',\n 'password',\n 'secret',\n 'confirm_password',\n 'confirmPassword',\n 'password_confirmation',\n 'passwordConfirmation',\n 'access_token',\n 'accessToken',\n 'X-Rollbar-Access-Token',\n 'secret_key',\n 'secretKey',\n 'secretToken',\n];\n\nexport const apiScrubFields = [\n 'api_key',\n 'authenticity_token',\n 'oauth_token',\n 'token',\n 'user_session_secret',\n];\n\nexport const requestScrubFields = [\n 'request.session.csrf',\n 'request.session._csrf',\n 'request.params._csrf',\n 'request.cookie',\n 'request.cookies',\n];\n\nexport const commonScrubHeaders = [\n 'authorization',\n 'www-authorization',\n 'http_authorization',\n 'omniauth.auth',\n 'cookie',\n 'oauth-access-token',\n 'x-access-token',\n 'x_csrf_token',\n 'http_x_csrf_token',\n 'x-csrf-token',\n];\n\n// For backward compatibility with default export\nexport default {\n version,\n endpoint,\n logLevel,\n reportLevel,\n uncaughtErrorLevel,\n maxItems,\n itemsPerMin,\n};\n","/**\n * Default browser options\n */\nimport { commonScrubFields } from '../defaults.js';\n\nexport const scrubFields = [\n ...commonScrubFields,\n 'cc-number',\n 'card number',\n 'cardnumber',\n 'cardnum',\n 'ccnum',\n 'ccnumber',\n 'cc num',\n 'creditcardnumber',\n 'credit card number',\n 'newcreditcardnumber',\n 'new credit card',\n 'creditcardno',\n 'credit card no',\n 'card#',\n 'card #',\n 'cc-csc',\n 'cvc',\n 'cvc2',\n 'cvv2',\n 'ccv2',\n 'security code',\n 'card verification',\n 'name on credit card',\n 'name on card',\n 'nameoncard',\n 'cardholder',\n 'card holder',\n 'name des karteninhabers',\n 'ccname',\n 'card type',\n 'cardtype',\n 'cc type',\n 'cctype',\n 'payment type',\n 'expiration date',\n 'expirationdate',\n 'expdate',\n 'cc-exp',\n 'ccmonth',\n 'ccyear',\n];\n\n// For compatibility with existing code that expects default export with scrubFields property\nexport default { scrubFields };\n","import Client from '../rollbar.js';\nimport * as _ from '../utility.js';\nimport API from '../api.js';\nimport logger from '../logger.js';\nimport * as globals from './globalSetup.js';\n\nimport Transport from './transport.js';\nimport * as urllib from './url.js';\n\nimport * as transforms from './transforms.js';\nimport * as sharedTransforms from '../transforms.js';\nimport * as predicates from './predicates.js';\nimport * as sharedPredicates from '../predicates.js';\nimport errorParser from '../errorParser.js';\nimport replayDefaults from './replay/defaults.js';\nimport tracingDefaults from '../tracing/defaults.js';\n\n// Used to support global `Rollbar` instance.\nlet _instance = null;\n\nclass Rollbar {\n constructor(options, client) {\n logger.init({ logLevel: options.logLevel || 'error' });\n this.options = _.handleOptions(defaultOptions, options, null, logger);\n this.options._configuredOptions = options;\n this.components = this.components || {};\n const Telemeter = this.components.telemeter;\n const Instrumenter = this.components.instrumenter;\n this.wrapGlobals = this.components.wrapGlobals;\n this.scrub = this.components.scrub;\n const truncation = this.components.truncation;\n const Tracing = this.components.tracing;\n const Replay = this.components.replay;\n\n const transport = new Transport(truncation);\n const api = new API(this.options, transport, urllib, truncation);\n if (Tracing) {\n this.tracing = new Tracing(_gWindow(), api, this.options);\n this.tracing.initSession();\n }\n if (Telemeter) {\n this.telemeter = new Telemeter(this.options, this.tracing);\n }\n\n if (Replay && _.isBrowser()) {\n const replayOptions = this.options.replay;\n this.replay = new Replay({\n tracing: this.tracing,\n telemeter: this.telemeter,\n options: replayOptions,\n });\n\n if (replayOptions.enabled && replayOptions.autoStart) {\n this.replay.recorder.start();\n }\n }\n\n this.client =\n client ||\n new Client(\n this.options,\n api,\n logger,\n this.telemeter,\n this.tracing,\n this.replay,\n 'browser',\n );\n var gWindow = _gWindow();\n var gDocument = typeof document != 'undefined' && document;\n this.isChrome = gWindow.chrome && gWindow.chrome.runtime; // check .runtime to avoid Edge browsers\n this.anonymousErrorsPending = 0;\n addTransformsToNotifier(this.client.notifier, this, gWindow);\n addPredicatesToQueue(this.client.queue);\n this.setupUnhandledCapture();\n if (Instrumenter) {\n this.instrumenter = new Instrumenter(\n this.options,\n this.client.telemeter,\n this,\n gWindow,\n gDocument,\n );\n this.instrumenter.instrument();\n }\n\n this.setSessionAttributesFromOptions(options);\n\n // Used with rollbar-react for rollbar-react-native compatibility.\n this.rollbar = this;\n }\n\n static init(options, client) {\n if (_instance) {\n return _instance.global(options).configure(options);\n }\n _instance = new Rollbar(options, client);\n return _instance;\n }\n\n static setComponents(components) {\n Rollbar.prototype.components = components;\n }\n\n global(options) {\n this.client.global(options);\n return this;\n }\n\n configure(options, payloadData) {\n if (options.logLevel) {\n logger.init({ logLevel: options.logLevel });\n }\n this.setSessionAttributesFromOptions(options);\n var oldOptions = this.options;\n var payload = {};\n if (payloadData) {\n payload = { payload: payloadData };\n }\n\n this.options = _.handleOptions(oldOptions, options, payload, logger);\n this.options._configuredOptions = _.handleOptions(\n oldOptions._configuredOptions,\n options,\n payload,\n );\n\n this.tracing?.configure(this.options);\n this.replay?.configure(this.options.replay);\n this.client.configure(this.options, payloadData);\n this.instrumenter?.configure(this.options);\n this.setupUnhandledCapture();\n return this;\n }\n\n lastError() {\n return this.client.lastError;\n }\n\n log() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.log(item);\n return { uuid: uuid };\n }\n\n debug() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.debug(item);\n return { uuid: uuid };\n }\n\n info() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.info(item);\n return { uuid: uuid };\n }\n\n warn() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warn(item);\n return { uuid: uuid };\n }\n\n warning() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.warning(item);\n return { uuid: uuid };\n }\n\n error() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.error(item);\n return { uuid: uuid };\n }\n\n critical() {\n var item = this._createItem(arguments);\n var uuid = item.uuid;\n this.client.critical(item);\n return { uuid: uuid };\n }\n\n buildJsonPayload(item) {\n return this.client.buildJsonPayload(item);\n }\n\n sendJsonPayload(jsonPayload) {\n return this.client.sendJsonPayload(jsonPayload);\n }\n\n triggerDirectReplay(context) {\n return this.triggerReplay({ type: 'direct', ...context });\n }\n\n triggerReplay(context) {\n if (!this.replay) return null;\n\n return this.replay.triggerReplay(context);\n }\n\n setupUnhandledCapture() {\n var gWindow = _gWindow();\n\n if (!this.unhandledExceptionsInitialized) {\n if (\n this.options.captureUncaught ||\n this.options.handleUncaughtExceptions\n ) {\n globals.captureUncaughtExceptions(gWindow, this);\n if (this.wrapGlobals && this.options.wrapGlobalEventHandlers) {\n this.wrapGlobals(gWindow, this);\n }\n this.unhandledExceptionsInitialized = true;\n }\n }\n if (!this.unhandledRejectionsInitialized) {\n if (\n this.options.captureUnhandledRejections ||\n this.options.handleUnhandledRejections\n ) {\n globals.captureUnhandledRejections(gWindow, this);\n this.unhandledRejectionsInitialized = true;\n }\n }\n }\n\n handleUncaughtException(message, url, lineno, colno, error, context) {\n if (\n !this.options.captureUncaught &&\n !this.options.handleUncaughtExceptions\n ) {\n return;\n }\n\n // Chrome will always send 5+ arguments and error will be valid or null, not undefined.\n // If error is undefined, we have a different caller.\n // Chrome also sends errors from web workers with null error, but does not invoke\n // prepareStackTrace() for these. Test for empty url to skip them.\n if (\n this.options.inspectAnonymousErrors &&\n this.isChrome &&\n error === null &&\n url === ''\n ) {\n return 'anonymous';\n }\n\n var item;\n var stackInfo = _.makeUnhandledStackInfo(\n message,\n url,\n lineno,\n colno,\n error,\n 'onerror',\n 'uncaught exception',\n errorParser,\n );\n if (_.isError(error)) {\n item = this._createItem([message, error, context]);\n item._unhandledStackInfo = stackInfo;\n } else if (_.isError(url)) {\n item = this._createItem([message, url, context]);\n item._unhandledStackInfo = stackInfo;\n } else {\n item = this._createItem([message, context]);\n item.stackInfo = stackInfo;\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n this.client.log(item);\n }\n\n /**\n * Chrome only. Other browsers will ignore.\n *\n * Use Error.prepareStackTrace to extract information about errors that\n * do not have a valid error object in onerror().\n *\n * In tested version of Chrome, onerror is called first but has no way\n * to communicate with prepareStackTrace. Use a counter to let this\n * handler know which errors to send to Rollbar.\n *\n * In config options, set inspectAnonymousErrors to enable.\n */\n handleAnonymousErrors() {\n if (!this.options.inspectAnonymousErrors || !this.isChrome) {\n return;\n }\n\n var r = this;\n function prepareStackTrace(error, _stack) {\n if (r.options.inspectAnonymousErrors) {\n if (r.anonymousErrorsPending) {\n // This is the only known way to detect that onerror saw an anonymous error.\n // It depends on onerror reliably being called before Error.prepareStackTrace,\n // which so far holds true on tested versions of Chrome. If versions of Chrome\n // are tested that behave differently, this logic will need to be updated\n // accordingly.\n r.anonymousErrorsPending -= 1;\n\n if (!error) {\n // Not likely to get here, but calling handleUncaughtException from here\n // without an error object would throw off the anonymousErrorsPending counter,\n // so return now.\n return;\n }\n\n // Allow this to be tracked later.\n error._isAnonymous = true;\n\n // url, lineno, colno shouldn't be needed for these errors.\n // If that changes, update this accordingly, using the unused\n // _stack param as needed (rather than parse error.toString()).\n r.handleUncaughtException(error.message, null, null, null, error);\n }\n }\n\n // Workaround to ensure stack is preserved for normal errors.\n return error.stack;\n }\n\n // https://v8.dev/docs/stack-trace-api\n try {\n Error.prepareStackTrace = prepareStackTrace;\n } catch (e) {\n this.options.inspectAnonymousErrors = false;\n this.error('anonymous error handler failed', e);\n }\n }\n\n handleUnhandledRejection(reason, promise) {\n if (\n !this.options.captureUnhandledRejections &&\n !this.options.handleUnhandledRejections\n ) {\n return;\n }\n\n var message = 'unhandled rejection was null or undefined!';\n if (reason) {\n if (reason.message) {\n message = reason.message;\n } else {\n var reasonResult = _.stringify(reason);\n if (reasonResult.value) {\n message = reasonResult.value;\n }\n }\n }\n var context =\n (reason && reason._rollbarContext) ||\n (promise && promise._rollbarContext);\n\n var item;\n if (_.isError(reason)) {\n item = this._createItem([message, reason, context]);\n } else {\n item = this._createItem([message, reason, context]);\n item.stackInfo = _.makeUnhandledStackInfo(\n message,\n '',\n 0,\n 0,\n null,\n 'unhandledrejection',\n '',\n errorParser,\n );\n }\n item.level = this.options.uncaughtErrorLevel;\n item._isUncaught = true;\n item._originalArgs = item._originalArgs || [];\n item._originalArgs.push(promise);\n this.client.log(item);\n }\n\n wrap(f, context, _before) {\n try {\n var ctxFn;\n if (_.isFunction(context)) {\n ctxFn = context;\n } else {\n ctxFn = function () {\n return context || {};\n };\n }\n\n if (!_.isFunction(f)) {\n return f;\n }\n\n if (f._isWrap) {\n return f;\n }\n\n if (!f._rollbar_wrapped) {\n f._rollbar_wrapped = function () {\n if (_before && _.isFunction(_before)) {\n _before.apply(this, arguments);\n }\n try {\n return f.apply(this, arguments);\n } catch (exc) {\n var e = exc;\n if (e && window._rollbarWrappedError !== e) {\n if (_.isType(e, 'string')) {\n e = new String(e);\n }\n e._rollbarContext = ctxFn() || {};\n e._rollbarContext._wrappedSource = f.toString();\n\n window._rollbarWrappedError = e;\n }\n throw e;\n }\n };\n\n f._rollbar_wrapped._isWrap = true;\n\n if (f.hasOwnProperty) {\n for (var prop in f) {\n if (f.hasOwnProperty(prop) && prop !== '_rollbar_wrapped') {\n f._rollbar_wrapped[prop] = f[prop];\n }\n }\n }\n }\n\n return f._rollbar_wrapped;\n } catch (e) {\n // Return the original function if the wrap fails.\n return f;\n }\n }\n\n captureEvent() {\n var event = _.createTelemetryEvent(arguments);\n return this.client.captureEvent(event.type, event.metadata, event.level);\n }\n\n setSessionUser(user) {\n if (!this.tracing?.session) return;\n\n this.tracing.session.setUser(user);\n }\n\n setSessionAttributes(attrs) {\n if (!this.tracing?.session) return;\n\n attrs = { ...attrs };\n\n this.tracing.session.setAttributes(attrs);\n }\n\n setSessionAttributesFromOptions(options) {\n const person = options.person || options.payload?.person;\n if (person) {\n this.setSessionUser(person);\n }\n const code_version =\n options.client?.javascript?.code_version ||\n options.codeVersion ||\n options.code_version ||\n options.payload?.client?.javascript?.code_version ||\n options.payload?.code_version ||\n options.payload?.codeVersion;\n this.setSessionAttributes({\n 'rollbar.codeVersion': code_version,\n 'rollbar.notifier.name': 'rollbar-browser-js',\n 'rollbar.notifier.version': options.version,\n });\n }\n\n // The following two methods are used internally and are not meant for public use\n captureDomContentLoaded(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureDomContentLoaded(ts);\n }\n\n captureLoad(e, ts) {\n if (!ts) {\n ts = new Date();\n }\n return this.client.captureLoad(ts);\n }\n\n loadFull() {\n logger.info(\n 'Unexpected Rollbar.loadFull() called on a Notifier instance. This can happen when Rollbar is loaded multiple times.',\n );\n }\n\n _createItem(args) {\n return _.createItem(args, logger, this);\n }\n\n // Static version of instance methods support the legacy pattern of a\n // global `Rollbar` instance, where after calling `Rollbar.init()`,\n // `Rollbar` can be used as if it were an instance.\n // If support for this pattern is dropped, these static methods can be removed.\n static callInstance(method, args) {\n if (!_instance) {\n const message = 'Rollbar is not initialized';\n logger.error(message);\n const maybeCallback = _getFirstFunction(args);\n if (maybeCallback) {\n maybeCallback(new Error(message));\n }\n return;\n }\n return _instance[method].apply(_instance, args);\n }\n\n static global = (...args) => Rollbar.callInstance('global', args);\n static configure = (...args) => Rollbar.callInstance('configure', args);\n static lastError = (...args) => Rollbar.callInstance('lastError', args);\n static log = (...args) => Rollbar.callInstance('log', args);\n static debug = (...args) => Rollbar.callInstance('debug', args);\n static info = (...args) => Rollbar.callInstance('info', args);\n static warn = (...args) => Rollbar.callInstance('warn', args);\n static warning = (...args) => Rollbar.callInstance('warning', args);\n static error = (...args) => Rollbar.callInstance('error', args);\n static critical = (...args) => Rollbar.callInstance('critical', args);\n static buildJsonPayload = (...args) =>\n Rollbar.callInstance('buildJsonPayload', args);\n static sendJsonPayload = (...args) =>\n Rollbar.callInstance('sendJsonPayload', args);\n static wrap = (...args) => Rollbar.callInstance('wrap', args);\n static captureEvent = (...args) => Rollbar.callInstance('captureEvent', args);\n}\n\n/* Internal */\n\nfunction addTransformsToNotifier(notifier, rollbar, gWindow) {\n notifier\n .addTransform(transforms.handleDomException)\n .addTransform(transforms.handleItemWithError)\n .addTransform(transforms.ensureItemHasSomethingToSay)\n .addTransform(transforms.addBaseInfo)\n .addTransform(transforms.addRequestInfo(gWindow))\n .addTransform(transforms.addClientInfo(gWindow))\n .addTransform(transforms.addPluginInfo(gWindow))\n .addTransform(transforms.addBody)\n .addTransform(sharedTransforms.addMessageWithError)\n .addTransform(sharedTransforms.addTelemetryData)\n .addTransform(sharedTransforms.addConfigToPayload)\n .addTransform(transforms.addScrubber(rollbar.scrub))\n .addTransform(sharedTransforms.addPayloadOptions)\n .addTransform(sharedTransforms.userTransform(logger))\n .addTransform(sharedTransforms.addConfiguredOptions)\n .addTransform(sharedTransforms.addDiagnosticKeys)\n .addTransform(sharedTransforms.itemToPayload);\n}\n\nfunction addPredicatesToQueue(queue) {\n queue\n .addPredicate(sharedPredicates.checkLevel)\n .addPredicate(predicates.checkIgnore)\n .addPredicate(sharedPredicates.userCheckIgnore(logger))\n .addPredicate(sharedPredicates.urlIsNotBlockListed(logger))\n .addPredicate(sharedPredicates.urlIsSafeListed(logger))\n .addPredicate(sharedPredicates.messageIsIgnored(logger));\n}\n\nfunction _getFirstFunction(args) {\n for (var i = 0, len = args.length; i < len; ++i) {\n if (_.isFunction(args[i])) {\n return args[i];\n }\n }\n return undefined;\n}\n\nfunction _gWindow() {\n return (\n (typeof window != 'undefined' && window) ||\n (typeof self != 'undefined' && self)\n );\n}\n\nimport {\n version,\n logLevel,\n reportLevel,\n uncaughtErrorLevel,\n endpoint,\n} from '../defaults.js';\nimport browserDefaults from './defaults.js';\n\nconst defaultOptions = {\n environment: 'unknown',\n version: version,\n scrubFields: browserDefaults.scrubFields,\n logLevel: logLevel,\n reportLevel: reportLevel,\n uncaughtErrorLevel: uncaughtErrorLevel,\n endpoint: endpoint,\n verbose: false,\n enabled: true,\n transmit: true,\n sendConfig: false,\n includeItemsInTelemetry: true,\n captureIp: true,\n inspectAnonymousErrors: true,\n ignoreDuplicateErrors: true,\n wrapGlobalEventHandlers: false,\n replay: replayDefaults,\n tracing: tracingDefaults,\n};\n\nexport default Rollbar;\n","import * as _ from './utility.js';\n\nconst MAX_EVENTS = 100;\n\n// Temporary workaround while solving commonjs -> esm issues in Node 18 - 20.\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\nclass Telemeter {\n constructor(options, tracing) {\n this.queue = [];\n this.options = _.merge(options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n this.maxQueueSize = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n this.tracing = tracing;\n this.telemetrySpan = this.tracing?.startSpan('rollbar-telemetry', {});\n }\n\n configure(options) {\n var oldOptions = this.options;\n this.options = _.merge(oldOptions, options);\n var maxTelemetryEvents = this.options.maxTelemetryEvents || MAX_EVENTS;\n var newMaxEvents = Math.max(0, Math.min(maxTelemetryEvents, MAX_EVENTS));\n var deleteCount = 0;\n if (this.queue.length > newMaxEvents) {\n deleteCount = this.queue.length - newMaxEvents;\n }\n this.maxQueueSize = newMaxEvents;\n this.queue.splice(0, deleteCount);\n }\n\n copyEvents() {\n var events = Array.prototype.slice.call(this.queue, 0);\n if (_.isFunction(this.options.filterTelemetry)) {\n try {\n var i = events.length;\n while (i--) {\n if (this.options.filterTelemetry(events[i])) {\n events.splice(i, 1);\n }\n }\n } catch (e) {\n this.options.filterTelemetry = null;\n }\n }\n\n // Filter until supported in legacy telemetry\n events = events.filter((e) => e.type !== 'connectivity');\n\n // Remove internal keys from output\n events = events.map(({ otelAttributes, ...event }) => event);\n\n return events;\n }\n\n exportTelemetrySpan(attributes = {}) {\n if (this.telemetrySpan) {\n this.telemetrySpan.end(attributes);\n this.telemetrySpan = this.tracing.startSpan('rollbar-telemetry', {});\n }\n }\n\n capture(\n type,\n metadata,\n level,\n rollbarUUID,\n timestamp = null,\n otelAttributes = null,\n ) {\n var e = {\n level: getLevel(type, level),\n type: type,\n timestamp_ms: timestamp || _.now(),\n body: metadata,\n source: 'client',\n };\n if (rollbarUUID) {\n e.uuid = rollbarUUID;\n }\n if (otelAttributes) {\n e.otelAttributes = otelAttributes;\n }\n\n try {\n if (\n _.isFunction(this.options.filterTelemetry) &&\n this.options.filterTelemetry(e)\n ) {\n return false;\n }\n } catch (exc) {\n this.options.filterTelemetry = null;\n }\n\n this.push(e);\n return e;\n }\n\n captureEvent(type, metadata, level, rollbarUUID) {\n return this.capture(type, metadata, level, rollbarUUID);\n }\n\n captureError(err, level, rollbarUUID, timestamp) {\n const message = err.message || String(err);\n var metadata = { message };\n if (err.stack) {\n metadata.stack = err.stack;\n }\n const otelAttributes = {\n message,\n level,\n type: 'error',\n uuid: rollbarUUID,\n };\n\n this.telemetrySpan?.addEvent(\n 'rollbar-occurrence-event',\n otelAttributes,\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'error',\n metadata,\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureLog(message, level, rollbarUUID, timestamp) {\n let otelAttributes = null;\n\n // If the uuid is present, this is a message occurrence.\n if (rollbarUUID) {\n ((otelAttributes = {\n message,\n level,\n type: 'message',\n uuid: rollbarUUID,\n }),\n this.telemetrySpan?.addEvent(\n 'rollbar-occurrence-event',\n otelAttributes,\n fromMillis(timestamp),\n ));\n } else {\n otelAttributes = { message, level };\n this.telemetrySpan?.addEvent(\n 'rollbar-log-event',\n otelAttributes,\n fromMillis(timestamp),\n );\n }\n\n return this.capture(\n 'log',\n { message },\n level,\n rollbarUUID,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNetwork(metadata, subtype, rollbarUUID, requestData) {\n subtype = subtype || 'xhr';\n metadata.subtype = metadata.subtype || subtype;\n if (requestData) {\n metadata.request = requestData;\n }\n const level = this.levelFromStatus(metadata.status_code);\n const endTimeNano = (metadata.end_time_ms || 0) * 1e6;\n const otelAttributes = {\n type: metadata.subtype,\n method: metadata.method,\n url: metadata.url,\n statusCode: metadata.status_code,\n 'request.headers': JSON.stringify(metadata.request_headers || {}),\n 'response.headers': JSON.stringify(metadata.response?.headers || {}),\n 'response.timeUnixNano': endTimeNano.toString(),\n };\n\n this.telemetrySpan?.addEvent(\n 'rollbar-network-event',\n otelAttributes,\n fromMillis(metadata.start_time_ms),\n );\n\n return this.capture(\n 'network',\n metadata,\n level,\n rollbarUUID,\n metadata.start_time_ms,\n otelAttributes,\n );\n }\n\n levelFromStatus(statusCode) {\n if (statusCode >= 200 && statusCode < 400) {\n return 'info';\n }\n if (statusCode === 0 || statusCode >= 400) {\n return 'error';\n }\n return 'info';\n }\n\n captureDom(subtype, element, value, checked, rollbarUUID) {\n var metadata = {\n subtype: subtype,\n element: element,\n };\n if (value !== undefined) {\n metadata.value = value;\n }\n if (checked !== undefined) {\n metadata.checked = checked;\n }\n return this.capture('dom', metadata, 'info', rollbarUUID);\n }\n\n captureInput({ type, isSynthetic, element, value, timestamp }) {\n const name = 'rollbar-input-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n value,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n value,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureClick({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-click-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n endTimeUnixNano: fromMillis(timestamp),\n };\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n _getRepeatedEvent(name, attributes) {\n const lastEvent = this._lastEvent(this.queue);\n\n if (\n lastEvent &&\n lastEvent.body.type === name &&\n lastEvent.otelAttributes.target === attributes.target\n ) {\n return lastEvent;\n }\n }\n\n _updateRepeatedEvent(event, attributes, timestamp) {\n const duration = Math.max(timestamp - event.timestamp_ms, 1);\n event.body.value = attributes.value;\n event.otelAttributes.value = attributes.value;\n event.otelAttributes.height = attributes.height;\n event.otelAttributes.width = attributes.width;\n event.otelAttributes.textZoomRatio = attributes.textZoomRatio;\n event.otelAttributes['endTimeUnixNano'] = fromMillis(timestamp);\n event.otelAttributes['durationUnixNano'] = fromMillis(duration);\n event.otelAttributes.count = (event.otelAttributes.count || 1) + 1;\n event.otelAttributes.rate = event.otelAttributes.count / (duration / 1000);\n }\n\n _lastEvent(list) {\n return list.length > 0 ? list[list.length - 1] : null;\n }\n\n captureFocus({ type, isSynthetic, element, timestamp }) {\n const name = 'rollbar-focus-event';\n const metadata = {\n type: name,\n subtype: type,\n element,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n element,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureResize({\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n timestamp,\n }) {\n const name = 'rollbar-resize-event';\n const metadata = {\n type: name,\n subtype: type,\n width,\n height,\n textZoomRatio,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n width,\n height,\n textZoomRatio,\n };\n\n const event = this._getRepeatedEvent(name, otelAttributes);\n if (event) {\n return this._updateRepeatedEvent(event, otelAttributes, timestamp);\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureDragDrop({\n type,\n isSynthetic,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n timestamp,\n }) {\n const name = 'rollbar-dragdrop-event';\n let metadata = {\n type: name,\n subtype: type,\n isSynthetic,\n };\n\n let otelAttributes = {\n type,\n isSynthetic,\n };\n\n if (type === 'dragstart') {\n metadata = { ...metadata, element, dropEffect, effectAllowed };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n };\n }\n\n if (type === 'drop') {\n metadata = {\n ...metadata,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n otelAttributes = {\n ...otelAttributes,\n element,\n dropEffect,\n effectAllowed,\n kinds,\n mediaTypes,\n };\n }\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'dom',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n captureNavigation(from, to, rollbarUUID, timestamp) {\n this.telemetrySpan?.addEvent(\n 'rollbar-navigation-event',\n { 'previous.url.full': from, 'url.full': to },\n fromMillis(timestamp),\n );\n\n return this.capture(\n 'navigation',\n { from, to },\n 'info',\n rollbarUUID,\n timestamp,\n );\n }\n\n captureDomContentLoaded(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'DOMContentLoaded' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'DOMContentLoaded'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureLoad(ts) {\n return this.capture(\n 'navigation',\n { subtype: 'load' },\n 'info',\n undefined,\n ts && ts.getTime(),\n );\n /**\n * If we decide to make this a dom event instead, then use the line below:\n return this.capture('dom', {subtype: 'load'}, 'info', undefined, ts && ts.getTime());\n */\n }\n\n captureConnectivityChange({ type, isSynthetic, timestamp }) {\n const name = 'rollbar-connectivity-event';\n const metadata = {\n type: name,\n subtype: type,\n };\n const otelAttributes = {\n type,\n isSynthetic,\n };\n\n this.telemetrySpan?.addEvent(name, otelAttributes, fromMillis(timestamp));\n\n return this.capture(\n 'connectivity',\n metadata,\n 'info',\n null,\n timestamp,\n otelAttributes,\n );\n }\n\n // Only intended to be used internally by the notifier\n _captureRollbarItem(item) {\n if (!this.options.includeItemsInTelemetry) {\n return;\n }\n if (item.err) {\n return this.captureError(item.err, item.level, item.uuid, item.timestamp);\n }\n if (item.message) {\n return this.captureLog(\n item.message,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n if (item.custom) {\n return this.capture(\n 'log',\n item.custom,\n item.level,\n item.uuid,\n item.timestamp,\n );\n }\n }\n\n push(e) {\n this.queue.push(e);\n if (this.queue.length > this.maxQueueSize) {\n this.queue.shift();\n }\n }\n}\n\nfunction getLevel(type, level) {\n if (level) {\n return level;\n }\n var defaultLevel = {\n error: 'error',\n manual: 'info',\n };\n return defaultLevel[type] || 'info';\n}\n\nexport default Telemeter;\n","/*\n * headers - Detect when fetch Headers are undefined and use a partial polyfill.\n *\n * A full polyfill is not used in order to keep package size as small as possible.\n * Since this is only used internally and is not added to the window object,\n * the full interface doesn't need to be supported.\n *\n * This implementation is modified from whatwg-fetch:\n * https://github.com/github/fetch\n */\nfunction headers(headers) {\n if (typeof Headers === 'undefined') {\n return new FetchHeaders(headers);\n }\n\n return new Headers(headers);\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n return name.toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value;\n}\n\nfunction iteratorFor(items) {\n var iterator = {\n next: function () {\n var value = items.shift();\n return { done: value === undefined, value: value };\n },\n };\n\n return iterator;\n}\n\nfunction FetchHeaders(headers) {\n this.map = {};\n\n if (headers instanceof FetchHeaders) {\n headers.forEach(function (value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function (header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function (name) {\n this.append(name, headers[name]);\n }, this);\n }\n}\n\nFetchHeaders.prototype.append = function (name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n};\n\nFetchHeaders.prototype.get = function (name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null;\n};\n\nFetchHeaders.prototype.has = function (name) {\n return this.map.hasOwnProperty(normalizeName(name));\n};\n\nFetchHeaders.prototype.forEach = function (callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n};\n\nFetchHeaders.prototype.entries = function () {\n var items = [];\n this.forEach(function (value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items);\n};\n\nexport default headers;\n","function replace(obj, name, replacement, replacements, type) {\n var orig = obj[name];\n obj[name] = replacement(orig);\n if (replacements) {\n replacements[type].push([obj, name, orig]);\n }\n}\n\nexport default replace;\n","import * as _ from '../utility.js';\n\nfunction traverse(obj, func, seen) {\n var k, v, i;\n var isObj = _.isType(obj, 'object');\n var isArray = _.isType(obj, 'array');\n var keys = [];\n var seenIndex;\n\n // Best might be to use Map here with `obj` as the keys, but we want to support IE < 11.\n seen = seen || { obj: [], mapped: [] };\n\n if (isObj) {\n seenIndex = seen.obj.indexOf(obj);\n\n if (isObj && seenIndex !== -1) {\n // Prefer the mapped object if there is one.\n return seen.mapped[seenIndex] || seen.obj[seenIndex];\n }\n\n seen.obj.push(obj);\n seenIndex = seen.obj.length - 1;\n }\n\n if (isObj) {\n for (k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k)) {\n keys.push(k);\n }\n }\n } else if (isArray) {\n for (i = 0; i < obj.length; ++i) {\n keys.push(i);\n }\n }\n\n var result = isObj ? {} : [];\n var same = true;\n for (i = 0; i < keys.length; ++i) {\n k = keys[i];\n v = obj[k];\n result[k] = func(k, v, seen);\n same = same && result[k] === obj[k];\n }\n\n if (isObj && !same) {\n seen.mapped[seenIndex] = result;\n }\n\n return !same ? result : obj;\n}\n\nexport default traverse;\n","import * as _ from './utility.js';\nimport traverse from './utility/traverse.js';\n\nfunction scrub(data, scrubFields, scrubPaths) {\n scrubFields = scrubFields || [];\n\n if (scrubPaths) {\n for (var i = 0; i < scrubPaths.length; ++i) {\n scrubPath(data, scrubPaths[i]);\n }\n }\n\n var paramRes = _getScrubFieldRegexs(scrubFields);\n var queryRes = _getScrubQueryParamRegexs(scrubFields);\n\n function redactQueryParam(dummy0, paramPart) {\n return paramPart + _.redact();\n }\n\n function paramScrubber(v) {\n var i;\n if (_.isType(v, 'string')) {\n for (i = 0; i < queryRes.length; ++i) {\n v = v.replace(queryRes[i], redactQueryParam);\n }\n }\n return v;\n }\n\n function valScrubber(k, v) {\n var i;\n for (i = 0; i < paramRes.length; ++i) {\n if (paramRes[i].test(k)) {\n v = _.redact();\n break;\n }\n }\n return v;\n }\n\n function scrubber(k, v, seen) {\n var tmpV = valScrubber(k, v);\n if (tmpV === v) {\n if (_.isType(v, 'object') || _.isType(v, 'array')) {\n return traverse(v, scrubber, seen);\n }\n return paramScrubber(tmpV);\n } else {\n return tmpV;\n }\n }\n\n return traverse(data, scrubber);\n}\n\nfunction scrubPath(obj, path) {\n var keys = path.split('.');\n var last = keys.length - 1;\n try {\n for (var i = 0; i <= last; ++i) {\n if (i < last) {\n obj = obj[keys[i]];\n } else {\n obj[keys[i]] = _.redact();\n }\n }\n } catch (e) {\n // Missing key is OK;\n }\n}\n\nfunction _getScrubFieldRegexs(scrubFields) {\n var ret = [];\n var pat;\n for (var i = 0; i < scrubFields.length; ++i) {\n pat = '^\\\\[?(%5[bB])?' + scrubFields[i] + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?$';\n ret.push(new RegExp(pat, 'i'));\n }\n return ret;\n}\n\nfunction _getScrubQueryParamRegexs(scrubFields) {\n var ret = [];\n var pat;\n for (var i = 0; i < scrubFields.length; ++i) {\n pat = '\\\\[?(%5[bB])?' + scrubFields[i] + '\\\\[?(%5[bB])?\\\\]?(%5[dD])?';\n ret.push(new RegExp('(' + pat + '=)([^&\\\\n]+)', 'igm'));\n }\n return ret;\n}\n\nexport default scrub;\n","function getElementType(e) {\n return (e.getAttribute('type') || '').toLowerCase();\n}\n\nfunction isDescribedElement(element, type, subtypes) {\n if (element.tagName.toLowerCase() !== type.toLowerCase()) {\n return false;\n }\n if (!subtypes) {\n return true;\n }\n element = getElementType(element);\n for (var i = 0; i < subtypes.length; i++) {\n if (subtypes[i] === element) {\n return true;\n }\n }\n return false;\n}\n\nfunction getElementFromEvent(evt, doc) {\n if (evt.target) {\n return evt.target;\n }\n if (doc && doc.elementFromPoint) {\n return doc.elementFromPoint(evt.clientX, evt.clientY);\n }\n return undefined;\n}\n\nfunction treeToArray(elem) {\n var MAX_HEIGHT = 5;\n var out = [];\n var nextDescription;\n for (var height = 0; elem && height < MAX_HEIGHT; height++) {\n nextDescription = describeElement(elem);\n if (nextDescription.tagName === 'html') {\n break;\n }\n out.unshift(nextDescription);\n elem = elem.parentNode;\n }\n return out;\n}\n\nfunction elementArrayToString(a) {\n var MAX_LENGTH = 80;\n var separator = ' > ',\n separatorLength = separator.length;\n var out = [],\n len = 0,\n nextStr,\n totalLength;\n\n for (var i = a.length - 1; i >= 0; i--) {\n nextStr = descriptionToString(a[i]);\n totalLength = len + out.length * separatorLength + nextStr.length;\n if (i < a.length - 1 && totalLength >= MAX_LENGTH + 3) {\n out.unshift('...');\n break;\n }\n out.unshift(nextStr);\n len += nextStr.length;\n }\n return out.join(separator);\n}\n\nfunction elementString(elem) {\n return elementArrayToString(treeToArray(elem));\n}\n\nfunction descriptionToString(desc) {\n if (!desc || !desc.tagName) {\n return '';\n }\n var out = [desc.tagName];\n if (desc.id) {\n out.push('#' + desc.id);\n }\n if (desc.classes) {\n out.push('.' + desc.classes.join('.'));\n }\n for (var i = 0; i < desc.attributes.length; i++) {\n out.push(\n '[' + desc.attributes[i].key + '=\"' + desc.attributes[i].value + '\"]',\n );\n }\n\n return out.join('');\n}\n\n/**\n * Input: a dom element\n * Output: null if tagName is falsey or input is falsey, else\n * {\n * tagName: String,\n * id: String | undefined,\n * classes: [String] | undefined,\n * attributes: [\n * {\n * key: OneOf(type, name, title, alt),\n * value: String\n * }\n * ]\n * }\n */\nfunction describeElement(elem) {\n if (!elem || !elem.tagName) {\n return null;\n }\n var out = {},\n className,\n key,\n attr,\n i;\n out.tagName = elem.tagName.toLowerCase();\n if (elem.id) {\n out.id = elem.id;\n }\n className = elem.className;\n if (className && typeof className === 'string') {\n out.classes = className.split(/\\s+/);\n }\n var attributes = ['type', 'name', 'title', 'alt'];\n out.attributes = [];\n for (i = 0; i < attributes.length; i++) {\n key = attributes[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.attributes.push({ key: key, value: attr });\n }\n }\n return out;\n}\n\n/*\n * Detects if the given element matches any of the given class names (string or regex),\n * or CSS selectors.\n * @param {HTMLElement} element - The DOM element to check.\n * @param {Array} classes - An array of class names (string or regex) to match against.\n * @param {Array} selectors - An array of CSS selectors to match against.\n * @return {boolean} - True if the element matches any of the classes or selectors, false otherwise.\n */\nfunction isMatchingElement(element, classes, selectors) {\n try {\n for (const cls of classes) {\n if (typeof cls === 'string') {\n if (element.classList.contains(cls)) {\n return true;\n }\n } else {\n for (const c of element.classList) {\n if (cls.test(c)) {\n return true;\n }\n }\n }\n }\n for (const sel of selectors) {\n if (element.matches(sel)) {\n return true;\n }\n }\n } catch (e) {\n // ignore errors from invalid arguments\n }\n return false;\n}\n\nexport {\n describeElement,\n descriptionToString,\n elementArrayToString,\n elementString,\n treeToArray,\n getElementFromEvent,\n isDescribedElement,\n getElementType,\n isMatchingElement,\n};\n","import * as _ from '../utility.js';\nimport headers from '../utility/headers.js';\nimport replace from '../utility/replace.js';\nimport scrub from '../scrub.js';\nimport * as urlparser from './url.js';\nimport * as domUtil from './domUtility.js';\n\nconst defaults = {\n network: true,\n networkResponseHeaders: false,\n networkResponseBody: false,\n networkRequestHeaders: false,\n networkRequestBody: false,\n networkErrorOnHttp5xx: false,\n networkErrorOnHttp4xx: false,\n networkErrorOnHttp0: false,\n log: true,\n dom: true,\n navigation: true,\n connectivity: true,\n contentSecurityPolicy: true,\n errorOnContentSecurityPolicy: false,\n};\n\nfunction restore(replacements, type) {\n let b;\n while (replacements[type].length) {\n b = replacements[type].shift();\n b[0][b[1]] = b[2];\n }\n}\n\nfunction nameFromDescription(description) {\n if (!description || !description.attributes) {\n return null;\n }\n const attrs = description.attributes;\n for (const a of attrs) {\n if (a.key === 'name') {\n return a.value;\n }\n }\n return null;\n}\n\nfunction defaultValueScrubber(scrubFields) {\n const patterns = [];\n for (const field of scrubFields) {\n patterns.push(new RegExp(field, 'i'));\n }\n return function (description) {\n const name = nameFromDescription(description);\n if (!name) {\n return false;\n }\n for (const p of patterns) {\n if (p.test(name)) {\n return true;\n }\n }\n return false;\n };\n}\n\nclass Instrumenter {\n constructor(options, telemeter, rollbar, _window, _document) {\n this.options = options;\n let autoInstrument = options.autoInstrument;\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.telemeter = telemeter;\n this.rollbar = rollbar;\n this.diagnostic = rollbar.client.notifier.diagnostic;\n this._window = _window || {};\n this._document = _document || {};\n this.replacements = {\n network: [],\n log: [],\n navigation: [],\n connectivity: [],\n };\n this.eventRemovers = {\n dom: [],\n connectivity: [],\n contentsecuritypolicy: [],\n };\n\n this._location = this._window.location;\n this._lastHref = this._location && this._location.href;\n }\n\n configureScrubbing() {\n const options = this.options;\n this.scrubTelemetryInputs = !!(\n options.scrubTelemetryInputs ?? options.replay?.maskAllInputs\n );\n this.telemetryScrubber = options.telemetryScrubber;\n this.defaultValueScrubber = defaultValueScrubber(options.scrubFields);\n this.maskInputFn = options.replay?.maskInputFn;\n this.maskInputOptions = options.replay?.maskInputOptions || {};\n this.scrubClasses = [\n options.replay?.blockClass,\n options.replay?.ignoreClass,\n options.replay?.maskTextClass,\n ].filter(Boolean);\n this.scrubSelectors = [\n options.replay?.blockSelector,\n options.replay?.ignoreSelector,\n options.replay?.maskTextSelector,\n ].filter(Boolean);\n }\n\n configure(options) {\n this.options = _.merge(this.options, options);\n let autoInstrument = options.autoInstrument;\n const oldSettings = _.merge(this.autoInstrument);\n if (options.enabled === false || autoInstrument === false) {\n this.autoInstrument = {};\n } else {\n if (!_.isType(autoInstrument, 'object')) {\n autoInstrument = defaults;\n }\n this.autoInstrument = _.merge(defaults, autoInstrument);\n }\n this.configureScrubbing();\n this.instrument(oldSettings);\n }\n\n // eslint-disable-next-line complexity\n instrument(oldSettings) {\n if (this.autoInstrument.network && !(oldSettings && oldSettings.network)) {\n this.instrumentNetwork();\n } else if (\n !this.autoInstrument.network &&\n oldSettings &&\n oldSettings.network\n ) {\n this.deinstrumentNetwork();\n }\n\n if (this.autoInstrument.log && !(oldSettings && oldSettings.log)) {\n this.instrumentConsole();\n } else if (!this.autoInstrument.log && oldSettings && oldSettings.log) {\n this.deinstrumentConsole();\n }\n\n if (this.autoInstrument.dom && !(oldSettings && oldSettings.dom)) {\n this.instrumentDom();\n } else if (!this.autoInstrument.dom && oldSettings && oldSettings.dom) {\n this.deinstrumentDom();\n }\n\n if (\n this.autoInstrument.navigation &&\n !(oldSettings && oldSettings.navigation)\n ) {\n this.instrumentNavigation();\n } else if (\n !this.autoInstrument.navigation &&\n oldSettings &&\n oldSettings.navigation\n ) {\n this.deinstrumentNavigation();\n }\n\n if (\n this.autoInstrument.connectivity &&\n !(oldSettings && oldSettings.connectivity)\n ) {\n this.instrumentConnectivity();\n } else if (\n !this.autoInstrument.connectivity &&\n oldSettings &&\n oldSettings.connectivity\n ) {\n this.deinstrumentConnectivity();\n }\n\n if (\n this.autoInstrument.contentSecurityPolicy &&\n !(oldSettings && oldSettings.contentSecurityPolicy)\n ) {\n this.instrumentContentSecurityPolicy();\n } else if (\n !this.autoInstrument.contentSecurityPolicy &&\n oldSettings &&\n oldSettings.contentSecurityPolicy\n ) {\n this.deinstrumentContentSecurityPolicy();\n }\n }\n\n deinstrumentNetwork() {\n restore(this.replacements, 'network');\n }\n\n instrumentNetwork() {\n const self = this;\n\n function wrapProp(prop, xhr) {\n if (prop in xhr && _.isFunction(xhr[prop])) {\n replace(xhr, prop, function (orig) {\n return self.rollbar.wrap(orig);\n });\n }\n }\n\n if ('XMLHttpRequest' in this._window) {\n const xhrp = this._window.XMLHttpRequest.prototype;\n replace(\n xhrp,\n 'open',\n function (orig) {\n return function (method, url) {\n const isUrlObject = _isUrlObject(url);\n if (_.isType(url, 'string') || isUrlObject) {\n url = isUrlObject ? url.toString() : url;\n if (this.__rollbar_xhr) {\n this.__rollbar_xhr.method = method;\n this.__rollbar_xhr.url = url;\n this.__rollbar_xhr.status_code = null;\n this.__rollbar_xhr.start_time_ms = _.now();\n this.__rollbar_xhr.end_time_ms = null;\n } else {\n this.__rollbar_xhr = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'setRequestHeader',\n function (orig) {\n return function (header, value) {\n // If xhr.open is async, __rollbar_xhr may not be initialized yet.\n if (!this.__rollbar_xhr) {\n this.__rollbar_xhr = {};\n }\n if (_.isType(header, 'string') && _.isType(value, 'string')) {\n if (self.autoInstrument.networkRequestHeaders) {\n if (!this.__rollbar_xhr.request_headers) {\n this.__rollbar_xhr.request_headers = {};\n }\n this.__rollbar_xhr.request_headers[header] = value;\n }\n // We want the content type even if request header telemetry is off.\n if (header.toLowerCase() === 'content-type') {\n this.__rollbar_xhr.request_content_type = value;\n }\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n\n replace(\n xhrp,\n 'send',\n function (orig) {\n return function (data) {\n const xhr = this;\n\n function onreadystatechangeHandler() {\n if (xhr.__rollbar_xhr) {\n if (xhr.__rollbar_xhr.status_code === null) {\n xhr.__rollbar_xhr.status_code = 0;\n if (self.autoInstrument.networkRequestBody) {\n xhr.__rollbar_xhr.request = data;\n }\n xhr.__rollbar_event = self.captureNetwork(\n xhr.__rollbar_xhr,\n 'xhr',\n undefined,\n );\n }\n if (xhr.readyState < 2) {\n xhr.__rollbar_xhr.start_time_ms = _.now();\n }\n if (xhr.readyState > 3) {\n const end_time_ms = _.now();\n xhr.__rollbar_xhr.end_time_ms = end_time_ms;\n\n let headers = null;\n xhr.__rollbar_xhr.response_content_type =\n xhr.getResponseHeader('Content-Type');\n if (self.autoInstrument.networkResponseHeaders) {\n const headersConfig =\n self.autoInstrument.networkResponseHeaders;\n headers = {};\n try {\n let header;\n if (headersConfig === true) {\n const allHeaders = xhr.getAllResponseHeaders();\n if (allHeaders) {\n const arr = allHeaders.trim().split(/[\\r\\n]+/);\n let parts, value;\n for (const h of arr) {\n parts = h.split(': ');\n header = parts.shift();\n value = parts.join(': ');\n headers[header] = value;\n }\n }\n } else {\n for (const h of headersConfig) {\n headers[h] = xhr.getResponseHeader(h);\n }\n }\n } catch (e) {\n /* we ignore the errors here that could come from different\n * browser issues with the xhr methods */\n }\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n try {\n body = xhr.responseText;\n } catch (e) {\n /* ignore errors from reading responseText */\n }\n }\n let response = null;\n if (body || headers) {\n response = {};\n if (body) {\n if (\n self.isJsonContentType(\n xhr.__rollbar_xhr.response_content_type,\n )\n ) {\n response.body = self.scrubJson(body);\n } else {\n response.body = body;\n }\n }\n if (headers) {\n response.headers = headers;\n }\n }\n if (response) {\n xhr.__rollbar_xhr.response = response;\n }\n try {\n let code = xhr.status;\n code = code === 1223 ? 204 : code;\n xhr.__rollbar_xhr.status_code = code;\n self.addOtelNetworkResponse(\n xhr.__rollbar_event,\n end_time_ms,\n code,\n );\n xhr.__rollbar_event.level =\n self.telemeter.levelFromStatus(code);\n self.errorOnHttpStatus(xhr.__rollbar_xhr);\n } catch (e) {\n /* ignore possible exception from xhr.status */\n }\n }\n }\n }\n\n wrapProp('onload', xhr);\n wrapProp('onerror', xhr);\n wrapProp('onprogress', xhr);\n\n if (\n 'onreadystatechange' in xhr &&\n _.isFunction(xhr.onreadystatechange)\n ) {\n replace(xhr, 'onreadystatechange', function (orig) {\n return self.rollbar.wrap(\n orig,\n undefined,\n onreadystatechangeHandler,\n );\n });\n } else {\n xhr.onreadystatechange = onreadystatechangeHandler;\n }\n if (xhr.__rollbar_xhr && self.trackHttpErrors()) {\n xhr.__rollbar_xhr.stack = new Error().stack;\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'network',\n );\n }\n\n if ('fetch' in this._window) {\n replace(\n this._window,\n 'fetch',\n function (orig) {\n return function (fn, t) {\n const args = [...arguments];\n const input = args[0];\n let method = 'GET';\n let url;\n const isUrlObject = _isUrlObject(input);\n if (_.isType(input, 'string') || isUrlObject) {\n url = isUrlObject ? input.toString() : input;\n } else if (input) {\n url = input.url;\n if (input.method) {\n method = input.method;\n }\n }\n if (args[1] && args[1].method) {\n method = args[1].method;\n }\n const metadata = {\n method: method,\n url: url,\n status_code: null,\n start_time_ms: _.now(),\n end_time_ms: null,\n };\n if (args[1] && args[1].headers) {\n // Argument may be a Headers object, or plain object. Ensure here that\n // we are working with a Headers object with case-insensitive keys.\n const reqHeaders = headers(args[1].headers);\n\n metadata.request_content_type = reqHeaders.get('Content-Type');\n\n if (self.autoInstrument.networkRequestHeaders) {\n metadata.request_headers = self.fetchHeaders(\n reqHeaders,\n self.autoInstrument.networkRequestHeaders,\n );\n }\n }\n\n if (self.autoInstrument.networkRequestBody) {\n if (args[1] && args[1].body) {\n metadata.request = args[1].body;\n } else if (\n args[0] &&\n !_.isType(args[0], 'string') &&\n args[0].body\n ) {\n metadata.request = args[0].body;\n }\n }\n const telemetryEvent = self.captureNetwork(\n metadata,\n 'fetch',\n undefined,\n );\n if (self.trackHttpErrors()) {\n metadata.stack = new Error().stack;\n }\n\n // Start our handler before returning the promise. This allows resp.clone()\n // to execute before other handlers touch the response.\n return orig.apply(this, args).then(function (resp) {\n const end_time_ms = _.now();\n metadata.end_time_ms = end_time_ms;\n metadata.status_code = resp.status;\n self.addOtelNetworkResponse(\n telemetryEvent,\n end_time_ms,\n resp.status,\n );\n\n metadata.response_content_type = resp.headers.get('Content-Type');\n let headers = null;\n if (self.autoInstrument.networkResponseHeaders) {\n headers = self.fetchHeaders(\n resp.headers,\n self.autoInstrument.networkResponseHeaders,\n );\n }\n let body = null;\n if (self.autoInstrument.networkResponseBody) {\n if (typeof resp.text === 'function') {\n // Response.text() is not implemented on some platforms\n // The response must be cloned to prevent reading (and locking) the original stream.\n // This must be done before other handlers touch the response.\n body = resp.clone().text(); //returns a Promise\n }\n }\n if (headers || body) {\n metadata.response = {};\n if (body) {\n // Test to ensure body is a Promise, which it should always be.\n if (typeof body.then === 'function') {\n body.then(function (text) {\n if (\n text &&\n self.isJsonContentType(metadata.response_content_type)\n ) {\n metadata.response.body = self.scrubJson(text);\n } else {\n metadata.response.body = text;\n }\n });\n } else {\n metadata.response.body = body;\n }\n }\n if (headers) {\n metadata.response.headers = headers;\n }\n }\n self.errorOnHttpStatus(metadata);\n return resp;\n });\n };\n },\n this.replacements,\n 'network',\n );\n }\n }\n\n captureNetwork(metadata, subtype, rollbarUUID) {\n if (\n metadata.request &&\n this.isJsonContentType(metadata.request_content_type)\n ) {\n metadata.request = this.scrubJson(metadata.request);\n }\n return this.telemeter.captureNetwork(metadata, subtype, rollbarUUID);\n }\n\n isJsonContentType(contentType) {\n return contentType &&\n _.isType(contentType, 'string') &&\n contentType.toLowerCase().includes('json')\n ? true\n : false;\n }\n\n addOtelNetworkResponse(event, endTimeMs, statusCode) {\n if (event.otelAttributes) {\n event.otelAttributes['response.timeUnixNano'] = (\n endTimeMs * 1e6\n ).toString();\n event.otelAttributes.statusCode = statusCode;\n }\n }\n\n scrubJson(json) {\n return JSON.stringify(scrub(JSON.parse(json), this.options.scrubFields));\n }\n\n fetchHeaders(inHeaders, headersConfig) {\n const outHeaders = {};\n try {\n if (headersConfig === true) {\n if (typeof inHeaders.entries === 'function') {\n // Headers.entries() is not implemented in IE\n const allHeaders = inHeaders.entries();\n let currentHeader = allHeaders.next();\n while (!currentHeader.done) {\n outHeaders[currentHeader.value[0]] = currentHeader.value[1];\n currentHeader = allHeaders.next();\n }\n }\n } else {\n for (const h of headersConfig) {\n outHeaders[h] = inHeaders.get(h);\n }\n }\n } catch (e) {\n /* ignore probable IE errors */\n }\n return outHeaders;\n }\n\n trackHttpErrors() {\n return (\n this.autoInstrument.networkErrorOnHttp5xx ||\n this.autoInstrument.networkErrorOnHttp4xx ||\n this.autoInstrument.networkErrorOnHttp0\n );\n }\n\n errorOnHttpStatus(metadata) {\n const status = metadata.status_code;\n\n if (\n (status >= 500 && this.autoInstrument.networkErrorOnHttp5xx) ||\n (status >= 400 && this.autoInstrument.networkErrorOnHttp4xx) ||\n (status === 0 && this.autoInstrument.networkErrorOnHttp0)\n ) {\n const error = new Error('HTTP request failed with Status ' + status);\n error.stack = metadata.stack;\n this.rollbar.error(error, { skipFrames: 1 });\n }\n }\n\n deinstrumentConsole() {\n let b;\n while (this.replacements['log'].length) {\n b = this.replacements['log'].shift();\n this._window.console[b[0]] = b[1];\n }\n }\n\n instrumentConsole() {\n if (!this._window?.console?.log) {\n return;\n }\n\n const self = this;\n const c = this._window.console;\n\n function wrapConsole(method) {\n 'use strict'; // See https://github.com/rollbar/rollbar.js/pull/778\n\n const orig = c[method];\n const origConsole = c;\n const level = method === 'warn' ? 'warning' : method;\n c[method] = function () {\n const args = Array.prototype.slice.call(arguments);\n const message = _.formatArgsAsString(args);\n self.telemeter.captureLog(message, level, null, _.now());\n if (orig) {\n Function.prototype.apply.call(orig, origConsole, args);\n }\n };\n self.replacements['log'].push([method, orig]);\n }\n const methods = ['debug', 'info', 'warn', 'error', 'log'];\n try {\n for (const m of methods) {\n wrapConsole(m);\n }\n } catch (e) {\n this.diagnostic.instrumentConsole = { error: e.message };\n }\n }\n\n deinstrumentDom() {\n this.removeListeners('dom');\n }\n\n instrumentDom() {\n const self = this;\n this.addListener(\n 'dom',\n this._window,\n ['click', 'dblclick', 'contextmenu'],\n (e) => this.handleEvent('click', e),\n );\n this.addListener(\n 'dom',\n this._window,\n ['dragstart', 'dragend', 'dragenter', 'dragleave', 'drop'],\n (e) => this.handleEvent('dragdrop', e),\n );\n this.addListener('dom', this._window, ['blur', 'focus'], (e) =>\n this.handleEvent('focus', e),\n );\n this.addListener('dom', this._window, ['submit', 'invalid'], (e) =>\n this.handleEvent('form', e),\n );\n this.addListener('dom', this._window, ['input', 'change'], (e) =>\n this.handleEvent('input', e),\n );\n this.addListener('dom', this._window, ['resize'], (e) =>\n this.handleEvent('resize', e),\n );\n this.addListener('dom', this._document, ['DOMContentLoaded'], (e) =>\n this.handleEvent('contentLoaded', e),\n );\n }\n\n handleEvent(name, evt) {\n try {\n return {\n click: this.handleClick,\n dragdrop: this.handleDrag,\n focus: this.handleFocus,\n form: this.handleForm,\n input: this.handleInput,\n resize: this.handleResize,\n contentLoaded: this.handleContentLoaded,\n }[name].call(this, evt);\n } catch (exc) {\n console.log(`${name} handler error`, evt, exc, exc.stack);\n }\n }\n\n handleContentLoaded(evt) {\n const replayId = this.rollbar.triggerReplay({\n type: 'navigation',\n path: new URL(this._location.href).pathname,\n });\n }\n\n handleClick(evt) {\n const tagName = evt.target?.tagName.toLowerCase();\n if (['input', 'select', 'textarea'].includes(tagName)) return;\n\n this.telemeter.captureClick({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n timestamp: _.now(),\n });\n }\n\n handleFocus(evt) {\n const type = evt.type;\n const element = evt.target?.window\n ? 'window'\n : domUtil.elementString(evt.target);\n\n this.telemeter.captureFocus({\n type: type,\n isSynthetic: !evt.isTrusted,\n element,\n timestamp: _.now(),\n });\n }\n\n handleForm(evt) {\n // TODO: implement form event handling\n const type = evt.type;\n const elementString = evt.target?.window\n ? 'window'\n : domUtil.elementString(evt.target);\n }\n\n handleResize(evt) {\n const textZoomRatio = window.screen.width / window.innerWidth;\n\n this.telemeter.captureResize({\n type: evt.type,\n isSynthetic: !evt.isTrusted,\n width: window.innerWidth,\n height: window.innerHeight,\n textZoomRatio: textZoomRatio,\n timestamp: _.now(),\n });\n }\n\n handleDrag(evt) {\n const type = evt.type;\n let kinds, mediaTypes, dropEffect, effectAllowed;\n\n if (type === 'drop') {\n kinds = [];\n mediaTypes = [];\n const objs = [...evt.dataTransfer.files, ...evt.dataTransfer.items];\n for (const o of objs) {\n if (o.kind && o.type) {\n kinds.push(o.kind);\n mediaTypes.push(o.type);\n }\n }\n }\n if (['drop', 'dragstart'].includes(type)) {\n dropEffect = evt.dataTransfer?.dropEffect;\n effectAllowed = evt.dataTransfer?.effectAllowed;\n }\n\n this.telemeter.captureDragDrop({\n type,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n dropEffect: dropEffect,\n effectAllowed: effectAllowed,\n kinds: JSON.stringify(kinds),\n mediaTypes: JSON.stringify(mediaTypes),\n timestamp: _.now(),\n });\n }\n\n /*\n * Applies Rollbar telemetry scrubbing options to the dom input value.\n * When replay options are present, applies those as well.\n */\n scrubInputValue(value, element, tagName, inputType) {\n const mask = '******';\n\n if (inputType === 'password') {\n return mask;\n }\n\n if (this.scrubTelemetryInputs) {\n return mask;\n } else {\n const description = domUtil.describeElement(element);\n if (this.telemetryScrubber) {\n if (this.telemetryScrubber(description)) {\n return mask;\n }\n } else if (this.defaultValueScrubber(description)) {\n return mask;\n }\n }\n\n // Apply replay options regardless of other scrubbing\n if (\n domUtil.isMatchingElement(element, this.scrubClasses, this.scrubSelectors)\n ) {\n return mask;\n }\n\n // This check is last since maskInputFn returns a modified value rather\n // than a boolean, which would cause an early return even if the value\n // was not scrubbed.\n if (\n this.maskInputOptions[tagName.toLowerCase()] ||\n this.maskInputOptions[inputType]\n ) {\n if (this.maskInputFn) {\n return this.maskInputFn(value, element);\n } else {\n return mask;\n }\n }\n\n return value;\n }\n\n /*\n * Uses the `input` event for everything except radio and checkbox inputs.\n * For those, it uses the `change` event.\n */\n handleInput(evt) {\n const type = evt.type;\n const tagName = evt.target?.tagName.toLowerCase();\n let value = evt.target?.value;\n let inputType = evt.target?.attributes?.type?.value || evt.target?.type;\n\n if (value !== undefined) {\n value = this.scrubInputValue(value, evt.target, tagName, inputType);\n }\n\n switch (type) {\n case 'input':\n if (['radio', 'checkbox'].includes(inputType)) return;\n if (['select', 'textarea'].includes(tagName)) {\n inputType = tagName;\n }\n break;\n\n case 'change':\n if (!['radio', 'checkbox'].includes(inputType)) return;\n if (inputType === 'checkbox') {\n value = evt.target?.checked;\n }\n break;\n }\n\n this.telemeter.captureInput({\n type: inputType,\n isSynthetic: !evt.isTrusted,\n element: domUtil.elementString(evt.target),\n value,\n timestamp: _.now(),\n });\n }\n\n deinstrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n restore(this.replacements, 'navigation');\n }\n\n instrumentNavigation() {\n const chrome = this._window.chrome;\n const chromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n // See https://github.com/angular/angular.js/pull/13945/files\n const hasPushState =\n !chromePackagedApp &&\n this._window.history &&\n this._window.history.pushState;\n if (!hasPushState) {\n return;\n }\n const self = this;\n replace(\n this._window,\n 'onpopstate',\n function (orig) {\n return function () {\n const current = self._location.href;\n self.handleUrlChange(self._lastHref, current);\n if (orig) {\n orig.apply(this, arguments);\n }\n };\n },\n this.replacements,\n 'navigation',\n );\n\n replace(\n this._window.history,\n 'pushState',\n function (orig) {\n return function () {\n const url = arguments.length > 2 ? arguments[2] : undefined;\n if (url) {\n self.handleUrlChange(self._lastHref, url + '');\n }\n return orig.apply(this, arguments);\n };\n },\n this.replacements,\n 'navigation',\n );\n }\n\n handleUrlChange(from, to) {\n const parsedHref = urlparser.parse(this._location.href);\n const parsedTo = urlparser.parse(to);\n const parsedFrom = urlparser.parse(from);\n this._lastHref = to;\n if (\n parsedHref.protocol === parsedTo.protocol &&\n parsedHref.host === parsedTo.host\n ) {\n to = parsedTo.path + (parsedTo.hash || '');\n }\n if (\n parsedHref.protocol === parsedFrom.protocol &&\n parsedHref.host === parsedFrom.host\n ) {\n from = parsedFrom.path + (parsedFrom.hash || '');\n }\n this.telemeter.captureNavigation(from, to, null, _.now());\n const replayId = this.rollbar.triggerReplay({\n type: 'navigation',\n path: to,\n });\n }\n\n deinstrumentConnectivity = function () {\n this.removeListeners('connectivity');\n };\n\n instrumentConnectivity() {\n const self = this;\n this.addListener(\n 'connectivity',\n this._window,\n ['online', 'offline'],\n (evt) => self.handleConnectivity(evt),\n );\n }\n\n handleConnectivity(evt) {\n const type = evt.type;\n\n this.telemeter.captureConnectivityChange({\n type,\n isSynthetic: !evt.isTrusted,\n timestamp: _.now(),\n });\n }\n\n handleCspEvent(cspEvent) {\n let message =\n 'Security Policy Violation: ' +\n 'blockedURI: ' +\n cspEvent.blockedURI +\n ', ' +\n 'violatedDirective: ' +\n cspEvent.violatedDirective +\n ', ' +\n 'effectiveDirective: ' +\n cspEvent.effectiveDirective +\n ', ';\n\n if (cspEvent.sourceFile) {\n message +=\n 'location: ' +\n cspEvent.sourceFile +\n ', ' +\n 'line: ' +\n cspEvent.lineNumber +\n ', ' +\n 'col: ' +\n cspEvent.columnNumber +\n ', ';\n }\n\n message += 'originalPolicy: ' + cspEvent.originalPolicy;\n\n this.telemeter.captureLog(message, 'error', null, _.now());\n this.handleCspError(message);\n }\n\n handleCspError(message) {\n if (this.autoInstrument.errorOnContentSecurityPolicy) {\n this.rollbar.error(message);\n }\n }\n\n deinstrumentContentSecurityPolicy() {\n this.removeListeners('contentsecuritypolicy');\n }\n\n instrumentContentSecurityPolicy() {\n if (!('addEventListener' in this._document)) {\n return;\n }\n\n const cspHandler = this.handleCspEvent.bind(this);\n this.addListener(\n 'contentsecuritypolicy',\n this._document,\n ['securitypolicyviolation'],\n cspHandler,\n );\n }\n\n addListener(section, obj, types, handler) {\n if (obj.addEventListener) {\n for (const t of types) {\n const options = { capture: true, passive: true };\n obj.addEventListener(t, handler, options, true);\n this.eventRemovers[section].push(function () {\n obj.removeEventListener(t, handler, options);\n });\n }\n }\n }\n\n removeListeners(section) {\n let r;\n while (this.eventRemovers[section].length) {\n r = this.eventRemovers[section].shift();\n r();\n }\n }\n}\n\nfunction _isUrlObject(input) {\n return typeof URL !== 'undefined' && input instanceof URL;\n}\n\nexport default Instrumenter;\n","function wrapGlobals(window, handler, shim) {\n if (!window) {\n return;\n }\n // Adapted from https://github.com/bugsnag/bugsnag-js\n var globals =\n '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'.split(\n ',',\n );\n var i, global;\n for (i = 0; i < globals.length; ++i) {\n global = globals[i];\n\n if (window[global] && window[global].prototype) {\n _extendListenerPrototype(handler, window[global].prototype, shim);\n }\n }\n}\n\nfunction _extendListenerPrototype(handler, prototype, shim) {\n if (\n prototype.hasOwnProperty &&\n prototype.hasOwnProperty('addEventListener')\n ) {\n var oldAddEventListener = prototype.addEventListener;\n while (\n oldAddEventListener._rollbarOldAdd &&\n oldAddEventListener.belongsToShim\n ) {\n oldAddEventListener = oldAddEventListener._rollbarOldAdd;\n }\n var addFn = function (event, callback, bubble) {\n oldAddEventListener.call(this, event, handler.wrap(callback), bubble);\n };\n addFn._rollbarOldAdd = oldAddEventListener;\n addFn.belongsToShim = shim;\n prototype.addEventListener = addFn;\n\n var oldRemoveEventListener = prototype.removeEventListener;\n while (\n oldRemoveEventListener._rollbarOldRemove &&\n oldRemoveEventListener.belongsToShim\n ) {\n oldRemoveEventListener = oldRemoveEventListener._rollbarOldRemove;\n }\n var removeFn = function (event, callback, bubble) {\n oldRemoveEventListener.call(\n this,\n event,\n (callback && callback._rollbar_wrapped) || callback,\n bubble,\n );\n };\n removeFn._rollbarOldRemove = oldRemoveEventListener;\n removeFn.belongsToShim = shim;\n prototype.removeEventListener = removeFn;\n }\n}\n\nexport default wrapGlobals;\n","import * as _ from './utility.js';\nimport traverse from './utility/traverse.js';\n\nfunction raw(payload, jsonBackup) {\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction selectFrames(frames, range) {\n var len = frames.length;\n if (len > range * 2) {\n return frames.slice(0, range).concat(frames.slice(len - range));\n }\n return frames;\n}\n\nfunction truncateFrames(payload, jsonBackup, range) {\n range = typeof range === 'undefined' ? 30 : range;\n var body = payload.data.body;\n var frames;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (var i = 0; i < chain.length; i++) {\n frames = chain[i].frames;\n frames = selectFrames(frames, range);\n chain[i].frames = frames;\n }\n } else if (body.trace) {\n frames = body.trace.frames;\n frames = selectFrames(frames, range);\n body.trace.frames = frames;\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction maybeTruncateValue(len, val) {\n if (!val) {\n return val;\n }\n if (val.length > len) {\n return val.slice(0, len - 3).concat('...');\n }\n return val;\n}\n\nfunction truncateStrings(len, payload, jsonBackup) {\n function truncator(k, v, seen) {\n switch (_.typeName(v)) {\n case 'string':\n return maybeTruncateValue(len, v);\n case 'object':\n case 'array':\n return traverse(v, truncator, seen);\n default:\n return v;\n }\n }\n payload = traverse(payload, truncator);\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction truncateTraceData(traceData) {\n if (traceData.exception) {\n delete traceData.exception.description;\n traceData.exception.message = maybeTruncateValue(\n 255,\n traceData.exception.message,\n );\n }\n traceData.frames = selectFrames(traceData.frames, 1);\n return traceData;\n}\n\nfunction minBody(payload, jsonBackup) {\n var body = payload.data.body;\n if (body.trace_chain) {\n var chain = body.trace_chain;\n for (var i = 0; i < chain.length; i++) {\n chain[i] = truncateTraceData(chain[i]);\n }\n } else if (body.trace) {\n body.trace = truncateTraceData(body.trace);\n }\n return [payload, _.stringify(payload, jsonBackup)];\n}\n\nfunction needsTruncation(payload, maxSize) {\n return _.maxByteSize(payload) > maxSize;\n}\n\nfunction truncate(payload, jsonBackup, maxSize) {\n maxSize = typeof maxSize === 'undefined' ? 512 * 1024 : maxSize;\n var strategies = [\n raw,\n truncateFrames,\n truncateStrings.bind(null, 1024),\n truncateStrings.bind(null, 512),\n truncateStrings.bind(null, 256),\n minBody,\n ];\n var strategy, results, result;\n\n while ((strategy = strategies.shift())) {\n results = strategy(payload, jsonBackup);\n payload = results[0];\n result = results[1];\n if (result.error || !needsTruncation(result.value, maxSize)) {\n return result;\n }\n }\n return result;\n}\n\nexport default {\n truncate,\n\n /* for testing */\n raw,\n truncateFrames,\n truncateStrings,\n maybeTruncateValue,\n};\n","export class Context {\n constructor(parentContext) {\n this._currentContext = parentContext ? new Map(parentContext) : new Map();\n }\n\n getValue(key) {\n return this._currentContext.get(key);\n }\n\n setValue(key, value) {\n const context = new Context(this._currentContext);\n context._currentContext.set(key, value);\n return context;\n }\n\n deleteValue(key) {\n const context = new Context(self._currentContext);\n context._currentContext.delete(key);\n return context;\n }\n}\n\nexport const ROOT_CONTEXT = new Context();\n","import { ROOT_CONTEXT } from './context.js';\n\nexport class ContextManager {\n constructor() {\n this.currentContext = ROOT_CONTEXT;\n }\n\n active() {\n return this.currentContext;\n }\n\n enterContext(context) {\n const previousContext = this.currentContext;\n this.currentContext = context || ROOT_CONTEXT;\n return previousContext;\n }\n\n exitContext(context) {\n this.currentContext = context;\n return this.currentContext;\n }\n\n with(context, fn, thisArg, ...args) {\n const previousContext = this.enterContext(context);\n try {\n return fn.call(thisArg, ...args);\n } finally {\n this.exitContext(previousContext);\n }\n }\n}\n\nexport function createContextKey(key) {\n // Use Symbol for OpenTelemetry compatibility.\n return Symbol.for(key);\n}\n","/**\n * Generate a random hexadecimal ID of specified byte length\n *\n * @param {number} bytes - Number of bytes for the ID (default: 16)\n * @returns {string} - Hexadecimal string representation\n */\nfunction gen(bytes = 16) {\n let randomBytes = new Uint8Array(bytes);\n crypto.getRandomValues(randomBytes);\n let randHex = Array.from(randomBytes, (byte) =>\n byte.toString(16).padStart(2, '0'),\n ).join('');\n return randHex;\n}\n\n/**\n * Tracing id generation utils\n *\n * @example\n * import id from './id.js';\n *\n * const spanId = id.gen(8); // => \"a1b2c3d4e5f6...\"\n */\nexport default { gen };\n","import id from './id.js';\n\nconst SESSION_KEY = 'RollbarSession';\n\nexport class Session {\n _attributes;\n\n constructor(tracing, options) {\n this.options = options;\n this.tracing = tracing;\n this.window = tracing.window;\n this.session = null;\n this._attributes = {};\n }\n\n init(attrs = {}) {\n if (this.session) {\n return this;\n }\n this.getSession() || this.createSession();\n\n this.initSessionAttributes(attrs);\n\n return this;\n }\n\n getSession() {\n try {\n const serializedSession = this.window.sessionStorage.getItem(SESSION_KEY);\n\n if (!serializedSession) {\n return null;\n }\n\n this.session = JSON.parse(serializedSession);\n } catch {\n return null;\n }\n return this;\n }\n\n createSession() {\n this.session = {\n id: id.gen(),\n createdAt: Date.now(),\n };\n\n return this.setSession(this.session);\n }\n\n setSession(session) {\n const sessionString = JSON.stringify(session);\n\n try {\n this.window.sessionStorage.setItem(SESSION_KEY, sessionString);\n } catch {\n return null;\n }\n return this;\n }\n\n get attributes() {\n return this._attributes;\n }\n\n setAttributes(attributes) {\n this._attributes = { ...this._attributes, ...attributes };\n return this;\n }\n\n setUser(user) {\n this.setAttributes({\n 'user.id': user?.id,\n 'user.email': user?.email,\n 'user.name': user?.name || user?.username,\n });\n return this;\n }\n\n initSessionAttributes(attrs) {\n this.setAttributes({\n 'session.id': this.session.id,\n 'browser.brands': navigator.userAgentData?.brands,\n 'browser.language': navigator.language,\n 'browser.mobile': navigator.userAgentData?.mobile,\n 'browser.platform': navigator.userAgentData?.platform,\n 'client.address': '$remote_ip', // updated at the API\n 'rollbar.notifier.framework': 'browser-js',\n 'user_agent.original': navigator.userAgent,\n ...attrs,\n });\n return this;\n }\n}\n","/**\n * @module hrtime\n *\n * @description Methods for handling OpenTelemetry hrtime.\n */\n\n/**\n * Convert a duration in milliseconds to an OpenTelemetry hrtime tuple.\n *\n * @param {number} millis - The duration in milliseconds.\n * @returns {[number, number]} An array where the first element is seconds\n * and the second is nanoseconds.\n */\nfunction fromMillis(millis) {\n return [Math.trunc(millis / 1000), Math.round((millis % 1000) * 1e6)];\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in milliseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in milliseconds.\n */\nfunction toMillis(hrtime) {\n return hrtime[0] * 1e3 + Math.round(hrtime[1] / 1e6);\n}\n\n/**\n * Convert an OpenTelemetry hrtime tuple back to a duration in nanoseconds.\n *\n * @param {[number, number]} hrtime - The hrtime tuple [seconds, nanoseconds].\n * @returns {number} The total duration in nanoseconds.\n */\nfunction toNanos(hrtime) {\n return hrtime[0] * 1e9 + hrtime[1];\n}\n\n/**\n * Adds two OpenTelemetry hrtime tuples.\n *\n * @param {[number, number]} a - The first hrtime tuple [s, ns].\n * @param {[number, number]} b - The second hrtime tuple [s, ns].\n * @returns {[number, number]} Summed hrtime tuple, normalized.\n *\n */\nfunction add(a, b) {\n return [a[0] + b[0] + Math.trunc((a[1] + b[1]) / 1e9), (a[1] + b[1]) % 1e9];\n}\n\n/**\n * Get the current high-resolution time as an OpenTelemetry hrtime tuple.\n *\n * @param {boolean} usePerformance=false - If true, uses the Performance API (timeOrigin + now()).\n *\n * @returns {[number, number]} The current hrtime tuple [s, ns].\n */\nfunction now(usePerformance = false) {\n if (usePerformance) {\n return add(\n fromMillis(performance.timeOrigin),\n fromMillis(performance.now()),\n );\n }\n return fromMillis(Date.now());\n}\n\n/**\n * Check if a value is a valid OpenTelemetry hrtime tuple.\n *\n * An hrtime tuple is an Array of exactly two numbers:\n * [seconds, nanoseconds]\n *\n * @param {*} value – anything to test\n * @returns {boolean} true if `value` is a [number, number] array of length 2\n *\n * @example\n * isHrTime([ 1, 500 ]); // true\n * isHrTime([ 0, 1e9 ]); // true\n * isHrTime([ '1', 500 ]); // false\n * isHrTime({ 0: 1, 1: 500 }); // false\n */\nfunction isHrTime(value) {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number'\n );\n}\n\n/**\n * Methods for handling hrtime. OpenTelemetry uses the [seconds, nanoseconds]\n * format for hrtime in the `ReadableSpan` interface.\n *\n * @example\n * import hrtime from '@tracing/hrtime.js';\n *\n * hrtime.fromMillis(1000);\n * hrtime.toMillis([0, 1000]);\n * hrtime.add([0, 0], [0, 1000]);\n * hrtime.now();\n * hrtime.isHrTime([0, 1000]);\n */\nexport default { fromMillis, toMillis, toNanos, add, now, isHrTime };\n","import hrtime from './hrtime.js';\n\n/**\n * SpanExporter is responsible for exporting ReadableSpan objects\n * and transforming them into the OTLP-compatible format.\n */\nexport class SpanExporter {\n constructor(api, options = {}) {\n this.api = api;\n this.options = options;\n }\n\n /**\n * Export spans to the span export queue\n *\n * @param {Array} spans - Array of ReadableSpan objects to export\n * @param {Function} _resultCallback - Optional callback (not used)\n */\n export(spans, _resultCallback) {\n spanExportQueue.push(...spans);\n }\n\n /**\n * Transforms an array of ReadableSpan objects into the OTLP format payload\n * compatible with the Rollbar API. This follows the OpenTelemetry protocol\n * specification for traces.\n *\n * @returns {Object} OTLP format payload for API transmission\n */\n toPayload() {\n const spans = spanExportQueue.slice();\n spanExportQueue.length = 0;\n\n if (!spans || !spans.length) {\n return { resourceSpans: [] };\n }\n\n const resource = (spans[0] && spans[0].resource) || {};\n\n const scopeMap = new Map();\n\n for (const span of spans) {\n const scopeKey = span.instrumentationScope\n ? `${span.instrumentationScope.name}:${span.instrumentationScope.version}`\n : 'default:1.0.0';\n\n if (!scopeMap.has(scopeKey)) {\n scopeMap.set(scopeKey, {\n scope: span.instrumentationScope || {\n name: 'default',\n version: '1.0.0',\n attributes: [],\n },\n spans: [],\n });\n }\n\n scopeMap.get(scopeKey).spans.push(this._transformSpan(span));\n }\n\n return {\n resourceSpans: [\n {\n resource: this._transformResource(resource),\n scopeSpans: Array.from(scopeMap.values()).map((scopeData) => ({\n scope: this._transformInstrumentationScope(scopeData.scope),\n spans: scopeData.spans,\n })),\n },\n ],\n };\n }\n\n /**\n * Sends the given payload to the Rollbar API.\n *\n * @param {String} payload - Serialized OTLP format payload\n * @param {Object} headers - Optional request headers\n * @returns {Promise} Promise that resolves when the request completes\n */\n post(payload, headers = {}) {\n return this.api.postSpans(payload, headers);\n }\n\n /**\n * Transforms a ReadableSpan into the OTLP Span format\n *\n * @private\n * @param {Object} span - ReadableSpan object to transform\n * @returns {Object} OTLP Span format\n */\n _transformSpan(span) {\n const transformAttributes = (attributes) => {\n return Object.entries(attributes || {}).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n };\n\n const transformEvents = (events) => {\n return (events || []).map((event) => ({\n timeUnixNano: hrtime.toNanos(event.time),\n name: event.name,\n attributes: transformAttributes(event.attributes),\n }));\n };\n\n return {\n traceId: span.spanContext.traceId,\n spanId: span.spanContext.spanId,\n parentSpanId: span.parentSpanId || '',\n name: span.name,\n kind: span.kind || 1, // INTERNAL by default\n startTimeUnixNano: hrtime.toNanos(span.startTime),\n endTimeUnixNano: hrtime.toNanos(span.endTime),\n attributes: transformAttributes(span.attributes),\n events: transformEvents(span.events),\n };\n }\n\n /**\n * Transforms a resource object into OTLP Resource format\n *\n * @private\n * @param {Object} resource - Resource information\n * @returns {Object} OTLP Resource format\n */\n _transformResource(resource) {\n const attributes = resource.attributes || {};\n const keyValues = Object.entries(attributes).map(([key, value]) => ({\n key,\n value: this._transformAnyValue(value),\n }));\n\n return {\n attributes: keyValues,\n };\n }\n\n /**\n * Transforms an instrumentation scope into OTLP InstrumentationScope format\n *\n * @private\n * @param {Object} scope - Instrumentation scope information\n * @returns {Object} OTLP InstrumentationScope format\n */\n _transformInstrumentationScope(scope) {\n return {\n name: scope.name || '',\n version: scope.version || '',\n attributes: (scope.attributes || []).map((attr) => ({\n key: attr.key,\n value: this._transformAnyValue(attr.value),\n })),\n };\n }\n\n /**\n * Transforms a JavaScript value into an OTLP AnyValue\n *\n * @private\n * @param {any} value - Value to transform\n * @returns {Object} OTLP AnyValue format\n */\n _transformAnyValue(value) {\n if (value === null || value === undefined) {\n return { stringValue: '' };\n }\n\n const type = typeof value;\n\n if (type === 'string') {\n return { stringValue: value };\n } else if (type === 'number') {\n if (Number.isInteger(value)) {\n return { intValue: value.toString() };\n } else {\n return { doubleValue: value };\n }\n } else if (type === 'boolean') {\n return { boolValue: value };\n } else if (Array.isArray(value)) {\n return {\n arrayValue: {\n values: value.map((v) => this._transformAnyValue(v)),\n },\n };\n } else if (type === 'object') {\n return {\n kvlistValue: {\n values: Object.entries(value).map(([k, v]) => ({\n key: k,\n value: this._transformAnyValue(v),\n })),\n },\n };\n }\n\n return { stringValue: String(value) };\n }\n}\n\nexport const spanExportQueue = [];\n","import logger from '../logger.js';\n\nexport class SpanProcessor {\n constructor(exporter, options = {}) {\n this.exporter = exporter;\n this.options = options;\n this.pendingSpans = new Map();\n this.transforms = [this.userTransform.bind(this)];\n }\n\n addTransform(transformFn) {\n this.transforms.unshift(transformFn);\n }\n\n userTransform(span) {\n if (this.options.transformSpan) {\n this.options.transformSpan({ span: span });\n }\n }\n\n applyTransforms(span) {\n for (const transform of this.transforms) {\n try {\n transform(span);\n } catch (e) {\n logger.error('Error running span transform callback', e);\n }\n }\n }\n\n onStart(span, _parentContext) {\n this.pendingSpans.set(span.span.spanContext.spanId, span);\n }\n\n onEnd(span) {\n this.applyTransforms(span.span);\n this.exporter.export([span.export()]);\n this.pendingSpans.delete(span.span.spanContext.spanId);\n }\n}\n","import hrtime from './hrtime.js';\n\nexport class Span {\n constructor(options) {\n this.usePerformance = options.usePerformance;\n this.initReadableSpan(options);\n\n this.spanProcessor = options.spanProcessor;\n this.spanProcessor.onStart(this, options.context);\n\n if (options.attributes) {\n this.setAttributes(options.attributes);\n }\n return this;\n }\n\n initReadableSpan(options) {\n this.span = {\n name: options.name,\n kind: options.kind,\n spanContext: options.spanContext,\n parentSpanId: options.parentSpanId,\n startTime: options.startTime || hrtime.now(options.usePerformance),\n endTime: [0, 0],\n status: { code: 0, message: '' },\n attributes: { 'session.id': options.session?.id },\n links: [],\n events: [],\n duration: 0,\n ended: false,\n resource: options.resource,\n instrumentationScope: options.scope,\n droppedAttributesCount: 0,\n droppedEventsCount: 0,\n droppedLinksCount: 0,\n };\n }\n\n spanContext() {\n return this.span.spanContext;\n }\n\n get spanId() {\n return this.span.spanContext.spanId;\n }\n\n get traceId() {\n return this.span.spanContext.traceId;\n }\n\n setAttribute(key, value) {\n if (value == null || this.span.ended) return this;\n if (key.length === 0) return this;\n\n this.span.attributes[key] = value;\n return this;\n }\n\n setAttributes(attributes) {\n for (const [k, v] of Object.entries(attributes)) {\n this.setAttribute(k, v);\n }\n return this;\n }\n\n addEvent(name, attributes = {}, time) {\n if (this.span.ended) return this;\n\n this.span.events.push({\n name,\n attributes,\n time: time || hrtime.now(),\n droppedAttributesCount: 0,\n });\n\n return this;\n }\n\n isRecording() {\n return this.span.ended === false;\n }\n\n end(attributes, time) {\n if (attributes) this.setAttributes(attributes);\n this.span.endTime = time || hrtime.now(this.usePerformance);\n this.span.ended = true;\n this.spanProcessor.onEnd(this);\n }\n\n export() {\n return this.span;\n }\n}\n","import { Span } from './span.js';\nimport id from './id.js';\n\nexport class Tracer {\n constructor(tracing, spanProcessor) {\n this.spanProcessor = spanProcessor;\n this.tracing = tracing;\n }\n\n startSpan(\n name,\n options = {},\n context = this.tracing.contextManager.active(),\n ) {\n const parentSpan = this.tracing.getSpan(context);\n const parentSpanContext = parentSpan?.spanContext();\n const spanId = id.gen(8);\n let traceId;\n let traceFlags = 0;\n let traceState = null;\n let parentSpanId;\n if (parentSpanContext) {\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n parentSpanId = parentSpanContext.spanId;\n } else {\n traceId = id.gen(16);\n }\n\n const kind = 0;\n const spanContext = { traceId, spanId, traceFlags, traceState };\n const resource = {\n attributes: {\n ...(this.tracing.resource?.attributes || {}),\n ...(options.resource?.attributes || {}),\n },\n };\n\n const span = new Span({\n resource: resource,\n scope: this.tracing.scope,\n session: this.tracing.session?.session,\n context,\n spanContext,\n name,\n kind,\n parentSpanId,\n spanProcessor: this.spanProcessor,\n startTime: options.startTime,\n usePerformance: options.usePerformance,\n });\n return span;\n }\n}\n","import { ContextManager, createContextKey } from './contextManager.js';\nimport { Session } from './session.js';\nimport { SpanExporter } from './exporter.js';\nimport { SpanProcessor } from './spanProcessor.js';\nimport { Tracer } from './tracer.js';\nimport id from './id.js';\n\nconst SPAN_KEY = createContextKey('Rollbar Context Key SPAN');\n\nexport default class Tracing {\n constructor(gWindow, api, options) {\n this.api = api;\n this.options = options;\n this.window = gWindow;\n\n if (this.window.sessionStorage) {\n this.session = new Session(this, options);\n }\n this.createTracer();\n }\n\n configure(options) {\n // Options merge happens before configure is called, so we can just replace.\n this.options = options;\n }\n\n initSession() {\n if (this.session) {\n this.session.init();\n }\n }\n\n get sessionId() {\n if (this.session) {\n return this.session.session.id;\n }\n return null;\n }\n\n get resource() {\n return {\n attributes: {\n ...(this.options.resource || {}),\n 'rollbar.environment':\n this.options.payload?.environment ?? this.options.environment,\n },\n };\n }\n\n get scope() {\n return {\n name: 'rollbar-browser-js',\n version: this.options.version,\n };\n }\n\n idGen(bytes = 16) {\n return id.gen(bytes);\n }\n\n createTracer() {\n this.contextManager = new ContextManager();\n this.exporter = new SpanExporter(this.api, this.options);\n this.spanProcessor = new SpanProcessor(this.exporter, this.options.tracing);\n this.tracer = new Tracer(this, this.spanProcessor);\n }\n\n getTracer() {\n return this.tracer;\n }\n\n addSpanTransform(transformFn) {\n this.spanProcessor.addTransform(transformFn);\n }\n\n getSpan(context = this.contextManager.active()) {\n return context.getValue(SPAN_KEY);\n }\n\n setSpan(context = this.contextManager.active(), span) {\n return context.setValue(SPAN_KEY, span);\n }\n\n startSpan(name, options = {}, context = this.contextManager.active()) {\n return this.tracer.startSpan(name, options, context);\n }\n\n with(context, fn, thisArg, ...args) {\n return this.contextManager.with(context, fn, thisArg, ...args);\n }\n\n withSpan(name, options, fn, thisArg) {\n const span = this.startSpan(name, options);\n return this.with(\n this.setSpan(this.contextManager.active(), span),\n fn,\n thisArg,\n span,\n );\n }\n}\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar _a;\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar NodeType$3 = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType$3 || {});\nconst testableAccessors$1 = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods$1 = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype$1 = {};\nconst isAngularZonePresent$1 = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype$1(key) {\n if (untaintedBasePrototype$1[key])\n return untaintedBasePrototype$1[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods$1 ? testableMethods$1[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent$1()) {\n untaintedBasePrototype$1[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype$1[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache$1 = {};\nfunction getUntaintedAccessor$1(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache$1[cacheKey])\n return untaintedAccessorCache$1[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache$1[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache$1 = {};\nfunction getUntaintedMethod$1(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache$1[cacheKey])\n return untaintedMethodCache$1[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache$1[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentElement\");\n}\nfunction textContent$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"textContent\");\n}\nfunction contains$1(n2, other) {\n return getUntaintedMethod$1(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode$1(n2) {\n return getUntaintedMethod$1(\"Node\", n2, \"getRootNode\")();\n}\nfunction host$1(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor$1(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets$1(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot$1(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor$1(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor$1() {\n return getUntaintedPrototype$1(\"MutationObserver\").constructor;\n}\nconst index$1 = {\n childNodes: childNodes$1,\n parentNode: parentNode$1,\n parentElement: parentElement$1,\n textContent: textContent$1,\n contains: contains$1,\n getRootNode: getRootNode$1,\n host: host$1,\n styleSheets: styleSheets$1,\n shadowRoot: shadowRoot$1,\n querySelector: querySelector$1,\n querySelectorAll: querySelectorAll$1,\n mutationObserver: mutationObserverCtor$1\n};\nfunction isElement(n2) {\n return n2.nodeType === n2.ELEMENT_NODE;\n}\nfunction isShadowRoot(n2) {\n const hostEl = (\n // anchor and textarea elements also have a `host` property\n // but only shadow roots have a `mode` property\n n2 && \"host\" in n2 && \"mode\" in n2 && index$1.host(n2) || null\n );\n return Boolean(\n hostEl && \"shadowRoot\" in hostEl && index$1.shadowRoot(hostEl) === n2\n );\n}\nfunction isNativeShadowDom(shadowRoot2) {\n return Object.prototype.toString.call(shadowRoot2) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n cssText = cssText.replace(\n /\\sbackground-clip:\\s*text;/g,\n \" -webkit-background-clip: text; background-clip: text;\"\n );\n }\n return cssText;\n}\nfunction escapeImportStatement(rule2) {\n const { cssText } = rule2;\n if (cssText.split('\"').length < 3) return cssText;\n const statement = [\"@import\", `url(${JSON.stringify(rule2.href)})`];\n if (rule2.layerName === \"\") {\n statement.push(`layer`);\n } else if (rule2.layerName) {\n statement.push(`layer(${rule2.layerName})`);\n }\n if (rule2.supportsText) {\n statement.push(`supports(${rule2.supportsText})`);\n }\n if (rule2.media.length) {\n statement.push(rule2.media.mediaText);\n }\n return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s2) {\n try {\n const rules2 = s2.rules || s2.cssRules;\n if (!rules2) {\n return null;\n }\n let sheetHref = s2.href;\n if (!sheetHref && s2.ownerNode && s2.ownerNode.ownerDocument) {\n sheetHref = s2.ownerNode.ownerDocument.location.href;\n }\n const stringifiedRules = Array.from(\n rules2,\n (rule2) => stringifyRule(rule2, sheetHref)\n ).join(\"\");\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n } catch (error) {\n return null;\n }\n}\nfunction stringifyRule(rule2, sheetHref) {\n if (isCSSImportRule(rule2)) {\n let importStringified;\n try {\n importStringified = // for same-origin stylesheets,\n // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule2.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule2);\n } catch (error) {\n importStringified = rule2.cssText;\n }\n if (rule2.styleSheet.href) {\n return absolutifyURLs(importStringified, rule2.styleSheet.href);\n }\n return importStringified;\n } else {\n let ruleStringified = rule2.cssText;\n if (isCSSStyleRule(rule2) && rule2.selectorText.includes(\":\")) {\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n}\nfunction fixSafariColons(cssStringified) {\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule2) {\n return \"styleSheet\" in rule2;\n}\nfunction isCSSStyleRule(rule2) {\n return \"selectorText\" in rule2;\n}\nclass Mirror {\n constructor() {\n __publicField$1(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField$1(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n getId(n2) {\n var _a2;\n if (!n2) return -1;\n const id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n return id ?? -1;\n }\n getNode(id) {\n return this.idNodeMap.get(id) || null;\n }\n getIds() {\n return Array.from(this.idNodeMap.keys());\n }\n getMeta(n2) {\n return this.nodeMetaMap.get(n2) || null;\n }\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n2) {\n const id = this.getId(n2);\n this.idNodeMap.delete(id);\n if (n2.childNodes) {\n n2.childNodes.forEach(\n (childNode) => this.removeNodeFromMap(childNode)\n );\n }\n }\n has(id) {\n return this.idNodeMap.has(id);\n }\n hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n }\n add(n2, meta) {\n const id = meta.id;\n this.idNodeMap.set(id, n2);\n this.nodeMetaMap.set(n2, meta);\n }\n replace(id, n2) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n2, meta);\n }\n this.idNodeMap.set(id, n2);\n }\n reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n }\n}\nfunction createMirror$2() {\n return new Mirror();\n}\nfunction maskInputValue({\n element,\n maskInputOptions,\n tagName,\n type,\n value,\n maskInputFn\n}) {\n let text = value || \"\";\n const actualType = type && toLowerCase(type);\n if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) {\n if (maskInputFn) {\n text = maskInputFn(text, element);\n } else {\n text = \"*\".repeat(text.length);\n }\n }\n return text;\n}\nfunction toLowerCase(str) {\n return str.toLowerCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return true;\n const chunkSize = 50;\n for (let x2 = 0; x2 < canvas.width; x2 += chunkSize) {\n for (let y = 0; y < canvas.height; y += chunkSize) {\n const getImageData = ctx.getImageData;\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n const pixelBuffer = new Uint32Array(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n originalGetImageData.call(\n ctx,\n x2,\n y,\n Math.min(chunkSize, canvas.width - x2),\n Math.min(chunkSize, canvas.height - y)\n ).data.buffer\n );\n if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n }\n }\n return true;\n}\nfunction isNodeMetaEqual(a2, b) {\n if (!a2 || !b || a2.type !== b.type) return false;\n if (a2.type === NodeType$3.Document)\n return a2.compatMode === b.compatMode;\n else if (a2.type === NodeType$3.DocumentType)\n return a2.name === b.name && a2.publicId === b.publicId && a2.systemId === b.systemId;\n else if (a2.type === NodeType$3.Comment || a2.type === NodeType$3.Text || a2.type === NodeType$3.CDATA)\n return a2.textContent === b.textContent;\n else if (a2.type === NodeType$3.Element)\n return a2.tagName === b.tagName && JSON.stringify(a2.attributes) === JSON.stringify(b.attributes) && a2.isSVG === b.isSVG && a2.needBlock === b.needBlock;\n return false;\n}\nfunction getInputType(element) {\n const type = element.type;\n return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type)\n ) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n let url;\n try {\n url = new URL(path, baseURL ?? window.location.href);\n } catch (err) {\n return null;\n }\n const regex = /\\.([0-9a-z]+)(?:$)/i;\n const match = url.pathname.match(regex);\n return (match == null ? void 0 : match[1]) ?? null;\n}\nfunction extractOrigin(url) {\n let origin = \"\";\n if (url.indexOf(\"//\") > -1) {\n origin = url.split(\"/\").slice(0, 3).join(\"/\");\n } else {\n origin = url.split(\"/\")[0];\n }\n origin = origin.split(\"?\")[0];\n return origin;\n}\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n return (cssText || \"\").replace(\n URL_IN_CSS_REF,\n (origin, quote1, path1, quote2, path2, path3) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || \"\";\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === \"/\") {\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n }\n const stack = href.split(\"/\");\n const parts = filePath.split(\"/\");\n stack.pop();\n for (const part of parts) {\n if (part === \".\") {\n continue;\n } else if (part === \"..\") {\n stack.pop();\n } else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join(\"/\")}${maybeQuote})`;\n }\n );\n}\nfunction normalizeCssString(cssText) {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\");\n}\nfunction splitCssText(cssText, style) {\n const childNodes2 = Array.from(style.childNodes);\n const splits = [];\n if (childNodes2.length > 1 && cssText && typeof cssText === \"string\") {\n const cssTextNorm = normalizeCssString(cssText);\n for (let i2 = 1; i2 < childNodes2.length; i2++) {\n if (childNodes2[i2].textContent && typeof childNodes2[i2].textContent === \"string\") {\n const textContentNorm = normalizeCssString(childNodes2[i2].textContent);\n for (let j = 3; j < textContentNorm.length; j++) {\n const bit = textContentNorm.substring(0, j);\n if (cssTextNorm.split(bit).length === 2) {\n const splitNorm = cssTextNorm.indexOf(bit);\n for (let k = splitNorm; k < cssText.length; k++) {\n if (normalizeCssString(cssText.substring(0, k)).length === splitNorm) {\n splits.push(cssText.substring(0, k));\n cssText = cssText.substring(k);\n break;\n }\n }\n break;\n }\n }\n }\n }\n }\n splits.push(cssText);\n return splits;\n}\nfunction markCssSplits(cssText, style) {\n return splitCssText(cssText, style).join(\"/* rr_split */\");\n}\nlet _id = 1;\nconst tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nconst IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName$1(element) {\n if (element instanceof HTMLFormElement) {\n return \"form\";\n }\n const processedTagName = toLowerCase(element.tagName);\n if (tagNameRegex.test(processedTagName)) {\n return \"div\";\n }\n return processedTagName;\n}\nlet canvasService;\nlet canvasCtx;\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === \"\") {\n return attributeValue;\n }\n let pos = 0;\n function collectCharacters(regEx) {\n let chars2;\n const match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars2 = match[0];\n pos += chars2.length;\n return chars2;\n }\n return \"\";\n }\n const output = [];\n while (true) {\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n let url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === \",\") {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n } else {\n let descriptorsStr = \"\";\n url = absoluteToDoc(doc, url);\n let inParens = false;\n while (true) {\n const c2 = attributeValue.charAt(pos);\n if (c2 === \"\") {\n output.push((url + descriptorsStr).trim());\n break;\n } else if (!inParens) {\n if (c2 === \",\") {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n } else if (c2 === \"(\") {\n inParens = true;\n }\n } else {\n if (c2 === \")\") {\n inParens = false;\n }\n }\n descriptorsStr += c2;\n pos += 1;\n }\n }\n }\n return output.join(\", \");\n}\nconst cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === \"\") {\n return attributeValue;\n }\n return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n let a2 = cachedDocument.get(doc);\n if (!a2) {\n a2 = doc.createElement(\"a\");\n cachedDocument.set(doc, a2);\n }\n if (!customHref) {\n customHref = \"\";\n } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n return customHref;\n }\n a2.setAttribute(\"href\", customHref);\n return a2.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n if (!value) {\n return value;\n }\n if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n return absoluteToDoc(doc, value);\n } else if (name === \"background\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"srcset\") {\n return getAbsoluteSrcsetString(doc, value);\n } else if (name === \"style\") {\n return absolutifyURLs(value, getHref(doc));\n } else if (tagName === \"object\" && name === \"data\") {\n return absoluteToDoc(doc, value);\n }\n return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n return (tagName === \"video\" || tagName === \"audio\") && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n try {\n if (typeof blockClass === \"string\") {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n } else {\n for (let eIndex = element.classList.length; eIndex--; ) {\n const className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n } catch (e2) {\n }\n return false;\n}\nfunction classMatchesRegex(node2, regex, checkAncestors) {\n if (!node2) return false;\n if (node2.nodeType !== node2.ELEMENT_NODE) {\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n }\n for (let eIndex = node2.classList.length; eIndex--; ) {\n const className = node2.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n}\nfunction needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) {\n let el;\n if (isElement(node2)) {\n el = node2;\n if (!index$1.childNodes(el).length) {\n return false;\n }\n } else if (index$1.parentElement(node2) === null) {\n return false;\n } else {\n el = index$1.parentElement(node2);\n }\n try {\n if (typeof maskTextClass === \"string\") {\n if (checkAncestors) {\n if (el.closest(`.${maskTextClass}`)) return true;\n } else {\n if (el.classList.contains(maskTextClass)) return true;\n }\n } else {\n if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n }\n if (maskTextSelector) {\n if (checkAncestors) {\n if (el.closest(maskTextSelector)) return true;\n } else {\n if (el.matches(maskTextSelector)) return true;\n }\n }\n } catch (e2) {\n }\n return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n const win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n let fired = false;\n let readyState;\n try {\n readyState = win.document.readyState;\n } catch (error) {\n return;\n }\n if (readyState !== \"complete\") {\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n const blankUrl = \"about:blank\";\n if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n setTimeout(listener, 0);\n return iframeEl.addEventListener(\"load\", listener);\n }\n iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n let fired = false;\n let styleSheetLoaded;\n try {\n styleSheetLoaded = link.sheet;\n } catch (error) {\n return;\n }\n if (styleSheetLoaded) return;\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n link.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\nfunction serializeNode(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n const rootId = getRootId(doc, mirror2);\n switch (n2.nodeType) {\n case n2.DOCUMENT_NODE:\n if (n2.compatMode !== \"CSS1Compat\") {\n return {\n type: NodeType$3.Document,\n childNodes: [],\n compatMode: n2.compatMode\n // probably \"BackCompat\"\n };\n } else {\n return {\n type: NodeType$3.Document,\n childNodes: []\n };\n }\n case n2.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType$3.DocumentType,\n name: n2.name,\n publicId: n2.publicId,\n systemId: n2.systemId,\n rootId\n };\n case n2.ELEMENT_NODE:\n return serializeElementNode(n2, {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n rootId\n });\n case n2.TEXT_NODE:\n return serializeTextNode(n2, {\n doc,\n needsMask,\n maskTextFn,\n rootId,\n cssCaptured\n });\n case n2.CDATA_SECTION_NODE:\n return {\n type: NodeType$3.CDATA,\n textContent: \"\",\n rootId\n };\n case n2.COMMENT_NODE:\n return {\n type: NodeType$3.Comment,\n textContent: index$1.textContent(n2) || \"\",\n rootId\n };\n default:\n return false;\n }\n}\nfunction getRootId(doc, mirror2) {\n if (!mirror2.hasNode(doc)) return void 0;\n const docId = mirror2.getId(doc);\n return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n2, options) {\n const { needsMask, maskTextFn, rootId, cssCaptured } = options;\n const parent = index$1.parentNode(n2);\n const parentTagName = parent && parent.tagName;\n let textContent2 = \"\";\n const isStyle = parentTagName === \"STYLE\" ? true : void 0;\n const isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n if (isScript) {\n textContent2 = \"SCRIPT_PLACEHOLDER\";\n } else if (!cssCaptured) {\n textContent2 = index$1.textContent(n2);\n if (isStyle && textContent2) {\n textContent2 = absolutifyURLs(textContent2, getHref(options.doc));\n }\n }\n if (!isStyle && !isScript && textContent2 && needsMask) {\n textContent2 = maskTextFn ? maskTextFn(textContent2, index$1.parentElement(n2)) : textContent2.replace(/[\\S]/g, \"*\");\n }\n return {\n type: NodeType$3.Text,\n textContent: textContent2 || \"\",\n rootId\n };\n}\nfunction serializeElementNode(n2, options) {\n const {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions = {},\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n rootId\n } = options;\n const needBlock = _isBlockedElement(n2, blockClass, blockSelector);\n const tagName = getValidTagName$1(n2);\n let attributes = {};\n const len = n2.attributes.length;\n for (let i2 = 0; i2 < len; i2++) {\n const attr = n2.attributes[i2];\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(\n doc,\n tagName,\n toLowerCase(attr.name),\n attr.value\n );\n }\n }\n if (tagName === \"link\" && inlineStylesheet) {\n const stylesheet = Array.from(doc.styleSheets).find((s2) => {\n return s2.href === n2.href;\n });\n let cssText = null;\n if (stylesheet) {\n cssText = stringifyStylesheet(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"style\" && n2.sheet) {\n let cssText = stringifyStylesheet(\n n2.sheet\n );\n if (cssText) {\n if (n2.childNodes.length > 1) {\n cssText = markCssSplits(cssText, n2);\n }\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n const value = n2.value;\n const checked = n2.checked;\n if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n attributes.value = maskInputValue({\n element: n2,\n type: getInputType(n2),\n tagName,\n value,\n maskInputOptions,\n maskInputFn\n });\n } else if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === \"option\") {\n if (n2.selected && !maskInputOptions[\"select\"]) {\n attributes.selected = true;\n } else {\n delete attributes.selected;\n }\n }\n if (tagName === \"dialog\" && n2.open) {\n attributes.rr_open_mode = n2.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n }\n if (tagName === \"canvas\" && recordCanvas) {\n if (n2.__context === \"2d\") {\n if (!is2DCanvasBlank(n2)) {\n attributes.rr_dataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n }\n } else if (!(\"__context\" in n2)) {\n const canvasDataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n const blankCanvas = doc.createElement(\"canvas\");\n blankCanvas.width = n2.width;\n blankCanvas.height = n2.height;\n const blankCanvasDataURL = blankCanvas.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === \"img\" && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement(\"canvas\");\n canvasCtx = canvasService.getContext(\"2d\");\n }\n const image = n2;\n const imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"\";\n const priorCrossOrigin = image.crossOrigin;\n const recordInlineImage = () => {\n image.removeEventListener(\"load\", recordInlineImage);\n try {\n canvasService.width = image.naturalWidth;\n canvasService.height = image.naturalHeight;\n canvasCtx.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n } catch (err) {\n if (image.crossOrigin !== \"anonymous\") {\n image.crossOrigin = \"anonymous\";\n if (image.complete && image.naturalWidth !== 0)\n recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n return;\n } else {\n console.warn(\n `Cannot inline img src=${imageSrc}! Error: ${err}`\n );\n }\n }\n if (image.crossOrigin === \"anonymous\") {\n priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n }\n };\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n }\n if (tagName === \"audio\" || tagName === \"video\") {\n const mediaAttributes = attributes;\n mediaAttributes.rr_mediaState = n2.paused ? \"paused\" : \"played\";\n mediaAttributes.rr_mediaCurrentTime = n2.currentTime;\n mediaAttributes.rr_mediaPlaybackRate = n2.playbackRate;\n mediaAttributes.rr_mediaMuted = n2.muted;\n mediaAttributes.rr_mediaLoop = n2.loop;\n mediaAttributes.rr_mediaVolume = n2.volume;\n }\n if (!newlyAddedElement) {\n if (n2.scrollLeft) {\n attributes.rr_scrollLeft = n2.scrollLeft;\n }\n if (n2.scrollTop) {\n attributes.rr_scrollTop = n2.scrollTop;\n }\n }\n if (needBlock) {\n const { width, height } = n2.getBoundingClientRect();\n attributes = {\n class: attributes.class,\n rr_width: `${width}px`,\n rr_height: `${height}px`\n };\n }\n if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n if (!n2.contentDocument) {\n attributes.rr_src = attributes.src;\n }\n delete attributes.src;\n }\n let isCustomElement;\n try {\n if (customElements.get(tagName)) isCustomElement = true;\n } catch (e2) {\n }\n return {\n type: NodeType$3.Element,\n tagName,\n attributes,\n childNodes: [],\n isSVG: isSVGElement(n2) || void 0,\n needBlock,\n rootId,\n isCustom: isCustomElement\n };\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === void 0 || maybeAttr === null) {\n return \"\";\n } else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType$3.Comment) {\n return true;\n } else if (sn.type === NodeType$3.Element) {\n if (slimDOMOptions.script && // script tag\n (sn.tagName === \"script\" || // (module)preload link\n sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" || sn.attributes.rel === \"modulepreload\") && sn.attributes.as === \"script\" || // prefetch link\n sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n return true;\n } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(\n /^msapplication-tile(image|color)$/\n ) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n return true;\n } else if (sn.tagName === \"meta\") {\n if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n return true;\n } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n return true;\n } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n return true;\n } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild = false,\n inlineStylesheet = true,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions = {},\n inlineImages = false,\n recordCanvas = false,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout = 5e3,\n onStylesheetLoad,\n stylesheetLoadTimeout = 5e3,\n keepIframeSrcFn = () => false,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n let { needsMask } = options;\n let { preserveWhiteSpace = true } = options;\n if (!needsMask) {\n const checkAncestors = needsMask === void 0;\n needsMask = needMaskingText(\n n2,\n maskTextClass,\n maskTextSelector,\n checkAncestors\n );\n }\n const _serializedNode = serializeNode(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n cssCaptured\n });\n if (!_serializedNode) {\n console.warn(n2, \"not serialized\");\n return null;\n }\n let id;\n if (mirror2.hasNode(n2)) {\n id = mirror2.getId(n2);\n } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType$3.Text && !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, \"\").length) {\n id = IGNORED_NODE;\n } else {\n id = genId();\n }\n const serializedNode = Object.assign(_serializedNode, { id });\n mirror2.add(n2, serializedNode);\n if (id === IGNORED_NODE) {\n return null;\n }\n if (onSerialize) {\n onSerialize(n2);\n }\n let recordChild = !skipChild;\n if (serializedNode.type === NodeType$3.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n const shadowRootEl = index$1.shadowRoot(n2);\n if (shadowRootEl && isNativeShadowDom(shadowRootEl))\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType$3.Document || serializedNode.type === NodeType$3.Element) && recordChild) {\n if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"head\") {\n preserveWhiteSpace = false;\n }\n const bypassOptions = {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n cssCaptured: false\n };\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n else {\n if (serializedNode.type === NodeType$3.Element && serializedNode.attributes._cssText !== void 0 && typeof serializedNode.attributes._cssText === \"string\") {\n bypassOptions.cssCaptured = true;\n }\n for (const childN of Array.from(index$1.childNodes(n2))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n let shadowRootEl = null;\n if (isElement(n2) && (shadowRootEl = index$1.shadowRoot(n2))) {\n for (const childN of Array.from(index$1.childNodes(shadowRootEl))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n isNativeShadowDom(shadowRootEl) && (serializedChildNode.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n const parent = index$1.parentNode(n2);\n if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"iframe\") {\n onceIframeLoaded(\n n2,\n () => {\n const iframeDoc = n2.contentDocument;\n if (iframeDoc && onIframeLoad) {\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(\n n2,\n serializedIframeNode\n );\n }\n }\n },\n iframeLoadTimeout\n );\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"link\" && typeof serializedNode.attributes.rel === \"string\" && (serializedNode.attributes.rel === \"stylesheet\" || serializedNode.attributes.rel === \"preload\" && typeof serializedNode.attributes.href === \"string\" && extractFileExtension(serializedNode.attributes.href) === \"css\")) {\n onceStylesheetLoaded(\n n2,\n () => {\n if (onStylesheetLoad) {\n const serializedLinkNode = serializeNodeWithId(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedLinkNode) {\n onStylesheetLoad(\n n2,\n serializedLinkNode\n );\n }\n }\n },\n stylesheetLoadTimeout\n );\n }\n return serializedNode;\n}\nfunction snapshot(n2, options) {\n const {\n mirror: mirror2 = new Mirror(),\n blockClass = \"rr-block\",\n blockSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n inlineImages = false,\n recordCanvas = false,\n maskAllInputs = false,\n maskTextFn,\n maskInputFn,\n slimDOM = false,\n dataURLOptions,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn = () => false\n } = options || {};\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : maskAllInputs === false ? {\n password: true\n } : maskAllInputs;\n const slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? (\n // if true: set of sensible options that should not throw away any information\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === \"all\",\n // destructive\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n }\n ) : slimDOM === false ? {} : slimDOM;\n return serializeNodeWithId(n2, {\n doc: n2,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n newlyAddedElement: false\n });\n}\nconst MEDIA_SELECTOR = /(max|min)-device-(width|height)/;\nconst MEDIA_SELECTOR_GLOBAL = new RegExp(MEDIA_SELECTOR.source, \"g\");\nconst mediaSelectorPlugin = {\n postcssPlugin: \"postcss-custom-selectors\",\n prepare() {\n return {\n postcssPlugin: \"postcss-custom-selectors\",\n AtRule: function(atrule) {\n if (atrule.params.match(MEDIA_SELECTOR_GLOBAL)) {\n atrule.params = atrule.params.replace(MEDIA_SELECTOR_GLOBAL, \"$1-$2\");\n }\n }\n };\n }\n};\nconst pseudoClassPlugin = {\n postcssPlugin: \"postcss-hover-classes\",\n prepare: function() {\n const fixed = [];\n return {\n Rule: function(rule2) {\n if (fixed.indexOf(rule2) !== -1) {\n return;\n }\n fixed.push(rule2);\n rule2.selectors.forEach(function(selector) {\n if (selector.includes(\":hover\")) {\n rule2.selector += \",\\n\" + selector.replace(/:hover/g, \".\\\\:hover\");\n }\n });\n }\n };\n }\n};\nfunction getDefaultExportFromCjs$1(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace$1(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser$1 = { exports: {} };\nvar x$1 = String;\nvar create$1 = function() {\n return { isColorSupported: false, reset: x$1, bold: x$1, dim: x$1, italic: x$1, underline: x$1, inverse: x$1, hidden: x$1, strikethrough: x$1, black: x$1, red: x$1, green: x$1, yellow: x$1, blue: x$1, magenta: x$1, cyan: x$1, white: x$1, gray: x$1, bgBlack: x$1, bgRed: x$1, bgGreen: x$1, bgYellow: x$1, bgBlue: x$1, bgMagenta: x$1, bgCyan: x$1, bgWhite: x$1 };\n};\npicocolors_browser$1.exports = create$1();\npicocolors_browser$1.exports.createColors = create$1;\nvar picocolors_browserExports$1 = picocolors_browser$1.exports;\nconst __viteBrowserExternal$2 = {};\nconst __viteBrowserExternal$1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal$2\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(__viteBrowserExternal$1$1);\nlet pico$1 = picocolors_browserExports$1;\nlet terminalHighlight$1$1 = require$$2$1;\nlet CssSyntaxError$3$1 = class CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico$1.isColorSupported;\n if (terminalHighlight$1$1) {\n if (color) css = terminalHighlight$1$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico$1.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError$1 = CssSyntaxError$3$1;\nCssSyntaxError$3$1.default = CssSyntaxError$3$1;\nvar symbols$1 = {};\nsymbols$1.isClean = Symbol(\"isClean\");\nsymbols$1.my = Symbol(\"my\");\nconst DEFAULT_RAW$1 = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize$1(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2$1 = class Stringifier {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW$1[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize$1(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW$1[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier$1 = Stringifier$2$1;\nStringifier$2$1.default = Stringifier$2$1;\nlet Stringifier$1$1 = stringifier$1;\nfunction stringify$4$1(node2, builder) {\n let str = new Stringifier$1$1(builder);\n str.stringify(node2);\n}\nvar stringify_1$1 = stringify$4$1;\nstringify$4$1.default = stringify$4$1;\nlet { isClean: isClean$2$1, my: my$2$1 } = symbols$1;\nlet CssSyntaxError$2$1 = cssSyntaxError$1;\nlet Stringifier2$1 = stringifier$1;\nlet stringify$3$1 = stringify_1$1;\nfunction cloneNode$1(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode$1(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode$1(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4$1 = class Node2 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2$1] = false;\n this[my$2$1] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode$1(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2$1(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2$1]) {\n this[isClean$2$1] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2$1] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier2$1();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3$1) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node$1 = Node$4$1;\nNode$4$1.default = Node$4$1;\nlet Node$3$1 = node$1;\nlet Declaration$4$1 = class Declaration extends Node$3$1 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration$1 = Declaration$4$1;\nDeclaration$4$1.default = Declaration$4$1;\nlet urlAlphabet$1 = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet$1 = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet$1[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure$1 = { nanoid: nanoid$1$1, customAlphabet: customAlphabet$1 };\nlet { SourceMapConsumer: SourceMapConsumer$2$1, SourceMapGenerator: SourceMapGenerator$2$1 } = require$$2$1;\nlet { existsSync: existsSync$1, readFileSync: readFileSync$1 } = require$$2$1;\nlet { dirname: dirname$1$1, join: join$1 } = require$$2$1;\nfunction fromBase64$1(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2$1 = class PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2$1(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64$1(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1$1(path);\n if (existsSync$1(path)) {\n this.mapFile = path;\n return readFileSync$1(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2$1) {\n return SourceMapGenerator$2$1.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2$1) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join$1(dirname$1$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap$1 = PreviousMap$2$1;\nPreviousMap$2$1.default = PreviousMap$2$1;\nlet { SourceMapConsumer: SourceMapConsumer$1$1, SourceMapGenerator: SourceMapGenerator$1$1 } = require$$2$1;\nlet { fileURLToPath: fileURLToPath$1, pathToFileURL: pathToFileURL$1$1 } = require$$2$1;\nlet { isAbsolute: isAbsolute$1, resolve: resolve$1$1 } = require$$2$1;\nlet { nanoid: nanoid$2 } = nonSecure$1;\nlet terminalHighlight$2 = require$$2$1;\nlet CssSyntaxError$1$1 = cssSyntaxError$1;\nlet PreviousMap$1$1 = previousMap$1;\nlet fromOffsetCache$1 = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1$1 = Boolean(SourceMapConsumer$1$1 && SourceMapGenerator$1$1);\nlet pathAvailable$1$1 = Boolean(resolve$1$1 && isAbsolute$1);\nlet Input$4$1 = class Input {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute$1(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1$1(opts.from);\n }\n }\n if (pathAvailable$1$1 && sourceMapAvailable$1$1) {\n let map = new PreviousMap$1$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1$1) {\n result2.input.url = pathToFileURL$1$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache$1]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache$1] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache$1];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute$1(from.source)) {\n fromUrl = pathToFileURL$1$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath$1) {\n result2.file = fileURLToPath$1(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input$1 = Input$4$1;\nInput$4$1.default = Input$4$1;\nif (terminalHighlight$2 && terminalHighlight$2.registerInput) {\n terminalHighlight$2.registerInput(Input$4$1);\n}\nlet { SourceMapConsumer: SourceMapConsumer$3, SourceMapGenerator: SourceMapGenerator$3 } = require$$2$1;\nlet { dirname: dirname$2, relative: relative$1, resolve: resolve$2, sep: sep$1 } = require$$2$1;\nlet { pathToFileURL: pathToFileURL$2 } = require$$2$1;\nlet Input$3$1 = input$1;\nlet sourceMapAvailable$2 = Boolean(SourceMapConsumer$3 && SourceMapGenerator$3);\nlet pathAvailable$2 = Boolean(dirname$2 && resolve$2 && relative$1 && sep$1);\nlet MapGenerator$2$1 = class MapGenerator {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname$2(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer$3(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable$2 && sourceMapAvailable$2 && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator$3.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname$2(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname$2(resolve$2(from, this.mapOpts.annotation));\n }\n let path = relative$1(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3$1(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL$2) {\n let fileURL = pathToFileURL$2(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep$1 === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator$1 = MapGenerator$2$1;\nlet Node$2$1 = node$1;\nlet Comment$4$1 = class Comment extends Node$2$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment$1 = Comment$4$1;\nComment$4$1.default = Comment$4$1;\nlet { isClean: isClean$1$1, my: my$1$1 } = symbols$1;\nlet Declaration$3$1 = declaration$1;\nlet Comment$3$1 = comment$1;\nlet Node$1$1 = node$1;\nlet parse$4$1, Rule$4$1, AtRule$4$1, Root$6$1;\nfunction cleanSource$1(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource$1(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp$1(node2) {\n node2[isClean$1$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp$1(i2);\n }\n }\n}\nlet Container$7$1 = class Container extends Node$1$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource$1(parse$4$1(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3$1(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4$1(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4$1(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3$1(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1$1]) Container.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1$1]) markDirtyUp$1(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7$1.registerParse = (dependant) => {\n parse$4$1 = dependant;\n};\nContainer$7$1.registerRule = (dependant) => {\n Rule$4$1 = dependant;\n};\nContainer$7$1.registerAtRule = (dependant) => {\n AtRule$4$1 = dependant;\n};\nContainer$7$1.registerRoot = (dependant) => {\n Root$6$1 = dependant;\n};\nvar container$1 = Container$7$1;\nContainer$7$1.default = Container$7$1;\nContainer$7$1.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4$1.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4$1.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3$1.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3$1.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6$1.prototype);\n }\n node2[my$1$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7$1.rebuild(child);\n });\n }\n};\nlet Container$6$1 = container$1;\nlet LazyResult$4$1, Processor$3$1;\nlet Document$3$1 = class Document2 extends Container$6$1 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4$1(new Processor$3$1(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3$1.registerLazyResult = (dependant) => {\n LazyResult$4$1 = dependant;\n};\nDocument$3$1.registerProcessor = (dependant) => {\n Processor$3$1 = dependant;\n};\nvar document$1$1 = Document$3$1;\nDocument$3$1.default = Document$3$1;\nlet printed$1 = {};\nvar warnOnce$2$1 = function warnOnce(message) {\n if (printed$1[message]) return;\n printed$1[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2$1 = class Warning {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning$1 = Warning$2$1;\nWarning$2$1.default = Warning$2$1;\nlet Warning$1$1 = warning$1;\nlet Result$3$1 = class Result {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result$1 = Result$3$1;\nResult$3$1.default = Result$3$1;\nconst SINGLE_QUOTE$1 = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE$1 = '\"'.charCodeAt(0);\nconst BACKSLASH$1 = \"\\\\\".charCodeAt(0);\nconst SLASH$1 = \"/\".charCodeAt(0);\nconst NEWLINE$1 = \"\\n\".charCodeAt(0);\nconst SPACE$1 = \" \".charCodeAt(0);\nconst FEED$1 = \"\\f\".charCodeAt(0);\nconst TAB$1 = \"\t\".charCodeAt(0);\nconst CR$1 = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE$1 = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE$1 = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES$1 = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES$1 = \")\".charCodeAt(0);\nconst OPEN_CURLY$1 = \"{\".charCodeAt(0);\nconst CLOSE_CURLY$1 = \"}\".charCodeAt(0);\nconst SEMICOLON$1 = \";\".charCodeAt(0);\nconst ASTERISK$1 = \"*\".charCodeAt(0);\nconst COLON$1 = \":\".charCodeAt(0);\nconst AT$1 = \"@\".charCodeAt(0);\nconst RE_AT_END$1 = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END$1 = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET$1 = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE$1 = /[\\da-f]/i;\nvar tokenize$1 = function tokenizer(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE$1:\n case SPACE$1:\n case TAB$1:\n case CR$1:\n case FEED$1: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE$1 || code === NEWLINE$1 || code === TAB$1 || code === CR$1 || code === FEED$1);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE$1:\n case CLOSE_SQUARE$1:\n case OPEN_CURLY$1:\n case CLOSE_CURLY$1:\n case COLON$1:\n case SEMICOLON$1:\n case CLOSE_PARENTHESES$1: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES$1: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE$1 && n2 !== DOUBLE_QUOTE$1 && n2 !== SPACE$1 && n2 !== NEWLINE$1 && n2 !== TAB$1 && n2 !== FEED$1 && n2 !== CR$1) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET$1.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE$1:\n case DOUBLE_QUOTE$1: {\n quote = code === SINGLE_QUOTE$1 ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT$1: {\n RE_AT_END$1.lastIndex = pos + 1;\n RE_AT_END$1.test(css);\n if (RE_AT_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END$1.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH$1: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH$1) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH$1 && code !== SPACE$1 && code !== NEWLINE$1 && code !== TAB$1 && code !== CR$1 && code !== FEED$1) {\n next += 1;\n if (RE_HEX_ESCAPE$1.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE$1.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE$1) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH$1 && css.charCodeAt(pos + 1) === ASTERISK$1) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END$1.lastIndex = pos + 1;\n RE_WORD_END$1.test(css);\n if (RE_WORD_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END$1.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5$1 = container$1;\nlet AtRule$3$1 = class AtRule extends Container$5$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule$1 = AtRule$3$1;\nAtRule$3$1.default = AtRule$3$1;\nContainer$5$1.registerAtRule(AtRule$3$1);\nlet Container$4$1 = container$1;\nlet LazyResult$3$1, Processor$2$1;\nlet Root$5$1 = class Root extends Container$4$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3$1(new Processor$2$1(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5$1.registerLazyResult = (dependant) => {\n LazyResult$3$1 = dependant;\n};\nRoot$5$1.registerProcessor = (dependant) => {\n Processor$2$1 = dependant;\n};\nvar root$1 = Root$5$1;\nRoot$5$1.default = Root$5$1;\nContainer$4$1.registerRoot(Root$5$1);\nlet list$2$1 = {\n comma(string) {\n return list$2$1.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2$1.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1$1 = list$2$1;\nlist$2$1.default = list$2$1;\nlet Container$3$1 = container$1;\nlet list$1$1 = list_1$1;\nlet Rule$3$1 = class Rule extends Container$3$1 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule$1 = Rule$3$1;\nRule$3$1.default = Rule$3$1;\nContainer$3$1.registerRule(Rule$3$1);\nlet Declaration$2$1 = declaration$1;\nlet tokenizer2$1 = tokenize$1;\nlet Comment$2$1 = comment$1;\nlet AtRule$2$1 = atRule$1;\nlet Root$4$1 = root$1;\nlet Rule$2$1 = rule$1;\nconst SAFE_COMMENT_NEIGHBOR$1 = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition$1(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1$1 = class Parser {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4$1();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2$1();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2$1();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer2$1(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2$1();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition$1(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2$1();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR$1[prev] && !SAFE_COMMENT_NEIGHBOR$1[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2$1();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser$1 = Parser$1$1;\nlet Container$2$1 = container$1;\nlet Parser2$1 = parser$1;\nlet Input$2$1 = input$1;\nfunction parse$3$1(css, opts) {\n let input2 = new Input$2$1(css, opts);\n let parser2 = new Parser2$1(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1$1 = parse$3$1;\nparse$3$1.default = parse$3$1;\nContainer$2$1.registerParse(parse$3$1);\nlet { isClean: isClean$3, my: my$3 } = symbols$1;\nlet MapGenerator$1$1 = mapGenerator$1;\nlet stringify$2$1 = stringify_1$1;\nlet Container$1$1 = container$1;\nlet Document$2$1 = document$1$1;\nlet warnOnce$1$1 = warnOnce$2$1;\nlet Result$2$1 = result$1;\nlet parse$2$1 = parse_1$1;\nlet Root$3$1 = root$1;\nconst TYPE_TO_CLASS_NAME$1 = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS$1 = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS$1 = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN$1 = 0;\nfunction isPromise$1(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents$1(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME$1[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN$1,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN$1, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack$1(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN$1, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN$1, \"RootExit\"];\n } else {\n events = getEvents$1(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks$1(node2) {\n node2[isClean$3] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks$1(i2));\n return node2;\n}\nlet postcss$2$1 = {};\nlet LazyResult$2$1 = class LazyResult {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks$1(css);\n } else if (css instanceof LazyResult || css instanceof Result$2$1) {\n root2 = cleanMarks$1(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2$1;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my$3]) {\n Container$1$1.rebuild(root2);\n }\n }\n this.result = new Result$2$1(processor2, root2, opts);\n this.helpers = { ...postcss$2$1, postcss: postcss$2$1, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS$1[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS$1[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n let stack = [toStack$1(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise$1(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise$1(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2$1;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean$3]) {\n root2[isClean$3] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean$3]) {\n child[isClean$3] = true;\n stack.push(toStack$1(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN$1) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean$3] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean$3] = true;\n let events = getEvents$1(node2);\n for (let event of events) {\n if (event === CHILDREN$1) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean$3]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2$1.registerPostcss = (dependant) => {\n postcss$2$1 = dependant;\n};\nvar lazyResult$1 = LazyResult$2$1;\nLazyResult$2$1.default = LazyResult$2$1;\nRoot$3$1.registerLazyResult(LazyResult$2$1);\nDocument$2$1.registerLazyResult(LazyResult$2$1);\nlet MapGenerator2$1 = mapGenerator$1;\nlet stringify$1$1 = stringify_1$1;\nlet warnOnce2$1 = warnOnce$2$1;\nlet parse$1$1 = parse_1$1;\nconst Result$1$1 = result$1;\nlet NoWorkResult$1$1 = class NoWorkResult {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1$1;\n this.result = new Result$1$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator2$1(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce2$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult$1 = NoWorkResult$1$1;\nNoWorkResult$1$1.default = NoWorkResult$1$1;\nlet NoWorkResult2$1 = noWorkResult$1;\nlet LazyResult$1$1 = lazyResult$1;\nlet Document$1$1 = document$1$1;\nlet Root$2$1 = root$1;\nlet Processor$1$1 = class Processor {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult2$1(this, css, opts);\n } else {\n return new LazyResult$1$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor$1 = Processor$1$1;\nProcessor$1$1.default = Processor$1$1;\nRoot$2$1.registerProcessor(Processor$1$1);\nDocument$1$1.registerProcessor(Processor$1$1);\nlet Declaration$1$1 = declaration$1;\nlet PreviousMap2$1 = previousMap$1;\nlet Comment$1$1 = comment$1;\nlet AtRule$1$1 = atRule$1;\nlet Input$1$1 = input$1;\nlet Root$1$1 = root$1;\nlet Rule$1$1 = rule$1;\nfunction fromJSON$1$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap2$1.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1$1 = fromJSON$1$1;\nfromJSON$1$1.default = fromJSON$1$1;\nlet CssSyntaxError2$1 = cssSyntaxError$1;\nlet Declaration2$1 = declaration$1;\nlet LazyResult2$1 = lazyResult$1;\nlet Container2$1 = container$1;\nlet Processor2$1 = processor$1;\nlet stringify$5 = stringify_1$1;\nlet fromJSON$2 = fromJSON_1$1;\nlet Document22 = document$1$1;\nlet Warning2$1 = warning$1;\nlet Comment2$1 = comment$1;\nlet AtRule2$1 = atRule$1;\nlet Result2$1 = result$1;\nlet Input2$1 = input$1;\nlet parse$5 = parse_1$1;\nlet list$3 = list_1$1;\nlet Rule2$1 = rule$1;\nlet Root2$1 = root$1;\nlet Node2$1 = node$1;\nfunction postcss$3(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor2$1(plugins);\n}\npostcss$3.plugin = function plugin(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor2$1().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss$3([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss$3.stringify = stringify$5;\npostcss$3.parse = parse$5;\npostcss$3.fromJSON = fromJSON$2;\npostcss$3.list = list$3;\npostcss$3.comment = (defaults) => new Comment2$1(defaults);\npostcss$3.atRule = (defaults) => new AtRule2$1(defaults);\npostcss$3.decl = (defaults) => new Declaration2$1(defaults);\npostcss$3.rule = (defaults) => new Rule2$1(defaults);\npostcss$3.root = (defaults) => new Root2$1(defaults);\npostcss$3.document = (defaults) => new Document22(defaults);\npostcss$3.CssSyntaxError = CssSyntaxError2$1;\npostcss$3.Declaration = Declaration2$1;\npostcss$3.Container = Container2$1;\npostcss$3.Processor = Processor2$1;\npostcss$3.Document = Document22;\npostcss$3.Comment = Comment2$1;\npostcss$3.Warning = Warning2$1;\npostcss$3.AtRule = AtRule2$1;\npostcss$3.Result = Result2$1;\npostcss$3.Input = Input2$1;\npostcss$3.Rule = Rule2$1;\npostcss$3.Root = Root2$1;\npostcss$3.Node = Node2$1;\nLazyResult2$1.registerPostcss(postcss$3);\nvar postcss_1$1 = postcss$3;\npostcss$3.default = postcss$3;\nconst postcss$1$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(postcss_1$1);\npostcss$1$1.stringify;\npostcss$1$1.fromJSON;\npostcss$1$1.plugin;\npostcss$1$1.parse;\npostcss$1$1.list;\npostcss$1$1.document;\npostcss$1$1.comment;\npostcss$1$1.atRule;\npostcss$1$1.rule;\npostcss$1$1.decl;\npostcss$1$1.root;\npostcss$1$1.CssSyntaxError;\npostcss$1$1.Declaration;\npostcss$1$1.Container;\npostcss$1$1.Processor;\npostcss$1$1.Document;\npostcss$1$1.Comment;\npostcss$1$1.Warning;\npostcss$1$1.AtRule;\npostcss$1$1.Result;\npostcss$1$1.Input;\npostcss$1$1.Rule;\npostcss$1$1.Root;\npostcss$1$1.Node;\nconst tagMap = {\n script: \"noscript\",\n // camel case svg element tag names\n altglyph: \"altGlyph\",\n altglyphdef: \"altGlyphDef\",\n altglyphitem: \"altGlyphItem\",\n animatecolor: \"animateColor\",\n animatemotion: \"animateMotion\",\n animatetransform: \"animateTransform\",\n clippath: \"clipPath\",\n feblend: \"feBlend\",\n fecolormatrix: \"feColorMatrix\",\n fecomponenttransfer: \"feComponentTransfer\",\n fecomposite: \"feComposite\",\n feconvolvematrix: \"feConvolveMatrix\",\n fediffuselighting: \"feDiffuseLighting\",\n fedisplacementmap: \"feDisplacementMap\",\n fedistantlight: \"feDistantLight\",\n fedropshadow: \"feDropShadow\",\n feflood: \"feFlood\",\n fefunca: \"feFuncA\",\n fefuncb: \"feFuncB\",\n fefuncg: \"feFuncG\",\n fefuncr: \"feFuncR\",\n fegaussianblur: \"feGaussianBlur\",\n feimage: \"feImage\",\n femerge: \"feMerge\",\n femergenode: \"feMergeNode\",\n femorphology: \"feMorphology\",\n feoffset: \"feOffset\",\n fepointlight: \"fePointLight\",\n fespecularlighting: \"feSpecularLighting\",\n fespotlight: \"feSpotLight\",\n fetile: \"feTile\",\n feturbulence: \"feTurbulence\",\n foreignobject: \"foreignObject\",\n glyphref: \"glyphRef\",\n lineargradient: \"linearGradient\",\n radialgradient: \"radialGradient\"\n};\nfunction getTagName(n2) {\n let tagName = tagMap[n2.tagName] ? tagMap[n2.tagName] : n2.tagName;\n if (tagName === \"link\" && n2.attributes._cssText) {\n tagName = \"style\";\n }\n return tagName;\n}\nfunction adaptCssForReplay(cssText, cache) {\n const cachedStyle = cache == null ? void 0 : cache.stylesWithHoverClass.get(cssText);\n if (cachedStyle) return cachedStyle;\n const ast = postcss$1$1([\n mediaSelectorPlugin,\n pseudoClassPlugin\n ]).process(cssText);\n const result2 = ast.css;\n cache == null ? void 0 : cache.stylesWithHoverClass.set(cssText, result2);\n return result2;\n}\nfunction createCache() {\n const stylesWithHoverClass = /* @__PURE__ */ new Map();\n return {\n stylesWithHoverClass\n };\n}\nfunction applyCssSplits(n2, cssText, hackCss, cache) {\n const childTextNodes = [];\n for (const scn of n2.childNodes) {\n if (scn.type === NodeType$3.Text) {\n childTextNodes.push(scn);\n }\n }\n const cssTextSplits = cssText.split(\"/* rr_split */\");\n while (cssTextSplits.length > 1 && cssTextSplits.length > childTextNodes.length) {\n cssTextSplits.splice(-2, 2, cssTextSplits.slice(-2).join(\"\"));\n }\n for (let i2 = 0; i2 < childTextNodes.length; i2++) {\n const childTextNode = childTextNodes[i2];\n const cssTextSection = cssTextSplits[i2];\n if (childTextNode && cssTextSection) {\n childTextNode.textContent = hackCss ? adaptCssForReplay(cssTextSection, cache) : cssTextSection;\n }\n }\n}\nfunction buildStyleNode(n2, styleEl, cssText, options) {\n const { doc, hackCss, cache } = options;\n if (n2.childNodes.length) {\n applyCssSplits(n2, cssText, hackCss, cache);\n } else {\n if (hackCss) {\n cssText = adaptCssForReplay(cssText, cache);\n }\n styleEl.appendChild(doc.createTextNode(cssText));\n }\n}\nfunction buildNode(n2, options) {\n var _a2;\n const { doc, hackCss, cache } = options;\n switch (n2.type) {\n case NodeType$3.Document:\n return doc.implementation.createDocument(null, \"\", null);\n case NodeType$3.DocumentType:\n return doc.implementation.createDocumentType(\n n2.name || \"html\",\n n2.publicId,\n n2.systemId\n );\n case NodeType$3.Element: {\n const tagName = getTagName(n2);\n let node2;\n if (n2.isSVG) {\n node2 = doc.createElementNS(\"http://www.w3.org/2000/svg\", tagName);\n } else {\n if (\n // If the tag name is a custom element name\n n2.isCustom && // If the browser supports custom elements\n ((_a2 = doc.defaultView) == null ? void 0 : _a2.customElements) && // If the custom element hasn't been defined yet\n !doc.defaultView.customElements.get(n2.tagName)\n )\n doc.defaultView.customElements.define(\n n2.tagName,\n class extends doc.defaultView.HTMLElement {\n }\n );\n node2 = doc.createElement(tagName);\n }\n const specialAttributes = {};\n for (const name in n2.attributes) {\n if (!Object.prototype.hasOwnProperty.call(n2.attributes, name)) {\n continue;\n }\n let value = n2.attributes[name];\n if (tagName === \"option\" && name === \"selected\" && value === false) {\n continue;\n }\n if (value === null) {\n continue;\n }\n if (value === true) value = \"\";\n if (name.startsWith(\"rr_\")) {\n specialAttributes[name] = value;\n continue;\n }\n if (typeof value !== \"string\") ;\n else if (tagName === \"style\" && name === \"_cssText\") {\n buildStyleNode(n2, node2, value, options);\n continue;\n } else if (tagName === \"textarea\" && name === \"value\") {\n node2.appendChild(doc.createTextNode(value));\n n2.childNodes = [];\n continue;\n }\n try {\n if (n2.isSVG && name === \"xlink:href\") {\n node2.setAttributeNS(\n \"http://www.w3.org/1999/xlink\",\n name,\n value.toString()\n );\n } else if (name === \"onload\" || name === \"onclick\" || name.substring(0, 7) === \"onmouse\") {\n node2.setAttribute(\"_\" + name, value.toString());\n } else if (tagName === \"meta\" && n2.attributes[\"http-equiv\"] === \"Content-Security-Policy\" && name === \"content\") {\n node2.setAttribute(\"csp-content\", value.toString());\n continue;\n } else if (tagName === \"link\" && (n2.attributes.rel === \"preload\" || n2.attributes.rel === \"modulepreload\") && n2.attributes.as === \"script\") {\n } else if (tagName === \"link\" && n2.attributes.rel === \"prefetch\" && typeof n2.attributes.href === \"string\" && n2.attributes.href.endsWith(\".js\")) {\n } else if (tagName === \"img\" && n2.attributes.srcset && n2.attributes.rr_dataURL) {\n node2.setAttribute(\n \"rrweb-original-srcset\",\n n2.attributes.srcset\n );\n } else {\n node2.setAttribute(name, value.toString());\n }\n } catch (error) {\n }\n }\n for (const name in specialAttributes) {\n const value = specialAttributes[name];\n if (tagName === \"canvas\" && name === \"rr_dataURL\") {\n const image = doc.createElement(\"img\");\n image.onload = () => {\n const ctx = node2.getContext(\"2d\");\n if (ctx) {\n ctx.drawImage(image, 0, 0, image.width, image.height);\n }\n };\n image.src = value.toString();\n if (node2.RRNodeType)\n node2.rr_dataURL = value.toString();\n } else if (tagName === \"img\" && name === \"rr_dataURL\") {\n const image = node2;\n if (!image.currentSrc.startsWith(\"data:\")) {\n image.setAttribute(\n \"rrweb-original-src\",\n n2.attributes.src\n );\n image.src = value.toString();\n }\n }\n if (name === \"rr_width\") {\n node2.style.setProperty(\"width\", value.toString());\n } else if (name === \"rr_height\") {\n node2.style.setProperty(\"height\", value.toString());\n } else if (name === \"rr_mediaCurrentTime\" && typeof value === \"number\") {\n node2.currentTime = value;\n } else if (name === \"rr_mediaState\") {\n switch (value) {\n case \"played\":\n node2.play().catch((e2) => console.warn(\"media playback error\", e2));\n break;\n case \"paused\":\n node2.pause();\n break;\n }\n } else if (name === \"rr_mediaPlaybackRate\" && typeof value === \"number\") {\n node2.playbackRate = value;\n } else if (name === \"rr_mediaMuted\" && typeof value === \"boolean\") {\n node2.muted = value;\n } else if (name === \"rr_mediaLoop\" && typeof value === \"boolean\") {\n node2.loop = value;\n } else if (name === \"rr_mediaVolume\" && typeof value === \"number\") {\n node2.volume = value;\n } else if (name === \"rr_open_mode\") {\n node2.setAttribute(\n \"rr_open_mode\",\n value\n );\n }\n }\n if (n2.isShadowHost) {\n if (!node2.shadowRoot) {\n node2.attachShadow({ mode: \"open\" });\n } else {\n while (node2.shadowRoot.firstChild) {\n node2.shadowRoot.removeChild(node2.shadowRoot.firstChild);\n }\n }\n }\n return node2;\n }\n case NodeType$3.Text:\n if (n2.isStyle && hackCss) {\n return doc.createTextNode(adaptCssForReplay(n2.textContent, cache));\n }\n return doc.createTextNode(n2.textContent);\n case NodeType$3.CDATA:\n return doc.createCDATASection(n2.textContent);\n case NodeType$3.Comment:\n return doc.createComment(n2.textContent);\n default:\n return null;\n }\n}\nfunction buildNodeWithSN(n2, options) {\n const {\n doc,\n mirror: mirror2,\n skipChild = false,\n hackCss = true,\n afterAppend,\n cache\n } = options;\n if (mirror2.has(n2.id)) {\n const nodeInMirror = mirror2.getNode(n2.id);\n const meta = mirror2.getMeta(nodeInMirror);\n if (isNodeMetaEqual(meta, n2)) return mirror2.getNode(n2.id);\n }\n let node2 = buildNode(n2, { doc, hackCss, cache });\n if (!node2) {\n return null;\n }\n if (n2.rootId && mirror2.getNode(n2.rootId) !== doc) {\n mirror2.replace(n2.rootId, doc);\n }\n if (n2.type === NodeType$3.Document) {\n doc.close();\n doc.open();\n if (n2.compatMode === \"BackCompat\" && n2.childNodes && n2.childNodes[0].type !== NodeType$3.DocumentType) {\n if (n2.childNodes[0].type === NodeType$3.Element && \"xmlns\" in n2.childNodes[0].attributes && n2.childNodes[0].attributes.xmlns === \"http://www.w3.org/1999/xhtml\") {\n doc.write(\n ''\n );\n } else {\n doc.write(\n ''\n );\n }\n }\n node2 = doc;\n }\n mirror2.add(node2, n2);\n if ((n2.type === NodeType$3.Document || n2.type === NodeType$3.Element) && !skipChild) {\n for (const childN of n2.childNodes) {\n const childNode = buildNodeWithSN(childN, {\n doc,\n mirror: mirror2,\n skipChild: false,\n hackCss,\n afterAppend,\n cache\n });\n if (!childNode) {\n console.warn(\"Failed to rebuild\", childN);\n continue;\n }\n if (childN.isShadow && isElement(node2) && node2.shadowRoot) {\n node2.shadowRoot.appendChild(childNode);\n } else if (n2.type === NodeType$3.Document && childN.type == NodeType$3.Element) {\n const htmlElement = childNode;\n let body = null;\n htmlElement.childNodes.forEach((child) => {\n if (child.nodeName === \"BODY\") body = child;\n });\n if (body) {\n htmlElement.removeChild(body);\n node2.appendChild(childNode);\n htmlElement.appendChild(body);\n } else {\n node2.appendChild(childNode);\n }\n } else {\n node2.appendChild(childNode);\n }\n if (afterAppend) {\n afterAppend(childNode, childN.id);\n }\n }\n }\n return node2;\n}\nfunction visit(mirror2, onVisit) {\n function walk(node2) {\n onVisit(node2);\n }\n for (const id of mirror2.getIds()) {\n if (mirror2.has(id)) {\n walk(mirror2.getNode(id));\n }\n }\n}\nfunction handleScroll(node2, mirror2) {\n const n2 = mirror2.getMeta(node2);\n if ((n2 == null ? void 0 : n2.type) !== NodeType$3.Element) {\n return;\n }\n const el = node2;\n for (const name in n2.attributes) {\n if (!(Object.prototype.hasOwnProperty.call(n2.attributes, name) && name.startsWith(\"rr_\"))) {\n continue;\n }\n const value = n2.attributes[name];\n if (name === \"rr_scrollLeft\") {\n el.scrollLeft = value;\n }\n if (name === \"rr_scrollTop\") {\n el.scrollTop = value;\n }\n }\n}\nfunction rebuild(n2, options) {\n const {\n doc,\n onVisit,\n hackCss = true,\n afterAppend,\n cache,\n mirror: mirror2 = new Mirror()\n } = options;\n const node2 = buildNodeWithSN(n2, {\n doc,\n mirror: mirror2,\n skipChild: false,\n hackCss,\n afterAppend,\n cache\n });\n visit(mirror2, (visitedNode) => {\n if (onVisit) {\n onVisit(visitedNode);\n }\n handleScroll(visitedNode, mirror2);\n });\n return node2;\n}\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField2 = (obj, key, value) => __defNormalProp2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar __defProp22 = Object.defineProperty;\nvar __defNormalProp22 = (obj, key, value) => key in obj ? __defProp22(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField22 = (obj, key, value) => __defNormalProp22(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nlet Mirror$1 = class Mirror2 {\n constructor() {\n __publicField22(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField22(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n getId(n2) {\n var _a2;\n if (!n2) return -1;\n const id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n return id ?? -1;\n }\n getNode(id) {\n return this.idNodeMap.get(id) || null;\n }\n getIds() {\n return Array.from(this.idNodeMap.keys());\n }\n getMeta(n2) {\n return this.nodeMetaMap.get(n2) || null;\n }\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n2) {\n const id = this.getId(n2);\n this.idNodeMap.delete(id);\n if (n2.childNodes) {\n n2.childNodes.forEach(\n (childNode) => this.removeNodeFromMap(childNode)\n );\n }\n }\n has(id) {\n return this.idNodeMap.has(id);\n }\n hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n }\n add(n2, meta) {\n const id = meta.id;\n this.idNodeMap.set(id, n2);\n this.nodeMetaMap.set(n2, meta);\n }\n replace(id, n2) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n2, meta);\n }\n this.idNodeMap.set(id, n2);\n }\n reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n }\n};\nfunction createMirror$1() {\n return new Mirror$1();\n}\nfunction getDefaultExportFromCjs(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser = { exports: {} };\nvar x = String;\nvar create = function() {\n return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x };\n};\npicocolors_browser.exports = create();\npicocolors_browser.exports.createColors = create;\nvar picocolors_browserExports = picocolors_browser.exports;\nconst __viteBrowserExternal = {};\nconst __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nlet pico = picocolors_browserExports;\nlet terminalHighlight$1 = require$$2;\nlet CssSyntaxError$3 = class CssSyntaxError2 extends Error {\n constructor(message, line, column, source, file, plugin22) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin22) {\n this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError2);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico.isColorSupported;\n if (terminalHighlight$1) {\n if (color) css = terminalHighlight$1(css);\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n let mark, aside;\n if (color) {\n let { bold, gray, red } = pico.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n } else {\n mark = aside = (str) => str;\n }\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n};\nvar cssSyntaxError = CssSyntaxError$3;\nCssSyntaxError$3.default = CssSyntaxError$3;\nvar symbols = {};\nsymbols.isClean = Symbol(\"isClean\");\nsymbols.my = Symbol(\"my\");\nconst DEFAULT_RAW = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2 = class Stringifier2 {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n};\nvar stringifier = Stringifier$2;\nStringifier$2.default = Stringifier$2;\nlet Stringifier$1 = stringifier;\nfunction stringify$4(node2, builder) {\n let str = new Stringifier$1(builder);\n str.stringify(node2);\n}\nvar stringify_1 = stringify$4;\nstringify$4.default = stringify$4;\nlet { isClean: isClean$2, my: my$2 } = symbols;\nlet CssSyntaxError$2 = cssSyntaxError;\nlet Stringifier22 = stringifier;\nlet stringify$3 = stringify_1;\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nlet Node$4 = class Node3 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean$2] = false;\n this[my$2] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError$2(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n markDirty() {\n if (this[isClean$2]) {\n this[isClean$2] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean$2] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n }\n positionInside(index2, stringRepresentation) {\n let string = stringRepresentation || this.toString();\n let column = this.source.start.column;\n let line = this.source.start.line;\n for (let i2 = 0; i2 < index2; i2++) {\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let stringRepresentation = this.toString();\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier22();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify$3) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n};\nvar node = Node$4;\nNode$4.default = Node$4;\nlet Node$3 = node;\nlet Declaration$4 = class Declaration2 extends Node$3 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n};\nvar declaration = Declaration$4;\nDeclaration$4.default = Declaration$4;\nlet urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n};\nlet nanoid$1 = (size = 21) => {\n let id = \"\";\n let i2 = size;\n while (i2--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure = { nanoid: nanoid$1, customAlphabet };\nlet { SourceMapConsumer: SourceMapConsumer$2, SourceMapGenerator: SourceMapGenerator$2 } = require$$2;\nlet { existsSync, readFileSync } = require$$2;\nlet { dirname: dirname$1, join } = require$$2;\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nlet PreviousMap$2 = class PreviousMap2 {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname$1(path);\n if (existsSync(path)) {\n this.mapFile = path;\n return readFileSync(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer$2) {\n return SourceMapGenerator$2.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator$2) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join(dirname$1(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n};\nvar previousMap = PreviousMap$2;\nPreviousMap$2.default = PreviousMap$2;\nlet { SourceMapConsumer: SourceMapConsumer$1, SourceMapGenerator: SourceMapGenerator$1 } = require$$2;\nlet { fileURLToPath, pathToFileURL: pathToFileURL$1 } = require$$2;\nlet { isAbsolute, resolve: resolve$1 } = require$$2;\nlet { nanoid } = nonSecure;\nlet terminalHighlight = require$$2;\nlet CssSyntaxError$1 = cssSyntaxError;\nlet PreviousMap$1 = previousMap;\nlet fromOffsetCache = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1);\nlet pathAvailable$1 = Boolean(resolve$1 && isAbsolute);\nlet Input$4 = class Input2 {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1(opts.from);\n }\n }\n if (pathAvailable$1 && sourceMapAvailable$1) {\n let map = new PreviousMap$1(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let result2, endLine, endColumn;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError$1(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL$1) {\n result2.input.url = pathToFileURL$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL$1(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL$1(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath) {\n result2.file = fileURLToPath(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n};\nvar input = Input$4;\nInput$4.default = Input$4;\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input$4);\n}\nlet { SourceMapConsumer, SourceMapGenerator } = require$$2;\nlet { dirname, relative, resolve, sep } = require$$2;\nlet { pathToFileURL } = require$$2;\nlet Input$3 = input;\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\nlet pathAvailable = Boolean(dirname && resolve && relative && sep);\nlet MapGenerator$2 = class MapGenerator2 {\n constructor(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let lines, last;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname(resolve(from, this.mapOpts.annotation));\n }\n let path = relative(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input$3(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n};\nvar mapGenerator = MapGenerator$2;\nlet Node$2 = node;\nlet Comment$4 = class Comment2 extends Node$2 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n};\nvar comment = Comment$4;\nComment$4.default = Comment$4;\nlet { isClean: isClean$1, my: my$1 } = symbols;\nlet Declaration$3 = declaration;\nlet Comment$3 = comment;\nlet Node$1 = node;\nlet parse$4, Rule$4, AtRule$4, Root$6;\nfunction cleanSource(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp(node2) {\n node2[isClean$1] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markDirtyUp(i2);\n }\n }\n}\nlet Container$7 = class Container2 extends Node$1 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource(parse$4(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration$3(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule$4(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule$4(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment$3(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my$1]) Container2.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1]) markDirtyUp(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n};\nContainer$7.registerParse = (dependant) => {\n parse$4 = dependant;\n};\nContainer$7.registerRule = (dependant) => {\n Rule$4 = dependant;\n};\nContainer$7.registerAtRule = (dependant) => {\n AtRule$4 = dependant;\n};\nContainer$7.registerRoot = (dependant) => {\n Root$6 = dependant;\n};\nvar container = Container$7;\nContainer$7.default = Container$7;\nContainer$7.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6.prototype);\n }\n node2[my$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container$7.rebuild(child);\n });\n }\n};\nlet Container$6 = container;\nlet LazyResult$4, Processor$3;\nlet Document$3 = class Document23 extends Container$6 {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$4(new Processor$3(), this, opts);\n return lazy.stringify();\n }\n};\nDocument$3.registerLazyResult = (dependant) => {\n LazyResult$4 = dependant;\n};\nDocument$3.registerProcessor = (dependant) => {\n Processor$3 = dependant;\n};\nvar document$1 = Document$3;\nDocument$3.default = Document$3;\nlet printed = {};\nvar warnOnce$2 = function warnOnce2(message) {\n if (printed[message]) return;\n printed[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nlet Warning$2 = class Warning2 {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n};\nvar warning = Warning$2;\nWarning$2.default = Warning$2;\nlet Warning$1 = warning;\nlet Result$3 = class Result2 {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n};\nvar result = Result$3;\nResult$3.default = Result$3;\nconst SINGLE_QUOTE = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0);\nconst BACKSLASH = \"\\\\\".charCodeAt(0);\nconst SLASH = \"/\".charCodeAt(0);\nconst NEWLINE = \"\\n\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\nconst FEED = \"\\f\".charCodeAt(0);\nconst TAB = \"\t\".charCodeAt(0);\nconst CR = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES = \")\".charCodeAt(0);\nconst OPEN_CURLY = \"{\".charCodeAt(0);\nconst CLOSE_CURLY = \"}\".charCodeAt(0);\nconst SEMICOLON = \";\".charCodeAt(0);\nconst ASTERISK = \"*\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst AT = \"@\".charCodeAt(0);\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE = /[\\da-f]/i;\nvar tokenize = function tokenizer2(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, next, quote, content, escape;\n let escaped, escapePos, prev, n2, currentToken;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT: {\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n};\nlet Container$5 = container;\nlet AtRule$3 = class AtRule2 extends Container$5 {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n};\nvar atRule = AtRule$3;\nAtRule$3.default = AtRule$3;\nContainer$5.registerAtRule(AtRule$3);\nlet Container$4 = container;\nlet LazyResult$3, Processor$2;\nlet Root$5 = class Root2 extends Container$4 {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult$3(new Processor$2(), this, opts);\n return lazy.stringify();\n }\n};\nRoot$5.registerLazyResult = (dependant) => {\n LazyResult$3 = dependant;\n};\nRoot$5.registerProcessor = (dependant) => {\n Processor$2 = dependant;\n};\nvar root = Root$5;\nRoot$5.default = Root$5;\nContainer$4.registerRoot(Root$5);\nlet list$2 = {\n comma(string) {\n return list$2.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list$2.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1 = list$2;\nlist$2.default = list$2;\nlet Container$3 = container;\nlet list$1 = list_1;\nlet Rule$3 = class Rule2 extends Container$3 {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list$1.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n};\nvar rule = Rule$3;\nRule$3.default = Rule$3;\nContainer$3.registerRule(Rule$3);\nlet Declaration$2 = declaration;\nlet tokenizer22 = tokenize;\nlet Comment$2 = comment;\nlet AtRule$2 = atRule;\nlet Root$4 = root;\nlet Rule$2 = rule;\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nlet Parser$1 = class Parser2 {\n constructor(input2) {\n this.input = input2;\n this.root = new Root$4();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule$2();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let token, type, prev;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment$2();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer22(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration$2();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule$2();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule$2();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n};\nvar parser = Parser$1;\nlet Container$2 = container;\nlet Parser22 = parser;\nlet Input$2 = input;\nfunction parse$3(css, opts) {\n let input2 = new Input$2(css, opts);\n let parser2 = new Parser22(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1 = parse$3;\nparse$3.default = parse$3;\nContainer$2.registerParse(parse$3);\nlet { isClean, my } = symbols;\nlet MapGenerator$1 = mapGenerator;\nlet stringify$2 = stringify_1;\nlet Container$1 = container;\nlet Document$2 = document$1;\nlet warnOnce$1 = warnOnce$2;\nlet Result$2 = result;\nlet parse$2 = parse_1;\nlet Root$3 = root;\nconst TYPE_TO_CLASS_NAME = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nconst PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nconst NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nconst CHILDREN = 0;\nfunction isPromise(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n}\nfunction toStack(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN, \"RootExit\"];\n } else {\n events = getEvents(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks(node2) {\n node2[isClean] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks(i2));\n return node2;\n}\nlet postcss$2 = {};\nlet LazyResult$2 = class LazyResult2 {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks(css);\n } else if (css instanceof LazyResult2 || css instanceof Result$2) {\n root2 = cleanMarks(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse$2;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my]) {\n Container$1.rebuild(root2);\n }\n }\n this.result = new Result$2(processor2, root2, opts);\n this.helpers = { ...postcss$2, postcss: postcss$2, result: this.result };\n this.plugins = this.processor.plugins.map((plugin22) => {\n if (typeof plugin22 === \"object\" && plugin22.prepare) {\n return { ...plugin22, ...plugin22.prepare(this.result) };\n } else {\n return plugin22;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin22.postcssPlugin;\n let pluginVer = plugin22.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin22, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin22, cb]);\n };\n for (let plugin22 of this.plugins) {\n if (typeof plugin22 === \"object\") {\n for (let event in plugin22) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin22[event] === \"object\") {\n for (let filter in plugin22[event]) {\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(\n plugin22,\n event + \"-\" + filter.toLowerCase(),\n plugin22[event][filter]\n );\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin22 = this.plugins[i2];\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n let stack = [toStack(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin22, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin22;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin22) {\n this.result.lastPlugin = plugin22;\n try {\n if (typeof plugin22 === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin22.Once(root2, this.helpers)\n );\n if (isPromise(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify$2;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator$1(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin22 of this.plugins) {\n let promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin22, visitor] of visitors) {\n this.result.lastPlugin = plugin22;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin22, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean]) {\n child[isClean] = true;\n stack.push(toStack(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean] = true;\n let events = getEvents(node2);\n for (let event of events) {\n if (event === CHILDREN) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n};\nLazyResult$2.registerPostcss = (dependant) => {\n postcss$2 = dependant;\n};\nvar lazyResult = LazyResult$2;\nLazyResult$2.default = LazyResult$2;\nRoot$3.registerLazyResult(LazyResult$2);\nDocument$2.registerLazyResult(LazyResult$2);\nlet MapGenerator22 = mapGenerator;\nlet stringify$1 = stringify_1;\nlet warnOnce22 = warnOnce$2;\nlet parse$1 = parse_1;\nconst Result$1 = result;\nlet NoWorkResult$1 = class NoWorkResult2 {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify$1;\n this.result = new Result$1(this._processor, root2, this._opts);\n this.result.css = css;\n let self = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self.root;\n }\n });\n let map = new MapGenerator22(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce22(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n};\nvar noWorkResult = NoWorkResult$1;\nNoWorkResult$1.default = NoWorkResult$1;\nlet NoWorkResult22 = noWorkResult;\nlet LazyResult$1 = lazyResult;\nlet Document$1 = document$1;\nlet Root$2 = root;\nlet Processor$1 = class Processor2 {\n constructor(plugins = []) {\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult22(this, css, opts);\n } else {\n return new LazyResult$1(this, css, opts);\n }\n }\n use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([plugin22]));\n return this;\n }\n};\nvar processor = Processor$1;\nProcessor$1.default = Processor$1;\nRoot$2.registerProcessor(Processor$1);\nDocument$1.registerProcessor(Processor$1);\nlet Declaration$1 = declaration;\nlet PreviousMap22 = previousMap;\nlet Comment$1 = comment;\nlet AtRule$1 = atRule;\nlet Input$1 = input;\nlet Root$1 = root;\nlet Rule$1 = rule;\nfunction fromJSON$1(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON$1(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input$1.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap22.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON$1(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1 = fromJSON$1;\nfromJSON$1.default = fromJSON$1;\nlet CssSyntaxError22 = cssSyntaxError;\nlet Declaration22 = declaration;\nlet LazyResult22 = lazyResult;\nlet Container22 = container;\nlet Processor22 = processor;\nlet stringify = stringify_1;\nlet fromJSON = fromJSON_1;\nlet Document222 = document$1;\nlet Warning22 = warning;\nlet Comment22 = comment;\nlet AtRule22 = atRule;\nlet Result22 = result;\nlet Input22 = input;\nlet parse = parse_1;\nlet list = list_1;\nlet Rule22 = rule;\nlet Root22 = root;\nlet Node22 = node;\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor22(plugins);\n}\npostcss.plugin = function plugin2(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor22().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n};\npostcss.stringify = stringify;\npostcss.parse = parse;\npostcss.fromJSON = fromJSON;\npostcss.list = list;\npostcss.comment = (defaults) => new Comment22(defaults);\npostcss.atRule = (defaults) => new AtRule22(defaults);\npostcss.decl = (defaults) => new Declaration22(defaults);\npostcss.rule = (defaults) => new Rule22(defaults);\npostcss.root = (defaults) => new Root22(defaults);\npostcss.document = (defaults) => new Document222(defaults);\npostcss.CssSyntaxError = CssSyntaxError22;\npostcss.Declaration = Declaration22;\npostcss.Container = Container22;\npostcss.Processor = Processor22;\npostcss.Document = Document222;\npostcss.Comment = Comment22;\npostcss.Warning = Warning22;\npostcss.AtRule = AtRule22;\npostcss.Result = Result22;\npostcss.Input = Input22;\npostcss.Rule = Rule22;\npostcss.Root = Root22;\npostcss.Node = Node22;\nLazyResult22.registerPostcss(postcss);\nvar postcss_1 = postcss;\npostcss.default = postcss;\nconst postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs(postcss_1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nvar NodeType$1 = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType$1 || {});\nfunction parseCSSText(cssText) {\n const res = {};\n const listDelimiter = /;(?![^(]*\\))/g;\n const propertyDelimiter = /:(.+)/;\n const comment2 = /\\/\\*.*?\\*\\//g;\n cssText.replace(comment2, \"\").split(listDelimiter).forEach(function(item) {\n if (item) {\n const tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[camelize(tmp[0].trim())] = tmp[1].trim());\n }\n });\n return res;\n}\nfunction toCSSText(style) {\n const properties = [];\n for (const name in style) {\n const value = style[name];\n if (typeof value !== \"string\") continue;\n const normalizedName = hyphenate(name);\n properties.push(`${normalizedName}: ${value};`);\n }\n return properties.join(\" \");\n}\nconst camelizeRE = /-([a-z])/g;\nconst CUSTOM_PROPERTY_REGEX = /^--[a-zA-Z0-9-]+$/;\nconst camelize = (str) => {\n if (CUSTOM_PROPERTY_REGEX.test(str)) return str;\n return str.replace(camelizeRE, (_, c2) => c2 ? c2.toUpperCase() : \"\");\n};\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = (str) => {\n return str.replace(hyphenateRE, \"-$1\").toLowerCase();\n};\nclass BaseRRNode {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n constructor(..._args) {\n __publicField2(this, \"parentElement\", null);\n __publicField2(this, \"parentNode\", null);\n __publicField2(this, \"ownerDocument\");\n __publicField2(this, \"firstChild\", null);\n __publicField2(this, \"lastChild\", null);\n __publicField2(this, \"previousSibling\", null);\n __publicField2(this, \"nextSibling\", null);\n __publicField2(this, \"ELEMENT_NODE\", 1);\n __publicField2(this, \"TEXT_NODE\", 3);\n __publicField2(this, \"nodeType\");\n __publicField2(this, \"nodeName\");\n __publicField2(this, \"RRNodeType\");\n }\n get childNodes() {\n const childNodes2 = [];\n let childIterator = this.firstChild;\n while (childIterator) {\n childNodes2.push(childIterator);\n childIterator = childIterator.nextSibling;\n }\n return childNodes2;\n }\n contains(node2) {\n if (!(node2 instanceof BaseRRNode)) return false;\n else if (node2.ownerDocument !== this.ownerDocument) return false;\n else if (node2 === this) return true;\n while (node2.parentNode) {\n if (node2.parentNode === this) return true;\n node2 = node2.parentNode;\n }\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n appendChild(_newChild) {\n throw new Error(\n `RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n insertBefore(_newChild, _refChild) {\n throw new Error(\n `RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n removeChild(_node) {\n throw new Error(\n `RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n toString() {\n return \"RRNode\";\n }\n}\nclass BaseRRDocument extends BaseRRNode {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(...args) {\n super(args);\n __publicField2(this, \"nodeType\", 9);\n __publicField2(this, \"nodeName\", \"#document\");\n __publicField2(this, \"compatMode\", \"CSS1Compat\");\n __publicField2(this, \"RRNodeType\", NodeType$1.Document);\n __publicField2(this, \"textContent\", null);\n this.ownerDocument = this;\n }\n get documentElement() {\n return this.childNodes.find(\n (node2) => node2.RRNodeType === NodeType$1.Element && node2.tagName === \"HTML\"\n ) || null;\n }\n get body() {\n var _a2;\n return ((_a2 = this.documentElement) == null ? void 0 : _a2.childNodes.find(\n (node2) => node2.RRNodeType === NodeType$1.Element && node2.tagName === \"BODY\"\n )) || null;\n }\n get head() {\n var _a2;\n return ((_a2 = this.documentElement) == null ? void 0 : _a2.childNodes.find(\n (node2) => node2.RRNodeType === NodeType$1.Element && node2.tagName === \"HEAD\"\n )) || null;\n }\n get implementation() {\n return this;\n }\n get firstElementChild() {\n return this.documentElement;\n }\n appendChild(newChild) {\n const nodeType = newChild.RRNodeType;\n if (nodeType === NodeType$1.Element || nodeType === NodeType$1.DocumentType) {\n if (this.childNodes.some((s2) => s2.RRNodeType === nodeType)) {\n throw new Error(\n `RRDomException: Failed to execute 'appendChild' on 'RRNode': Only one ${nodeType === NodeType$1.Element ? \"RRElement\" : \"RRDoctype\"} on RRDocument allowed.`\n );\n }\n }\n const child = appendChild(this, newChild);\n child.parentElement = null;\n return child;\n }\n insertBefore(newChild, refChild) {\n const nodeType = newChild.RRNodeType;\n if (nodeType === NodeType$1.Element || nodeType === NodeType$1.DocumentType) {\n if (this.childNodes.some((s2) => s2.RRNodeType === nodeType)) {\n throw new Error(\n `RRDomException: Failed to execute 'insertBefore' on 'RRNode': Only one ${nodeType === NodeType$1.Element ? \"RRElement\" : \"RRDoctype\"} on RRDocument allowed.`\n );\n }\n }\n const child = insertBefore(this, newChild, refChild);\n child.parentElement = null;\n return child;\n }\n removeChild(node2) {\n return removeChild(this, node2);\n }\n open() {\n this.firstChild = null;\n this.lastChild = null;\n }\n close() {\n }\n /**\n * Adhoc implementation for setting xhtml namespace in rebuilt.ts (rrweb-snapshot).\n * There are two lines used this function:\n * 1. doc.write('\\')\n * 2. doc.write('\\')\n */\n write(content) {\n let publicId;\n if (content === '')\n publicId = \"-//W3C//DTD XHTML 1.0 Transitional//EN\";\n else if (content === '')\n publicId = \"-//W3C//DTD HTML 4.0 Transitional//EN\";\n if (publicId) {\n const doctype = this.createDocumentType(\"html\", publicId, \"\");\n this.open();\n this.appendChild(doctype);\n }\n }\n createDocument(_namespace, _qualifiedName, _doctype) {\n return new BaseRRDocument();\n }\n createDocumentType(qualifiedName, publicId, systemId) {\n const doctype = new BaseRRDocumentType(qualifiedName, publicId, systemId);\n doctype.ownerDocument = this;\n return doctype;\n }\n createElement(tagName) {\n const element = new BaseRRElement(tagName);\n element.ownerDocument = this;\n return element;\n }\n createElementNS(_namespaceURI, qualifiedName) {\n return this.createElement(qualifiedName);\n }\n createTextNode(data) {\n const text = new BaseRRText(data);\n text.ownerDocument = this;\n return text;\n }\n createComment(data) {\n const comment2 = new BaseRRComment(data);\n comment2.ownerDocument = this;\n return comment2;\n }\n createCDATASection(data) {\n const CDATASection = new BaseRRCDATASection(data);\n CDATASection.ownerDocument = this;\n return CDATASection;\n }\n toString() {\n return \"RRDocument\";\n }\n}\nclass BaseRRDocumentType extends BaseRRNode {\n constructor(qualifiedName, publicId, systemId) {\n super();\n __publicField2(this, \"nodeType\", 10);\n __publicField2(this, \"RRNodeType\", NodeType$1.DocumentType);\n __publicField2(this, \"name\");\n __publicField2(this, \"publicId\");\n __publicField2(this, \"systemId\");\n __publicField2(this, \"textContent\", null);\n this.name = qualifiedName;\n this.publicId = publicId;\n this.systemId = systemId;\n this.nodeName = qualifiedName;\n }\n toString() {\n return \"RRDocumentType\";\n }\n}\nclass BaseRRElement extends BaseRRNode {\n constructor(tagName) {\n super();\n __publicField2(this, \"nodeType\", 1);\n __publicField2(this, \"RRNodeType\", NodeType$1.Element);\n __publicField2(this, \"tagName\");\n __publicField2(this, \"attributes\", {});\n __publicField2(this, \"shadowRoot\", null);\n __publicField2(this, \"scrollLeft\");\n __publicField2(this, \"scrollTop\");\n this.tagName = tagName.toUpperCase();\n this.nodeName = tagName.toUpperCase();\n }\n get textContent() {\n let result2 = \"\";\n this.childNodes.forEach((node2) => result2 += node2.textContent);\n return result2;\n }\n set textContent(textContent2) {\n this.firstChild = null;\n this.lastChild = null;\n this.appendChild(this.ownerDocument.createTextNode(textContent2));\n }\n get classList() {\n return new ClassList(\n this.attributes.class,\n (newClassName) => {\n this.attributes.class = newClassName;\n }\n );\n }\n get id() {\n return this.attributes.id || \"\";\n }\n get className() {\n return this.attributes.class || \"\";\n }\n get style() {\n const style = this.attributes.style ? parseCSSText(this.attributes.style) : {};\n const hyphenateRE2 = /\\B([A-Z])/g;\n style.setProperty = (name, value, priority) => {\n if (hyphenateRE2.test(name)) return;\n const normalizedName = camelize(name);\n if (!value) delete style[normalizedName];\n else style[normalizedName] = value;\n if (priority === \"important\") style[normalizedName] += \" !important\";\n this.attributes.style = toCSSText(style);\n };\n style.removeProperty = (name) => {\n if (hyphenateRE2.test(name)) return \"\";\n const normalizedName = camelize(name);\n const value = style[normalizedName] || \"\";\n delete style[normalizedName];\n this.attributes.style = toCSSText(style);\n return value;\n };\n return style;\n }\n getAttribute(name) {\n if (this.attributes[name] === void 0) return null;\n return this.attributes[name];\n }\n setAttribute(name, attribute) {\n this.attributes[name] = attribute;\n }\n setAttributeNS(_namespace, qualifiedName, value) {\n this.setAttribute(qualifiedName, value);\n }\n removeAttribute(name) {\n delete this.attributes[name];\n }\n appendChild(newChild) {\n return appendChild(this, newChild);\n }\n insertBefore(newChild, refChild) {\n return insertBefore(this, newChild, refChild);\n }\n removeChild(node2) {\n return removeChild(this, node2);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n attachShadow(_init) {\n const shadowRoot2 = this.ownerDocument.createElement(\"SHADOWROOT\");\n this.shadowRoot = shadowRoot2;\n return shadowRoot2;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dispatchEvent(_event) {\n return true;\n }\n toString() {\n let attributeString = \"\";\n for (const attribute in this.attributes) {\n attributeString += `${attribute}=\"${this.attributes[attribute]}\" `;\n }\n return `${this.tagName} ${attributeString}`;\n }\n}\nclass BaseRRMediaElement extends BaseRRElement {\n constructor() {\n super(...arguments);\n __publicField2(this, \"currentTime\");\n __publicField2(this, \"volume\");\n __publicField2(this, \"paused\");\n __publicField2(this, \"muted\");\n __publicField2(this, \"playbackRate\");\n __publicField2(this, \"loop\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n attachShadow(_init) {\n throw new Error(\n `RRDomException: Failed to execute 'attachShadow' on 'RRElement': This RRElement does not support attachShadow`\n );\n }\n play() {\n this.paused = false;\n }\n pause() {\n this.paused = true;\n }\n}\nclass BaseRRDialogElement extends BaseRRElement {\n constructor() {\n super(...arguments);\n __publicField2(this, \"tagName\", \"DIALOG\");\n __publicField2(this, \"nodeName\", \"DIALOG\");\n }\n get isModal() {\n return this.getAttribute(\"rr_open_mode\") === \"modal\";\n }\n get open() {\n return this.getAttribute(\"open\") !== null;\n }\n close() {\n this.removeAttribute(\"open\");\n this.removeAttribute(\"rr_open_mode\");\n }\n show() {\n this.setAttribute(\"open\", \"\");\n this.setAttribute(\"rr_open_mode\", \"non-modal\");\n }\n showModal() {\n this.setAttribute(\"open\", \"\");\n this.setAttribute(\"rr_open_mode\", \"modal\");\n }\n}\nclass BaseRRText extends BaseRRNode {\n constructor(data) {\n super();\n __publicField2(this, \"nodeType\", 3);\n __publicField2(this, \"nodeName\", \"#text\");\n __publicField2(this, \"RRNodeType\", NodeType$1.Text);\n __publicField2(this, \"data\");\n this.data = data;\n }\n get textContent() {\n return this.data;\n }\n set textContent(textContent2) {\n this.data = textContent2;\n }\n toString() {\n return `RRText text=${JSON.stringify(this.data)}`;\n }\n}\nclass BaseRRComment extends BaseRRNode {\n constructor(data) {\n super();\n __publicField2(this, \"nodeType\", 8);\n __publicField2(this, \"nodeName\", \"#comment\");\n __publicField2(this, \"RRNodeType\", NodeType$1.Comment);\n __publicField2(this, \"data\");\n this.data = data;\n }\n get textContent() {\n return this.data;\n }\n set textContent(textContent2) {\n this.data = textContent2;\n }\n toString() {\n return `RRComment text=${JSON.stringify(this.data)}`;\n }\n}\nclass BaseRRCDATASection extends BaseRRNode {\n constructor(data) {\n super();\n __publicField2(this, \"nodeName\", \"#cdata-section\");\n __publicField2(this, \"nodeType\", 4);\n __publicField2(this, \"RRNodeType\", NodeType$1.CDATA);\n __publicField2(this, \"data\");\n this.data = data;\n }\n get textContent() {\n return this.data;\n }\n set textContent(textContent2) {\n this.data = textContent2;\n }\n toString() {\n return `RRCDATASection data=${JSON.stringify(this.data)}`;\n }\n}\nclass ClassList {\n constructor(classText, onChange) {\n __publicField2(this, \"onChange\");\n __publicField2(this, \"classes\", []);\n __publicField2(this, \"add\", (...classNames) => {\n for (const item of classNames) {\n const className = String(item);\n if (this.classes.indexOf(className) >= 0) continue;\n this.classes.push(className);\n }\n this.onChange && this.onChange(this.classes.join(\" \"));\n });\n __publicField2(this, \"remove\", (...classNames) => {\n this.classes = this.classes.filter(\n (item) => classNames.indexOf(item) === -1\n );\n this.onChange && this.onChange(this.classes.join(\" \"));\n });\n if (classText) {\n const classes = classText.trim().split(/\\s+/);\n this.classes.push(...classes);\n }\n this.onChange = onChange;\n }\n}\nfunction appendChild(parent, newChild) {\n if (newChild.parentNode) newChild.parentNode.removeChild(newChild);\n if (parent.lastChild) {\n parent.lastChild.nextSibling = newChild;\n newChild.previousSibling = parent.lastChild;\n } else {\n parent.firstChild = newChild;\n newChild.previousSibling = null;\n }\n parent.lastChild = newChild;\n newChild.nextSibling = null;\n newChild.parentNode = parent;\n newChild.parentElement = parent;\n newChild.ownerDocument = parent.ownerDocument;\n return newChild;\n}\nfunction insertBefore(parent, newChild, refChild) {\n if (!refChild) return appendChild(parent, newChild);\n if (refChild.parentNode !== parent)\n throw new Error(\n \"Failed to execute 'insertBefore' on 'RRNode': The RRNode before which the new node is to be inserted is not a child of this RRNode.\"\n );\n if (newChild === refChild) return newChild;\n if (newChild.parentNode) newChild.parentNode.removeChild(newChild);\n newChild.previousSibling = refChild.previousSibling;\n refChild.previousSibling = newChild;\n newChild.nextSibling = refChild;\n if (newChild.previousSibling) newChild.previousSibling.nextSibling = newChild;\n else parent.firstChild = newChild;\n newChild.parentElement = parent;\n newChild.parentNode = parent;\n newChild.ownerDocument = parent.ownerDocument;\n return newChild;\n}\nfunction removeChild(parent, child) {\n if (child.parentNode !== parent)\n throw new Error(\n \"Failed to execute 'removeChild' on 'RRNode': The RRNode to be removed is not a child of this RRNode.\"\n );\n if (child.previousSibling)\n child.previousSibling.nextSibling = child.nextSibling;\n else parent.firstChild = child.nextSibling;\n if (child.nextSibling)\n child.nextSibling.previousSibling = child.previousSibling;\n else parent.lastChild = child.previousSibling;\n child.previousSibling = null;\n child.nextSibling = null;\n child.parentElement = null;\n child.parentNode = null;\n return child;\n}\nvar NodeType$2 = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"PLACEHOLDER\"] = 0] = \"PLACEHOLDER\";\n NodeType2[NodeType2[\"ELEMENT_NODE\"] = 1] = \"ELEMENT_NODE\";\n NodeType2[NodeType2[\"ATTRIBUTE_NODE\"] = 2] = \"ATTRIBUTE_NODE\";\n NodeType2[NodeType2[\"TEXT_NODE\"] = 3] = \"TEXT_NODE\";\n NodeType2[NodeType2[\"CDATA_SECTION_NODE\"] = 4] = \"CDATA_SECTION_NODE\";\n NodeType2[NodeType2[\"ENTITY_REFERENCE_NODE\"] = 5] = \"ENTITY_REFERENCE_NODE\";\n NodeType2[NodeType2[\"ENTITY_NODE\"] = 6] = \"ENTITY_NODE\";\n NodeType2[NodeType2[\"PROCESSING_INSTRUCTION_NODE\"] = 7] = \"PROCESSING_INSTRUCTION_NODE\";\n NodeType2[NodeType2[\"COMMENT_NODE\"] = 8] = \"COMMENT_NODE\";\n NodeType2[NodeType2[\"DOCUMENT_NODE\"] = 9] = \"DOCUMENT_NODE\";\n NodeType2[NodeType2[\"DOCUMENT_TYPE_NODE\"] = 10] = \"DOCUMENT_TYPE_NODE\";\n NodeType2[NodeType2[\"DOCUMENT_FRAGMENT_NODE\"] = 11] = \"DOCUMENT_FRAGMENT_NODE\";\n return NodeType2;\n})(NodeType$2 || {});\nconst NAMESPACES = {\n svg: \"http://www.w3.org/2000/svg\",\n \"xlink:href\": \"http://www.w3.org/1999/xlink\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\nconst SVGTagMap = {\n altglyph: \"altGlyph\",\n altglyphdef: \"altGlyphDef\",\n altglyphitem: \"altGlyphItem\",\n animatecolor: \"animateColor\",\n animatemotion: \"animateMotion\",\n animatetransform: \"animateTransform\",\n clippath: \"clipPath\",\n feblend: \"feBlend\",\n fecolormatrix: \"feColorMatrix\",\n fecomponenttransfer: \"feComponentTransfer\",\n fecomposite: \"feComposite\",\n feconvolvematrix: \"feConvolveMatrix\",\n fediffuselighting: \"feDiffuseLighting\",\n fedisplacementmap: \"feDisplacementMap\",\n fedistantlight: \"feDistantLight\",\n fedropshadow: \"feDropShadow\",\n feflood: \"feFlood\",\n fefunca: \"feFuncA\",\n fefuncb: \"feFuncB\",\n fefuncg: \"feFuncG\",\n fefuncr: \"feFuncR\",\n fegaussianblur: \"feGaussianBlur\",\n feimage: \"feImage\",\n femerge: \"feMerge\",\n femergenode: \"feMergeNode\",\n femorphology: \"feMorphology\",\n feoffset: \"feOffset\",\n fepointlight: \"fePointLight\",\n fespecularlighting: \"feSpecularLighting\",\n fespotlight: \"feSpotLight\",\n fetile: \"feTile\",\n feturbulence: \"feTurbulence\",\n foreignobject: \"foreignObject\",\n glyphref: \"glyphRef\",\n lineargradient: \"linearGradient\",\n radialgradient: \"radialGradient\"\n};\nlet createdNodeSet = null;\nfunction diff(oldTree, newTree, replayer, rrnodeMirror = newTree.mirror || newTree.ownerDocument.mirror) {\n oldTree = diffBeforeUpdatingChildren(\n oldTree,\n newTree,\n replayer,\n rrnodeMirror\n );\n diffChildren(oldTree, newTree, replayer, rrnodeMirror);\n diffAfterUpdatingChildren(oldTree, newTree, replayer);\n}\nfunction diffBeforeUpdatingChildren(oldTree, newTree, replayer, rrnodeMirror) {\n var _a2;\n if (replayer.afterAppend && !createdNodeSet) {\n createdNodeSet = /* @__PURE__ */ new WeakSet();\n setTimeout(() => {\n createdNodeSet = null;\n }, 0);\n }\n if (!sameNodeType(oldTree, newTree)) {\n const calibratedOldTree = createOrGetNode(\n newTree,\n replayer.mirror,\n rrnodeMirror\n );\n (_a2 = oldTree.parentNode) == null ? void 0 : _a2.replaceChild(calibratedOldTree, oldTree);\n oldTree = calibratedOldTree;\n }\n switch (newTree.RRNodeType) {\n case NodeType$1.Document: {\n if (!nodeMatching(oldTree, newTree, replayer.mirror, rrnodeMirror)) {\n const newMeta = rrnodeMirror.getMeta(newTree);\n if (newMeta) {\n replayer.mirror.removeNodeFromMap(oldTree);\n oldTree.close();\n oldTree.open();\n replayer.mirror.add(oldTree, newMeta);\n createdNodeSet == null ? void 0 : createdNodeSet.add(oldTree);\n }\n }\n break;\n }\n case NodeType$1.Element: {\n const oldElement = oldTree;\n const newRRElement = newTree;\n switch (newRRElement.tagName) {\n case \"IFRAME\": {\n const oldContentDocument = oldTree.contentDocument;\n if (!oldContentDocument) break;\n diff(\n oldContentDocument,\n newTree.contentDocument,\n replayer,\n rrnodeMirror\n );\n break;\n }\n }\n if (newRRElement.shadowRoot) {\n if (!oldElement.shadowRoot) oldElement.attachShadow({ mode: \"open\" });\n diffChildren(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n oldElement.shadowRoot,\n newRRElement.shadowRoot,\n replayer,\n rrnodeMirror\n );\n }\n diffProps(oldElement, newRRElement, rrnodeMirror);\n break;\n }\n }\n return oldTree;\n}\nfunction diffAfterUpdatingChildren(oldTree, newTree, replayer) {\n var _a2;\n switch (newTree.RRNodeType) {\n case NodeType$1.Document: {\n const scrollData = newTree.scrollData;\n scrollData && replayer.applyScroll(scrollData, true);\n break;\n }\n case NodeType$1.Element: {\n const oldElement = oldTree;\n const newRRElement = newTree;\n newRRElement.scrollData && replayer.applyScroll(newRRElement.scrollData, true);\n newRRElement.inputData && replayer.applyInput(newRRElement.inputData);\n switch (newRRElement.tagName) {\n case \"AUDIO\":\n case \"VIDEO\": {\n const oldMediaElement = oldTree;\n const newMediaRRElement = newRRElement;\n if (newMediaRRElement.paused !== void 0)\n newMediaRRElement.paused ? void oldMediaElement.pause() : void oldMediaElement.play();\n if (newMediaRRElement.muted !== void 0)\n oldMediaElement.muted = newMediaRRElement.muted;\n if (newMediaRRElement.volume !== void 0)\n oldMediaElement.volume = newMediaRRElement.volume;\n if (newMediaRRElement.currentTime !== void 0)\n oldMediaElement.currentTime = newMediaRRElement.currentTime;\n if (newMediaRRElement.playbackRate !== void 0)\n oldMediaElement.playbackRate = newMediaRRElement.playbackRate;\n if (newMediaRRElement.loop !== void 0)\n oldMediaElement.loop = newMediaRRElement.loop;\n break;\n }\n case \"CANVAS\": {\n const rrCanvasElement = newTree;\n if (rrCanvasElement.rr_dataURL !== null) {\n const image = document.createElement(\"img\");\n image.onload = () => {\n const ctx = oldElement.getContext(\"2d\");\n if (ctx) {\n ctx.drawImage(image, 0, 0, image.width, image.height);\n }\n };\n image.src = rrCanvasElement.rr_dataURL;\n }\n rrCanvasElement.canvasMutations.forEach(\n (canvasMutation2) => replayer.applyCanvas(\n canvasMutation2.event,\n canvasMutation2.mutation,\n oldTree\n )\n );\n break;\n }\n case \"STYLE\": {\n const styleSheet = oldElement.sheet;\n styleSheet && newTree.rules.forEach(\n (data) => replayer.applyStyleSheetMutation(data, styleSheet)\n );\n break;\n }\n case \"DIALOG\": {\n const dialog = oldElement;\n const rrDialog = newRRElement;\n const wasOpen = dialog.open;\n const wasModal = dialog.matches(\"dialog:modal\");\n const shouldBeOpen = rrDialog.open;\n const shouldBeModal = rrDialog.isModal;\n const modalChanged = wasModal !== shouldBeModal;\n const openChanged = wasOpen !== shouldBeOpen;\n if (modalChanged || wasOpen && openChanged) dialog.close();\n if (shouldBeOpen && (openChanged || modalChanged)) {\n try {\n if (shouldBeModal) dialog.showModal();\n else dialog.show();\n } catch (e2) {\n console.warn(e2);\n }\n }\n break;\n }\n }\n break;\n }\n case NodeType$1.Text:\n case NodeType$1.Comment:\n case NodeType$1.CDATA: {\n if (oldTree.textContent !== newTree.data)\n oldTree.textContent = newTree.data;\n break;\n }\n }\n if (createdNodeSet == null ? void 0 : createdNodeSet.has(oldTree)) {\n createdNodeSet.delete(oldTree);\n (_a2 = replayer.afterAppend) == null ? void 0 : _a2.call(replayer, oldTree, replayer.mirror.getId(oldTree));\n }\n}\nfunction diffProps(oldTree, newTree, rrnodeMirror) {\n const oldAttributes = oldTree.attributes;\n const newAttributes = newTree.attributes;\n for (const name in newAttributes) {\n const newValue = newAttributes[name];\n const sn = rrnodeMirror.getMeta(newTree);\n if ((sn == null ? void 0 : sn.isSVG) && NAMESPACES[name])\n oldTree.setAttributeNS(NAMESPACES[name], name, newValue);\n else if (newTree.tagName === \"CANVAS\" && name === \"rr_dataURL\") {\n const image = document.createElement(\"img\");\n image.src = newValue;\n image.onload = () => {\n const ctx = oldTree.getContext(\"2d\");\n if (ctx) {\n ctx.drawImage(image, 0, 0, image.width, image.height);\n }\n };\n } else if (newTree.tagName === \"IFRAME\" && name === \"srcdoc\") continue;\n else {\n try {\n oldTree.setAttribute(name, newValue);\n } catch (err) {\n console.warn(err);\n }\n }\n }\n for (const { name } of Array.from(oldAttributes))\n if (!(name in newAttributes)) oldTree.removeAttribute(name);\n newTree.scrollLeft && (oldTree.scrollLeft = newTree.scrollLeft);\n newTree.scrollTop && (oldTree.scrollTop = newTree.scrollTop);\n}\nfunction diffChildren(oldTree, newTree, replayer, rrnodeMirror) {\n const oldChildren = Array.from(oldTree.childNodes);\n const newChildren = newTree.childNodes;\n if (oldChildren.length === 0 && newChildren.length === 0) return;\n let oldStartIndex = 0, oldEndIndex = oldChildren.length - 1, newStartIndex = 0, newEndIndex = newChildren.length - 1;\n let oldStartNode = oldChildren[oldStartIndex], oldEndNode = oldChildren[oldEndIndex], newStartNode = newChildren[newStartIndex], newEndNode = newChildren[newEndIndex];\n let oldIdToIndex = void 0, indexInOld = void 0;\n while (oldStartIndex <= oldEndIndex && newStartIndex <= newEndIndex) {\n if (oldStartNode === void 0) {\n oldStartNode = oldChildren[++oldStartIndex];\n } else if (oldEndNode === void 0) {\n oldEndNode = oldChildren[--oldEndIndex];\n } else if (\n // same first node?\n nodeMatching(oldStartNode, newStartNode, replayer.mirror, rrnodeMirror)\n ) {\n oldStartNode = oldChildren[++oldStartIndex];\n newStartNode = newChildren[++newStartIndex];\n } else if (\n // same last node?\n nodeMatching(oldEndNode, newEndNode, replayer.mirror, rrnodeMirror)\n ) {\n oldEndNode = oldChildren[--oldEndIndex];\n newEndNode = newChildren[--newEndIndex];\n } else if (\n // is the first old node the same as the last new node?\n nodeMatching(oldStartNode, newEndNode, replayer.mirror, rrnodeMirror)\n ) {\n try {\n oldTree.insertBefore(oldStartNode, oldEndNode.nextSibling);\n } catch (e2) {\n console.warn(e2);\n }\n oldStartNode = oldChildren[++oldStartIndex];\n newEndNode = newChildren[--newEndIndex];\n } else if (\n // is the last old node the same as the first new node?\n nodeMatching(oldEndNode, newStartNode, replayer.mirror, rrnodeMirror)\n ) {\n try {\n oldTree.insertBefore(oldEndNode, oldStartNode);\n } catch (e2) {\n console.warn(e2);\n }\n oldEndNode = oldChildren[--oldEndIndex];\n newStartNode = newChildren[++newStartIndex];\n } else {\n if (!oldIdToIndex) {\n oldIdToIndex = {};\n for (let i2 = oldStartIndex; i2 <= oldEndIndex; i2++) {\n const oldChild2 = oldChildren[i2];\n if (oldChild2 && replayer.mirror.hasNode(oldChild2))\n oldIdToIndex[replayer.mirror.getId(oldChild2)] = i2;\n }\n }\n indexInOld = oldIdToIndex[rrnodeMirror.getId(newStartNode)];\n const nodeToMove = oldChildren[indexInOld];\n if (indexInOld !== void 0 && nodeToMove && nodeMatching(nodeToMove, newStartNode, replayer.mirror, rrnodeMirror)) {\n try {\n oldTree.insertBefore(nodeToMove, oldStartNode);\n } catch (e2) {\n console.warn(e2);\n }\n oldChildren[indexInOld] = void 0;\n } else {\n const newNode = createOrGetNode(\n newStartNode,\n replayer.mirror,\n rrnodeMirror\n );\n if (oldTree.nodeName === \"#document\" && oldStartNode && /**\n * Special case 1: one document isn't allowed to have two doctype nodes at the same time, so we need to remove the old one first before inserting the new one.\n * How this case happens: A parent document in the old tree already has a doctype node with an id e.g. #1. A new full snapshot rebuilds the replayer with a new doctype node with another id #2. According to the algorithm, the new doctype node will be inserted before the old one, which is not allowed by the Document standard.\n */\n (newNode.nodeType === newNode.DOCUMENT_TYPE_NODE && oldStartNode.nodeType === oldStartNode.DOCUMENT_TYPE_NODE || /**\n * Special case 2: one document isn't allowed to have two HTMLElements at the same time, so we need to remove the old one first before inserting the new one.\n * How this case happens: A mounted iframe element has an automatically created HTML element. We should delete it before inserting a serialized one. Otherwise, an error 'Only one element on document allowed' will be thrown.\n */\n newNode.nodeType === newNode.ELEMENT_NODE && oldStartNode.nodeType === oldStartNode.ELEMENT_NODE)) {\n oldTree.removeChild(oldStartNode);\n replayer.mirror.removeNodeFromMap(oldStartNode);\n oldStartNode = oldChildren[++oldStartIndex];\n }\n try {\n oldTree.insertBefore(newNode, oldStartNode || null);\n } catch (e2) {\n console.warn(e2);\n }\n }\n newStartNode = newChildren[++newStartIndex];\n }\n }\n if (oldStartIndex > oldEndIndex) {\n const referenceRRNode = newChildren[newEndIndex + 1];\n let referenceNode = null;\n if (referenceRRNode)\n referenceNode = replayer.mirror.getNode(\n rrnodeMirror.getId(referenceRRNode)\n );\n for (; newStartIndex <= newEndIndex; ++newStartIndex) {\n const newNode = createOrGetNode(\n newChildren[newStartIndex],\n replayer.mirror,\n rrnodeMirror\n );\n try {\n oldTree.insertBefore(newNode, referenceNode);\n } catch (e2) {\n console.warn(e2);\n }\n }\n } else if (newStartIndex > newEndIndex) {\n for (; oldStartIndex <= oldEndIndex; oldStartIndex++) {\n const node2 = oldChildren[oldStartIndex];\n if (!node2 || node2.parentNode !== oldTree) continue;\n try {\n oldTree.removeChild(node2);\n replayer.mirror.removeNodeFromMap(node2);\n } catch (e2) {\n console.warn(e2);\n }\n }\n }\n let oldChild = oldTree.firstChild;\n let newChild = newTree.firstChild;\n while (oldChild !== null && newChild !== null) {\n diff(oldChild, newChild, replayer, rrnodeMirror);\n oldChild = oldChild.nextSibling;\n newChild = newChild.nextSibling;\n }\n}\nfunction createOrGetNode(rrNode, domMirror, rrnodeMirror) {\n const nodeId = rrnodeMirror.getId(rrNode);\n const sn = rrnodeMirror.getMeta(rrNode);\n let node2 = null;\n if (nodeId > -1) node2 = domMirror.getNode(nodeId);\n if (node2 !== null && sameNodeType(node2, rrNode)) return node2;\n switch (rrNode.RRNodeType) {\n case NodeType$1.Document:\n node2 = new Document();\n break;\n case NodeType$1.DocumentType:\n node2 = document.implementation.createDocumentType(\n rrNode.name,\n rrNode.publicId,\n rrNode.systemId\n );\n break;\n case NodeType$1.Element: {\n let tagName = rrNode.tagName.toLowerCase();\n tagName = SVGTagMap[tagName] || tagName;\n if (sn && \"isSVG\" in sn && (sn == null ? void 0 : sn.isSVG)) {\n node2 = document.createElementNS(NAMESPACES[\"svg\"], tagName);\n } else node2 = document.createElement(rrNode.tagName);\n break;\n }\n case NodeType$1.Text:\n node2 = document.createTextNode(rrNode.data);\n break;\n case NodeType$1.Comment:\n node2 = document.createComment(rrNode.data);\n break;\n case NodeType$1.CDATA:\n node2 = document.createCDATASection(rrNode.data);\n break;\n }\n if (sn) domMirror.add(node2, { ...sn });\n try {\n createdNodeSet == null ? void 0 : createdNodeSet.add(node2);\n } catch (e2) {\n }\n return node2;\n}\nfunction sameNodeType(node1, node2) {\n if (node1.nodeType !== node2.nodeType) return false;\n return node1.nodeType !== node1.ELEMENT_NODE || node1.tagName.toUpperCase() === node2.tagName;\n}\nfunction nodeMatching(node1, node2, domMirror, rrdomMirror) {\n const node1Id = domMirror.getId(node1);\n const node2Id = rrdomMirror.getId(node2);\n if (node1Id === -1 || node1Id !== node2Id) return false;\n return sameNodeType(node1, node2);\n}\nclass RRDocument extends BaseRRDocument {\n constructor(mirror2) {\n super();\n __publicField2(this, \"UNSERIALIZED_STARTING_ID\", -2);\n __publicField2(this, \"_unserializedId\", this.UNSERIALIZED_STARTING_ID);\n __publicField2(this, \"mirror\", createMirror());\n __publicField2(this, \"scrollData\", null);\n if (mirror2) {\n this.mirror = mirror2;\n }\n }\n /**\n * Every time the id is used, it will minus 1 automatically to avoid collisions.\n */\n get unserializedId() {\n return this._unserializedId--;\n }\n createDocument(_namespace, _qualifiedName, _doctype) {\n return new RRDocument();\n }\n createDocumentType(qualifiedName, publicId, systemId) {\n const documentTypeNode = new RRDocumentType(\n qualifiedName,\n publicId,\n systemId\n );\n documentTypeNode.ownerDocument = this;\n return documentTypeNode;\n }\n createElement(tagName) {\n const upperTagName = tagName.toUpperCase();\n let element;\n switch (upperTagName) {\n case \"AUDIO\":\n case \"VIDEO\":\n element = new RRMediaElement(upperTagName);\n break;\n case \"IFRAME\":\n element = new RRIFrameElement(upperTagName, this.mirror);\n break;\n case \"CANVAS\":\n element = new RRCanvasElement(upperTagName);\n break;\n case \"STYLE\":\n element = new RRStyleElement(upperTagName);\n break;\n case \"DIALOG\":\n element = new RRDialogElement(upperTagName);\n break;\n default:\n element = new RRElement(upperTagName);\n break;\n }\n element.ownerDocument = this;\n return element;\n }\n createComment(data) {\n const commentNode = new RRComment(data);\n commentNode.ownerDocument = this;\n return commentNode;\n }\n createCDATASection(data) {\n const sectionNode = new RRCDATASection(data);\n sectionNode.ownerDocument = this;\n return sectionNode;\n }\n createTextNode(data) {\n const textNode = new RRText(data);\n textNode.ownerDocument = this;\n return textNode;\n }\n destroyTree() {\n this.firstChild = null;\n this.lastChild = null;\n this.mirror.reset();\n }\n open() {\n super.open();\n this._unserializedId = this.UNSERIALIZED_STARTING_ID;\n }\n}\nconst RRDocumentType = BaseRRDocumentType;\nclass RRElement extends BaseRRElement {\n constructor() {\n super(...arguments);\n __publicField2(this, \"inputData\", null);\n __publicField2(this, \"scrollData\", null);\n }\n}\nclass RRMediaElement extends BaseRRMediaElement {\n}\nclass RRDialogElement extends BaseRRDialogElement {\n}\nclass RRCanvasElement extends RRElement {\n constructor() {\n super(...arguments);\n __publicField2(this, \"rr_dataURL\", null);\n __publicField2(this, \"canvasMutations\", []);\n }\n /**\n * This is a dummy implementation to distinguish RRCanvasElement from real HTMLCanvasElement.\n */\n getContext() {\n return null;\n }\n}\nclass RRStyleElement extends RRElement {\n constructor() {\n super(...arguments);\n __publicField2(this, \"rules\", []);\n }\n}\nclass RRIFrameElement extends RRElement {\n constructor(upperTagName, mirror2) {\n super(upperTagName);\n __publicField2(this, \"contentDocument\", new RRDocument());\n this.contentDocument.mirror = mirror2;\n }\n}\nconst RRText = BaseRRText;\nconst RRComment = BaseRRComment;\nconst RRCDATASection = BaseRRCDATASection;\nfunction getValidTagName(element) {\n if (element instanceof HTMLFormElement) {\n return \"FORM\";\n }\n return element.tagName.toUpperCase();\n}\nfunction buildFromNode(node2, rrdom, domMirror, parentRRNode) {\n let rrNode;\n switch (node2.nodeType) {\n case NodeType$2.DOCUMENT_NODE:\n if (parentRRNode && parentRRNode.nodeName === \"IFRAME\")\n rrNode = parentRRNode.contentDocument;\n else {\n rrNode = rrdom;\n rrNode.compatMode = node2.compatMode;\n }\n break;\n case NodeType$2.DOCUMENT_TYPE_NODE: {\n const documentType = node2;\n rrNode = rrdom.createDocumentType(\n documentType.name,\n documentType.publicId,\n documentType.systemId\n );\n break;\n }\n case NodeType$2.ELEMENT_NODE: {\n const elementNode = node2;\n const tagName = getValidTagName(elementNode);\n rrNode = rrdom.createElement(tagName);\n const rrElement = rrNode;\n for (const { name, value } of Array.from(elementNode.attributes)) {\n rrElement.attributes[name] = value;\n }\n elementNode.scrollLeft && (rrElement.scrollLeft = elementNode.scrollLeft);\n elementNode.scrollTop && (rrElement.scrollTop = elementNode.scrollTop);\n break;\n }\n case NodeType$2.TEXT_NODE:\n rrNode = rrdom.createTextNode(node2.textContent || \"\");\n break;\n case NodeType$2.CDATA_SECTION_NODE:\n rrNode = rrdom.createCDATASection(node2.data);\n break;\n case NodeType$2.COMMENT_NODE:\n rrNode = rrdom.createComment(node2.textContent || \"\");\n break;\n case NodeType$2.DOCUMENT_FRAGMENT_NODE:\n rrNode = parentRRNode.attachShadow({ mode: \"open\" });\n break;\n default:\n return null;\n }\n let sn = domMirror.getMeta(node2);\n if (rrdom instanceof RRDocument) {\n if (!sn) {\n sn = getDefaultSN(rrNode, rrdom.unserializedId);\n domMirror.add(node2, sn);\n }\n rrdom.mirror.add(rrNode, { ...sn });\n }\n return rrNode;\n}\nfunction buildFromDom(dom, domMirror = createMirror$1(), rrdom = new RRDocument()) {\n function walk2(node2, parentRRNode) {\n const rrNode = buildFromNode(node2, rrdom, domMirror, parentRRNode);\n if (rrNode === null) return;\n if (\n // if the parentRRNode isn't a RRIFrameElement\n (parentRRNode == null ? void 0 : parentRRNode.nodeName) !== \"IFRAME\" && // if node isn't a shadow root\n node2.nodeType !== NodeType$2.DOCUMENT_FRAGMENT_NODE\n ) {\n parentRRNode == null ? void 0 : parentRRNode.appendChild(rrNode);\n rrNode.parentNode = parentRRNode;\n rrNode.parentElement = parentRRNode;\n }\n if (node2.nodeName === \"IFRAME\") {\n const iframeDoc = node2.contentDocument;\n iframeDoc && walk2(iframeDoc, rrNode);\n } else if (node2.nodeType === NodeType$2.DOCUMENT_NODE || node2.nodeType === NodeType$2.ELEMENT_NODE || node2.nodeType === NodeType$2.DOCUMENT_FRAGMENT_NODE) {\n if (node2.nodeType === NodeType$2.ELEMENT_NODE && node2.shadowRoot)\n walk2(node2.shadowRoot, rrNode);\n node2.childNodes.forEach((childNode) => walk2(childNode, rrNode));\n }\n }\n walk2(dom, null);\n return rrdom;\n}\nfunction createMirror() {\n return new Mirror22();\n}\nclass Mirror22 {\n constructor() {\n __publicField2(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField2(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n getId(n2) {\n var _a2;\n if (!n2) return -1;\n const id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n return id ?? -1;\n }\n getNode(id) {\n return this.idNodeMap.get(id) || null;\n }\n getIds() {\n return Array.from(this.idNodeMap.keys());\n }\n getMeta(n2) {\n return this.nodeMetaMap.get(n2) || null;\n }\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n2) {\n const id = this.getId(n2);\n this.idNodeMap.delete(id);\n if (n2.childNodes) {\n n2.childNodes.forEach((childNode) => this.removeNodeFromMap(childNode));\n }\n }\n has(id) {\n return this.idNodeMap.has(id);\n }\n hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n }\n add(n2, meta) {\n const id = meta.id;\n this.idNodeMap.set(id, n2);\n this.nodeMetaMap.set(n2, meta);\n }\n replace(id, n2) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n2, meta);\n }\n this.idNodeMap.set(id, n2);\n }\n reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n }\n}\nfunction getDefaultSN(node2, id) {\n switch (node2.RRNodeType) {\n case NodeType$1.Document:\n return {\n id,\n type: node2.RRNodeType,\n childNodes: []\n };\n case NodeType$1.DocumentType: {\n const doctype = node2;\n return {\n id,\n type: node2.RRNodeType,\n name: doctype.name,\n publicId: doctype.publicId,\n systemId: doctype.systemId\n };\n }\n case NodeType$1.Element:\n return {\n id,\n type: node2.RRNodeType,\n tagName: node2.tagName.toLowerCase(),\n // In rrweb data, all tagNames are lowercase.\n attributes: {},\n childNodes: []\n };\n case NodeType$1.Text:\n return {\n id,\n type: node2.RRNodeType,\n textContent: node2.textContent || \"\"\n };\n case NodeType$1.Comment:\n return {\n id,\n type: node2.RRNodeType,\n textContent: node2.textContent || \"\"\n };\n case NodeType$1.CDATA:\n return {\n id,\n type: node2.RRNodeType,\n textContent: \"\"\n };\n }\n}\nconst testableAccessors = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype = {};\nconst isAngularZonePresent = () => {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype(key) {\n if (untaintedBasePrototype[key])\n return untaintedBasePrototype[key];\n const defaultObj = globalThis[key];\n const defaultPrototype = defaultObj.prototype;\n const accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods ? testableMethods[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) {\n untaintedBasePrototype[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache[cacheKey])\n return untaintedAccessorCache[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache[cacheKey])\n return untaintedMethodCache[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentElement\");\n}\nfunction textContent(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"textContent\");\n}\nfunction contains(n2, other) {\n return getUntaintedMethod(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode(n2) {\n return getUntaintedMethod(\"Node\", n2, \"getRootNode\")();\n}\nfunction host(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nconst index = {\n childNodes,\n parentNode,\n parentElement,\n textContent,\n contains,\n getRootNode,\n host,\n styleSheets,\n shadowRoot,\n querySelector,\n querySelectorAll,\n mutationObserver: mutationObserverCtor\n};\nfunction on(type, fn, target = document) {\n const options = { capture: true, passive: true };\n target.addEventListener(type, fn, options);\n return () => target.removeEventListener(type, fn, options);\n}\nconst DEPARTED_MIRROR_ACCESS_WARNING = \"Please stop import mirror directly. Instead of that,\\r\\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\\r\\nor you can use record.mirror to access the mirror instance during recording.\";\nlet _mirror = {\n map: {},\n getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n};\nif (typeof window !== \"undefined\" && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get(target, prop, receiver) {\n if (prop === \"map\") {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction throttle(func, wait, options = {}) {\n let timeout = null;\n let previous = 0;\n return function(...args) {\n const now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n const context = this;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(() => {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n const original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(\n target,\n key,\n isRevoked ? d : {\n set(value) {\n setTimeout(() => {\n d.set.call(this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n }\n }\n );\n return () => hookSetter(target, key, original || {}, true);\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n } catch {\n return () => {\n };\n }\n}\nlet nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n nowTimestamp = () => (/* @__PURE__ */ new Date()).getTime();\n}\nfunction getWindowScroll(win) {\n var _a2, _b, _c, _d;\n const doc = win.document;\n return {\n left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== void 0 ? win.pageXOffset : doc.documentElement.scrollLeft || (doc == null ? void 0 : doc.body) && ((_a2 = index.parentElement(doc.body)) == null ? void 0 : _a2.scrollLeft) || ((_b = doc == null ? void 0 : doc.body) == null ? void 0 : _b.scrollLeft) || 0,\n top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== void 0 ? win.pageYOffset : (doc == null ? void 0 : doc.documentElement.scrollTop) || (doc == null ? void 0 : doc.body) && ((_c = index.parentElement(doc.body)) == null ? void 0 : _c.scrollTop) || ((_d = doc == null ? void 0 : doc.body) == null ? void 0 : _d.scrollTop) || 0\n };\n}\nfunction getWindowHeight() {\n return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight;\n}\nfunction getWindowWidth() {\n return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth;\n}\nfunction closestElementOfNode(node2) {\n if (!node2) {\n return null;\n }\n const el = node2.nodeType === node2.ELEMENT_NODE ? node2 : index.parentElement(node2);\n return el;\n}\nfunction isBlocked(node2, blockClass, blockSelector, checkAncestors) {\n if (!node2) {\n return false;\n }\n const el = closestElementOfNode(node2);\n if (!el) {\n return false;\n }\n try {\n if (typeof blockClass === \"string\") {\n if (el.classList.contains(blockClass)) return true;\n if (checkAncestors && el.closest(\".\" + blockClass) !== null) return true;\n } else {\n if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n }\n } catch (e2) {\n }\n if (blockSelector) {\n if (el.matches(blockSelector)) return true;\n if (checkAncestors && el.closest(blockSelector) !== null) return true;\n }\n return false;\n}\nfunction isSerialized(n2, mirror2) {\n return mirror2.getId(n2) !== -1;\n}\nfunction isIgnored(n2, mirror2, slimDOMOptions) {\n if (n2.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n return true;\n }\n return mirror2.getId(n2) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror2) {\n if (isShadowRoot(target)) {\n return false;\n }\n const id = mirror2.getId(target);\n if (!mirror2.has(id)) {\n return true;\n }\n const parent = index.parentNode(target);\n if (parent && parent.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!parent) {\n return true;\n }\n return isAncestorRemoved(parent, mirror2);\n}\nfunction legacy_isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill$1(win = window) {\n if (\"NodeList\" in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype.forEach;\n }\n if (\"DOMTokenList\" in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype.forEach;\n }\n}\nfunction queueToResolveTrees(queue) {\n const queueNodeMap = {};\n const putIntoMap = (m, parent) => {\n const nodeInTree = {\n value: m,\n parent,\n children: []\n };\n queueNodeMap[m.node.id] = nodeInTree;\n return nodeInTree;\n };\n const queueNodeTrees = [];\n for (const mutation of queue) {\n const { nextId, parentId } = mutation;\n if (nextId && nextId in queueNodeMap) {\n const nextInTree = queueNodeMap[nextId];\n if (nextInTree.parent) {\n const idx = nextInTree.parent.children.indexOf(nextInTree);\n nextInTree.parent.children.splice(\n idx,\n 0,\n putIntoMap(mutation, nextInTree.parent)\n );\n } else {\n const idx = queueNodeTrees.indexOf(nextInTree);\n queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\n }\n continue;\n }\n if (parentId in queueNodeMap) {\n const parentInTree = queueNodeMap[parentId];\n parentInTree.children.push(putIntoMap(mutation, parentInTree));\n continue;\n }\n queueNodeTrees.push(putIntoMap(mutation, null));\n }\n return queueNodeTrees;\n}\nfunction iterateResolveTree(tree, cb) {\n cb(tree.value);\n for (let i2 = tree.children.length - 1; i2 >= 0; i2--) {\n iterateResolveTree(tree.children[i2], cb);\n }\n}\nfunction isSerializedIframe(n2, mirror2) {\n return Boolean(n2.nodeName === \"IFRAME\" && mirror2.getMeta(n2));\n}\nfunction isSerializedStylesheet(n2, mirror2) {\n return Boolean(\n n2.nodeName === \"LINK\" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n2)\n );\n}\nfunction getBaseDimension(node2, rootIframe) {\n var _a2, _b;\n const frameElement = (_b = (_a2 = node2.ownerDocument) == null ? void 0 : _a2.defaultView) == null ? void 0 : _b.frameElement;\n if (!frameElement || frameElement === rootIframe) {\n return {\n x: 0,\n y: 0,\n relativeScale: 1,\n absoluteScale: 1\n };\n }\n const frameDimension = frameElement.getBoundingClientRect();\n const frameBaseDimension = getBaseDimension(frameElement, rootIframe);\n const relativeScale = frameDimension.height / frameElement.clientHeight;\n return {\n x: frameDimension.x * frameBaseDimension.relativeScale + frameBaseDimension.x,\n y: frameDimension.y * frameBaseDimension.relativeScale + frameBaseDimension.y,\n relativeScale,\n absoluteScale: frameBaseDimension.absoluteScale * relativeScale\n };\n}\nfunction hasShadowRoot(n2) {\n if (!n2) return false;\n if (n2 instanceof BaseRRNode && \"shadowRoot\" in n2) {\n return Boolean(n2.shadowRoot);\n }\n return Boolean(index.shadowRoot(n2));\n}\nfunction getNestedRule(rules2, position) {\n const rule2 = rules2[position[0]];\n if (position.length === 1) {\n return rule2;\n } else {\n return getNestedRule(\n rule2.cssRules[position[1]].cssRules,\n position.slice(2)\n );\n }\n}\nfunction getPositionsAndIndex(nestedIndex) {\n const positions = [...nestedIndex];\n const index2 = positions.pop();\n return { positions, index: index2 };\n}\nfunction uniqueTextMutations(mutations) {\n const idSet = /* @__PURE__ */ new Set();\n const uniqueMutations = [];\n for (let i2 = mutations.length; i2--; ) {\n const mutation = mutations[i2];\n if (!idSet.has(mutation.id)) {\n uniqueMutations.push(mutation);\n idSet.add(mutation.id);\n }\n }\n return uniqueMutations;\n}\nclass StyleSheetMirror {\n constructor() {\n __publicField(this, \"id\", 1);\n __publicField(this, \"styleIDMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"idStyleMap\", /* @__PURE__ */ new Map());\n }\n getId(stylesheet) {\n return this.styleIDMap.get(stylesheet) ?? -1;\n }\n has(stylesheet) {\n return this.styleIDMap.has(stylesheet);\n }\n /**\n * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n */\n add(stylesheet, id) {\n if (this.has(stylesheet)) return this.getId(stylesheet);\n let newId;\n if (id === void 0) {\n newId = this.id++;\n } else newId = id;\n this.styleIDMap.set(stylesheet, newId);\n this.idStyleMap.set(newId, stylesheet);\n return newId;\n }\n getStyle(id) {\n return this.idStyleMap.get(id) || null;\n }\n reset() {\n this.styleIDMap = /* @__PURE__ */ new WeakMap();\n this.idStyleMap = /* @__PURE__ */ new Map();\n this.id = 1;\n }\n generateId() {\n return this.id++;\n }\n}\nfunction getShadowHost(n2) {\n var _a2;\n let shadowHost = null;\n if (\"getRootNode\" in n2 && ((_a2 = index.getRootNode(n2)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n2)))\n shadowHost = index.host(index.getRootNode(n2));\n return shadowHost;\n}\nfunction getRootShadowHost(n2) {\n let rootShadowHost = n2;\n let shadowHost;\n while (shadowHost = getShadowHost(rootShadowHost))\n rootShadowHost = shadowHost;\n return rootShadowHost;\n}\nfunction shadowHostInDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n const shadowHost = getRootShadowHost(n2);\n return index.contains(doc, shadowHost);\n}\nfunction inDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n return index.contains(doc, n2) || shadowHostInDom(n2);\n}\nconst utils = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n StyleSheetMirror,\n get _mirror() {\n return _mirror;\n },\n closestElementOfNode,\n getBaseDimension,\n getNestedRule,\n getPositionsAndIndex,\n getRootShadowHost,\n getShadowHost,\n getWindowHeight,\n getWindowScroll,\n getWindowWidth,\n hasShadowRoot,\n hookSetter,\n inDom,\n isAncestorRemoved,\n isBlocked,\n isIgnored,\n isSerialized,\n isSerializedIframe,\n isSerializedStylesheet,\n iterateResolveTree,\n legacy_isTouchEvent,\n get nowTimestamp() {\n return nowTimestamp;\n },\n on,\n patch,\n polyfill: polyfill$1,\n queueToResolveTrees,\n shadowHostInDom,\n throttle,\n uniqueTextMutations\n}, Symbol.toStringTag, { value: \"Module\" }));\nvar EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n})(MediaInteractions || {});\nvar ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n ReplayerEvents2[\"Start\"] = \"start\";\n ReplayerEvents2[\"Pause\"] = \"pause\";\n ReplayerEvents2[\"Resume\"] = \"resume\";\n ReplayerEvents2[\"Resize\"] = \"resize\";\n ReplayerEvents2[\"Finish\"] = \"finish\";\n ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents2[\"Flush\"] = \"flush\";\n ReplayerEvents2[\"StateChange\"] = \"state-change\";\n ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n ReplayerEvents2[\"Destroy\"] = \"destroy\";\n return ReplayerEvents2;\n})(ReplayerEvents || {});\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType || {});\nfunction isNodeInLinkedList(n2) {\n return \"__ln\" in n2;\n}\nclass DoubleLinkedList {\n constructor() {\n __publicField(this, \"length\", 0);\n __publicField(this, \"head\", null);\n __publicField(this, \"tail\", null);\n }\n get(position) {\n if (position >= this.length) {\n throw new Error(\"Position outside of list range\");\n }\n let current = this.head;\n for (let index2 = 0; index2 < position; index2++) {\n current = (current == null ? void 0 : current.next) || null;\n }\n return current;\n }\n addNode(n2) {\n const node2 = {\n value: n2,\n previous: null,\n next: null\n };\n n2.__ln = node2;\n if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) {\n const current = n2.previousSibling.__ln.next;\n node2.next = current;\n node2.previous = n2.previousSibling.__ln;\n n2.previousSibling.__ln.next = node2;\n if (current) {\n current.previous = node2;\n }\n } else if (n2.nextSibling && isNodeInLinkedList(n2.nextSibling) && n2.nextSibling.__ln.previous) {\n const current = n2.nextSibling.__ln.previous;\n node2.previous = current;\n node2.next = n2.nextSibling.__ln;\n n2.nextSibling.__ln.previous = node2;\n if (current) {\n current.next = node2;\n }\n } else {\n if (this.head) {\n this.head.previous = node2;\n }\n node2.next = this.head;\n this.head = node2;\n }\n if (node2.next === null) {\n this.tail = node2;\n }\n this.length++;\n }\n removeNode(n2) {\n const current = n2.__ln;\n if (!this.head) {\n return;\n }\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n } else {\n this.tail = null;\n }\n } else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n } else {\n this.tail = current.previous;\n }\n }\n if (n2.__ln) {\n delete n2.__ln;\n }\n this.length--;\n }\n}\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\nclass MutationBuffer {\n constructor() {\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"texts\", []);\n __publicField(this, \"attributes\", []);\n __publicField(this, \"attributeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"removes\", []);\n __publicField(this, \"mapRemoves\", []);\n __publicField(this, \"movedMap\", {});\n /**\n * the browser MutationObserver emits multiple mutations after\n * a delay for performance reasons, making tracing added nodes hard\n * in our `processMutations` callback function.\n * For example, if we append an element el_1 into body, and then append\n * another element el_2 into el_1, these two mutations may be passed to the\n * callback function together when the two operations were done.\n * Generally we need to trace child nodes of newly added nodes, but in this\n * case if we count el_2 as el_1's child node in the first mutation record,\n * then we will count el_2 again in the second mutation record which was\n * duplicated.\n * To avoid of duplicate counting added nodes, we use a Set to store\n * added nodes and its child nodes during iterate mutation records. Then\n * collect added nodes from the Set which have no duplicate copy. But\n * this also causes newly added nodes will not be serialized with id ASAP,\n * which means all the id related calculation should be lazy too.\n */\n __publicField(this, \"addedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"movedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"droppedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"removesSubTreeCache\", /* @__PURE__ */ new Set());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"blockClass\");\n __publicField(this, \"blockSelector\");\n __publicField(this, \"maskTextClass\");\n __publicField(this, \"maskTextSelector\");\n __publicField(this, \"inlineStylesheet\");\n __publicField(this, \"maskInputOptions\");\n __publicField(this, \"maskTextFn\");\n __publicField(this, \"maskInputFn\");\n __publicField(this, \"keepIframeSrcFn\");\n __publicField(this, \"recordCanvas\");\n __publicField(this, \"inlineImages\");\n __publicField(this, \"slimDOMOptions\");\n __publicField(this, \"dataURLOptions\");\n __publicField(this, \"doc\");\n __publicField(this, \"mirror\");\n __publicField(this, \"iframeManager\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"shadowDomManager\");\n __publicField(this, \"canvasManager\");\n __publicField(this, \"processedNodeManager\");\n __publicField(this, \"unattachedDoc\");\n __publicField(this, \"processMutations\", (mutations) => {\n mutations.forEach(this.processMutation);\n this.emit();\n });\n __publicField(this, \"emit\", () => {\n if (this.frozen || this.locked) {\n return;\n }\n const adds = [];\n const addedIds = /* @__PURE__ */ new Set();\n const addList = new DoubleLinkedList();\n const getNextId = (n2) => {\n let ns = n2;\n let nextId = IGNORED_NODE;\n while (nextId === IGNORED_NODE) {\n ns = ns && ns.nextSibling;\n nextId = ns && this.mirror.getId(ns);\n }\n return nextId;\n };\n const pushAdd = (n2) => {\n const parent = index.parentNode(n2);\n if (!parent || !inDom(n2)) {\n return;\n }\n let cssCaptured = false;\n if (n2.nodeType === Node.TEXT_NODE) {\n const parentTag = parent.tagName;\n if (parentTag === \"TEXTAREA\") {\n return;\n } else if (parentTag === \"STYLE\" && this.addedSet.has(parent)) {\n cssCaptured = true;\n }\n }\n const parentId = isShadowRoot(parent) ? this.mirror.getId(getShadowHost(n2)) : this.mirror.getId(parent);\n const nextId = getNextId(n2);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n2);\n }\n const sn = serializeNodeWithId(n2, {\n doc: this.doc,\n mirror: this.mirror,\n blockClass: this.blockClass,\n blockSelector: this.blockSelector,\n maskTextClass: this.maskTextClass,\n maskTextSelector: this.maskTextSelector,\n skipChild: true,\n newlyAddedElement: true,\n inlineStylesheet: this.inlineStylesheet,\n maskInputOptions: this.maskInputOptions,\n maskTextFn: this.maskTextFn,\n maskInputFn: this.maskInputFn,\n slimDOMOptions: this.slimDOMOptions,\n dataURLOptions: this.dataURLOptions,\n recordCanvas: this.recordCanvas,\n inlineImages: this.inlineImages,\n onSerialize: (currentN) => {\n if (isSerializedIframe(currentN, this.mirror)) {\n this.iframeManager.addIframe(currentN);\n }\n if (isSerializedStylesheet(currentN, this.mirror)) {\n this.stylesheetManager.trackLinkElement(\n currentN\n );\n }\n if (hasShadowRoot(n2)) {\n this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), this.doc);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n this.iframeManager.attachIframe(iframe, childSn);\n this.shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (link, childSn) => {\n this.stylesheetManager.attachLinkElement(link, childSn);\n },\n cssCaptured\n });\n if (sn) {\n adds.push({\n parentId,\n nextId,\n node: sn\n });\n addedIds.add(sn.id);\n }\n };\n while (this.mapRemoves.length) {\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\n }\n for (const n2 of this.movedSet) {\n if (isParentRemoved(this.removesSubTreeCache, n2, this.mirror) && !this.movedSet.has(index.parentNode(n2))) {\n continue;\n }\n pushAdd(n2);\n }\n for (const n2 of this.addedSet) {\n if (!isAncestorInSet(this.droppedSet, n2) && !isParentRemoved(this.removesSubTreeCache, n2, this.mirror)) {\n pushAdd(n2);\n } else if (isAncestorInSet(this.movedSet, n2)) {\n pushAdd(n2);\n } else {\n this.droppedSet.add(n2);\n }\n }\n let candidate = null;\n while (addList.length) {\n let node2 = null;\n if (candidate) {\n const parentId = this.mirror.getId(index.parentNode(candidate.value));\n const nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node2 = candidate;\n }\n }\n if (!node2) {\n let tailNode = addList.tail;\n while (tailNode) {\n const _node = tailNode;\n tailNode = tailNode.previous;\n if (_node) {\n const parentId = this.mirror.getId(index.parentNode(_node.value));\n const nextId = getNextId(_node.value);\n if (nextId === -1) continue;\n else if (parentId !== -1) {\n node2 = _node;\n break;\n } else {\n const unhandledNode = _node.value;\n const parent = index.parentNode(unhandledNode);\n if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n const shadowHost = index.host(parent);\n const parentId2 = this.mirror.getId(shadowHost);\n if (parentId2 !== -1) {\n node2 = _node;\n break;\n }\n }\n }\n }\n }\n }\n if (!node2) {\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node2.previous;\n addList.removeNode(node2.value);\n pushAdd(node2.value);\n }\n const payload = {\n texts: this.texts.map((text) => {\n const n2 = text.node;\n const parent = index.parentNode(n2);\n if (parent && parent.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(parent);\n }\n return {\n id: this.mirror.getId(n2),\n value: text.value\n };\n }).filter((text) => !addedIds.has(text.id)).filter((text) => this.mirror.has(text.id)),\n attributes: this.attributes.map((attribute) => {\n const { attributes } = attribute;\n if (typeof attributes.style === \"string\") {\n const diffAsStr = JSON.stringify(attribute.styleDiff);\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n if (diffAsStr.length < attributes.style.length) {\n if ((diffAsStr + unchangedAsStr).split(\"var(\").length === attributes.style.split(\"var(\").length) {\n attributes.style = attribute.styleDiff;\n }\n }\n }\n return {\n id: this.mirror.getId(attribute.node),\n attributes\n };\n }).filter((attribute) => !addedIds.has(attribute.id)).filter((attribute) => this.mirror.has(attribute.id)),\n removes: this.removes,\n adds\n };\n if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) {\n return;\n }\n this.texts = [];\n this.attributes = [];\n this.attributeMap = /* @__PURE__ */ new WeakMap();\n this.removes = [];\n this.addedSet = /* @__PURE__ */ new Set();\n this.movedSet = /* @__PURE__ */ new Set();\n this.droppedSet = /* @__PURE__ */ new Set();\n this.removesSubTreeCache = /* @__PURE__ */ new Set();\n this.movedMap = {};\n this.mutationCb(payload);\n });\n __publicField(this, \"genTextAreaValueMutation\", (textarea) => {\n let item = this.attributeMap.get(textarea);\n if (!item) {\n item = {\n node: textarea,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(textarea, item);\n }\n item.attributes.value = Array.from(\n index.childNodes(textarea),\n (cn) => index.textContent(cn) || \"\"\n ).join(\"\");\n });\n __publicField(this, \"processMutation\", (m) => {\n if (isIgnored(m.target, this.mirror, this.slimDOMOptions)) {\n return;\n }\n switch (m.type) {\n case \"characterData\": {\n const value = index.textContent(m.target);\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) && value !== m.oldValue) {\n this.texts.push({\n value: needMaskingText(\n m.target,\n this.maskTextClass,\n this.maskTextSelector,\n true\n // checkAncestors\n ) && value ? this.maskTextFn ? this.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\\S]/g, \"*\") : value,\n node: m.target\n });\n }\n break;\n }\n case \"attributes\": {\n const target = m.target;\n let attributeName = m.attributeName;\n let value = m.target.getAttribute(attributeName);\n if (attributeName === \"value\") {\n const type = getInputType(target);\n value = maskInputValue({\n element: target,\n maskInputOptions: this.maskInputOptions,\n tagName: target.tagName,\n type,\n value,\n maskInputFn: this.maskInputFn\n });\n }\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || value === m.oldValue) {\n return;\n }\n let item = this.attributeMap.get(m.target);\n if (target.tagName === \"IFRAME\" && attributeName === \"src\" && !this.keepIframeSrcFn(value)) {\n if (!target.contentDocument) {\n attributeName = \"rr_src\";\n } else {\n return;\n }\n }\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(m.target, item);\n }\n if (attributeName === \"type\" && target.tagName === \"INPUT\" && (m.oldValue || \"\").toLowerCase() === \"password\") {\n target.setAttribute(\"data-rr-is-password\", \"true\");\n }\n if (!ignoreAttribute(target.tagName, attributeName)) {\n item.attributes[attributeName] = transformAttribute(\n this.doc,\n toLowerCase(target.tagName),\n toLowerCase(attributeName),\n value\n );\n if (attributeName === \"style\") {\n if (!this.unattachedDoc) {\n try {\n this.unattachedDoc = document.implementation.createHTMLDocument();\n } catch (e2) {\n this.unattachedDoc = this.doc;\n }\n }\n const old = this.unattachedDoc.createElement(\"span\");\n if (m.oldValue) {\n old.setAttribute(\"style\", m.oldValue);\n }\n for (const pname of Array.from(target.style)) {\n const newValue = target.style.getPropertyValue(pname);\n const newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === \"\") {\n item.styleDiff[pname] = newValue;\n } else {\n item.styleDiff[pname] = [newValue, newPriority];\n }\n } else {\n item._unchangedStyles[pname] = [newValue, newPriority];\n }\n }\n for (const pname of Array.from(old.style)) {\n if (target.style.getPropertyValue(pname) === \"\") {\n item.styleDiff[pname] = false;\n }\n }\n } else if (attributeName === \"open\" && target.tagName === \"DIALOG\") {\n if (target.matches(\"dialog:modal\")) {\n item.attributes[\"rr_open_mode\"] = \"modal\";\n } else {\n item.attributes[\"rr_open_mode\"] = \"non-modal\";\n }\n }\n }\n break;\n }\n case \"childList\": {\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\n return;\n if (m.target.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(m.target);\n return;\n }\n m.addedNodes.forEach((n2) => this.genAdds(n2, m.target));\n m.removedNodes.forEach((n2) => {\n const nodeId = this.mirror.getId(n2);\n const parentId = isShadowRoot(m.target) ? this.mirror.getId(index.host(m.target)) : this.mirror.getId(m.target);\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || isIgnored(n2, this.mirror, this.slimDOMOptions) || !isSerialized(n2, this.mirror)) {\n return;\n }\n if (this.addedSet.has(n2)) {\n deepDelete(this.addedSet, n2);\n this.droppedSet.add(n2);\n } else if (this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, this.mirror)) ;\n else if (this.movedSet.has(n2) && this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(this.movedSet, n2);\n } else {\n this.removes.push({\n parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0\n });\n processRemoves(n2, this.removesSubTreeCache);\n }\n this.mapRemoves.push(n2);\n });\n break;\n }\n }\n });\n /**\n * Make sure you check if `n`'s parent is blocked before calling this function\n * */\n __publicField(this, \"genAdds\", (n2, target) => {\n if (this.processedNodeManager.inOtherBuffer(n2, this)) return;\n if (this.addedSet.has(n2) || this.movedSet.has(n2)) return;\n if (this.mirror.hasNode(n2)) {\n if (isIgnored(n2, this.mirror, this.slimDOMOptions)) {\n return;\n }\n this.movedSet.add(n2);\n let targetId = null;\n if (target && this.mirror.hasNode(target)) {\n targetId = this.mirror.getId(target);\n }\n if (targetId && targetId !== -1) {\n this.movedMap[moveKey(this.mirror.getId(n2), targetId)] = true;\n }\n } else {\n this.addedSet.add(n2);\n this.droppedSet.delete(n2);\n }\n if (!isBlocked(n2, this.blockClass, this.blockSelector, false)) {\n index.childNodes(n2).forEach((childN) => this.genAdds(childN));\n if (hasShadowRoot(n2)) {\n index.childNodes(index.shadowRoot(n2)).forEach((childN) => {\n this.processedNodeManager.add(childN, this);\n this.genAdds(childN, n2);\n });\n }\n }\n });\n }\n init(options) {\n [\n \"mutationCb\",\n \"blockClass\",\n \"blockSelector\",\n \"maskTextClass\",\n \"maskTextSelector\",\n \"inlineStylesheet\",\n \"maskInputOptions\",\n \"maskTextFn\",\n \"maskInputFn\",\n \"keepIframeSrcFn\",\n \"recordCanvas\",\n \"inlineImages\",\n \"slimDOMOptions\",\n \"dataURLOptions\",\n \"doc\",\n \"mirror\",\n \"iframeManager\",\n \"stylesheetManager\",\n \"shadowDomManager\",\n \"canvasManager\",\n \"processedNodeManager\"\n ].forEach((key) => {\n this[key] = options[key];\n });\n }\n freeze() {\n this.frozen = true;\n this.canvasManager.freeze();\n }\n unfreeze() {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n }\n isFrozen() {\n return this.frozen;\n }\n lock() {\n this.locked = true;\n this.canvasManager.lock();\n }\n unlock() {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n }\n reset() {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n }\n}\nfunction deepDelete(addsSet, n2) {\n addsSet.delete(n2);\n index.childNodes(n2).forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction processRemoves(n2, cache) {\n const queue = [n2];\n while (queue.length) {\n const next = queue.pop();\n if (cache.has(next)) continue;\n cache.add(next);\n index.childNodes(next).forEach((n22) => queue.push(n22));\n }\n return;\n}\nfunction isParentRemoved(removes, n2, mirror2) {\n if (removes.size === 0) return false;\n return _isParentRemoved(removes, n2);\n}\nfunction _isParentRemoved(removes, n2, _mirror2) {\n const node2 = index.parentNode(n2);\n if (!node2) return false;\n return removes.has(node2);\n}\nfunction isAncestorInSet(set, n2) {\n if (set.size === 0) return false;\n return _isAncestorInSet(set, n2);\n}\nfunction _isAncestorInSet(set, n2) {\n const parent = index.parentNode(n2);\n if (!parent) {\n return false;\n }\n if (set.has(parent)) {\n return true;\n }\n return _isAncestorInSet(set, parent);\n}\nlet errorHandler;\nfunction registerErrorHandler(handler) {\n errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n errorHandler = void 0;\n}\nconst callbackWrapper = (cb) => {\n if (!errorHandler) {\n return cb;\n }\n const rrwebWrapped = (...rest) => {\n try {\n return cb(...rest);\n } catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return;\n }\n throw error;\n }\n };\n return rrwebWrapped;\n};\nconst mutationBuffers = [];\nfunction getEventTarget(event) {\n try {\n if (\"composedPath\" in event) {\n const path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n } else if (\"path\" in event && event.path.length) {\n return event.path[0];\n }\n } catch {\n }\n return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n const mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n const observer = new (mutationObserverCtor())(\n callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer))\n );\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction initMoveObserver({\n mousemoveCb,\n sampling,\n doc,\n mirror: mirror2\n}) {\n if (sampling.mousemove === false) {\n return () => {\n };\n }\n const threshold = typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n const callbackThreshold = typeof sampling.mousemoveCallback === \"number\" ? sampling.mousemoveCallback : 500;\n let positions = [];\n let timeBaseline;\n const wrappedCb = throttle(\n callbackWrapper(\n (source) => {\n const totalOffset = Date.now() - timeBaseline;\n mousemoveCb(\n positions.map((p) => {\n p.timeOffset -= totalOffset;\n return p;\n }),\n source\n );\n positions = [];\n timeBaseline = null;\n }\n ),\n callbackThreshold\n );\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n const { clientX, clientY } = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt;\n if (!timeBaseline) {\n timeBaseline = nowTimestamp();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror2.getId(target),\n timeOffset: nowTimestamp() - timeBaseline\n });\n wrappedCb(\n typeof DragEvent !== \"undefined\" && evt instanceof DragEvent ? IncrementalSource.Drag : evt instanceof MouseEvent ? IncrementalSource.MouseMove : IncrementalSource.TouchMove\n );\n }),\n threshold,\n {\n trailing: false\n }\n )\n );\n const handlers = [\n on(\"mousemove\", updatePosition, doc),\n on(\"touchmove\", updatePosition, doc),\n on(\"drag\", updatePosition, doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initMouseInteractionObserver({\n mouseInteractionCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n if (sampling.mouseInteraction === false) {\n return () => {\n };\n }\n const disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction;\n const handlers = [];\n let currentPointerType = null;\n const getHandler = (eventKey) => {\n return (event) => {\n const target = getEventTarget(event);\n if (isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n let pointerType = null;\n let thisEventKey = eventKey;\n if (\"pointerType\" in event) {\n switch (event.pointerType) {\n case \"mouse\":\n pointerType = PointerTypes.Mouse;\n break;\n case \"touch\":\n pointerType = PointerTypes.Touch;\n break;\n case \"pen\":\n pointerType = PointerTypes.Pen;\n break;\n }\n if (pointerType === PointerTypes.Touch) {\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n thisEventKey = \"TouchStart\";\n } else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n thisEventKey = \"TouchEnd\";\n }\n } else if (pointerType === PointerTypes.Pen) ;\n } else if (legacy_isTouchEvent(event)) {\n pointerType = PointerTypes.Touch;\n }\n if (pointerType !== null) {\n currentPointerType = pointerType;\n if (thisEventKey.startsWith(\"Touch\") && pointerType === PointerTypes.Touch || thisEventKey.startsWith(\"Mouse\") && pointerType === PointerTypes.Mouse) {\n pointerType = null;\n }\n } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n pointerType = currentPointerType;\n currentPointerType = null;\n }\n const e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e2) {\n return;\n }\n const id = mirror2.getId(target);\n const { clientX, clientY } = e2;\n callbackWrapper(mouseInteractionCb)({\n type: MouseInteractions[thisEventKey],\n id,\n x: clientX,\n y: clientY,\n ...pointerType !== null && { pointerType }\n });\n };\n };\n Object.keys(MouseInteractions).filter(\n (key) => Number.isNaN(Number(key)) && !key.endsWith(\"_Departed\") && disableMap[key] !== false\n ).forEach((eventKey) => {\n let eventName = toLowerCase(eventKey);\n const handler = getHandler(eventKey);\n if (window.PointerEvent) {\n switch (MouseInteractions[eventKey]) {\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n eventName = eventName.replace(\n \"mouse\",\n \"pointer\"\n );\n break;\n case MouseInteractions.TouchStart:\n case MouseInteractions.TouchEnd:\n return;\n }\n }\n handlers.push(on(eventName, handler, doc));\n });\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initScrollObserver({\n scrollCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const id = mirror2.getId(target);\n if (target === doc && doc.defaultView) {\n const scrollLeftTop = getWindowScroll(doc.defaultView);\n scrollCb({\n id,\n x: scrollLeftTop.left,\n y: scrollLeftTop.top\n });\n } else {\n scrollCb({\n id,\n x: target.scrollLeft,\n y: target.scrollTop\n });\n }\n }),\n sampling.scroll || 100\n )\n );\n return on(\"scroll\", updatePosition, doc);\n}\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\n let lastH = -1;\n let lastW = -1;\n const updateDimension = callbackWrapper(\n throttle(\n callbackWrapper(() => {\n const height = getWindowHeight();\n const width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n viewportResizeCb({\n width: Number(width),\n height: Number(height)\n });\n lastH = height;\n lastW = width;\n }\n }),\n 200\n )\n );\n return on(\"resize\", updateDimension, win);\n}\nconst INPUT_TAGS = [\"INPUT\", \"TEXTAREA\", \"SELECT\"];\nconst lastInputValueMap = /* @__PURE__ */ new WeakMap();\nfunction initInputObserver({\n inputCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n ignoreClass,\n ignoreSelector,\n maskInputOptions,\n maskInputFn,\n sampling,\n userTriggeredOnInput\n}) {\n function eventHandler(event) {\n let target = getEventTarget(event);\n const userTriggered = event.isTrusted;\n const tagName = target && target.tagName;\n if (target && tagName === \"OPTION\") {\n target = index.parentElement(target);\n }\n if (!target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n if (target.classList.contains(ignoreClass) || ignoreSelector && target.matches(ignoreSelector)) {\n return;\n }\n let text = target.value;\n let isChecked = false;\n const type = getInputType(target) || \"\";\n if (type === \"radio\" || type === \"checkbox\") {\n isChecked = target.checked;\n } else if (maskInputOptions[tagName.toLowerCase()] || maskInputOptions[type]) {\n text = maskInputValue({\n element: target,\n maskInputOptions,\n tagName,\n type,\n value: text,\n maskInputFn\n });\n }\n cbWithDedup(\n target,\n userTriggeredOnInput ? { text, isChecked, userTriggered } : { text, isChecked }\n );\n const name = target.name;\n if (type === \"radio\" && name && isChecked) {\n doc.querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`).forEach((el) => {\n if (el !== target) {\n const text2 = el.value;\n cbWithDedup(\n el,\n userTriggeredOnInput ? { text: text2, isChecked: !isChecked, userTriggered: false } : { text: text2, isChecked: !isChecked }\n );\n }\n });\n }\n }\n function cbWithDedup(target, v2) {\n const lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) {\n lastInputValueMap.set(target, v2);\n const id = mirror2.getId(target);\n callbackWrapper(inputCb)({\n ...v2,\n id\n });\n }\n }\n const events = sampling.input === \"last\" ? [\"change\"] : [\"input\", \"change\"];\n const handlers = events.map(\n (eventName) => on(eventName, callbackWrapper(eventHandler), doc)\n );\n const currentWindow = doc.defaultView;\n if (!currentWindow) {\n return () => {\n handlers.forEach((h) => h());\n };\n }\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(\n currentWindow.HTMLInputElement.prototype,\n \"value\"\n );\n const hookProperties = [\n [currentWindow.HTMLInputElement.prototype, \"value\"],\n [currentWindow.HTMLInputElement.prototype, \"checked\"],\n [currentWindow.HTMLSelectElement.prototype, \"value\"],\n [currentWindow.HTMLTextAreaElement.prototype, \"value\"],\n // Some UI library use selectedIndex to set select value\n [currentWindow.HTMLSelectElement.prototype, \"selectedIndex\"],\n [currentWindow.HTMLOptionElement.prototype, \"selected\"]\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n handlers.push(\n ...hookProperties.map(\n (p) => hookSetter(\n p[0],\n p[1],\n {\n set() {\n callbackWrapper(eventHandler)({\n target: this,\n isTrusted: false\n // userTriggered to false as this could well be programmatic\n });\n }\n },\n false,\n currentWindow\n )\n )\n );\n }\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction getNestedCSSRulePositions(rule2) {\n const positions = [];\n function recurse(childRule, pos) {\n if (hasNestedCSSRule(\"CSSGroupingRule\") && childRule.parentRule instanceof CSSGroupingRule || hasNestedCSSRule(\"CSSMediaRule\") && childRule.parentRule instanceof CSSMediaRule || hasNestedCSSRule(\"CSSSupportsRule\") && childRule.parentRule instanceof CSSSupportsRule || hasNestedCSSRule(\"CSSConditionRule\") && childRule.parentRule instanceof CSSConditionRule) {\n const rules2 = Array.from(\n childRule.parentRule.cssRules\n );\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n } else if (childRule.parentStyleSheet) {\n const rules2 = Array.from(childRule.parentStyleSheet.cssRules);\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n }\n return pos;\n }\n return recurse(rule2, positions);\n}\nfunction getIdAndStyleId(sheet, mirror2, styleMirror) {\n let id, styleId;\n if (!sheet) return {};\n if (sheet.ownerNode) id = mirror2.getId(sheet.ownerNode);\n else styleId = styleMirror.getId(sheet);\n return {\n styleId,\n id\n };\n}\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror: mirror2, stylesheetManager }, { win }) {\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n return () => {\n };\n }\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [{ rule: rule2, index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2 = this.cssRules.length) {\n const rule2 = `${selector} { ${styleBlock} }`;\n return win.CSSStyleSheet.prototype.insertRule.apply(this, [rule2, index2]);\n };\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [{ index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.removeRule = function(index2) {\n return win.CSSStyleSheet.prototype.deleteRule.apply(this, [index2]);\n };\n let replace;\n if (win.CSSStyleSheet.prototype.replace) {\n replace = win.CSSStyleSheet.prototype.replace;\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replace: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n let replaceSync;\n if (win.CSSStyleSheet.prototype.replaceSync) {\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replaceSync: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n const supportedNestedCSSRuleTypes = {};\n if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n } else {\n if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n const unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n unmodifiedFunctions[typeKey] = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n insertRule: type.prototype.insertRule,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n deleteRule: type.prototype.deleteRule\n };\n type.prototype.insertRule = new Proxy(\n unmodifiedFunctions[typeKey].insertRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [\n {\n rule: rule2,\n index: [\n ...getNestedCSSRulePositions(thisArg),\n index2 || 0\n // defaults to 0\n ]\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n type.prototype.deleteRule = new Proxy(\n unmodifiedFunctions[typeKey].deleteRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [\n { index: [...getNestedCSSRulePositions(thisArg), index2] }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n });\n return callbackWrapper(() => {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n replace && (win.CSSStyleSheet.prototype.replace = replace);\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n });\n}\nfunction initAdoptedStyleSheetObserver({\n mirror: mirror2,\n stylesheetManager\n}, host2) {\n var _a2, _b, _c;\n let hostId = null;\n if (host2.nodeName === \"#document\") hostId = mirror2.getId(host2);\n else hostId = mirror2.getId(index.host(host2));\n const patchTarget = host2.nodeName === \"#document\" ? (_a2 = host2.defaultView) == null ? void 0 : _a2.Document : (_c = (_b = host2.ownerDocument) == null ? void 0 : _b.defaultView) == null ? void 0 : _c.ShadowRoot;\n const originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(\n patchTarget == null ? void 0 : patchTarget.prototype,\n \"adoptedStyleSheets\"\n ) : void 0;\n if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor)\n return () => {\n };\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get() {\n var _a3;\n return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this);\n },\n set(sheets) {\n var _a3;\n const result2 = (_a3 = originalPropertyDescriptor.set) == null ? void 0 : _a3.call(this, sheets);\n if (hostId !== null && hostId !== -1) {\n try {\n stylesheetManager.adoptStyleSheets(sheets, hostId);\n } catch (e2) {\n }\n }\n return result2;\n }\n });\n return callbackWrapper(() => {\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n get: originalPropertyDescriptor.get,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n set: originalPropertyDescriptor.set\n });\n });\n}\nfunction initStyleDeclarationObserver({\n styleDeclarationCb,\n mirror: mirror2,\n ignoreCSSAttributes,\n stylesheetManager\n}, { win }) {\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property, value, priority] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return setProperty.apply(thisArg, [property, value, priority]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n set: {\n property,\n value,\n priority\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return removeProperty.apply(thisArg, [property]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n remove: {\n property\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n return callbackWrapper(() => {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n });\n}\nfunction initMediaInteractionObserver({\n mediaInteractionCb,\n blockClass,\n blockSelector,\n mirror: mirror2,\n sampling,\n doc\n}) {\n const handler = callbackWrapper(\n (type) => throttle(\n callbackWrapper((event) => {\n const target = getEventTarget(event);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const { currentTime, volume, muted, playbackRate, loop } = target;\n mediaInteractionCb({\n type,\n id: mirror2.getId(target),\n currentTime,\n volume,\n muted,\n playbackRate,\n loop\n });\n }),\n sampling.media || 500\n )\n );\n const handlers = [\n on(\"play\", handler(MediaInteractions.Play), doc),\n on(\"pause\", handler(MediaInteractions.Pause), doc),\n on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n on(\"ratechange\", handler(MediaInteractions.RateChange), doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initFontObserver({ fontCb, doc }) {\n const win = doc.defaultView;\n if (!win) {\n return () => {\n };\n }\n const handlers = [];\n const fontMap = /* @__PURE__ */ new WeakMap();\n const originalFontFace = win.FontFace;\n win.FontFace = function FontFace2(family, source, descriptors) {\n const fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family,\n buffer: typeof source !== \"string\",\n descriptors,\n fontSource: typeof source === \"string\" ? source : JSON.stringify(Array.from(new Uint8Array(source)))\n });\n return fontFace;\n };\n const restoreHandler = patch(\n doc.fonts,\n \"add\",\n function(original) {\n return function(fontFace) {\n setTimeout(\n callbackWrapper(() => {\n const p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }),\n 0\n );\n return original.apply(this, [fontFace]);\n };\n }\n );\n handlers.push(() => {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initSelectionObserver(param) {\n const { doc, mirror: mirror2, blockClass, blockSelector, selectionCb } = param;\n let collapsed = true;\n const updateSelection = callbackWrapper(() => {\n const selection = doc.getSelection();\n if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return;\n collapsed = selection.isCollapsed || false;\n const ranges = [];\n const count = selection.rangeCount || 0;\n for (let i2 = 0; i2 < count; i2++) {\n const range = selection.getRangeAt(i2);\n const { startContainer, startOffset, endContainer, endOffset } = range;\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) || isBlocked(endContainer, blockClass, blockSelector, true);\n if (blocked) continue;\n ranges.push({\n start: mirror2.getId(startContainer),\n startOffset,\n end: mirror2.getId(endContainer),\n endOffset\n });\n }\n selectionCb({ ranges });\n });\n updateSelection();\n return on(\"selectionchange\", updateSelection);\n}\nfunction initCustomElementObserver({\n doc,\n customElementCb\n}) {\n const win = doc.defaultView;\n if (!win || !win.customElements) return () => {\n };\n const restoreHandler = patch(\n win.customElements,\n \"define\",\n function(original) {\n return function(name, constructor, options) {\n try {\n customElementCb({\n define: {\n name\n }\n });\n } catch (e2) {\n console.warn(`Custom element callback failed for ${name}`);\n }\n return original.apply(this, [name, constructor, options]);\n };\n }\n );\n return restoreHandler;\n}\nfunction mergeHooks(o2, hooks) {\n const {\n mutationCb,\n mousemoveCb,\n mouseInteractionCb,\n scrollCb,\n viewportResizeCb,\n inputCb,\n mediaInteractionCb,\n styleSheetRuleCb,\n styleDeclarationCb,\n canvasMutationCb,\n fontCb,\n selectionCb,\n customElementCb\n } = o2;\n o2.mutationCb = (...p) => {\n if (hooks.mutation) {\n hooks.mutation(...p);\n }\n mutationCb(...p);\n };\n o2.mousemoveCb = (...p) => {\n if (hooks.mousemove) {\n hooks.mousemove(...p);\n }\n mousemoveCb(...p);\n };\n o2.mouseInteractionCb = (...p) => {\n if (hooks.mouseInteraction) {\n hooks.mouseInteraction(...p);\n }\n mouseInteractionCb(...p);\n };\n o2.scrollCb = (...p) => {\n if (hooks.scroll) {\n hooks.scroll(...p);\n }\n scrollCb(...p);\n };\n o2.viewportResizeCb = (...p) => {\n if (hooks.viewportResize) {\n hooks.viewportResize(...p);\n }\n viewportResizeCb(...p);\n };\n o2.inputCb = (...p) => {\n if (hooks.input) {\n hooks.input(...p);\n }\n inputCb(...p);\n };\n o2.mediaInteractionCb = (...p) => {\n if (hooks.mediaInteaction) {\n hooks.mediaInteaction(...p);\n }\n mediaInteractionCb(...p);\n };\n o2.styleSheetRuleCb = (...p) => {\n if (hooks.styleSheetRule) {\n hooks.styleSheetRule(...p);\n }\n styleSheetRuleCb(...p);\n };\n o2.styleDeclarationCb = (...p) => {\n if (hooks.styleDeclaration) {\n hooks.styleDeclaration(...p);\n }\n styleDeclarationCb(...p);\n };\n o2.canvasMutationCb = (...p) => {\n if (hooks.canvasMutation) {\n hooks.canvasMutation(...p);\n }\n canvasMutationCb(...p);\n };\n o2.fontCb = (...p) => {\n if (hooks.font) {\n hooks.font(...p);\n }\n fontCb(...p);\n };\n o2.selectionCb = (...p) => {\n if (hooks.selection) {\n hooks.selection(...p);\n }\n selectionCb(...p);\n };\n o2.customElementCb = (...c2) => {\n if (hooks.customElement) {\n hooks.customElement(...c2);\n }\n customElementCb(...c2);\n };\n}\nfunction initObservers(o2, hooks = {}) {\n const currentWindow = o2.doc.defaultView;\n if (!currentWindow) {\n return () => {\n };\n }\n mergeHooks(o2, hooks);\n let mutationObserver;\n if (o2.recordDOM) {\n mutationObserver = initMutationObserver(o2, o2.doc);\n }\n const mousemoveHandler = initMoveObserver(o2);\n const mouseInteractionHandler = initMouseInteractionObserver(o2);\n const scrollHandler = initScrollObserver(o2);\n const viewportResizeHandler = initViewportResizeObserver(o2, {\n win: currentWindow\n });\n const inputHandler = initInputObserver(o2);\n const mediaInteractionHandler = initMediaInteractionObserver(o2);\n let styleSheetObserver = () => {\n };\n let adoptedStyleSheetObserver = () => {\n };\n let styleDeclarationObserver = () => {\n };\n let fontObserver = () => {\n };\n if (o2.recordDOM) {\n styleSheetObserver = initStyleSheetObserver(o2, { win: currentWindow });\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o2, o2.doc);\n styleDeclarationObserver = initStyleDeclarationObserver(o2, {\n win: currentWindow\n });\n if (o2.collectFonts) {\n fontObserver = initFontObserver(o2);\n }\n }\n const selectionObserver = initSelectionObserver(o2);\n const customElementObserver = initCustomElementObserver(o2);\n const pluginHandlers = [];\n for (const plugin3 of o2.plugins) {\n pluginHandlers.push(\n plugin3.observer(plugin3.callback, currentWindow, plugin3.options)\n );\n }\n return callbackWrapper(() => {\n mutationBuffers.forEach((b) => b.reset());\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n adoptedStyleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n selectionObserver();\n customElementObserver();\n pluginHandlers.forEach((h) => h());\n });\n}\nfunction hasNestedCSSRule(prop) {\n return typeof window[prop] !== \"undefined\";\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n return Boolean(\n typeof window[prop] !== \"undefined\" && // Note: Generally, this check _shouldn't_ be necessary\n // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n window[prop].prototype && \"insertRule\" in window[prop].prototype && \"deleteRule\" in window[prop].prototype\n );\n}\nclass CrossOriginIframeMirror {\n constructor(generateIdFn) {\n __publicField(this, \"iframeIdToRemoteIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"iframeRemoteIdToIdMap\", /* @__PURE__ */ new WeakMap());\n this.generateIdFn = generateIdFn;\n }\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n let id = idToRemoteIdMap.get(remoteId);\n if (!id) {\n id = this.generateIdFn();\n idToRemoteIdMap.set(remoteId, id);\n remoteIdToIdMap.set(id, remoteId);\n }\n return id;\n }\n getIds(iframe, remoteId) {\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return remoteId.map(\n (id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap)\n );\n }\n getRemoteId(iframe, id, map) {\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n if (typeof id !== \"number\") return id;\n const remoteId = remoteIdToIdMap.get(id);\n if (!remoteId) return -1;\n return remoteId;\n }\n getRemoteIds(iframe, ids) {\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n }\n reset(iframe) {\n if (!iframe) {\n this.iframeIdToRemoteIdMap = /* @__PURE__ */ new WeakMap();\n this.iframeRemoteIdToIdMap = /* @__PURE__ */ new WeakMap();\n return;\n }\n this.iframeIdToRemoteIdMap.delete(iframe);\n this.iframeRemoteIdToIdMap.delete(iframe);\n }\n getIdToRemoteIdMap(iframe) {\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n if (!idToRemoteIdMap) {\n idToRemoteIdMap = /* @__PURE__ */ new Map();\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n }\n return idToRemoteIdMap;\n }\n getRemoteIdToIdMap(iframe) {\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n if (!remoteIdToIdMap) {\n remoteIdToIdMap = /* @__PURE__ */ new Map();\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n }\n return remoteIdToIdMap;\n }\n}\nclass IframeManager {\n constructor(options) {\n __publicField(this, \"iframes\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMirror\", new CrossOriginIframeMirror(genId));\n __publicField(this, \"crossOriginIframeStyleMirror\");\n __publicField(this, \"crossOriginIframeRootIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"wrappedEmit\");\n __publicField(this, \"loadListener\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"recordCrossOriginIframes\");\n this.mutationCb = options.mutationCb;\n this.wrappedEmit = options.wrappedEmit;\n this.stylesheetManager = options.stylesheetManager;\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(\n this.stylesheetManager.styleMirror.generateId.bind(\n this.stylesheetManager.styleMirror\n )\n );\n this.mirror = options.mirror;\n if (this.recordCrossOriginIframes) {\n window.addEventListener(\"message\", this.handleMessage.bind(this));\n }\n }\n addIframe(iframeEl) {\n this.iframes.set(iframeEl, true);\n if (iframeEl.contentWindow)\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n }\n addLoadListener(cb) {\n this.loadListener = cb;\n }\n attachIframe(iframeEl, childSn) {\n var _a2, _b;\n this.mutationCb({\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: childSn\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n });\n if (this.recordCrossOriginIframes)\n (_a2 = iframeEl.contentWindow) == null ? void 0 : _a2.addEventListener(\n \"message\",\n this.handleMessage.bind(this)\n );\n (_b = this.loadListener) == null ? void 0 : _b.call(this, iframeEl);\n if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0)\n this.stylesheetManager.adoptStyleSheets(\n iframeEl.contentDocument.adoptedStyleSheets,\n this.mirror.getId(iframeEl.contentDocument)\n );\n }\n handleMessage(message) {\n const crossOriginMessageEvent = message;\n if (crossOriginMessageEvent.data.type !== \"rrweb\" || // To filter out the rrweb messages which are forwarded by some sites.\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\n return;\n const iframeSourceWindow = message.source;\n if (!iframeSourceWindow) return;\n const iframeEl = this.crossOriginIframeMap.get(message.source);\n if (!iframeEl) return;\n const transformedEvent = this.transformCrossOriginEvent(\n iframeEl,\n crossOriginMessageEvent.data.event\n );\n if (transformedEvent)\n this.wrappedEmit(\n transformedEvent,\n crossOriginMessageEvent.data.isCheckout\n );\n }\n transformCrossOriginEvent(iframeEl, e2) {\n var _a2;\n switch (e2.type) {\n case EventType.FullSnapshot: {\n this.crossOriginIframeMirror.reset(iframeEl);\n this.crossOriginIframeStyleMirror.reset(iframeEl);\n this.replaceIdOnNode(e2.data.node, iframeEl);\n const rootId = e2.data.node.id;\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n this.patchRootIdOnNode(e2.data.node, rootId);\n return {\n timestamp: e2.timestamp,\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: e2.data.node\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n }\n };\n }\n case EventType.Meta:\n case EventType.Load:\n case EventType.DomContentLoaded: {\n return false;\n }\n case EventType.Plugin: {\n return e2;\n }\n case EventType.Custom: {\n this.replaceIds(\n e2.data.payload,\n iframeEl,\n [\"id\", \"parentId\", \"previousId\", \"nextId\"]\n );\n return e2;\n }\n case EventType.IncrementalSnapshot: {\n switch (e2.data.source) {\n case IncrementalSource.Mutation: {\n e2.data.adds.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\n \"parentId\",\n \"nextId\",\n \"previousId\"\n ]);\n this.replaceIdOnNode(n2.node, iframeEl);\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n rootId && this.patchRootIdOnNode(n2.node, rootId);\n });\n e2.data.removes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"parentId\", \"id\"]);\n });\n e2.data.attributes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n e2.data.texts.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove: {\n e2.data.positions.forEach((p) => {\n this.replaceIds(p, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.ViewportResize: {\n return false;\n }\n case IncrementalSource.MediaInteraction:\n case IncrementalSource.MouseInteraction:\n case IncrementalSource.Scroll:\n case IncrementalSource.CanvasMutation:\n case IncrementalSource.Input: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n return e2;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleId\"]);\n return e2;\n }\n case IncrementalSource.Font: {\n return e2;\n }\n case IncrementalSource.Selection: {\n e2.data.ranges.forEach((range) => {\n this.replaceIds(range, iframeEl, [\"start\", \"end\"]);\n });\n return e2;\n }\n case IncrementalSource.AdoptedStyleSheet: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleIds\"]);\n (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach((style) => {\n this.replaceStyleIds(style, iframeEl, [\"styleId\"]);\n });\n return e2;\n }\n }\n }\n }\n return false;\n }\n replace(iframeMirror, obj, iframeEl, keys) {\n for (const key of keys) {\n if (!Array.isArray(obj[key]) && typeof obj[key] !== \"number\") continue;\n if (Array.isArray(obj[key])) {\n obj[key] = iframeMirror.getIds(\n iframeEl,\n obj[key]\n );\n } else {\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n }\n }\n return obj;\n }\n replaceIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n }\n replaceStyleIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n }\n replaceIdOnNode(node2, iframeEl) {\n this.replaceIds(node2, iframeEl, [\"id\", \"rootId\"]);\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.replaceIdOnNode(child, iframeEl);\n });\n }\n }\n patchRootIdOnNode(node2, rootId) {\n if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId;\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.patchRootIdOnNode(child, rootId);\n });\n }\n }\n}\nclass ShadowDomManager {\n constructor(options) {\n __publicField(this, \"shadowDoms\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"scrollCb\");\n __publicField(this, \"bypassOptions\");\n __publicField(this, \"mirror\");\n __publicField(this, \"restoreHandlers\", []);\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n this.init();\n }\n init() {\n this.reset();\n this.patchAttachShadow(Element, document);\n }\n addShadowRoot(shadowRoot2, doc) {\n if (!isNativeShadowDom(shadowRoot2)) return;\n if (this.shadowDoms.has(shadowRoot2)) return;\n this.shadowDoms.add(shadowRoot2);\n const observer = initMutationObserver(\n {\n ...this.bypassOptions,\n doc,\n mutationCb: this.mutationCb,\n mirror: this.mirror,\n shadowDomManager: this\n },\n shadowRoot2\n );\n this.restoreHandlers.push(() => observer.disconnect());\n this.restoreHandlers.push(\n initScrollObserver({\n ...this.bypassOptions,\n scrollCb: this.scrollCb,\n // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n doc: shadowRoot2,\n mirror: this.mirror\n })\n );\n setTimeout(() => {\n if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0)\n this.bypassOptions.stylesheetManager.adoptStyleSheets(\n shadowRoot2.adoptedStyleSheets,\n this.mirror.getId(index.host(shadowRoot2))\n );\n this.restoreHandlers.push(\n initAdoptedStyleSheetObserver(\n {\n mirror: this.mirror,\n stylesheetManager: this.bypassOptions.stylesheetManager\n },\n shadowRoot2\n )\n );\n }, 0);\n }\n /**\n * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n */\n observeAttachShadow(iframeElement) {\n if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n this.patchAttachShadow(\n iframeElement.contentWindow.Element,\n iframeElement.contentDocument\n );\n }\n /**\n * Patch 'attachShadow' to observe newly added shadow doms.\n */\n patchAttachShadow(element, doc) {\n const manager = this;\n this.restoreHandlers.push(\n patch(\n element.prototype,\n \"attachShadow\",\n function(original) {\n return function(option) {\n const sRoot = original.call(this, option);\n const shadowRootEl = index.shadowRoot(this);\n if (shadowRootEl && inDom(this))\n manager.addShadowRoot(shadowRootEl, doc);\n return sRoot;\n };\n }\n )\n );\n }\n reset() {\n this.restoreHandlers.forEach((handler) => {\n try {\n handler();\n } catch (e2) {\n }\n });\n this.restoreHandlers = [];\n this.shadowDoms = /* @__PURE__ */ new WeakSet();\n }\n}\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor (var i$1 = 0; i$1 < chars.length; i$1++) {\n lookup[chars.charCodeAt(i$1)] = i$1;\n}\nvar encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\n for (i2 = 0; i2 < len; i2 += 3) {\n base64 += chars[bytes[i2] >> 2];\n base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\n base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\n base64 += chars[bytes[i2 + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n return base64;\n};\nvar decode = function(base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i2, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i2 = 0; i2 < len; i2 += 4) {\n encoded1 = lookup[base64.charCodeAt(i2)];\n encoded2 = lookup[base64.charCodeAt(i2 + 1)];\n encoded3 = lookup[base64.charCodeAt(i2 + 2)];\n encoded4 = lookup[base64.charCodeAt(i2 + 3)];\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n return arraybuffer;\n};\nconst canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor$1(ctx, ctor) {\n let contextMap = canvasVarMap.get(ctx);\n if (!contextMap) {\n contextMap = /* @__PURE__ */ new Map();\n canvasVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nconst saveWebGLVar = (value, win, ctx) => {\n if (!value || !(isInstanceOfWebGLObject(value, win) || typeof value === \"object\"))\n return;\n const name = value.constructor.name;\n const list2 = variableListFor$1(ctx, name);\n let index2 = list2.indexOf(value);\n if (index2 === -1) {\n index2 = list2.length;\n list2.push(value);\n }\n return index2;\n};\nfunction serializeArg(value, win, ctx) {\n if (value instanceof Array) {\n return value.map((arg) => serializeArg(arg, win, ctx));\n } else if (value === null) {\n return value;\n } else if (value instanceof Float32Array || value instanceof Float64Array || value instanceof Int32Array || value instanceof Uint32Array || value instanceof Uint8Array || value instanceof Uint16Array || value instanceof Int16Array || value instanceof Int8Array || value instanceof Uint8ClampedArray) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [Object.values(value)]\n };\n } else if (\n // SharedArrayBuffer disabled on most browsers due to spectre.\n // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n // value instanceof SharedArrayBuffer ||\n value instanceof ArrayBuffer\n ) {\n const name = value.constructor.name;\n const base64 = encode(value);\n return {\n rr_type: name,\n base64\n };\n } else if (value instanceof DataView) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength\n ]\n };\n } else if (value instanceof HTMLImageElement) {\n const name = value.constructor.name;\n const { src } = value;\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof HTMLCanvasElement) {\n const name = \"HTMLImageElement\";\n const src = value.toDataURL();\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof ImageData) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [serializeArg(value.data, win, ctx), value.width, value.height]\n };\n } else if (isInstanceOfWebGLObject(value, win) || typeof value === \"object\") {\n const name = value.constructor.name;\n const index2 = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name,\n index: index2\n };\n }\n return value;\n}\nconst serializeArgs = (args, win, ctx) => {\n return args.map((arg) => serializeArg(arg, win, ctx));\n};\nconst isInstanceOfWebGLObject = (value, win) => {\n const webGLConstructorNames = [\n \"WebGLActiveInfo\",\n \"WebGLBuffer\",\n \"WebGLFramebuffer\",\n \"WebGLProgram\",\n \"WebGLRenderbuffer\",\n \"WebGLShader\",\n \"WebGLShaderPrecisionFormat\",\n \"WebGLTexture\",\n \"WebGLUniformLocation\",\n \"WebGLVertexArrayObject\",\n // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n \"WebGLVertexArrayObjectOES\"\n ];\n const supportedWebGLConstructorNames = webGLConstructorNames.filter(\n (name) => typeof win[name] === \"function\"\n );\n return Boolean(\n supportedWebGLConstructorNames.find(\n (name) => value instanceof win[name]\n )\n );\n};\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n const props2D = Object.getOwnPropertyNames(\n win.CanvasRenderingContext2D.prototype\n );\n for (const prop of props2D) {\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n win.CanvasRenderingContext2D.prototype,\n prop,\n function(original) {\n return function(...args) {\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n setTimeout(() => {\n const recordArgs = serializeArgs(args, win, this);\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: recordArgs\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(\n win.CanvasRenderingContext2D.prototype,\n prop,\n {\n set(v2) {\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: [v2],\n setter: true\n });\n }\n }\n );\n handlers.push(hookHandler);\n }\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction getNormalizedContextName(contextType) {\n return contextType === \"experimental-webgl\" ? \"webgl\" : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\n const handlers = [];\n try {\n const restoreHandler = patch(\n win.HTMLCanvasElement.prototype,\n \"getContext\",\n function(original) {\n return function(contextType, ...args) {\n if (!isBlocked(this, blockClass, blockSelector, true)) {\n const ctxName = getNormalizedContextName(contextType);\n if (!(\"__context\" in this)) this.__context = ctxName;\n if (setPreserveDrawingBufferToTrue && [\"webgl\", \"webgl2\"].includes(ctxName)) {\n if (args[0] && typeof args[0] === \"object\") {\n const contextAttributes = args[0];\n if (!contextAttributes.preserveDrawingBuffer) {\n contextAttributes.preserveDrawingBuffer = true;\n }\n } else {\n args.splice(0, 1, {\n preserveDrawingBuffer: true\n });\n }\n }\n }\n return original.apply(this, [contextType, ...args]);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n console.error(\"failed to patch HTMLCanvasElement.prototype.getContext\");\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) {\n const handlers = [];\n const props = Object.getOwnPropertyNames(prototype);\n for (const prop of props) {\n if (\n //prop.startsWith('get') || // e.g. getProgramParameter, but too risky\n [\n \"isContextLost\",\n \"canvas\",\n \"drawingBufferWidth\",\n \"drawingBufferHeight\"\n ].includes(prop)\n ) {\n continue;\n }\n try {\n if (typeof prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n prototype,\n prop,\n function(original) {\n return function(...args) {\n const result2 = original.apply(this, args);\n saveWebGLVar(result2, win, this);\n if (\"tagName\" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) {\n const recordArgs = serializeArgs(args, win, this);\n const mutation = {\n type,\n property: prop,\n args: recordArgs\n };\n cb(this.canvas, mutation);\n }\n return result2;\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(prototype, prop, {\n set(v2) {\n cb(this.canvas, {\n type,\n property: prop,\n args: [v2],\n setter: true\n });\n }\n });\n handlers.push(hookHandler);\n }\n }\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n handlers.push(\n ...patchGLPrototype(\n win.WebGLRenderingContext.prototype,\n CanvasContext.WebGL,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n if (typeof win.WebGL2RenderingContext !== \"undefined\") {\n handlers.push(\n ...patchGLPrototype(\n win.WebGL2RenderingContext.prototype,\n CanvasContext.WebGL2,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nconst encodedJs = \"KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=\";\nconst decodeBase64 = (base64) => Uint8Array.from(atob(base64), (c2) => c2.charCodeAt(0));\nconst blob = typeof window !== \"undefined\" && window.Blob && new Blob([decodeBase64(encodedJs)], { type: \"text/javascript;charset=utf-8\" });\nfunction WorkerWrapper(options) {\n let objURL;\n try {\n objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);\n if (!objURL) throw \"\";\n const worker = new Worker(objURL, {\n name: options == null ? void 0 : options.name\n });\n worker.addEventListener(\"error\", () => {\n (window.URL || window.webkitURL).revokeObjectURL(objURL);\n });\n return worker;\n } catch (e2) {\n return new Worker(\n \"data:text/javascript;base64,\" + encodedJs,\n {\n name: options == null ? void 0 : options.name\n }\n );\n } finally {\n objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);\n }\n}\nclass CanvasManager {\n constructor(options) {\n __publicField(this, \"pendingCanvasMutations\", /* @__PURE__ */ new Map());\n __publicField(this, \"rafStamps\", { latestId: 0, invokeId: null });\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"resetObservers\");\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"processMutation\", (target, mutation) => {\n const newFrame = this.rafStamps.invokeId && this.rafStamps.latestId !== this.rafStamps.invokeId;\n if (newFrame || !this.rafStamps.invokeId)\n this.rafStamps.invokeId = this.rafStamps.latestId;\n if (!this.pendingCanvasMutations.has(target)) {\n this.pendingCanvasMutations.set(target, []);\n }\n this.pendingCanvasMutations.get(target).push(mutation);\n });\n const {\n sampling = \"all\",\n win,\n blockClass,\n blockSelector,\n recordCanvas,\n dataURLOptions\n } = options;\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (recordCanvas && sampling === \"all\")\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\n if (recordCanvas && typeof sampling === \"number\")\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n dataURLOptions\n });\n }\n reset() {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n }\n freeze() {\n this.frozen = true;\n }\n unfreeze() {\n this.frozen = false;\n }\n lock() {\n this.locked = true;\n }\n unlock() {\n this.locked = false;\n }\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n true\n );\n const snapshotInProgressMap = /* @__PURE__ */ new Map();\n const worker = new WorkerWrapper();\n worker.onmessage = (e2) => {\n const { id } = e2.data;\n snapshotInProgressMap.set(id, false);\n if (!(\"base64\" in e2.data)) return;\n const { base64, type, width, height } = e2.data;\n this.mutationCb({\n id,\n type: CanvasContext[\"2D\"],\n commands: [\n {\n property: \"clearRect\",\n // wipe canvas\n args: [0, 0, width, height]\n },\n {\n property: \"drawImage\",\n // draws (semi-transparent) image\n args: [\n {\n rr_type: \"ImageBitmap\",\n args: [\n {\n rr_type: \"Blob\",\n data: [{ rr_type: \"ArrayBuffer\", base64 }],\n type\n }\n ]\n },\n 0,\n 0\n ]\n }\n ]\n });\n };\n const timeBetweenSnapshots = 1e3 / fps;\n let lastSnapshotTime = 0;\n let rafId;\n const getCanvas = () => {\n const matchedCanvas = [];\n win.document.querySelectorAll(\"canvas\").forEach((canvas) => {\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n matchedCanvas.push(canvas);\n }\n });\n return matchedCanvas;\n };\n const takeCanvasSnapshots = (timestamp) => {\n if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n return;\n }\n lastSnapshotTime = timestamp;\n getCanvas().forEach(async (canvas) => {\n var _a2;\n const id = this.mirror.getId(canvas);\n if (snapshotInProgressMap.get(id)) return;\n if (canvas.width === 0 || canvas.height === 0) return;\n snapshotInProgressMap.set(id, true);\n if ([\"webgl\", \"webgl2\"].includes(canvas.__context)) {\n const context = canvas.getContext(canvas.__context);\n if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) {\n context.clear(context.COLOR_BUFFER_BIT);\n }\n }\n const bitmap = await createImageBitmap(canvas);\n worker.postMessage(\n {\n id,\n bitmap,\n width: canvas.width,\n height: canvas.height,\n dataURLOptions: options.dataURLOptions\n },\n [bitmap]\n );\n });\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n };\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n this.resetObservers = () => {\n canvasContextReset();\n cancelAnimationFrame(rafId);\n };\n }\n initCanvasMutationObserver(win, blockClass, blockSelector) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n false\n );\n const canvas2DReset = initCanvas2DMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n this.resetObservers = () => {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n }\n startPendingCanvasMutationFlusher() {\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n startRAFTimestamping() {\n const setLatestRAFTimestamp = (timestamp) => {\n this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n }\n flushPendingCanvasMutations() {\n this.pendingCanvasMutations.forEach(\n (_values, canvas) => {\n const id = this.mirror.getId(canvas);\n this.flushPendingCanvasMutationFor(canvas, id);\n }\n );\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n flushPendingCanvasMutationFor(canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1) return;\n const values = valuesWithType.map((value) => {\n const { type: type2, ...rest } = value;\n return rest;\n });\n const { type } = valuesWithType[0];\n this.mutationCb({ id, type, commands: values });\n this.pendingCanvasMutations.delete(canvas);\n }\n}\nclass StylesheetManager {\n constructor(options) {\n __publicField(this, \"trackedLinkElements\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"adoptedStyleSheetCb\");\n __publicField(this, \"styleMirror\", new StyleSheetMirror());\n this.mutationCb = options.mutationCb;\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n }\n attachLinkElement(linkEl, childSn) {\n if (\"_cssText\" in childSn.attributes)\n this.mutationCb({\n adds: [],\n removes: [],\n texts: [],\n attributes: [\n {\n id: childSn.id,\n attributes: childSn.attributes\n }\n ]\n });\n this.trackLinkElement(linkEl);\n }\n trackLinkElement(linkEl) {\n if (this.trackedLinkElements.has(linkEl)) return;\n this.trackedLinkElements.add(linkEl);\n this.trackStylesheetInLinkElement(linkEl);\n }\n adoptStyleSheets(sheets, hostId) {\n if (sheets.length === 0) return;\n const adoptedStyleSheetData = {\n id: hostId,\n styleIds: []\n };\n const styles = [];\n for (const sheet of sheets) {\n let styleId;\n if (!this.styleMirror.has(sheet)) {\n styleId = this.styleMirror.add(sheet);\n styles.push({\n styleId,\n rules: Array.from(sheet.rules || CSSRule, (r2, index2) => ({\n rule: stringifyRule(r2, sheet.href),\n index: index2\n }))\n });\n } else styleId = this.styleMirror.getId(sheet);\n adoptedStyleSheetData.styleIds.push(styleId);\n }\n if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\n }\n reset() {\n this.styleMirror.reset();\n this.trackedLinkElements = /* @__PURE__ */ new WeakSet();\n }\n // TODO: take snapshot on stylesheet reload by applying event listener\n trackStylesheetInLinkElement(_linkEl) {\n }\n}\nclass ProcessedNodeManager {\n constructor() {\n __publicField(this, \"nodeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"active\", false);\n }\n inOtherBuffer(node2, thisBuffer) {\n const buffers = this.nodeMap.get(node2);\n return buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer);\n }\n add(node2, buffer) {\n if (!this.active) {\n this.active = true;\n requestAnimationFrame(() => {\n this.nodeMap = /* @__PURE__ */ new WeakMap();\n this.active = false;\n });\n }\n this.nodeMap.set(node2, (this.nodeMap.get(node2) || /* @__PURE__ */ new Set()).add(buffer));\n }\n destroy() {\n }\n}\nlet wrappedEmit;\nlet takeFullSnapshot$1;\nlet canvasManager;\nlet recording = false;\ntry {\n if (Array.from([1], (x2) => x2 * 2)[0] !== 2) {\n const cleanFrame = document.createElement(\"iframe\");\n document.body.appendChild(cleanFrame);\n Array.from = ((_a = cleanFrame.contentWindow) == null ? void 0 : _a.Array.from) || Array.from;\n document.body.removeChild(cleanFrame);\n }\n} catch (err) {\n console.debug(\"Unable to override Array.from\", err);\n}\nconst mirror = createMirror$2();\nfunction record(options = {}) {\n const {\n emit,\n checkoutEveryNms,\n checkoutEveryNth,\n blockClass = \"rr-block\",\n blockSelector = null,\n ignoreClass = \"rr-ignore\",\n ignoreSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n maskAllInputs,\n maskInputOptions: _maskInputOptions,\n slimDOMOptions: _slimDOMOptions,\n maskInputFn,\n maskTextFn,\n hooks,\n packFn,\n sampling = {},\n dataURLOptions = {},\n mousemoveWait,\n recordDOM = true,\n recordCanvas = false,\n recordCrossOriginIframes = false,\n recordAfter = options.recordAfter === \"DOMContentLoaded\" ? options.recordAfter : \"load\",\n userTriggeredOnInput = false,\n collectFonts = false,\n inlineImages = false,\n plugins,\n keepIframeSrcFn = () => false,\n ignoreCSSAttributes = /* @__PURE__ */ new Set([]),\n errorHandler: errorHandler2\n } = options;\n registerErrorHandler(errorHandler2);\n const inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true;\n let passEmitsToParent = false;\n if (!inEmittingFrame) {\n try {\n if (window.parent.document) {\n passEmitsToParent = false;\n }\n } catch (e2) {\n passEmitsToParent = true;\n }\n }\n if (inEmittingFrame && !emit) {\n throw new Error(\"emit function is required\");\n }\n if (!inEmittingFrame && !passEmitsToParent) {\n return () => {\n };\n }\n if (mousemoveWait !== void 0 && sampling.mousemove === void 0) {\n sampling.mousemove = mousemoveWait;\n }\n mirror.reset();\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : _maskInputOptions !== void 0 ? _maskInputOptions : { password: true };\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === \"all\" ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n // the following are off for slimDOMOptions === true,\n // as they destroy some (hidden) info:\n headMetaAuthorship: _slimDOMOptions === \"all\",\n headMetaDescKeywords: _slimDOMOptions === \"all\",\n headTitleMutations: _slimDOMOptions === \"all\"\n } : _slimDOMOptions ? _slimDOMOptions : {};\n polyfill$1();\n let lastFullSnapshotEvent;\n let incrementalSnapshotCount = 0;\n const eventProcessor = (e2) => {\n for (const plugin3 of plugins || []) {\n if (plugin3.eventProcessor) {\n e2 = plugin3.eventProcessor(e2);\n }\n }\n if (packFn && // Disable packing events which will be emitted to parent frames.\n !passEmitsToParent) {\n e2 = packFn(e2);\n }\n return e2;\n };\n wrappedEmit = (r2, isCheckout) => {\n var _a2;\n const e2 = r2;\n e2.timestamp = nowTimestamp();\n if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach((buf) => buf.unfreeze());\n }\n if (inEmittingFrame) {\n emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);\n } else if (passEmitsToParent) {\n const message = {\n type: \"rrweb\",\n event: eventProcessor(e2),\n origin: window.location.origin,\n isCheckout\n };\n window.parent.postMessage(message, \"*\");\n }\n if (e2.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e2;\n incrementalSnapshotCount = 0;\n } else if (e2.type === EventType.IncrementalSnapshot) {\n if (e2.data.source === IncrementalSource.Mutation && e2.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n const exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot$1(true);\n }\n }\n };\n const wrappedMutationEmit = (m) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n ...m\n }\n });\n };\n const wrappedScrollEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Scroll,\n ...p\n }\n });\n const wrappedCanvasMutationEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CanvasMutation,\n ...p\n }\n });\n const wrappedAdoptedStyleSheetEmit = (a2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.AdoptedStyleSheet,\n ...a2\n }\n });\n const stylesheetManager = new StylesheetManager({\n mutationCb: wrappedMutationEmit,\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit\n });\n const iframeManager = new IframeManager({\n mirror,\n mutationCb: wrappedMutationEmit,\n stylesheetManager,\n recordCrossOriginIframes,\n wrappedEmit\n });\n for (const plugin3 of plugins || []) {\n if (plugin3.getMirror)\n plugin3.getMirror({\n nodeMirror: mirror,\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror\n });\n }\n const processedNodeManager = new ProcessedNodeManager();\n canvasManager = new CanvasManager({\n recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass,\n blockSelector,\n mirror,\n sampling: sampling.canvas,\n dataURLOptions\n });\n const shadowDomManager = new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskInputOptions,\n dataURLOptions,\n maskTextFn,\n maskInputFn,\n recordCanvas,\n inlineImages,\n sampling,\n slimDOMOptions,\n iframeManager,\n stylesheetManager,\n canvasManager,\n keepIframeSrcFn,\n processedNodeManager\n },\n mirror\n });\n takeFullSnapshot$1 = (isCheckout = false) => {\n if (!recordDOM) {\n return;\n }\n wrappedEmit(\n {\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight()\n }\n },\n isCheckout\n );\n stylesheetManager.reset();\n shadowDomManager.init();\n mutationBuffers.forEach((buf) => buf.lock());\n const node2 = snapshot(document, {\n mirror,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOM: slimDOMOptions,\n dataURLOptions,\n recordCanvas,\n inlineImages,\n onSerialize: (n2) => {\n if (isSerializedIframe(n2, mirror)) {\n iframeManager.addIframe(n2);\n }\n if (isSerializedStylesheet(n2, mirror)) {\n stylesheetManager.trackLinkElement(n2);\n }\n if (hasShadowRoot(n2)) {\n shadowDomManager.addShadowRoot(index.shadowRoot(n2), document);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (linkEl, childSn) => {\n stylesheetManager.attachLinkElement(linkEl, childSn);\n },\n keepIframeSrcFn\n });\n if (!node2) {\n return console.warn(\"Failed to snapshot the document\");\n }\n wrappedEmit(\n {\n type: EventType.FullSnapshot,\n data: {\n node: node2,\n initialOffset: getWindowScroll(window)\n }\n },\n isCheckout\n );\n mutationBuffers.forEach((buf) => buf.unlock());\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n stylesheetManager.adoptStyleSheets(\n document.adoptedStyleSheets,\n mirror.getId(document)\n );\n };\n try {\n const handlers = [];\n const observe = (doc) => {\n var _a2;\n return callbackWrapper(initObservers)(\n {\n mutationCb: wrappedMutationEmit,\n mousemoveCb: (positions, source) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source,\n positions\n }\n }),\n mouseInteractionCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MouseInteraction,\n ...d\n }\n }),\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.ViewportResize,\n ...d\n }\n }),\n inputCb: (v2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Input,\n ...v2\n }\n }),\n mediaInteractionCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MediaInteraction,\n ...p\n }\n }),\n styleSheetRuleCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleSheetRule,\n ...r2\n }\n }),\n styleDeclarationCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleDeclaration,\n ...r2\n }\n }),\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Font,\n ...p\n }\n }),\n selectionCb: (p) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Selection,\n ...p\n }\n });\n },\n customElementCb: (c2) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CustomElement,\n ...c2\n }\n });\n },\n blockClass,\n ignoreClass,\n ignoreSelector,\n maskTextClass,\n maskTextSelector,\n maskInputOptions,\n inlineStylesheet,\n sampling,\n recordDOM,\n recordCanvas,\n inlineImages,\n userTriggeredOnInput,\n collectFonts,\n doc,\n maskInputFn,\n maskTextFn,\n keepIframeSrcFn,\n blockSelector,\n slimDOMOptions,\n dataURLOptions,\n mirror,\n iframeManager,\n stylesheetManager,\n shadowDomManager,\n processedNodeManager,\n canvasManager,\n ignoreCSSAttributes,\n plugins: ((_a2 = plugins == null ? void 0 : plugins.filter((p) => p.observer)) == null ? void 0 : _a2.map((p) => ({\n observer: p.observer,\n options: p.options,\n callback: (payload) => wrappedEmit({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload\n }\n })\n }))) || []\n },\n hooks\n );\n };\n iframeManager.addLoadListener((iframeEl) => {\n try {\n handlers.push(observe(iframeEl.contentDocument));\n } catch (error) {\n console.warn(error);\n }\n });\n const init = () => {\n takeFullSnapshot$1();\n handlers.push(observe(document));\n recording = true;\n };\n if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n init();\n } else {\n handlers.push(\n on(\"DOMContentLoaded\", () => {\n wrappedEmit({\n type: EventType.DomContentLoaded,\n data: {}\n });\n if (recordAfter === \"DOMContentLoaded\") init();\n })\n );\n handlers.push(\n on(\n \"load\",\n () => {\n wrappedEmit({\n type: EventType.Load,\n data: {}\n });\n if (recordAfter === \"load\") init();\n },\n window\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n processedNodeManager.destroy();\n recording = false;\n unregisterErrorHandler();\n };\n } catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = (tag, payload) => {\n if (!recording) {\n throw new Error(\"please add custom event after start recording\");\n }\n wrappedEmit({\n type: EventType.Custom,\n data: {\n tag,\n payload\n }\n });\n};\nrecord.freezePage = () => {\n mutationBuffers.forEach((buf) => buf.freeze());\n};\nrecord.takeFullSnapshot = (isCheckout) => {\n if (!recording) {\n throw new Error(\"please take full snapshot after start recording\");\n }\n takeFullSnapshot$1(isCheckout);\n};\nrecord.mirror = mirror;\nfunction mitt$1(n2) {\n return { all: n2 = n2 || /* @__PURE__ */ new Map(), on: function(t2, e2) {\n var i2 = n2.get(t2);\n i2 ? i2.push(e2) : n2.set(t2, [e2]);\n }, off: function(t2, e2) {\n var i2 = n2.get(t2);\n i2 && (e2 ? i2.splice(i2.indexOf(e2) >>> 0, 1) : n2.set(t2, []));\n }, emit: function(t2, e2) {\n var i2 = n2.get(t2);\n i2 && i2.slice().map(function(n3) {\n n3(e2);\n }), (i2 = n2.get(\"*\")) && i2.slice().map(function(n3) {\n n3(t2, e2);\n });\n } };\n}\nconst mittProxy = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: mitt$1\n}, Symbol.toStringTag, { value: \"Module\" }));\nfunction polyfill(w = window, d = document) {\n if (\"scrollBehavior\" in d.documentElement.style && w.__forceSmoothScrollPolyfill__ !== true) {\n return;\n }\n const Element2 = w.HTMLElement || w.Element;\n const SCROLL_TIME = 468;\n const original = {\n scroll: w.scroll || w.scrollTo,\n scrollBy: w.scrollBy,\n elementScroll: Element2.prototype.scroll || scrollElement,\n scrollIntoView: Element2.prototype.scrollIntoView\n };\n const now = w.performance && w.performance.now ? w.performance.now.bind(w.performance) : Date.now;\n function isMicrosoftBrowser(userAgent) {\n const userAgentPatterns = [\"MSIE \", \"Trident/\", \"Edge/\"];\n return new RegExp(userAgentPatterns.join(\"|\")).test(userAgent);\n }\n const ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n function scrollElement(x2, y) {\n this.scrollLeft = x2;\n this.scrollTop = y;\n }\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n function shouldBailOut(firstArg) {\n if (firstArg === null || typeof firstArg !== \"object\" || firstArg.behavior === void 0 || firstArg.behavior === \"auto\" || firstArg.behavior === \"instant\") {\n return true;\n }\n if (typeof firstArg === \"object\" && firstArg.behavior === \"smooth\") {\n return false;\n }\n throw new TypeError(\n \"behavior member of ScrollOptions \" + firstArg.behavior + \" is not a valid value for enumeration ScrollBehavior.\"\n );\n }\n function hasScrollableSpace(el, axis) {\n if (axis === \"Y\") {\n return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n }\n if (axis === \"X\") {\n return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n }\n }\n function canOverflow(el, axis) {\n const overflowValue = w.getComputedStyle(el, null)[\"overflow\" + axis];\n return overflowValue === \"auto\" || overflowValue === \"scroll\";\n }\n function isScrollable(el) {\n const isScrollableY = hasScrollableSpace(el, \"Y\") && canOverflow(el, \"Y\");\n const isScrollableX = hasScrollableSpace(el, \"X\") && canOverflow(el, \"X\");\n return isScrollableY || isScrollableX;\n }\n function findScrollableParent(el) {\n while (el !== d.body && isScrollable(el) === false) {\n el = el.parentNode || el.host;\n }\n return el;\n }\n function step(context) {\n const time = now();\n let value;\n let currentX;\n let currentY;\n let elapsed = (time - context.startTime) / SCROLL_TIME;\n elapsed = elapsed > 1 ? 1 : elapsed;\n value = ease(elapsed);\n currentX = context.startX + (context.x - context.startX) * value;\n currentY = context.startY + (context.y - context.startY) * value;\n context.method.call(context.scrollable, currentX, currentY);\n if (currentX !== context.x || currentY !== context.y) {\n w.requestAnimationFrame(step.bind(w, context));\n }\n }\n function smoothScroll(el, x2, y) {\n let scrollable;\n let startX;\n let startY;\n let method;\n const startTime = now();\n if (el === d.body) {\n scrollable = w;\n startX = w.scrollX || w.pageXOffset;\n startY = w.scrollY || w.pageYOffset;\n method = original.scroll;\n } else {\n scrollable = el;\n startX = el.scrollLeft;\n startY = el.scrollTop;\n method = scrollElement;\n }\n step({\n scrollable,\n method,\n startTime,\n startX,\n startY,\n x: x2,\n y\n });\n }\n w.scroll = w.scrollTo = function() {\n if (arguments[0] === void 0) {\n return;\n }\n if (shouldBailOut(arguments[0]) === true) {\n original.scroll.call(\n w,\n arguments[0].left !== void 0 ? arguments[0].left : typeof arguments[0] !== \"object\" ? arguments[0] : w.scrollX || w.pageXOffset,\n // use top prop, second argument if present or fallback to scrollY\n arguments[0].top !== void 0 ? arguments[0].top : arguments[1] !== void 0 ? arguments[1] : w.scrollY || w.pageYOffset\n );\n return;\n }\n smoothScroll.call(\n w,\n d.body,\n arguments[0].left !== void 0 ? ~~arguments[0].left : w.scrollX || w.pageXOffset,\n arguments[0].top !== void 0 ? ~~arguments[0].top : w.scrollY || w.pageYOffset\n );\n };\n w.scrollBy = function() {\n if (arguments[0] === void 0) {\n return;\n }\n if (shouldBailOut(arguments[0])) {\n original.scrollBy.call(\n w,\n arguments[0].left !== void 0 ? arguments[0].left : typeof arguments[0] !== \"object\" ? arguments[0] : 0,\n arguments[0].top !== void 0 ? arguments[0].top : arguments[1] !== void 0 ? arguments[1] : 0\n );\n return;\n }\n smoothScroll.call(\n w,\n d.body,\n ~~arguments[0].left + (w.scrollX || w.pageXOffset),\n ~~arguments[0].top + (w.scrollY || w.pageYOffset)\n );\n };\n Element2.prototype.scroll = Element2.prototype.scrollTo = function() {\n if (arguments[0] === void 0) {\n return;\n }\n if (shouldBailOut(arguments[0]) === true) {\n if (typeof arguments[0] === \"number\" && arguments[1] === void 0) {\n throw new SyntaxError(\"Value could not be converted\");\n }\n original.elementScroll.call(\n this,\n // use left prop, first number argument or fallback to scrollLeft\n arguments[0].left !== void 0 ? ~~arguments[0].left : typeof arguments[0] !== \"object\" ? ~~arguments[0] : this.scrollLeft,\n // use top prop, second argument or fallback to scrollTop\n arguments[0].top !== void 0 ? ~~arguments[0].top : arguments[1] !== void 0 ? ~~arguments[1] : this.scrollTop\n );\n return;\n }\n const left = arguments[0].left;\n const top = arguments[0].top;\n smoothScroll.call(\n this,\n this,\n typeof left === \"undefined\" ? this.scrollLeft : ~~left,\n typeof top === \"undefined\" ? this.scrollTop : ~~top\n );\n };\n Element2.prototype.scrollBy = function() {\n if (arguments[0] === void 0) {\n return;\n }\n if (shouldBailOut(arguments[0]) === true) {\n original.elementScroll.call(\n this,\n arguments[0].left !== void 0 ? ~~arguments[0].left + this.scrollLeft : ~~arguments[0] + this.scrollLeft,\n arguments[0].top !== void 0 ? ~~arguments[0].top + this.scrollTop : ~~arguments[1] + this.scrollTop\n );\n return;\n }\n this.scroll({\n left: ~~arguments[0].left + this.scrollLeft,\n top: ~~arguments[0].top + this.scrollTop,\n behavior: arguments[0].behavior\n });\n };\n Element2.prototype.scrollIntoView = function() {\n if (shouldBailOut(arguments[0]) === true) {\n original.scrollIntoView.call(\n this,\n arguments[0] === void 0 ? true : arguments[0]\n );\n return;\n }\n const scrollableParent = findScrollableParent(this);\n const parentRects = scrollableParent.getBoundingClientRect();\n const clientRects = this.getBoundingClientRect();\n if (scrollableParent !== d.body) {\n smoothScroll.call(\n this,\n scrollableParent,\n scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n scrollableParent.scrollTop + clientRects.top - parentRects.top\n );\n if (w.getComputedStyle(scrollableParent).position !== \"fixed\") {\n w.scrollBy({\n left: parentRects.left,\n top: parentRects.top,\n behavior: \"smooth\"\n });\n }\n } else {\n w.scrollBy({\n left: clientRects.left,\n top: clientRects.top,\n behavior: \"smooth\"\n });\n }\n };\n}\nclass Timer {\n constructor(actions = [], config) {\n __publicField(this, \"timeOffset\", 0);\n __publicField(this, \"speed\");\n __publicField(this, \"actions\");\n __publicField(this, \"raf\", null);\n __publicField(this, \"lastTimestamp\");\n this.actions = actions;\n this.speed = config.speed;\n }\n /**\n * Add an action, possibly after the timer starts.\n */\n addAction(action) {\n const rafWasActive = this.raf === true;\n if (!this.actions.length || this.actions[this.actions.length - 1].delay <= action.delay) {\n this.actions.push(action);\n } else {\n const index2 = this.findActionIndex(action);\n this.actions.splice(index2, 0, action);\n }\n if (rafWasActive) {\n this.raf = requestAnimationFrame(this.rafCheck.bind(this));\n }\n }\n start() {\n this.timeOffset = 0;\n this.lastTimestamp = performance.now();\n this.raf = requestAnimationFrame(this.rafCheck.bind(this));\n }\n rafCheck() {\n const time = performance.now();\n this.timeOffset += (time - this.lastTimestamp) * this.speed;\n this.lastTimestamp = time;\n while (this.actions.length) {\n const action = this.actions[0];\n if (this.timeOffset >= action.delay) {\n this.actions.shift();\n action.doAction();\n } else {\n break;\n }\n }\n if (this.actions.length > 0) {\n this.raf = requestAnimationFrame(this.rafCheck.bind(this));\n } else {\n this.raf = true;\n }\n }\n clear() {\n if (this.raf) {\n if (this.raf !== true) {\n cancelAnimationFrame(this.raf);\n }\n this.raf = null;\n }\n this.actions.length = 0;\n }\n setSpeed(speed) {\n this.speed = speed;\n }\n isActive() {\n return this.raf !== null;\n }\n findActionIndex(action) {\n let start = 0;\n let end = this.actions.length - 1;\n while (start <= end) {\n const mid = Math.floor((start + end) / 2);\n if (this.actions[mid].delay < action.delay) {\n start = mid + 1;\n } else if (this.actions[mid].delay > action.delay) {\n end = mid - 1;\n } else {\n return mid + 1;\n }\n }\n return start;\n }\n}\nfunction addDelay(event, baselineTime) {\n if (event.type === EventType.IncrementalSnapshot && event.data.source === IncrementalSource.MouseMove && event.data.positions && event.data.positions.length) {\n const firstOffset = event.data.positions[0].timeOffset;\n const firstTimestamp = event.timestamp + firstOffset;\n event.delay = firstTimestamp - baselineTime;\n return firstTimestamp - baselineTime;\n }\n event.delay = event.timestamp - baselineTime;\n return event.delay;\n}\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nfunction t(t2, n2) {\n var e2 = \"function\" == typeof Symbol && t2[Symbol.iterator];\n if (!e2) return t2;\n var r2, o2, i2 = e2.call(t2), a2 = [];\n try {\n for (; (void 0 === n2 || n2-- > 0) && !(r2 = i2.next()).done; ) a2.push(r2.value);\n } catch (t3) {\n o2 = { error: t3 };\n } finally {\n try {\n r2 && !r2.done && (e2 = i2.return) && e2.call(i2);\n } finally {\n if (o2) throw o2.error;\n }\n }\n return a2;\n}\nvar n;\n!function(t2) {\n t2[t2.NotStarted = 0] = \"NotStarted\", t2[t2.Running = 1] = \"Running\", t2[t2.Stopped = 2] = \"Stopped\";\n}(n || (n = {}));\nvar e = { type: \"xstate.init\" };\nfunction r(t2) {\n return void 0 === t2 ? [] : [].concat(t2);\n}\nfunction o(t2) {\n return { type: \"xstate.assign\", assignment: t2 };\n}\nfunction i(t2, n2) {\n return \"string\" == typeof (t2 = \"string\" == typeof t2 && n2 && n2[t2] ? n2[t2] : t2) ? { type: t2 } : \"function\" == typeof t2 ? { type: t2.name, exec: t2 } : t2;\n}\nfunction a(t2) {\n return function(n2) {\n return t2 === n2;\n };\n}\nfunction u(t2) {\n return \"string\" == typeof t2 ? { type: t2 } : t2;\n}\nfunction c(t2, n2) {\n return { value: t2, context: n2, actions: [], changed: false, matches: a(t2) };\n}\nfunction f(t2, n2, e2) {\n var r2 = n2, o2 = false;\n return [t2.filter(function(t3) {\n if (\"xstate.assign\" === t3.type) {\n o2 = true;\n var n3 = Object.assign({}, r2);\n return \"function\" == typeof t3.assignment ? n3 = t3.assignment(r2, e2) : Object.keys(t3.assignment).forEach(function(o3) {\n n3[o3] = \"function\" == typeof t3.assignment[o3] ? t3.assignment[o3](r2, e2) : t3.assignment[o3];\n }), r2 = n3, false;\n }\n return true;\n }), r2, o2];\n}\nfunction s(n2, o2) {\n void 0 === o2 && (o2 = {});\n var s2 = t(f(r(n2.states[n2.initial].entry).map(function(t2) {\n return i(t2, o2.actions);\n }), n2.context, e), 2), l2 = s2[0], v2 = s2[1], y = { config: n2, _options: o2, initialState: { value: n2.initial, actions: l2, context: v2, matches: a(n2.initial) }, transition: function(e2, o3) {\n var s3, l3, v3 = \"string\" == typeof e2 ? { value: e2, context: n2.context } : e2, p = v3.value, g = v3.context, d = u(o3), x2 = n2.states[p];\n if (x2.on) {\n var m = r(x2.on[d.type]);\n try {\n for (var h = function(t2) {\n var n3 = \"function\" == typeof Symbol && Symbol.iterator, e3 = n3 && t2[n3], r2 = 0;\n if (e3) return e3.call(t2);\n if (t2 && \"number\" == typeof t2.length) return { next: function() {\n return t2 && r2 >= t2.length && (t2 = void 0), { value: t2 && t2[r2++], done: !t2 };\n } };\n throw new TypeError(n3 ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n }(m), b = h.next(); !b.done; b = h.next()) {\n var S = b.value;\n if (void 0 === S) return c(p, g);\n var w = \"string\" == typeof S ? { target: S } : S, j = w.target, E = w.actions, R = void 0 === E ? [] : E, N = w.cond, O = void 0 === N ? function() {\n return true;\n } : N, _ = void 0 === j, k = null != j ? j : p, T = n2.states[k];\n if (O(g, d)) {\n var q = t(f((_ ? r(R) : [].concat(x2.exit, R, T.entry).filter(function(t2) {\n return t2;\n })).map(function(t2) {\n return i(t2, y._options.actions);\n }), g, d), 3), z = q[0], A = q[1], B = q[2], C = null != j ? j : p;\n return { value: C, context: A, actions: z, changed: j !== p || z.length > 0 || B, matches: a(C) };\n }\n }\n } catch (t2) {\n s3 = { error: t2 };\n } finally {\n try {\n b && !b.done && (l3 = h.return) && l3.call(h);\n } finally {\n if (s3) throw s3.error;\n }\n }\n }\n return c(p, g);\n } };\n return y;\n}\nvar l = function(t2, n2) {\n return t2.actions.forEach(function(e2) {\n var r2 = e2.exec;\n return r2 && r2(t2.context, n2);\n });\n};\nfunction v(t2) {\n var r2 = t2.initialState, o2 = n.NotStarted, i2 = /* @__PURE__ */ new Set(), c2 = { _machine: t2, send: function(e2) {\n o2 === n.Running && (r2 = t2.transition(r2, e2), l(r2, u(e2)), i2.forEach(function(t3) {\n return t3(r2);\n }));\n }, subscribe: function(t3) {\n return i2.add(t3), t3(r2), { unsubscribe: function() {\n return i2.delete(t3);\n } };\n }, start: function(i3) {\n if (i3) {\n var u2 = \"object\" == typeof i3 ? i3 : { context: t2.config.context, value: i3 };\n r2 = { value: u2.value, actions: [], context: u2.context, matches: a(u2.value) };\n }\n return o2 = n.Running, l(r2, e), c2;\n }, stop: function() {\n return o2 = n.Stopped, i2.clear(), c2;\n }, get state() {\n return r2;\n }, get status() {\n return o2;\n } };\n return c2;\n}\nfunction discardPriorSnapshots(events, baselineTime) {\n for (let idx = events.length - 1; idx >= 0; idx--) {\n const event = events[idx];\n if (event.type === EventType.Meta) {\n if (event.timestamp <= baselineTime) {\n return events.slice(idx);\n }\n }\n }\n return events;\n}\nfunction createPlayerService(context, { getCastFn, applyEventsSynchronously, emitter }) {\n const playerMachine = s(\n {\n id: \"player\",\n context,\n initial: \"paused\",\n states: {\n playing: {\n on: {\n PAUSE: {\n target: \"paused\",\n actions: [\"pause\"]\n },\n CAST_EVENT: {\n target: \"playing\",\n actions: \"castEvent\"\n },\n END: {\n target: \"paused\",\n actions: [\"resetLastPlayedEvent\", \"pause\"]\n },\n ADD_EVENT: {\n target: \"playing\",\n actions: [\"addEvent\"]\n }\n }\n },\n paused: {\n on: {\n PLAY: {\n target: \"playing\",\n actions: [\"recordTimeOffset\", \"play\"]\n },\n CAST_EVENT: {\n target: \"paused\",\n actions: \"castEvent\"\n },\n TO_LIVE: {\n target: \"live\",\n actions: [\"startLive\"]\n },\n ADD_EVENT: {\n target: \"paused\",\n actions: [\"addEvent\"]\n }\n }\n },\n live: {\n on: {\n ADD_EVENT: {\n target: \"live\",\n actions: [\"addEvent\"]\n },\n CAST_EVENT: {\n target: \"live\",\n actions: [\"castEvent\"]\n }\n }\n }\n }\n },\n {\n actions: {\n castEvent: o({\n lastPlayedEvent: (ctx, event) => {\n if (event.type === \"CAST_EVENT\") {\n return event.payload.event;\n }\n return ctx.lastPlayedEvent;\n }\n }),\n recordTimeOffset: o((ctx, event) => {\n let timeOffset = ctx.timeOffset;\n if (\"payload\" in event && \"timeOffset\" in event.payload) {\n timeOffset = event.payload.timeOffset;\n }\n return {\n ...ctx,\n timeOffset,\n baselineTime: ctx.events[0].timestamp + timeOffset\n };\n }),\n play(ctx) {\n var _a2;\n const { timer, events, baselineTime, lastPlayedEvent } = ctx;\n timer.clear();\n for (const event of events) {\n addDelay(event, baselineTime);\n }\n const neededEvents = discardPriorSnapshots(events, baselineTime);\n let lastPlayedTimestamp = lastPlayedEvent == null ? void 0 : lastPlayedEvent.timestamp;\n if ((lastPlayedEvent == null ? void 0 : lastPlayedEvent.type) === EventType.IncrementalSnapshot && lastPlayedEvent.data.source === IncrementalSource.MouseMove) {\n lastPlayedTimestamp = lastPlayedEvent.timestamp + ((_a2 = lastPlayedEvent.data.positions[0]) == null ? void 0 : _a2.timeOffset);\n }\n if (baselineTime < (lastPlayedTimestamp || 0)) {\n emitter.emit(ReplayerEvents.PlayBack);\n }\n const syncEvents = new Array();\n for (const event of neededEvents) {\n if (lastPlayedTimestamp && lastPlayedTimestamp < baselineTime && (event.timestamp <= lastPlayedTimestamp || event === lastPlayedEvent)) {\n continue;\n }\n if (event.timestamp < baselineTime) {\n syncEvents.push(event);\n } else {\n const castFn = getCastFn(event, false);\n timer.addAction({\n doAction: () => {\n castFn();\n },\n delay: event.delay\n });\n }\n }\n applyEventsSynchronously(syncEvents);\n emitter.emit(ReplayerEvents.Flush);\n timer.start();\n },\n pause(ctx) {\n ctx.timer.clear();\n },\n resetLastPlayedEvent: o((ctx) => {\n return {\n ...ctx,\n lastPlayedEvent: null\n };\n }),\n startLive: o({\n baselineTime: (ctx, event) => {\n ctx.timer.start();\n if (event.type === \"TO_LIVE\" && event.payload.baselineTime) {\n return event.payload.baselineTime;\n }\n return Date.now();\n }\n }),\n addEvent: o((ctx, machineEvent) => {\n const { baselineTime, timer, events } = ctx;\n if (machineEvent.type === \"ADD_EVENT\") {\n const { event } = machineEvent.payload;\n addDelay(event, baselineTime);\n let end = events.length - 1;\n if (!events[end] || events[end].timestamp <= event.timestamp) {\n events.push(event);\n } else {\n let insertionIndex = -1;\n let start = 0;\n while (start <= end) {\n const mid = Math.floor((start + end) / 2);\n if (events[mid].timestamp <= event.timestamp) {\n start = mid + 1;\n } else {\n end = mid - 1;\n }\n }\n if (insertionIndex === -1) {\n insertionIndex = start;\n }\n events.splice(insertionIndex, 0, event);\n }\n const isSync = event.timestamp < baselineTime;\n const castFn = getCastFn(event, isSync);\n if (isSync) {\n castFn();\n } else if (timer.isActive()) {\n timer.addAction({\n doAction: () => {\n castFn();\n },\n delay: event.delay\n });\n }\n }\n return { ...ctx, events };\n })\n }\n }\n );\n return v(playerMachine);\n}\nfunction createSpeedService(context) {\n const speedMachine = s(\n {\n id: \"speed\",\n context,\n initial: \"normal\",\n states: {\n normal: {\n on: {\n FAST_FORWARD: {\n target: \"skipping\",\n actions: [\"recordSpeed\", \"setSpeed\"]\n },\n SET_SPEED: {\n target: \"normal\",\n actions: [\"setSpeed\"]\n }\n }\n },\n skipping: {\n on: {\n BACK_TO_NORMAL: {\n target: \"normal\",\n actions: [\"restoreSpeed\"]\n },\n SET_SPEED: {\n target: \"normal\",\n actions: [\"setSpeed\"]\n }\n }\n }\n }\n },\n {\n actions: {\n setSpeed: (ctx, event) => {\n if (\"payload\" in event) {\n ctx.timer.setSpeed(event.payload.speed);\n }\n },\n recordSpeed: o({\n normalSpeed: (ctx) => ctx.timer.speed\n }),\n restoreSpeed: (ctx) => {\n ctx.timer.setSpeed(ctx.normalSpeed);\n }\n }\n }\n );\n return v(speedMachine);\n}\nconst rules = (blockClass) => [\n `.${blockClass} { background: currentColor }`,\n \"noscript { display: none !important; }\"\n];\nconst webGLVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor(ctx, ctor) {\n let contextMap = webGLVarMap.get(ctx);\n if (!contextMap) {\n contextMap = /* @__PURE__ */ new Map();\n webGLVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nfunction deserializeArg(imageMap, ctx, preload) {\n return async (arg) => {\n if (arg && typeof arg === \"object\" && \"rr_type\" in arg) {\n if (preload) preload.isUnchanged = false;\n if (arg.rr_type === \"ImageBitmap\" && \"args\" in arg) {\n const args = await deserializeArg(imageMap, ctx, preload)(arg.args);\n return await createImageBitmap.apply(null, args);\n } else if (\"index\" in arg) {\n if (preload || ctx === null) return arg;\n const { rr_type: name, index: index2 } = arg;\n return variableListFor(ctx, name)[index2];\n } else if (\"args\" in arg) {\n const { rr_type: name, args } = arg;\n const ctor = window[name];\n return new ctor(\n ...await Promise.all(\n args.map(deserializeArg(imageMap, ctx, preload))\n )\n );\n } else if (\"base64\" in arg) {\n return decode(arg.base64);\n } else if (\"src\" in arg) {\n const image = imageMap.get(arg.src);\n if (image) {\n return image;\n } else {\n const image2 = new Image();\n image2.src = arg.src;\n imageMap.set(arg.src, image2);\n return image2;\n }\n } else if (\"data\" in arg && arg.rr_type === \"Blob\") {\n const blobContents = await Promise.all(\n arg.data.map(deserializeArg(imageMap, ctx, preload))\n );\n const blob2 = new Blob(blobContents, {\n type: arg.type\n });\n return blob2;\n }\n } else if (Array.isArray(arg)) {\n const result2 = await Promise.all(\n arg.map(deserializeArg(imageMap, ctx, preload))\n );\n return result2;\n }\n return arg;\n };\n}\nfunction getContext(target, type) {\n try {\n if (type === CanvasContext.WebGL) {\n return target.getContext(\"webgl\") || target.getContext(\"experimental-webgl\");\n }\n return target.getContext(\"webgl2\");\n } catch (e2) {\n return null;\n }\n}\nconst WebGLVariableConstructorsNames = [\n \"WebGLActiveInfo\",\n \"WebGLBuffer\",\n \"WebGLFramebuffer\",\n \"WebGLProgram\",\n \"WebGLRenderbuffer\",\n \"WebGLShader\",\n \"WebGLShaderPrecisionFormat\",\n \"WebGLTexture\",\n \"WebGLUniformLocation\",\n \"WebGLVertexArrayObject\"\n];\nfunction saveToWebGLVarMap(ctx, result2) {\n if (!(result2 == null ? void 0 : result2.constructor)) return;\n const { name } = result2.constructor;\n if (!WebGLVariableConstructorsNames.includes(name)) return;\n const variables = variableListFor(ctx, name);\n if (!variables.includes(result2)) variables.push(result2);\n}\nasync function webglMutation({\n mutation,\n target,\n type,\n imageMap,\n errorHandler: errorHandler2\n}) {\n try {\n const ctx = getContext(target, type);\n if (!ctx) return;\n if (mutation.setter) {\n ctx[mutation.property] = mutation.args[0];\n return;\n }\n const original = ctx[mutation.property];\n const args = await Promise.all(\n mutation.args.map(deserializeArg(imageMap, ctx))\n );\n const result2 = original.apply(ctx, args);\n saveToWebGLVarMap(ctx, result2);\n const debugMode = false;\n if (debugMode) ;\n } catch (error) {\n errorHandler2(mutation, error);\n }\n}\nasync function canvasMutation$1({\n event,\n mutations,\n target,\n imageMap,\n errorHandler: errorHandler2\n}) {\n const ctx = target.getContext(\"2d\");\n if (!ctx) {\n errorHandler2(mutations[0], new Error(\"Canvas context is null\"));\n return;\n }\n const mutationArgsPromises = mutations.map(\n async (mutation) => {\n return Promise.all(mutation.args.map(deserializeArg(imageMap, ctx)));\n }\n );\n const args = await Promise.all(mutationArgsPromises);\n args.forEach((args2, index2) => {\n const mutation = mutations[index2];\n try {\n if (mutation.setter) {\n ctx[mutation.property] = mutation.args[0];\n return;\n }\n const original = ctx[mutation.property];\n if (mutation.property === \"drawImage\" && typeof mutation.args[0] === \"string\") {\n imageMap.get(event);\n original.apply(ctx, mutation.args);\n } else {\n original.apply(ctx, args2);\n }\n } catch (error) {\n errorHandler2(mutation, error);\n }\n return;\n });\n}\nasync function canvasMutation({\n event,\n mutation,\n target,\n imageMap,\n canvasEventMap,\n errorHandler: errorHandler2\n}) {\n try {\n const precomputedMutation = canvasEventMap.get(event) || mutation;\n const commands = \"commands\" in precomputedMutation ? precomputedMutation.commands : [precomputedMutation];\n if ([CanvasContext.WebGL, CanvasContext.WebGL2].includes(mutation.type)) {\n for (let i2 = 0; i2 < commands.length; i2++) {\n const command = commands[i2];\n await webglMutation({\n mutation: command,\n type: mutation.type,\n target,\n imageMap,\n errorHandler: errorHandler2\n });\n }\n return;\n }\n await canvasMutation$1({\n event,\n mutations: commands,\n target,\n imageMap,\n errorHandler: errorHandler2\n });\n } catch (error) {\n errorHandler2(mutation, error);\n }\n}\nclass MediaManager {\n constructor(options) {\n __publicField(this, \"mediaMap\", /* @__PURE__ */ new Map());\n __publicField(this, \"warn\");\n __publicField(this, \"service\");\n __publicField(this, \"speedService\");\n __publicField(this, \"emitter\");\n __publicField(this, \"getCurrentTime\");\n __publicField(this, \"metadataCallbackMap\", /* @__PURE__ */ new Map());\n this.warn = options.warn;\n this.service = options.service;\n this.speedService = options.speedService;\n this.emitter = options.emitter;\n this.getCurrentTime = options.getCurrentTime;\n this.emitter.on(ReplayerEvents.Start, this.start.bind(this));\n this.emitter.on(ReplayerEvents.SkipStart, this.start.bind(this));\n this.emitter.on(ReplayerEvents.Pause, this.pause.bind(this));\n this.emitter.on(ReplayerEvents.Finish, this.pause.bind(this));\n this.speedService.subscribe(() => {\n this.syncAllMediaElements();\n });\n }\n syncAllMediaElements(options = { pause: false }) {\n this.mediaMap.forEach((_mediaState, target) => {\n this.syncTargetWithState(target);\n if (options.pause) {\n target.pause();\n }\n });\n }\n start() {\n this.syncAllMediaElements();\n }\n pause() {\n this.syncAllMediaElements({ pause: true });\n }\n seekTo({\n time,\n target,\n mediaState\n }) {\n if (mediaState.isPlaying) {\n const differenceBetweenCurrentTimeAndMediaMutationTimestamp = time - mediaState.lastInteractionTimeOffset;\n const mediaPlaybackOffset = differenceBetweenCurrentTimeAndMediaMutationTimestamp / 1e3 * mediaState.playbackRate;\n const duration = \"duration\" in target && target.duration;\n if (Number.isNaN(duration)) {\n this.waitForMetadata(target);\n return;\n }\n let seekToTime = mediaState.currentTimeAtLastInteraction + mediaPlaybackOffset;\n if (target.loop && // RRMediaElement doesn't have a duration property\n duration !== false) {\n seekToTime = seekToTime % duration;\n }\n target.currentTime = seekToTime;\n } else {\n target.pause();\n target.currentTime = mediaState.currentTimeAtLastInteraction;\n }\n }\n waitForMetadata(target) {\n if (this.metadataCallbackMap.has(target)) return;\n if (!(\"addEventListener\" in target)) return;\n const onLoadedMetadata = () => {\n this.metadataCallbackMap.delete(target);\n const mediaState = this.mediaMap.get(target);\n if (!mediaState) return;\n this.seekTo({\n time: this.getCurrentTime(),\n target,\n mediaState\n });\n };\n this.metadataCallbackMap.set(target, onLoadedMetadata);\n target.addEventListener(\"loadedmetadata\", onLoadedMetadata, {\n once: true\n });\n }\n getMediaStateFromMutation({\n target,\n timeOffset,\n mutation\n }) {\n const lastState = this.mediaMap.get(target);\n const { type, playbackRate, currentTime, muted, volume, loop } = mutation;\n const isPlaying = type === MediaInteractions.Play || type !== MediaInteractions.Pause && ((lastState == null ? void 0 : lastState.isPlaying) || target.getAttribute(\"autoplay\") !== null);\n const mediaState = {\n isPlaying,\n currentTimeAtLastInteraction: currentTime ?? (lastState == null ? void 0 : lastState.currentTimeAtLastInteraction) ?? 0,\n lastInteractionTimeOffset: timeOffset,\n playbackRate: playbackRate ?? (lastState == null ? void 0 : lastState.playbackRate) ?? 1,\n volume: volume ?? (lastState == null ? void 0 : lastState.volume) ?? 1,\n muted: muted ?? (lastState == null ? void 0 : lastState.muted) ?? target.getAttribute(\"muted\") === null,\n loop: loop ?? (lastState == null ? void 0 : lastState.loop) ?? target.getAttribute(\"loop\") === null\n };\n return mediaState;\n }\n syncTargetWithState(target) {\n const mediaState = this.mediaMap.get(target);\n if (!mediaState) return;\n const { muted, loop, volume, isPlaying } = mediaState;\n const playerIsPaused = this.service.state.matches(\"paused\");\n const playbackRate = mediaState.playbackRate * this.speedService.state.context.timer.speed;\n try {\n this.seekTo({\n time: this.getCurrentTime(),\n target,\n mediaState\n });\n if (target.volume !== volume) {\n target.volume = volume;\n }\n target.muted = muted;\n target.loop = loop;\n if (target.playbackRate !== playbackRate) {\n target.playbackRate = playbackRate;\n }\n if (isPlaying && !playerIsPaused) {\n void target.play();\n } else {\n target.pause();\n }\n } catch (error) {\n this.warn(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/restrict-template-expressions\n `Failed to replay media interactions: ${error.message || error}`\n );\n }\n }\n addMediaElements(node2, timeOffset, mirror2) {\n if (![\"AUDIO\", \"VIDEO\"].includes(node2.nodeName)) return;\n const target = node2;\n const serializedNode = mirror2.getMeta(target);\n if (!serializedNode || !(\"attributes\" in serializedNode)) return;\n const playerIsPaused = this.service.state.matches(\"paused\");\n const mediaAttributes = serializedNode.attributes;\n let isPlaying = false;\n if (mediaAttributes.rr_mediaState) {\n isPlaying = mediaAttributes.rr_mediaState === \"played\";\n } else {\n isPlaying = target.getAttribute(\"autoplay\") !== null;\n }\n if (isPlaying && playerIsPaused) target.pause();\n let playbackRate = 1;\n if (typeof mediaAttributes.rr_mediaPlaybackRate === \"number\") {\n playbackRate = mediaAttributes.rr_mediaPlaybackRate;\n }\n let muted = false;\n if (typeof mediaAttributes.rr_mediaMuted === \"boolean\") {\n muted = mediaAttributes.rr_mediaMuted;\n } else {\n muted = target.getAttribute(\"muted\") !== null;\n }\n let loop = false;\n if (typeof mediaAttributes.rr_mediaLoop === \"boolean\") {\n loop = mediaAttributes.rr_mediaLoop;\n } else {\n loop = target.getAttribute(\"loop\") !== null;\n }\n let volume = 1;\n if (typeof mediaAttributes.rr_mediaVolume === \"number\") {\n volume = mediaAttributes.rr_mediaVolume;\n }\n let currentTimeAtLastInteraction = 0;\n if (typeof mediaAttributes.rr_mediaCurrentTime === \"number\") {\n currentTimeAtLastInteraction = mediaAttributes.rr_mediaCurrentTime;\n }\n this.mediaMap.set(target, {\n isPlaying,\n currentTimeAtLastInteraction,\n lastInteractionTimeOffset: timeOffset,\n playbackRate,\n volume,\n muted,\n loop\n });\n this.syncTargetWithState(target);\n }\n mediaMutation({\n target,\n timeOffset,\n mutation\n }) {\n this.mediaMap.set(\n target,\n this.getMediaStateFromMutation({\n target,\n timeOffset,\n mutation\n })\n );\n this.syncTargetWithState(target);\n }\n isSupportedMediaElement(node2) {\n return [\"AUDIO\", \"VIDEO\"].includes(node2.nodeName);\n }\n reset() {\n this.mediaMap.clear();\n }\n}\nfunction applyDialogToTopLevel(node2, attributeMutation) {\n if (node2.nodeName !== \"DIALOG\" || node2 instanceof BaseRRNode) return;\n const dialog = node2;\n const oldIsOpen = dialog.open;\n const oldIsModalState = oldIsOpen && dialog.matches(\"dialog:modal\");\n const rrOpenMode = dialog.getAttribute(\"rr_open_mode\");\n const newIsOpen = typeof (attributeMutation == null ? void 0 : attributeMutation.attributes.open) === \"string\" || typeof dialog.getAttribute(\"open\") === \"string\";\n const newIsModalState = rrOpenMode === \"modal\";\n const newIsNonModalState = rrOpenMode === \"non-modal\";\n const modalStateChanged = oldIsModalState && newIsNonModalState || !oldIsModalState && newIsModalState;\n if (oldIsOpen && !modalStateChanged) return;\n if (!dialog.isConnected) {\n console.warn(\"dialog is not attached to the dom\", dialog);\n return;\n }\n if (oldIsOpen) dialog.close();\n if (!newIsOpen) return;\n if (newIsModalState) dialog.showModal();\n else dialog.show();\n}\nfunction removeDialogFromTopLevel(node2, attributeMutation) {\n if (node2.nodeName !== \"DIALOG\" || node2 instanceof BaseRRNode) return;\n const dialog = node2;\n if (!dialog.isConnected) {\n console.warn(\"dialog is not attached to the dom\", dialog);\n return;\n }\n if (attributeMutation.attributes.open === null) {\n dialog.removeAttribute(\"open\");\n dialog.removeAttribute(\"rr_open_mode\");\n }\n}\nconst SKIP_TIME_INTERVAL = 5 * 1e3;\nconst mitt = mitt$1 || mittProxy;\nconst REPLAY_CONSOLE_PREFIX = \"[replayer]\";\nconst defaultMouseTailConfig = {\n duration: 500,\n lineCap: \"round\",\n lineWidth: 3,\n strokeStyle: \"red\"\n};\nfunction indicatesTouchDevice(e2) {\n return e2.type == EventType.IncrementalSnapshot && (e2.data.source == IncrementalSource.TouchMove || e2.data.source == IncrementalSource.MouseInteraction && e2.data.type == MouseInteractions.TouchStart);\n}\nclass Replayer {\n constructor(events, config) {\n __publicField(this, \"wrapper\");\n __publicField(this, \"iframe\");\n __publicField(this, \"service\");\n __publicField(this, \"speedService\");\n __publicField(this, \"config\");\n // In the fast-forward process, if the virtual-dom optimization is used, this flag value is true.\n __publicField(this, \"usingVirtualDom\", false);\n __publicField(this, \"virtualDom\", new RRDocument());\n __publicField(this, \"mouse\");\n __publicField(this, \"mouseTail\", null);\n __publicField(this, \"tailPositions\", []);\n __publicField(this, \"emitter\", mitt());\n __publicField(this, \"nextUserInteractionEvent\");\n __publicField(this, \"legacy_missingNodeRetryMap\", {});\n // The replayer uses the cache to speed up replay and scrubbing.\n __publicField(this, \"cache\", createCache());\n __publicField(this, \"imageMap\", /* @__PURE__ */ new Map());\n __publicField(this, \"canvasEventMap\", /* @__PURE__ */ new Map());\n __publicField(this, \"mirror\", createMirror$2());\n // Used to track StyleSheetObjects adopted on multiple document hosts.\n __publicField(this, \"styleMirror\", new StyleSheetMirror());\n // Used to track video & audio elements, and keep them in sync with general playback.\n __publicField(this, \"mediaManager\");\n __publicField(this, \"firstFullSnapshot\", null);\n __publicField(this, \"newDocumentQueue\", []);\n __publicField(this, \"mousePos\", null);\n __publicField(this, \"touchActive\", null);\n __publicField(this, \"lastMouseDownEvent\", null);\n // Keep the rootNode of the last hovered element. So when hovering a new element, we can remove the last hovered element's :hover style.\n __publicField(this, \"lastHoveredRootNode\");\n // In the fast-forward mode, only the last selection data needs to be applied.\n __publicField(this, \"lastSelectionData\", null);\n // In the fast-forward mode using VirtualDom optimization, all stylesheetRule, and styleDeclaration events on constructed StyleSheets will be delayed to get applied until the flush stage.\n __publicField(this, \"constructedStyleMutations\", []);\n // Similar to the reason for constructedStyleMutations.\n __publicField(this, \"adoptedStyleSheets\", []);\n __publicField(this, \"handleResize\", (dimension) => {\n this.iframe.style.display = \"inherit\";\n for (const el of [this.mouseTail, this.iframe]) {\n if (!el) {\n continue;\n }\n el.setAttribute(\"width\", String(dimension.width));\n el.setAttribute(\"height\", String(dimension.height));\n }\n });\n __publicField(this, \"applyEventsSynchronously\", (events) => {\n for (const event of events) {\n switch (event.type) {\n case EventType.DomContentLoaded:\n case EventType.Load:\n case EventType.Custom:\n continue;\n case EventType.FullSnapshot:\n case EventType.Meta:\n case EventType.Plugin:\n case EventType.IncrementalSnapshot:\n break;\n }\n const castFn = this.getCastFn(event, true);\n castFn();\n }\n });\n __publicField(this, \"getCastFn\", (event, isSync = false) => {\n let castFn;\n switch (event.type) {\n case EventType.DomContentLoaded:\n case EventType.Load:\n break;\n case EventType.Custom:\n castFn = () => {\n this.emitter.emit(ReplayerEvents.CustomEvent, event);\n };\n break;\n case EventType.Meta:\n castFn = () => this.emitter.emit(ReplayerEvents.Resize, {\n width: event.data.width,\n height: event.data.height\n });\n break;\n case EventType.FullSnapshot:\n castFn = () => {\n var _a2;\n if (this.firstFullSnapshot) {\n if (this.firstFullSnapshot === event) {\n this.firstFullSnapshot = true;\n return;\n }\n } else {\n this.firstFullSnapshot = true;\n }\n this.mediaManager.reset();\n this.styleMirror.reset();\n this.rebuildFullSnapshot(event, isSync);\n (_a2 = this.iframe.contentWindow) == null ? void 0 : _a2.scrollTo(event.data.initialOffset);\n };\n break;\n case EventType.IncrementalSnapshot:\n castFn = () => {\n this.applyIncremental(event, isSync);\n if (isSync) {\n return;\n }\n if (event === this.nextUserInteractionEvent) {\n this.nextUserInteractionEvent = null;\n this.backToNormal();\n }\n if (this.config.skipInactive && !this.nextUserInteractionEvent) {\n for (const _event of this.service.state.context.events) {\n if (_event.timestamp <= event.timestamp) {\n continue;\n }\n if (this.isUserInteraction(_event)) {\n if (\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n _event.delay - event.delay > this.config.inactivePeriodThreshold * this.speedService.state.context.timer.speed\n ) {\n this.nextUserInteractionEvent = _event;\n }\n break;\n }\n }\n if (this.nextUserInteractionEvent) {\n const skipTime = (\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.nextUserInteractionEvent.delay - event.delay\n );\n const payload = {\n speed: Math.min(\n Math.round(skipTime / SKIP_TIME_INTERVAL),\n this.config.maxSpeed\n )\n };\n this.speedService.send({ type: \"FAST_FORWARD\", payload });\n this.emitter.emit(ReplayerEvents.SkipStart, payload);\n }\n }\n };\n break;\n }\n const wrappedCastFn = () => {\n if (castFn) {\n castFn();\n }\n for (const plugin3 of this.config.plugins || []) {\n if (plugin3.handler) plugin3.handler(event, isSync, { replayer: this });\n }\n this.service.send({ type: \"CAST_EVENT\", payload: { event } });\n const last_index = this.service.state.context.events.length - 1;\n if (!this.config.liveMode && event === this.service.state.context.events[last_index]) {\n const finish = () => {\n if (last_index < this.service.state.context.events.length - 1) {\n return;\n }\n this.backToNormal();\n this.service.send(\"END\");\n this.emitter.emit(ReplayerEvents.Finish);\n };\n let finish_buffer = 50;\n if (event.type === EventType.IncrementalSnapshot && event.data.source === IncrementalSource.MouseMove && event.data.positions.length) {\n finish_buffer += Math.max(0, -event.data.positions[0].timeOffset);\n }\n setTimeout(finish, finish_buffer);\n }\n this.emitter.emit(ReplayerEvents.EventCast, event);\n };\n return wrappedCastFn;\n });\n if (!(config == null ? void 0 : config.liveMode) && events.length < 2) {\n throw new Error(\"Replayer need at least 2 events.\");\n }\n const defaultConfig = {\n speed: 1,\n maxSpeed: 360,\n root: document.body,\n loadTimeout: 0,\n skipInactive: false,\n inactivePeriodThreshold: 10 * 1e3,\n showWarning: true,\n showDebug: false,\n blockClass: \"rr-block\",\n liveMode: false,\n insertStyleRules: [],\n triggerFocus: true,\n UNSAFE_replayCanvas: false,\n pauseAnimation: true,\n mouseTail: defaultMouseTailConfig,\n useVirtualDom: true,\n // Virtual-dom optimization is enabled by default.\n logger: console\n };\n this.config = Object.assign({}, defaultConfig, config);\n this.handleResize = this.handleResize.bind(this);\n this.getCastFn = this.getCastFn.bind(this);\n this.applyEventsSynchronously = this.applyEventsSynchronously.bind(this);\n this.emitter.on(ReplayerEvents.Resize, this.handleResize);\n this.setupDom();\n for (const plugin3 of this.config.plugins || []) {\n if (plugin3.getMirror) plugin3.getMirror({ nodeMirror: this.mirror });\n }\n this.emitter.on(ReplayerEvents.Flush, () => {\n if (this.usingVirtualDom) {\n const replayerHandler = {\n mirror: this.mirror,\n applyCanvas: (canvasEvent, canvasMutationData, target) => {\n void canvasMutation({\n event: canvasEvent,\n mutation: canvasMutationData,\n target,\n imageMap: this.imageMap,\n canvasEventMap: this.canvasEventMap,\n errorHandler: this.warnCanvasMutationFailed.bind(this)\n });\n },\n applyInput: this.applyInput.bind(this),\n applyScroll: this.applyScroll.bind(this),\n applyStyleSheetMutation: (data, styleSheet) => {\n if (data.source === IncrementalSource.StyleSheetRule)\n this.applyStyleSheetRule(data, styleSheet);\n else if (data.source === IncrementalSource.StyleDeclaration)\n this.applyStyleDeclaration(data, styleSheet);\n },\n afterAppend: (node2, id) => {\n for (const plugin3 of this.config.plugins || []) {\n if (plugin3.onBuild) plugin3.onBuild(node2, { id, replayer: this });\n }\n }\n };\n if (this.iframe.contentDocument)\n try {\n diff(\n this.iframe.contentDocument,\n this.virtualDom,\n replayerHandler,\n this.virtualDom.mirror\n );\n } catch (e2) {\n console.warn(e2);\n }\n this.virtualDom.destroyTree();\n this.usingVirtualDom = false;\n if (Object.keys(this.legacy_missingNodeRetryMap).length) {\n for (const key in this.legacy_missingNodeRetryMap) {\n try {\n const value = this.legacy_missingNodeRetryMap[key];\n const realNode = createOrGetNode(\n value.node,\n this.mirror,\n this.virtualDom.mirror\n );\n diff(\n realNode,\n value.node,\n replayerHandler,\n this.virtualDom.mirror\n );\n value.node = realNode;\n } catch (error) {\n this.warn(error);\n }\n }\n }\n this.constructedStyleMutations.forEach((data) => {\n this.applyStyleSheetMutation(data);\n });\n this.constructedStyleMutations = [];\n this.adoptedStyleSheets.forEach((data) => {\n this.applyAdoptedStyleSheet(data);\n });\n this.adoptedStyleSheets = [];\n }\n if (this.mousePos) {\n this.moveAndHover(\n this.mousePos.x,\n this.mousePos.y,\n this.mousePos.id,\n true,\n this.mousePos.debugData\n );\n this.mousePos = null;\n }\n if (this.touchActive === true) {\n this.mouse.classList.add(\"touch-active\");\n } else if (this.touchActive === false) {\n this.mouse.classList.remove(\"touch-active\");\n }\n this.touchActive = null;\n if (this.lastMouseDownEvent) {\n const [target, event] = this.lastMouseDownEvent;\n target.dispatchEvent(event);\n }\n this.lastMouseDownEvent = null;\n if (this.lastSelectionData) {\n this.applySelection(this.lastSelectionData);\n this.lastSelectionData = null;\n }\n });\n this.emitter.on(ReplayerEvents.PlayBack, () => {\n this.firstFullSnapshot = null;\n this.mirror.reset();\n this.styleMirror.reset();\n this.mediaManager.reset();\n });\n const timer = new Timer([], {\n speed: this.config.speed\n });\n this.service = createPlayerService(\n {\n events: events.map((e2) => {\n if (config && config.unpackFn) {\n return config.unpackFn(e2);\n }\n return e2;\n }).sort((a1, a2) => a1.timestamp - a2.timestamp),\n timer,\n timeOffset: 0,\n baselineTime: 0,\n lastPlayedEvent: null\n },\n {\n getCastFn: this.getCastFn,\n applyEventsSynchronously: this.applyEventsSynchronously,\n emitter: this.emitter\n }\n );\n this.service.start();\n this.service.subscribe((state) => {\n this.emitter.emit(ReplayerEvents.StateChange, {\n player: state\n });\n });\n this.speedService = createSpeedService({\n normalSpeed: -1,\n timer\n });\n this.speedService.start();\n this.speedService.subscribe((state) => {\n this.emitter.emit(ReplayerEvents.StateChange, {\n speed: state\n });\n });\n this.mediaManager = new MediaManager({\n warn: this.warn.bind(this),\n service: this.service,\n speedService: this.speedService,\n emitter: this.emitter,\n getCurrentTime: this.getCurrentTime.bind(this)\n });\n const firstMeta = this.service.state.context.events.find(\n (e2) => e2.type === EventType.Meta\n );\n const firstFullsnapshot = this.service.state.context.events.find(\n (e2) => e2.type === EventType.FullSnapshot\n );\n if (firstMeta) {\n const { width, height } = firstMeta.data;\n setTimeout(() => {\n this.emitter.emit(ReplayerEvents.Resize, {\n width,\n height\n });\n }, 0);\n }\n if (firstFullsnapshot) {\n setTimeout(() => {\n var _a2;\n if (this.firstFullSnapshot) {\n return;\n }\n this.firstFullSnapshot = firstFullsnapshot;\n this.rebuildFullSnapshot(\n firstFullsnapshot\n );\n (_a2 = this.iframe.contentWindow) == null ? void 0 : _a2.scrollTo(\n firstFullsnapshot.data.initialOffset\n );\n }, 1);\n }\n if (this.service.state.context.events.find(indicatesTouchDevice)) {\n this.mouse.classList.add(\"touch-device\");\n }\n }\n get timer() {\n return this.service.state.context.timer;\n }\n on(event, handler) {\n this.emitter.on(event, handler);\n return this;\n }\n off(event, handler) {\n this.emitter.off(event, handler);\n return this;\n }\n setConfig(config) {\n Object.keys(config).forEach((key) => {\n config[key];\n this.config[key] = config[key];\n });\n if (!this.config.skipInactive) {\n this.backToNormal();\n }\n if (typeof config.speed !== \"undefined\") {\n this.speedService.send({\n type: \"SET_SPEED\",\n payload: {\n speed: config.speed\n }\n });\n }\n if (typeof config.mouseTail !== \"undefined\") {\n if (config.mouseTail === false) {\n if (this.mouseTail) {\n this.mouseTail.style.display = \"none\";\n }\n } else {\n if (!this.mouseTail) {\n this.mouseTail = document.createElement(\"canvas\");\n this.mouseTail.width = Number.parseFloat(this.iframe.width);\n this.mouseTail.height = Number.parseFloat(this.iframe.height);\n this.mouseTail.classList.add(\"replayer-mouse-tail\");\n this.wrapper.insertBefore(this.mouseTail, this.iframe);\n }\n this.mouseTail.style.display = \"inherit\";\n }\n }\n }\n getMetaData() {\n const firstEvent = this.service.state.context.events[0];\n const lastEvent = this.service.state.context.events[this.service.state.context.events.length - 1];\n return {\n startTime: firstEvent.timestamp,\n endTime: lastEvent.timestamp,\n totalTime: lastEvent.timestamp - firstEvent.timestamp\n };\n }\n /**\n * Get the actual time offset the player is at now compared to the first event.\n */\n getCurrentTime() {\n return this.timer.timeOffset + this.getTimeOffset();\n }\n /**\n * Get the time offset the player is at now compared to the first event, but without regard for the timer.\n */\n getTimeOffset() {\n const { baselineTime, events } = this.service.state.context;\n return baselineTime - events[0].timestamp;\n }\n getMirror() {\n return this.mirror;\n }\n /**\n * This API was designed to be used as play at any time offset.\n * Since we minimized the data collected from recorder, we do not\n * have the ability of undo an event.\n * So the implementation of play at any time offset will always iterate\n * all of the events, cast event before the offset synchronously\n * and cast event after the offset asynchronously with timer.\n * @param timeOffset - number\n */\n play(timeOffset = 0) {\n var _a2, _b;\n if (this.service.state.matches(\"paused\")) {\n this.service.send({ type: \"PLAY\", payload: { timeOffset } });\n } else {\n this.service.send({ type: \"PAUSE\" });\n this.service.send({ type: \"PLAY\", payload: { timeOffset } });\n }\n (_b = (_a2 = this.iframe.contentDocument) == null ? void 0 : _a2.getElementsByTagName(\"html\")[0]) == null ? void 0 : _b.classList.remove(\"rrweb-paused\");\n this.emitter.emit(ReplayerEvents.Start);\n }\n pause(timeOffset) {\n var _a2, _b;\n if (timeOffset === void 0 && this.service.state.matches(\"playing\")) {\n this.service.send({ type: \"PAUSE\" });\n }\n if (typeof timeOffset === \"number\") {\n this.play(timeOffset);\n this.service.send({ type: \"PAUSE\" });\n }\n (_b = (_a2 = this.iframe.contentDocument) == null ? void 0 : _a2.getElementsByTagName(\"html\")[0]) == null ? void 0 : _b.classList.add(\"rrweb-paused\");\n this.emitter.emit(ReplayerEvents.Pause);\n }\n resume(timeOffset = 0) {\n this.warn(\n `The 'resume' was deprecated in 1.0. Please use 'play' method which has the same interface.`\n );\n this.play(timeOffset);\n this.emitter.emit(ReplayerEvents.Resume);\n }\n /**\n * Totally destroy this replayer and please be careful that this operation is irreversible.\n * Memory occupation can be released by removing all references to this replayer.\n */\n destroy() {\n this.pause();\n this.mirror.reset();\n this.styleMirror.reset();\n this.mediaManager.reset();\n this.config.root.removeChild(this.wrapper);\n this.emitter.emit(ReplayerEvents.Destroy);\n }\n startLive(baselineTime) {\n this.service.send({ type: \"TO_LIVE\", payload: { baselineTime } });\n }\n addEvent(rawEvent) {\n const event = this.config.unpackFn ? this.config.unpackFn(rawEvent) : rawEvent;\n if (indicatesTouchDevice(event)) {\n this.mouse.classList.add(\"touch-device\");\n }\n void Promise.resolve().then(\n () => this.service.send({ type: \"ADD_EVENT\", payload: { event } })\n );\n }\n enableInteract() {\n this.iframe.setAttribute(\"scrolling\", \"auto\");\n this.iframe.style.pointerEvents = \"auto\";\n }\n disableInteract() {\n this.iframe.setAttribute(\"scrolling\", \"no\");\n this.iframe.style.pointerEvents = \"none\";\n }\n /**\n * Empties the replayer's cache and reclaims memory.\n * The replayer will use this cache to speed up the playback.\n */\n resetCache() {\n this.cache = createCache();\n }\n setupDom() {\n this.wrapper = document.createElement(\"div\");\n this.wrapper.classList.add(\"replayer-wrapper\");\n this.config.root.appendChild(this.wrapper);\n this.mouse = document.createElement(\"div\");\n this.mouse.classList.add(\"replayer-mouse\");\n this.wrapper.appendChild(this.mouse);\n if (this.config.mouseTail !== false) {\n this.mouseTail = document.createElement(\"canvas\");\n this.mouseTail.classList.add(\"replayer-mouse-tail\");\n this.mouseTail.style.display = \"inherit\";\n this.wrapper.appendChild(this.mouseTail);\n }\n this.iframe = document.createElement(\"iframe\");\n const attributes = [\"allow-same-origin\"];\n if (this.config.UNSAFE_replayCanvas) {\n attributes.push(\"allow-scripts\");\n }\n this.iframe.style.display = \"none\";\n this.iframe.setAttribute(\"sandbox\", attributes.join(\" \"));\n this.disableInteract();\n this.wrapper.appendChild(this.iframe);\n if (this.iframe.contentWindow && this.iframe.contentDocument) {\n polyfill(\n this.iframe.contentWindow,\n this.iframe.contentDocument\n );\n polyfill$1(this.iframe.contentWindow);\n }\n }\n rebuildFullSnapshot(event, isSync = false) {\n if (!this.iframe.contentDocument) {\n return this.warn(\"Looks like your replayer has been destroyed.\");\n }\n if (Object.keys(this.legacy_missingNodeRetryMap).length) {\n this.warn(\n \"Found unresolved missing node map\",\n this.legacy_missingNodeRetryMap\n );\n }\n this.legacy_missingNodeRetryMap = {};\n const collectedIframes = [];\n const collectedDialogs = /* @__PURE__ */ new Set();\n const afterAppend = (builtNode, id) => {\n if (builtNode.nodeName === \"DIALOG\")\n collectedDialogs.add(builtNode);\n this.collectIframeAndAttachDocument(collectedIframes, builtNode);\n if (this.mediaManager.isSupportedMediaElement(builtNode)) {\n const { events } = this.service.state.context;\n this.mediaManager.addMediaElements(\n builtNode,\n event.timestamp - events[0].timestamp,\n this.mirror\n );\n }\n for (const plugin3 of this.config.plugins || []) {\n if (plugin3.onBuild)\n plugin3.onBuild(builtNode, {\n id,\n replayer: this\n });\n }\n };\n if (this.usingVirtualDom) {\n this.virtualDom.destroyTree();\n this.usingVirtualDom = false;\n }\n this.mirror.reset();\n rebuild(event.data.node, {\n doc: this.iframe.contentDocument,\n afterAppend,\n cache: this.cache,\n mirror: this.mirror\n });\n afterAppend(this.iframe.contentDocument, event.data.node.id);\n for (const { mutationInQueue, builtNode } of collectedIframes) {\n this.attachDocumentToIframe(mutationInQueue, builtNode);\n this.newDocumentQueue = this.newDocumentQueue.filter(\n (m) => m !== mutationInQueue\n );\n }\n const { documentElement, head } = this.iframe.contentDocument;\n this.insertStyleRules(documentElement, head);\n collectedDialogs.forEach((d) => applyDialogToTopLevel(d));\n if (!this.service.state.matches(\"playing\")) {\n this.iframe.contentDocument.getElementsByTagName(\"html\")[0].classList.add(\"rrweb-paused\");\n }\n this.emitter.emit(ReplayerEvents.FullsnapshotRebuilded, event);\n if (!isSync) {\n this.waitForStylesheetLoad();\n }\n if (this.config.UNSAFE_replayCanvas) {\n void this.preloadAllImages();\n }\n }\n insertStyleRules(documentElement, head) {\n var _a2;\n const injectStylesRules = rules(\n this.config.blockClass\n ).concat(this.config.insertStyleRules);\n if (this.config.pauseAnimation) {\n injectStylesRules.push(\n \"html.rrweb-paused *, html.rrweb-paused *:before, html.rrweb-paused *:after { animation-play-state: paused !important; }\"\n );\n }\n if (!injectStylesRules.length) {\n return;\n }\n if (this.usingVirtualDom) {\n const styleEl = this.virtualDom.createElement(\"style\");\n this.virtualDom.mirror.add(\n styleEl,\n getDefaultSN(styleEl, this.virtualDom.unserializedId)\n );\n documentElement.insertBefore(styleEl, head);\n styleEl.rules.push({\n source: IncrementalSource.StyleSheetRule,\n adds: injectStylesRules.map((cssText, index2) => ({\n rule: cssText,\n index: index2\n }))\n });\n } else {\n const styleEl = document.createElement(\"style\");\n documentElement.insertBefore(\n styleEl,\n head\n );\n for (let idx = 0; idx < injectStylesRules.length; idx++) {\n (_a2 = styleEl.sheet) == null ? void 0 : _a2.insertRule(injectStylesRules[idx], idx);\n }\n }\n }\n attachDocumentToIframe(mutation, iframeEl) {\n const mirror2 = this.usingVirtualDom ? this.virtualDom.mirror : this.mirror;\n const collectedIframes = [];\n const collectedDialogs = /* @__PURE__ */ new Set();\n const afterAppend = (builtNode, id) => {\n if (builtNode.nodeName === \"DIALOG\")\n collectedDialogs.add(builtNode);\n this.collectIframeAndAttachDocument(collectedIframes, builtNode);\n const sn = mirror2.getMeta(builtNode);\n if ((sn == null ? void 0 : sn.type) === NodeType.Element && (sn == null ? void 0 : sn.tagName.toUpperCase()) === \"HTML\") {\n const { documentElement, head } = iframeEl.contentDocument;\n this.insertStyleRules(\n documentElement,\n head\n );\n }\n if (this.usingVirtualDom) return;\n for (const plugin3 of this.config.plugins || []) {\n if (plugin3.onBuild)\n plugin3.onBuild(builtNode, {\n id,\n replayer: this\n });\n }\n };\n buildNodeWithSN(mutation.node, {\n doc: iframeEl.contentDocument,\n mirror: mirror2,\n hackCss: true,\n skipChild: false,\n afterAppend,\n cache: this.cache\n });\n afterAppend(iframeEl.contentDocument, mutation.node.id);\n for (const { mutationInQueue, builtNode } of collectedIframes) {\n this.attachDocumentToIframe(mutationInQueue, builtNode);\n this.newDocumentQueue = this.newDocumentQueue.filter(\n (m) => m !== mutationInQueue\n );\n }\n collectedDialogs.forEach((d) => applyDialogToTopLevel(d));\n }\n collectIframeAndAttachDocument(collected, builtNode) {\n if (isSerializedIframe(builtNode, this.mirror)) {\n const mutationInQueue = this.newDocumentQueue.find(\n (m) => m.parentId === this.mirror.getId(builtNode)\n );\n if (mutationInQueue) {\n collected.push({\n mutationInQueue,\n builtNode\n });\n }\n }\n }\n /**\n * pause when loading style sheet, resume when loaded all timeout exceed\n */\n waitForStylesheetLoad() {\n var _a2;\n const head = (_a2 = this.iframe.contentDocument) == null ? void 0 : _a2.head;\n if (head) {\n const unloadSheets = /* @__PURE__ */ new Set();\n let timer;\n let beforeLoadState = this.service.state;\n const stateHandler = () => {\n beforeLoadState = this.service.state;\n };\n this.emitter.on(ReplayerEvents.Start, stateHandler);\n this.emitter.on(ReplayerEvents.Pause, stateHandler);\n const unsubscribe = () => {\n this.emitter.off(ReplayerEvents.Start, stateHandler);\n this.emitter.off(ReplayerEvents.Pause, stateHandler);\n };\n head.querySelectorAll('link[rel=\"stylesheet\"]').forEach((css) => {\n if (!css.sheet) {\n unloadSheets.add(css);\n css.addEventListener(\"load\", () => {\n unloadSheets.delete(css);\n if (unloadSheets.size === 0 && timer !== -1) {\n if (beforeLoadState.matches(\"playing\")) {\n this.play(this.getCurrentTime());\n }\n this.emitter.emit(ReplayerEvents.LoadStylesheetEnd);\n if (timer) {\n clearTimeout(timer);\n }\n unsubscribe();\n }\n });\n }\n });\n if (unloadSheets.size > 0) {\n this.service.send({ type: \"PAUSE\" });\n this.emitter.emit(ReplayerEvents.LoadStylesheetStart);\n timer = setTimeout(() => {\n if (beforeLoadState.matches(\"playing\")) {\n this.play(this.getCurrentTime());\n }\n timer = -1;\n unsubscribe();\n }, this.config.loadTimeout);\n }\n }\n }\n /**\n * pause when there are some canvas drawImage args need to be loaded\n */\n async preloadAllImages() {\n const promises = [];\n for (const event of this.service.state.context.events) {\n if (event.type === EventType.IncrementalSnapshot && event.data.source === IncrementalSource.CanvasMutation) {\n promises.push(\n this.deserializeAndPreloadCanvasEvents(event.data, event)\n );\n const commands = \"commands\" in event.data ? event.data.commands : [event.data];\n commands.forEach((c2) => {\n this.preloadImages(c2, event);\n });\n }\n }\n return Promise.all(promises);\n }\n preloadImages(data, event) {\n if (data.property === \"drawImage\" && typeof data.args[0] === \"string\" && !this.imageMap.has(event)) {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n const imgd = ctx == null ? void 0 : ctx.createImageData(canvas.width, canvas.height);\n ctx == null ? void 0 : ctx.putImageData(imgd, 0, 0);\n }\n }\n async deserializeAndPreloadCanvasEvents(data, event) {\n if (!this.canvasEventMap.has(event)) {\n const status = {\n isUnchanged: true\n };\n if (\"commands\" in data) {\n const commands = await Promise.all(\n data.commands.map(async (c2) => {\n const args = await Promise.all(\n c2.args.map(deserializeArg(this.imageMap, null, status))\n );\n return { ...c2, args };\n })\n );\n if (status.isUnchanged === false)\n this.canvasEventMap.set(event, { ...data, commands });\n } else {\n const args = await Promise.all(\n data.args.map(deserializeArg(this.imageMap, null, status))\n );\n if (status.isUnchanged === false)\n this.canvasEventMap.set(event, { ...data, args });\n }\n }\n }\n applyIncremental(e2, isSync) {\n var _a2, _b, _c;\n const { data: d } = e2;\n switch (d.source) {\n case IncrementalSource.Mutation: {\n try {\n this.applyMutation(d, isSync);\n } catch (error) {\n this.warn(`Exception in mutation ${error.message || error}`, d);\n }\n break;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove:\n if (isSync) {\n const lastPosition = d.positions[d.positions.length - 1];\n this.mousePos = {\n x: lastPosition.x,\n y: lastPosition.y,\n id: lastPosition.id,\n debugData: d\n };\n } else {\n d.positions.forEach((p) => {\n const action = {\n doAction: () => {\n this.moveAndHover(p.x, p.y, p.id, isSync, d);\n },\n delay: p.timeOffset + e2.timestamp - this.service.state.context.baselineTime\n };\n this.timer.addAction(action);\n });\n this.timer.addAction({\n doAction() {\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n delay: e2.delay - ((_a2 = d.positions[0]) == null ? void 0 : _a2.timeOffset)\n });\n }\n break;\n case IncrementalSource.MouseInteraction: {\n if (d.id === -1) {\n break;\n }\n const event = new Event(toLowerCase(MouseInteractions[d.type]));\n const target = this.mirror.getNode(d.id);\n if (!target) {\n return this.debugNodeNotFound(d, d.id);\n }\n this.emitter.emit(ReplayerEvents.MouseInteraction, {\n type: d.type,\n target\n });\n const { triggerFocus } = this.config;\n switch (d.type) {\n case MouseInteractions.Blur:\n if (\"blur\" in target) {\n target.blur();\n }\n break;\n case MouseInteractions.Focus:\n if (triggerFocus && target.focus) {\n target.focus({\n preventScroll: true\n });\n }\n break;\n case MouseInteractions.Click:\n case MouseInteractions.TouchStart:\n case MouseInteractions.TouchEnd:\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n if (isSync) {\n if (d.type === MouseInteractions.TouchStart) {\n this.touchActive = true;\n } else if (d.type === MouseInteractions.TouchEnd) {\n this.touchActive = false;\n }\n if (d.type === MouseInteractions.MouseDown) {\n this.lastMouseDownEvent = [target, event];\n } else if (d.type === MouseInteractions.MouseUp) {\n this.lastMouseDownEvent = null;\n }\n this.mousePos = {\n x: d.x || 0,\n y: d.y || 0,\n id: d.id,\n debugData: d\n };\n } else {\n if (d.type === MouseInteractions.TouchStart) {\n this.tailPositions.length = 0;\n }\n this.moveAndHover(d.x || 0, d.y || 0, d.id, isSync, d);\n if (d.type === MouseInteractions.Click) {\n this.mouse.classList.remove(\"active\");\n void this.mouse.offsetWidth;\n this.mouse.classList.add(\"active\");\n } else if (d.type === MouseInteractions.TouchStart) {\n void this.mouse.offsetWidth;\n this.mouse.classList.add(\"touch-active\");\n } else if (d.type === MouseInteractions.TouchEnd) {\n this.mouse.classList.remove(\"touch-active\");\n } else {\n target.dispatchEvent(event);\n }\n }\n break;\n case MouseInteractions.TouchCancel:\n if (isSync) {\n this.touchActive = false;\n } else {\n this.mouse.classList.remove(\"touch-active\");\n }\n break;\n default:\n target.dispatchEvent(event);\n }\n break;\n }\n case IncrementalSource.Scroll: {\n if (d.id === -1) {\n break;\n }\n if (this.usingVirtualDom) {\n const target = this.virtualDom.mirror.getNode(d.id);\n if (!target) {\n return this.debugNodeNotFound(d, d.id);\n }\n target.scrollData = d;\n break;\n }\n this.applyScroll(d, isSync);\n break;\n }\n case IncrementalSource.ViewportResize:\n this.emitter.emit(ReplayerEvents.Resize, {\n width: d.width,\n height: d.height\n });\n break;\n case IncrementalSource.Input: {\n if (d.id === -1) {\n break;\n }\n if (this.usingVirtualDom) {\n const target = this.virtualDom.mirror.getNode(d.id);\n if (!target) {\n return this.debugNodeNotFound(d, d.id);\n }\n target.inputData = d;\n break;\n }\n this.applyInput(d);\n break;\n }\n case IncrementalSource.MediaInteraction: {\n const target = this.usingVirtualDom ? this.virtualDom.mirror.getNode(d.id) : this.mirror.getNode(d.id);\n if (!target) {\n return this.debugNodeNotFound(d, d.id);\n }\n const mediaEl = target;\n const { events } = this.service.state.context;\n this.mediaManager.mediaMutation({\n target: mediaEl,\n timeOffset: e2.timestamp - events[0].timestamp,\n mutation: d\n });\n break;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration: {\n if (this.usingVirtualDom) {\n if (d.styleId) this.constructedStyleMutations.push(d);\n else if (d.id)\n (_b = this.virtualDom.mirror.getNode(d.id)) == null ? void 0 : _b.rules.push(d);\n } else this.applyStyleSheetMutation(d);\n break;\n }\n case IncrementalSource.CanvasMutation: {\n if (!this.config.UNSAFE_replayCanvas) {\n return;\n }\n if (this.usingVirtualDom) {\n const target = this.virtualDom.mirror.getNode(\n d.id\n );\n if (!target) {\n return this.debugNodeNotFound(d, d.id);\n }\n target.canvasMutations.push({\n event: e2,\n mutation: d\n });\n } else {\n const target = this.mirror.getNode(d.id);\n if (!target) {\n return this.debugNodeNotFound(d, d.id);\n }\n void canvasMutation({\n event: e2,\n mutation: d,\n target,\n imageMap: this.imageMap,\n canvasEventMap: this.canvasEventMap,\n errorHandler: this.warnCanvasMutationFailed.bind(this)\n });\n }\n break;\n }\n case IncrementalSource.Font: {\n try {\n const fontFace = new FontFace(\n d.family,\n d.buffer ? new Uint8Array(JSON.parse(d.fontSource)) : d.fontSource,\n d.descriptors\n );\n (_c = this.iframe.contentDocument) == null ? void 0 : _c.fonts.add(fontFace);\n } catch (error) {\n this.warn(error);\n }\n break;\n }\n case IncrementalSource.Selection: {\n if (isSync) {\n this.lastSelectionData = d;\n break;\n }\n this.applySelection(d);\n break;\n }\n case IncrementalSource.AdoptedStyleSheet: {\n if (this.usingVirtualDom) this.adoptedStyleSheets.push(d);\n else this.applyAdoptedStyleSheet(d);\n break;\n }\n }\n }\n /**\n * Apply the mutation to the virtual dom or the real dom.\n * @param d - The mutation data.\n * @param isSync - Whether the mutation should be applied synchronously (while fast-forwarding).\n */\n applyMutation(d, isSync) {\n if (this.config.useVirtualDom && !this.usingVirtualDom && isSync) {\n this.usingVirtualDom = true;\n buildFromDom(this.iframe.contentDocument, this.mirror, this.virtualDom);\n if (Object.keys(this.legacy_missingNodeRetryMap).length) {\n for (const key in this.legacy_missingNodeRetryMap) {\n try {\n const value = this.legacy_missingNodeRetryMap[key];\n const virtualNode = buildFromNode(\n value.node,\n this.virtualDom,\n this.mirror\n );\n if (virtualNode) value.node = virtualNode;\n } catch (error) {\n this.warn(error);\n }\n }\n }\n }\n const mirror2 = this.usingVirtualDom ? this.virtualDom.mirror : this.mirror;\n d.removes = d.removes.filter((mutation) => {\n if (!mirror2.getNode(mutation.id)) {\n this.warnNodeNotFound(d, mutation.id);\n return false;\n }\n return true;\n });\n d.removes.forEach((mutation) => {\n var _a2;\n const target = mirror2.getNode(mutation.id);\n if (!target) {\n return;\n }\n let parent = mirror2.getNode(\n mutation.parentId\n );\n if (!parent) {\n return this.warnNodeNotFound(d, mutation.parentId);\n }\n if (mutation.isShadow && hasShadowRoot(parent)) {\n parent = parent.shadowRoot;\n }\n mirror2.removeNodeFromMap(target);\n if (parent)\n try {\n parent.removeChild(target);\n if (this.usingVirtualDom && target.nodeName === \"#text\" && parent.nodeName === \"STYLE\" && ((_a2 = parent.rules) == null ? void 0 : _a2.length) > 0)\n parent.rules = [];\n } catch (error) {\n if (error instanceof DOMException) {\n this.warn(\n \"parent could not remove child in mutation\",\n parent,\n target,\n d\n );\n } else {\n throw error;\n }\n }\n });\n const legacy_missingNodeMap = {\n ...this.legacy_missingNodeRetryMap\n };\n const queue = [];\n const nextNotInDOM = (mutation) => {\n let next = null;\n if (mutation.nextId) {\n next = mirror2.getNode(mutation.nextId);\n }\n if (mutation.nextId !== null && mutation.nextId !== void 0 && mutation.nextId !== -1 && !next) {\n return true;\n }\n return false;\n };\n const appendNode = (mutation) => {\n var _a2, _b;\n if (!this.iframe.contentDocument) {\n return this.warn(\"Looks like your replayer has been destroyed.\");\n }\n let parent = mirror2.getNode(\n mutation.parentId\n );\n if (!parent) {\n if (mutation.node.type === NodeType.Document) {\n return this.newDocumentQueue.push(mutation);\n }\n return queue.push(mutation);\n }\n if (mutation.node.isShadow) {\n if (!hasShadowRoot(parent)) {\n parent.attachShadow({ mode: \"open\" });\n parent = parent.shadowRoot;\n } else parent = parent.shadowRoot;\n }\n let previous = null;\n let next = null;\n if (mutation.previousId) {\n previous = mirror2.getNode(mutation.previousId);\n }\n if (mutation.nextId) {\n next = mirror2.getNode(mutation.nextId);\n }\n if (nextNotInDOM(mutation)) {\n return queue.push(mutation);\n }\n if (mutation.node.rootId && !mirror2.getNode(mutation.node.rootId)) {\n return;\n }\n const targetDoc = mutation.node.rootId ? mirror2.getNode(mutation.node.rootId) : this.usingVirtualDom ? this.virtualDom : this.iframe.contentDocument;\n if (isSerializedIframe(parent, mirror2)) {\n this.attachDocumentToIframe(\n mutation,\n parent\n );\n return;\n }\n const afterAppend = (node2, id) => {\n if (this.usingVirtualDom) return;\n applyDialogToTopLevel(node2);\n for (const plugin3 of this.config.plugins || []) {\n if (plugin3.onBuild) plugin3.onBuild(node2, { id, replayer: this });\n }\n };\n const target = buildNodeWithSN(mutation.node, {\n doc: targetDoc,\n // can be Document or RRDocument\n mirror: mirror2,\n // can be this.mirror or virtualDom.mirror\n skipChild: true,\n hackCss: true,\n cache: this.cache,\n /**\n * caveat: `afterAppend` only gets called on child nodes of target\n * we have to call it again below when this target was added to the DOM\n */\n afterAppend\n });\n if (mutation.previousId === -1 || mutation.nextId === -1) {\n legacy_missingNodeMap[mutation.node.id] = {\n node: target,\n mutation\n };\n return;\n }\n const parentSn = mirror2.getMeta(parent);\n if (parentSn && parentSn.type === NodeType.Element && mutation.node.type === NodeType.Text) {\n const prospectiveSiblings = Array.isArray(parent.childNodes) ? parent.childNodes : Array.from(parent.childNodes);\n if (parentSn.tagName === \"textarea\") {\n for (const c2 of prospectiveSiblings) {\n if (c2.nodeType === parent.TEXT_NODE) {\n parent.removeChild(c2);\n }\n }\n } else if (parentSn.tagName === \"style\" && prospectiveSiblings.length === 1) {\n for (const cssText of prospectiveSiblings) {\n if (cssText.nodeType === parent.TEXT_NODE && !mirror2.hasNode(cssText)) {\n target.textContent = cssText.textContent;\n parent.removeChild(cssText);\n }\n }\n }\n } else if ((parentSn == null ? void 0 : parentSn.type) === NodeType.Document) {\n const parentDoc = parent;\n if (mutation.node.type === NodeType.DocumentType && ((_a2 = parentDoc.childNodes[0]) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_TYPE_NODE)\n parentDoc.removeChild(parentDoc.childNodes[0]);\n if (target.nodeName === \"HTML\" && parentDoc.documentElement)\n parentDoc.removeChild(\n parentDoc.documentElement\n );\n }\n if (previous && previous.nextSibling && previous.nextSibling.parentNode) {\n parent.insertBefore(\n target,\n previous.nextSibling\n );\n } else if (next && next.parentNode) {\n parent.contains(next) ? parent.insertBefore(target, next) : parent.insertBefore(target, null);\n } else {\n parent.appendChild(target);\n }\n afterAppend(target, mutation.node.id);\n if (this.usingVirtualDom && target.nodeName === \"#text\" && parent.nodeName === \"STYLE\" && ((_b = parent.rules) == null ? void 0 : _b.length) > 0)\n parent.rules = [];\n if (isSerializedIframe(target, this.mirror)) {\n const targetId = this.mirror.getId(target);\n const mutationInQueue = this.newDocumentQueue.find(\n (m) => m.parentId === targetId\n );\n if (mutationInQueue) {\n this.attachDocumentToIframe(\n mutationInQueue,\n target\n );\n this.newDocumentQueue = this.newDocumentQueue.filter(\n (m) => m !== mutationInQueue\n );\n }\n }\n if (mutation.previousId || mutation.nextId) {\n this.legacy_resolveMissingNode(\n legacy_missingNodeMap,\n parent,\n target,\n mutation\n );\n }\n };\n d.adds.forEach((mutation) => {\n appendNode(mutation);\n });\n const startTime = Date.now();\n while (queue.length) {\n const resolveTrees = queueToResolveTrees(queue);\n queue.length = 0;\n if (Date.now() - startTime > 500) {\n this.warn(\n \"Timeout in the loop, please check the resolve tree data:\",\n resolveTrees\n );\n break;\n }\n for (const tree of resolveTrees) {\n const parent = mirror2.getNode(tree.value.parentId);\n if (!parent) {\n this.debug(\n \"Drop resolve tree since there is no parent for the root node.\",\n tree\n );\n } else {\n iterateResolveTree(tree, (mutation) => {\n appendNode(mutation);\n });\n }\n }\n }\n if (Object.keys(legacy_missingNodeMap).length) {\n Object.assign(this.legacy_missingNodeRetryMap, legacy_missingNodeMap);\n }\n uniqueTextMutations(d.texts).forEach((mutation) => {\n var _a2;\n const target = mirror2.getNode(mutation.id);\n if (!target) {\n if (d.removes.find((r2) => r2.id === mutation.id)) {\n return;\n }\n return this.warnNodeNotFound(d, mutation.id);\n }\n const parentEl = target.parentElement;\n if (mutation.value && parentEl && parentEl.tagName === \"STYLE\") {\n target.textContent = adaptCssForReplay(mutation.value, this.cache);\n } else {\n target.textContent = mutation.value;\n }\n if (this.usingVirtualDom) {\n const parent = target.parentNode;\n if (((_a2 = parent == null ? void 0 : parent.rules) == null ? void 0 : _a2.length) > 0) parent.rules = [];\n }\n });\n d.attributes.forEach((mutation) => {\n var _a2;\n const target = mirror2.getNode(mutation.id);\n if (!target) {\n if (d.removes.find((r2) => r2.id === mutation.id)) {\n return;\n }\n return this.warnNodeNotFound(d, mutation.id);\n }\n for (const attributeName in mutation.attributes) {\n if (typeof attributeName === \"string\") {\n const value = mutation.attributes[attributeName];\n if (value === null) {\n target.removeAttribute(attributeName);\n if (attributeName === \"open\")\n removeDialogFromTopLevel(target, mutation);\n } else if (typeof value === \"string\") {\n try {\n if (attributeName === \"_cssText\" && (target.nodeName === \"LINK\" || target.nodeName === \"STYLE\")) {\n try {\n const newSn = mirror2.getMeta(\n target\n );\n Object.assign(\n newSn.attributes,\n mutation.attributes\n );\n const newNode = buildNodeWithSN(newSn, {\n doc: target.ownerDocument,\n // can be Document or RRDocument\n mirror: mirror2,\n skipChild: true,\n hackCss: true,\n cache: this.cache\n });\n const siblingNode = target.nextSibling;\n const parentNode2 = target.parentNode;\n if (newNode && parentNode2) {\n parentNode2.removeChild(target);\n parentNode2.insertBefore(\n newNode,\n siblingNode\n );\n mirror2.replace(mutation.id, newNode);\n break;\n }\n } catch (e2) {\n }\n }\n if (attributeName === \"value\" && target.nodeName === \"TEXTAREA\") {\n const textarea = target;\n textarea.childNodes.forEach(\n (c2) => textarea.removeChild(c2)\n );\n const tn = (_a2 = target.ownerDocument) == null ? void 0 : _a2.createTextNode(value);\n if (tn) {\n textarea.appendChild(tn);\n }\n } else {\n target.setAttribute(\n attributeName,\n value\n );\n }\n if (attributeName === \"rr_open_mode\" && target.nodeName === \"DIALOG\") {\n applyDialogToTopLevel(target, mutation);\n }\n } catch (error) {\n this.warn(\n \"An error occurred may due to the checkout feature.\",\n error\n );\n }\n } else if (attributeName === \"style\") {\n const styleValues = value;\n const targetEl = target;\n for (const s2 in styleValues) {\n if (styleValues[s2] === false) {\n targetEl.style.removeProperty(s2);\n } else if (styleValues[s2] instanceof Array) {\n const svp = styleValues[s2];\n targetEl.style.setProperty(s2, svp[0], svp[1]);\n } else {\n const svs = styleValues[s2];\n targetEl.style.setProperty(s2, svs);\n }\n }\n }\n }\n }\n });\n }\n /**\n * Apply the scroll data on real elements.\n * If the replayer is in sync mode, smooth scroll behavior should be disabled.\n * @param d - the scroll data\n * @param isSync - whether the replayer is in sync mode(fast-forward)\n */\n applyScroll(d, isSync) {\n var _a2, _b;\n const target = this.mirror.getNode(d.id);\n if (!target) {\n return this.debugNodeNotFound(d, d.id);\n }\n const sn = this.mirror.getMeta(target);\n if (target === this.iframe.contentDocument) {\n (_a2 = this.iframe.contentWindow) == null ? void 0 : _a2.scrollTo({\n top: d.y,\n left: d.x,\n behavior: isSync ? \"auto\" : \"smooth\"\n });\n } else if ((sn == null ? void 0 : sn.type) === NodeType.Document) {\n (_b = target.defaultView) == null ? void 0 : _b.scrollTo({\n top: d.y,\n left: d.x,\n behavior: isSync ? \"auto\" : \"smooth\"\n });\n } else {\n try {\n target.scrollTo({\n top: d.y,\n left: d.x,\n behavior: isSync ? \"auto\" : \"smooth\"\n });\n } catch (error) {\n }\n }\n }\n applyInput(d) {\n const target = this.mirror.getNode(d.id);\n if (!target) {\n return this.debugNodeNotFound(d, d.id);\n }\n try {\n target.checked = d.isChecked;\n target.value = d.text;\n } catch (error) {\n }\n }\n applySelection(d) {\n try {\n const selectionSet = /* @__PURE__ */ new Set();\n const ranges = d.ranges.map(({ start, startOffset, end, endOffset }) => {\n const startContainer = this.mirror.getNode(start);\n const endContainer = this.mirror.getNode(end);\n if (!startContainer || !endContainer) return;\n const result2 = new Range();\n result2.setStart(startContainer, startOffset);\n result2.setEnd(endContainer, endOffset);\n const doc = startContainer.ownerDocument;\n const selection = doc == null ? void 0 : doc.getSelection();\n selection && selectionSet.add(selection);\n return {\n range: result2,\n selection\n };\n });\n selectionSet.forEach((s2) => s2.removeAllRanges());\n ranges.forEach((r2) => {\n var _a2;\n return r2 && ((_a2 = r2.selection) == null ? void 0 : _a2.addRange(r2.range));\n });\n } catch (error) {\n }\n }\n applyStyleSheetMutation(data) {\n var _a2;\n let styleSheet = null;\n if (data.styleId) styleSheet = this.styleMirror.getStyle(data.styleId);\n else if (data.id)\n styleSheet = ((_a2 = this.mirror.getNode(data.id)) == null ? void 0 : _a2.sheet) || null;\n if (!styleSheet) return;\n if (data.source === IncrementalSource.StyleSheetRule)\n this.applyStyleSheetRule(data, styleSheet);\n else if (data.source === IncrementalSource.StyleDeclaration)\n this.applyStyleDeclaration(data, styleSheet);\n }\n applyStyleSheetRule(data, styleSheet) {\n var _a2, _b, _c, _d;\n (_a2 = data.adds) == null ? void 0 : _a2.forEach(({ rule: rule2, index: nestedIndex }) => {\n try {\n if (Array.isArray(nestedIndex)) {\n const { positions, index: index2 } = getPositionsAndIndex(nestedIndex);\n const nestedRule = getNestedRule(styleSheet.cssRules, positions);\n nestedRule.insertRule(rule2, index2);\n } else {\n const index2 = nestedIndex === void 0 ? void 0 : Math.min(nestedIndex, styleSheet.cssRules.length);\n styleSheet == null ? void 0 : styleSheet.insertRule(rule2, index2);\n }\n } catch (e2) {\n }\n });\n (_b = data.removes) == null ? void 0 : _b.forEach(({ index: nestedIndex }) => {\n try {\n if (Array.isArray(nestedIndex)) {\n const { positions, index: index2 } = getPositionsAndIndex(nestedIndex);\n const nestedRule = getNestedRule(styleSheet.cssRules, positions);\n nestedRule.deleteRule(index2 || 0);\n } else {\n styleSheet == null ? void 0 : styleSheet.deleteRule(nestedIndex);\n }\n } catch (e2) {\n }\n });\n if (data.replace)\n try {\n void ((_c = styleSheet.replace) == null ? void 0 : _c.call(styleSheet, data.replace));\n } catch (e2) {\n }\n if (data.replaceSync)\n try {\n (_d = styleSheet.replaceSync) == null ? void 0 : _d.call(styleSheet, data.replaceSync);\n } catch (e2) {\n }\n }\n applyStyleDeclaration(data, styleSheet) {\n if (data.set) {\n const rule2 = getNestedRule(\n styleSheet.rules,\n data.index\n );\n rule2.style.setProperty(\n data.set.property,\n data.set.value,\n data.set.priority\n );\n }\n if (data.remove) {\n const rule2 = getNestedRule(\n styleSheet.rules,\n data.index\n );\n rule2.style.removeProperty(data.remove.property);\n }\n }\n applyAdoptedStyleSheet(data) {\n var _a2;\n const targetHost = this.mirror.getNode(data.id);\n if (!targetHost) return;\n (_a2 = data.styles) == null ? void 0 : _a2.forEach((style) => {\n var _a3;\n let newStyleSheet = null;\n let hostWindow = null;\n if (hasShadowRoot(targetHost))\n hostWindow = ((_a3 = targetHost.ownerDocument) == null ? void 0 : _a3.defaultView) || null;\n else if (targetHost.nodeName === \"#document\")\n hostWindow = targetHost.defaultView;\n if (!hostWindow) return;\n try {\n newStyleSheet = new hostWindow.CSSStyleSheet();\n this.styleMirror.add(newStyleSheet, style.styleId);\n this.applyStyleSheetRule(\n {\n source: IncrementalSource.StyleSheetRule,\n adds: style.rules\n },\n newStyleSheet\n );\n } catch (e2) {\n }\n });\n const MAX_RETRY_TIME = 10;\n let count = 0;\n const adoptStyleSheets = (targetHost2, styleIds) => {\n const stylesToAdopt = styleIds.map((styleId) => this.styleMirror.getStyle(styleId)).filter((style) => style !== null);\n if (hasShadowRoot(targetHost2))\n targetHost2.shadowRoot.adoptedStyleSheets = stylesToAdopt;\n else if (targetHost2.nodeName === \"#document\")\n targetHost2.adoptedStyleSheets = stylesToAdopt;\n if (stylesToAdopt.length !== styleIds.length && count < MAX_RETRY_TIME) {\n setTimeout(\n () => adoptStyleSheets(targetHost2, styleIds),\n 0 + 100 * count\n );\n count++;\n }\n };\n adoptStyleSheets(targetHost, data.styleIds);\n }\n legacy_resolveMissingNode(map, parent, target, targetMutation) {\n const { previousId, nextId } = targetMutation;\n const previousInMap = previousId && map[previousId];\n const nextInMap = nextId && map[nextId];\n if (previousInMap) {\n const { node: node2, mutation } = previousInMap;\n parent.insertBefore(node2, target);\n delete map[mutation.node.id];\n delete this.legacy_missingNodeRetryMap[mutation.node.id];\n if (mutation.previousId || mutation.nextId) {\n this.legacy_resolveMissingNode(map, parent, node2, mutation);\n }\n }\n if (nextInMap) {\n const { node: node2, mutation } = nextInMap;\n parent.insertBefore(\n node2,\n target.nextSibling\n );\n delete map[mutation.node.id];\n delete this.legacy_missingNodeRetryMap[mutation.node.id];\n if (mutation.previousId || mutation.nextId) {\n this.legacy_resolveMissingNode(map, parent, node2, mutation);\n }\n }\n }\n moveAndHover(x2, y, id, isSync, debugData) {\n const target = this.mirror.getNode(id);\n if (!target) {\n return this.debugNodeNotFound(debugData, id);\n }\n const base = getBaseDimension(target, this.iframe);\n const _x = x2 * base.absoluteScale + base.x;\n const _y = y * base.absoluteScale + base.y;\n this.mouse.style.left = `${_x}px`;\n this.mouse.style.top = `${_y}px`;\n if (!isSync) {\n this.drawMouseTail({ x: _x, y: _y });\n }\n this.hoverElements(target);\n }\n drawMouseTail(position) {\n if (!this.mouseTail) {\n return;\n }\n const { lineCap, lineWidth, strokeStyle, duration } = this.config.mouseTail === true ? defaultMouseTailConfig : Object.assign({}, defaultMouseTailConfig, this.config.mouseTail);\n const draw = () => {\n if (!this.mouseTail) {\n return;\n }\n const ctx = this.mouseTail.getContext(\"2d\");\n if (!ctx || !this.tailPositions.length) {\n return;\n }\n ctx.clearRect(0, 0, this.mouseTail.width, this.mouseTail.height);\n ctx.beginPath();\n ctx.lineWidth = lineWidth;\n ctx.lineCap = lineCap;\n ctx.strokeStyle = strokeStyle;\n ctx.moveTo(this.tailPositions[0].x, this.tailPositions[0].y);\n this.tailPositions.forEach((p) => ctx.lineTo(p.x, p.y));\n ctx.stroke();\n };\n this.tailPositions.push(position);\n draw();\n setTimeout(() => {\n this.tailPositions = this.tailPositions.filter((p) => p !== position);\n draw();\n }, duration / this.speedService.state.context.timer.speed);\n }\n hoverElements(el) {\n var _a2;\n (_a2 = this.lastHoveredRootNode || this.iframe.contentDocument) == null ? void 0 : _a2.querySelectorAll(\".\\\\:hover\").forEach((hoveredEl) => {\n hoveredEl.classList.remove(\":hover\");\n });\n this.lastHoveredRootNode = el.getRootNode();\n let currentEl = el;\n while (currentEl) {\n if (currentEl.classList) {\n currentEl.classList.add(\":hover\");\n }\n currentEl = currentEl.parentElement;\n }\n }\n isUserInteraction(event) {\n if (event.type !== EventType.IncrementalSnapshot) {\n return false;\n }\n return event.data.source > IncrementalSource.Mutation && event.data.source <= IncrementalSource.Input;\n }\n backToNormal() {\n this.nextUserInteractionEvent = null;\n if (this.speedService.state.matches(\"normal\")) {\n return;\n }\n this.speedService.send({ type: \"BACK_TO_NORMAL\" });\n this.emitter.emit(ReplayerEvents.SkipEnd, {\n speed: this.speedService.state.context.normalSpeed\n });\n }\n warnNodeNotFound(d, id) {\n this.warn(`Node with id '${id}' not found. `, d);\n }\n warnCanvasMutationFailed(d, error) {\n this.warn(`Has error on canvas update`, error, \"canvas mutation:\", d);\n }\n debugNodeNotFound(d, id) {\n this.debug(`Node with id '${id}' not found. `, d);\n }\n warn(...args) {\n if (!this.config.showWarning) {\n return;\n }\n this.config.logger.warn(REPLAY_CONSOLE_PREFIX, ...args);\n }\n debug(...args) {\n if (!this.config.showDebug) {\n return;\n }\n this.config.logger.log(REPLAY_CONSOLE_PREFIX, ...args);\n }\n}\nconst { addCustomEvent } = record;\nconst { freezePage } = record;\nconst { takeFullSnapshot } = record;\nexport {\n EventType,\n IncrementalSource,\n MouseInteractions,\n Replayer,\n ReplayerEvents,\n addCustomEvent,\n canvasMutation,\n freezePage,\n _mirror as mirror,\n record,\n takeFullSnapshot,\n utils\n};\n//# sourceMappingURL=rrweb.js.map\n","export enum EventType {\n DomContentLoaded,\n Load,\n FullSnapshot,\n IncrementalSnapshot,\n Meta,\n Custom,\n Plugin,\n}\n\nexport type domContentLoadedEvent = {\n type: EventType.DomContentLoaded;\n data: unknown;\n};\n\nexport type loadedEvent = {\n type: EventType.Load;\n data: unknown;\n};\n\nexport type fullSnapshotEvent = {\n type: EventType.FullSnapshot;\n data: {\n node: serializedNodeWithId;\n initialOffset: {\n top: number;\n left: number;\n };\n };\n};\n\nexport type incrementalSnapshotEvent = {\n type: EventType.IncrementalSnapshot;\n data: incrementalData;\n};\n\nexport type metaEvent = {\n type: EventType.Meta;\n data: {\n href: string;\n width: number;\n height: number;\n };\n};\n\nexport type customEvent = {\n type: EventType.Custom;\n data: {\n tag: string;\n payload: T;\n };\n};\n\nexport type pluginEvent = {\n type: EventType.Plugin;\n data: {\n plugin: string;\n payload: T;\n };\n};\n\nexport enum IncrementalSource {\n Mutation,\n MouseMove,\n MouseInteraction,\n Scroll,\n ViewportResize,\n Input,\n TouchMove,\n MediaInteraction,\n StyleSheetRule,\n CanvasMutation,\n Font,\n Log,\n Drag,\n StyleDeclaration,\n Selection,\n AdoptedStyleSheet,\n CustomElement,\n}\n\nexport type mutationData = {\n source: IncrementalSource.Mutation;\n} & mutationCallbackParam;\n\nexport type mousemoveData = {\n source:\n | IncrementalSource.MouseMove\n | IncrementalSource.TouchMove\n | IncrementalSource.Drag;\n positions: mousePosition[];\n};\n\nexport type mouseInteractionData = {\n source: IncrementalSource.MouseInteraction;\n} & mouseInteractionParam;\n\nexport type scrollData = {\n source: IncrementalSource.Scroll;\n} & scrollPosition;\n\nexport type viewportResizeData = {\n source: IncrementalSource.ViewportResize;\n} & viewportResizeDimension;\n\nexport type inputData = {\n source: IncrementalSource.Input;\n id: number;\n} & inputValue;\n\nexport type mediaInteractionData = {\n source: IncrementalSource.MediaInteraction;\n} & mediaInteractionParam;\n\nexport type styleSheetRuleData = {\n source: IncrementalSource.StyleSheetRule;\n} & styleSheetRuleParam;\n\nexport type styleDeclarationData = {\n source: IncrementalSource.StyleDeclaration;\n} & styleDeclarationParam;\n\nexport type canvasMutationData = {\n source: IncrementalSource.CanvasMutation;\n} & canvasMutationParam;\n\nexport type fontData = {\n source: IncrementalSource.Font;\n} & fontParam;\n\nexport type selectionData = {\n source: IncrementalSource.Selection;\n} & selectionParam;\n\nexport type adoptedStyleSheetData = {\n source: IncrementalSource.AdoptedStyleSheet;\n} & adoptedStyleSheetParam;\n\nexport type customElementData = {\n source: IncrementalSource.CustomElement;\n} & customElementParam;\n\nexport type incrementalData =\n | mutationData\n | mousemoveData\n | mouseInteractionData\n | scrollData\n | viewportResizeData\n | inputData\n | mediaInteractionData\n | styleSheetRuleData\n | canvasMutationData\n | fontData\n | selectionData\n | styleDeclarationData\n | adoptedStyleSheetData\n | customElementData;\n\nexport type eventWithoutTime =\n | domContentLoadedEvent\n | loadedEvent\n | fullSnapshotEvent\n | incrementalSnapshotEvent\n | metaEvent\n | customEvent\n | pluginEvent;\n\n/**\n * @deprecated intended for internal use\n * a synonym for eventWithoutTime\n */\nexport type event = eventWithoutTime;\n\nexport type eventWithTime = eventWithoutTime & {\n timestamp: number;\n delay?: number;\n};\n\nexport type canvasEventWithTime = eventWithTime & {\n type: EventType.IncrementalSnapshot;\n data: canvasMutationData;\n};\n\nexport type blockClass = string | RegExp;\n\nexport type maskTextClass = string | RegExp;\n\nexport type SamplingStrategy = Partial<{\n /**\n * false means not to record mouse/touch move events\n * number is the throttle threshold of recording mouse/touch move\n */\n mousemove: boolean | number;\n /**\n * number is the throttle threshold of mouse/touch move callback\n */\n mousemoveCallback: number;\n /**\n * false means not to record mouse interaction events\n * can also specify record some kinds of mouse interactions\n */\n mouseInteraction: boolean | Record;\n /**\n * number is the throttle threshold of recording scroll\n */\n scroll: number;\n /**\n * number is the throttle threshold of recording media interactions\n */\n media: number;\n /**\n * 'all' will record all the input events\n * 'last' will only record the last input value while input a sequence of chars\n */\n input: 'all' | 'last';\n /**\n * 'all' will record every single canvas call\n * number between 1 and 60, will record an image snapshots in a web-worker a (maximum) number of times per second.\n * Number only supported where [`OffscreenCanvas`](http://mdn.io/offscreencanvas) is supported.\n */\n canvas: 'all' | number;\n}>;\n\nexport interface ICrossOriginIframeMirror {\n getId(\n iframe: HTMLIFrameElement,\n remoteId: number,\n parentToRemoteMap?: Map,\n remoteToParentMap?: Map,\n ): number;\n getIds(iframe: HTMLIFrameElement, remoteId: number[]): number[];\n getRemoteId(\n iframe: HTMLIFrameElement,\n parentId: number,\n map?: Map,\n ): number;\n getRemoteIds(iframe: HTMLIFrameElement, parentId: number[]): number[];\n reset(iframe?: HTMLIFrameElement): void;\n}\n\nexport type RecordPlugin = {\n name: string;\n observer?: (\n cb: (...args: Array) => void,\n win: IWindow,\n options: TOptions,\n ) => listenerHandler;\n eventProcessor?: (event: eventWithTime) => eventWithTime & TExtend;\n getMirror?: (mirrors: {\n nodeMirror: IMirror;\n crossOriginIframeMirror: ICrossOriginIframeMirror;\n crossOriginIframeStyleMirror: ICrossOriginIframeMirror;\n }) => void;\n options: TOptions;\n};\n\nexport type hooksParam = {\n mutation?: mutationCallBack;\n mousemove?: mousemoveCallBack;\n mouseInteraction?: mouseInteractionCallBack;\n scroll?: scrollCallback;\n viewportResize?: viewportResizeCallback;\n input?: inputCallback;\n mediaInteaction?: mediaInteractionCallback;\n styleSheetRule?: styleSheetRuleCallback;\n styleDeclaration?: styleDeclarationCallback;\n canvasMutation?: canvasMutationCallback;\n font?: fontCallback;\n selection?: selectionCallback;\n customElement?: customElementCallback;\n};\n\n// https://dom.spec.whatwg.org/#interface-mutationrecord\nexport type mutationRecord = Readonly<{\n type: string;\n target: Node;\n oldValue: string | null;\n addedNodes: NodeList;\n removedNodes: NodeList;\n attributeName: string | null;\n}>;\n\nexport type textCursor = {\n node: Node;\n value: string | null;\n};\nexport type textMutation = {\n id: number;\n value: string | null;\n};\n\nexport type styleOMValue = {\n [key: string]: styleValueWithPriority | string | false;\n};\n\nexport type styleValueWithPriority = [string, string];\n\nexport type attributeCursor = {\n node: Node;\n attributes: {\n [key: string]: string | styleOMValue | null;\n };\n styleDiff: styleOMValue;\n _unchangedStyles: styleOMValue;\n};\nexport type attributeMutation = {\n id: number;\n attributes: {\n [key: string]: string | styleOMValue | null;\n };\n};\n\nexport type removedNodeMutation = {\n parentId: number;\n id: number;\n isShadow?: boolean;\n};\n\nexport type addedNodeMutation = {\n parentId: number;\n // Newly recorded mutations will not have previousId any more, just for compatibility\n previousId?: number | null;\n nextId: number | null;\n node: serializedNodeWithId;\n};\n\nexport type mutationCallbackParam = {\n texts: textMutation[];\n attributes: attributeMutation[];\n removes: removedNodeMutation[];\n adds: addedNodeMutation[];\n isAttachIframe?: true;\n};\n\nexport type mutationCallBack = (m: mutationCallbackParam) => void;\n\nexport type mousemoveCallBack = (\n p: mousePosition[],\n source:\n | IncrementalSource.MouseMove\n | IncrementalSource.TouchMove\n | IncrementalSource.Drag,\n) => void;\n\nexport type mousePosition = {\n x: number;\n y: number;\n id: number;\n timeOffset: number;\n};\n\nexport type mouseMovePos = {\n x: number;\n y: number;\n id: number;\n debugData: incrementalData;\n};\n\nexport enum MouseInteractions {\n MouseUp,\n MouseDown,\n Click,\n ContextMenu,\n DblClick,\n Focus,\n Blur,\n TouchStart,\n TouchMove_Departed, // we will start a separate observer for touch move event\n TouchEnd,\n TouchCancel,\n}\n\nexport enum PointerTypes {\n Mouse,\n Pen,\n Touch,\n}\n\nexport enum CanvasContext {\n '2D',\n WebGL,\n WebGL2,\n}\n\nexport type SerializedCanvasArg =\n | {\n rr_type: 'ArrayBuffer';\n base64: string; // base64\n }\n | {\n rr_type: 'Blob';\n data: Array;\n type?: string;\n }\n | {\n rr_type: string;\n src: string; // url of image\n }\n | {\n rr_type: string;\n args: Array;\n }\n | {\n rr_type: string;\n index: number;\n };\n\nexport type CanvasArg =\n | SerializedCanvasArg\n | string\n | number\n | boolean\n | null\n | CanvasArg[];\n\ntype mouseInteractionParam = {\n type: MouseInteractions;\n id: number;\n x?: number;\n y?: number;\n pointerType?: PointerTypes;\n};\n\nexport type mouseInteractionCallBack = (d: mouseInteractionParam) => void;\n\nexport type scrollPosition = {\n id: number;\n x: number;\n y: number;\n};\n\nexport type scrollCallback = (p: scrollPosition) => void;\n\nexport type styleSheetAddRule = {\n rule: string;\n index?: number | number[];\n};\n\nexport type styleSheetDeleteRule = {\n index: number | number[];\n};\n\nexport type styleSheetRuleParam = {\n id?: number;\n styleId?: number;\n removes?: styleSheetDeleteRule[];\n adds?: styleSheetAddRule[];\n replace?: string;\n replaceSync?: string;\n};\n\nexport type styleSheetRuleCallback = (s: styleSheetRuleParam) => void;\n\nexport type adoptedStyleSheetParam = {\n // id indicates the node id of document or shadow DOMs' host element.\n id: number;\n // New CSSStyleSheets which have never appeared before.\n styles?: {\n styleId: number;\n rules: styleSheetAddRule[];\n }[];\n // StyleSheet ids to be adopted.\n styleIds: number[];\n};\n\nexport type adoptedStyleSheetCallback = (a: adoptedStyleSheetParam) => void;\n\nexport type styleDeclarationParam = {\n id?: number;\n styleId?: number;\n index: number[];\n set?: {\n property: string;\n value: string | null;\n priority: string | undefined;\n };\n remove?: {\n property: string;\n };\n};\n\nexport type styleDeclarationCallback = (s: styleDeclarationParam) => void;\n\nexport type canvasMutationCommand = {\n property: string;\n args: Array;\n setter?: true;\n};\n\nexport type canvasMutationParam =\n | {\n id: number;\n type: CanvasContext;\n commands: canvasMutationCommand[];\n }\n | ({\n id: number;\n type: CanvasContext;\n } & canvasMutationCommand);\n\nexport type canvasMutationWithType = {\n type: CanvasContext;\n} & canvasMutationCommand;\n\nexport type canvasMutationCallback = (p: canvasMutationParam) => void;\n\nexport type canvasManagerMutationCallback = (\n target: HTMLCanvasElement,\n p: canvasMutationWithType,\n) => void;\n\nexport type ImageBitmapDataURLWorkerParams = {\n id: number;\n bitmap: ImageBitmap;\n width: number;\n height: number;\n dataURLOptions: DataURLOptions;\n};\n\nexport type ImageBitmapDataURLWorkerResponse =\n | {\n id: number;\n }\n | {\n id: number;\n type: string;\n base64: string;\n width: number;\n height: number;\n };\n\nexport type fontParam = {\n family: string;\n fontSource: string;\n buffer: boolean;\n descriptors?: FontFaceDescriptors;\n};\n\nexport type fontCallback = (p: fontParam) => void;\n\nexport type viewportResizeDimension = {\n width: number;\n height: number;\n};\n\nexport type viewportResizeCallback = (d: viewportResizeDimension) => void;\n\nexport type inputValue = {\n text: string;\n isChecked: boolean;\n\n // `userTriggered` indicates if this event was triggered directly by user (userTriggered: true)\n // or was triggered indirectly (userTriggered: false)\n // Example of `userTriggered` in action:\n // User clicks on radio element (userTriggered: true) which triggers the other radio element to change (userTriggered: false)\n userTriggered?: boolean;\n};\n\nexport type inputCallback = (v: inputValue & { id: number }) => void;\n\nexport enum MediaInteractions {\n Play,\n Pause,\n Seeked,\n VolumeChange,\n RateChange,\n}\n\nexport type mediaInteractionParam = {\n type: MediaInteractions;\n id: number;\n currentTime?: number;\n volume?: number;\n muted?: boolean;\n loop?: boolean;\n playbackRate?: number;\n};\n\nexport type mediaInteractionCallback = (p: mediaInteractionParam) => void;\n\nexport type DocumentDimension = {\n x: number;\n y: number;\n // scale value relative to its parent iframe\n relativeScale: number;\n // scale value relative to the root iframe\n absoluteScale: number;\n};\n\nexport type SelectionRange = {\n start: number;\n startOffset: number;\n end: number;\n endOffset: number;\n};\n\nexport type selectionParam = {\n ranges: Array;\n};\n\nexport type selectionCallback = (p: selectionParam) => void;\n\nexport type customElementParam = {\n define?: {\n name: string;\n };\n};\n\nexport type customElementCallback = (c: customElementParam) => void;\n\n/**\n * @deprecated\n */\ninterface INode extends Node {\n __sn: serializedNodeWithId;\n}\n\nexport type DeprecatedMirror = {\n map: {\n [key: number]: INode;\n };\n getId: (n: Node) => number;\n getNode: (id: number) => INode | null;\n removeNodeFromMap: (n: Node) => void;\n has: (id: number) => boolean;\n reset: () => void;\n};\n\nexport type throttleOptions = {\n leading?: boolean;\n trailing?: boolean;\n};\n\nexport type listenerHandler = () => void;\nexport type hookResetter = () => void;\n\nexport type playerMetaData = {\n startTime: number;\n endTime: number;\n totalTime: number;\n};\n\nexport type actionWithDelay = {\n doAction: () => void;\n delay: number;\n};\n\nexport type Handler = (event?: unknown) => void;\n\nexport type Emitter = {\n on(type: string, handler: Handler): void;\n emit(type: string, event?: unknown): void;\n off(type: string, handler: Handler): void;\n};\n\nexport type Arguments = T extends (...payload: infer U) => unknown\n ? U\n : unknown;\n\nexport enum ReplayerEvents {\n Start = 'start',\n Pause = 'pause',\n /**\n * @deprecated use Play instead\n */\n Resume = 'resume',\n Resize = 'resize',\n Finish = 'finish',\n FullsnapshotRebuilded = 'fullsnapshot-rebuilded',\n LoadStylesheetStart = 'load-stylesheet-start',\n LoadStylesheetEnd = 'load-stylesheet-end',\n SkipStart = 'skip-start',\n SkipEnd = 'skip-end',\n MouseInteraction = 'mouse-interaction',\n EventCast = 'event-cast',\n CustomEvent = 'custom-event',\n Flush = 'flush',\n StateChange = 'state-change',\n PlayBack = 'play-back',\n Destroy = 'destroy',\n}\n\nexport type KeepIframeSrcFn = (src: string) => boolean;\n\ndeclare global {\n interface Window {\n FontFace: typeof FontFace;\n }\n}\n\nexport type IWindow = Window & typeof globalThis;\n\nexport type Optional = Pick, K> & Omit;\n\nexport type GetTypedKeys = TakeTypeHelper<\n Obj,\n ValueType\n>[keyof TakeTypeHelper];\nexport type TakeTypeHelper = {\n [K in keyof Obj]: Obj[K] extends ValueType ? K : never;\n};\n\nexport type TakeTypedKeyValues = Pick<\n Obj,\n TakeTypeHelper[keyof TakeTypeHelper]\n>;\n\nexport enum NodeType {\n Document,\n DocumentType,\n Element,\n Text,\n CDATA,\n Comment,\n}\n\nexport type documentNode = {\n type: NodeType.Document;\n childNodes: serializedNodeWithId[];\n compatMode?: string;\n};\n\nexport type documentTypeNode = {\n type: NodeType.DocumentType;\n name: string;\n publicId: string;\n systemId: string;\n};\n\ntype cssTextKeyAttr = {\n _cssText?: string;\n};\n\nexport type attributes = cssTextKeyAttr & {\n [key: string]:\n | string\n | number // properties e.g. rr_scrollLeft or rr_mediaCurrentTime\n | true // e.g. checked on \n | null; // an indication that an attribute was removed (during a mutation)\n};\n\nexport type legacyAttributes = {\n /**\n * @deprecated old bug in rrweb was causing these to always be set\n * @see https://github.com/rrweb-io/rrweb/pull/651\n */\n selected: false;\n};\n\nexport type mediaAttributes = {\n rr_mediaState: 'played' | 'paused';\n rr_mediaCurrentTime: number;\n /**\n * for backwards compatibility this is optional but should always be set\n */\n rr_mediaPlaybackRate?: number;\n /**\n * for backwards compatibility this is optional but should always be set\n */\n rr_mediaMuted?: boolean;\n /**\n * for backwards compatibility this is optional but should always be set\n */\n rr_mediaLoop?: boolean;\n /**\n * for backwards compatibility this is optional but should always be set\n */\n rr_mediaVolume?: number;\n};\n\nexport type elementNode = {\n type: NodeType.Element;\n tagName: string;\n attributes: attributes;\n childNodes: serializedNodeWithId[];\n isSVG?: true;\n needBlock?: boolean;\n // This is a custom element or not.\n isCustom?: true;\n};\n\nexport type textNode = {\n type: NodeType.Text;\n textContent: string;\n /**\n * @deprecated styles are now always snapshotted against parent